﻿/* ============================================================
   ORFEO — Variables de marca
   ============================================================ */
:root {
    --orfeo-dark:      #0e0f14;      /* oklch(11% 0.006 260) */
    --orfeo-cream:     #faf9f7;      /* oklch(98.5% 0.006 75) */
    --orfeo-grid-sombreado: #fff9e8; /* crema cálida — filas alternas en grillas */
    --orfeo-grid-seleccion: #dce4ed; /* fila seleccionada sobre fondo blanco */
    --orfeo-grid-seleccion-sombreado: #8da3be; /* fila seleccionada sobre crema (contraste visible) */
    /* Acento único neutro (pizarra): enlaces, focos, iconos; coherente con ventanas modelo. */
    --orfeo-accent:    #5c6370;
    --orfeo-accent-h:  #4a5058;      /* hover del acento */
    --orfeo-ochre:       #c0614a;
    --orfeo-ochre-hover: #a8523d;
    --orfeo-ochre-a10:   rgba(192, 97, 74, 0.10);
    --orfeo-ochre-a12:   rgba(192, 97, 74, 0.12);
    --orfeo-ochre-border: rgba(192, 97, 74, 0.35);
    /* Cabecera UNIFICADA de todas las grillas (DevExpress + tablas HTML): ocre con texto blanco. */
    --orfeo-grid-head-bg: linear-gradient(180deg, var(--orfeo-ochre) 0%, var(--orfeo-ochre-hover) 100%);
    --orfeo-grid-head-fg: #ffffff;
    --orfeo-grid-head-border: var(--orfeo-ochre-hover);
    /* Cabecera referencia: Saldos mensuales por cuenta (Columnas) — .balance-tbl-desktop thead th */
    --orfeo-grid-head-fs: 0.74rem;
    --orfeo-grid-head-fw: 700;
    --orfeo-grid-head-pad: 4px 8px;
    --orfeo-grid-head-ls: 0.02em;
    --orfeo-grid-head-lh: 1.2;
    --orfeo-grid-data-fs: 0.8rem;
    /* Listados / extractos en popups (cabecera crema + bloques ocre). */
    /* Cabecera de informes: unificada a ocre (antes crema). Texto en blanco en cada popup. */
    --orfeo-report-thead-bg: linear-gradient(180deg, var(--orfeo-ochre) 0%, var(--orfeo-ochre-hover) 100%);
    --orfeo-report-group-bg: linear-gradient(180deg, var(--orfeo-ochre) 0%, var(--orfeo-ochre-hover) 100%);
    --orfeo-report-subtotal-bg: #f5f1ea;
    --orfeo-report-row-alt: #faf8f6;
    /* Modal de mensajes al usuario (Form_MsgTexto): distinto del gris de formularios. */
    --orfeo-msg-header-from: #c0614a;
    --orfeo-msg-header-to:   #a84f3a;
    --orfeo-msg-warn-from:   #facc15;
    --orfeo-msg-warn-to:     #eab308;
    --orfeo-msg-warn-fg:     #713f12;
    --orfeo-msg-warn-btn:    #ca8a04;
    --orfeo-msg-warn-btn-h:  #a16207;
    --orfeo-success:     #4a7c59;
    --orfeo-success-bg:  #e8f0ea;
    /* Cromo ventanas fiscales / RM / AEAT (cabecera, pestaña, iconos de cinta). */
    --orfeo-form-shell-header-from: #5c6370;
    --orfeo-form-shell-header-to:   #454b55;
    --orfeo-form-shell-tab-strip:   #4e5966;
    --orfeo-form-shell-tab-pill-fg: #5a6573;
    --orfeo-form-icon-accent:       #5a6573;
    --orfeo-form-focus-ring:        #4e5966;
    --orfeo-form-primary-btn:       #4e5966;
    --orfeo-form-primary-btn-hover: #5c6370;
    --orfeo-form-primary-btn-border:#3f4652;
    /* Superficies de formularios / mini-cintas (gris pizarra). */
    --orfeo-form-surface:          #f3f4f6;
    --orfeo-form-surface-hover:    #eef0f3;
    --orfeo-form-surface-selected: #e2e6eb;
    --orfeo-form-border:           #e5e7eb;
    --orfeo-form-border-strong:    #c5cad1;
    /* Borde cálido diario / IVA (inputs, celdas editables). */
    --orfeo-border-muted:          #c8cdd4;
    --orfeo-accent-a06: rgba(92, 99, 112, 0.06);
    --orfeo-accent-a08: rgba(92, 99, 112, 0.08);
    --orfeo-accent-a10: rgba(92, 99, 112, 0.10);
    --orfeo-accent-a13: rgba(92, 99, 112, 0.13);
    --orfeo-accent-a15: rgba(92, 99, 112, 0.15);
    --orfeo-accent-a18: rgba(92, 99, 112, 0.18);
    --orfeo-mid:       #6b6d78;      /* oklch(52% 0.005 260) */
    --orfeo-light:     #cfd0d6;      /* oklch(84% 0.005 260) */
    --orfeo-sidebar:   #1a1c24;
    --orfeo-topbar:    #f5f4f1;
    --font-serif:      'Cormorant', Georgia, serif;
    --font-sans:       'Jost', 'Segoe UI', Helvetica, sans-serif;

    /* Las grillas DevExpress usan fuente del sistema (Segoe UI) para densidad de datos.
       Jost tiene x-height mayor y hace las cabeceras visualmente más grandes. */
    --dxbl-grid-font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif;
    --dxbl-grid-header-font-weight: 700;
}

/* Grillas DevExpress: fuente sistema + variable de cabecera (tema DX trae 600) */
.dxbl-grid {
    --dxbl-grid-header-font-weight: 700 !important;
}
.dxbl-grid,
.dxbl-grid * {
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
}
/* Anula padding del tema DX (blazing-berry ~23512) solo en la fila de cabecera */
.dxbl-grid .dxbl-grid-table > thead > tr.dxbl-grid-header-row > th:not(.dxbl-grid-header-indent-cell):not(.dxbl-grid-empty-header),
.dxbl-grid .dxbl-grid-header-row th {
    font-size: var(--orfeo-grid-head-fs) !important;
    font-weight: var(--orfeo-grid-head-fw) !important;
    text-transform: uppercase !important;
    letter-spacing: var(--orfeo-grid-head-ls) !important;
    padding: var(--orfeo-grid-head-pad) !important;
    line-height: var(--orfeo-grid-head-lh) !important;
    height: auto !important;
    min-height: 0 !important;
    --dxbl-grid-text-cell-padding-x: 0 !important;
    --dxbl-grid-text-cell-padding-y: 0 !important;
    --dxbl-grid-line-height: var(--orfeo-grid-head-lh) !important;
    --dxbl-grid-header-spacing: 0.2rem !important;
}
.dxbl-grid .dxbl-grid-header-row th .dxbl-grid-header-content {
    padding: 0 !important;
    margin: 0 !important;
    min-height: 0 !important;
    height: auto !important;
    font-size: inherit !important;
    font-weight: inherit !important;
    line-height: inherit !important;
    letter-spacing: inherit !important;
    text-transform: inherit !important;
}
.dxbl-grid .dxbl-grid-header-row th .dxbl-grid-header-content *:not(i):not(svg):not(path) {
    font-size: inherit !important;
    font-weight: inherit !important;
    line-height: inherit !important;
    letter-spacing: inherit !important;
    text-transform: inherit !important;
    padding: 0 !important;
    margin: 0 !important;
}
.dxbl-grid .dxbl-grid-header-row th .dxbl-grid-sort-asc svg,
.dxbl-grid .dxbl-grid-header-row th .dxbl-grid-sort-desc svg {
    width: 0.7rem !important;
    height: 0.7rem !important;
}

/* Validación inline de formularios: marca el campo inválido y muestra el mensaje junto a él. */
.orfeo-field-err,
input.orfeo-field-err,
select.orfeo-field-err,
textarea.orfeo-field-err {
    border-color: #c0392b !important;
    background: #fff5f4 !important;
    box-shadow: 0 0 0 2px rgba(192, 57, 43, .12) !important;
}
.orfeo-field-err-msg {
    color: #c0392b;
    font-size: 11.5px;
    margin-top: 2px;
    display: flex;
    align-items: center;
    gap: 4px;
}

/* Cabeceras de tablas HTML propias de Orfeo: ver bloque «NORMALIZACIÓN CABECERAS GRILLAS HTML» al final de app.css */
.efp-table th,
.cca-tbl th,
.hm-w-tbl th,
.hm-cal th,
.lo-tbl th,
.lo-tbl--cli-pro th {
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    font-weight: 700 !important;
}

/* UI secundaria: paneles informativos, hovers y cabeceras de sub-formularios pasaron de azules tipo Tailwind (#dbeafe, #2563eb, …) a gris pizarra; para nuevo código use var(--orfeo-form-*) / --orfeo-accent. */
/* Ocre (#f5f1ea) solo en login, selección de año y home (.hm-page). Resto: scripts/repair-ochre-to-gray-ui.ps1 si vuelve una copia antigua. */

/* ============================================================
   BASE
   ============================================================ */
html, body {
    font-family: var(--font-sans);
    background: var(--orfeo-cream);
    color: var(--orfeo-dark);
    height: 100%;
    margin: 0;
}

/* Regla base: ningún <select> tendrá altura forzada que corte el texto o la flecha nativa */
select {
    min-height: 26px;
    height: auto;
    box-sizing: border-box;
    appearance: auto;
}
/* Inputs y selects en filas flex no se comprimen por defecto */
.liq-editor-row input,
.liq-editor-row select,
.emp-row input:not([type="checkbox"]),
.emp-row select {
    flex-shrink: 0;
}

/* Fuentes locales — sin dependencia de Google Fonts */
@font-face {
  font-family: 'Cormorant';
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url('/fonts/Cormorant-Italic-300.woff2') format('woff2');
}
@font-face {
  font-family: 'Cormorant';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/Cormorant-Italic-400.woff2') format('woff2');
}
/* Jost es fuente variable — un único archivo cubre todos los pesos (100–900) */
@font-face {
  font-family: 'Jost';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fonts/Jost-400.woff2') format('woff2');
}

/* ============================================================
   LOGIN
   ============================================================ */
.login-page {
    min-height: 100vh;
    background: var(--orfeo-cream);
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Login / selección de ejercicio: fondo cálido ocre (marca Orfeo) */
.login-page--ochre {
    background: linear-gradient(165deg, #faf0ed 0%, #f3e4df 42%, var(--orfeo-cream) 100%);
}

.login-card {
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 4px 32px rgba(0,0,0,0.10);
    padding: 2.5rem 2.8rem 2rem;
    width: 360px;
    text-align: center;
}

.login-card .logo-wrap {
    margin-bottom: 1.6rem;
}

.login-card .logo-wrap img {
    width: 200px;
}

.login-card .form-label {
    text-align: left;
    display: block;
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--orfeo-mid);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.25rem;
}

.login-card .form-control {
    border-radius: 4px;
    border: 1px solid #d4d3d0;
    padding: 0.55rem 0.75rem;
    font-size: 0.95rem;
}

.login-card .form-control:focus {
    border-color: var(--orfeo-ochre);
    box-shadow: 0 0 0 3px var(--orfeo-accent-a18);
}

/* Campo de contraseña: puntos más grandes y espaciados para verlos bien al teclear */
.login-card #login-pass {
    font-size: 1.45rem;
    letter-spacing: 0.22em;
    line-height: 1.2;
    padding-top: 0.40rem;
    padding-bottom: 0.40rem;
}
/* El placeholder se mantiene a tamaño normal (no hereda el tamaño grande) */
.login-card #login-pass::placeholder {
    font-size: 0.95rem;
    letter-spacing: normal;
}

.login-card .btn-primary {
    background: var(--orfeo-ochre);
    border-color: var(--orfeo-ochre);
    color: #fff;
    border-radius: 4px;
    font-weight: 500;
    letter-spacing: 0.04em;
    padding: 0.6rem;
    font-size: 0.95rem;
}

.login-card .btn-primary:hover:not(:disabled) {
    background: var(--orfeo-ochre-hover);
    border-color: var(--orfeo-ochre-hover);
    color: #fff;
}

.login-card .btn-primary:disabled {
    opacity: 0.65;
    cursor: not-allowed;
}

.login-card .list-group-item.list-group-item-action:hover {
    background: rgba(192, 97, 74, 0.09);
    border-color: rgba(192, 97, 74, 0.35);
}

.login-card .list-group-item.list-group-item-action:active {
    background: rgba(192, 97, 74, 0.16);
}

.seleccion-contexto-card {
    text-align: center;
}

.seleccion-contexto-card .seleccion-contexto-titulo {
    font-size: 1.35rem;
    color: var(--orfeo-dark);
    letter-spacing: -0.02em;
}

.seleccion-contexto-card .list-group-item.seleccion-empresa-activa {
    border-color: var(--orfeo-ochre);
    background: rgba(192, 97, 74, 0.08);
    font-weight: 500;
}

.empresa-hint {
    font-size: 0.8rem;
    color: var(--orfeo-ochre);
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.2rem 0;
}

.empresa-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--orfeo-ochre);
    flex-shrink: 0;
}

.login-card .version-text {
    font-size: 0.75rem;
    color: var(--orfeo-light);
    margin-top: 1.4rem;
}

/* ============================================================
   RIBBON — Layout de dos filas (fila pestañas + fila toolbar)
   ============================================================ */
.page-ribbon {
    display: flex;
    flex-direction: column;
    height: 100vh;
    height: 100dvh;
    min-height: 0;
    overflow: hidden;
}
.page-ribbon > .orfeo-form-mensajes {
    flex-shrink: 0;
}

/* ── Fila 1: logo + tabs + usuario ── */
.rb-header {
    background: #ffffff;
    display: flex;
    align-items: flex-end;
    flex-shrink: 0;
    height: 46px;
    padding: 0 0.8rem;
    gap: 0;
    border-bottom: 1px solid #e3e0db;
    position: relative;
    min-width: 0;
    overflow-x: auto;
    overflow-y: hidden;
}

/* Logo en esquina inferior izquierda */
.rb-logo-footer {
    position: fixed;
    bottom: 18px;
    left: 22px;
    z-index: 50;
    opacity: 0.92;
    transition: opacity 0.2s ease, transform 0.2s ease;
    text-decoration: none;
    pointer-events: auto;
}
.rb-logo-footer:hover {
    opacity: 1;
    transform: translateY(-1px);
}
.rb-logo-footer img {
    height: 120px;
    display: block;
}

/* Ocultar el logo cuando hay un editor o un listado de pantalla completa,
   para evitar que su posición fixed intercepte clicks (navegando a /) y se
   solape con el grid o el footer */
.page-ribbon:has(.editor-stack) .rb-logo-footer,
.page-ribbon:has(.diario-page) .rb-logo-footer { display: none; }

.rb-tabs {
    display: flex;
    align-items: stretch;
    height: 100%;
    gap: 2px;
    flex: 1 1 auto;
    min-width: 0;
    overflow-x: auto;
    scrollbar-width: thin;
}

.rb-tab {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 0.9rem;
    height: calc(100% - 4px);
    margin-top: 4px;
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--orfeo-mid);
    background: transparent;
    border: 1px solid transparent;
    border-bottom: none;
    border-radius: 6px 6px 0 0;
    cursor: pointer;
    transition: background 0.18s ease, color 0.18s ease;
    white-space: nowrap;
    font-family: var(--font-sans);
    letter-spacing: 0.025em;
    position: relative;
    width: 136px;
    text-align: center;
}

.rb-tab:hover {
    background: #f5f4f1;
    color: var(--orfeo-dark);
}

/* Tab activo: fondo de la toolbar (cream) → se "fusiona" con la fila inferior */
.rb-tab-active,
.rb-tab-active:hover {
    background: var(--orfeo-topbar);
    color: var(--orfeo-dark);
    border-color: #e3e0db;
    border-bottom-color: var(--orfeo-topbar);
    font-weight: 600;
}

/* Acento ocre en la parte superior del tab activo del ribbon */
.rb-tab-active::before {
    content: "";
    position: absolute;
    top: 0; left: 8px; right: 8px;
    height: 2px;
    background: var(--orfeo-ochre);
    border-radius: 2px;
}

.rb-user {
    margin-left: auto;
    align-self: center;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 0 1 auto;
    min-width: 0;
    max-width: 52%;
}

/* ── Chip de usuario (cabecera, parte derecha) ───────────────────── */
.rb-user-chip {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
    padding: 3px 6px;
    border-radius: 8px;
}
.rb-user-chip--btn { cursor: pointer; transition: background .15s; }
.rb-user-chip--btn:hover { background: #f0eee9; }
.rb-user-chip--btn:focus-visible { outline: 2px solid var(--orfeo-accent); outline-offset: 1px; }

.rb-avatar {
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: #fff;
    background: linear-gradient(135deg, var(--orfeo-ochre, #b45309) 0%, #8a3d12 100%);
    box-shadow: 0 1px 2px rgba(0,0,0,.18);
    text-transform: uppercase;
}

.rb-avatar-img { width: 100%; height: 100%; object-fit: cover; }

.rb-user-lines {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-width: 0;
    line-height: 1.18;
}

.rb-user-line1 {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
}

.rb-user-name {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--orfeo-dark);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    max-width: 220px;
}

.rb-user-line2 {
    display: flex;
    align-items: center;
    gap: 0.28rem;
    font-size: 0.7rem;
    color: var(--orfeo-mid);
    min-width: 0;
    white-space: nowrap;
}

.rb-empresa-icon {
    font-size: 0.82rem;
    color: var(--orfeo-ochre, #b45309);
    opacity: 0.9;
    flex-shrink: 0;
}

.rb-empresa-nombre {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    max-width: 200px;
}

.rb-anyo { font-weight: 600; color: var(--orfeo-dark); }
.rb-dot { color: #c8c5be; }

.rb-supervisor-badge {
    flex-shrink: 0;
    font-size: 0.6rem;
    background: var(--orfeo-form-surface, #f1efe9);
    color: var(--orfeo-ochre, #b45309);
    border: 1px solid rgba(180, 83, 9, 0.35);
    padding: 1px 7px;
    border-radius: 999px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    line-height: 1.5;
}

/* Separador vertical entre el chip y los controles */
.rb-user-divider {
    width: 1px;
    height: 26px;
    background: #e3e0db;
    flex-shrink: 0;
    margin: 0 0.15rem;
}

/* Botón empresa/ejercicio en cabecera */
a.rb-btn-contexto {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    text-decoration: none;
    font-size: 0.78rem;
    font-weight: 600;
    padding: 5px 12px;
    border: 1px solid #d4cfc6;
    border-radius: 7px;
    color: var(--orfeo-dark);
    background: linear-gradient(180deg, #fff 0%, #f8f6f3 100%);
    white-space: nowrap;
    flex-shrink: 0;
    transition: background .15s, border-color .15s, color .15s, box-shadow .15s;
}
a.rb-btn-contexto i {
    font-size: 1.02rem;
    line-height: 1;
    color: var(--orfeo-ochre, #b45309);
    opacity: 0.92;
}
a.rb-btn-contexto:hover {
    background: #fff;
    border-color: var(--orfeo-ochre, #b45309);
    color: var(--orfeo-dark);
    box-shadow: 0 1px 4px rgba(0,0,0,.08);
}
a.rb-btn-contexto:hover i {
    opacity: 1;
}

/* Iconos Phosphor para el ribbon (sustituyen .ico)
   Tamaños del Menu.xml de Orfeo: TamaIco=1 → 32x32 (grande), TamaIco=0 → 16x16 (pequeño)
   Phosphor son fuentes — el tamaño visual lo controla font-size, no width/height. */
i.rb-icon,
.rb-icon.rb-icon-ph,
i.ph-duotone.rb-icon {
    font-size: 32px !important;
    line-height: 1;
    width: 32px;
    height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
i.rb-icon-sm,
.rb-icon-sm.rb-icon-sm-ph,
i.ph-duotone.rb-icon-sm {
    font-size: 16px !important;
    width: 16px;
    height: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-right: 8px;
}

/* ── Fila 2: toolbar de botones ── */
.rb-toolbar {
    --rb-btn-width: 96px;
    --rb-btn-height: 66px;
    background: var(--orfeo-topbar);
    border-bottom: 1px solid #d8d5d0;
    display: flex;
    align-items: stretch;
    flex-shrink: 0;
    min-height: 96px;
    padding: 6px 0.5rem 0;
    overflow-x: auto;
    overflow-y: visible;
    gap: 0;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.6);
}

.rb-group {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 0 6px 0;
    position: relative;
}

.rb-group-buttons {
    display: flex;
    align-items: flex-start;
    gap: 3px;
    flex: 1;
}

.rb-group-label {
    font-size: 0.60rem;
    color: var(--orfeo-mid);
    text-align: center;
    width: 100%;
    padding: 3px 0 4px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    border-top: 1px solid #dddad6;
    margin-top: 4px;
}

.rb-group-sep {
    width: 1px;
    background: #d0cdc8;
    margin: 4px 2px 18px;
    align-self: stretch;
}

/* Botón tile del ribbon — estilo inicio-tile */
.rb-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 5px 6px 4px;
    width: var(--rb-btn-width);
    min-width: var(--rb-btn-width);
    max-width: var(--rb-btn-width);
    height: var(--rb-btn-height);
    min-height: var(--rb-btn-height);
    max-height: var(--rb-btn-height);
    border-radius: 5px;
    text-decoration: none;
    color: var(--orfeo-dark);
    cursor: pointer;
    transition: box-shadow 0.15s, border-color 0.15s, transform 0.12s, background 0.12s;
    border: 1px solid #e2e0db;
    background: #fff;
    font-family: var(--font-sans);
    gap: 3px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    box-sizing: border-box;
}

.rb-btn:hover {
    box-shadow: 0 4px 14px rgba(0,0,0,0.11);
    border-color: var(--orfeo-ochre);
    transform: translateY(-1px);
    color: var(--orfeo-ochre);
    background: var(--orfeo-form-surface-hover);
}

.rb-btn-active {
    background: var(--orfeo-accent-a08);
    border-color: var(--orfeo-accent);
    box-shadow: 0 0 0 2px var(--orfeo-accent-a18);
}

.rb-icon {
    width: 32px;
    height: 32px;
    object-fit: contain;
    transition: color 0.15s ease, filter 0.15s ease, transform 0.15s ease;
}

.rb-icon-sm {
    width: 16px;
    height: 16px;
    object-fit: contain;
    flex-shrink: 0;
    transition: color 0.15s ease, filter 0.15s ease, transform 0.15s ease;
}

/* Botón pequeño del ribbon (TamaIco=0) — icono y texto en línea horizontal */
.rb-btn-sm {
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    padding: 4px 8px !important;
    width: var(--rb-btn-width) !important;
    min-width: var(--rb-btn-width) !important;
    max-width: var(--rb-btn-width) !important;
    height: var(--rb-btn-height) !important;
    min-height: var(--rb-btn-height) !important;
    max-height: var(--rb-btn-height) !important;
    gap: 6px;
}
.rb-btn-sm .rb-btn-label { text-align: left !important; font-size: 0.78rem !important; }
.rb-btn-sm .rb-icon, .rb-btn-sm .rb-icon-ph { width: 16px !important; height: 16px !important; font-size: 16px !important; }
.rb-btn-lg { /* el comportamiento por defecto ya es grande */ }

.rb-btn:hover i.rb-icon,
.rb-btn:hover .rb-icon.rb-icon-ph,
.rb-btn:hover i.ph-duotone.rb-icon,
.rb-btn:hover i.rb-icon-sm,
.rb-btn:hover .rb-icon-sm.rb-icon-sm-ph,
.rb-btn:hover i.ph-duotone.rb-icon-sm {
    color: var(--orfeo-ochre) !important;
    transform: scale(1.04);
}

.rb-btn:hover img.rb-icon,
.rb-btn:hover img.rb-icon-sm,
.rb-btn:hover svg[aria-label^="Modelo "] {
    filter: sepia(1) saturate(2.3) hue-rotate(-12deg) brightness(0.94);
    transform: scale(1.04);
}

/* Split button: botón grande + flecha pequeña a la derecha */
.rb-split-wrap { display: inline-flex; align-items: stretch; }
.rb-btn-split-main { border-right: 0 !important; }
.rb-btn-split-arrow {
    border: 1px solid transparent;
    border-left: 1px solid #d8d5d0;
    background: transparent;
    cursor: pointer;
    padding: 0 6px;
    color: var(--orfeo-mid);
    font-size: 0.7rem;
    align-self: stretch;
}
.rb-btn-split-arrow:hover { background: rgba(0,0,0,.05); }

.rb-btn-label {
    font-size: 0.63rem;
    font-weight: 600;
    text-align: center;
    line-height: 1.2;
    color: var(--orfeo-dark);
    display: block;
    width: 100%;
    word-break: break-word;
    hyphens: none;
    overflow-wrap: anywhere;
    transition: color 0.15s ease;
}

.rb-btn:hover .rb-btn-label,
.rb-btn:hover .rb-arrow {
    color: var(--orfeo-ochre);
}

.rb-arrow { font-size: 0.58rem; color: var(--orfeo-mid); }

.rb-separator {
    width: 1px;
    background: #d5d2cd;
    margin: 2px 4px;
    align-self: stretch;
}

/* Botón con dropdown */
.rb-btn-wrap {
    position: relative;
    width: var(--rb-btn-width);
    min-width: var(--rb-btn-width);
    max-width: var(--rb-btn-width);
}

.rb-btn-popup { cursor: pointer; }

.rb-dropdown-fixed {
    position: fixed;
    z-index: 9999;
    background: #fff;
    border: 1px solid #d0cdc8;
    border-radius: 5px;
    box-shadow: 0 6px 20px rgba(0,0,0,0.14);
    min-width: 230px;
    padding: 4px 0;
}

/* Reset común para <a> y <button> dentro del dropdown */
.rb-dropdown-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 7px 14px;
    font-size: 0.82rem;
    color: var(--orfeo-dark);
    text-decoration: none;
    white-space: nowrap;
    /* reset para <button> */
    background: transparent;
    border: 0;
    width: 100%;
    text-align: left;
    cursor: pointer;
    font-family: inherit;
    line-height: 1.4;
}
.rb-dropdown-item:hover,
.rb-dropdown-item:focus {
    background: var(--orfeo-accent-a10);
    color: var(--orfeo-dark);
    outline: none;
}
.rb-dropdown-item:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
.rb-dropdown-item:disabled:hover { background: transparent; }

.rb-dropdown-sep {
    height: 1px;
    background: #e8e6e2;
    margin: 4px 0;
}

.ribbon-content {
    flex: 1;
    overflow-y: auto;
    padding: 1.5rem 2rem;
    background: var(--orfeo-cream);
}

/* ============================================================
   INICIO — Mosaicos del dashboard
   ============================================================ */
.inicio-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 18px;
    padding: 1.5rem 1.2rem;
    max-width: 1400px;
    margin: 0 auto;
}

@media (max-width: 1280px) {
    .inicio-grid { grid-template-columns: repeat(5, 1fr); }
}
@media (max-width: 1024px) {
    .inicio-grid { grid-template-columns: repeat(4, 1fr); }
}
@media (max-width: 768px) {
    .inicio-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 520px) {
    .inicio-grid { grid-template-columns: repeat(2, 1fr); }
}

.inicio-tile {
    background: #fff;
    border: 1px solid var(--orfeo-form-border);
    border-radius: 12px;
    padding: 1.5rem 1rem 1.2rem;
    text-align: center;
    text-decoration: none;
    color: var(--orfeo-dark);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 14px;
    min-height: 185px;
    transition: box-shadow 0.2s ease, transform 0.15s ease, border-color 0.2s ease;
    cursor: pointer;
    position: relative;
    overflow: hidden;
    /* reset para <button class="inicio-tile"> */
    font-family: inherit;
    font-size: inherit;
    width: 100%;
}

/* Acento en la parte superior al hover */
.inicio-tile::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    background: var(--orfeo-accent);
    transform: scaleX(0);
    transform-origin: center;
    transition: transform 0.25s ease;
}

.inicio-tile:hover {
    box-shadow: 0 8px 24px rgba(14,15,20,0.10);
    transform: translateY(-3px);
    border-color: var(--orfeo-form-border-strong);
    color: var(--orfeo-dark);
}
.inicio-tile:hover::before { transform: scaleX(1); }

.inicio-tile:hover .inicio-icon i {
    color: var(--orfeo-accent) !important;
}

.inicio-title {
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--orfeo-mid);
    line-height: 1.2;
    order: 2;
}

.inicio-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 72px;
    height: 72px;
    background: transparent;
    order: 1;
}

.inicio-icon i {
    font-size: 64px;
    color: #475569;
    line-height: 1;
    transition: color 0.2s ease, transform 0.2s ease;
}

.inicio-tile:hover .inicio-icon i {
    transform: scale(1.06);
}

.inicio-icon img {
    width: 60px;
    height: 60px;
    object-fit: contain;
}

.inicio-desc {
    font-size: 0.78rem;
    color: var(--orfeo-mid);
    line-height: 1.35;
    order: 3;
    margin-top: 2px;
}

/* ============================================================
   BOTONES GENERALES
   ============================================================ */
.btn-primary {
    background: var(--orfeo-accent);
    border-color: var(--orfeo-accent);
}
.btn-primary:hover { background: var(--orfeo-accent-h); border-color: var(--orfeo-accent-h); }

.btn-outline-secondary { border-color: #ccc; color: var(--orfeo-mid); }
.btn-outline-secondary:hover { background: #f0eeeb; border-color: #bbb; color: var(--orfeo-dark); }

/* ============================================================
   MINI RIBBON — barra de herramientas de formularios
   Misma estructura que el ribbon principal: grupos con tiles
   ============================================================ */
.asiento-ribbon {
    background: #f5f4f2;
    border-bottom: 1px solid #d8d5d0;
    display: flex;
    align-items: stretch;
    flex-shrink: 0;
    min-height: 96px;
    padding: 6px 0.5rem 0;
    overflow-x: auto;
    overflow-y: visible;
    gap: 0;
    margin-bottom: 0;
}
.asiento-ribbon-group {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 0 6px;
}
.ar-buttons {
    display: flex;
    align-items: flex-start;
    gap: 3px;
    flex: 1;
}
.ar-group-label {
    font-size: 0.60rem;
    color: var(--orfeo-mid);
    text-align: center;
    width: 100%;
    padding: 3px 0 4px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    border-top: 1px solid #dddad6;
    margin-top: 4px;
}
.ar-group-sep {
    width: 1px;
    background: #d0cdc8;
    margin: 4px 2px 18px;
    align-self: stretch;
}
.ar-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    background: #fff;
    border: 1px solid #e2e0db;
    border-radius: 5px;
    padding: 5px 7px 4px;
    cursor: pointer;
    font-size: 0.65rem;
    font-weight: 600;
    font-family: var(--font-sans);
    color: var(--orfeo-dark);
    min-width: 46px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    transition: box-shadow 0.15s, border-color 0.15s, transform 0.12s;
}
.ar-btn:hover:not(:disabled) {
    box-shadow: 0 4px 12px rgba(0,0,0,0.10);
    border-color: var(--orfeo-accent);
    transform: translateY(-1px);
}
.ar-btn:disabled { opacity: 0.4; cursor: not-allowed; box-shadow: none; transform: none; }
.ar-btn-primary { border-color: #3b8a3b; background: rgba(59,138,59,0.08); }
.ar-btn-primary:hover:not(:disabled) { background: rgba(59,138,59,0.16); border-color: #2f7a2f; }
.ar-btn-danger:hover:not(:disabled) { border-color: rgba(229,0,0,0.5); box-shadow: 0 4px 12px rgba(229,0,0,0.10); }
.ar-icon { width: 40px; height: 40px; object-fit: contain; }
.ar-icon.ar-icon-ph {
    font-size: 32px;
    color: #475569;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.ar-sep { width: 1px; background: #d0cdc8; margin: 2px 4px; align-self: stretch; }

/* ============================================================
   CABECERA DEL ASIENTO (barra de campos)
   ============================================================ */
.asiento-header-bar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0;
    background: #fff;
    border: 1px solid #e2e0db;
    border-radius: 4px;
    padding: 4px 10px;
    margin-bottom: 0.5rem;
    font-size: 0.84rem;
}
.ah-field { display: flex; align-items: center; gap: 6px; padding: 0 8px; }
.ah-label { font-size: 0.72rem; font-weight: 600; color: var(--orfeo-mid); white-space: nowrap; }
.ah-value { font-weight: 500; }
.ah-sep { color: #ccc; padding: 0 2px; }
.ah-select {
    border: 1px solid var(--orfeo-form-border-strong);
    border-radius: 4px;
    padding: 3px 6px;
    font-size: 0.84rem;
    font-family: var(--font-sans);
    background: #fff;
    min-height: 26px;
}
.ah-date, .ah-num {
    border: 1px solid #ddd;
    border-radius: 3px;
    padding: 2px 5px;
    font-size: 0.84rem;
    font-family: var(--font-sans);
    background: #faf9f7;
}
.ah-date { width: 130px; }
.ah-date-error { border-color: #e53e3e !important; background: #fff5f5 !important; }
.ah-fecha-error {
    font-size: 0.70rem; font-weight: 600; color: #e53e3e;
    white-space: nowrap; margin-left: 4px;
}
.ah-num  { width: 70px; text-align: right; background: #f0eeeb; }
.ah-obs  { border: 1px solid #ddd; border-radius: 3px; padding: 2px 5px;
           font-size: 0.84rem; font-family: var(--font-sans); background: #faf9f7;
           min-width: 240px; }
.ah-field-obs { flex: 1; }

/* ============================================================
   GRID DE APUNTES
   ============================================================ */
.apuntes-grid-wrap { flex: 1; overflow: hidden; margin-bottom: 0; }

/* Densidad de fila: elimina el padding interno de DxGrid */
.apuntes-dxgrid { font-size: 0.83rem; width: 100%; height: 100%; }
.apuntes-dxgrid .dxbl-grid-table { width: 100% !important; }
.apuntes-dxgrid .dxbl-grid { width: 100% !important; height: 100% !important; }
.apuntes-dxgrid .dxbl-grid-header-row { position: sticky; top: 0; z-index: 2; background: #fff; }
.apuntes-dxgrid .dxbl-grid-data-row td { padding: 0 !important; }
.apuntes-dxgrid .dxbl-grid-header-row th { padding: var(--orfeo-grid-head-pad) !important; font-size: var(--orfeo-grid-head-fs) !important; font-weight: var(--orfeo-grid-head-fw) !important; color: var(--orfeo-mid) !important; background: var(--orfeo-form-surface) !important; border-bottom: 1px solid var(--orfeo-form-border) !important; line-height: 1.2 !important; text-transform: uppercase !important; letter-spacing: var(--orfeo-grid-head-ls) !important; }

/* ── Input genérico de celda ─────────────────────────── */
/* Sin borde ni fondo: parece una hoja de cálculo */
.ap-cell {
    width: 100%;
    box-sizing: border-box;
    background: transparent;
    border: none;
    border-radius: 0;
    padding: 4px 6px;
    font-size: 0.83rem;
    font-family: var(--font-sans);
    color: var(--orfeo-dark);
    outline: none;
    /* Elimina el aspecto de control de número nativo en algunos browsers */
    -moz-appearance: textfield;
}
.ap-cell::-webkit-outer-spin-button,
.ap-cell::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

.ap-cell:focus {
    background: rgba(80, 88, 100, 0.07);
    box-shadow: inset 0 -2px 0 var(--orfeo-accent);
}

.ap-imagen-cell {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 28px;
    cursor: default;
}

.ap-cell.ap-cell-error { color: #e50000; }
.ap-cell-importe { text-align: right; }

/* Importe opuesto (Debe vs Haber) cuando el otro tiene valor: gris claro,
   pero clickeable — al hacer foco se limpia el otro lado. */
.ap-cell.ap-cell-disabled {
    background: #f5f5f3;
    color: #b0b0b0;
}
.ap-cell.ap-cell-disabled:focus {
    background: #fff;
    color: var(--orfeo-dark);
}

/* Importe fijo de plantilla: visible pero no editable (Orfeo). */
.ap-cell.ap-cell-readonly {
    background: #f3f4f6;
    color: var(--orfeo-dark);
    cursor: default;
}

/* ── Columna Cuenta ──────────────────────────────────── */
.ap-cuenta-wrap {
    display: flex;
    align-items: stretch;
    width: 100%;
    position: relative;
}

/* ── Autocompletado de cuentas ───────────────────────── */
.ac-dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 500;
    background: #fff;
    border: 1px solid #bbb;
    border-radius: 4px;
    box-shadow: 0 4px 14px rgba(0,0,0,0.18);
    min-width: 300px;
    max-height: 220px;
    overflow-y: auto;
}
.ac-item {
    display: flex;
    gap: 10px;
    padding: 5px 8px;
    cursor: pointer;
    font-size: 0.82rem;
    border-bottom: 1px solid #f0f0f0;
}
.ac-item:last-child { border-bottom: none; }
.ac-item:hover, .ac-item-sel {
    background: #f1f5f9;
}
.ac-codigo {
    font-weight: 600;
    font-family: monospace;
    min-width: 90px;
    color: #333;
}
.ac-nombre {
    color: #555;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
}
.ap-cuenta-wrap .ap-cell {
    font-family: monospace;
    font-weight: 500;
    letter-spacing: 0.02em;
    flex: 1;
    min-width: 0;
}

/* ── Botón F1 ────────────────────────────────────────── */
.ap-f1-btn {
    background: #ece9e4;
    border: none;
    border-left: 1px solid #ddd;
    padding: 0 5px;
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--orfeo-mid);
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
    line-height: 1;
}
.ap-f1-btn:hover { background: var(--orfeo-accent-a15); color: var(--orfeo-accent); }

/* ── Descripción de cuenta (columna readonly) ────────── */
.ap-desc-txt {
    display: block;
    padding: 4px 6px;
    font-size: 0.8rem;
    color: var(--orfeo-mid);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ============================================================
   FOOTER DE TOTALES
   ============================================================ */
.asiento-footer {
    display: flex;
    align-items: center;
    gap: 0;
    background: #fbfaf7;
    color: var(--orfeo-dark);
    padding: 0 12px;
    height: 44px;
    flex-shrink: 0;
    border-top: 1px solid #ebe7e0;
    font-size: 0.8rem;
}
.af-label {
    font-size: 0.68rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--orfeo-mid);
    padding: 0 8px 0 0;
    white-space: nowrap;
}
.af-item {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 0 10px;
    height: 100%;
    border-right: 1px solid #ebe7e0;
}
.af-stripe {
    width: 3px;
    height: 24px;
    border-radius: 2px;
    flex-shrink: 0;
}
.af-stripe-green  { background: #26b050; }
.af-stripe-blue   { background: #4a8fe0; }
.af-stripe-red    { background: #e54040; }
.af-stripe-purple { background: #9b59b6; }
.af-item-label { font-size: 0.68rem; color: var(--orfeo-mid); }
.af-item-val   { font-size: 0.88rem; font-weight: 600; color: var(--orfeo-dark); min-width: 72px; text-align: right; }
.af-cuadrado .af-item-val   { color: #1f8b3a; }
.af-descuadrado .af-item-val { color: #c83232; }
.af-sep-v { width: 1px; background: #ebe7e0; margin: 8px 6px; height: 28px; }
.af-status { margin-left: auto; }

/* ============================================================
   PANELES DEL EDITOR (Edición + Totales) — estilo card
   ============================================================ */
.editor-panel {
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 6px;
    box-shadow: 0 1px 2px rgba(14,15,20,0.04);
    margin-bottom: 0.6rem;
    overflow: hidden;
}
.editor-panel-header {
    display: flex; align-items: center; gap: 6px;
    padding: 5px 12px;
    background: var(--orfeo-form-surface);
    border-bottom: 1px solid #ebe7e0;
    font-size: 0.74rem;
    font-weight: 600;
    color: var(--orfeo-mid);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.editor-panel-header i { font-size: 14px; color: var(--orfeo-accent); }

/* Cabecera y grid sin bordes/margen propios cuando van dentro del panel */
.editor-panel-edicion .asiento-header-bar {
    border: none;
    border-radius: 0;
    margin-bottom: 0;
    border-bottom: 1px solid #ebe7e0;
    background: #fff;
}
.editor-panel-edicion .apuntes-grid-wrap { margin-bottom: 0; }

/* El footer dentro del panel-totales ya lleva su propio padding;
   eliminamos el border-top porque el panel ya separa visualmente */
.editor-panel-totales .asiento-footer { border-top: none; }

/* Pegar el panel de totales al footer de la pantalla, no a la grilla */
.editor-panel-totales {
    position: sticky;
    bottom: 0;
    z-index: 60;        /* por encima del logo (z=50) para no solaparse */
    margin-top: auto;   /* empuja al fondo si el wrapper es flex column */
    background: #fff;
    box-shadow: 0 -2px 8px rgba(14,15,20,0.06);
}

/* Wrapper flex para todo el contenido del editor — todo cabe en la altura
   de la viewport, sin scroll de página: las grillas internas scrollean. */
.editor-stack {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    gap: 0;
}
.editor-stack > .editor-panel-edicion { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; overflow: hidden; }
.editor-stack > .editor-panel-edicion > .apuntes-grid-wrap { flex: 1 1 auto; min-height: 0; overflow: auto; }
.editor-stack > .editor-panel-totales { flex: 0 0 auto; }

/* Si la página renderiza un .vaux-popup (lista Liquidaciones IVA / Ventana auxiliar),
   ribbon-content actúa como flex container para que el popup ocupe todo el espacio. */
.ribbon-content:has(.vaux-popup) {
    display: flex;
    overflow: hidden;
    padding: 0;
    background: #f0f0f0;
}

/* En la página de asientos, .ribbon-content NO scrollea: las grillas internas sí */
.ribbon-content:has(.editor-stack) {
    overflow: hidden;
    display: flex;
    flex-direction: column;
    padding: 0.5rem 1rem;
}
/* La hoja del editor toma toda la altura disponible sin desbordar */
.ribbon-content:has(.editor-stack) > .asiento-ribbon { flex: 0 0 auto; }
.ribbon-content:has(.editor-stack) > .cp-panel { flex: 0 0 auto; }

/* Layout vertical: panel de Consultas arriba (con sidebar lateral
   de filtros) y panel de Edición debajo. */
.asientos-layout { display: block; }

/* ============================================================
   Filtros HORIZONTALES en la cabecera del panel de consultas:
   barra compacta de una fila arriba, grilla de la consulta debajo.
   Usamos CSS Grid para apilar label encima de input automáticamente
   sin necesidad de wrappers en el markup.
   ============================================================ */
.cp-body { flex-direction: column !important; overflow: hidden; }
.cp-side {
    width: 100% !important;
    display: grid !important;
    grid-template-rows: auto auto auto;     /* fila 0 = título, fila 1 = labels, fila 2 = inputs */
    grid-auto-flow: column;
    grid-auto-columns: max-content;
    align-items: end;
    column-gap: 12px;
    row-gap: 1px;
    overflow-y: visible !important;
    overflow-x: auto;
    max-height: none !important;
    border-right: none !important;
    border-bottom: 1px solid #ebe7e0;
    padding: 6px 12px !important;
    flex-shrink: 0;
    flex-direction: initial !important;
}
.cp-side .cp-side-title {
    grid-row: 1 / 2;
    grid-column: 1 / -1;
    margin-bottom: 2px !important;
    font-size: 0.7rem !important;
}
.cp-side .cp-side-lbl {
    grid-row: 2 / 3;
    margin: 0 !important;
    font-size: 0.66rem !important;
    line-height: 1;
}
.cp-side .cp-side-input {
    grid-row: 3 / 4;
    width: 150px;
    padding: 2px 5px !important;
    margin: 0 !important;
}
/* Radios, botones y hints ocupan ambas filas (labels+inputs) y se alinean abajo */
.cp-side .cp-radio,
.cp-side .cp-side-btn,
.cp-side .cp-side-hint {
    grid-row: 2 / 4;
    align-self: end;
    margin: 0 !important;
}
.cp-side .cp-side-btn { padding: 3px 10px !important; }

/* Wrap del filtro Cuenta del Extracto: input + botón F1 + dropdown autocomplete */
.cp-cuenta-wrap {
    position: relative;
    display: flex;
    align-items: stretch;
    gap: 0;
}
.cp-cuenta-wrap .cp-side-input {
    flex: 1 1 auto;
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}
.cp-cuenta-wrap .cp-f1-btn {
    margin: 0;
    border-radius: 0 3px 3px 0;
    border-left: 0;
    height: auto;
    padding: 0 6px;
    font-size: 0.65rem;
    font-weight: 600;
    background: #f0eee9;
    color: var(--orfeo-mid);
    cursor: pointer;
    border: 1px solid var(--orfeo-border-muted);
}
.cp-cuenta-wrap .cp-f1-btn:hover {
    background: var(--orfeo-accent-a15);
    color: var(--orfeo-accent);
    border-color: var(--orfeo-accent);
}
/* Dropdown del autocomplete del filtro Extracto */
.cp-ac-dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    margin-top: 2px;
    z-index: 9999;
    max-height: 240px;
    overflow-y: auto;
}

/* ============================================================
   RESPONSIVE — editor de asientos
   ≥1280px: layout completo (default)
   1100-1279px: inputs más estrechos, cabecera compacta
   900-1099px: filtros pueden ocupar 2 filas, panel más bajo
   <900px: scroll horizontal, mensaje sugerido
   ============================================================ */
@media (max-width: 1279px) {
    .cp-side .cp-side-input { width: 130px; }
    .ah-obs { min-width: 180px; }
    .editor-panel-header { padding: 4px 10px; font-size: 0.7rem; }
}

@media (max-width: 1099px) {
    .cp-side .cp-side-input { width: 115px; }
    .cp-side { gap: 4px 8px; }
    .ah-field { padding: 0 5px; }
    .ah-obs { min-width: 140px; }
    .asiento-header-bar { padding: 3px 8px; font-size: 0.78rem; }
    /* Grid de apuntes: scroll horizontal si las columnas no caben */
    .apuntes-dxgrid { overflow-x: auto; }
}

@media (max-width: 899px) {
    .editor-panel,
    .cp-panel { border-radius: 4px; }
    .cp-tabs { flex-wrap: wrap; }
    .cp-tab { padding: 4px 8px; font-size: 0.74rem; }
    /* La barra flotante se queda fija arriba a la derecha en pantallas pequeñas */
    .bf-bar { right: 8px; left: auto !important; top: 8px !important; }
    /* Cabecera del asiento se rompe en 2 filas */
    .asiento-header-bar { flex-wrap: wrap; gap: 4px 0; }
    .ah-sep { display: none; }
}

/* DxGrid: cuando el ancho disponible es menor que la suma de columnas,
   permitir scroll horizontal en lugar de cortar contenido */
@media (max-width: 1199px) {
    .cp-grid .dxbl-grid-table,
    .apuntes-dxgrid .dxbl-grid-table {
        min-width: 100%;
        width: max-content !important;
    }
    .cp-grid-wrap,
    .apuntes-grid-wrap { overflow-x: auto; }
}

/* ── Maestro de cuentas ─────────────────────────────────── */
.mcuen-popup .dxbl-popup-body { padding: 0 !important; }
/* DxPopup modal root: fix posición para que el popup salga centrado encima
   de la página (modal real) y no quede embebido en el flujo del editor */
.dxbl-modal-root {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    z-index: 10000 !important;
    background: rgba(14, 15, 20, 0.35);
    pointer-events: auto;
}
.dxbl-modal-root > .dxbl-popup,
.dxbl-modal-root > .dxbl-popup-content {
    position: relative !important;
    margin: 0 auto !important;
    box-shadow: 0 20px 60px rgba(0,0,0,0.35);
    border-radius: 8px;
    overflow: hidden;
    background: #fff !important;          /* fondo opaco — evitar transparencias */
}
/* Body del popup con fondo blanco sólido y ancho completo. Selector específico
   sólo al body — NO al header ni a divs aleatorios para no romper el chrome
   del DxPopup (header bar con su X cerrar nativo). */
.dxbl-modal-root .dxbl-popup-body { background: #fff !important; }
.dxbl-modal-root .dxbl-modal-content {
    background: #fff !important;
    width: 100% !important;        /* el body interno debe ocupar todo el popup */
    flex: 1 1 100% !important;
    min-width: 0;
}
/* Cabecera nativa del DxPopup (clase real en DevExpress 22.2: .dxbl-modal-header).
   Debe ser una banda fina con título a la izquierda y botón ✕ pequeño a la derecha. */
.dxbl-modal-root .dxbl-modal-header {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    flex-wrap: nowrap !important;
    padding: 8px 14px !important;
    min-height: 44px !important;
    max-height: 56px !important;
    height: 44px !important;
    background: #f5f4f1 !important;
    border-bottom: 1px solid #e3e0db !important;
    flex: 0 0 auto !important;
}
/* Cualquier elemento dentro del header limitado a 32px de alto */
.dxbl-modal-root .dxbl-modal-header * { max-height: 32px; }
/* El botón cerrar (✕) — clase real .dxbl-popup-header-button */
.dxbl-modal-root .dxbl-popup-header-button,
.dxbl-modal-root .dxbl-modal-header button,
.dxbl-modal-root .dxbl-modal-header [role="button"] {
    width: 32px !important;
    height: 32px !important;
    min-width: 32px !important;
    max-width: 32px !important;
    min-height: 32px !important;
    flex: 0 0 32px !important;
    padding: 4px !important;
    background: transparent !important;
    border: none !important;
    cursor: pointer;
    border-radius: 4px;
}
.dxbl-modal-root .dxbl-modal-header svg,
.dxbl-modal-root .dxbl-modal-header img {
    width: 16px !important;
    height: 16px !important;
    max-width: 16px !important;
    max-height: 16px !important;
}
.dxbl-modal-root .dxbl-modal-title {
    font-size: 0.92rem !important;
    font-weight: 600 !important;
    color: var(--orfeo-dark) !important;
}
.dxbl-modal-root .dxbl-popup-header-button:hover,
.dxbl-modal-root .dxbl-modal-header button:hover {
    background: rgba(80, 88, 100, 0.12) !important;
}
/* Margen interior horizontal en el popup del Maestro de cuentas
   para que el contenido respire y no llegue a los bordes.
   Aplicado a TODOS los hijos directos, incluida la grilla. */
.mcuen-popup .dxbl-modal-content > * {
    padding-left: 16px !important;
    padding-right: 16px !important;
}
/* La cabecera azul es full-bleed por diseño (banda decorativa) */
.mcuen-popup .dxbl-modal-content > .mcuen-header {
    padding-left: 0 !important;
    padding-right: 0 !important;
}
/* El contenido interno del header tiene margen para alinearse con el resto */
.mcuen-popup .mcuen-header > * { margin-left: 16px; margin-right: 16px; }
/* El footer hereda el padding 16px del selector general (sin overrides) —
   así el texto "Doble clic..." y los botones Aceptar/Cancelar respiran */
.dxbl-modal-root dxbl-scroll-viewer,
.dxbl-modal-root .dxbl-scroll-viewer,
.dxbl-modal-root .dxbl-scroll-viewer-content {
    width: 100% !important;
}
.mcuen-popup,
.mcuen-popup .dxbl-popup-body { background: #fff !important; }
/* Ficha de cuenta embebida en F1 (mismo circuito interactivo que el maestro) */
.mcuen-ficha-overlay {
    position: fixed;
    inset: 0;
    z-index: 12050;
    background: rgba(14, 15, 20, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    pointer-events: auto;
}
.mcuen-ficha-overlay .ficha-cta-popup {
    pointer-events: auto;
    max-height: 90vh;
}
.mcuen-grid-wrap { width: 100% !important; }
.mcuen-grid { width: 100% !important; }

/* Grilla del maestro: estilo coherente con las grillas de consultas */
.mcuen-grid .dxbl-grid-table { width: 100% !important; }
.mcuen-grid .dxbl-grid { width: 100% !important; }
.mcuen-grid tbody > tr.dxbl-grid-empty-row,
.mcuen-grid tbody > tr.dxbl-grid-empty-row > td { background: #fff !important; }
.mcuen-grid tbody > tr:hover { background: rgba(80, 88, 100, 0.07) !important; }
.mcuen-grid tbody > tr > td {
    border-bottom: 1px solid #efece6 !important;
    border-right: 1px solid #efece6 !important;
    padding: 4px 8px !important;
}
.mcuen-grid tbody > tr > td:last-child { border-right: none !important; }
.mcuen-grid .dxbl-grid-header-row th {
    background: var(--orfeo-grid-head-bg) !important;
    border-bottom: 1.5px solid var(--orfeo-grid-head-border) !important;
    border-right: 1px solid var(--orfeo-grid-head-border) !important;
    color: var(--orfeo-grid-head-fg) !important;
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    font-weight: 700 !important;
    font-size: 0.72rem;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    padding: 5px 8px !important;
    position: sticky; top: 0; z-index: 2;
}
.mcuen-grid .dxbl-grid-header-row th .dxbl-grid-header-content { font-weight: 700 !important; }
.mcuen-grid .dxbl-grid-header-row th:last-child { border-right: none !important; }
.mcuen-ribbon { min-height: 76px; padding: 4px 0.5rem 0; border-bottom: 1px solid #d8d5d0; }

.mcuen-header {
    display: flex; align-items: center; justify-content: space-between;
    background: linear-gradient(135deg, #454b55 0%, #5c6370 100%);
    color: #fff; padding: 10px 16px; user-select: none;
}
.mcuen-header-left { display: flex; align-items: center; gap: 8px; }
.mcuen-header-icon { display: inline-flex; align-items: center; justify-content: center; }
.mcuen-header-icon i { font-size: 1.25rem; color: #475569; line-height: 1; }
.mcuen-header-title { font-size: 0.95rem; font-weight: 600; letter-spacing: 0.02em; }
.mcuen-header-hint {
    font-size: 0.7rem; background: rgba(255,255,255,0.18);
    border: 1px solid rgba(255,255,255,0.3); border-radius: 4px;
    padding: 1px 6px; font-family: monospace; margin-left: 4px;
}
.mcuen-close-btn {
    background: none; border: none; color: rgba(255,255,255,0.7);
    font-size: 1rem; cursor: pointer; padding: 2px 6px; border-radius: 4px;
    transition: background 0.15s, color 0.15s;
}
.mcuen-close-btn:hover { background: rgba(255,255,255,0.2); color: #fff; }

.mcuen-toolbar {
    display: flex; align-items: center; justify-content: space-between;
    background: #f1f5f9; border-bottom: 1px solid #e2e8f0;
    padding: 6px 12px; gap: 4px;
}
.mcuen-toolbar-left { display: flex; align-items: center; gap: 4px; }
.mcuen-toolbar-right { display: flex; align-items: center; gap: 4px; }
.mcuen-toolbar-sep { width: 1px; height: 20px; background: #cbd5e1; margin: 0 4px; }

.mcuen-btn {
    display: flex; align-items: center; gap: 4px;
    padding: 4px 10px; font-size: 0.78rem; border-radius: 4px;
    border: 1px solid #cbd5e1; background: #fff; color: #475569;
    cursor: pointer; transition: background 0.15s, border-color 0.15s;
    white-space: nowrap;
}
.mcuen-btn:hover:not(:disabled) { background: var(--orfeo-accent-a08); border-color: var(--orfeo-accent); }
.mcuen-btn:disabled { opacity: 0.45; cursor: not-allowed; }
.mcuen-btn-apply { border-color: var(--orfeo-accent); color: var(--orfeo-accent); }
.mcuen-btn-active { background: var(--orfeo-accent-a10); border-color: var(--orfeo-accent); color: var(--orfeo-accent); font-weight: 600; }

.mcuen-filtros { padding: 10px 14px 6px; background: #fff; border-bottom: 1px solid #e2e8f0; }

.mcuen-buscar-row { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.mcuen-buscar-wrap {
    flex: 1; display: flex; align-items: center; gap: 0;
    border: 1.5px solid #cbd5e1; border-radius: 6px; background: #fff;
    overflow: hidden; transition: border-color 0.15s;
}
.mcuen-buscar-wrap:focus-within { border-color: var(--orfeo-accent); box-shadow: 0 0 0 2px var(--orfeo-accent-a15); }
.mcuen-buscar-icon {
    padding: 0 0 0 10px; color: #94a3b8; font-size: 1.05rem;
    display: inline-flex; align-items: center; line-height: 1;
}
.mcuen-buscar-input {
    flex: 1; border: none; outline: none; padding: 6px 4px;
    font-size: 0.85rem; background: transparent;
}
.mcuen-buscar-clear {
    background: none; border: none; color: #94a3b8; cursor: pointer;
    padding: 0 8px; font-size: 0.85rem;
}
.mcuen-buscar-clear:hover { color: #ef4444; }
.mcuen-cuenta-badge {
    font-size: 0.75rem; background: #f1f5f9; border: 1px solid #e2e8f0;
    border-radius: 20px; padding: 3px 10px; color: #64748b; white-space: nowrap;
}

.mcuen-filtros-row2 { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }

.mcuen-label { font-size: 0.75rem; font-weight: 600; color: #64748b; white-space: nowrap; }

.mcuen-grupos { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.mcuen-grupo-btn {
    padding: 2px 8px; font-size: 0.75rem; border-radius: 20px;
    border: 1px solid #e2e8f0; background: #f8fafc; color: #475569;
    cursor: pointer; transition: all 0.12s;
}
.mcuen-grupo-btn:hover { background: #e2e8f0; }
.mcuen-grupo-active { background: var(--orfeo-dark); border-color: var(--orfeo-dark); color: #fff; font-weight: 600; }

.mcuen-checks { display: flex; gap: 12px; align-items: center; }
.mcuen-check {
    display: flex; align-items: center; gap: 4px;
    font-size: 0.78rem; cursor: pointer; color: #475569;
}
.mcuen-check input[type=checkbox] { cursor: pointer; accent-color: var(--orfeo-accent); }

.mcuen-grid-wrap { height: 320px; overflow: auto; outline: none; position: relative; }
.mcuen-grid { height: 100%; }

.mcuen-tipo-badge {
    display: inline-block; font-size: 0.7rem; padding: 1px 6px;
    border-radius: 3px; font-weight: 500;
}
.mcuen-tipo-normal    { background: #f8fafc; color: #334155; border: 1px solid #cbd5e1; }
.mcuen-tipo-cliente   { background: #f0fdf4; color: #15803d; border: 1px solid #bbf7d0; }
.mcuen-tipo-proveedor { background: #fff7ed; color: #c2410c; border: 1px solid #fed7aa; }
.mcuen-tipo-acreedor  { background: #fdf4ff; color: #7e22ce; border: 1px solid #e9d5ff; }

.mcuen-footer {
    display: flex; align-items: center; justify-content: space-between;
    padding: 8px 14px; border-top: 1px solid #e2e8f0; background: #f8fafc;
}
.mcuen-footer-info { font-size: 0.8rem; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mcuen-footer-cuenta { color: var(--orfeo-dark); font-weight: 500; }
.mcuen-footer-vacio { color: #94a3b8; font-style: italic; }
.mcuen-footer-btns { display: flex; gap: 8px; margin-left: 16px; }

/* Saldo columns in maestro */
.mcuen-saldo { font-size: 0.8rem; font-family: monospace; color: #94a3b8; }
.mcuen-saldo-pos { color: #475569; }
.mcuen-saldo-deu { color: #15803d; font-weight: 600; }
.mcuen-saldo-acr { color: #c2410c; font-weight: 600; }

/* IVA registro popup — new fields */
.ivaf-checks-row { gap: 16px; flex-wrap: wrap; }
.ivaf-check-lbl { display: flex; align-items: center; gap: 5px; font-size: 0.8rem; cursor: pointer; }
.ivaf-check-lbl input[type=checkbox] { cursor: pointer; accent-color: var(--orfeo-accent); }
.ivaf-input-date { padding: 4px 6px; font-size: 0.8rem; }
.ivaf-row-exenta td { background: #fafaf8; }
.ivaf-exenta-nota { font-size: 0.75rem; color: #94a3b8; padding-left: 8px; }
.ivaf-obs-row { display: flex; flex-direction: column; gap: 4px; padding: 8px 0; }
.ivaf-obs { width: 100%; border: 1px solid #d1d5db; border-radius: 4px; padding: 6px 8px; font-size: 0.82rem; resize: vertical; }
.ivaf-obs:focus { outline: none; border-color: var(--orfeo-accent); box-shadow: 0 0 0 2px var(--orfeo-accent-a15); }

/* IvaLineas popup — F1 button */
.ivap-td-cta { display: flex; align-items: center; gap: 3px; }
.ivap-f1-btn {
    padding: 2px 5px; font-size: 0.65rem; font-weight: 700;
    border: 1px solid #cbd5e1; border-radius: 3px; background: #f1f5f9;
    color: #475569; cursor: pointer; white-space: nowrap; line-height: 1.4;
}
.ivap-f1-btn:hover { background: var(--orfeo-accent-a10); border-color: var(--orfeo-accent); color: var(--orfeo-accent); }
.ivap-f1-hint { font-size: 0.75rem; color: #94a3b8; margin: 4px 0 0; font-style: italic; }

/* ============================================================
   LISTA DE ASIENTOS
   ============================================================ */
/* Grid de lista — altura fija, scroll interno sin paginación */
.lista-grid-scroll { height: calc(100vh - 260px); min-height: 320px; }

.lista-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}
.lista-titulo { font-size: 1.1rem; font-weight: 600; margin: 0; color: var(--orfeo-ochre); }
.lista-ejercicio-badge {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #c0392b;
    background: #fdf0ee;
    border: 1px solid #f5c6c0;
    border-radius: 4px;
    padding: 1px 8px;
    margin-top: 3px;
}

.lista-filtros {
    display: flex;
    align-items: flex-end;
    gap: 0.6rem;
    flex-wrap: wrap;
    background: #fff;
    border: 1px solid #e2e0db;
    border-radius: 6px;
    padding: 0.75rem 1rem;
    margin-bottom: 1rem;
}
.filtro-grupo { display: flex; flex-direction: column; gap: 2px; }
.filtro-grupo label { font-size: 0.72rem; font-weight: 500; color: var(--orfeo-mid); text-transform: uppercase; letter-spacing: 0.04em; }
.filtro-grupo select, .filtro-grupo input { min-width: 130px; }
.filtro-texto input { min-width: 220px; }

.lista-wrap { overflow-x: auto; }
.lista-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.84rem;
}
.lista-table thead th {
    background: #f5f4f1;
    border-bottom: 2px solid #ddd;
    padding: 6px 10px;
    text-align: left;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--orfeo-mid);
    white-space: nowrap;
}
.lista-table .col-num { text-align: right; width: 60px; }
.lista-table .col-importe { text-align: right; width: 100px; }
.lista-row {
    border-bottom: 1px solid #eee;
    cursor: pointer;
    transition: background 0.1s;
}
.lista-row:hover { background: var(--orfeo-accent-a06); }
.lista-row td { padding: 6px 10px; }
.lista-spinner, .lista-vacia {
    padding: 2rem;
    text-align: center;
    color: var(--orfeo-mid);
    font-size: 0.9rem;
}
.lista-paginacion {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    padding: 0.75rem 0;
    font-size: 0.84rem;
    color: var(--orfeo-mid);
}

/* ============================================================
   EDITOR DE ASIENTO
   ============================================================ */
.editor-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}
.editor-titulo { display: flex; align-items: baseline; gap: 0.75rem; }
.editor-titulo h2 { font-size: 1.1rem; font-weight: 600; margin: 0; }
.editor-back { font-size: 0.82rem; color: var(--orfeo-mid); text-decoration: none; }
.editor-back:hover { color: var(--orfeo-accent); }
.editor-acciones { display: flex; gap: 0.4rem; }

.asiento-cabecera {
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 0.75rem;
    background: #fff;
    border: 1px solid #e2e0db;
    border-radius: 6px;
    padding: 0.75rem 1rem;
    margin-bottom: 1rem;
}
.cab-field { display: flex; flex-direction: column; gap: 3px; }
.cab-field label { font-size: 0.72rem; font-weight: 500; color: var(--orfeo-mid); text-transform: uppercase; letter-spacing: 0.04em; }
.cab-field-sm input { width: 90px; }
.cab-field-lg input { min-width: 280px; }

/* Tabla de apuntes */
.apuntes-wrap { overflow-x: auto; }
.apuntes-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.84rem;
    background: #fff;
    border: 1px solid #e2e0db;
    border-radius: 6px;
    overflow: hidden;
}
.apuntes-table thead th {
    background: #f5f4f1;
    border-bottom: 2px solid #ddd;
    padding: 6px 8px;
    text-align: left;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--orfeo-dark);
    white-space: nowrap;
}
.apuntes-table thead th.ap-importe { text-align: right; }
.ap-ord   { width: 36px; text-align: center; color: var(--orfeo-mid); font-size: 0.76rem; }
.ap-cuenta { width: 110px; }
.ap-desc  { min-width: 160px; max-width: 220px; }
.ap-concepto { min-width: 160px; }
.ap-doc   { width: 110px; }
.ap-importe { width: 110px; text-align: right; }
.ap-del   { width: 30px; text-align: center; }

.ap-row td { padding: 3px 6px; border-bottom: 1px solid #f0eeeb; }
.ap-row:hover td { background: #faf9f7; }
.ap-row-error td { background: rgba(229,0,0,0.04); }

.ap-input {
    width: 100%;
    border: 1px solid transparent;
    border-radius: 3px;
    padding: 3px 5px;
    font-size: 0.83rem;
    font-family: var(--font-sans);
    background: transparent;
    color: var(--orfeo-dark);
    outline: none;
    box-sizing: border-box;
}
.ap-input:focus {
    background: #fff;
    border-color: var(--orfeo-accent);
    box-shadow: 0 0 0 2px var(--orfeo-accent-a15);
}
.ap-input-cuenta { font-family: monospace; font-size: 0.85rem; font-weight: 500; }
.ap-input-importe { text-align: right; }
.ap-input-importe::placeholder { color: #ccc; text-align: right; }

.ap-desc-text { font-size: 0.78rem; padding-left: 4px; }

.ap-del-btn {
    background: none;
    border: none;
    color: #ccc;
    font-size: 1rem;
    cursor: pointer;
    line-height: 1;
    padding: 2px 4px;
    border-radius: 3px;
}
.ap-del-btn:hover { color: #e50000; background: rgba(229,0,0,0.08); }

/* Tfoot totales */
.apuntes-table tfoot td {
    padding: 6px 8px;
    border-top: 2px solid #ddd;
}
.ap-total-label { font-size: 0.82rem; }
.ap-total {
    text-align: right;
    font-weight: 600;
    font-size: 0.9rem;
}
.ap-diferencia-row td { border-top: none; padding-top: 2px; }
.ap-diferencia-label { font-size: 0.8rem; }
.ap-diferencia-valor { text-align: right; font-size: 0.82rem; font-weight: 500; }

.badge-cuadrado {
    display: inline-block;
    background: rgba(38,176,80,0.12);
    color: #1a8a3c;
    border: 1px solid rgba(38,176,80,0.3);
    border-radius: 4px;
    padding: 2px 8px;
    font-size: 0.75rem;
    font-weight: 600;
}
.badge-descuadrado {
    display: inline-block;
    background: rgba(229,0,0,0.08);
    color: #c00;
    border: 1px solid rgba(229,0,0,0.2);
    border-radius: 4px;
    padding: 2px 8px;
    font-size: 0.75rem;
    font-weight: 600;
}

/* ============================================================
   ERRORES BLAZOR
   ============================================================ */
#blazor-error-ui {
    background: linear-gradient(135deg, #a93226 0%, #c0392b 100%);
    color: #fff;
    padding: 0.7rem 1.2rem;
    position: fixed;
    bottom: 0;
    width: 100%;
    display: none;
    z-index: 9999;
    font-size: 0.85rem;
    display: none;
    align-items: center;
    gap: 10px;
    box-shadow: 0 -2px 12px rgba(0,0,0,.25);
    font-family: var(--font-sans);
}
#blazor-error-ui .reload {
    color: #fff;
    font-weight: 600;
    text-decoration: underline;
    margin-left: 12px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
#blazor-error-ui .dismiss {
    margin-left: auto;
    cursor: pointer;
    color: rgba(255,255,255,.7);
    font-size: 1rem;
    line-height: 1;
}
#blazor-error-ui .dismiss:hover { color: #fff; }

@keyframes orfeo-progress {
    0%   { transform: translateX(-100%); }
    50%  { transform: translateX(0%); }
    100% { transform: translateX(100%); }
}

.valid.modified:not([type=checkbox]) { outline: 1px solid #26b050; }
.invalid { outline: 1px solid #e50000; }
.validation-message { color: #e50000; }

/* ============================================================
   EDITOR ASIENTOS — grid bloqueado y cabecera
   ============================================================ */
.grid-bloqueado {
    opacity: 0.38;
    pointer-events: none;
    user-select: none;
}

.ah-hint {
    margin-left: 12px;
    font-size: 0.78rem;
    color: var(--orfeo-accent);
    font-style: italic;
    white-space: nowrap;
}

.ap-row-activa {
    background: rgba(80, 88, 100, 0.15);
    border-radius: 3px;
    padding: 0 4px;
}

/* ============================================================
   MENÚ CONTEXTUAL DE LÍNEAS
   ============================================================ */
.ctx-backdrop {
    position: fixed;
    inset: 0;
    z-index: 8000;
    background: transparent;
}

.ctx-menu {
    position: fixed;
    z-index: 8001;
    background: #fff;
    border: 1px solid #d0d0d0;
    border-radius: 6px;
    box-shadow: 0 6px 24px rgba(0,0,0,0.15), 0 1px 4px rgba(0,0,0,0.08);
    padding: 4px 0;
    min-width: 210px;
    font-size: 0.84rem;
    max-height: 80vh;
    overflow-y: auto;
}
/* Variante ancha: para menús con muchas opciones (consulta de diario) */
.ctx-menu-wide { min-width: 280px; }

/* Submenús agrupados (evita menú vertical gigante) */
.ctx-group {
    position: relative;
}
.ctx-item-parent {
    display: flex;
    align-items: center;
    width: 100%;
    cursor: default;
    user-select: none;
}
.ctx-item-parent .ctx-parent-label {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}
.ctx-caret {
    margin-left: auto;
    padding-left: 8px;
    font-size: 0.72rem;
    color: #94a3b8;
    flex-shrink: 0;
}
.ctx-submenu {
    display: none;
    position: absolute;
    left: calc(100% - 2px);
    top: 0;
    min-width: 280px;
    max-width: min(360px, 92vw);
    max-height: min(70vh, 420px);
    overflow-y: auto;
    background: #fff;
    border: 1px solid #d0d0d0;
    border-radius: 6px;
    box-shadow: 0 6px 20px rgba(0,0,0,0.14);
    padding: 4px 0;
    z-index: 8002;
}
.ctx-group:hover > .ctx-submenu,
.ctx-group:focus-within > .ctx-submenu {
    display: block;
}
/* Si el submenú se sale por la derecha, abrir hacia la izquierda */
.ctx-group.ctx-submenu-left > .ctx-submenu {
    left: auto;
    right: calc(100% - 2px);
}
.ctx-menu-grouped {
    max-height: none;
    overflow: visible;
}
.ctx-danger-group > .ctx-item-parent {
    color: #a00;
}
.ctx-group-disabled > .ctx-item-parent {
    opacity: 0.45;
    pointer-events: none;
}

.ctx-item {
    display: block;
    width: 100%;
    padding: 6px 16px;
    text-align: left;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--orfeo-dark);
    white-space: nowrap;
}
.ctx-item:hover:not(:disabled) {
    background: rgba(80, 88, 100, 0.09);
    color: var(--orfeo-accent);
}
.ctx-item:disabled {
    opacity: 0.4;
    cursor: default;
}
.ctx-item.ctx-danger { color: #c00; }
.ctx-item.ctx-danger:hover { background: rgba(200,0,0,0.07); color: #a00; }

/* ============================================================
   BARRA FLOTANTE DE ASIENTOS
   ============================================================ */
.bf-bar {
    position: fixed;
    left: 50%;
    top: 200px;
    transform: translateX(-50%);
    z-index: 100;
    display: flex;
    align-items: center;
    gap: 2px;
    background: #f5f4f1;
    border: 1px solid #c8c5be;
    border-radius: 7px;
    box-shadow: 0 4px 18px rgba(0,0,0,0.18), 0 1px 4px rgba(0,0,0,0.10);
    padding: 3px 5px;
    user-select: none;
    min-width: 0;
}
.bf-bar.bf-bar-positioned {
    transform: none;
}

.bf-handle {
    cursor: grab;
    color: #aaa;
    font-size: 1.1rem;
    padding: 2px 5px 2px 2px;
    line-height: 1;
    touch-action: none;
}
.bf-handle:active { cursor: grabbing; }
.bf-sep {
    width: 1px;
    height: 16px;
    background: #c8c5be;
    margin: 0 2px;
    flex-shrink: 0;
}
.bf-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 3px;
    padding: 3px 5px;
    cursor: pointer;
    font-size: 0.78rem;
    color: var(--orfeo-dark);
    white-space: nowrap;
    min-width: 0;
    height: 24px;
    transition: background 0.1s, border-color 0.1s;
    line-height: 1;
    gap: 4px;
}
.bf-btn:hover:not(:disabled) {
    background: #e6e3dd;
    border-color: #bbb8b2;
}
.bf-btn:disabled { opacity: 0.38; cursor: default; }
.bf-btn-primary { border-color: var(--orfeo-accent); background: var(--orfeo-accent); color: #fff; }
.bf-btn-primary:hover:not(:disabled) { background: var(--orfeo-accent-h); border-color: var(--orfeo-accent-h); }
.bf-btn-danger  { color: #c00; }
.bf-btn-danger:hover:not(:disabled) { background: rgba(200,0,0,0.08); border-color: #f9a9a9; }
.bf-btn-icon { font-size: 0.85rem; line-height: 1; }
.bf-btn-icon-img { width: 24px; height: 24px; object-fit: contain; flex-shrink: 0; }
.bf-btn-icon-ph {
    font-size: 19px;
    color: #475569;
    line-height: 1;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
/* Etiqueta de texto visible junto al icono — cada botón de la barra flotante
   indica claramente su acción (Guardar y nuevo, Ir a fecha, Ir a nº, etc.). */
.bf-btn-lbl  { display: inline; font-size: 0.7rem; line-height: 1.05; white-space: nowrap; }
.bf-btn-lbl br { display: none; }
.bf-btn { height: auto; min-height: 26px; }
.bf-btn-mas  { font-size: 0.75rem; padding: 3px 7px; border: 1px solid #bbb8b2; background: #eeebe5; }

/* Dropdown Más opciones */
.bf-dropdown { position: relative; }
/* Backdrop del menú: por debajo del desplegable (ctx-backdrop global usa 8000) */
.bf-dropdown .bf-menu-backdrop {
    z-index: 8049;
}
.bf-dropdown-menu {
    position: absolute;
    bottom: calc(100% + 6px);
    right: 0;
    background: #fff;
    border: 1px solid #d0d0d0;
    border-radius: 6px;
    box-shadow: 0 6px 24px rgba(0,0,0,0.15);
    padding: 4px 0;
    min-width: 230px;
    z-index: 8050;
    font-size: 0.84rem;
}
.bf-menu-item {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 6px 14px;
    background: none;
    border: none;
    text-align: left;
    cursor: pointer;
    color: var(--orfeo-dark);
    white-space: nowrap;
}
.bf-menu-item:hover:not(:disabled) { background: var(--orfeo-accent-a08); color: var(--orfeo-accent); }
.bf-menu-item:disabled { opacity: 0.38; cursor: default; }
.bf-menu-item-icon { width: 18px; text-align: center; opacity: 0.65; }
.bf-menu-item-icon-img { width: 16px; height: 16px; object-fit: contain; flex-shrink: 0; }
.bf-menu-item-icon-ph {
    width: 18px;
    font-size: 16px;
    color: #475569;
    text-align: center;
    flex-shrink: 0;
    margin-right: 8px;
}
.bf-menu-sep { height: 1px; background: #eee; margin: 3px 0; }
.bf-menu-header {
    padding: 3px 14px 2px;
    font-size: 0.68rem;
    font-weight: 700;
    color: var(--orfeo-mid);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.ctx-sep {
    height: 1px;
    background: #e8e8e8;
    margin: 3px 0;
}
.ctx-header {
    padding: 5px 16px 4px;
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--orfeo-mid);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-bottom: 1px solid #eee;
    margin-bottom: 3px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 260px;
}
.ctx-icon {
    display: inline-block;
    width: 18px;
    margin-right: 6px;
    text-align: center;
    font-style: normal;
    opacity: 0.7;
}
.ctx-icon-img {
    width: 16px;
    height: 16px;
    object-fit: contain;
    margin-right: 6px;
    flex-shrink: 0;
    vertical-align: middle;
}
.ctx-icon-ph {
    width: 18px;
    font-size: 16px;
    color: #475569;
    text-align: center;
    flex-shrink: 0;
    margin-right: 8px;
    line-height: 1;
}
/* Rotaciones para reutilizar la flecha "Reciente" como ↑/↓ en mover-arriba/abajo */
.ctx-icon-img-rot-90-cw  { transform: rotate( 90deg); }
.ctx-icon-img-rot-90-ccw { transform: rotate(-90deg); }

/* ============================================================
   IVA POPUP — FORMULARIO REDISEÑADO
   ============================================================ */
.ivaf-popup {
    font-size: 0.84rem;
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 12px 16px 0;
}
.ivaf-popup .asiento-ribbon {
    min-height: 76px;
    padding: 4px 0.5rem 0;
    margin: -12px -16px 0;
    border-top: none;
    border-left: none;
    border-right: none;
}

.ivaf-footer {
    position: sticky;
    bottom: 0;
    background: #fff;
    border-top: 1px solid #dee2e6;
    padding: 10px 16px;
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    margin-top: auto;
}

/* Cabecera — datos del tercero */
.ivaf-header {
    background: #f5f4f0;
    border: 1px solid #ddd;
    border-radius: 5px;
    padding: 8px 12px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.ivaf-hrow { display: flex; gap: 20px; flex-wrap: wrap; }
.ivaf-hcell { display: flex; align-items: center; gap: 6px; }
.ivaf-hcell-wide { flex: 1; min-width: 200px; }
.ivaf-hcell-clave { flex: 1; min-width: 280px; }
.ivaf-lbl {
    font-size: 0.76rem;
    font-weight: 600;
    color: var(--orfeo-mid);
    white-space: nowrap;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.ivaf-val { color: var(--orfeo-dark); }
.ivaf-mono { font-family: monospace; font-weight: 600; letter-spacing: 0.03em; }
.ivaf-strong { font-weight: 700; color: var(--orfeo-dark); }

.ivaf-input {
    padding: 3px 8px;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 0.84rem;
    background: #fff;
}
.ivaf-input:focus { border-color: var(--orfeo-accent); outline: none; }
.ivaf-input-sm { width: 90px; }

.ivaf-select {
    padding: 3px 6px;
    border: 1px solid var(--orfeo-form-border-strong);
    border-radius: 4px;
    font-size: 0.83rem;
    background: #fff;
    flex: 1;
    min-width: 0;
    min-height: 26px;
}
.ivaf-select:focus { border-color: var(--orfeo-accent); outline: none; }

/* Cuadrícula de IVA */
.ivaf-grid {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.83rem;
}
.ivaf-grid th {
    background: #e8e8e4;
    padding: 5px 8px;
    font-weight: 700;
    font-size: 0.75rem;
    color: #555;
    border: 1px solid #ccc;
    white-space: nowrap;
}
.ivaf-th-r { text-align: right; }
.ivaf-th-c { text-align: center; }

.ivaf-grid td {
    border: 1px solid #ddd;
    padding: 2px 4px;
    vertical-align: middle;
}
.ivaf-row-lbl {
    font-weight: 600;
    color: var(--orfeo-mid);
    text-align: center;
    width: 24px;
    background: #f5f4f0;
    font-size: 0.78rem;
}
.ivaf-num {
    width: 100%;
    padding: 3px 6px;
    border: 1px solid #ccc;
    border-radius: 3px;
    text-align: right;
    font-size: 0.83rem;
    background: #fff;
    box-sizing: border-box;
}
.ivaf-num:focus { border-color: var(--orfeo-accent); outline: none; background: #fffbf8; }
.ivaf-pct { width: 62px; }
.ivaf-cuota {
    display: block;
    text-align: right;
    padding: 3px 6px;
    font-weight: 500;
    color: #333;
    white-space: nowrap;
}
/* Pie de tabla totales */
.ivaf-foot-row td { background: #f0eff0; font-weight: 600; }
.ivaf-foot-val { text-align: right; padding: 4px 8px; font-size: 0.83rem; }

/* Fila IRPF */
.ivaf-irpf-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px;
    background: #fafaf8;
    border: 1px solid #e0e0dc;
    border-radius: 4px;
}

/* Banda de verificación de totales */
.ivaf-totales {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    padding: 7px 12px;
    border-radius: 5px;
    font-size: 0.84rem;
    border: 1px solid;
}
.ivaf-cuadra  { background: #f0faf3; border-color: #a8d8b0; color: #1a6b30; }
.ivaf-descuadra { background: #fff5f5; border-color: #f0b8b8; color: #a00; }
.ivaf-total-result { margin-left: auto; font-weight: 600; font-size: 0.9rem; }
.ivaf-check { color: #1a7a3a; margin-left: 6px; font-size: 1rem; }
.ivaf-warn  { color: #c00; margin-left: 6px; }

/* Sección cuentas a generar */
.ivaf-cuentas {
    background: #f8f7f4;
    border: 1px solid #e0ddd8;
    border-radius: 5px;
    padding: 8px 12px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.ivaf-check-lbl {
    display: flex;
    align-items: center;
    gap: 7px;
    font-weight: 500;
    cursor: pointer;
    font-size: 0.84rem;
}
.ivaf-cuenta-row {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
.ivaf-lbl-cuenta {
    min-width: 170px;
}
.ivaf-desc-cuenta {
    color: var(--orfeo-mid);
    font-style: italic;
    font-size: 0.78rem;
    flex: 1;
}

/* ============================================================
   IVA PANEL POPUP (segundo paso — cuentas a generar)
   ============================================================ */
.ivap-popup { font-size: 0.84rem; }

.ivap-table {
    width: 100%;
    border-collapse: collapse;
}
.ivap-table thead th {
    background: #e8e8e4;
    padding: 5px 8px;
    font-size: 0.75rem;
    font-weight: 700;
    color: #555;
    border: 1px solid #ccc;
    white-space: nowrap;
}
.ivap-th-lbl  { width: 170px; }
.ivap-th-cta  { width: 100px; }
.ivap-th-desc { }
.ivap-th-imp  { width: 96px; text-align: right; }

.ivap-table tbody tr { border-bottom: 1px solid #e8e8e4; }
.ivap-table tbody td { padding: 3px 6px; vertical-align: middle; border: 1px solid #e0e0dc; }

/* Filas con datos → fondo blanco normal */
.ivap-row-activa td { background: #fff; }
/* Filas vacías → gris suave */
.ivap-row-vacia td  { background: #f8f8f6; color: #aaa; }

.ivap-lbl {
    font-size: 0.78rem;
    font-weight: 500;
    color: #444;
    white-space: nowrap;
    padding-right: 8px;
}

.ivap-input {
    width: 100%;
    box-sizing: border-box;
    padding: 2px 6px;
    border: 1px solid #ccc;
    border-radius: 3px;
    font-size: 0.83rem;
    background: #fff;
}
.ivap-input:focus { border-color: var(--orfeo-accent); outline: none; }
.ivap-mono { font-family: monospace; font-weight: 600; letter-spacing: 0.03em; }

.ivap-num {
    width: 100%;
    box-sizing: border-box;
    padding: 2px 6px;
    border: 1px solid #ccc;
    border-radius: 3px;
    text-align: right;
    font-size: 0.83rem;
    background: #fff;
}
.ivap-num:focus { border-color: var(--orfeo-accent); outline: none; }

.ivap-desc {
    font-size: 0.78rem;
    color: var(--orfeo-mid);
    font-style: italic;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 160px;
}

.ivap-nota {
    margin-top: 8px;
    font-size: 0.76rem;
    color: var(--orfeo-mid);
}

/* ── EfectosPopup ──────────────────────────────────────────────────── */
.efp-popup { padding: 8px 4px; }
.efp-info { display:flex; align-items:center; gap:8px; margin-bottom:10px; font-size:0.85rem; }
.efp-cuenta { font-family:monospace; font-weight:600; }
.efp-nombre { flex:1; color:var(--orfeo-mid); }
.efp-total-lbl { font-weight:600; }
.efp-total-val { font-family:monospace; font-weight:700; min-width:80px; text-align:right; }
.efp-opts { display:grid; grid-template-columns:110px 1fr 90px 1fr; gap:4px 8px; align-items:center; margin-bottom:10px; font-size:0.82rem; }
.efp-opt-lbl { color:var(--orfeo-mid); font-size:0.78rem; }
.efp-input { width:100%; border:1px solid #ced4da; border-radius:3px; padding:2px 5px; font-size:0.83rem; }
.efp-mono { font-family:monospace; }
.efp-table { width:100%; border-collapse:collapse; font-size:0.83rem; font-family:var(--font-sans); margin-bottom:6px; }
.efp-table th { background:var(--orfeo-form-surface); padding:4px 8px; border-bottom:2px solid var(--orfeo-form-border-strong); text-align:left; font-weight:700; font-size:0.74rem; text-transform:uppercase; letter-spacing:0.03em; color:var(--orfeo-mid); }
.efp-th-n { width:28px; }
.efp-th-fec { width:140px; }
.efp-th-imp { width:100px; text-align:right; }
.efp-th-del { width:28px; }
.efp-table td { padding:3px 8px; border-bottom:1px solid var(--orfeo-form-border); }
.efp-n { text-align:center; color:var(--orfeo-mid); font-size:0.78rem; }
.efp-date { width:100%; border:none; outline:none; font-size:0.83rem; }
.efp-imp { width:100%; border:none; outline:none; text-align:right; font-size:0.83rem; font-family:monospace; }
.efp-del-btn { background:none; border:none; cursor:pointer; color:#dc3545; font-size:1rem; padding:0 4px; }
.efp-pendiente { display:flex; gap:16px; justify-content:flex-end; font-size:0.82rem; margin-bottom:6px; padding:4px 8px; border-radius:4px; }
.efp-ok { background:#d4edda; color:#155724; }
.efp-warn { background:#fff3cd; color:#856404; }
.efp-add-wrap { margin-bottom:8px; }
.efp-add-btn { font-size:0.8rem; }

/* ============================================================
   IVA POPUPS — REDISEÑO PROFESIONAL
   ============================================================ */
.iva-popup {
    display: flex;
    flex-direction: column;
    gap: 18px;
    padding: 6px 14px 8px;        /* margen interior horizontal coherente con mcuen-popup */
    font-family: var(--font-sans);
    color: var(--orfeo-dark);
}
.iva-mono { font-family: 'JetBrains Mono', 'Consolas', monospace; font-weight: 600; letter-spacing: 0.02em; }

/* Hero banner: tipo + cuenta + total */
.iva-hero {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 16px 20px;
    border-radius: 12px;
    background: linear-gradient(135deg, #f8f7f4 0%, #faf9f6 100%);
    border: 1px solid #e8e4dd;
}
.iva-hero-rep { border-left: 4px solid #4a7c59; }
.iva-hero-sop { border-left: 4px solid #5c6370; }
.iva-hero-icon {
    width: 52px; height: 52px;
    display: flex; align-items: center; justify-content: center;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 2px 6px rgba(0,0,0,0.04);
}
.iva-hero-icon i { font-size: 30px; }
.iva-hero-rep .iva-hero-icon i { color: #4a7c59; }
.iva-hero-sop .iva-hero-icon i { color: #5c6370; }
.iva-hero-info { flex: 1; min-width: 0; }
.iva-hero-tag {
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.12em;
    color: #6b6d78;
    margin-bottom: 4px;
}
.iva-hero-cuenta { font-size: 1.1rem; color: var(--orfeo-dark); }
.iva-hero-nombre { color: #6b6d78; font-weight: 400; margin-left: 4px; }
.iva-hero-nif { font-size: 0.78rem; color: #6b6d78; margin-top: 2px; }
.iva-hero-total { text-align: right; }
.iva-hero-total-lbl {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #6b6d78;
    margin-bottom: 2px;
}
.iva-hero-total-val {
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--orfeo-dark);
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    line-height: 1.1;
}

/* Section card */
.iva-section {
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 10px;
    padding: 14px 16px;
}
.iva-section-title {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 12px 0;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-weight: 600;
    color: #6b6d78;
}
.iva-section-title i { font-size: 18px; color: var(--orfeo-accent); }

/* Fields grid */
.iva-fields-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
}
.iva-field { display: flex; flex-direction: column; gap: 4px; }
.iva-field-wide { grid-column: span 3; }
.iva-field-span-2 { grid-column: span 2; }
.iva-field-highlight {
    background: var(--orfeo-accent-a06);
    padding: 8px 10px;
    border-radius: 6px;
    border: 1px dashed var(--orfeo-accent-a18);
}
.iva-field-highlight label { color: var(--orfeo-accent); font-weight: 600; }

.iva-rectif-box {
    margin-top: 14px;
    padding: 12px 14px;
    background: linear-gradient(135deg, #fff7f3 0%, #fefcfa 100%);
    border: 1px solid var(--orfeo-accent-a18);
    border-radius: 8px;
}
.iva-rectif-header {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--orfeo-accent);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.iva-rectif-header i { font-size: 18px; }

/* ── Utilbar (Historial / Plantillas / Configuración / Utilidades) ── */
.iva-utilbar {
    display: flex;
    gap: 6px;
    padding: 4px 0;
}
.iva-utilbtn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 10px;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 6px;
    background: #fff;
    color: var(--orfeo-dark);
    font-size: 0.78rem;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}
.iva-utilbtn:hover { background: #f5f4f1; border-color: var(--orfeo-accent); color: var(--orfeo-accent); }
.iva-utilbtn i { font-size: 16px; }

/* ── Layout principal de 3 columnas ── */
.iva-main {
    display: grid;
    grid-template-columns: 1.2fr 1.3fr 320px;
    gap: 14px;
    align-items: start;
}
.iva-main-4col {
    grid-template-columns: 320px 320px 1fr 320px;
    gap: 12px;
}
.iva-col {
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 10px;
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.iva-col-center { background: #fafaf8; }
.iva-col-cobros {
    background: linear-gradient(180deg, #fafaf8 0%, #f5f4f1 100%);
    border: 1px solid var(--orfeo-border-muted);
}

/* Section title pequeño dentro de columnas */
.iva-section-title-sm { font-size: 0.72rem; margin-bottom: 6px; }
.iva-section-title-sm i { font-size: 16px; }

/* Filas tipo "label + valor" en columnas */
.iva-row {
    display: grid;
    grid-template-columns: 130px 1fr;
    gap: 8px;
    align-items: center;
    padding: 2px 0;
}
.iva-row-double { align-items: flex-start; }
.iva-row-lbl {
    font-size: 0.78rem;
    color: var(--orfeo-mid);
    font-weight: 500;
}
.iva-row-val { display: flex; align-items: center; gap: 6px; }
.iva-input-sm { max-width: 110px; }

.iva-numreg {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    background: #f5f4f1;
    border: 1px dashed #c8c5be;
    border-radius: 6px;
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-weight: 600;
    color: var(--orfeo-mid);
}
.iva-numreg-val { color: var(--orfeo-dark); }
.iva-info-icon { color: #4a90c0; font-size: 14px; }

/* Botón cuenta */
.iva-cuenta-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 6px;
    background: #fff;
    color: var(--orfeo-dark);
    cursor: pointer;
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-size: 0.85rem;
}
.iva-cuenta-btn:disabled { opacity: 0.85; cursor: default; }
.iva-cuenta-btn i { font-size: 15px; color: var(--orfeo-accent); }

/* Grupo identificación: select + input + VIES */
.iva-id-group {
    display: grid;
    grid-template-columns: 100px 1fr auto;
    gap: 6px;
    width: 100%;
}
.iva-vies-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 6px 10px;
    border: 1px solid #b8d4b8;
    border-radius: 6px;
    background: #f0faf3;
    color: #1a6b30;
    font-size: 0.74rem;
    cursor: pointer;
    transition: background 0.15s;
}
.iva-vies-btn:hover { background: #def0e2; }
.iva-vies-btn i { font-size: 14px; }

/* Numero factura + serie */
.iva-numfac-group {
    display: grid;
    grid-template-columns: 1fr 90px;
    gap: 6px;
    width: 100%;
}
.iva-input-serie { text-align: center; }

/* Checks en columna */
.iva-checks-col {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px dashed #ebe7e0;
}
.iva-checks-col-tight { gap: 4px; padding-top: 6px; margin-top: 6px; }
.iva-checks-col .iva-check { font-size: 0.82rem; }

/* ── Panel de Cobros (columna derecha) ── */
.iva-cobros-list {
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 6px;
    overflow: hidden;
    min-height: 120px;
}
.iva-cobros-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 18px 12px;
    gap: 4px;
    color: #94a3b8;
    font-size: 0.78rem;
    text-align: center;
}
.iva-cobros-empty i { font-size: 22px; }
.iva-cobros-header {
    display: grid;
    grid-template-columns: 1fr 1fr 50px 28px;
    gap: 4px;
    padding: 5px 8px;
    background: #f0eee9;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    color: var(--orfeo-mid);
    border-bottom: 1px solid var(--orfeo-border-muted);
}
.iva-cobros-row {
    display: grid;
    grid-template-columns: 1fr 1fr 50px 28px;
    gap: 4px;
    align-items: center;
    padding: 5px 8px;
    font-size: 0.8rem;
    border-bottom: 1px solid #f0eee9;
}
.iva-cobros-row:last-child { border-bottom: none; }
.iva-cobros-row:hover { background: #fafaf8; }
.iva-cobros-est {
    text-align: center;
    font-weight: 700;
    color: var(--orfeo-mid);
}
.iva-cobros-del {
    background: none;
    border: none;
    color: #c00;
    cursor: pointer;
    padding: 2px;
    border-radius: 4px;
    line-height: 0;
}
.iva-cobros-del:hover { background: #ffe0e0; }
.iva-cobros-del i { font-size: 14px; }
.iva-cobros-actions {
    display: flex;
    gap: 6px;
    margin-top: 8px;
}
.iva-cobros-totales {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 10px;
    margin-top: 8px;
    background: #fff;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 6px;
    font-size: 0.8rem;
    font-weight: 600;
}
.iva-cobros-total-val { color: var(--orfeo-accent); font-size: 0.95rem; }

/* ── Help bar (F5-F9) ── */
.iva-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 10px;
}
.iva-helpbar {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}
.iva-helpbar-lbl { font-size: 0.78rem; color: var(--orfeo-mid); }
.iva-helpbar-sel { width: 160px; padding: 6px 8px; font-size: 0.82rem; }
.iva-helpbtn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 8px;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 5px;
    background: #fff;
    color: var(--orfeo-dark);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}
.iva-helpbtn:hover { background: #f5f4f1; border-color: var(--orfeo-accent); color: var(--orfeo-accent); }
.iva-helpbtn-key {
    font-size: 0.62rem;
    color: #94a3b8;
    background: #f0eee9;
    padding: 1px 4px;
    border-radius: 3px;
    font-weight: 500;
}

/* ── Totales resumen tipo calculadora ── */
.iva-totales-resumen {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 14px;
    margin-top: 10px;
}
.iva-totales-col {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.iva-irpf-row2 {
    display: grid;
    grid-template-columns: 18px 100px 90px 1fr;
    align-items: center;
    gap: 8px;
    padding: 6px 10px;
    background: #fafaf8;
    border: 1px solid #ebe7e0;
    border-radius: 6px;
}
.iva-irpf-row2 i { font-size: 16px; color: var(--orfeo-mid); }
.iva-irpf-row2 label { font-size: 0.82rem; color: var(--orfeo-mid); }
.iva-irpf-row2 .iva-grid-num { background: #fff; border: 1px solid var(--orfeo-border-muted); }
.iva-irpf-row2 .iva-irpf-cuota-val {
    text-align: right;
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-weight: 700;
    color: var(--orfeo-dark);
}

.iva-totales-col-results {
    background: #fff;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 8px;
    padding: 10px 14px;
}
.iva-tot-line {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 4px 0;
    font-size: 0.86rem;
}
.iva-tot-lbl { color: var(--orfeo-mid); }
.iva-tot-val { font-weight: 600; }
.iva-tot-line-final {
    margin-top: 6px;
    padding: 8px 10px;
    border-top: 2px solid var(--orfeo-border-muted);
    font-size: 1rem;
    font-weight: 700;
    border-radius: 6px;
    gap: 8px;
}
.iva-tot-cuadra { background: #f0faf3; color: #1a6b30; }
.iva-tot-descuadra { background: #fff5f5; color: #a00; }
.iva-tot-icon { font-size: 22px; }
.iva-tot-cuadra .iva-tot-icon { color: #2c8047; }
.iva-tot-descuadra .iva-tot-icon { color: #c00; }
.iva-tot-warn {
    margin-top: 6px;
    padding: 6px 10px;
    background: #fff5f5;
    border: 1px solid #f0b8b8;
    border-radius: 5px;
    font-size: 0.8rem;
    color: #a00;
}

/* Responsive: en pantallas pequeñas, apilar columnas */
@media (max-width: 1100px) {
    .iva-main { grid-template-columns: 1fr; }
    .iva-totales-resumen { grid-template-columns: 1fr; }
}

/* ============================================================
   IVA POPUP — modo COMPACTO (todo en una pantalla)
   ============================================================ */
.iva-popup { gap: 10px; }

.iva-hero-compact {
    padding: 10px 16px;
    gap: 12px;
}
.iva-hero-compact .iva-hero-icon { width: 42px; height: 42px; }
.iva-hero-compact .iva-hero-icon i { font-size: 24px; }
.iva-hero-compact .iva-hero-tag { font-size: 0.66rem; margin-bottom: 2px; }
.iva-hero-compact .iva-hero-cuenta { font-size: 1rem; }
.iva-hero-compact .iva-hero-nif { display: inline; font-size: 0.78rem; margin-left: 4px; }
.iva-hero-compact .iva-hero-total-val { font-size: 1.4rem; }
.iva-hero-compact .iva-hero-total-lbl { font-size: 0.66rem; }

/* Utilbar inline (dentro del hero) */
.iva-utilbar-inline {
    display: inline-flex;
    gap: 4px;
    padding: 0;
    margin-left: auto;
}
.iva-utilbar-inline .iva-utilbtn {
    padding: 6px 8px;
    width: 32px;
    height: 32px;
    justify-content: center;
}
.iva-utilbar-inline .iva-utilbtn i { font-size: 16px; }

/* Columnas más compactas */
.iva-main-4col .iva-col {
    padding: 10px 12px;
    gap: 4px;
    min-height: 100%;
    overflow-y: auto;
}
.iva-main-4col .iva-row {
    grid-template-columns: 110px 1fr;
    gap: 6px;
    padding: 1px 0;
}
.iva-main-4col .iva-row-lbl { font-size: 0.72rem; }
.iva-main-4col .iva-input,
.iva-main-4col select.iva-input {
    padding: 5px 8px;
    font-size: 0.8rem;
}
.iva-main-4col .iva-input-sm { max-width: 80px; }
.iva-main-4col .iva-cuenta-btn { padding: 4px 8px; font-size: 0.8rem; }
.iva-main-4col .iva-vies-btn { padding: 4px 8px; font-size: 0.7rem; }
.iva-main-4col .iva-vies-btn i { font-size: 13px; }
.iva-main-4col .iva-id-group { grid-template-columns: 80px 1fr auto; gap: 4px; }
.iva-main-4col .iva-numfac-group { grid-template-columns: 1fr 70px; }

.iva-main-4col .iva-checks-col-tight .iva-check { font-size: 0.74rem; gap: 4px; }
.iva-main-4col .iva-checks-col { gap: 3px; }

/* Numero registro compact */
.iva-main-4col .iva-numreg { padding: 4px 8px; font-size: 0.78rem; }

/* Bases imponibles columna 3 */
.iva-col-bases { background: #fafaf8; }
.iva-grid-compact { font-size: 0.78rem; }
.iva-grid-compact thead th { padding: 4px 6px; font-size: 0.66rem; }
.iva-grid-compact .iva-grid-row-lbl { padding: 4px 8px; font-size: 0.74rem; width: 60px; }
.iva-grid-compact tbody td { padding: 3px 4px; }
.iva-grid-compact .iva-grid-num { padding: 3px 5px; font-size: 0.78rem; }
.iva-grid-compact .iva-grid-pct { width: 54px; }
.iva-grid-compact .iva-grid-cuota { padding: 3px 5px; font-size: 0.78rem; }
.iva-grid-compact .iva-grid-nota { font-size: 0.72rem; padding-left: 8px !important; }

/* Helpbar compacto */
.iva-helpbar-compact {
    display: flex;
    gap: 3px;
    margin-bottom: 6px;
    flex-wrap: wrap;
}
.iva-helpbar-compact .iva-helpbtn {
    padding: 3px 6px;
    font-size: 0.78rem;
    gap: 3px;
}
.iva-helpbar-compact .iva-helpbtn-key { font-size: 0.55rem; padding: 1px 3px; }

/* IRPF + Suplidos en una sola línea */
.iva-irpf-compact {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 8px;
    margin-top: 6px;
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 6px;
    font-size: 0.78rem;
}
.iva-irpf-tag { color: var(--orfeo-mid); font-size: 0.74rem; }
.iva-irpf-val {
    flex: 1;
    text-align: right;
    font-weight: 600;
}
.iva-fkey { color: #94a3b8; font-size: 0.66rem; }
.iva-irpf-compact .iva-grid-num {
    background: #fafaf8;
    border: 1px solid var(--orfeo-border-muted);
    width: 80px;
    padding: 4px 6px;
}

/* Totales calculadora compacta */
.iva-totales-compact {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 8px;
    padding: 8px 10px;
    border-radius: 6px;
    border: 1px solid;
    font-size: 0.8rem;
}
.iva-totales-compact .iva-tot-line {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1px 0;
}
.iva-totales-compact .iva-tot-line span:first-child { color: var(--orfeo-mid); font-size: 0.76rem; }
.iva-totales-compact .iva-tot-line-final {
    border-top: 1px solid;
    padding-top: 4px;
    margin-top: 3px;
    font-size: 0.92rem;
    font-weight: 700;
    gap: 6px;
}
.iva-totales-compact .iva-tot-line-final span:first-child { font-size: 0.86rem; }
.iva-totales-compact .iva-tot-icon { font-size: 18px; }
.iva-totales-compact.iva-tot-cuadra { background: #f0faf3; border-color: #b8d8c0; color: #1a6b30; }
.iva-totales-compact.iva-tot-cuadra .iva-tot-line-final { border-top-color: #b8d8c0; }
.iva-totales-compact.iva-tot-cuadra .iva-tot-icon { color: #2c8047; }
.iva-totales-compact.iva-tot-descuadra { background: #fff5f5; border-color: #f0b8b8; color: #a00; }
.iva-totales-compact.iva-tot-descuadra .iva-tot-line-final { border-top-color: #f0b8b8; }
.iva-totales-compact.iva-tot-descuadra .iva-tot-icon { color: #c00; }

/* Cobros compactos */
.iva-main-4col .iva-cobros-list { min-height: 70px; }
.iva-main-4col .iva-cobros-empty { padding: 10px 8px; font-size: 0.74rem; }
.iva-main-4col .iva-cobros-empty i { font-size: 18px; }
.iva-main-4col .iva-cobros-row { padding: 3px 6px; font-size: 0.74rem; }

.iva-utilbtn-sm { padding: 3px 6px; font-size: 0.72rem; }
.iva-utilbtn-sm i { font-size: 14px; }

/* Textarea compacta */
.iva-textarea-sm { min-height: 36px; padding: 5px 8px; font-size: 0.78rem; }

/* Toggle compacto */
.iva-toggle-sm { padding: 4px 8px; font-size: 0.78rem; gap: 5px; }

/* Líneas a generar — minimal */
.iva-acc-rows-compact { gap: 4px; }
.iva-acc-line-mini {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 5px 7px;
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 5px;
}
.iva-acc-line-mini .iva-acc-tag { font-size: 0.7rem; color: #475569; }
.iva-acc-line-mini .iva-acc-input { display: flex; }
.iva-acc-line-mini .iva-input { padding: 4px 6px; font-size: 0.78rem; flex: 1; }
.iva-acc-line-mini .iva-f1-btn { padding: 0 6px; font-size: 0.66rem; }

/* Footer compacto */
.iva-actions { padding: 8px 4px 4px; margin-top: 4px; }
.iva-btn { padding: 7px 14px; font-size: 0.85rem; }

/* Responsive 4col → si la pantalla no llega, apila */
@media (max-width: 1450px) {
    .iva-main-4col { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 800px) {
    .iva-main-4col { grid-template-columns: 1fr; }
}

/* ============================================================
   EFECTOS POPUP — REDISEÑO PROFESIONAL
   ============================================================ */
.efp-section-data { padding: 12px 14px; }
.efp-fields-grid {
    grid-template-columns: 1.5fr 1fr 1fr;
    gap: 10px;
}

.efp-quick-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed #ebe7e0;
    flex-wrap: wrap;
}
.efp-quick-lbl {
    font-size: 0.78rem;
    color: var(--orfeo-mid);
    font-weight: 500;
    margin-right: 6px;
}

/* Tabla de vencimientos profesional */
.efp-table-pro {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    border: 1px solid #ebe7e0;
    border-radius: 8px;
    overflow: hidden;
    font-size: 0.85rem;
}
.efp-table-pro thead th {
    padding: 8px 10px;
    background: #f5f4f1;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--orfeo-mid);
    font-weight: 700;
    border-bottom: 1px solid #e2dfd8;
    text-align: left;
}
.efp-th-n   { width: 36px; text-align: center !important; }
.efp-th-fec { width: 130px; }
.efp-th-imp { width: 110px; text-align: right !important; }
.efp-th-fp  { width: 130px; }
.efp-th-doc { }
.efp-th-est { width: 70px; text-align: center !important; }
.efp-th-del { width: 36px; }

.efp-table-pro tbody td {
    padding: 5px 8px;
    border-bottom: 1px solid #f0eee9;
    vertical-align: middle;
}
.efp-table-pro tbody tr:last-child td { border-bottom: none; }
.efp-table-pro tbody tr:hover { background: #fafaf8; }

.efp-table-pro .efp-n {
    text-align: center;
    font-weight: 600;
    color: var(--orfeo-mid);
    background: #fafaf8;
}

.efp-table-pro .efp-date {
    width: 100%;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 5px;
    padding: 5px 7px;
    font-size: 0.84rem;
    background: #fff;
    color: var(--orfeo-dark);
}
.efp-table-pro .efp-date:focus { outline: none; border-color: var(--orfeo-accent); box-shadow: 0 0 0 2px var(--orfeo-accent-a10); }

.efp-table-pro .efp-imp {
    width: 100%;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 5px;
    padding: 5px 7px;
    text-align: right;
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-weight: 600;
    font-size: 0.84rem;
    background: #fff;
    color: var(--orfeo-dark);
}
.efp-table-pro .efp-imp:focus { outline: none; border-color: var(--orfeo-accent); box-shadow: 0 0 0 2px var(--orfeo-accent-a10); }

.efp-table-pro .efp-fp,
.efp-table-pro .efp-doc {
    width: 100%;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 5px;
    padding: 5px 7px;
    font-size: 0.82rem;
    background: #fff;
    color: var(--orfeo-dark);
}
.efp-table-pro .efp-fp:focus,
.efp-table-pro .efp-doc:focus { outline: none; border-color: var(--orfeo-accent); }

.efp-est-cell { text-align: center; }
.efp-est-badge {
    display: inline-block;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #fff;
}
.efp-est-pen { background: #6b6d78; }
.efp-est-cob { background: #4a7c59; }
.efp-est-pag { background: #4a7c59; }
.efp-est-dev { background: #c00; }

.efp-del-btn-pro {
    background: none;
    border: none;
    color: #c00;
    cursor: pointer;
    padding: 4px;
    border-radius: 4px;
    line-height: 0;
}
.efp-del-btn-pro:hover { background: #ffe0e0; }
.efp-del-btn-pro i { font-size: 16px; }

/* Resumen de cuadre */
.efp-summary {
    display: grid;
    grid-template-columns: 50px 1fr auto;
    gap: 14px;
    align-items: center;
    padding: 12px 16px;
    border-radius: 10px;
    border: 1px solid;
}
.efp-summary-ok { background: #f0faf3; border-color: #b8d8c0; color: #1a6b30; }
.efp-summary-warn { background: #fff5e6; border-color: #f4c98a; color: #8a4a00; }
.efp-summary-icon i { font-size: 36px; }
.efp-summary-ok .efp-summary-icon i { color: #2c8047; }
.efp-summary-warn .efp-summary-icon i { color: #d68500; }
.efp-summary-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
}
.efp-summary-item { display: flex; flex-direction: column; gap: 2px; }
.efp-summary-lbl {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    opacity: 0.75;
}
.efp-summary-val {
    font-size: 1.05rem;
    font-weight: 700;
}

/* ============================================================
   IVA SOPORTADO — Asiento automático (3 columnas: DED/ND/PR)
   ============================================================ */
.iva3col-grid {
    display: grid;
    grid-template-columns: 160px 1fr 1fr 1fr;
    gap: 6px;
    background: #fafaf8;
    border: 1px solid #ebe7e0;
    border-radius: 8px;
    padding: 12px;
}
.iva3col-corner { /* esquina vacía */ }
.iva3col-colhead {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 6px 10px;
    border-radius: 6px;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.iva3col-colhead i { font-size: 16px; }
.iva3col-colhead-ded { background: #e9f5ec; color: #4a7c59; border: 1px solid #b8d8c0; }
.iva3col-colhead-nd  { background: #fdebec; color: #a02828; border: 1px solid #f0b8b8; }
.iva3col-colhead-pr  { background: #fff4e6; color: #8a4a00; border: 1px solid #f4c98a; }

.iva3col-rowlbl {
    display: flex;
    align-items: center;
    padding: 8px 10px;
    background: #f0eee9;
    border: 1px solid #e2dfd8;
    border-radius: 6px;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--orfeo-mid);
}
.iva3col-cell {
    display: grid;
    grid-template-columns: 1fr 100px;
    gap: 5px;
    align-items: center;
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 6px;
    padding: 5px 6px;
}
.iva3col-cell .iva-acc-input { display: flex; }
.iva3col-cell .iva-input {
    flex: 1;
    min-width: 0;
    padding: 5px 7px;
    font-size: 0.82rem;
    border-radius: 5px 0 0 5px;
    border: 1px solid var(--orfeo-border-muted);
}
.iva3col-cell .iva-f1-btn {
    padding: 0 7px;
    font-size: 0.7rem;
    border-radius: 0 5px 5px 0;
}
.iva3col-cell .iva-acc-imp {
    width: 100%;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 5px;
    padding: 5px 7px;
    text-align: right;
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-size: 0.82rem;
    background: #fff;
    color: var(--orfeo-dark);
}
.iva3col-cell .iva-acc-imp:focus,
.iva3col-cell .iva-input:focus {
    outline: none;
    border-color: var(--orfeo-accent);
    box-shadow: 0 0 0 2px var(--orfeo-accent-a10);
}

/* Extras: Retenciones y Suplidos a anchura completa */
.iva3col-extras {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 10px;
}
.iva3col-extra-row {
    display: grid;
    grid-template-columns: 160px 240px 1fr 130px;
    gap: 8px;
    align-items: center;
    padding: 6px 10px;
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 6px;
}
.iva3col-extra-lbl {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--orfeo-mid);
}

/* ============================================================
   PANEL DE CONSULTAS (estilo Orfeo desktop)
   Encima del editor de asientos, plegable
   ============================================================ */
.cp-panel {
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #ebe7e0;
    border-radius: 8px;
    margin-bottom: 6px;
    overflow: hidden;
    transition: height 0.25s ease;
    flex-shrink: 0;
}
.cp-panel.orfeo-panel-resizing,
.editor-panel-edicion.orfeo-panel-resizing {
    transition: none !important;
}
/* Cuando está colapsado, height fijo 36px con !important: necesario porque el
   JS de resize pone height inline al arrastrar el handle y debemos vencerlo. */
.cp-panel-closed { height: 36px !important; }

/* ============================================================
   PÁGINA: Consulta de Diario (/diario)
   Sidebar de filtros + rail mensual + grid + footer con totales
   ============================================================ */
.diario-page {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    background: #fff;
    border-radius: 6px;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(14,15,20,0.04);
}
.ribbon-content:has(.diario-page) {
    overflow: hidden;
    display: flex;
    flex-direction: column;
    padding: 0.5rem 1rem;
}
.ribbon-content:has(.diario-page) > .diario-page { flex: 1 1 auto; min-height: 0; }

.diario-header {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 16px;
    gap: 8px;
    background: var(--orfeo-form-surface);
    border-bottom: 1px solid var(--orfeo-form-border);
    box-shadow: inset 0 3px 0 var(--orfeo-ochre-a12);
    flex-wrap: wrap;
}

/* Acciones en la cabecera de páginas (filtros, selects, botones de icono) */
.diario-header-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    flex-shrink: 0;
}
/* Selects e inputs dentro de headers de página nunca se comprimen */
.diario-header-actions select,
.diario-header-actions input {
    min-height: 28px;
    height: auto;
    box-sizing: border-box;
    flex-shrink: 0;
}
.diario-title {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: var(--orfeo-ochre);
    display: flex;
    align-items: center;
    gap: 8px;
}
.diario-title i { font-size: 1.1rem; color: var(--orfeo-ochre); }
.diario-iconbtn {
    width: 30px; height: 30px;
    border: 1px solid var(--orfeo-border-muted);
    background: #fff;
    border-radius: 4px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--orfeo-mid);
}
.diario-iconbtn:hover { background: var(--orfeo-accent-a08); border-color: var(--orfeo-accent); color: var(--orfeo-accent); }

.diario-body {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    overflow: hidden;
}
.diario-side {
    width: 220px;
    flex-shrink: 0;
    padding: 12px 14px;
    background: #fafaf8;
    border-right: 1px solid #ebe7e0;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.diario-side-title {
    font-size: 0.74rem;
    font-weight: 600;
    color: var(--orfeo-mid);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 4px;
}
.diario-radio {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.82rem;
    color: var(--orfeo-dark);
    cursor: pointer;
    padding: 2px 0;
}
.diario-radio input { accent-color: var(--orfeo-accent); cursor: pointer; }
.diario-side-input {
    width: 100%;
    padding: 4px 8px;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 4px;
    background: #fff;
    font-size: 0.82rem;
    color: var(--orfeo-dark);
    outline: none;
    box-sizing: border-box;
}
.diario-side-input:focus { border-color: var(--orfeo-accent); box-shadow: 0 0 0 2px var(--orfeo-accent-a13); }
.diario-side-btn {
    margin-top: 8px;
    padding: 6px 14px;
    background: #fff;
    border: 1px solid var(--orfeo-accent);
    color: var(--orfeo-accent);
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.82rem;
    font-weight: 600;
}
.diario-side-btn:hover { background: var(--orfeo-accent-a08); }
.diario-side-btn-primary {
    background: var(--orfeo-form-primary-btn);
    color: #fff;
    border-color: var(--orfeo-form-primary-btn-border);
}
.diario-side-btn-primary:hover {
    background: var(--orfeo-form-primary-btn-hover);
    color: #fff;
}
.diario-side-btn-primary > i { color: #fff !important; }

.diario-rail {
    width: 56px;
    flex-shrink: 0;
    padding: 8px 4px;
    background: var(--orfeo-form-surface);
    border-right: 1px solid #ebe7e0;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.diario-rail-btn {
    padding: 5px 4px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.78rem;
    color: var(--orfeo-dark);
    text-align: center;
    transition: background 0.12s, border-color 0.12s;
}
.diario-rail-btn:hover { background: var(--orfeo-accent-a10); border-color: var(--orfeo-accent-a18); }
.diario-rail-btn-active {
    background: var(--orfeo-accent-a18) !important;
    border-color: var(--orfeo-accent) !important;
    color: var(--orfeo-accent);
    font-weight: 600;
}
.diario-rail-btn-year {
    font-weight: 700;
    color: var(--orfeo-accent);
    margin-top: 2px;
}
.diario-rail-sep {
    height: 1px;
    background: var(--orfeo-border-muted);
    margin: 4px 8px;
    flex-shrink: 0;
}

.diario-grid-wrap {
    position: relative;
    flex: 1 1 auto;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.diario-grid-toolbar {
    flex: 0 0 auto;
    padding: 6px 8px;
    background: #fbfaf7;
    border-bottom: 1px solid var(--orfeo-border-muted);
}
.diario-grid-search-wrap {
    max-width: min(340px, 100%);
    height: 28px;
}
/* Área vacía bajo las filas (fila relleno DevExpress): siempre blanca */
.diario-grid-wrap .dxbl-grid-empty-row,
.diario-grid-wrap .dxbl-grid-empty-row > td,
.editor-panel-edicion .dxbl-grid-empty-row,
.editor-panel-edicion .dxbl-grid-empty-row > td {
    background: #fff !important;
}
.grid-somb-btn {
    position: absolute;
    top: 6px;
    right: 8px;
    z-index: 20;
    pointer-events: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    padding: 0;
    border: 1px solid var(--orfeo-form-border, #d4d4d8);
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.92);
    color: var(--orfeo-mid, #6b7280);
    cursor: pointer;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.grid-somb-btn:hover {
    background: #fff;
    border-color: var(--orfeo-accent);
    color: var(--orfeo-accent);
}
.grid-somb-btn-active {
    background: var(--orfeo-accent) !important;
    border-color: var(--orfeo-accent) !important;
    color: #fff !important;
}
.grid-somb-btn i { font-size: 1.05rem; line-height: 1; }
/* Buscador DevExpress: izquierda y ancho cómodo en todas las grillas */
.dxbl-grid > .dxbl-grid-top-panel > .dxbl-grid-search-box-container {
    margin-left: 0 !important;
    margin-right: auto !important;
    order: -1;
}
.dxbl-grid > .dxbl-grid-top-panel {
    justify-content: flex-start;
}
.dxbl-grid .dxbl-grid-search-box-container,
.diario-grid-wrap .dxbl-grid-search-box {
    max-width: min(340px, 100%);
}
.diario-grid { flex: 1 1 auto; min-height: 0; width: 100%; height: 100%; overflow: hidden; }
.diario-grid > .dxbl-scroll-viewer { flex: 1 1 auto; min-height: 0; height: 100%; }
.diario-grid .dxbl-grid-table { width: 100% !important; }
.diario-grid .dxbl-grid { width: 100% !important; }
.diario-grid tbody > tr.dxbl-grid-empty-row,
.diario-grid tbody > tr.dxbl-grid-empty-row > td { background: #fff !important; }
.diario-grid tbody > tr:hover { background: var(--orfeo-accent-a08) !important; }
.diario-grid tbody > tr > td {
    border-bottom: 1px solid #efece6 !important;
    border-right: 1px solid #efece6 !important;
    padding: 4px 8px !important;
}
.diario-grid tbody > tr > td:last-child { border-right: none !important; }
.diario-grid .dxbl-grid-header-row th {
    background: var(--orfeo-grid-head-bg) !important;
    border-bottom: 1px solid var(--orfeo-grid-head-border) !important;
    border-right: 1px solid var(--orfeo-grid-head-border) !important;
    color: var(--orfeo-grid-head-fg) !important;
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    font-weight: 700 !important;
    font-size: var(--orfeo-grid-head-fs) !important;
    letter-spacing: var(--orfeo-grid-head-ls) !important;
    text-transform: uppercase !important;
    line-height: 1.2 !important;
    padding: var(--orfeo-grid-head-pad) !important;
    position: sticky; top: 0; z-index: 2;
}
.diario-grid .dxbl-grid-header-row th:last-child { border-right: none !important; }

.diario-footer {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 16px;
    background: #e4e2dc;
    border-top: 1px solid #c8c5be;
    font-size: 0.84rem;
    color: var(--orfeo-dark);
}
.diario-footer-info { display: flex; align-items: center; gap: 14px; flex: 1 1 auto; min-width: 0; }
.diario-footer-atajos {
    font-size: 0.78rem;
    color: var(--orfeo-dark);
    flex: 0 1 auto;
    max-width: 55%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.diario-footer kbd {
    font-size: 0.72rem;
    padding: 2px 6px;
    border: 1px solid #6b7280;
    border-radius: 3px;
    background: #fff;
    color: var(--orfeo-dark);
    font-weight: 600;
    font-family: inherit;
    line-height: 1.35;
    box-shadow: 0 1px 0 rgba(0,0,0,0.12);
}
.diario-footer-moneda { color: var(--orfeo-mid); font-weight: 500; }
.diario-footer-aviso {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--orfeo-dark);
    font-size: 0.78rem;
}
.diario-footer-totales { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.diario-pager-btn {
    border: 1px solid var(--orfeo-form-border-strong);
    background: #fff;
    padding: 0 7px;
    min-width: 26px;
    cursor: pointer;
    border-radius: 3px;
    font-size: .9rem;
    line-height: 1.45;
    color: var(--orfeo-dark);
}
.diario-pager-btn:hover:not(:disabled) { background: var(--orfeo-form-surface-hover); }
.diario-pager-btn:disabled { opacity: .4; cursor: default; }
.diario-footer-lbl {
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--orfeo-mid);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.diario-footer-debe, .diario-footer-haber {
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-weight: 600;
    color: var(--orfeo-accent);
    min-width: 90px;
    text-align: right;
}
.diario-footer-cnt { color: var(--orfeo-mid); font-size: 0.78rem; margin-left: 12px; }

/* ============================================================
   PÁGINA: Extracto del Mayor (/mayor)
   Reusa estilos .diario-* y añade variantes específicas
   ============================================================ */
.mayor-side { width: 240px; }
.mayor-side .diario-side-lbl,
.diario-side-lbl {
    font-size: 0.7rem;
    color: var(--orfeo-mid);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-top: 4px;
    margin-bottom: 2px;
    display: block;
}
.mayor-nav {
    display: flex;
    gap: 4px;
    margin-top: 6px;
}
.mayor-nav-btn {
    flex: 1;
    padding: 4px 8px !important;
    font-size: 0.74rem !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
}
.mayor-grid .dxbl-grid-table { width: 100% !important; }

/* Footer con 3 filas de totales */
.mayor-totales {
    display: flex;
    flex-direction: column;
    gap: 2px;
    align-items: flex-end;
    font-size: 0.78rem;
    line-height: 1.3;
}
.mayor-tot-row {
    display: flex;
    align-items: baseline;
    gap: 14px;
}
.mayor-tot-lbl {
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--orfeo-mid);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    min-width: 130px;
    text-align: right;
}
.mayor-tot-debe, .mayor-tot-haber, .mayor-tot-saldo {
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-weight: 600;
    color: var(--orfeo-accent);
    min-width: 88px;
    text-align: right;
}
.mayor-footer { padding: 6px 16px 10px; }

/* ============================================================
   PÁGINA: Libro IVA Repercutido / Soportado (/iva/repercutido | /iva/soportado)
   ============================================================ */
.iva-page .diario-header { gap: 16px; }
.iva-search-wrap {
    flex: 1;
    max-width: 380px;
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 0 10px;
    background: #fff;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 4px;
    height: 30px;
}
.iva-search-wrap i { color: var(--orfeo-mid); font-size: 14px; }
.iva-search {
    flex: 1;
    border: none;
    outline: none;
    background: transparent;
    font-size: 0.84rem;
    color: var(--orfeo-dark);
}
.iva-search-wrap:focus-within { border-color: var(--orfeo-accent); box-shadow: 0 0 0 2px var(--orfeo-accent-a13); }

.libro-iva-dxgrid .dxbl-grid-table { width: 100% !important; }

/* DevExpress (blazing-berry): fila enfocada usa --dxbl-grid-focus-color:#fff; anular en grillas Orfeo */
.diario-grid-wrap .dxbl-grid {
    --dxbl-grid-focus-color: var(--orfeo-dark);
    --dxbl-grid-selection-focus-color: var(--orfeo-dark);
    --dxbl-grid-selection-color: var(--orfeo-dark);
}

.iva-page--repercutido .diario-title i { color: #3b8a3b !important; }
.iva-page--soportado .diario-title i { color: #5c6370 !important; }

.iva-footer {
    padding: 8px 16px;
    background: var(--orfeo-form-surface);
    border-top: 1px solid #ebe7e0;
    font-size: 0.82rem;
    color: var(--orfeo-dark);
}
.iva-totales {
    display: flex;
    align-items: baseline;
    gap: 18px;
}
.iva-tot {
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-weight: 600;
    color: var(--orfeo-accent);
    min-width: 78px;
    text-align: right;
}
.iva-tot-importe { color: #3b8a3b; }

/* ============================================================
   PÁGINA: Plan de cuentas (/cuentas)
   ============================================================ */
.cuentas-page .diario-header { gap: 16px; }
.cuentas-page .diario-body { flex: 1 1 auto; min-height: 0; overflow: hidden; }
.cuentas-page .cuentas-grid-wrap {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.cuentas-page .cuentas-grid-wrap .diario-grid.dxbl-grid { height: 100% !important; min-height: 0; flex: 1 1 auto; }
.cuentas-page .cuentas-grid-wrap .dxbl-scroll-viewer { flex: 1 1 auto; min-height: 0; }
.cuentas-grupos {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 4px;
}
.cuentas-grupo-btn {
    padding: 6px 4px;
    background: #fff;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--orfeo-mid);
    text-align: center;
    transition: all 0.12s;
}
.cuentas-grupo-btn:hover { background: var(--orfeo-accent-a08); border-color: var(--orfeo-accent); color: var(--orfeo-accent); }
.cuentas-grupo-btn.active {
    background: var(--orfeo-accent);
    border-color: var(--orfeo-accent);
    color: #fff;
}
/* Badge para el tipo de cuenta */
/* ══════════════════════════════════════════════════════════════════
   TabBar MDI — pestañas estilo Orfeo desktop (FormPrincipal)
   ══════════════════════════════════════════════════════════════════ */
.mdi-tabbar {
    display: flex;
    align-items: stretch;
    gap: 1px;
    background: linear-gradient(180deg, #e8e8e8 0%, #dcdcdc 100%);
    border-bottom: 1px solid #b8b8b8;
    padding: 0 6px;
    min-height: 28px;
    overflow-x: auto;
    overflow-y: hidden;
    white-space: nowrap;
    user-select: none;
}
.mdi-tabbar::-webkit-scrollbar { height: 0; display: none; }

.mdi-tab {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px 4px 12px;
    background: #f0f0f0;
    border: 1px solid #c0c0c0;
    border-bottom: none;
    border-radius: 4px 4px 0 0;
    cursor: pointer;
    font-size: 0.85rem;
    color: #555;
    margin-top: 4px;
    max-width: 220px;
    overflow: hidden;
    transition: background 0.1s, color 0.1s, border-color 0.1s;
}
.mdi-tab:hover { background: #f8f8f8; color: var(--orfeo-ochre); border-color: var(--orfeo-ochre-border); }

.mdi-tab-active {
    background: #fff !important;
    color: var(--orfeo-ochre);
    border-color: var(--orfeo-ochre, #c0614a);
    border-bottom: 2px solid #fff;
    margin-bottom: -1px;
    font-weight: 600;
    z-index: 2;
    position: relative;
    box-shadow: inset 0 2px 0 var(--orfeo-ochre);
}

.mdi-tab-icon {
    font-size: 0.95rem;
    color: var(--orfeo-accent, #5c6370);
    flex-shrink: 0;
}
.mdi-tab-active .mdi-tab-icon,
.mdi-tab:hover .mdi-tab-icon { color: var(--orfeo-ochre); }

.mdi-tab-title {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 160px;
}

.mdi-tab-close {
    background: transparent;
    border: none;
    color: #888;
    cursor: pointer;
    padding: 1px 4px;
    border-radius: 50%;
    line-height: 1;
    font-size: 0.85rem;
    margin-left: 4px;
    flex-shrink: 0;
}
.mdi-tab-close:hover {
    background: #c00;
    color: #fff;
}

/* ══════════════════════════════════════════════════════════════════
   Liquidaciones IVA (/iva/liquidaciones)
   ══════════════════════════════════════════════════════════════════ */
.liq-list-popup .vaux-popup-content { padding: 0; }
.liq-badge {
    display: inline-block;
    padding: 1px 8px;
    border-radius: 3px;
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.liq-badge-borrador  { background: var(--orfeo-form-surface-hover); color: var(--orfeo-accent); }
.liq-badge-calculada { background: #e2e8f0; color: #334155; }
.liq-badge-cerrada   { background: #d1fae5; color: #065f46; }
.liq-badge-anulada   { background: #fee2e2; color: #991b1b; }

/* Editor popup */
.liq-editor-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.4);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 200;
}
.liq-editor-popup {
    background: #fff;
    border-radius: 6px;
    width: 1000px;
    max-width: 96vw;
    max-height: 92vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 8px 32px rgba(0,0,0,0.3);
    overflow: hidden;
}
.liq-editor-titlebar {
    display: flex;
    align-items: center;
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%);
    border-bottom: 1px solid var(--orfeo-form-border-strong);
    padding: 6px 12px;
    font-weight: 600;
    color: #fff;
}
.liq-editor-titlebar > span { flex: 1; }
.liq-editor-body {
    flex: 1;
    display: flex;
    overflow: hidden;
}
.liq-editor-main {
    flex: 1;
    padding: 14px 16px;
    overflow: auto;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.liq-editor-row {
    display: flex;
    align-items: center;
    gap: 10px;
}
.liq-editor-lbl {
    font-size: 0.85rem;
    color: var(--orfeo-mid);
    min-width: 100px;
    flex-shrink: 0;
    white-space: nowrap;
}
.liq-editor-input {
    border: 1px solid var(--orfeo-form-border-strong);
    border-radius: 4px;
    padding: 4px 8px;
    font-size: 0.88rem;
    background: #fff;
    min-width: 130px;
    min-height: 28px;
    box-sizing: border-box;
    line-height: 1.4;
}
select.liq-editor-input {
    height: auto;
    min-height: 28px;
    padding-top: 3px;
    padding-bottom: 3px;
    cursor: pointer;
    appearance: auto;
}
.liq-editor-input:focus { outline: none; border-color: var(--orfeo-accent); box-shadow: 0 0 0 2px var(--orfeo-accent-a10); }
.liq-editor-grow { flex: 1; min-width: 0; }
.liq-editor-tbl { margin: 6px 0; min-height: 200px; }
.liq-editor-tbl tbody tr.liq-tbl-total {
    background: var(--orfeo-form-surface-hover) !important;
    font-weight: 600;
}
.liq-editor-tbl tbody tr.liq-bloque-h td {
    border-top: 2px solid var(--orfeo-form-border-strong);
}
.liq-editor-tbl tbody tr.liq-manual {
    background: var(--orfeo-form-surface);
    color: var(--orfeo-dark);
}
.liq-editor-tbl tbody tr.liq-manual:hover { background: var(--orfeo-form-surface-hover) !important; }

.liq-editor-link { color: var(--orfeo-accent); font-size: 0.82rem; text-decoration: none; }
.liq-editor-link:hover { text-decoration: underline; }
.liq-editor-link[disabled] { color: #aaa; cursor: not-allowed; }

.liq-editor-fila-filtros {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px 16px;
    padding: 8px;
    background: #fafafa;
    border-radius: 4px;
}
.liq-editor-fila-filtros .liq-editor-lbl { min-width: 90px; }
.liq-editor-fila-filtros .liq-editor-input { flex: 1; }

.liq-editor-msg {
    margin-top: 8px;
    padding: 6px 10px;
    border-radius: 3px;
    font-size: 0.85rem;
}
.liq-editor-msg-ok    { background: #d1fae5; color: #065f46; }
.liq-editor-msg-error { background: #fee2e2; color: #991b1b; }

.liq-editor-side {
    width: 220px;
    background: var(--orfeo-form-surface);
    border-left: 1px solid var(--orfeo-form-border);
    padding: 14px 14px;
    overflow: auto;
}
.liq-editor-side-h {
    font-weight: 600;
    color: var(--orfeo-dark);
    border-bottom: 2px solid var(--orfeo-accent);
    padding-bottom: 4px;
    margin-bottom: 8px;
}
.liq-editor-saldos-list {
    margin-top: 14px;
    border-top: 1px dashed var(--orfeo-form-border);
    padding-top: 10px;
    font-size: 0.85rem;
}
.liq-editor-saldo-row {
    display: flex;
    justify-content: space-between;
    padding: 2px 0;
}

.liq-editor-foot {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border-top: 1px solid var(--orfeo-form-border);
    background: var(--orfeo-form-surface);
}
.liq-editor-btn {
    padding: 6px 14px;
    border: 1px solid var(--orfeo-form-border-strong);
    background: #fff;
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.85rem;
}
.liq-editor-btn:hover:not(:disabled) { background: var(--orfeo-form-surface-hover); border-color: var(--orfeo-accent); }
.liq-editor-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.liq-editor-btn-primary { background: var(--orfeo-accent); color: #fff; border-color: var(--orfeo-accent); }
.liq-editor-btn-primary:hover:not(:disabled) { background: var(--orfeo-accent-h); border-color: var(--orfeo-accent-h); }
.liq-editor-btn-ghost { background: transparent; border-color: #ddd; color: #555; }

/* ══════════════════════════════════════════════════════════════════
   Ventana auxiliar (/ventana-auxiliar) — popup multitab estilo desktop
   ══════════════════════════════════════════════════════════════════ */
/* Versión por defecto: dentro del flujo de la tab (sin overlay).
   Si lleva la clase extra `vaux-popup-overlay` se centra y flota como modal. */
.vaux-popup {
    background: #f8f8f8;
    border: 1px solid #c0c0c0;
    border-radius: 4px;
    box-shadow: 0 1px 4px rgba(0,0,0,0.08);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    flex: 1;
    min-height: 0;
    margin: 0;
}

/* Backdrop para invocaciones tipo popup modal (Ventana auxiliar, etc.) */
.vaux-popup-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.35);
    z-index: 250;
    display: flex;
    align-items: stretch;
    justify-content: stretch;
    padding: 30px;
}
.vaux-popup-overlay {
    width: 100%;
    height: 100%;
    max-width: none;
    box-shadow: 0 8px 32px rgba(0,0,0,0.35);
    border-radius: 6px;
}
.vaux-popup-titlebar {
    display: flex;
    align-items: center;
    gap: 8px;
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%);
    border-bottom: 1px solid var(--orfeo-form-border-strong);
    padding: 4px 10px;
    color: #fff;
    font-size: 0.86rem;
    font-weight: 600;
}
.vaux-popup-titlebar > i { font-size: 1rem; color: #fff; opacity: 0.85; }
.vaux-popup-titlebar > span { flex: 1; text-align: center; }
.vaux-popup-close {
    background: transparent;
    border: none;
    cursor: pointer;
    color: #fff;
    font-size: 1rem;
    padding: 2px 6px;
    border-radius: 4px;
    opacity: 0.8;
    transition: opacity 0.15s, background 0.15s;
}
.vaux-popup-close:hover { background: rgba(255,255,255,0.2); opacity: 1; }

/* Ribbon interno con tabs */
.vaux-tab-ribbon {
    display: flex;
    align-items: stretch;
    background: #fafafa;
    border-bottom: 1px solid #d8d8d8;
    padding: 6px 0 0;
    flex-wrap: wrap;
    position: relative;
}
.vaux-tab-section {
    display: flex;
    gap: 2px;
    padding: 0 8px;
    border-right: 1px solid #e0e0e0;
}
.vaux-tab-section:last-of-type { border-right: none; }
.vaux-tab-section-h {
    position: absolute;
    bottom: 0;
    font-size: 0.65rem;
    text-transform: uppercase;
    color: #888;
    text-align: center;
    padding: 0 8px;
    pointer-events: none;
}
/* Coloca cada section-h debajo de su section */
.vaux-tab-ribbon { padding-bottom: 14px; }

.vaux-tab {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 3px;
    padding: 4px 8px 6px;
    cursor: pointer;
    color: #333;
    font-size: 0.7rem;
    line-height: 1.1;
    min-width: 56px;
    gap: 2px;
}
.vaux-tab span { text-align: center; }
.vaux-tab:hover:not(:disabled) {
    background: #fff;
    border-color: var(--orfeo-accent);
}
.vaux-tab-active {
    background: #fff;
    border-color: var(--orfeo-accent);
    box-shadow: inset 0 -2px 0 var(--orfeo-accent);
}
.vaux-tab:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

/* Cuerpo */
.vaux-popup-body {
    flex: 1;
    display: flex;
    overflow: hidden;
    background: #fff;
}
.vaux-popup-side {
    width: 200px;
    background: #fafafa;
    border-right: 1px solid #e0e0e0;
    padding: 14px 16px;
    overflow-y: auto;
    font-size: 0.85rem;
}
.vaux-popup-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.vaux-popup-h {
    display: flex;
    align-items: center;
    padding: 10px 16px;
    border-bottom: 1px solid #ececec;
    background: #fcfcfc;
    gap: 16px;
}
.vaux-popup-h h3 {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: #333;
}
.vaux-popup-search {
    margin-left: auto;
    width: 280px;
    padding: 5px 10px;
    border: 1px solid #d0d0d0;
    border-radius: 3px;
    font-size: 0.85rem;
}
.vaux-popup-search:focus {
    outline: none;
    border-color: var(--orfeo-accent);
}
.vaux-popup-content {
    flex: 1;
    overflow: auto;
    padding: 0;
}

/* Tabla de la consulta */
.vaux-tbl {
    width: 100%;
    margin: 0;
    font-size: 0.84rem;
}
.vaux-tbl thead th {
    position: sticky;
    top: 0;
    z-index: 1;
}
.vaux-tbl-sombreado tbody tr:nth-child(even),
.vaux-tbl-sombreado tbody tr:nth-child(even) td { background: var(--orfeo-grid-sombreado) !important; }
.vaux-tbl tbody tr { cursor: pointer; }
.vaux-tbl tbody tr:hover { background: var(--orfeo-form-surface-hover) !important; }
.vaux-row-sel,
.vaux-row-sel > td { background: var(--orfeo-grid-seleccion) !important; }
.vd-row-sel > td { background: var(--orfeo-grid-seleccion) !important; }

/* Footer del popup */
.vaux-popup-foot {
    display: flex;
    align-items: center;
    padding: 6px 16px;
    border-top: 1px solid #d8d8d8;
    background: #f4f4f4;
    font-size: 0.85rem;
    color: #333;
}

/* ══════════════════════════════════════════════════════════════════
   Calendario fiscal (/calendario-fiscal)
   ══════════════════════════════════════════════════════════════════ */
.calfiscal-content { padding: 16px 24px; }
.calfiscal-card {
    background: #fff;
    border: 1px solid #e8e8e8;
    border-left-width: 4px;
    border-radius: 6px;
    padding: 12px 14px;
    text-align: center;
}
.calfiscal-card .liq-card-h { margin-bottom: 8px; text-align: left; }
.calfiscal-bignum {
    font-family: 'Inconsolata', monospace;
    font-size: 2.2rem;
    font-weight: 700;
    line-height: 1;
}
.calfiscal-vencidos   { border-left-color: #c00;   color: #c00; }
.calfiscal-proximos   { border-left-color: var(--orfeo-accent); color: var(--orfeo-accent); }
.calfiscal-pendientes { border-left-color: #5c6370; color: #1e293b; }
.calfiscal-completos  { border-left-color: #2e7d32; color: #2e7d32; }

.calfiscal-trim-h {
    font-size: 0.92rem;
    color: #555;
    margin: 16px 0 8px;
    padding-bottom: 4px;
    border-bottom: 2px solid var(--orfeo-form-border-strong);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.calfiscal-tbl tbody td { font-size: 0.88rem; }
.calfiscal-tbl .calfiscal-row-vencido  { background: #fef2f2; }
.calfiscal-tbl .calfiscal-row-proximo  { background: var(--orfeo-form-surface-hover); }
.calfiscal-tbl .calfiscal-row-hoy      { background: var(--orfeo-form-surface-selected); font-weight: 600; }

.calfiscal-modelo {
    display: inline-block;
    background: var(--orfeo-form-surface-hover);
    color: var(--orfeo-accent);
    padding: 1px 8px;
    border-radius: 3px;
    font-family: 'Inconsolata', monospace;
    font-weight: 700;
    font-size: 0.82rem;
}

.calfiscal-badge {
    display: inline-block;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    text-align: center;
    line-height: 28px;
    font-size: 1.1rem;
}
.calfiscal-badge-vencido { background: #fef2f2; color: #c00; }
.calfiscal-badge-proximo { background: var(--orfeo-form-surface-hover); color: var(--orfeo-accent); }
.calfiscal-badge-hoy     { background: var(--orfeo-form-surface-selected); color: var(--orfeo-accent); animation: calfiscal-pulse 1.6s infinite; }
.calfiscal-badge-futuro  { background: #f1f5f9; color: #5c6370; }
@keyframes calfiscal-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.1); } }

/* ══════════════════════════════════════════════════════════════════
   Balance / Sumas y Saldos (/balance)
   ══════════════════════════════════════════════════════════════════ */
.balance-tbl { margin: 12px; min-width: calc(100% - 24px); }
.balance-tbl .bal-deudor   { color: #4a7c59; }
.balance-tbl .bal-acreedor { color: #5c6370; }
.balance-tbl tbody td.iva-mono { font-family: 'Inconsolata', monospace; }

/* ══════════════════════════════════════════════════════════════════
   Auxiliares (Tareas, Notas, Contactos, Alarmas)
   ══════════════════════════════════════════════════════════════════ */
.tareas-content, .notas-content, .contactos-content, .alarmas-content { padding: 12px; }

/* Tareas */
.tareas-tbl tbody tr.tarea-completada td { color: #999; text-decoration: line-through; }
.tareas-tbl tbody tr.tarea-vencida { background: #fef2f2; }
.tarea-pri {
    display: inline-block;
    padding: 1px 6px;
    border-radius: 3px;
    font-size: 0.66rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.tarea-pri-0 { background: #f0f0f0; color: #888; }
.tarea-pri-1 { background: #e2e8f0; color: #334155; }
.tarea-pri-2 { background: var(--orfeo-form-surface-selected); color: var(--orfeo-accent); }
.tarea-pri-3 { background: #fecaca; color: #c00; }

/* Notas estilo post-it */
.notas-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 14px;
}
.nota-card {
    border-radius: 4px;
    padding: 12px 14px;
    box-shadow: 0 2px 6px rgba(0,0,0,0.1);
    cursor: pointer;
    position: relative;
    min-height: 130px;
    display: flex;
    flex-direction: column;
    transition: transform 0.1s, box-shadow 0.1s;
}
.nota-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.15); }
.nota-color-amarillo { background: #fff7c2; border: 1px solid #f0d860; }
.nota-color-verde    { background: #d4f4dc; border: 1px solid #85d098; }
.nota-color-azul     { background: #d9ecf9; border: 1px solid #8bc1e3; }
.nota-color-rosa     { background: #fad8e3; border: 1px solid #e090a8; }
.nota-color-blanco   { background: #fafafa; border: 1px solid #d0d0d0; }
.nota-pin { position: absolute; top: 6px; right: 6px; color: #c00; font-size: 1.05rem; }
.nota-titulo { font-weight: 700; margin-bottom: 6px; padding-right: 18px; }
.nota-contenido { flex: 1; font-size: 0.88rem; white-space: pre-wrap; word-break: break-word; }
.nota-pie {
    margin-top: 8px;
    display: flex;
    justify-content: space-between;
    font-size: 0.72rem;
    color: rgba(0,0,0,0.5);
}
.nota-borrar {
    background: transparent;
    border: none;
    cursor: pointer;
    color: rgba(0,0,0,0.4);
}
.nota-borrar:hover { color: #c00; }
.nota-color-pick {
    width: 26px;
    height: 26px;
    border: 2px solid transparent;
    border-radius: 50%;
    cursor: pointer;
}
.nota-color-pick.selected { border-color: var(--orfeo-accent); }

/* Alarmas */
.alarmas-tbl tbody tr.alarma-pasada { background: #fef2f2; }
.alarmas-tbl tbody tr.alarma-inactiva td { color: #999; }

/* Configuración entrada apuntes */
.cfg-content { padding: 14px 18px; }
.cfg-tab-btn {
    background: #fff;
    border: 1px solid #d8d8d8;
    border-radius: 4px;
    padding: 5px 14px;
    cursor: pointer;
    font-size: 0.85rem;
    color: #444;
    margin-left: 6px;
}
.cfg-tab-btn:hover { background: #fafafa; border-color: #aaa; }
.cfg-tab-btn.active {
    background: var(--orfeo-accent);
    color: #fff;
    border-color: var(--orfeo-accent);
}
.series-tecla {
    display: inline-block;
    background: var(--orfeo-form-surface-hover);
    color: var(--orfeo-accent);
    padding: 2px 8px;
    border-radius: 3px;
    font-family: 'Inconsolata', monospace;
    font-weight: 700;
    font-size: 0.82rem;
}

/* Modelos AEAT */
.m347-clave, .m190-clave {
    display: inline-block;
    padding: 1px 8px;
    border-radius: 3px;
    font-family: 'Inconsolata', monospace;
    font-weight: 700;
    font-size: 0.85rem;
}
.m347-clave-A { background: #fdf8f6; color: #5c6370; }
.m347-clave-B { background: #f5fbf5; color: #4a7c59; }
.m190-clave   { background: #f5f3ff; color: #6d28d9; }

/* Departamentos / Utilidades */
.dep-content { padding: 12px; }
.utilidades-content { padding: 16px 20px; }
.util-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 14px;
}
.util-card {
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 8px;
    padding: 16px 18px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.util-card-h {
    font-weight: 600;
    color: #333;
    font-size: 0.95rem;
}
.util-card-h i { font-size: 1.2rem; vertical-align: middle; margin-right: 6px; }
.util-card-desc {
    flex: 1;
    margin: 0;
    font-size: 0.85rem;
    color: var(--orfeo-mid);
    line-height: 1.4;
}

/* Inmovilizado (detalle en bloque .inmo-page más abajo) */
.inmo-content { padding: 14px 16px; }
.inmo-tbl tbody tr.inmo-baja { background: #fef2f2; color: #999; }
.inmo-tbl tbody tr.inmo-sel { background: var(--orfeo-grid-seleccion) !important; cursor: pointer; }
.inmo-tbl tbody tr { cursor: pointer; }
.inmo-ribbon-check { align-items: center; min-height: 52px; }
.inmo-badge-baja {
    display: inline-block;
    margin-left: 8px;
    padding: 1px 6px;
    border-radius: 3px;
    font-size: 0.66rem;
    font-weight: 700;
    background: #fecaca;
    color: #c00;
}

/* Saldos mensuales / Saldos por columnas */
.saldos-mens-tbl tbody td { padding: 5px 12px; }
.saldos-mens-tbl tbody tr.saldos-mens-special { background: var(--orfeo-form-surface); font-style: italic; color: #555; }
.saldos-mens-tbl tbody tr.saldos-mens-totales {
    background: var(--orfeo-form-surface-hover) !important;
    border-top: 2px solid var(--orfeo-form-border-strong);
    font-style: normal;
}

.saldos-cols-tbl thead th { font-size: var(--orfeo-grid-head-fs); padding: var(--orfeo-grid-head-pad); }
.saldos-cols-tbl tbody td { padding: 4px 6px; font-size: 0.78rem; }
.saldos-cols-tbl .saldos-cols-total { background: var(--orfeo-form-surface-hover); }
.saldos-cols-tbl .saldos-cols-neg { color: #c00; }

/* Balance sumas y saldos: misma tipografía/tamaño que saldos por columnas */
.balance-page .balance-sum-tbl { width: 100%; margin: 0; font-size: 0.78rem; }
.balance-page .balance-sum-tbl thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    font-size: 0.72rem;
    padding: 6px 6px;
    font-family: inherit;
    font-weight: 700;
}
.balance-page .balance-sum-tbl tbody td {
    padding: 4px 6px;
    font-size: 0.78rem;
    font-family: 'Inconsolata', monospace;
}
.balance-page .balance-sum-tbl tbody td:nth-child(2) { font-family: inherit; }
.balance-page .balance-sum-tbl tbody td.iva-mono {
    font-family: 'Inconsolata', monospace;
    font-weight: 400;
    letter-spacing: 0;
}
.balance-page .balance-sum-tbl tbody tr { cursor: pointer; }
.balance-page .balance-sum-tbl tbody tr:hover { background: var(--orfeo-form-surface-hover); }
.balance-page .balance-sum-tbl tbody tr.balance-row-agg { background: var(--orfeo-form-surface); font-style: italic; }
.balance-page .balance-sum-tbl .bal-saldo { font-weight: 600; }
.balance-page .balance-sum-tbl .bal-saldo-neg { color: #c00; }

/* Saldos por columnas (rejilla compacta — no cambiar) */
.balance-tbl-desktop {
    width: 100%;
    margin: 0;
    font-size: 0.86rem;
}
.balance-tbl-desktop thead th {
    background: var(--orfeo-grid-head-bg);
    border-bottom: 2px solid var(--orfeo-grid-head-border);
    font-size: var(--orfeo-grid-head-fs);
    text-transform: uppercase;
    letter-spacing: var(--orfeo-grid-head-ls);
    color: var(--orfeo-grid-head-fg);
    font-weight: var(--orfeo-grid-head-fw);
    padding: var(--orfeo-grid-head-pad);
    line-height: 1.2;
    position: sticky;
    top: 0;
}
.balance-tbl-desktop tbody td {
    padding: 4px 10px;
    border-bottom: 1px solid #f0f0f0;
    font-family: 'Inconsolata', monospace;
}
.balance-tbl-desktop tbody td:nth-child(2) { font-family: inherit; }
.balance-tbl-desktop tbody tr:hover { background: var(--orfeo-form-surface-hover); cursor: pointer; }

/* Popups informes: cabeceras de cuenta / total ocre; columnas crema (sustituye azul #1a3a5c). */
.mex-cuenta-hdr,
.mex-grand-total,
.emi-header,
.ffac-header,
[class$="-cuenta-hdr"],
[class$="-grp-hdr"],
[class$="-grp-row"] {
    background: var(--orfeo-report-group-bg) !important;
    color: #fff !important;
}
[class$="-tbl"]:not(.hm-w-tbl) thead th,
.lo-tbl thead th,
.lo-tbl th {
    background: var(--orfeo-report-thead-bg) !important;
    color: var(--orfeo-dark) !important;
    border-bottom: 1px solid #e8ddd4;
}
[class$="-total"] td,
.mex-subtotal td {
    background: var(--orfeo-report-subtotal-bg) !important;
    border-top-color: var(--orfeo-ochre) !important;
}
.lo-tbl tfoot td {
    background: var(--orfeo-report-subtotal-bg);
}
[class$="-tbl"]:not(.hm-w-tbl) tbody tr:hover td,
.lo-tbl tbody tr:hover td {
    background: var(--orfeo-ochre-a10) !important;
}
[class$="-rb-btn"]:hover,
.my-btn:hover,
.lst-btn:hover,
.m347-btn:hover,
.inv-btn:hover,
.sii-btn:hover,
.aeat-rb-btn:hover {
    background: var(--orfeo-ochre-a12) !important;
    border-color: var(--orfeo-ochre-border) !important;
}
[class$="-alt"] td,
[class$="-row-alt"] td,
.popup-host-content [class*="-alt"] td {
    background: var(--orfeo-report-row-alt) !important;
}
.popup-host-content [class*="-side-h"],
.popup-host-content [class*="-grp-h"],
.popup-host-content [class*="-form-h"],
.popup-host-content [class*="-config-h"] {
    color: var(--orfeo-ochre) !important;
    border-bottom-color: #e8ddd4 !important;
}
.popup-host-content .emi-header,
.popup-host-content .ffac-header {
    background: var(--orfeo-report-group-bg) !important;
}
.popup-host-content [class*="-info-banner"],
.popup-host-content [class*="-info-banner"] {
    background: var(--orfeo-ochre-a10) !important;
    border-color: var(--orfeo-ochre-border) !important;
}
/* Listados oficiales (mayor, diario, IVA): iconos cinta y saldo anterior */
.diario-page [style*="color:#1f5fbf"],
.diario-page [style*="color:#0078d4"],
.diario-page [style*="color:#0369a1"] {
    color: var(--orfeo-ochre) !important;
}
.diario-page tr[style*="background:#f0f4ff"] {
    background: var(--orfeo-ochre-a10) !important;
}
.diario-page h3[style*="border-bottom"] {
    border-bottom-color: var(--orfeo-ochre) !important;
    color: var(--orfeo-dark);
}

/* Emisión informes (Sumas/Saldos, Diario, Asientos, IVA, etc.) */
.popup-host-content .emi-nav,
.popup-host-content .ivaeml-nav {
    background: #f5f1ea !important;
    border-right: 1px solid #e8ddd4 !important;
}
.popup-host-content .emi-nav-btn,
.popup-host-content .ivaeml-nav-btn {
    color: #5c6370 !important;
    border-left: 3px solid transparent;
}
.popup-host-content .emi-nav-btn:hover,
.popup-host-content .ivaeml-nav-btn:hover {
    background: var(--orfeo-ochre-a10) !important;
    color: var(--orfeo-dark) !important;
}
.popup-host-content .emi-nav-active,
.popup-host-content .ivaeml-nav-active {
    background: var(--orfeo-ochre-a12) !important;
    color: var(--orfeo-dark) !important;
    border-left-color: var(--orfeo-ochre) !important;
    font-weight: 600 !important;
}
.popup-host-content .emi-nav-sep,
.popup-host-content .ivaeml-nav-sep {
    background: #e8ddd4 !important;
    border-top-color: #e8ddd4 !important;
}
.popup-host-content .emi-section-title,
.popup-host-content .ivaeml-section-title {
    color: var(--orfeo-ochre) !important;
}
.popup-host-content .emi-content input[type="checkbox"],
.popup-host-content .emi-content input[type="radio"],
.popup-host-content .emi-chk input,
.popup-host-content .ivaeml-col-left input[type="checkbox"],
.popup-host-content .ivaeml-col-right input[type="checkbox"],
.popup-host-content .ivaeml-col-left input[type="radio"],
.popup-host-content .ivaeml-col-right input[type="radio"],
.popup-host-content .ivaeml-chk input,
.popup-host-content .ivaeml-radio-lbl input {
    accent-color: var(--orfeo-ochre);
}
.popup-host-content .emi-btn-primary,
.popup-host-content .ivaeml-btn-primary {
    background: var(--orfeo-ochre) !important;
    border-color: var(--orfeo-ochre-hover) !important;
}
.popup-host-content .emi-btn-primary:hover:not(:disabled),
.popup-host-content .ivaeml-btn-primary:hover:not(:disabled) {
    background: var(--orfeo-ochre-hover) !important;
}
.popup-host-content .ivaeml-link,
.popup-host-content .ivaeml-interval-btn {
    color: var(--orfeo-ochre) !important;
}
.popup-host-content .emi-header i,
.popup-host-content .ivaeml-header i {
    color: #fff !important;
    opacity: 0.92;
}

/* Balance estilo desktop Orfeo */
.balance-side .balance-side-mini {
    border: 1px solid #ccc;
    border-radius: 3px;
    padding: 1px 4px;
    font-size: 0.8rem;
    margin-left: 4px;
}
/* Select en línea propia: ocupa todo el ancho disponible con sangría */
.balance-side .balance-side-full {
    margin-left: 22px;
    width: calc(100% - 22px);
    box-sizing: border-box;
}
.balance-rail {
    width: 36px;
    border-right: 1px solid #e0e0e0;
    background: #fafafa;
}
.balance-rail .diario-rail-btn {
    width: 100%;
    padding: 3px 0;
    font-size: 0.78rem;
}

/* Footer saldos columnas (apilado como antes) */
.balance-footer {
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
}

/* Footer balance: totales a la derecha, atajos a la izquierda (una sola fila) */
.balance-footer-with-totales {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: nowrap;
}
.balance-footer-with-totales .balance-totales {
    display: flex;
    flex-direction: column;
    gap: 2px;
    align-items: flex-end;
    flex: 0 0 auto;
}
.balance-tot-row {
    display: grid;
    grid-template-columns: auto 110px 110px 110px;
    gap: 14px;
    font-size: 0.85rem;
}
.balance-tot-row > span:first-child { color: var(--orfeo-mid); }
.balance-tot-row .iva-mono { text-align: right; font-weight: 600; }

kbd,
.orfeo-kbd {
    display: inline-block;
    background: #eef1f5 !important;
    color: #1f2937 !important;
    border: 1px solid #9ca3af !important;
    border-bottom-width: 2px !important;
    border-radius: 4px;
    padding: 1px 7px;
    font-size: 0.78rem;
    font-family: 'Segoe UI', system-ui, sans-serif;
    font-weight: 600;
    line-height: 1.35;
    box-shadow: 0 1px 0 rgba(255, 255, 255, .85) inset;
    vertical-align: baseline;
}
.atajos-popup td kbd { margin: 0 1px; }
.atajos-popup td { vertical-align: middle; }

/* ══════════════════════════════════════════════════════════════════
   Liquidación IVA — Modelo 303 (/iva/liquidacion)
   ══════════════════════════════════════════════════════════════════ */
.liq-trim-btn {
    display: block;
    width: 100%;
    padding: 6px 8px;
    margin-top: 4px;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
    color: #333;
    text-align: left;
    cursor: pointer;
    font-size: 0.83rem;
}
.liq-trim-btn:hover { background: #fafafa; border-color: #aaa; }
.liq-trim-active {
    background: var(--orfeo-accent);
    color: #fff;
    border-color: var(--orfeo-accent);
}
.liq-trim-active:hover { background: var(--orfeo-accent); border-color: var(--orfeo-accent); }

.liq-content {
    padding: 16px 20px;
    overflow: auto;
    height: 100%;
}

.liq-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    margin-bottom: 24px;
}
@media (max-width: 1100px) {
    .liq-cards { grid-template-columns: 1fr; }
}

.liq-card {
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 8px;
    padding: 14px 16px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.04);
}
.liq-card-h {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--orfeo-mid);
    margin-bottom: 10px;
    font-weight: 600;
}
.liq-card-h i { font-size: 1.1rem; vertical-align: middle; margin-right: 4px; }

.liq-card-row {
    display: flex;
    justify-content: space-between;
    padding: 4px 0;
    font-size: 0.92rem;
}
.liq-card-row strong { font-family: 'Inconsolata', monospace; }
.liq-card-foot {
    border-top: 1px solid #f0f0f0;
    margin-top: 8px;
    padding-top: 8px;
    font-size: 0.78rem;
    color: var(--orfeo-mid);
}
.liq-card-link { color: var(--orfeo-accent); text-decoration: none; }
.liq-card-link:hover { text-decoration: underline; }

.liq-card-rep { border-left: 4px solid #4a7c59; }
.liq-card-sop { border-left: 4px solid #5c6370; }

.liq-card-result {
    color: #fff;
    text-align: center;
    border: none;
}
.liq-card-result .liq-card-h { color: rgba(255,255,255,0.85); }
.liq-card-ingresar { background: linear-gradient(135deg, #d4716e 0%, #b65a57 100%); }
.liq-card-devolver { background: linear-gradient(135deg, #4f8b5e 0%, #3b7148 100%); }
.liq-result-num {
    font-family: 'Inconsolata', monospace;
    font-size: 2rem;
    font-weight: 700;
    margin: 10px 0 4px;
}
.liq-result-lbl {
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 12px;
}

.liq-detalle-h {
    font-size: 0.95rem;
    color: #333;
    margin: 0 0 12px;
    padding-bottom: 6px;
    border-bottom: 1px solid #e8e8e8;
}

.liq-tbl-wrap { background: #fff; border: 1px solid #e8e8e8; border-radius: 6px; padding: 12px 14px; }
.liq-tbl-title { font-size: 0.85rem; color: #555; margin: 0 0 10px; font-weight: 600; }
.liq-tbl-title i { vertical-align: middle; margin-right: 4px; }

.liq-tbl {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.83rem;
    font-family: var(--font-sans);
}
.liq-tbl th, .liq-tbl td {
    border-bottom: 1px solid var(--orfeo-form-border);
    text-align: left;
}
.liq-tbl td {
    padding: 4px 8px;
}
.liq-tbl th {
    background: var(--orfeo-grid-head-bg);
    color: var(--orfeo-grid-head-fg);
    font-weight: var(--orfeo-grid-head-fw);
    font-size: var(--orfeo-grid-head-fs);
    text-transform: uppercase;
    letter-spacing: var(--orfeo-grid-head-ls);
    border-bottom: 2px solid var(--orfeo-grid-head-border);
    padding: var(--orfeo-grid-head-pad);
}
.liq-tbl td.num, .liq-tbl th.num {
    text-align: right;
    font-family: 'Inconsolata', monospace;
}
.liq-tbl tbody tr:hover td { background: var(--orfeo-accent-a08); }
.liq-tbl tfoot td {
    background: var(--orfeo-form-surface-hover);
    border-top: 2px solid var(--orfeo-form-border-strong);
    border-bottom: none;
    font-weight: 600;
}

.descuadrados-msg {
    padding: 32px 24px;
    text-align: center;
    color: var(--orfeo-mid);
    font-size: 0.95rem;
    background: #fff;
    border-radius: 6px;
    margin: 18px;
    border: 1px solid #ececec;
}
.descuadrados-msg i {
    font-size: 1.6rem;
    display: block;
    margin: 0 auto 8px;
}
.descuadrados-msg.descuadrados-ok {
    background: #f5fbf5;
    border-color: #cfe5cf;
    color: #2e7d32;
}

.cuentas-row-edit {
    background: transparent;
    border: 1px solid #d8d8d8;
    border-radius: 4px;
    padding: 2px 6px;
    cursor: pointer;
    color: #666;
    font-size: 1rem;
    line-height: 1;
}
.cuentas-row-edit:hover:not(:disabled) {
    background: var(--orfeo-accent);
    color: #fff;
    border-color: var(--orfeo-accent);
}
.cuentas-row-edit:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.cuentas-tipo {
    display: inline-block;
    padding: 1px 6px;
    border-radius: 3px;
    font-size: 0.68rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border: 1px solid;
}
.cuentas-tipo-normal    { background: #f1f5f9; color: #1e293b; border-color: #cbd5e1; }
.cuentas-tipo-cliente   { background: var(--orfeo-form-surface-hover); color: var(--orfeo-accent); border-color: var(--orfeo-form-border-strong); }
.cuentas-tipo-proveedor { background: #fff7ed; color: #9a3412; border-color: #fed7aa; }
.cuentas-tipo-acreedor  { background: var(--orfeo-form-surface-hover); color: var(--orfeo-accent); border-color: var(--orfeo-form-border-strong); }
.cuentas-tipo-banco     { background: #ecfeff; color: #155e75; border-color: #a5f3fc; }
.cuentas-tipo-caja      { background: #f3e8ff; color: #6b21a8; border-color: #d8b4fe; }
.cuentas-tipo-personal  { background: #fce7f3; color: #9d174d; border-color: #fbcfe8; }
.cuentas-tipo-socio     { background: #fef9c3; color: #713f12; border-color: #fde047; }
/* Altura por defecto cuando el panel está abierto; JS la sobreescribe al
   arrastrar el handle; la altura se persiste en Usuarios.PreferenciasJson. */
.cp-panel-open { height: 240px; }

.cp-header {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 4px 10px;
    background: #f5f4f1;
    border-bottom: 1px solid #e3e0db;
    flex-shrink: 0;
    height: 36px;
}
.cp-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    background: #fff;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 5px;
    color: var(--orfeo-dark);
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
}
.cp-toggle:hover { background: var(--orfeo-accent-a08); border-color: var(--orfeo-accent); color: var(--orfeo-accent); }
.cp-toggle i { font-size: 16px; }

.cp-tabs {
    display: flex;
    gap: 2px;
    flex: 1;
}
.cp-tab {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px 10px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 5px 5px 0 0;
    color: var(--orfeo-mid);
    font-size: 0.78rem;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}
.cp-tab:hover { background: rgba(0,0,0,0.04); color: var(--orfeo-dark); }

.cp-vista-previa-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-left: auto;
    padding: 4px 12px;
    background: #fff;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 5px;
    color: var(--orfeo-dark);
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s, border-color 0.15s;
}
.cp-vista-previa-btn:hover {
    background: var(--orfeo-accent-a08);
    border-color: var(--orfeo-accent);
    color: var(--orfeo-accent);
}
.cp-vista-previa-btn i { font-size: 16px; }
.cp-vista-previa-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
}
.cp-tab i { font-size: 14px; }
.cp-tab-active {
    background: #fff;
    border-color: #e3e0db;
    border-bottom-color: #fff;
    color: var(--orfeo-dark);
    font-weight: 600;
    margin-bottom: -1px;
}

.cp-header-tools {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-left: auto;
    flex-shrink: 0;
}
.cp-header-tools .cp-vista-previa-btn {
    margin-left: 0;
}

.cp-warn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 8px;
    background: #fff5e6;
    border: 1px solid #f4c98a;
    border-radius: 5px;
    color: #8a4a00;
    font-size: 0.74rem;
    font-weight: 500;
}
.cp-warn i { font-size: 14px; color: #d68500; }
.cp-warn-link {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 2px;
    cursor: pointer;
}
.cp-warn-link:hover {
    color: #6b3800;
}

.cp-body {
    flex: 1;
    display: flex;
    overflow: hidden;
    min-height: 0;
}

.cp-side {
    width: 200px;
    flex-shrink: 0;
    padding: 8px 10px;
    background: #fafaf8;
    border-right: 1px solid #ebe7e0;
    display: flex;
    flex-direction: column;
    gap: 4px;
    overflow-y: auto;
    max-height: 100%;
}
.cp-side-title {
    font-size: 0.74rem;
    font-weight: 600;
    color: var(--orfeo-mid);
    margin-bottom: 4px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.cp-radio {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 0.78rem;
    cursor: pointer;
    padding: 2px 0;
    color: var(--orfeo-dark);
}
.cp-radio input { accent-color: var(--orfeo-accent); cursor: pointer; }
.cp-side-btn {
    margin-top: 6px;
    padding: 4px 10px;
    background: #fff;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.76rem;
    color: var(--orfeo-dark);
}
.cp-side-btn:hover { background: #f0eee9; border-color: var(--orfeo-accent); }
.cp-side-btn:disabled { opacity: 0.55; cursor: not-allowed; background: #f5f4f1; }
.cp-side-lbl {
    font-size: 0.7rem;
    color: var(--orfeo-mid);
    margin-top: 4px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.cp-side-input {
    width: 100%;
    padding: 3px 6px;
    font-size: 0.78rem;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 3px;
    background: #fff;
    color: var(--orfeo-dark);
    outline: none;
    box-sizing: border-box;
}
.cp-side-input:focus { border-color: var(--orfeo-accent); box-shadow: 0 0 0 2px var(--orfeo-accent-a13); }
.cp-side-hint {
    font-size: 0.7rem;
    color: var(--orfeo-accent);
    font-style: italic;
}

.cp-grid-wrap {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.cp-grid-wrap-full { width: 100%; }

.cp-grid {
    --cp-row-h: 22px;
    font-size: 0.76rem;
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    height: 100%;
    /* Scroll vertical+horizontal cuando las filas/columnas exceden el contenedor */
    overflow: auto;
    display: flex;
    flex-direction: column;
}
/* Forzar a la tabla interna del DxGrid a estirarse al 100% del contenedor */
.cp-grid .dxbl-grid-table { width: 100% !important; }
.cp-grid .dxbl-grid { width: 100% !important; height: 100% !important; }
/* Cabecera fija arriba, área de datos scrollable */
.cp-grid .dxbl-grid-header-row { position: sticky; top: 0; z-index: 2; background: #fff; }

/* ============================================================
   ESTILO ZEBRA + LÍNEAS — grilla de Consultas y de Apuntes
   - filas impares: blanco
   - filas pares (solo datos): crema
   - fondo del área vacía y fila relleno DevExpress: blanco
   ============================================================ */
.cp-grid .dxbl-grid,
.apuntes-dxgrid .dxbl-grid,
.diario-grid .dxbl-grid,
.mayor-grid .dxbl-grid,
.mcuen-grid .dxbl-grid,
.lista-grid .dxbl-grid,
.fichero-maestro-grid .dxbl-grid,
.cp-grid .dxbl-scroll-viewer,
.cp-grid .dxbl-scroll-viewer-content,
.apuntes-dxgrid .dxbl-scroll-viewer,
.apuntes-dxgrid .dxbl-scroll-viewer-content,
.diario-grid .dxbl-scroll-viewer,
.diario-grid .dxbl-scroll-viewer-content,
.mayor-grid .dxbl-scroll-viewer,
.mayor-grid .dxbl-scroll-viewer-content,
.mcuen-grid .dxbl-scroll-viewer,
.mcuen-grid .dxbl-scroll-viewer-content,
.lista-grid .dxbl-scroll-viewer,
.lista-grid .dxbl-scroll-viewer-content,
.fichero-maestro-grid .dxbl-scroll-viewer,
.fichero-maestro-grid .dxbl-scroll-viewer-content {
    background-color: #fff !important;
}
.cp-grid .dxbl-grid-table,
.apuntes-dxgrid .dxbl-grid-table {
    border-collapse: separate;
    border-spacing: 0;
}
/* Consultas (cp-grid): cabecera ocre global */
.cp-grid .dxbl-grid-header-row th {
    background: var(--orfeo-grid-head-bg) !important;
    border-bottom: 1px solid var(--orfeo-grid-head-border) !important;
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    color: var(--orfeo-grid-head-fg) !important;
    font-weight: var(--orfeo-grid-head-fw) !important;
    font-size: var(--orfeo-grid-head-fs) !important;
    letter-spacing: var(--orfeo-grid-head-ls) !important;
    text-transform: uppercase !important;
    line-height: 1.2 !important;
    padding: var(--orfeo-grid-head-pad) !important;
}
/* Introducción de asientos — grilla de edición: cabecera gris (sin ocre) */
.apuntes-dxgrid .dxbl-grid-header-row th {
    background: var(--orfeo-form-surface) !important;
    border-bottom: 1px solid var(--orfeo-form-border) !important;
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    color: var(--orfeo-mid) !important;
    font-weight: var(--orfeo-grid-head-fw) !important;
    font-size: var(--orfeo-grid-head-fs) !important;
    letter-spacing: var(--orfeo-grid-head-ls) !important;
    text-transform: uppercase !important;
    line-height: 1.2 !important;
    padding: var(--orfeo-grid-head-pad) !important;
}
/* Texto interno de cabecera DX: hereda del th (evita doble tamaño) */
.apuntes-dxgrid .dxbl-grid-header-row th *,
.cp-grid .dxbl-grid-header-row th *,
.diario-grid .dxbl-grid-header-row th * {
    font-family: inherit !important;
    font-size: inherit !important;
    font-weight: inherit !important;
    line-height: inherit !important;
    text-transform: inherit !important;
    letter-spacing: inherit !important;
    color: inherit !important;
    padding: 0 !important;
    margin: 0 !important;
    -webkit-font-smoothing: auto;
}
/* Delimitador vertical también en la cabecera */
.cp-grid .dxbl-grid-header-row th,
.apuntes-dxgrid .dxbl-grid-header-row th {
    border-right: 1px solid var(--orfeo-border-muted) !important;
}
.cp-grid tbody > tr,
.apuntes-dxgrid tbody > tr {
    transition: background-color 0.12s ease;
}
.cp-grid tbody > tr.dxbl-grid-empty-row,
.cp-grid tbody > tr.dxbl-grid-empty-row > td,
.apuntes-dxgrid tbody > tr.dxbl-grid-empty-row,
.apuntes-dxgrid tbody > tr.dxbl-grid-empty-row > td {
    background: #fff !important;
}
.apuntes-dxgrid tbody > tr > td {
    border-bottom: 1px solid #efece6 !important;
    border-right: 1px solid #efece6 !important;
}
.apuntes-dxgrid tbody > tr > td:last-child {
    border-right: none !important;
}
/* Consultas: celdas de datos con misma altura y tipografía en todos los tabs */
.cp-grid tbody > tr {
    height: var(--cp-row-h);
}
.cp-grid tbody > tr > td {
    border-bottom: 1px solid #efece6 !important;
    border-right: 1px solid #efece6 !important;
    padding: 0 6px !important;
    height: var(--cp-row-h) !important;
    max-height: var(--cp-row-h) !important;
    font-size: var(--orfeo-grid-data-fs) !important;
    font-weight: 400;
    line-height: var(--cp-row-h) !important;
    vertical-align: middle !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cp-grid tbody > tr > td:last-child {
    border-right: none !important;
}
.cp-grid tbody > tr > td .dxbl-grid-cell-content,
.cp-grid tbody > tr > td > span:not([class*="ph-"]) {
    font-size: inherit !important;
    line-height: 1.25 !important;
    font-weight: inherit;
}
.cp-grid tbody > tr > td[align="right"],
.cp-grid tbody > tr > td.dxbl-grid-align-right,
.cp-grid tbody > tr > td .dxbl-grid-align-right {
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1;
}
.cp-grid tbody > tr > td:has(i.ph-duotone),
.cp-grid tbody > tr > td:has(span[title="Punteado"]),
.cp-grid tbody > tr > td:has(span[title="Asiento descuadrado"]) {
    text-align: center !important;
    padding: 0 2px !important;
}
.cp-grid tbody > tr > td i.ph-duotone {
    font-size: 13px !important;
    line-height: 1;
    vertical-align: middle;
}
.cp-grid tbody > tr > td span[title="Punteado"],
.cp-grid tbody > tr > td span[title="Asiento descuadrado"] {
    font-size: 12px !important;
    line-height: 1;
}
/* Delimitador vertical también en la cabecera */
.cp-grid .dxbl-grid-header-row th,
.apuntes-dxgrid .dxbl-grid-header-row th {
    border-right: 1px solid var(--orfeo-border-muted) !important;
}
.cp-grid .dxbl-grid-header-row th:last-child,
.apuntes-dxgrid .dxbl-grid-header-row th:last-child {
    border-right: none !important;
}
/* Hover sutil en grillas de apuntes / cuentas */
.cp-grid tbody > tr:hover,
.apuntes-dxgrid tbody > tr:hover {
    background: rgba(80, 88, 100, 0.07) !important;
}

/* ── Sombreado: filas blancas por defecto; crema solo con .orfeo-grid-sombreado-on ── */
.diario-grid-wrap .diario-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td,
.diario-grid-wrap .cp-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td,
.diario-grid-wrap .mayor-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td,
.diario-grid-wrap .libro-iva-dxgrid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td,
.diario-grid-wrap .lista-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td,
.diario-grid-wrap .mcuen-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td,
.diario-grid-wrap .fichero-maestro-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td,
.diario-grid-wrap .liq-tbl tbody > tr:not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td,
.diario-grid-wrap .balance-tbl-desktop tbody > tr:not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td,
.cp-body .cp-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td,
.apuntes-grid-wrap .apuntes-dxgrid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td {
    background: #fff !important;
}
.diario-grid-wrap.orfeo-grid-sombreado-on .diario-grid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .mayor-grid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .libro-iva-dxgrid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .lista-grid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .mcuen-grid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .fichero-maestro-grid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.cp-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .mcuen-grid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .fichero-maestro-grid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .liq-tbl tbody > tr:nth-child(even):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .balance-tbl-desktop tbody > tr:nth-child(even):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.cp-body.orfeo-grid-sombreado-on .cp-grid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td,
.apuntes-grid-wrap.orfeo-grid-sombreado-on .apuntes-dxgrid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td {
    background: var(--orfeo-grid-sombreado) !important;
}

/* ── Selección DevExpress (después del sombreado por celda) ──
   El tema blazing-berry pinta texto blanco/morado en .dxbl-grid-focused-row; nuestras celdas
   forzaban fondo #fff !important → fila seleccionada invisible. */

/* GLOBAL: cualquier grilla DevExpress (aunque NO esté envuelta en un *-grid-wrap
   especifico, p. ej. informes y popups de mantenimiento) usa selección GRIS en lugar
   del morado del tema blazing-berry. Las reglas por-wrap de abajo son mas especificas
   y prevalecen donde aplican (mismo gris, o gris mas oscuro en modo sombreado). */
.dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row,
.dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row,
.dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] {
    box-shadow: inset 3px 0 0 var(--orfeo-accent);
}
.dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td,
.dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td,
.dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td {
    background: var(--orfeo-grid-seleccion) !important;
    color: var(--orfeo-dark) !important;
}
.dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td::before,
.dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td::before,
.dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td::before {
    display: none !important;
}

.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row,
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row,
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"],
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"],
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"],
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] {
    box-shadow: inset 3px 0 0 var(--orfeo-accent);
}
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td,
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td,
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td {
    background: var(--orfeo-grid-seleccion) !important;
    color: var(--orfeo-dark) !important;
}
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td::before,
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td::before,
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td::before,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td::before,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td::before,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td::before,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td::before,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td::before,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td::before,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td::before,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td::before,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td::before {
    display: none !important;
}
.diario-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td,
.cp-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td,
.cp-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td,
.cp-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td {
    background: var(--orfeo-grid-seleccion-sombreado) !important;
}
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row:hover > td,
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row:hover > td,
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"]:hover > td,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row:hover > td,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row:hover > td,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"]:hover > td,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row:hover > td,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row:hover > td,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"]:hover > td,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row:hover > td,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row:hover > td,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"]:hover > td {
    background: #9aadc4 !important;
}
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td.orfeo-cell-frozen,
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td.orfeo-cell-frozen,
.diario-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td.orfeo-cell-frozen,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td.orfeo-cell-frozen,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td.orfeo-cell-frozen,
.cp-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td.orfeo-cell-frozen,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td.orfeo-cell-frozen,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td.orfeo-cell-frozen,
.mcuen-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td.orfeo-cell-frozen,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td.orfeo-cell-frozen,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td.orfeo-cell-frozen,
.fichero-maestro-grid-wrap .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td.orfeo-cell-frozen {
    background: var(--orfeo-grid-seleccion) !important;
    color: var(--orfeo-dark) !important;
}
.diario-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td.orfeo-cell-frozen,
.diario-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td.orfeo-cell-frozen,
.diario-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td.orfeo-cell-frozen,
.cp-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td.orfeo-cell-frozen,
.cp-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td.orfeo-cell-frozen,
.cp-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td.orfeo-cell-frozen,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td.orfeo-cell-frozen,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td.orfeo-cell-frozen,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td.orfeo-cell-frozen,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-selected-row > td.orfeo-cell-frozen,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr.dxbl-grid-focused-row > td.orfeo-cell-frozen,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .dxbl-grid .dxbl-grid-table > tbody > tr[aria-selected="true"] > td.orfeo-cell-frozen {
    background: var(--orfeo-grid-seleccion-sombreado) !important;
}

/* Navegación por fila: evitar marco de celda DevExpress que captura ↑↓ */
.diario-grid-wrap:not(.iva-grid-libre):not(.saldos-libre) .dxbl-grid-table td:focus,
.diario-grid-wrap:not(.iva-grid-libre):not(.saldos-libre) .dxbl-grid-table td:focus-visible,
.diario-grid-wrap:not(.iva-grid-libre):not(.saldos-libre) .dxbl-grid-cell-content:focus,
.diario-grid-wrap:not(.iva-grid-libre):not(.saldos-libre) .dxbl-grid-cell-content:focus-visible,
.cp-grid-wrap:not(.iva-grid-libre):not(.saldos-libre) .dxbl-grid-table td:focus,
.cp-grid-wrap:not(.iva-grid-libre):not(.saldos-libre) .dxbl-grid-table td:focus-visible,
.cp-grid-wrap:not(.iva-grid-libre):not(.saldos-libre) .dxbl-grid-cell-content:focus,
.cp-grid-wrap:not(.iva-grid-libre):not(.saldos-libre) .dxbl-grid-cell-content:focus-visible,
.mcuen-grid-wrap:not(.iva-grid-libre):not(.saldos-libre) .dxbl-grid-table td:focus,
.fichero-maestro-grid-wrap:not(.iva-grid-libre):not(.saldos-libre) .dxbl-grid-table td:focus {
    outline: none !important;
    box-shadow: none !important;
}
.diario-grid-wrap:not(.iva-grid-libre):not(.saldos-libre):focus,
.cp-grid-wrap:not(.iva-grid-libre):not(.saldos-libre):focus,
.mcuen-grid-wrap:not(.iva-grid-libre):not(.saldos-libre):focus,
.fichero-maestro-grid-wrap:not(.iva-grid-libre):not(.saldos-libre):focus {
    outline: none;
}
.diario-grid-wrap:not(.iva-grid-libre):not(.saldos-libre):focus-visible,
.cp-grid-wrap:not(.iva-grid-libre):not(.saldos-libre):focus-visible,
.mcuen-grid-wrap:not(.iva-grid-libre):not(.saldos-libre):focus-visible,
.fichero-maestro-grid-wrap:not(.iva-grid-libre):not(.saldos-libre):focus-visible {
    outline: 2px solid var(--orfeo-accent-a18);
    outline-offset: -2px;
}

/* ── Inmovilizar columnas (translateX sobre scroll DevExpress) ── */
.diario-grid-wrap.orfeo-grid-freeze-on .diario-grid.dxbl-grid,
.diario-grid-wrap.orfeo-grid-freeze-on .cp-grid.dxbl-grid {
    overflow: hidden !important;
}
.orfeo-cell-frozen {
    position: relative !important;
}
.orfeo-cell-frozen .cuentas-row-edit,
.orfeo-cell-frozen button {
    pointer-events: auto;
}
.cp-grid thead .orfeo-cell-frozen,
.mayor-grid thead .orfeo-cell-frozen,
.libro-iva-dxgrid thead .orfeo-cell-frozen {
    background: var(--orfeo-grid-head-bg) !important;
    color: var(--orfeo-grid-head-fg) !important;
}
.cp-grid tbody > tr:not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td.orfeo-cell-frozen,
.mayor-grid tbody > tr:not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td.orfeo-cell-frozen,
.libro-iva-dxgrid tbody > tr:not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row) > td.orfeo-cell-frozen {
    background: #fff !important;
}
.diario-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td.orfeo-cell-frozen,
.diario-grid-wrap.orfeo-grid-sombreado-on .mayor-grid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td.orfeo-cell-frozen,
.diario-grid-wrap.orfeo-grid-sombreado-on .libro-iva-dxgrid tbody > tr:nth-child(even):not(.dxbl-grid-empty-row):not(.dxbl-grid-selected-row):not(.dxbl-grid-focused-row):not([aria-selected="true"]) > td.orfeo-cell-frozen {
    background: var(--orfeo-grid-sombreado) !important;
}

/* Selección sobre filas crema: misma ruta que el zebra (después de congeladas/sombreado) */
.diario-grid-wrap.orfeo-grid-sombreado-on .diario-grid tbody > tr.dxbl-grid-selected-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .diario-grid tbody > tr.dxbl-grid-focused-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-selected-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-focused-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .mayor-grid tbody > tr.dxbl-grid-selected-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .mayor-grid tbody > tr.dxbl-grid-focused-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .libro-iva-dxgrid tbody > tr.dxbl-grid-selected-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .libro-iva-dxgrid tbody > tr.dxbl-grid-focused-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .lista-grid tbody > tr.dxbl-grid-selected-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .lista-grid tbody > tr.dxbl-grid-focused-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .mcuen-grid tbody > tr.dxbl-grid-selected-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .mcuen-grid tbody > tr.dxbl-grid-focused-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .fichero-maestro-grid tbody > tr.dxbl-grid-selected-row > td,
.diario-grid-wrap.orfeo-grid-sombreado-on .fichero-maestro-grid tbody > tr.dxbl-grid-focused-row > td,
.cp-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-selected-row > td,
.cp-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-focused-row > td,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .mcuen-grid tbody > tr.dxbl-grid-selected-row > td,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .mcuen-grid tbody > tr.dxbl-grid-focused-row > td,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .fichero-maestro-grid tbody > tr.dxbl-grid-selected-row > td,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .fichero-maestro-grid tbody > tr.dxbl-grid-focused-row > td,
.cp-body.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-selected-row > td,
.cp-body.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-focused-row > td,
.apuntes-grid-wrap.orfeo-grid-sombreado-on .apuntes-dxgrid tbody > tr.dxbl-grid-selected-row > td,
.apuntes-grid-wrap.orfeo-grid-sombreado-on .apuntes-dxgrid tbody > tr.dxbl-grid-focused-row > td {
    background: var(--orfeo-grid-seleccion-sombreado) !important;
    color: var(--orfeo-dark) !important;
}
.diario-grid-wrap.orfeo-grid-sombreado-on .diario-grid tbody > tr.dxbl-grid-selected-row,
.diario-grid-wrap.orfeo-grid-sombreado-on .diario-grid tbody > tr.dxbl-grid-focused-row,
.diario-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-selected-row,
.diario-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-focused-row,
.diario-grid-wrap.orfeo-grid-sombreado-on .mayor-grid tbody > tr.dxbl-grid-selected-row,
.diario-grid-wrap.orfeo-grid-sombreado-on .mayor-grid tbody > tr.dxbl-grid-focused-row,
.diario-grid-wrap.orfeo-grid-sombreado-on .libro-iva-dxgrid tbody > tr.dxbl-grid-selected-row,
.diario-grid-wrap.orfeo-grid-sombreado-on .libro-iva-dxgrid tbody > tr.dxbl-grid-focused-row,
.cp-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-selected-row,
.cp-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-focused-row,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .mcuen-grid tbody > tr.dxbl-grid-selected-row,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .mcuen-grid tbody > tr.dxbl-grid-focused-row,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .fichero-maestro-grid tbody > tr.dxbl-grid-selected-row,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .fichero-maestro-grid tbody > tr.dxbl-grid-focused-row {
    box-shadow: inset 3px 0 0 var(--orfeo-accent);
}
.diario-grid-wrap.orfeo-grid-sombreado-on .diario-grid tbody > tr.dxbl-grid-selected-row > td::before,
.diario-grid-wrap.orfeo-grid-sombreado-on .diario-grid tbody > tr.dxbl-grid-focused-row > td::before,
.diario-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-selected-row > td::before,
.diario-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-focused-row > td::before,
.diario-grid-wrap.orfeo-grid-sombreado-on .mayor-grid tbody > tr.dxbl-grid-selected-row > td::before,
.diario-grid-wrap.orfeo-grid-sombreado-on .mayor-grid tbody > tr.dxbl-grid-focused-row > td::before,
.diario-grid-wrap.orfeo-grid-sombreado-on .libro-iva-dxgrid tbody > tr.dxbl-grid-selected-row > td::before,
.diario-grid-wrap.orfeo-grid-sombreado-on .libro-iva-dxgrid tbody > tr.dxbl-grid-focused-row > td::before,
.cp-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-selected-row > td::before,
.cp-grid-wrap.orfeo-grid-sombreado-on .cp-grid tbody > tr.dxbl-grid-focused-row > td::before,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .mcuen-grid tbody > tr.dxbl-grid-selected-row > td::before,
.mcuen-grid-wrap.orfeo-grid-sombreado-on .mcuen-grid tbody > tr.dxbl-grid-focused-row > td::before,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .fichero-maestro-grid tbody > tr.dxbl-grid-selected-row > td::before,
.fichero-maestro-grid-wrap.orfeo-grid-sombreado-on .fichero-maestro-grid tbody > tr.dxbl-grid-focused-row > td::before {
    display: none !important;
}

.orfeo-cell-frozen-last {
    box-shadow: 3px 0 6px rgba(0, 0, 0, 0.08);
}

/* Compatibilidad: clase antigua sin sombreado = todo blanco */
.diario-grid-wrap--sin-sombreado .diario-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row) > td,
.diario-grid-wrap--sin-sombreado .cp-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row) > td,
.diario-grid-wrap--sin-sombreado .apuntes-dxgrid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row) > td,
.diario-grid-wrap--sin-sombreado .mayor-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row) > td,
.diario-grid-wrap--sin-sombreado .libro-iva-dxgrid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row) > td,
.diario-grid-wrap--sin-sombreado .lista-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row) > td,
.diario-grid-wrap--sin-sombreado .mcuen-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row) > td,
.diario-grid-wrap--sin-sombreado .fichero-maestro-grid tbody > tr:not(.dxbl-grid-empty-row):not(.dxbl-grid-filter-row) > td,
.diario-grid-wrap--sin-sombreado .liq-tbl tbody > tr > td,
.diario-grid-wrap--sin-sombreado .balance-tbl-desktop tbody > tr > td {
    background: #fff !important;
}
.diario-grid-wrap--sin-sombreado .diario-grid tbody > tr:hover,
.diario-grid-wrap--sin-sombreado .cp-grid tbody > tr:hover,
.diario-grid-wrap--sin-sombreado .apuntes-dxgrid tbody > tr:hover,
.diario-grid-wrap--sin-sombreado .mayor-grid tbody > tr:hover,
.diario-grid-wrap--sin-sombreado .libro-iva-dxgrid tbody > tr:hover,
.diario-grid-wrap--sin-sombreado .lista-grid tbody > tr:hover,
.diario-grid-wrap--sin-sombreado .mcuen-grid tbody > tr:hover,
.diario-grid-wrap--sin-sombreado .fichero-maestro-grid tbody > tr:hover,
.diario-grid-wrap--sin-sombreado .liq-tbl tbody > tr:hover,
.diario-grid-wrap--sin-sombreado .balance-tbl-desktop tbody > tr:hover {
    background: rgba(80, 88, 100, 0.07) !important;
}

.cp-grid-wrap {
    flex: 1 1 auto;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.cp-empty {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    color: #94a3b8;
    font-size: 0.86rem;
}
.cp-empty i { font-size: 32px; }

.cp-extracto-header {
    padding: 6px 12px;
    background: #f5f4f1;
    border-bottom: 1px solid #e3e0db;
    font-size: 0.82rem;
    color: var(--orfeo-dark);
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.cp-extracto-saldo strong { color: var(--orfeo-accent); }

.cp-resize-handle {
    height: 8px;
    background: #ebe7e0;
    cursor: ns-resize;
    flex-shrink: 0;
    position: relative;
    z-index: 4;
    touch-action: none;
    transition: background 0.15s;
}
.cp-resize-handle::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 36px;
    height: 2px;
    background: #b8b3a8;
    border-radius: 2px;
}
.cp-resize-handle:hover { background: var(--orfeo-accent-a18); }
.cp-resize-handle:hover::after { background: var(--orfeo-accent); }

/* Handle para redimensionar la grilla de apuntes (al final del panel-edicion) */
.apuntes-resize-handle {
    height: 6px;
    background: #ebe7e0;
    cursor: ns-resize;
    flex-shrink: 0;
    position: relative;
    transition: background 0.15s;
}
.apuntes-resize-handle::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 36px;
    height: 2px;
    background: #b8b3a8;
    border-radius: 2px;
}
.apuntes-resize-handle:hover { background: var(--orfeo-accent-a18); }
.apuntes-resize-handle:hover::after { background: var(--orfeo-accent); }
.iva-field label {
    font-size: 0.72rem;
    font-weight: 500;
    color: #6b6d78;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.iva-input {
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 6px;
    padding: 7px 10px;
    font-size: 0.88rem;
    background: #fff;
    color: var(--orfeo-dark);
    font-family: var(--font-sans);
    transition: border-color 0.15s, box-shadow 0.15s;
}
.iva-input:focus {
    outline: none;
    border-color: var(--orfeo-accent);
    box-shadow: 0 0 0 3px var(--orfeo-accent-a13);
}
.iva-input-readonly { background: #f5f4f1; color: #6b6d78; }
select.iva-input { cursor: pointer; }

/* Checks row */
.iva-checks-row {
    display: flex;
    gap: 24px;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed #ebe7e0;
}
.iva-check {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
    cursor: pointer;
    color: var(--orfeo-dark);
}
.iva-check input { accent-color: var(--orfeo-accent); cursor: pointer; }

/* IVA grid (bases / tipos / cuotas) — solo tablas HTML del popup, no la grilla DevExpress del libro */
table.iva-grid {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.83rem;
    font-family: var(--font-sans);
    background: var(--orfeo-form-surface);
    border: 1px solid var(--orfeo-form-border-strong);
    border-radius: 8px;
    overflow: hidden;
}
table.iva-grid thead th {
    padding: 5px 8px;
    background: var(--orfeo-form-surface);
    font-size: 0.74rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--orfeo-mid);
    font-weight: 700;
    border-bottom: 2px solid var(--orfeo-form-border-strong);
}
.iva-grid-row-lbl {
    padding: 8px 12px;
    font-weight: 600;
    color: #6b6d78;
    width: 80px;
    background: #f5f4f1;
}
.iva-grid-r { text-align: right; }
.iva-grid-c { text-align: center; }
table.iva-grid tbody td {
    padding: 6px 8px;
    border-bottom: 1px solid #f0eee9;
}
.iva-grid-exenta td { background: #fdfcfa; }
.iva-grid-nota {
    color: #94a3b8;
    font-style: italic;
    font-size: 0.82rem;
    padding-left: 12px !important;
}
.iva-grid-num {
    width: 100%;
    border: 1px solid transparent;
    background: transparent;
    padding: 5px 6px;
    text-align: right;
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-size: 0.88rem;
    color: var(--orfeo-dark);
    border-radius: 4px;
}
.iva-grid-num:focus {
    outline: none;
    border-color: var(--orfeo-accent);
    background: #fffdfb;
    box-shadow: 0 0 0 2px var(--orfeo-accent-a10);
}
.iva-grid-pct { width: 70px; text-align: center; }
.iva-grid-cuota {
    display: block;
    text-align: right;
    padding: 5px 6px;
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-weight: 600;
    color: var(--orfeo-dark);
}
.iva-grid-empty { color: #cbd0d6; font-weight: 400; }
table.iva-grid tfoot td {
    background: linear-gradient(180deg, #f0eee9 0%, #ebe7e0 100%);
    border-top: 2px solid var(--orfeo-border-muted);
}
.iva-grid-total-val {
    text-align: right;
    padding: 8px 10px;
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-weight: 700;
    font-size: 0.9rem;
    color: var(--orfeo-dark);
}

/* IRPF inline */
.iva-irpf {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
    padding: 10px 14px;
    background: #fafaf8;
    border-radius: 8px;
    border: 1px solid #ebe7e0;
}
.iva-irpf > i { font-size: 18px; color: #6b6d78; }
.iva-irpf > label {
    font-size: 0.78rem;
    font-weight: 500;
    color: #6b6d78;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.iva-irpf .iva-grid-num { background: #fff; border: 1px solid var(--orfeo-border-muted); }
.iva-irpf-pct { color: #6b6d78; font-size: 0.85rem; }
.iva-irpf-arrow { color: #cbd0d6; margin: 0 8px; font-size: 1rem; }
.iva-irpf-cuota-lbl { font-size: 0.78rem; color: #6b6d78; }
.iva-irpf-cuota-val {
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-weight: 700;
    color: var(--orfeo-dark);
    margin-left: auto;
}

/* Verify totales */
.iva-verify {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 18px;
    border-radius: 10px;
    border: 1px solid;
}
.iva-verify-ok { background: #f0faf3; border-color: #b8d8c0; color: #1a6b30; }
.iva-verify-ko { background: #fff5f5; border-color: #f0b8b8; color: #a00; }
.iva-verify-icon i { font-size: 32px; line-height: 1; }
.iva-verify-ok .iva-verify-icon i { color: #2c8047; }
.iva-verify-ko .iva-verify-icon i { color: #c00; }
.iva-verify-body { flex: 1; }
.iva-verify-formula {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    font-size: 0.85rem;
    margin-bottom: 4px;
}
.iva-verify-part strong {
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-weight: 700;
}
.iva-verify-op { opacity: 0.5; font-weight: 600; }
.iva-verify-result { font-size: 0.92rem; }
.iva-verify-result strong {
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-weight: 700;
}

/* Textarea observaciones */
.iva-textarea {
    width: 100%;
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 6px;
    padding: 8px 10px;
    font-size: 0.88rem;
    font-family: var(--font-sans);
    color: var(--orfeo-dark);
    resize: vertical;
    min-height: 50px;
}
.iva-textarea:focus {
    outline: none;
    border-color: var(--orfeo-accent);
    box-shadow: 0 0 0 3px var(--orfeo-accent-a13);
}

/* Toggle generar líneas */
.iva-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    background: #f5f4f1;
    border-radius: 6px;
    cursor: pointer;
    font-size: 0.88rem;
    color: var(--orfeo-dark);
}
.iva-toggle input { accent-color: var(--orfeo-accent); cursor: pointer; }

/* Account rows (en IvaRegistroPopup y IvaLineasPopup) */
.iva-acc-rows, .iva-acc-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 12px;
}
.iva-acc-row, .iva-acc-line {
    display: grid;
    grid-template-columns: 200px 220px 1fr 130px;
    gap: 10px;
    align-items: center;
    padding: 8px 10px;
    background: #fafaf8;
    border: 1px solid #ebe7e0;
    border-radius: 6px;
    transition: background 0.15s, border-color 0.15s;
}
.iva-acc-row { grid-template-columns: 220px 220px 1fr; }
.iva-acc-line-activa {
    background: #fff;
    border-color: var(--orfeo-form-border-strong);
}
.iva-acc-line-vacia {
    opacity: 0.6;
}
.iva-acc-line-vacia .iva-acc-tag,
.iva-acc-line-vacia .iva-acc-desc { color: #94a3b8; }
.iva-acc-tag {
    font-size: 0.78rem;
    font-weight: 600;
    color: #475569;
}
.iva-acc-input {
    display: flex;
    align-items: stretch;
    gap: 0;
}
.iva-acc-input .iva-input {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
    flex: 1;
    min-width: 0;
}
.iva-f1-btn {
    border: 1px solid var(--orfeo-border-muted);
    border-left: none;
    border-top-right-radius: 6px;
    border-bottom-right-radius: 6px;
    background: #f5f4f1;
    color: #6b6d78;
    font-size: 0.72rem;
    font-weight: 600;
    padding: 0 9px;
    cursor: pointer;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.iva-f1-btn:hover {
    background: var(--orfeo-accent-a10);
    border-color: var(--orfeo-accent);
    color: var(--orfeo-accent);
}
.iva-acc-desc {
    font-size: 0.84rem;
    color: #475569;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.iva-acc-imp {
    border: 1px solid var(--orfeo-border-muted);
    border-radius: 6px;
    padding: 6px 8px;
    text-align: right;
    font-family: 'JetBrains Mono', 'Consolas', monospace;
    font-size: 0.88rem;
    background: #fff;
    color: var(--orfeo-dark);
}
.iva-acc-imp:focus {
    outline: none;
    border-color: var(--orfeo-accent);
    box-shadow: 0 0 0 2px var(--orfeo-accent-a10);
}

/* Info row */
.iva-info-row {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-top: 10px;
    padding: 8px 12px;
    background: #f0f4f8;
    border-radius: 6px;
    font-size: 0.78rem;
    color: #475569;
}
.iva-info-row i { font-size: 18px; color: #4a90c0; flex-shrink: 0; line-height: 1.3; }

/* Acciones — barra inferior */
.iva-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    padding: 14px 4px 4px;
    border-top: 1px solid #ebe7e0;
    margin-top: 4px;
}
.iva-btn {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 9px 16px;
    border-radius: 7px;
    font-size: 0.9rem;
    font-weight: 500;
    font-family: var(--font-sans);
    cursor: pointer;
    border: 1px solid;
    transition: background 0.15s, transform 0.1s, box-shadow 0.15s, border-color 0.15s;
}
.iva-btn i { font-size: 18px; }
.iva-btn:hover { transform: translateY(-1px); }
.iva-btn:active { transform: translateY(0); }
.iva-btn-primary {
    background: var(--orfeo-accent);
    border-color: var(--orfeo-accent);
    color: #fff;
}
.iva-btn-primary:hover {
    background: var(--orfeo-accent-h);
    border-color: var(--orfeo-accent-h);
    box-shadow: 0 4px 14px rgba(92,99,112,0.2);
}
.iva-btn-secondary {
    background: #fff;
    border-color: var(--orfeo-form-border-strong);
    color: var(--orfeo-dark);
}
.iva-btn-secondary:hover {
    background: #f5f4f1;
    border-color: #b8b4ac;
}
.iva-btn-ghost {
    background: transparent;
    border-color: transparent;
    color: #6b6d78;
}
.iva-btn-ghost:hover {
    background: #f5f4f1;
    color: var(--orfeo-dark);
}

/* === Icono modelo AEAT (cinta / menús / popups) === */
.orfeo-aeat-icon {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    flex-shrink: 0;
    vertical-align: middle;
    line-height: 1;
    user-select: none;
}
.orfeo-aeat-icon__ped {
    width: 72%;
    height: 14%;
    background: #1e4f8a;
    clip-path: polygon(50% 0, 100% 100%, 0 100%);
    margin-bottom: 1px;
}
.orfeo-aeat-icon__body {
    width: 100%;
    flex: 1;
    display: flex;
    flex-direction: column;
    border: 1px solid #153d6b;
    border-radius: 1px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 1px 0 rgba(0,0,0,.08);
}
.orfeo-aeat-icon__num {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Segoe UI', Tahoma, sans-serif;
    font-weight: 800;
    color: #1a3f6e;
    letter-spacing: -.02em;
    font-size: calc(var(--orfeo-aeat-size, 24px) * .34);
    padding: 8% 2px 2px;
}
.orfeo-aeat-icon__band {
    background: linear-gradient(180deg, #2a5f9e 0%, #1e4f8a 100%);
    color: #fff;
    text-align: center;
    font-family: 'Segoe UI', Tahoma, sans-serif;
    font-weight: 700;
    letter-spacing: .04em;
    font-size: calc(var(--orfeo-aeat-size, 24px) * .18);
    line-height: 1.05;
    padding: 7% 1px 8%;
}

/* === Modelos AEAT consolidated dashboard === */
.modelos-page .diario-body { background: #faf9f6; }
.modelos-content { padding: 14px 18px; }
.modelos-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 14px;
    margin-bottom: 18px;
}
.modelo-card {
    background: #fff;
    border: 1px solid #e5e3dd;
    border-radius: 6px;
    padding: 14px 16px;
    box-shadow: 0 1px 2px rgba(0,0,0,0.04);
    transition: box-shadow .15s, border-color .15s, transform .15s;
    display: flex;
    flex-direction: column;
    min-height: 140px;
}
.modelo-card[onclick], .modelo-card:has(> .modelo-link) { cursor: pointer; }
.modelo-card:hover {
    border-color: var(--orfeo-accent);
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    transform: translateY(-1px);
}
.modelo-card-303 { border-left: 4px solid var(--orfeo-accent); }
.modelo-card-h {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin-bottom: 8px;
    border-bottom: 1px solid #f0eeea;
    padding-bottom: 8px;
}
.modelo-numero {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--orfeo-accent);
    font-family: 'Cascadia Code', 'Consolas', monospace;
    line-height: 1;
}
.modelo-titulo {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--orfeo-dark);
}
.modelo-desc {
    font-size: 0.85rem;
    color: var(--orfeo-mid);
    margin: 4px 0 8px 0;
    flex: 1;
}
.modelo-link {
    margin-top: auto;
    font-size: 0.85rem;
    color: var(--orfeo-accent);
    font-weight: 600;
}
.modelo-stats {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 6px 12px;
    font-size: 0.85rem;
    margin-top: 4px;
}
.modelo-stats > div {
    display: flex;
    justify-content: space-between;
    border-bottom: 1px dotted #ece9e2;
    padding: 2px 0;
}
.modelo-stats span { color: var(--orfeo-mid); }
.modelo-stats strong { font-family: 'Cascadia Code', 'Consolas', monospace; color: var(--orfeo-dark); }

/* === Punteo / Conciliación === */
.punteo-resumen {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
    background: #fff;
    border: 1px solid #e5e3dd;
    border-radius: 6px;
    padding: 10px 14px;
    margin: 12px 18px 0 18px;
    font-size: 0.9rem;
}
.punteo-resumen > div { display: flex; flex-direction: column; min-width: 120px; }
.punteo-resumen span { font-size: 0.75rem; color: var(--orfeo-mid); text-transform: uppercase; letter-spacing: 0.5px; }
.punteo-resumen strong { font-family: 'Cascadia Code', 'Consolas', monospace; font-size: 1rem; color: var(--orfeo-dark); }
.punteo-acciones {
    display: flex; gap: 6px; align-items: center;
    margin: 10px 18px;
}
.punteo-tbl tr.punteo-row-ok { background: #f0faf0; }
.punteo-tbl tr.punteo-row-ok td { color: #4a7c59; }

/* === Cierre del ejercicio === */
.cierre-content { padding: 0 0 18px 0; }
.cierre-steps { display: flex; flex-direction: column; gap: 14px; padding: 14px 18px; }
.cierre-step {
    background: #fff;
    border: 1px solid #e5e3dd;
    border-left: 4px solid var(--orfeo-accent);
    border-radius: 6px;
    padding: 14px 18px;
    box-shadow: 0 1px 2px rgba(0,0,0,0.04);
}
.cierre-step-info { border-left-color: #6b6d78; opacity: 0.9; }
.cierre-step-h {
    display: flex; align-items: center; gap: 12px;
    font-size: 1rem;
    margin-bottom: 10px;
}
.cierre-step-num {
    width: 28px; height: 28px;
    border-radius: 50%;
    background: var(--orfeo-accent);
    color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700;
    font-size: 0.95rem;
}
.cierre-step-info .cierre-step-num { background: #6b6d78; }
.cierre-step-stats {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 6px 14px;
    margin: 8px 0;
    font-size: 0.85rem;
}
.cierre-step-stats > div { display: flex; flex-direction: column; padding: 4px 8px; background: #faf9f6; border-radius: 4px; }
.cierre-step-stats span { font-size: 0.72rem; color: var(--orfeo-mid); text-transform: uppercase; letter-spacing: 0.5px; }
.cierre-step-stats strong { font-family: 'Cascadia Code', 'Consolas', monospace; font-size: 1rem; color: var(--orfeo-dark); }
.cierre-step-actions {
    display: flex; align-items: center; gap: 8px;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed #ece9e2;
    flex-wrap: wrap;
}
.cierre-step-actions label { font-size: 0.85rem; color: var(--orfeo-mid); }

/* === Cuentas Anuales === */
.cca-content { padding: 14px 18px; }
.cca-titulo { font-size: 1.05rem; color: var(--orfeo-dark); margin: 0 0 14px 0; padding-bottom: 6px; border-bottom: 1px solid #e5e3dd; }
.cca-tbl { width: 100%; border-collapse: collapse; font-size: 0.83rem; font-family: var(--font-sans); }
.cca-tbl td, .cca-tbl th { padding: 4px 8px; border-bottom: 1px solid var(--orfeo-form-border); }
.cca-tbl th { background: var(--orfeo-form-surface); text-align: left; color: var(--orfeo-mid); font-weight: 600; font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.03em; border-bottom: 2px solid var(--orfeo-form-border-strong); }
.cca-tbl tr.cca-total { background: var(--orfeo-form-surface-hover, #eef0f3); }
.cca-tbl tr.cca-total td { border-top: 1px solid var(--orfeo-form-border-strong, #c5cad1); border-bottom: 2px solid var(--orfeo-form-border-strong, #c5cad1); }
.cca-balance-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.cca-balance-grid h4 { margin: 0 0 8px 0; font-size: 0.95rem; }
.cca-cuadre { margin-top: 18px; padding: 10px 14px; background: #fff; border: 1px solid #e5e3dd; border-radius: 6px; display: flex; gap: 10px; align-items: center; font-size: 0.95rem; }
.cca-cuadre span { color: var(--orfeo-mid); }

/* === Dashboard económico === */
.dashb-content { padding: 14px 18px; }
.dashb-h { font-size: 1.05rem; color: var(--orfeo-dark); margin: 22px 0 10px 0; padding-bottom: 4px; border-bottom: 1px solid #e5e3dd; }
.dashb-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.dashb-kpi {
    background: #fff;
    border: 1px solid #e5e3dd;
    border-left: 4px solid var(--orfeo-accent);
    border-radius: 6px;
    padding: 14px 16px;
    text-decoration: none;
    color: inherit;
    transition: box-shadow .15s, transform .15s;
}
.dashb-kpi:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.08); transform: translateY(-1px); }
.dashb-kpi-h { font-size: 0.85rem; color: var(--orfeo-mid); display: flex; align-items: center; gap: 6px; font-weight: 400; }
.dashb-kpi-num { font-size: 2rem; font-weight: 700; color: var(--orfeo-dark); font-family: 'Cascadia Code', 'Consolas', monospace; line-height: 1.1; margin: 4px 0; }
.dashb-kpi-sub { font-size: 0.78rem; color: var(--orfeo-mid); }

.dashb-indicadores { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; }
.dashb-ind { background: #fff; border: 1px solid #e5e3dd; border-radius: 6px; padding: 12px 14px; }
.dashb-ind-h { font-size: 0.82rem; color: var(--orfeo-mid); display: flex; align-items: center; gap: 6px; }
.dashb-ind-num { font-size: 1.2rem; font-family: 'Cascadia Code', 'Consolas', monospace; font-weight: 600; margin-top: 4px; }
.dashb-ind-result { background: linear-gradient(135deg, #fff 0%, var(--orfeo-form-surface-hover, #eef0f3) 100%); border-color: var(--orfeo-form-border-strong, #c5cad1); }

.dashb-bars { display: grid; grid-template-columns: repeat(12, 1fr); gap: 4px; height: 200px; align-items: end; padding: 0 10px; background: #fff; border: 1px solid #e5e3dd; border-radius: 6px; padding: 14px; }
.dashb-bar { display: flex; flex-direction: column; align-items: center; height: 100%; justify-content: flex-end; }
.dashb-bar-val { font-size: 0.72rem; color: var(--orfeo-mid); font-family: 'Cascadia Code', 'Consolas', monospace; }
.dashb-bar-val.neg { color: #c00; }
.dashb-bar-track { width: 100%; height: 130px; display: flex; align-items: flex-end; }
.dashb-bar-fill { width: 100%; background: linear-gradient(180deg, var(--orfeo-ochre) 0%, var(--orfeo-ochre-hover) 100%); border-radius: 3px 3px 0 0; min-height: 2px; transition: height .3s; }
.dashb-bar-fill.neg { background: linear-gradient(180deg, #c00 0%, #8b0000 100%); }
.dashb-bar-lbl { font-size: 0.72rem; color: var(--orfeo-mid); margin-top: 4px; text-transform: capitalize; }

.dashb-quick { display: flex; flex-wrap: wrap; gap: 8px; }
.dashb-q { display: inline-flex; align-items: center; gap: 6px; background: #fff; border: 1px solid #e5e3dd; border-radius: 4px; padding: 8px 12px; font-size: 0.85rem; color: var(--orfeo-dark); text-decoration: none; transition: border-color .15s, background .15s; }
.dashb-q:hover { border-color: var(--orfeo-accent); background: var(--orfeo-form-surface-hover, #eef0f3); }
.dashb-q-disabled { opacity: 0.55; cursor: not-allowed; pointer-events: none; color: var(--orfeo-mid); }
.hm-link-disabled { color: var(--orfeo-mid); cursor: not-allowed; }

/* === Ventas diarias === */
.venta-resumen {
    display: flex; gap: 14px; flex-wrap: wrap;
    background: #fff; border: 1px solid #e5e3dd; border-radius: 6px;
    padding: 10px 14px; margin: 14px 18px 0 18px; font-size: 0.9rem;
}
.venta-resumen > div { display: flex; flex-direction: column; min-width: 110px; }
.venta-resumen span { font-size: 0.72rem; color: var(--orfeo-mid); text-transform: uppercase; letter-spacing: 0.5px; }
.venta-resumen strong { font-family: 'Cascadia Code', 'Consolas', monospace; font-size: 1rem; color: var(--orfeo-dark); }
.venta-contab { background: #f0faf0; }
.venta-badge-ok { background: #4a7c59; color: #fff; padding: 2px 6px; border-radius: 3px; font-size: 0.75rem; font-family: 'Cascadia Code', monospace; }
.venta-badge-pend { background: var(--orfeo-form-surface-hover); color: var(--orfeo-accent); padding: 2px 6px; border-radius: 3px; font-size: 0.75rem; }

/* === Conciliación bancaria === */
.conc-resumen {
    display: flex; gap: 14px; flex-wrap: wrap;
    background: #fff; border: 1px solid #e5e3dd; border-radius: 6px;
    padding: 10px 14px; margin: 14px 18px 0 18px; font-size: 0.9rem;
}
.conc-resumen > div { display: flex; flex-direction: column; min-width: 110px; }
.conc-resumen span { font-size: 0.72rem; color: var(--orfeo-mid); text-transform: uppercase; letter-spacing: 0.5px; }
.conc-resumen strong { font-family: 'Cascadia Code', 'Consolas', monospace; font-size: 1rem; color: var(--orfeo-dark); }
.conc-ok { background: #f0faf0; }
.conc-ok td { color: #4a7c59; }

/* === Efectos / Tesorería === */
.ef-filtros { display: flex; gap: 6px; align-items: center; padding: 10px 18px; background: #faf9f6; border-bottom: 1px solid #e5e3dd; font-size: 0.85rem; }
.ef-filtros label { color: var(--orfeo-mid); }
.ef-estado { padding: 2px 8px; border-radius: 3px; font-size: 0.75rem; font-family: 'Cascadia Code', monospace; font-weight: 600; }
.ef-estado-PEN { background: var(--orfeo-form-surface-hover); color: var(--orfeo-accent); }
.ef-estado-COB { background: #d1fae5; color: #065f46; }
.ef-estado-PAG { background: #d1fae5; color: #065f46; }
.ef-estado-DEV { background: #fecaca; color: #991b1b; }
.ef-fila-sel { background: var(--orfeo-grid-seleccion) !important; }
.saldos-fila-som,
.saldos-fila-som td { background: var(--orfeo-grid-sombreado) !important; }

/* === Popups de configuración (shell unificado) === */
.ocnf-shell {
    background: #fff;
    border-radius: 8px;
    width: 680px;
    max-width: 96vw;
    height: min(680px, 88vh);
    max-height: 88vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 12px 40px rgba(0, 0, 0, .18);
    overflow: hidden;
}
.ocnf-shell--wide { width: 920px; }
.ocnf-shell--medium { width: 780px; }
.ocnf-header {
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%);
    color: #fff;
    padding: 12px 18px;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}
.ocnf-header > i:first-child { font-size: 1.35rem; }
.ocnf-close {
    margin-left: auto;
    background: transparent;
    border: 0;
    color: #fff;
    font-size: 1.15rem;
    cursor: pointer;
    padding: 4px;
    border-radius: 4px;
    line-height: 1;
}
.ocnf-close:hover { background: rgba(255, 255, 255, .12); }
.ocnf-body {
    display: flex;
    flex: 1;
    min-height: 0;
    overflow: hidden;
}
.ocnf-nav {
    width: 248px;
    flex-shrink: 0;
    background: var(--orfeo-form-surface, #f8f8fa);
    padding: 16px 12px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    overflow-y: auto;
}
.ocnf-nav--narrow { width: 210px; }
.ocnf-nav-item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 10px 14px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    cursor: pointer;
    font-size: .84rem;
    line-height: 1.3;
    color: #3a3a3a;
    text-align: left;
    transition: background .15s ease, color .15s ease;
}
.ocnf-nav-item i {
    font-size: 1.1rem;
    color: var(--orfeo-mid, #6b7280);
    flex-shrink: 0;
}
.ocnf-nav-item:hover { background: rgba(0, 0, 0, .04); }
.ocnf-nav-item-act {
    background: #fff;
    color: var(--orfeo-accent, #5c6370);
    font-weight: 600;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .06);
}
.ocnf-nav-item-act i { color: var(--orfeo-accent, #5c6370); }
.ocnf-main {
    flex: 1;
    overflow: auto;
    padding: 24px 28px 28px;
    background: #fff;
}
.ocnf-main--solo { padding: 24px 28px; }
.ocnf-main-head { margin-bottom: 22px; }
.ocnf-main-title {
    margin: 0 0 6px 0;
    font-size: 1rem;
    font-weight: 600;
    color: #2a2a2a;
}
.ocnf-main-hint {
    margin: 0;
    font-size: .82rem;
    color: var(--orfeo-mid, #6b7280);
    line-height: 1.45;
}
.ocnf-section {
    margin-bottom: 28px;
    padding-bottom: 4px;
}
.ocnf-section:last-child { margin-bottom: 0; }
.ocnf-section-title {
    margin: 0 0 14px 0;
    font-size: .88rem;
    font-weight: 600;
    color: #404040;
    letter-spacing: .01em;
}
.ocnf-section-hint {
    margin: -8px 0 12px 0;
    font-size: .78rem;
    color: var(--orfeo-mid, #6b7280);
    line-height: 1.4;
}
.ocnf-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
    font-size: .85rem;
    flex-wrap: wrap;
}
.ocnf-row:last-child { margin-bottom: 0; }
.ocnf-lbl {
    min-width: 200px;
    color: #404040;
    font-weight: 500;
}
.ocnf-lbl--sm { min-width: 120px; }
.ocnf-lbl--lg { min-width: 280px; }
.ocnf-chk-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
    font-size: .85rem;
}
.ocnf-chk-grid label {
    cursor: pointer;
    display: flex;
    align-items: flex-start;
    gap: 8px;
    line-height: 1.35;
    padding: 2px 0;
}
.ocnf-radio-group {
    display: flex;
    flex-direction: column;
    gap: 8px;
    font-size: .85rem;
    margin-left: 4px;
}
.ocnf-radio-group label {
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 8px;
}
.ocnf-footer {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    align-items: center;
    padding: 14px 20px;
    background: var(--orfeo-form-surface, #f7f7fa);
    border-top: 1px solid var(--orfeo-form-border, #e8e8ec);
    flex-shrink: 0;
}
.ocnf-slots {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px 24px;
}
.ocnf-slot {
    display: flex;
    align-items: center;
    gap: 12px;
}
.ocnf-slot-lbl {
    width: 22px;
    flex-shrink: 0;
    font-size: .78rem;
    font-weight: 600;
    color: var(--orfeo-mid, #6b7280);
    text-align: center;
}
.ocnf-slot-input {
    flex: 1;
    min-width: 0;
    padding: 8px 12px;
    border: 1px solid var(--orfeo-form-border, #d4d4d8);
    border-radius: 6px;
    font-size: .88rem;
    background: #fff;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.ocnf-slot-input:focus {
    outline: none;
    border-color: var(--orfeo-accent, #5c6370);
    box-shadow: 0 0 0 2px rgba(92, 99, 112, .12);
}
.ocnf-period-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 20px;
}
.ocnf-input {
    border: 1px solid var(--orfeo-form-border, #d4d4d8);
    border-radius: 6px;
    padding: 6px 10px;
    font-size: .85rem;
    background: #fff;
    box-sizing: border-box;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.ocnf-input:focus {
    outline: none;
    border-color: var(--orfeo-accent, #5c6370);
    box-shadow: 0 0 0 2px rgba(92, 99, 112, .12);
}
.ocnf-input:disabled { background: #f3f4f6; color: #9ca3af; }
.ocnf-input--short { width: 96px; }
.ocnf-input--full { width: 100%; min-width: 0; }
.ocnf-table-wrap { overflow-x: auto; margin-top: 4px; }
.ocnf-table {
    width: 100%;
    border-collapse: collapse;
    font-size: .84rem;
}
.ocnf-table th {
    padding: 8px 10px;
    text-align: left;
    font-weight: 600;
    color: #404040;
    border-bottom: 2px solid var(--orfeo-form-border, #e8e8ec);
    background: var(--orfeo-form-surface, #f8f8fa);
}
.ocnf-table td {
    padding: 6px 8px;
    border-bottom: 1px solid var(--orfeo-form-border, #f0f0f2);
    vertical-align: middle;
}
.ocnf-table tbody tr { cursor: pointer; }
.ocnf-table tbody tr:hover td { background: rgba(0, 0, 0, .02); }
.ocnf-table-row-sel td { background: var(--orfeo-grid-seleccion) !important; }
.ocnf-table-empty {
    text-align: center;
    color: var(--orfeo-mid, #9ca3af);
    padding: 20px 12px;
    font-style: italic;
}
.ocnf-icon-btn {
    background: transparent;
    border: 0;
    color: #dc2626;
    cursor: pointer;
    font-size: 1rem;
    padding: 4px 6px;
    border-radius: 4px;
    line-height: 1;
}
.ocnf-icon-btn:hover { background: #fee2e2; }
.ocnf-footer-spacer { flex: 1; }
@media (max-width: 640px) {
    .ocnf-slots { grid-template-columns: 1fr; }
    .ocnf-nav { width: 200px; }
}

.diario-iconbtn-active { background: var(--orfeo-accent) !important; color: #fff !important; }

/* === Cheques / Pagarés === */
.ef-estado-EMI { background: #d1fae5; color: #065f46; }
.ef-estado-ANU { background: #e5e7eb; color: #6b7280; text-decoration: line-through; }
.ch-anu { opacity: 0.55; text-decoration: line-through; }
.ch-tipo { padding: 2px 6px; border-radius: 3px; font-size: 0.72rem; font-weight: 700; font-family: 'Cascadia Code', monospace; }
.ch-tipo-ch { background: #e2e8f0; color: #334155; }
.ch-tipo-pg { background: #ede9fe; color: #5b21b6; }

/* === Conciliación bancaria — estilo desktop Orfeo === */
.conc-page {
    display: flex; flex-direction: column;
    background: #f0f0f0;
    height: 100%;
}
.conc-toolbar {
    background: #ffffff;
    border-bottom: 1px solid #c5c8d0;
    padding: 8px 12px;
}
.conc-tb-row {
    display: flex; align-items: center; gap: 6px;
    font-size: 0.85rem;
}
.conc-tb-row label { color: #4a4d57; font-weight: 500; }
.conc-input {
    border: 1px solid var(--orfeo-form-border-strong); border-radius: 4px;
    padding: 4px 6px; font-size: 0.85rem;
    background: #fff;
    min-height: 28px;
    box-sizing: border-box;
    line-height: 1.4;
}
/* Los <select> nativos no deben tener altura fija — su tamaño lo controla el sistema */
select.conc-input {
    height: auto;
    min-height: 28px;
    padding-top: 3px;
    padding-bottom: 3px;
    cursor: pointer;
    appearance: auto;
}
.conc-input:focus { outline: 1px solid var(--orfeo-accent); border-color: var(--orfeo-accent); }
.conc-btn {
    border: 1px solid var(--orfeo-form-border-strong); background: #fff; border-radius: 4px;
    padding: 4px 12px; font-size: 0.85rem; min-height: 28px;
    cursor: pointer; display: inline-flex; align-items: center; gap: 4px;
    color: var(--orfeo-dark); white-space: nowrap; flex-shrink: 0;
    box-sizing: border-box;
}
.conc-btn:hover { background: #e5e7eb; }
.conc-btn-primary { background: var(--orfeo-accent); color: #fff; border-color: var(--orfeo-accent); }
.conc-btn-primary:hover { background: var(--orfeo-accent-h); border-color: var(--orfeo-accent-h); }
.conc-btn-primary:disabled { background: var(--orfeo-mid); border-color: var(--orfeo-mid); opacity: 0.65; cursor: not-allowed; }

.conc-body {
    flex: 1; display: flex; min-height: 0;
    background: #f0f0f0;
}
.conc-meses {
    width: 50px;
    background: #f8f8f8;
    border-right: 1px solid #c5c8d0;
    display: flex; flex-direction: column; padding: 4px 0;
}
.conc-mes-btn {
    border: none; background: transparent; padding: 6px 4px;
    font-size: 0.75rem; cursor: pointer; color: #4a4d57;
    border-bottom: 1px solid #e5e7eb;
    text-transform: capitalize;
}
.conc-mes-btn:hover { background: #e5e7eb; }
.conc-mes-sel { background: #5c6370; color: #fff; font-weight: 600; }
.conc-mes-sel:hover { background: #475569; }
.conc-mes-clr { color: #c00; font-weight: 600; border-top: 2px solid #c00; }

.conc-main { flex: 1; display: flex; flex-direction: column; overflow: hidden; padding: 8px; gap: 8px; }
.conc-tabs { display: flex; gap: 2px; background: #f0f0f0; padding-left: 6px; }
.conc-tab {
    border: 1px solid #c5c8d0; border-bottom: none;
    background: #e5e7eb; padding: 4px 14px; font-size: 0.82rem;
    cursor: pointer; border-radius: 4px 4px 0 0;
    color: #4a4d57;
}
.conc-tab-act { background: #fff; color: #1f2937; font-weight: 600; }

.conc-panel {
    background: #fff;
    border: 1px solid #c5c8d0;
    border-radius: 2px;
    flex: 1; min-height: 200px;
    display: flex; flex-direction: column;
    overflow: hidden;
}
.conc-panel-h {
    background: #fafafa; padding: 5px 10px;
    border-bottom: 1px solid #c5c8d0;
    font-weight: 600; font-size: 0.82rem; color: #1f2937;
}
.conc-tbl-wrap { flex: 1; overflow: auto; }
.conc-tbl { width: 100%; border-collapse: collapse; font-size: 0.83rem; font-family: var(--font-sans); }
.conc-tbl th {
    background: var(--orfeo-form-surface); color: var(--orfeo-mid); font-weight: 600;
    text-align: left; padding: 5px 8px;
    border-bottom: 2px solid var(--orfeo-form-border-strong);
    text-transform: uppercase; font-size: 0.74rem; letter-spacing: 0.03em;
    position: sticky; top: 0; z-index: 1;
}
.conc-tbl td { padding: 4px 8px; border-bottom: 1px solid var(--orfeo-form-border); }
.conc-tbl tbody tr:hover { background: var(--orfeo-accent-a08); }
.conc-tbl tbody tr.conc-row-ok { background: #ecfdf5; }
.conc-tbl tbody tr.conc-row-ok:hover { background: #d1fae5; }
.conc-tbl .num { text-align: right; font-family: 'Cascadia Code','Consolas',monospace; }
.conc-tbl tfoot td { background: var(--orfeo-form-surface); border-top: 2px solid var(--orfeo-form-border-strong); font-weight: 600; padding: 5px 8px; }
.conc-empty { text-align: center; color: var(--orfeo-mid); padding: 20px; font-style: italic; }

.conc-footer {
    background: var(--orfeo-form-surface-hover); border-top: 1px solid var(--orfeo-form-border-strong);
    padding: 6px 10px;
    display: flex; align-items: center; gap: 6px;
    font-size: 0.82rem;
}
.conc-info { flex: 1; color: var(--orfeo-dark); font-weight: 600; }

/* === Sidebar inmovilizado / vista lateral filtros estilo desktop === */
.inmo-side {
    width: 220px;
    background: #f8f8f8;
    border-right: 1px solid #c5c8d0;
    padding: 10px 12px;
    overflow-y: auto;
    font-size: 0.85rem;
}
.inmo-side-grp { margin-bottom: 14px; padding-bottom: 12px; border-bottom: 1px solid #e5e7eb; }
.inmo-side-grp:last-child { border-bottom: none; }
.inmo-side-h {
    font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px;
    color: #6b6d78; margin-bottom: 6px;
}
.inmo-radio {
    display: flex; align-items: center; gap: 6px;
    padding: 3px 4px; cursor: pointer;
    font-size: 0.85rem;
}
.inmo-radio:hover { background: #e5e7eb; border-radius: 3px; }
.inmo-side-stats > div {
    display: flex; justify-content: space-between;
    padding: 3px 0;
    font-size: 0.82rem;
}
.inmo-side-stats span { color: var(--orfeo-mid); }
.inmo-side-stats strong { font-family: 'Cascadia Code','Consolas',monospace; color: #1f2937; }

/* === Tipos de IVA badges === */
.iva-tipo-badge { padding: 2px 8px; border-radius: 3px; font-size: 0.72rem; font-weight: 600; font-family: 'Cascadia Code',monospace; }
.iva-tipo-normal { background: #e2e8f0; color: #334155; }
.iva-tipo-reducido { background: var(--orfeo-form-surface-hover); color: var(--orfeo-accent); }
.iva-tipo-superreducido { background: var(--orfeo-form-surface-hover); color: var(--orfeo-accent); }
.iva-tipo-exento { background: #e5e7eb; color: #4b5563; }
.iva-tipo-nosujeto { background: #fecaca; color: #991b1b; }
.iva-tipo-intracomunitario { background: #ede9fe; color: #5b21b6; }
.iva-tipo-recargo { background: #d1fae5; color: #065f46; }

/* Empresa config form rows */
.emp-row { display: flex; align-items: center; gap: 10px; padding: 6px 0; font-size: 0.88rem; flex-wrap: wrap; }
.emp-row label { width: 220px; flex-shrink: 0; color: var(--orfeo-mid); font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.emp-row select, .emp-row input:not([type="checkbox"]) { min-height: 28px; box-sizing: border-box; }

/* Pie de popup estándar (botones de acción) — reemplaza inline styles dispersos */
.popup-card-footer {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    align-items: center;
    padding: 10px 14px;
    border-top: 1px solid var(--orfeo-form-border);
    background: var(--orfeo-form-surface);
    border-radius: 0 0 6px 6px;
    flex-shrink: 0;
}

/* Barra de información al pie de grilla (conteo de filas, etc.) */
.popup-info-bar {
    display: flex;
    align-items: center;
    padding: 8px 4px;
    background: var(--orfeo-form-surface);
    border-top: 1px solid var(--orfeo-form-border);
    margin-top: 8px;
    font-size: 0.82rem;
    color: var(--orfeo-mid);
}

/* Ficha cuenta (F1 / buscador / plan): formulario apilado legible */
.ficha-cta-popup {
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid var(--orfeo-form-border-strong, #c5c8d0);
    border-radius: 6px;
    width: 880px;
    max-width: 96vw;
    max-height: 84vh;
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25);
    overflow: hidden;
}
.ficha-cta-head {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    color: #fff;
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%);
    border-radius: 6px 6px 0 0;
}
.ficha-cta-head strong {
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1.25;
}
.ficha-cta-head-close {
    margin-left: auto;
    background: transparent;
    border: 0;
    color: #fff;
    font-size: 1.2rem;
    cursor: pointer;
    line-height: 1;
    padding: 2px 6px;
    border-radius: 4px;
}
.ficha-cta-head-close:hover {
    background: rgba(255, 255, 255, 0.12);
}
.ficha-cta-layout {
    display: flex;
    flex: 1;
    min-height: 420px;
    overflow: hidden;
}
.ficha-cta-nav {
    width: 196px;
    flex-shrink: 0;
    background: #f3f4f7;
    border-right: 1px solid var(--orfeo-form-border-strong, #c5c8d0);
    padding: 8px 0;
    overflow: auto;
}
.ficha-cta-nav-btn {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 9px 14px;
    border: 0;
    border-left: 3px solid transparent;
    background: transparent;
    color: #3a3f4a;
    font-size: 0.84rem;
    text-align: left;
    cursor: pointer;
}
.ficha-cta-nav-btn:hover {
    background: rgba(255, 255, 255, 0.65);
}
.ficha-cta-nav-btn.is-active {
    background: #fff;
    border-left-color: var(--orfeo-accent);
    color: var(--orfeo-dark);
    font-weight: 600;
}
.ficha-cta-content {
    flex: 1;
    overflow: auto;
    padding: 16px 18px;
    background: #eef0f4;
}
.ficha-cta-panel {
    background: #fff;
    border: 1px solid var(--orfeo-form-border-strong, #c5c8d0);
    border-radius: 6px;
    padding: 16px 18px 14px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.ficha-cta-seccion-titulo {
    margin: 0 0 14px;
    padding-bottom: 8px;
    border-bottom: 1px solid #e8eaef;
    font-size: 0.98rem;
    font-weight: 600;
    color: var(--orfeo-dark);
}
.ficha-cta-subtitulo {
    margin: 18px 0 10px;
    font-size: 0.9rem;
    font-weight: 600;
    color: #404650;
}
.ficha-cta-fields {
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.ficha-cta-row {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 5px;
}
.ficha-cta-row > label {
    width: auto;
    margin: 0;
    font-size: 0.72rem;
    font-weight: 600;
    color: #5c6370;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.ficha-cta-row > label.ficha-cta-check {
    flex-direction: row;
    align-items: center;
    gap: 8px;
    text-transform: none;
    font-size: 0.88rem;
    font-weight: 500;
    color: #2f3440;
    letter-spacing: 0;
}
.ficha-cta-input,
.ficha-cta-popup select.ficha-cta-input,
.ficha-cta-popup .ficha-cta-row select.conc-input,
.ficha-cta-popup .ficha-cta-row input.conc-input:not([type="checkbox"]) {
    width: 100% !important;
    max-width: 100%;
    box-sizing: border-box;
    border: 1px solid #b8bcc6 !important;
    border-radius: 4px;
    padding: 7px 10px;
    font-size: 0.88rem;
    background: #fff;
    color: var(--orfeo-dark);
    transition: border-color 0.15s, box-shadow 0.15s;
}
.ficha-cta-input:focus,
.ficha-cta-popup .ficha-cta-row input.conc-input:focus,
.ficha-cta-popup .ficha-cta-row select.conc-input:focus {
    outline: none;
    border-color: var(--orfeo-accent) !important;
    box-shadow: 0 0 0 3px var(--orfeo-accent-a13, rgba(180, 83, 9, 0.12));
}
.ficha-cta-input:disabled,
.ficha-cta-popup .ficha-cta-row input.conc-input:disabled {
    background: #f3f4f6;
    color: #6b7280;
    cursor: not-allowed;
}
.ficha-cta-input[readonly] {
    background: #f8f9fb;
    color: #4b5563;
}
.ficha-cta-codigo-wrap {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}
.ficha-cta-codigo-wrap .ficha-cta-input {
    flex: 1;
    min-width: 0;
}
.ficha-cta-hint {
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--orfeo-mid, #5c6370);
    text-transform: none;
    letter-spacing: 0;
}
.ficha-cta-inline-grid {
    display: grid;
    grid-template-columns: 110px minmax(0, 1fr);
    gap: 12px;
}
.ficha-cta-inline-grid--3 {
    grid-template-columns: 110px minmax(0, 1fr) minmax(0, 1fr);
}
.ficha-cta-inline-grid--eq {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ficha-cta-checks {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 12px 14px;
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    border-radius: 4px;
}
.ficha-cta-checks .ficha-cta-check {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    font-size: 0.88rem;
    font-weight: 500;
    color: #2f3440;
    cursor: pointer;
    text-transform: none;
    letter-spacing: 0;
}
.ficha-cta-aviso {
    margin-top: 12px;
    padding: 10px 12px;
    border: 1px solid #e5e7eb;
    border-radius: 4px;
    background: #f9fafb;
    font-size: 0.8rem;
    color: var(--orfeo-mid);
    line-height: 1.45;
}
.ficha-cta-aviso--warn {
    background: var(--orfeo-form-surface-hover, #fff8e8);
    border-color: var(--orfeo-form-border-strong, #e0d0a8);
    color: #7a5b00;
}
.ficha-cta-validacion {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-top: 4px;
    font-size: 0.78rem;
}
.ficha-cta-validacion.is-ok { color: #1d6f42; }
.ficha-cta-validacion.is-ko { color: #c00; }
.ficha-cta-sep-block {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px dashed #d4d4d8;
}
.ficha-cta-foot {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    padding: 10px 14px;
    border-top: 1px solid #e0e0e6;
    background: #f7f7fa;
    border-radius: 0 0 6px 6px;
}
.ficha-cta-loading {
    padding: 36px 20px;
}
.ficha-cta-popup .ficha-cta-row:has(> label > input[type="checkbox"]) {
    padding-left: 0;
}
.emp-tabs { display: flex; gap: 2px; }

/* === Biblioteca de terceros — sidebar A-Z === */
.biblio-side {
    width: 36px;
    background: #f8f8f8;
    border-right: 1px solid #c5c8d0;
    display: flex; flex-direction: column;
    padding: 4px 0;
}
.biblio-letra {
    border: none; background: transparent;
    padding: 4px 0; font-size: 0.75rem; font-weight: 600;
    cursor: pointer; color: #4a4d57;
    border-bottom: 1px solid #e5e7eb;
    text-align: center;
}
.biblio-letra:hover { background: #e5e7eb; }
.biblio-letra-sel { background: #5c6370; color: #fff; }
.biblio-letra-sel:hover { background: #475569; }
.biblio-letra .biblio-nav-ico {
    font-size: 1rem; margin-right: 0.45em; vertical-align: -0.12em;
    color: #64748b;
}
.biblio-letra-sel .biblio-nav-ico { color: #fff !important; }

/* === Fichero clientes / proveedores (escritorio Orfeo) === */
.fichero-clipro-page .fichero-clipro-ribbon {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 16px;
    padding: 10px 0 4px;
    border-top: 1px solid var(--orfeo-form-border);
}
.fichero-clipro-grupo {
    display: flex;
    flex-direction: column-reverse;
    align-items: center;
    gap: 2px;
}
.fichero-clipro-grupo-lbl {
    font-size: 0.68rem;
    color: #6b7280;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}
.fichero-clipro-btns {
    display: flex;
    gap: 2px;
}
.fichero-clipro-page .inv-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 8px 12px;
    min-width: 68px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 3px;
    cursor: pointer;
    font-size: 0.7rem;
    line-height: 1.05;
    color: #3a3a3a;
}
.fichero-clipro-page .inv-btn:hover:not(:disabled) {
    background: var(--orfeo-form-surface-hover);
    border-color: var(--orfeo-form-border-strong);
}
.fichero-clipro-page .inv-btn:disabled { opacity: 0.45; cursor: default; }
.fichero-clipro-page .inv-btn span { text-align: center; }
.fichero-clipro-side {
    width: 92px;
    padding: 14px 10px;
    align-items: stretch;
    background: #f8f9fa;
}
.fichero-clipro-side-lbl {
    font-size: 0.7rem;
    font-weight: 600;
    color: #4a4d57;
    margin-bottom: 4px;
}
.fichero-clipro-grid-wrap {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    margin: 10px 12px 10px 0;
    background: #fff;
    border: 1px solid #d8dce3;
    border-radius: 6px;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.fichero-clipro-buscar {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    border-bottom: 1px solid #e5e7eb;
    background: #fafbfc;
}
.fichero-clipro-page .diario-body {
    background: #f3f4f6;
}
.fichero-clipro-page .fichero-clipro-grid.dxbl-grid,
.fichero-clipro-page .fichero-clipro-grid .dxbl-grid {
    font-size: 0.78rem !important;
}
.fichero-clipro-page .fichero-clipro-grid tbody > tr > td {
    padding: 3px 8px !important;
    line-height: 1.25 !important;
    vertical-align: middle;
    font-size: 0.78rem !important;
    font-weight: 400 !important;
}
.fichero-clipro-page .fichero-clipro-grid .dxbl-grid-cell-content {
    font-size: 0.78rem !important;
    font-weight: 400 !important;
}
.fichero-clipro-page .fichero-clipro-grid .dxbl-grid-header-row th {
    padding: 4px 8px !important;
    font-size: 0.72rem !important;
}
.fichero-clipro-page .fichero-clipro-grid .iva-mono {
    font-size: 0.78rem !important;
    font-weight: 500 !important;
}
.fichero-clipro-buscar-inp { flex: 1; max-width: 420px; }
.fichero-clipro-grid { flex: 1; min-height: 0; }

/* === Home (pantalla principal) — acento ocre; el resto de la app usa gris pizarra === */
.hm-page { display: flex; flex-direction: column; height: 100%; background: #f4f4f4; overflow:auto; }
.hm-header {
    background: #fff; padding: 10px 18px;
    border-bottom: 1px solid #d4d4d4;
    display: flex; align-items: center; gap: 24px;
    font-size: 0.92rem;
}
.hm-fecha { font-weight: 600; color: var(--orfeo-dark); display: flex; gap: 6px; align-items: center; }
.hm-fecha > i { color: var(--orfeo-ochre); }
.hm-empresa { color: #4a4d57; display: flex; gap: 6px; align-items: center; }
.hm-empresa > i { color: var(--orfeo-ochre); opacity: 0.88; }

.hm-tabs {
    background: #fff; padding: 0 18px;
    border-bottom: 1px solid #d4d4d4;
    display: flex; gap: 24px;
}
.hm-tab {
    background: transparent; border: none; padding: 10px 0;
    font-size: 0.92rem; cursor: pointer; color: #4a4d57;
    border-bottom: 3px solid transparent;
}
.hm-tab:hover { color: var(--orfeo-ochre); }
.hm-tab-act { color: var(--orfeo-ochre); border-bottom-color: var(--orfeo-ochre); font-weight: 600; }
.hm-tab-link {
    margin-left: auto;
    color: var(--orfeo-success);
    font-size: 0.85rem;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.hm-tab-link:hover { color: var(--orfeo-ochre); }

.hm-tools-strip {
    margin: 0 12px 10px;
    padding: 12px 14px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 6px;
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(420px, 1.1fr);
    align-items: stretch;
    gap: 16px;
}
.hm-tools-block {
    min-width: 0;
}
.hm-tools-block-accesos {
    display: flex;
    flex-direction: column;
}
.hm-tools-block-tesoreria {
    padding-left: 18px;
    border-left: 1px solid #ece7e0;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
}
.hm-accesos-title {
    font-size: 0.82rem;
    font-weight: 700;
    color: #4a4d57;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    margin-bottom: 10px;
}
.hm-accesos-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(100px, 1fr));
    grid-auto-rows: 1fr;
    gap: 8px;
}
.hm-acceso {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 5px;
    min-height: 62px;
    padding: 9px 6px;
    background: var(--orfeo-form-surface);
    border: 1px solid var(--orfeo-form-border);
    border-radius: 6px;
    color: var(--orfeo-dark);
    font-size: 0.74rem;
    text-decoration: none;
    cursor: pointer;
    transition: background .15s, border-color .15s;
}
.hm-acceso:hover {
    background: var(--orfeo-form-surface-hover);
    border-color: var(--orfeo-ochre);
    color: var(--orfeo-ochre);
}
.hm-acceso i { font-size: 1.22rem; color: var(--orfeo-accent); }
.hm-acceso span { line-height: 1.15; text-align: center; }
.hm-acceso:hover i { color: var(--orfeo-ochre); }

.hm-tesoreria-title {
    font-weight: 600;
    color: var(--orfeo-dark);
    font-size: 0.92rem;
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 6px;
}
.hm-tesoreria-kpis {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    flex: 1 1 auto;
    align-content: stretch;
}
.hm-tes-kpi {
    min-width: 0;
    min-height: 66px;
    padding: 9px 12px;
    border: 1px solid #e5e7eb;
    border-radius: 4px;
    background: #fafafa;
    cursor: pointer;
    text-align: left;
    font-family: inherit;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}
.hm-tes-kpi:hover { border-color: var(--orfeo-ochre); background: var(--orfeo-form-surface-hover); }
.hm-tes-kpi-static { cursor: default; }
.hm-tes-kpi-static:hover { border-color: #e5e7eb; background: #fafafa; }
.hm-tes-lbl { display: block; font-size: 0.72rem; color: var(--orfeo-mid); margin-bottom: 4px; }
.hm-tes-kpi strong { font-size: 1.05rem; color: var(--orfeo-dark); }

.hm-widgets {
    display: grid;
    grid-template-columns: 2fr 2fr 1.2fr 1.2fr;
    gap: 10px; padding: 12px;
    flex: 1;
}
.hm-widget {
    background: #fff;
    border: 1px solid #d4d4d4;
    border-radius: 4px;
    display: flex; flex-direction: column;
    overflow: hidden;
}
.hm-w-h {
    padding: 8px 12px; background: #f8f8f8;
    border-bottom: 1px solid #d4d4d4;
    font-weight: 600; color: var(--orfeo-dark);
    font-size: 0.92rem;
    display: flex; align-items: center; gap: 4px;
}
.hm-w-btn {
    background: transparent; border: none; cursor: pointer;
    padding: 2px 6px; color: var(--orfeo-mid); border-radius: 3px;
    text-decoration: none; font-size: 1rem;
}
.hm-w-btn:hover { background: rgba(192, 97, 74, 0.1); color: var(--orfeo-ochre); }
.hm-w-tbl { width: 100%; border-collapse: collapse; font-size: 0.78rem; }
.hm-w-tbl th { background: #fafafa; padding: 4px 8px; text-align: left; font-weight: 700; color: #4a4d57; border-bottom: 1px solid #e5e7eb; text-transform: uppercase; font-size: 0.7rem; letter-spacing: 0.4px; }
.hm-w-tbl td { padding: 4px 8px; border-bottom: 1px solid #f0f0f0; }
.hm-w-tbl tbody tr:hover { background: #f8fafc; }
.hm-w-empty { text-align: center; color: var(--orfeo-mid); padding: 20px; font-style: italic; }

/* Calculadora */
.hm-w-calc { padding: 0; }
.hm-calc-display {
    background: #fff; border: 1px solid #d4d4d4; margin: 8px;
    padding: 10px 12px; text-align: right;
    font-family: 'Cascadia Code','Consolas',monospace;
    font-size: 1.4rem; font-weight: 600;
    min-height: 40px;
}
.hm-calc-mem { display: grid; grid-template-columns: repeat(5, 1fr); gap: 2px; padding: 0 8px 2px; }
.hm-calc-mem-btn { background: #f0f0f0; color: var(--orfeo-mid); font-size: 0.72rem; padding: 4px 0; }
.hm-calc-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2px; padding: 4px 8px 8px; }
.hm-calc-btn {
    background: #fff; border: 1px solid #d4d4d4; cursor: pointer;
    padding: 8px 0; font-size: 0.92rem; font-weight: 500;
    color: var(--orfeo-dark); border-radius: 3px;
}
.hm-calc-btn:hover { background: #f0f0f0; }
.hm-calc-op { background: var(--orfeo-accent-a13); color: var(--orfeo-ochre); font-weight: 600; }
.hm-calc-eq { background: var(--orfeo-ochre); color: #fff; font-weight: 700; }
.hm-calc-eq:hover { background: var(--orfeo-ochre-hover); }

/* Calendario */
.hm-w-cal { padding: 0; }
.hm-cal-nav { display: flex; align-items: center; gap: 6px; padding: 6px 12px; background: #fafafa; border-bottom: 1px solid #e5e7eb; font-size: 0.85rem; }
.hm-cal-nav strong { flex: 1; text-align: center; }
.hm-cal-arrow { background: transparent; border: none; cursor: pointer; padding: 2px 6px; color: var(--orfeo-mid); }
.hm-cal-arrow:hover { color: var(--orfeo-ochre); }
.hm-cal { width: 100%; border-collapse: collapse; font-size: 0.78rem; }
.hm-cal th { background: #fafafa; padding: 4px 0; text-align: center; color: #4a4d57; font-weight: 600; }
.hm-cal td { text-align: center; padding: 4px 0; cursor: pointer; }
.hm-cal td:hover { background: var(--orfeo-accent-a08); }
.hm-cal-hoy { background: var(--orfeo-ochre); color: #fff; font-weight: 700; border-radius: 3px; }
.hm-cal-otro { color: #ccc; }

.hm-resumen {
    padding: 8px 12px 12px;
    flex: 1;
    overflow: auto;
    background: var(--orfeo-form-surface, #eef0f3);
    width: 100%;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.hm-resumen-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 0;
    width: 100%;
    max-width: none;
    box-sizing: border-box;
}
.hm-resumen-title {
    margin: 0;
    font-size: 1.02rem;
    font-weight: 700;
    color: var(--orfeo-dark);
    display: flex;
    align-items: center;
    gap: 6px;
}
.hm-resumen-title i {
    font-size: 1rem;
    color: var(--orfeo-ochre);
}
.hm-resumen-refresh-btn {
    width: 28px;
    height: 28px;
    min-width: 28px;
    padding: 0;
    border: 1px solid var(--orfeo-border-muted, #d6d3d1);
    background: #fff;
    color: var(--orfeo-mid);
    border-radius: 4px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.hm-resumen-refresh-btn:hover:not(:disabled) {
    background: var(--orfeo-form-surface-hover);
    border-color: var(--orfeo-ochre);
    color: var(--orfeo-ochre);
}
.hm-resumen-refresh-btn:disabled {
    opacity: 0.55;
    cursor: wait;
}
.hm-resumen-refresh-btn i {
    font-size: 1rem;
    line-height: 1;
}
.hm-resumen-section {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 14px 16px;
    margin-bottom: 0;
    width: 100%;
    max-width: none;
    box-sizing: border-box;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
    min-width: 0;
}
.hm-resumen-section-h {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid #e5e7eb;
}
.hm-resumen-section-h h3 {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--orfeo-dark);
}
.hm-resumen-dashb { padding: 0; }
.hm-resumen-dashb .dashb-h:first-child { margin-top: 0; }
.hm-resumen-dashb .dashb-kpis {
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
.hm-resumen-dashb .dashb-indicadores {
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
}
.hm-resumen-cm { margin-bottom: 0; }
.hm-resumen-cm-ind {
    border-left: 4px solid #e5e3dd;
}
.hm-resumen-cm .dashb-kpi-sub {
    margin-top: 2px;
}
.dashb-kpi-h i,
.dashb-ind-h i {
    font-size: 1.1rem;
    color: #475569;
    flex-shrink: 0;
}
/* Escritorio Resumen: dos columnas en pantallas anchas (dashboard | cuadro de mando) */
@media (min-width: 1200px) {
    .hm-resumen {
        display: grid;
        grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
        grid-template-rows: auto 1fr;
        align-items: start;
    }
    .hm-resumen-toolbar {
        grid-column: 1 / -1;
    }
    .hm-resumen > .hm-resumen-section:nth-child(2) {
        grid-column: 1;
        align-self: stretch;
    }
    .hm-resumen > .hm-resumen-section:nth-child(3) {
        grid-column: 2;
        align-self: start;
    }
    .hm-resumen-dashb .dashb-kpis {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .hm-resumen-dashb .dashb-indicadores {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .hm-resumen-cm {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (min-width: 1600px) {
    .hm-resumen {
        grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
    }
    .hm-resumen-dashb .dashb-kpis {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
    .hm-resumen-dashb .dashb-indicadores {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}
.hm-resumen-alertas { margin-top: 14px; }
.hm-resumen-alertas-list {
    margin: 0;
    padding-left: 20px;
    font-size: 0.88rem;
    line-height: 1.6;
}
.hm-resumen-alerta-warn { color: #c00; }
.hm-resumen-alerta-caution { color: #92400e; }
.hm-resumen-alerta-ok { color: #1d6f42; }
.hm-resumen-alerta-link {
    text-decoration: none;
}
.hm-resumen-alerta-link.hm-resumen-alerta-warn,
.hm-resumen-alerta-link.hm-resumen-alerta-warn:visited {
    color: #c00;
}
.hm-resumen-alerta-link.hm-resumen-alerta-warn:hover {
    color: #a00;
    text-decoration: underline;
}
.hm-resumen-alerta-link strong {
    font-weight: 700;
    color: inherit;
}
.hm-page { display: flex; flex-direction: column; min-height: 0; }
.hm-resumen-kpis {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 10px;
}
.hm-resumen-kpi {
    background: #fff;
    border: 1px solid #d4d4d4;
    border-radius: 6px;
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    text-decoration: none;
    color: var(--orfeo-dark);
}
.hm-resumen-kpi:hover { border-color: var(--orfeo-ochre); }
.hm-resumen-kpi span { font-size: 0.78rem; color: var(--orfeo-mid); text-transform: uppercase; letter-spacing: 0.3px; }
.hm-resumen-kpi strong { font-size: 1.35rem; }
.hm-resumen-warn { border-color: #c00; }
.hm-resumen-warn strong { color: #c00; }

@media (max-width: 1380px) {
    .hm-tools-strip {
        grid-template-columns: minmax(0, 1.2fr) minmax(360px, 1fr);
    }

    .hm-accesos-grid {
        grid-template-columns: repeat(3, minmax(100px, 1fr));
    }
}

@media (max-width: 1180px) {
    .hm-tools-strip {
        grid-template-columns: 1fr;
        gap: 12px;
    }

    .hm-tools-block-tesoreria {
        padding-left: 0;
        border-left: 0;
        border-top: 1px solid #ece7e0;
        padding-top: 12px;
    }

    .hm-accesos-grid {
        grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
    }
}

.hm-recursos { padding: 12px 16px; display: flex; flex-direction: column; gap: 12px; }
.hm-recursos-user {
    display: flex;
    align-items: center;
    gap: 14px;
    background: #fff;
    border: 1px solid #d4d4d4;
    border-radius: 6px;
    padding: 14px 16px;
}
.hm-recursos-avatar {
    width: 52px; height: 52px; border-radius: 50%;
    background: var(--orfeo-accent);
    color: #fff; font-size: 1.4rem; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
}
.hm-recursos-accesos {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
    flex-wrap: wrap;
    min-width: 0;
    padding: 0 4px;
}
.hm-recursos-accesos .hm-acceso {
    min-width: 68px;
    padding: 8px 6px;
    font-size: 0.7rem;
}
.hm-recursos-accesos .hm-acceso i { font-size: 1.25rem; }
.hm-recursos-grid {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 10px;
}
.hm-recursos-tools {
    background: #fff;
    border: 1px solid #d4d4d4;
    border-radius: 4px;
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.hm-recursos-tools-title {
    font-size: 0.78rem;
    font-weight: 700;
    color: #4a4d57;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    margin-bottom: 4px;
}
@media (max-width: 1100px) {
    .hm-recursos-grid { grid-template-columns: 1fr 1fr; }
    .hm-recursos-tools { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; }
}

.hm-noticias {
    padding: 20px;
    background: #fff;
    margin: 12px;
    border: 1px solid #d4d4d4;
    border-radius: 6px;
    display: flex;
    flex-direction: column;
    gap: 18px;
}
.hm-noticias h3 { margin: 0 0 10px 0; }
.hm-noticias ol { padding-left: 20px; }
.hm-noticias li { margin: 6px 0; }
.hm-page .hm-noticias a { color: var(--orfeo-ochre); }
.hm-page .hm-noticias a:hover { color: var(--orfeo-ochre-hover); }
.hm-news-hero {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 18px;
    padding: 18px 20px;
    border: 1px solid #ece7e0;
    border-radius: 8px;
    background: linear-gradient(180deg, #fcfbf8 0%, #f6f3ee 100%);
}
.hm-news-badge {
    display: inline-flex;
    align-items: center;
    padding: 4px 8px;
    margin-bottom: 8px;
    border-radius: 999px;
    background: #efe7d8;
    color: #8a5b17;
    font-size: 0.74rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.35px;
}
.hm-news-hero p {
    margin: 0;
    max-width: 860px;
    color: var(--orfeo-mid);
    line-height: 1.45;
}
.hm-news-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 10px 14px;
    border-radius: 6px;
    border: 1px solid var(--orfeo-ochre);
    background: #fff;
    text-decoration: none;
    white-space: nowrap;
    font-weight: 600;
}
.hm-news-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}
.hm-news-card {
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-width: 0;
    padding: 16px;
    border: 1px solid #e7e5e1;
    border-radius: 8px;
    background: #fbfbfa;
}
.hm-news-card-tag {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--orfeo-accent);
    letter-spacing: 0.35px;
}
.hm-news-card h4 {
    margin: 0;
    font-size: 0.98rem;
    color: var(--orfeo-dark);
}
.hm-news-card p {
    margin: 0;
    color: var(--orfeo-mid);
    line-height: 1.42;
    flex: 1 1 auto;
}
.hm-news-card a {
    text-decoration: none;
    font-weight: 600;
}

@media (max-width: 1180px) {
    .hm-news-hero {
        flex-direction: column;
        align-items: stretch;
    }

    .hm-news-cta {
        align-self: flex-start;
    }

    .hm-news-grid {
        grid-template-columns: 1fr;
    }
}

/* === Etiquetas === */
.et-page {
    background: #fff;
    border: 1px solid #c5c8d0;
    padding: 8mm;
    display: grid;
    gap: 4mm;
    width: 210mm;
    max-width: 100%;
}
.et-etiqueta {
    border: 1px dashed #d4d4d4;
    padding: 4mm;
    font-size: 9pt;
    overflow: hidden;
}
.et-nombre { font-weight: 600; color: var(--orfeo-dark); margin-bottom: 2pt; }
.et-nif { font-family: 'Cascadia Code',monospace; font-size: 7.5pt; color: var(--orfeo-mid); }
.et-dir, .et-loc { font-size: 7.5pt; color: #4a4d57; }

/* === Atena chat === */
.atena-msg { max-width: 80%; padding: 10px 14px; border-radius: 8px; }
.atena-msg-user { align-self: flex-end; background: #5c6370; color: #fff; }
.atena-msg-bot { align-self: flex-start; background: #fff; border: 1px solid #d4d4d4; }
.atena-msg-h { font-size: 0.72rem; opacity: 0.75; font-weight: 700; margin-bottom: 4px; text-transform: uppercase; }
.atena-msg-c { font-size: 0.92rem; line-height: 1.4; white-space: pre-wrap; }
.atena-bienvenida { text-align: center; padding: 40px 20px; color: var(--orfeo-mid); }
.atena-bienvenida h2 { color: var(--orfeo-dark); margin: 0 0 8px 0; }
.atena-bienvenida p { font-size: 0.95rem; }

/* === Listado oficial impreso === */
.lo-pagina {
    background: #fff;
    width: 297mm; min-height: 100vh;
    margin: 8px auto;
    padding: 12mm;
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
    font-family: 'Calibri',Arial,sans-serif;
}
.lo-cab {
    display: flex; align-items: flex-start;
    border-bottom: 2px solid #000;
    padding-bottom: 8px; margin-bottom: 12px;
    font-size: 0.85rem;
}
.lo-cab h2 { font-size: 1.05rem; }
.lo-tbl { width: 100%; border-collapse: collapse; font-size: 0.83rem; font-family: var(--font-sans); }
.lo-tbl th { border-bottom: 2px solid var(--orfeo-form-border-strong); padding: 4px 8px; text-align: left; font-size: 0.74rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.03em; color: var(--orfeo-mid); background: var(--orfeo-form-surface); }
.lo-tbl td { padding: 3px 8px; border-bottom: 1px solid var(--orfeo-form-border); }
.lo-tbl tbody tr:hover td { background: var(--orfeo-accent-a08); }
.lo-tbl .num { text-align: right; }
.lo-tbl tfoot td { border-top: 2px solid var(--orfeo-form-border-strong); padding: 5px 8px; font-weight: 600; background: var(--orfeo-form-surface); }

/* Listado clientes / proveedores (ventana tipo escritorio) */
.lo-pagina--ventana {
    width: 100%; max-width: none; min-height: 0; margin: 0;
    padding: 14px 18px 10px; box-shadow: none;
}
.lo-cab--cli-pro { border-bottom: 1px solid #000; margin-bottom: 10px; padding-bottom: 6px; }
.lo-cab--cli-pro .lo-cab-empresa {
    flex: 1; font-size: 0.82rem;
    display: flex; align-items: center; gap: 10px; min-width: 0;
}
.lo-cab-logo {
    max-height: 48px; max-width: 120px; object-fit: contain;
    flex-shrink: 0;
}
.lo-cab-empresa-texto { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.lo-cab-empresa-texto strong { line-height: 1.2; }
.lo-cab-cif { font-size: 0.76rem; color: #555; }
.lo-cab--cli-pro .lo-cab-titulo { flex: 2; text-align: center; }
.lo-cab--cli-pro .lo-cab-titulo h2 { margin: 0; font-size: 1rem; font-weight: 700; letter-spacing: 0.02em; }
.lo-cab--cli-pro .lo-cab-fecha { flex: 1; text-align: right; font-size: 0.78rem; white-space: nowrap; }
.lo-tbl-wrap { overflow: auto; max-height: calc(92vh - 160px); }
.lo-tbl--cli-pro th { background: #fff; font-weight: 600; border-bottom: 1px solid #000; }
.lo-tbl--cli-pro td { font-size: 0.82rem; border-bottom: none; vertical-align: top; }
.lo-tbl--cli-pro .col-cuenta { width: 11%; }
.lo-tbl--cli-pro .col-razon { width: 32%; }
.lo-tbl--cli-pro .col-nif { width: 10%; }
.lo-tbl--cli-pro .col-pob { width: 16%; }
.lo-tbl--cli-pro .col-tel { width: 12%; }
.lo-tbl--cli-pro .col-email { width: 19%; }
.lo-pie-conteo { margin-top: 10px; font-size: 0.8rem; color: #444; }
.lo-cargando, .lo-sin-datos { padding: 24px; text-align: center; color: #666; font-size: 0.9rem; }
.lo-popup-shell {
    background: #fff; border: 1px solid #b8bcc6; border-radius: 4px;
    width: 1060px; max-width: 97vw; max-height: 92vh;
    display: flex; flex-direction: column; box-shadow: 0 10px 32px rgba(0,0,0,.28);
    overflow: hidden;
}
.lo-popup-bar {
    display: flex; align-items: center; gap: 8px;
    background: linear-gradient(180deg, #5a5f6a 0%, #3d424c 100%);
    color: #fff; padding: 8px 12px; flex-shrink: 0;
}
.lo-popup-bar strong { font-size: 0.92rem; font-weight: 600; }
.lo-popup-bar-actions { margin-left: auto; display: flex; gap: 4px; }
.lo-popup-btn {
    background: rgba(255,255,255,.12); border: 0; color: #fff;
    width: 30px; height: 28px; border-radius: 3px; cursor: pointer;
    display: flex; align-items: center; justify-content: center;
}
.lo-popup-btn:hover { background: rgba(255,255,255,.28); }
.lo-popup-btn--cerrar { font-size: 1rem; }
.lo-popup-body { flex: 1; overflow: auto; background: #fff; }

@media print {
    .diario-header, .diario-footer, .inmo-side { display: none !important; }
    .lo-pagina { box-shadow: none; margin: 0; padding: 8mm; width: auto; }
}

/* === Wizard pasos === */
.wiz-step {
    width: 36px; height: 36px; border-radius: 50%;
    background: #e5e7eb; color: #6b6d78;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 0.95rem;
    cursor: pointer; transition: all .15s;
}
.wiz-step:hover { background: #d4d4d4; }
.wiz-step-act { background: #7c3aed; color: #fff; box-shadow: 0 0 0 4px rgba(124,58,237,0.2); }
.wiz-step-done { background: var(--orfeo-success); color: #fff; }
.wiz-line { flex: 1; height: 2px; background: #e5e7eb; }

/* === Ratios financieros === */
.ratios-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; }
.ratio-card { background: #fff; border: 1px solid #d4d4d4; border-radius: 6px; padding: 14px 16px; box-shadow: 0 1px 2px rgba(0,0,0,0.04); }
.ratio-h { font-size: 0.92rem; font-weight: 600; color: var(--orfeo-dark); display: flex; align-items: center; gap: 6px; }
.ratio-num { font-size: 2rem; font-weight: 700; font-family: 'Cascadia Code',monospace; line-height: 1.1; margin: 8px 0; }
.ratio-formula { font-size: 0.78rem; color: var(--orfeo-mid); font-style: italic; padding: 4px 0; border-top: 1px dashed #e5e7eb; }
.ratio-detalle { display: flex; gap: 14px; margin: 6px 0; font-size: 0.78rem; }
.ratio-detalle > div { display: flex; flex-direction: column; }
.ratio-detalle span { color: var(--orfeo-mid); font-size: 0.7rem; text-transform: uppercase; }
.ratio-detalle strong { font-family: 'Cascadia Code',monospace; }
.ratio-interpret { padding: 6px 8px; border-radius: 3px; font-size: 0.82rem; margin-top: 6px; }
.ratio-bueno { background: #d1fae5; color: #065f46; }
.ratio-regular { background: var(--orfeo-form-surface-hover); color: var(--orfeo-accent); }

/* === Estadísticas / Gráfico barras === */
.estadis-grafico { background: #fff; border: 1px solid #d4d4d4; padding: 18px; border-radius: 4px; min-height: 320px; }
.estadis-meses { display: grid; grid-template-columns: repeat(12, 1fr); gap: 8px; height: 280px; align-items: end; }
.estadis-mes-col { display: flex; align-items: flex-end; height: 240px; gap: 2px; padding: 0 2px; }
.estadis-bar { flex: 1; min-height: 2px; border-radius: 2px 2px 0 0; }
.estadis-mes-lbl { text-align: center; font-size: 0.78rem; color: var(--orfeo-mid); padding-top: 6px; text-transform: capitalize; grid-row: 2; }

/* === Cuadro mando ejecutivo === */
.cm-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.cm-card { background: #fff; border: 1px solid #d4d4d4; border-left: 4px solid #6b7280; border-radius: 6px; padding: 14px 16px; }
.cm-card-success { border-left-color: var(--orfeo-success); }
.cm-card-warning { border-left-color: var(--orfeo-accent); }
.cm-card-danger { border-left-color: #c00; }
.cm-card-info { border-left-color: #0e7490; }
.cm-h { font-size: 0.85rem; color: var(--orfeo-mid); margin-bottom: 6px; }
.cm-num { font-size: 1.7rem; font-weight: 700; font-family: 'Cascadia Code',monospace; color: var(--orfeo-dark); line-height: 1.1; }
.cm-sub { font-size: 0.78rem; color: var(--orfeo-mid); margin-top: 4px; }

/* === Popup host (stack de modales en cadena) === */
.popup-host-layer {
    position: fixed;
    inset: 0;
    /* Por encima de DxPopup (.dxbl-modal-root = 10000) para fichas apiladas desde F1, etc. */
    z-index: 11000;
    /* Modal estricto: bloquea clic y foco en la página de detrás. */
    pointer-events: auto;
}
.popup-host-layer .popup-host-backdrop,
.popup-host-layer .popup-host-window,
.popup-host-layer .popup-host-content,
.popup-host-layer .ficha-cta-popup {
    pointer-events: auto;
}
.popup-host-mensajes {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 11010;
    pointer-events: auto;
}
.page-ribbon--modal-open {
    user-select: none;
}
.popup-host-backdrop {
    position: fixed; inset: 0;
    background: rgba(0, 0, 0, 0.4);
    z-index: 11000;
    display: flex; align-items: center; justify-content: center;
    animation: ph-fade .12s ease-out;
    cursor: default;
}
.popup-host-window {
    /* El marco visible lo pinta el shell hijo; evitar doble caja blanca */
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
    max-width: 96vw;
    max-height: 92vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    animation: ph-slide .15s ease-out;
}
/* ── Unificación del MARCO de los popups tipo tarjeta ──
   El shell hijo de cada popup pinta su propio borde/radio/sombra y hay valores
   divergentes (4px vs 6px, colores y sombras distintas). Aquí se igualan TODOS
   en un solo sitio. Se EXCLUYEN los popups a pantalla completa, vistas previas e
   impresión (llevan marco propio). */
.popup-host-window:not(:has(.pagina-en-popup-shell)):not(:has(.conc-shell)):not(:has(.orfeo-print-preview-root)):not(:has(.orfeo-doc-preview-root)):not(:has(.orfeo-rm-print-root)) > * {
    border: 1px solid #c5c8d0 !important;
    border-radius: 6px !important;
    box-shadow: 0 8px 30px rgba(0, 0, 0, .25) !important;
}
/* ── Unificación de las BOTONERAS DE PIE de los popups ──
   Misma alineación (derecha), mismo padding, mismo borde superior y mismo fondo,
   para que los botones de acción queden a la misma altura/forma en TODOS los
   formularios. Se excluyen: filas de totales, spacers y el pie del modelo 202
   (fiscalidad). */
.popup-host-window [class*="footer"]:not([class*="spacer"]):not([class*="totals"]):not([class*="mod202"]),
.popup-host-window [class*="form-btns"],
.popup-host-window .wiz-actions,
.popup-host-window .notif-actions,
.popup-host-window .larr-modal-actions,
.popup-host-window .ofim-actions,
.popup-host-window .ofcd-actions,
.popup-host-window .lo-popup-bar-actions {
    display: flex !important;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end !important;
    gap: 10px !important;
    padding: 14px 20px !important;
    border-top: 1px solid var(--orfeo-form-border, #e8e8ec) !important;
    background: var(--orfeo-form-surface, #f7f7fa) !important;
}
/* ── Unificación del COLOR DE CABECERA de los popups ──
   Se igualan al gris pizarra estándar las cabeceras NEUTRAS (gris-azulado, azul,
   gris-claro). Se RESPETAN los colores semánticos: rojo = descuadres/errores
   (ldes, diva) y verde = asentar/crear (arem, afact, cef, nej). */
.cfmt-header, .cimp2-header, .clib-header, .ctpl-header,
.dfact-header, .dinf-header, .fact-header, .ifact-header, .larr-header, .mon-header,
.ofim-header, .pgc-header, .prlot-header, .relim-header, .smod-header, .cpf-header,
.efh-header, .dbor-header, .lfa-header {
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%) !important;
    color: #fff !important;
}
/* Las dos cabeceras que eran gris-claro con texto oscuro: forzar texto/icono claros */
.dbor-header *, .lfa-header * { color: #fff !important; }

/* ── Toolbar de popups: CAJA BLANCA uniforme (estándar Transferencias) ──
   Convierte las barras grises de los popups de informe/consulta al mismo estilo
   de caja blanca con borde redondeado. Solo afecta al CONTENEDOR de la barra. */
.dep-ribbon, .dbor-ribbon, .drc-ribbon, .ilr-ribbon, .mex-ribbon, .tri-ribbon,
.sse-ribbon, .ret-ribbon, .prev-ribbon, .pla-ribbon, .lfa-ribbon, .iva-ribbon,
.igc-ribbon, .etq-ribbon, .est-ribbon, .cuf-ribbon, .chp-ribbon, .cf-ribbon,
.caa-ribbon, .ana-ribbon, .aeat-hist-ribbon {
    background: var(--orfeo-form-surface) !important;
    border: 1px solid var(--orfeo-form-border-strong) !important;
    border-radius: 4px !important;
    margin: 8px !important;
    padding: 4px 6px !important;
    align-items: stretch !important;
}
/* Toolbars planos (sin grupos) → también a caja blanca. flex-end: seguro para fila simple.
   Excluidos Modelos AEAT (m111…m425, aeat, cfis) y tax-adjacent (prlot, larr, rten). */
.afact-ribbon, .agcu-ribbon, .arem-ribbon, .cef-ribbon, .cfmt-ribbon, .chpg-ribbon,
.cimp-ribbon, .cimp2-ribbon, .clib-ribbon, .cpre-ribbon, .ctpl-ribbon, .dbox-ribbon,
.dinf-ribbon, .diva-ribbon, .ebco-ribbon, .egrf-ribbon, .fact-ribbon, .flst-ribbon,
.ifact-ribbon, .ldes-ribbon, .mon-ribbon, .pgc-ribbon, .pres-ribbon, .relim-ribbon,
.smod-ribbon {
    background: var(--orfeo-form-surface) !important;
    border: 1px solid var(--orfeo-form-border-strong) !important;
    border-radius: 4px !important;
    margin: 8px !important;
    padding: 4px 6px !important;
    align-items: flex-end !important;
}
.popup-host-content {
    flex: 1;
    min-height: 0;
    overflow: auto;
}
.popup-host-content > * {
    max-height: none !important;
}
/* Vista previa HTML: hoja blanca completa (estilos globales; el HTML inyectado no recibe CSS scoped) */
.popup-host-backdrop:has(.orfeo-print-preview-root) {
    background: rgba(0, 0, 0, 0.45);
}
.popup-host-window:has(.orfeo-print-preview-root) {
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
    max-width: none;
    max-height: none;
    overflow: visible;
}
.orfeo-print-preview-root {
    background: #fff;
    border: 1px solid #c5c8d0;
    border-radius: 6px;
    width: 1100px;
    max-width: 98vw;
    height: 780px;
    max-height: 95vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3);
    overflow: hidden;
}
.orfeo-print-preview-head {
    background: linear-gradient(180deg, #c0614a 0%, #a84f3a 100%);
    color: #fff;
    padding: 10px 14px;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
.orfeo-print-preview-body {
    flex: 1;
    display: flex;
    min-height: 0;
}
.orfeo-print-preview-side {
    width: 180px;
    background: linear-gradient(180deg, #a84f3a 0%, #8b3a2a 100%);
    color: #fff;
    padding: 14px 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex-shrink: 0;
}
.orfeo-print-preview-stage {
    flex: 1;
    background: #525659;
    overflow: auto;
    padding: 20px;
    display: flex;
    justify-content: center;
    align-items: flex-start;
}
.orfeo-print-preview-root--landscape {
    width: min(1320px, 98vw);
    height: min(860px, 95vh);
}
.orfeo-print-preview-root--landscape .orfeo-print-preview-sheet {
    width: 297mm;
    min-height: 210mm;
}
/* Vertical y apaisado: escalar o estirar tabla al ancho del folio (JS) */
.orfeo-print-preview-content--fit {
    overflow-x: hidden;
    overflow-y: visible;
}
.orfeo-print-preview-content--fit > div,
.orfeo-print-preview-content--fit .orfeo-print-preview-scale-inner {
    overflow: visible !important;
    max-width: none !important;
}
.orfeo-print-preview-scale-inner {
    transform-origin: top left;
}
.orfeo-print-scale--fit {
    display: inline-block;
}
.orfeo-print-scale--stretch {
    display: block;
    width: 100%;
}
.orfeo-print-scale--stretch table {
    width: 100% !important;
    table-layout: fixed;
}
.orfeo-print-scale--stretch th,
.orfeo-print-scale--stretch td {
    overflow-wrap: break-word;
    word-break: break-word;
}
.orfeo-print-scale--stretch th.num,
.orfeo-print-scale--stretch td.num,
.orfeo-print-scale--stretch td.mono {
    white-space: nowrap;
}
.orfeo-print-preview-content--fit .orfeo-print-scale--fit table {
    width: auto !important;
    max-width: none !important;
}
.orfeo-print-preview-content--fit .orfeo-print-scale--stretch table,
.orfeo-print-preview-content table.fit-stretch {
    width: 100% !important;
    table-layout: fixed;
}
.orfeo-print-wide-tbl {
    font-size: 7.5px;
    table-layout: auto;
    width: auto;
}
.orfeo-print-preview-content--fit .orfeo-print-wide-tbl th,
.orfeo-print-preview-content--fit .orfeo-print-wide-tbl td {
    padding: 2px 4px;
}
.orfeo-print-wide-tbl th.col-cuenta,
.orfeo-print-wide-tbl td.col-cuenta {
    white-space: nowrap;
    width: 72px;
}
.orfeo-print-wide-tbl th.col-titulo,
.orfeo-print-wide-tbl td.col-titulo {
    white-space: normal;
    word-break: break-word;
    min-width: 88px;
    max-width: 140px;
}
.orfeo-print-wide-tbl th.col-doc,
.orfeo-print-wide-tbl td.col-doc {
    white-space: nowrap;
    max-width: 72px;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* Apaisado: tabla ancha a todo el ancho del folio (sin solapar concepto/docum.) */
.orfeo-print-preview-root--landscape .orfeo-print-scale--stretch .orfeo-print-wide-tbl.fit-stretch-landscape {
    width: 100% !important;
    table-layout: fixed;
    font-size: 8px;
}
.orfeo-print-preview-root--landscape .orfeo-print-scale--stretch .orfeo-print-wide-tbl.fit-stretch-landscape th.col-titulo,
.orfeo-print-preview-root--landscape .orfeo-print-scale--stretch .orfeo-print-wide-tbl.fit-stretch-landscape td.col-titulo {
    max-width: none;
    width: 26%;
}
.orfeo-print-preview-root--landscape .orfeo-print-scale--stretch .orfeo-print-wide-tbl.fit-stretch-landscape th.col-doc,
.orfeo-print-preview-root--landscape .orfeo-print-scale--stretch .orfeo-print-wide-tbl.fit-stretch-landscape td.col-doc {
    max-width: none;
    width: 10%;
}
.orfeo-print-preview-root--landscape .orfeo-print-scale--stretch .orfeo-print-wide-tbl.fit-stretch-landscape th.col-cuenta,
.orfeo-print-preview-root--landscape .orfeo-print-scale--stretch .orfeo-print-wide-tbl.fit-stretch-landscape td.col-cuenta {
    width: 9%;
}
.orfeo-print-wide-tbl th.num,
.orfeo-print-wide-tbl td.num,
.orfeo-print-wide-tbl td.mono {
    white-space: nowrap;
}
.orfeo-print-wide-tbl.orfeo-print-saldos-cols col.col-num { width: 48px; }
.orfeo-print-wide-tbl.orfeo-print-saldos-cols col.col-total { width: 54px; }
.orfeo-print-preview-orient {
    padding: 0 0 10px 0;
    margin: 0 0 8px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}
.orfeo-print-preview-orient-lbl {
    font-size: 0.68rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    opacity: 0.75;
    padding: 4px 14px 6px;
}
.prv-btn-active {
    background: rgba(255, 255, 255, 0.18) !important;
    border-left-color: #fff !important;
    font-weight: 600;
}

/* Modal vista previa adjunto apunte (imagen / PDF) */
.popup-host-backdrop:has(.orfeo-doc-preview-root) {
    background: rgba(0, 0, 0, 0.5);
}
.popup-host-window:has(.orfeo-doc-preview-root) {
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
    max-width: none;
    max-height: none;
    overflow: visible;
}
.orfeo-doc-preview-root {
    background: #fff;
    border: 1px solid #c5c8d0;
    border-radius: 8px;
    width: min(920px, 96vw);
    height: min(86vh, 820px);
    max-height: 95vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.35);
    overflow: hidden;
}
.orfeo-doc-preview-head {
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%);
    color: #fff;
    padding: 10px 14px;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
.orfeo-doc-preview-head strong {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.95rem;
}
.orfeo-doc-preview-close {
    margin-left: auto;
    background: transparent;
    border: 0;
    color: #fff;
    font-size: 1.2rem;
    cursor: pointer;
    line-height: 1;
    padding: 2px 4px;
}
.orfeo-doc-preview-body {
    flex: 1;
    min-height: 0;
    background: #2d2d30;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    overflow: auto;
    padding: 12px;
}
.orfeo-doc-preview-img-wrap {
    max-width: 100%;
    max-height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.orfeo-doc-preview-img {
    max-width: 100%;
    max-height: calc(86vh - 120px);
    object-fit: contain;
    border-radius: 4px;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.45);
}
.orfeo-doc-preview-iframe {
    width: 100%;
    flex: 1;
    min-height: 480px;
    border: 0;
    background: #525659;
    border-radius: 4px;
}
.orfeo-doc-preview-msg {
    color: #e2e8f0;
    margin: 0;
    font-size: 0.9rem;
}
.orfeo-doc-preview-dl {
    color: #93c5fd;
    margin-top: 10px;
    font-size: 0.9rem;
}
.orfeo-doc-preview-foot {
    flex-shrink: 0;
    padding: 10px 14px;
    background: #f7f7fa;
    border-top: 1px solid #e2e8f0;
    display: flex;
    justify-content: flex-end;
    gap: 8px;
}

.orfeo-print-preview-sheet {
    background: #fff;
    width: 210mm;
    min-height: 297mm;
    padding: 14mm 16mm;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);
    font-family: 'Segoe UI', Arial, sans-serif;
    font-size: 11px;
    color: #333;
    position: relative;
    flex-shrink: 0;
}
.orfeo-print-preview-sheet-h {
    border-bottom: 2px solid #c0614a;
    margin-bottom: 10px;
    padding-bottom: 6px;
}
.orfeo-print-preview-sheet-title {
    font-size: 14px;
    font-weight: 700;
    color: #c0614a;
}
.orfeo-print-preview-content { overflow-x: hidden; overflow-y: visible; }
.orfeo-print-preview-content table {
    border-collapse: collapse;
    margin-bottom: 12px;
    font-size: 10.5px;
    background: #fff;
    width: auto;
    max-width: none;
}
.orfeo-print-preview-content thead { display: table-header-group; }
.orfeo-print-preview-content tbody { display: table-row-group; }
.orfeo-print-preview-content tr {
    page-break-inside: avoid;
    break-inside: avoid;
    background: #fff;
}
.orfeo-print-preview-content thead th {
    background: #c0614a !important;
    color: #fff !important;
    padding: 5px 7px;
    text-align: left;
    font-size: 10px;
    font-weight: 600;
    border: 1px solid #a84f3a;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}
.orfeo-print-preview-content thead th.num,
.orfeo-print-preview-content td.num { text-align: right; }
.orfeo-print-preview-content tbody td {
    padding: 4px 7px;
    border-bottom: 1px solid #e8e8e8;
    background: #fff;
}
.orfeo-print-preview-content tbody tr:nth-child(even) td { background: #fafafa; }
.orfeo-print-preview-content tfoot td {
    background: #f0f0f0 !important;
    font-weight: 700;
    padding: 5px 7px;
    border-top: 2px solid #c0614a;
    font-size: 10px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}
.orfeo-print-preview-content .grp-header td {
    background: #f0ebe8 !important;
    font-weight: 700;
    color: #7c3a28;
    padding: 5px 7px;
    border-top: 1px solid #d9c5bf;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}
.orfeo-print-preview-content .mono { font-family: Consolas, monospace; }
.prv-btn {
    display: flex;
    align-items: center;
    gap: 8px;
    background: transparent;
    border: 0;
    color: #fff;
    padding: 10px 14px;
    text-align: left;
    cursor: pointer;
    font-size: 0.86rem;
    border-left: 3px solid transparent;
    width: 100%;
}
.prv-btn:hover { background: rgba(255, 255, 255, 0.13); }
.prv-btn i { font-size: 1.05rem; }

/* Vista previa impresión Registro Mercantil (Form_ListadoCuentaAnualesRegistroMercantil) */
/* Cinta cuentas anuales RM — pestaña Declaración + botones rb-btn */
.cs-rm-ribbon-panel {
    flex-shrink: 0;
    background: #ece9e4;
    border-bottom: 1px solid #a8a8a8;
    overflow: visible;
    position: relative;
    z-index: 2;
}
.cs-rm-tab-row {
    padding: 4px 8px 0;
    background: linear-gradient(180deg, #f6f4f0 0%, #ece9e4 100%);
    border-bottom: 1px solid #c8c4bc;
}
.cs-rm-tab-active {
    display: inline-block;
    padding: 5px 14px 4px;
    background: #fff;
    border: 1px solid #a8a8a8;
    border-bottom: 1px solid #fff;
    border-radius: 3px 3px 0 0;
    font-size: .8rem;
    font-weight: 600;
    color: #333;
    margin-bottom: -1px;
}
.cs-rm-ribbon {
    display: flex;
    align-items: flex-end;
    flex-wrap: nowrap;
    padding: 7px 10px 9px;
    background: linear-gradient(180deg, #faf9f7 0%, #f0eeea 100%);
    overflow-x: auto;
    overflow-y: visible;
    min-height: 88px;
}
.cs-rm-ribbon .rb-group {
    align-items: stretch;
    flex: 0 0 auto;
    padding: 0 10px;
}
.cs-rm-ribbon .rb-group-buttons {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    align-content: center;
    gap: 5px;
    flex: 1 1 auto;
    min-height: 58px;
    box-sizing: border-box;
}
.cs-rm-ribbon-panel .rb-group-buttons .rb-btn-wrap {
    width: auto;
    min-width: 0;
    max-width: none;
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    align-self: center;
}
.cs-rm-ribbon .rb-btn {
    min-height: 58px;
    height: 58px;
    max-height: 58px;
    min-width: 72px;
    max-width: 96px;
    flex: 1 1 72px;
    background: #fff;
    box-sizing: border-box;
    justify-content: center;
    padding: 4px 5px;
}
.cs-rm-ribbon .rb-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
.cs-rm-ribbon .rb-btn-label {
    display: block;
    line-height: 1.14;
    width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: 0.61rem;
    text-align: center;
    min-height: 2.2em;
    align-items: center;
    justify-content: center;
}
.cs-rm-ribbon .rb-icon-ph {
    flex-shrink: 0;
}
.cs-rm-ribbon-panel .rb-group-label {
    margin-top: 5px;
    padding-top: 3px;
    border-top-color: #d8dbe1;
    font-size: 0.66rem;
    color: #7a818d;
}
.cs-rm-ribbon-panel .cs-rm-page-status {
    color: #5d6673;
    font-size: 0.66rem;
    letter-spacing: 0;
    text-transform: none;
}
.cs-rm-ribbon-panel .rb-group-sep {
    background: #d0d4db;
    margin: 2px 4px 18px;
}
.cs-rm-ribbon-panel .cs-rm-btn-save .rb-icon-ph { color: #107c10; }
.cs-rm-ribbon-panel .cs-rm-btn-nav .rb-icon-ph { color: #7b818a; }
.cs-rm-ribbon-panel .cs-rm-btn-export .rb-icon-ph,
.cs-rm-ribbon-panel .cs-rm-btn-export .rb-arrow { color: var(--orfeo-form-icon-accent); }
.cs-rm-ribbon-panel .cs-rm-btn-print .rb-icon-ph { color: #c5292a; }
.cs-rm-ribbon-panel .cs-rm-btn-stamp .rb-icon-ph { color: #8a6a2f; }
.cs-rm-ribbon-panel .cs-rm-btn-config .rb-icon-ph { color: #5b6675; }
.cs-rm-ribbon-panel .cs-rm-btn-clear .rb-icon-ph { color: #c5292a; }
.cs-rm-ribbon-panel .cs-rm-btn-calc .rb-icon-ph { color: #4d8f2a; }
.cs-rm-ribbon-panel .cs-rm-btn-info .rb-icon-ph { color: #6b7480; }
.cs-rm-ribbon-panel .cs-rm-btn-util .rb-icon-ph,
.cs-rm-ribbon-panel .cs-rm-btn-util .rb-arrow { color: #6f5a98; }
.cs-rm-ribbon-soc {
    background: #ece9e4;
    border-bottom-color: #b8bcc4;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.75);
}
.cs-rm-ribbon-soc .cs-rm-tab-row {
    padding: 4px 8px 0;
    background: linear-gradient(180deg, #f6f4f0 0%, #ece9e4 100%);
    border-bottom-color: #c8cdd6;
}
.cs-rm-ribbon-soc .cs-rm-tab-active {
    padding: 5px 14px 4px;
    background: #fff;
    border-color: #aab1bc;
    color: #2f3945;
    box-shadow: none;
}
.cs-rm-ribbon-soc .cs-rm-ribbon {
    padding: 7px 10px 9px;
    background: linear-gradient(180deg, #faf9f7 0%, #f0eeea 100%);
    min-height: 88px;
    gap: 0;
}
.cs-rm-ribbon-soc .rb-btn {
    min-height: 58px;
    height: 58px;
    max-height: 58px;
    border-radius: 3px;
    border-color: #e2e0db;
    background: #fff;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    padding: 4px 6px;
}
.cs-rm-ribbon-soc .rb-btn:hover {
    border-color: var(--orfeo-form-border-strong);
    background: var(--orfeo-form-surface-hover);
    box-shadow: 0 2px 7px rgba(0,0,0,0.10);
}
.cs-rm-ribbon-soc .rb-btn-label {
    font-size: 0.61rem;
    line-height: 1.14;
    color: #36404c;
    min-height: 2.2em;
    display: flex;
    align-items: center;
    justify-content: center;
}
.cs-rm-ribbon-soc .cs-rm-btn-export {
    border-color: #d3dae5;
    background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
}
.cs-rm-ribbon-soc .cs-rm-btn-export:hover {
    border-color: #aebfd3;
    background: #f1f6fb;
}
/* Grupos de 2 botones (Mantenimiento, Acciones, Páginas) */
.cs-rm-grp-duo .rb-group-buttons,
.cs-rm-grp-pag .rb-group-buttons {
    min-width: 200px;
}
.cs-rm-grp-duo .rb-btn,
.cs-rm-grp-pag .rb-btn {
    flex: 1 1 0;
    min-width: 0;
    max-width: none;
}
/* Grupos de 3 botones en una fila (Presentación, Información) */
.cs-rm-grp-trio .rb-group-buttons {
    min-width: 288px;
}
.cs-rm-grp-trio .rb-btn {
    flex: 1 1 0;
    min-width: 0;
    max-width: none;
}
/* Un solo botón (Utilidades, Exportar Sociedades) */
.cs-rm-grp-util .rb-group-buttons {
    min-width: 76px;
    justify-content: center;
    align-items: center;
}
.cs-rm-grp-util .rb-btn-wrap {
    width: auto;
    min-width: 76px;
    max-width: 96px;
}
.cs-rm-grp-util .rb-btn {
    flex: 0 0 auto;
    width: 100%;
    min-width: 76px;
    max-width: 96px;
}
/* Popup con menú: flecha ▾ a la derecha del texto (como ribbon principal) */
.cs-rm-ribbon-panel .rb-btn-popup .rb-btn-label {
    display: block;
    min-height: 0;
    white-space: normal;
    line-height: 1.18;
    text-align: center;
    overflow: visible;
    text-overflow: unset;
}
.cs-rm-ribbon-soc .rb-btn-popup .rb-btn-label {
    display: block;
    min-height: 0;
    align-items: unset;
    justify-content: unset;
}
.cs-rm-ribbon-panel .rb-btn-popup .rb-arrow {
    display: inline;
    margin-left: 1px;
    vertical-align: baseline;
    white-space: nowrap;
    line-height: 1;
}
.cs-rm-ribbon-panel .rb-btn-popup {
    gap: 2px;
    padding: 3px 5px 4px;
}
.cs-rm-grp-util .rb-btn-wrap {
    min-width: 80px;
    max-width: 102px;
}
.cs-rm-grp-util .rb-btn-popup {
    min-width: 80px;
    max-width: 102px;
}
.cs-rm-drop-backdrop {
    position: fixed;
    inset: 0;
    z-index: 10070;
    background: transparent;
}
.cs-rm-dropdown-fixed { z-index: 10081; min-width: 180px; }
.rb-icon-ph {
    font-size: 26px;
    line-height: 1;
    color: var(--orfeo-form-icon-accent, #5a6573);
}

.popup-host-backdrop:has(.orfeo-rm-print-root) { background: rgba(0, 0, 0, 0.5); }
.popup-host-window:has(.orfeo-rm-print-root) {
    background: transparent; border: none; box-shadow: none; max-width: none; max-height: none;
}
.orfeo-rm-print-root {
    background: #fff; border: 1px solid #c5c8d0; border-radius: 6px;
    width: 1180px; max-width: 98vw; height: 800px; max-height: 95vh;
    display: flex; flex-direction: column; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.35); overflow: hidden;
}
.orfeo-rm-print-head {
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%);
    color: #fff; padding: 10px 14px; display: flex; align-items: center; gap: 10px; flex-shrink: 0;
}
.orfeo-rm-print-back, .orfeo-rm-print-x {
    background: transparent; border: 0; color: #fff; cursor: pointer; font-size: 1.1rem; padding: 4px 8px;
}
.orfeo-rm-print-sub { margin-left: auto; font-size: 0.78rem; opacity: 0.9; margin-right: 8px; }
.orfeo-rm-print-body { flex: 1; display: flex; min-height: 0; }
.orfeo-rm-print-side {
    width: 220px;
    background: linear-gradient(180deg, #faf9f7 0%, #f0eeea 100%);
    color: #3a3a3a;
    border-right: 1px solid #c8c4bc;
    padding: 12px 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex-shrink: 0;
}
.rm-prv-btn {
    display: flex; align-items: center; gap: 8px; background: transparent; border: 0; color: #3a3a3a;
    padding: 9px 14px; text-align: left; cursor: pointer; font-size: 0.84rem; width: 100%;
    border-left: 3px solid transparent;
}
.rm-prv-btn i { color: var(--orfeo-form-icon-accent, #5a6573); font-size: 1.1rem; }
.rm-prv-btn:hover { background: rgba(0, 0, 0, 0.06); border-left-color: var(--orfeo-form-shell-header-to, #454b55); }
.orfeo-rm-print-grp-h {
    font-size: 0.65rem; letter-spacing: 0.5px; text-transform: uppercase;
    color: #5a6172;
    padding: 10px 14px 4px; margin-top: 4px;
}
.orfeo-rm-print-chk {
    display: flex; align-items: center; gap: 6px; padding: 3px 14px; font-size: 0.78rem; cursor: pointer;
}
.orfeo-rm-print-sel {
    margin: 4px 10px 8px; font-size: 0.78rem; padding: 4px 6px; border-radius: 3px; width: calc(100% - 20px);
}
.orfeo-rm-print-stage { flex: 1; display: flex; flex-direction: column; min-width: 0; background: #525659; }
.orfeo-rm-print-toolbar {
    background: #eef0f3; padding: 6px 10px; display: flex; align-items: center; gap: 10px;
    border-bottom: 1px solid #d0d3da; flex-shrink: 0; font-size: 0.82rem;
}
.orfeo-rm-print-sheet-wrap {
    flex: 1;
    overflow: auto;
    padding: 20px;
    display: flex;
    flex-direction: column;
    align-items: center;
    background: #525659;
}
.orfeo-rm-print-sheet {
    background: #fff;
    width: 210mm;
    max-width: 100%;
    min-height: 297mm;
    height: auto;
    align-self: flex-start;
    padding: 12mm 14mm;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.45);
    flex-shrink: 0;
    box-sizing: border-box;
}
.orfeo-rm-print-content {
    font-family: 'Segoe UI', Arial, sans-serif;
    font-size: 11px;
    color: #222;
    background: #fff;
    min-height: 100%;
}
.orfeo-rm-print-content .rm-print-page,
.orfeo-rm-print-content .rm-print-doc {
    background: #fff;
}

/* Sidebar impresión listados (backstage) — gris, homogéneo con formularios */
.orfeo-print-sidebar {
    width: 210px;
    flex-shrink: 0;
    background: linear-gradient(180deg, #faf9f7 0%, #f0eeea 100%);
    color: #3a3a3a;
    border-right: 1px solid #c8c4bc;
    padding: 12px 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.orfeo-print-sidebar-h {
    padding: 0 14px 10px;
    border-bottom: 1px solid #d0cdc8;
    margin-bottom: 8px;
}
.orfeo-print-sidebar-brand {
    font-size: 0.7rem;
    letter-spacing: 1px;
    color: #5a6172;
}
.orfeo-print-sidebar-title {
    font-size: 0.95rem;
    font-weight: 600;
}

@keyframes ph-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes ph-slide { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: translateY(0); } }

/* ─── Pestañas contextuales del ribbon (estilo DevExpress XtraBars) ──── */
.rb-tab-ctx {
    position: relative;
    width: auto;
    border-top: 2px solid var(--ctx-color, var(--orfeo-ochre)) !important;
    background: linear-gradient(180deg, color-mix(in srgb, var(--ctx-color, var(--orfeo-ochre)) 8%, white) 0%, white 100%);
    color: color-mix(in srgb, var(--ctx-color, var(--orfeo-ochre)) 80%, #000) !important;
    font-weight: 600;
    animation: rb-ctx-in .18s ease-out;
}
.rb-tab-ctx.rb-tab-active,
.rb-tab-ctx.rb-tab-active:hover {
    background: var(--ctx-color, var(--orfeo-ochre)) !important;
    color: #fff !important;
    border-top-color: var(--ctx-color, var(--orfeo-ochre)) !important;
}
.rb-tab-ctx-dot {
    display: inline-block;
    width: 7px; height: 7px;
    border-radius: 50%;
    margin-right: 5px;
    vertical-align: middle;
}
.rb-tab-ctx.rb-tab-active .rb-tab-ctx-dot { background: #fff !important; }
.rb-toolbar-ctx { border-top: 2px solid var(--ctx-color, var(--orfeo-accent)); }
.rb-btn-ctx { background: transparent; border: 0; cursor: pointer; }
.rb-btn-ctx:hover:not(:disabled) { background: rgba(0,0,0,.05); }
.rb-btn-ctx:disabled { opacity: .5; cursor: not-allowed; }
@keyframes rb-ctx-in {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Botones que parecen links (en popups: gris; en inicio: ocre vía .hm-page) */
.hm-link {
    background: none;
    border: 0;
    color: var(--orfeo-accent);
    cursor: pointer;
    font-family: inherit;
    font-size: inherit;
    padding: 0;
    text-decoration: underline;
}
.hm-link:hover { color: var(--orfeo-accent-h); }
.hm-page .hm-link { color: var(--orfeo-ochre); }
.hm-page .hm-link:hover { color: var(--orfeo-ochre-hover); }

/* === Chrome unificado de modales (referencia: ChequesPageresPopup) === */
.omodal-shell,
.chpg-shell,
.dep-shell,
.ecob-shell,
.epag-shell {
    display: flex;
    flex-direction: column;
    height: 100%;
    font-family: 'Segoe UI', sans-serif;
    font-size: 13px;
    background: #f4f6f9;
}
.omodal-shell {
    background: #fff;
    border: 1px solid #c5c8d0;
    border-radius: 6px;
    box-shadow: 0 8px 30px rgba(0, 0, 0, .25);
    overflow: hidden;
}
.omodal-header,
.chpg-header,
.dep-header {
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%);
    color: #fff;
    padding: 8px 12px;
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 600;
    font-size: 14px;
    flex-shrink: 0;
}
.omodal-header i,
.chpg-header i,
.dep-header i { font-size: 18px; }
.omodal-header-sub {
    font-size: .78rem;
    font-weight: 400;
    opacity: .9;
    margin-top: 2px;
}
.omodal-close,
.chpg-close,
.dep-close {
    margin-left: auto;
    background: transparent;
    border: none;
    color: #fff;
    font-size: 16px;
    cursor: pointer;
    width: 32px;
    height: 32px;
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    transition: background .15s;
}
.omodal-close:hover,
.chpg-close:hover,
.dep-close:hover { background: rgba(255, 255, 255, .2); }
.omodal-ribbon,
.chpg-ribbon,
.dep-ribbon {
    background: var(--orfeo-form-surface);
    border: 1px solid var(--orfeo-form-border-strong);
    border-radius: 4px;
    margin: 8px;
    display: flex;
    align-items: flex-end;
    gap: 2px;
    padding: 4px 6px;
    flex-shrink: 0;
}
.pagina-en-popup-ribbon {
    background: #f0f0f0;
    border-bottom: 1px solid #d0d0d0;
    display: flex;
    align-items: center;
    gap: 2px;
    padding: 4px 8px;
    flex-shrink: 0;
}
.omodal-rbtn,
.chpg-rbtn,
.dep-rbtn {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 3px;
    padding: 4px 8px;
    cursor: pointer;
    font-size: .7rem;
    line-height: 1.05;
    color: #3a3a3a;
    min-width: 62px;
}
.omodal-rbtn span,
.chpg-rbtn span,
.dep-rbtn span { display: block; text-align: center; min-height: 2.1em; }
.omodal-rbtn:hover:not([disabled]),
.chpg-rbtn:hover:not([disabled]),
.dep-rbtn:hover:not([disabled]) {
    background: var(--orfeo-form-surface-selected);
    border-color: var(--orfeo-form-border-strong);
}
.omodal-rbtn[disabled],
.chpg-rbtn[disabled],
.dep-rbtn[disabled] { opacity: .45; cursor: default; }
.omodal-rbtn i,
.chpg-rbtn i,
.dep-rbtn i { font-size: 22px; }
.omodal-sep,
.chpg-sep,
.dep-sep {
    width: 1px;
    background: var(--orfeo-form-border-strong);
    align-self: stretch;
    margin: 2px 2px;
    flex-shrink: 0;
}
.omodal-body,
.chpg-body,
.dep-body {
    flex: 1;
    overflow-y: auto;
    padding: 10px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-height: 0;
}
.omodal-body--pad-lg { padding: 14px 18px; }

/* === Páginas embebidas dentro de un popup (PaginaEnPopup) === */
.pagina-en-popup-shell {
    background: #fff;
    border: 1px solid #c5c8d0;
    border-radius: 6px;
    display: flex;
    flex-direction: column;
    box-shadow: 0 8px 30px rgba(0, 0, 0, .25);
    overflow: hidden;
    min-height: 0;
    box-sizing: border-box;
}
.pagina-en-popup-head {
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%);
    color: #fff;
    padding: 10px 14px;
    border-radius: 6px 6px 0 0;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
.pagina-en-popup-shell--fs {
    width: min(1680px, 98vw) !important;
    height: 94vh !important;
    max-width: 98vw !important;
    max-height: 94vh !important;
}
.popup-host-window:has(.pagina-en-popup-shell--fs) {
    width: min(1680px, 98vw);
    height: 94vh;
    max-width: 98vw;
    max-height: 94vh;
}
/* Modelo 303 y similares con --list: altura dinámica según contenido */
.popup-host-window:has(.orfeo-popup-card--list) {
    width: min(1200px, 95vw);
    height: min(820px, 88vh);
    max-width: 95vw;
    max-height: 88vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* === Popup-host: tamaños fijos (referencia: NotificacionesUsuarioPopup) === */
.popup-host-window:has(.cefx-shell),
.popup-host-window:has(.cefx-shell),
.popup-host-window:has(.ivaacu-shell),
.popup-host-window:has(.mex-shell),
.popup-host-window:has(.chpg-shell),
.popup-host-window:has(.flst-shell),
.popup-host-window:has(.efh-shell),
.popup-host-window:has(.pgc-shell),
.popup-host-window:has(.rten-shell),
.popup-host-window:has(.relim-shell),
.popup-host-window:has(.lo-popup-shell),
.popup-host-window:has(.ecob-shell),
.popup-host-window:has(.epag-shell) {
    width: min(1200px, 95vw);
    height: min(820px, 88vh);
    max-width: 95vw;
    max-height: 88vh;
    display: flex;
    flex-direction: column;
}
/* =====================================================================
   POPUP-HOST-WINDOW: tamaños para shells custom sin OrfeoPopupShell
   ===================================================================== */

/* Informes grandes: Analítica, Sumas y Saldos, Retenciones, IGIC,
   Inmovilizado, Previsión, Estimación, Diario resumido, Diario borrador,
   Cuadro financiación, Libro facturas AEAT, Presupuestos, Historial AEAT */
.popup-host-window:has(.ana-shell),
.popup-host-window:has(.sse-shell),
.popup-host-window:has(.ret-shell),
.popup-host-window:has(.igc-shell),
.popup-host-window:has(.ilr-shell),
.popup-host-window:has(.prev-shell),
.popup-host-window:has(.est-shell),
.popup-host-window:has(.drc-shell),
.popup-host-window:has(.dbor-shell),
.popup-host-window:has(.cuf-shell),
.popup-host-window:has(.lfa-shell),
.popup-host-window:has(.pres-shell),
.popup-host-window:has(.aeat-hist-shell) {
    width: min(1200px, 96vw);
    height: min(820px, 90vh);
    max-width: 96vw;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
}

/* Diarios y Emisión (emi-backdrop: Diario, Retenciones, Sumas y Saldos, Asiento) */
.popup-host-window:has(.emi-backdrop) {
    width: min(900px, 96vw);
    height: min(760px, 90vh);
    max-width: 96vw;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
}

/* Formularios medianos: Planning, Cuentas Anuales, Empresa, Etiquetas,
   Preferencias empresa, Depósito de cuentas */
.popup-host-window:has(.pla-shell),
.popup-host-window:has(.ca-rm-shell),
.popup-host-window:has(.caa-shell),
.popup-host-window:has(.cemp-shell),
.popup-host-window:has(.etq-shell),
.popup-host-window:has(.pref-emp-shell),
.popup-host-window:has(.dep-shell) {
    width: min(1120px, 96vw);
    height: min(820px, 92vh);
    max-width: 96vw;
    max-height: 92vh;
    display: flex;
    flex-direction: column;
}

/* Diálogos compactos: Cálculo cuentas anuales, Factsol, Contaplus,
   Moneda, Editor plantilla línea, Planning tesorería small */
.popup-host-window:has(.ca-calc-shell),
.popup-host-window:has(.fact-shell),
.popup-host-window:has(.ctpl-shell),
.popup-host-window:has(.mon-shell),
.popup-host-window:has(.pln-editor),
.popup-host-window:has(.smod-shell) {
    width: min(720px, 96vw);
    height: min(620px, 90vh);
    max-width: 96vw;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
}

/* Plantilla introducción */
.popup-host-window:has(.pln-intro) {
    width: min(640px, 96vw);
    height: min(720px, 90vh);
    max-width: 96vw;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
}

/* Proceso de cierre / apertura */
.popup-host-window:has(.cie-shell) {
    width: min(780px, 96vw);
    height: min(860px, 92vh);
    max-width: 96vw;
    max-height: 92vh;
    display: flex;
    flex-direction: column;
}
.cie-shell { height: 100%; }
/* Cambio formato cuentas: contenido largo + confirmación al pie */
.popup-host-window:has(.cfmt-shell) {
    width: min(1100px, 96vw);
    height: min(860px, 92vh);
    max-width: 96vw;
    max-height: 92vh;
}
/* Emisión IVA repercutido / soportado */
.popup-host-window:has(.ivaeml-shell) {
    width: min(1180px, 96vw);
    height: min(760px, 90vh);
    max-width: 96vw;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
}
.popup-host-window:has(.orfeo-popup-card--wide),
.popup-host-window:has(.ldes-shell),
.popup-host-window:has(.prlot-shell),
.popup-host-window:has(.cpre-shell),
.popup-host-window:has(.egrf-shell),
.popup-host-window:has(.diva-shell),
.popup-host-window:has(.arem-shell),
.popup-host-window:has(.cfis-shell),
.popup-host-window:has(.ebco-shell),
.popup-host-window:has(.dinf-shell),
.popup-host-window:has(.ifact-shell),
.popup-host-window:has(.cef-shell),
.popup-host-window:has(.cimp-shell),
.popup-host-window:has(.cimp2-shell),
.popup-host-window:has(.dbox-shell),
.popup-host-window:has(.clib-shell),
.popup-host-window:has(.larr-shell),
.popup-host-window:has(.emi-shell),
.popup-host-window:has(.efemi-shell),
.popup-host-window:has(.acp-shell),
.popup-host-window:has(.rec-popup-shell),
.popup-host-window:has(.busc-cta-popup),
.popup-host-window:has(.ficha-cta-popup),
.popup-host-window:has(.pagina-en-popup-shell:not(.pagina-en-popup-shell--fs)) {
    width: min(1100px, 96vw);
    height: min(740px, 90vh);
    max-width: 96vw;
    max-height: 90vh;
}
/* Maestro de cuentas: ribbon ancho necesita más espacio */
.popup-host-window:has(.busc-cta-popup) {
    width: min(1280px, 97vw) !important;
    height: min(780px, 90vh);
    max-width: 97vw;
    max-height: 90vh;
}
/* Conciliación bancaria */
.popup-host-window:has(.conc-shell) {
    width: min(1080px, 97vw);
    height: min(820px, 92vh);
    max-width: 97vw;
    max-height: 92vh;
    display: flex;
    flex-direction: column;
}
.conc-shell { height: 100%; }
/* CierreChequeo: 5 secciones con grids — necesita más altura que el genérico md (680px) */
.popup-host-window:has(.orfeo-popup-card--md .cc-section) {
    width: min(960px, 96vw);
    height: min(860px, 90vh);
    max-width: 96vw;
    max-height: 90vh;
}
/* Proceso de cierre/apertura: contenido largo con sub-opciones expandibles */
.popup-host-window:has(.pagina-en-popup-shell .cierre-page) {
    width: min(860px, 96vw);
    height: min(900px, 92vh);
    max-width: 96vw;
    max-height: 92vh;
}
.pagina-en-popup-shell:has(.cierre-page) .pagina-en-popup-body {
    overflow: hidden;
}
.pagina-en-popup-body .cierre-page {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}
.pagina-en-popup-body .cierre-page .diario-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}
.pagina-en-popup-body .cierre-page .diario-footer { display: none; }
/* Diseñador de factura: cabecera + plantillas + formulario + vista en vivo */
.popup-host-window:has(.dfact-shell-designer) {
    width: min(1480px, 98vw);
    height: min(860px, 92vh);
    max-width: 98vw;
    max-height: 92vh;
}
/* Listas estilo vaux-popup (Liquidaciones IVA / Modelo 303): un solo marco, más ancho */
.popup-host-window:has(.pagina-en-popup-shell .vaux-popup) {
    width: min(1200px, 95vw);
    height: min(820px, 88vh);
    max-width: 95vw;
    max-height: 88vh;
}
/* Mayor oficial: folio ancho para Debe/Haber/Saldo sin scroll horizontal */
.popup-host-window:has(.pagina-en-popup-shell:has(.listado-oficial-page)) {
    width: min(1680px, 98vw);
    height: min(880px, 92vh);
    max-width: 98vw;
    max-height: 92vh;
}
/* Un solo marco visible (regla heredada; el host base ya es transparente) */
.popup-host-window:has(> [class*="-shell"]:not(.omodal-shell)),
.popup-host-window:has(> .orfeo-popup-card),
.popup-host-window:has(> .pagina-en-popup-shell),
.popup-host-window:has(> .lo-popup-shell),
.popup-host-window:has(> .busc-cta-popup),
.popup-host-window:has(> .ficha-cta-popup),
.popup-host-window:has(> .atajos-popup),
.popup-host-window:has(> .msgu-shell),
.popup-host-window:has(> .notif-shell),
.popup-host-window:has(> .rec-popup-shell) {
    background: transparent;
    border: none;
    box-shadow: none;
}
/* Formularios compactos / confirmación: host = tamaño natural del card (sin franja vacía) */
.popup-host-window:has(> .orfeo-popup-card--form),
.popup-host-window:has(> .orfeo-popup-card--sm),
.popup-host-window:has(> .omodal-shell),
.popup-host-window:has(> .cemp-shell),
.popup-host-window:has(> .ctpl-shell),
.popup-host-window:has(> .plant-base-popup),
.popup-host-window:has(> .smod-shell),
.popup-host-window:has(> .mon-shell),
.popup-host-window:has(> .cpf-shell),
.popup-host-window:has(> .msgu-shell:not(.msgu-shell--listas)) {
    width: auto;
    height: auto;
    max-width: 94vw;
    max-height: 84vh;
    overflow: visible;
}
.popup-host-window:has(.orfeo-popup-card--md),
.popup-host-window:has(.ofim-shell),
.popup-host-window:has(.afact-shell),
.popup-host-window:has(.mod202-shell),
.popup-host-window:has(.ocnf-shell),
.popup-host-window:has(.notif-shell),
.popup-host-window:has(.atajos-popup),
.popup-host-window:has(.nej-shell),
.popup-host-window:has(.agcu-shell) {
    width: min(880px, 94vw);
    height: min(680px, 84vh);
    max-width: 94vw;
    max-height: 84vh;
}
/* OrfeoPopupShell: el host no pinta marco; lo define .omodal-shell */
.popup-host-window:has(> .omodal-shell) {
    width: auto;
    height: auto;
    max-width: 94vw;
    max-height: 84vh;
    overflow: visible;
}
/* Ficha factura (VERI*FACTU): altura fija; sin esto el formulario colapsa con height:auto */
.popup-host-window > .omodal-shell:has(.ffac-body-root) {
    width: min(1060px, 96vw) !important;
    height: min(720px, 92vh) !important;
    max-height: 92vh !important;
}
.popup-host-window:has(.msgu-shell.msgu-shell--listas) {
    width: min(540px, 94vw);
    height: min(520px, 80vh);
}
/* El shell ocupa el host (listas/anchos) o conserva su ancho natural (form/sm) */
.popup-host-window > .orfeo-popup-card--form,
.popup-host-window > .orfeo-popup-card--sm,
.popup-host-window > .omodal-shell,
.popup-host-window > .cemp-shell,
.popup-host-window > .ctpl-shell,
.popup-host-window > .plant-base-popup,
.popup-host-window > .smod-shell,
.popup-host-window > .mon-shell,
.popup-host-window > .cpf-shell,
.popup-host-window > .msgu-shell:not(.msgu-shell--listas) {
    width: auto !important;
    height: auto !important;
    max-width: 94vw !important;
    max-height: 84vh !important;
    min-height: 0;
    flex: 0 0 auto;
    overflow: hidden;
    box-sizing: border-box;
}
.popup-host-window > [class*="-shell"]:not(.omodal-shell):not(.cemp-shell):not(.ctpl-shell):not(.plant-base-popup):not(.smod-shell):not(.mon-shell):not(.cpf-shell):not(.msgu-shell),
.popup-host-window > .orfeo-popup-card:not(.orfeo-popup-card--form):not(.orfeo-popup-card--sm),
.popup-host-window > .lo-popup-shell,
.popup-host-window > .busc-cta-popup,
.popup-host-window > .ficha-cta-popup,
.popup-host-window > .atajos-popup,
.popup-host-window > .msgu-shell.msgu-shell--listas,
.popup-host-window > .notif-shell,
.popup-host-window > .pagina-en-popup-shell,
.popup-host-window > .rec-popup-shell {
    width: 100% !important;
    height: 100% !important;
    max-width: 100% !important;
    max-height: none !important;
    min-height: 0;
    overflow: hidden;
    box-sizing: border-box;
}
.orfeo-popup-card {
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
    box-sizing: border-box;
    background: #fff;
    border: 1px solid #c5c8d0;
    border-radius: 6px;
    box-shadow: 0 8px 30px rgba(0, 0, 0, .25);
}
.orfeo-popup-card > div[style*="padding:"]:not([style*="linear-gradient"]) {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}
.popup-host-window:has([class*="-shell"]) [class*="-body"],
.popup-host-window:has(.orfeo-popup-card) .omodal-body {
    flex: 1 1 auto;
    min-height: 0;
}
.msgu-header,
.msgu-footer {
    flex-shrink: 0;
}

/* Carteras / estados de efectos (popup tesorería) */
.cefx-ribbon {
    background: var(--orfeo-form-surface);
    border-bottom: 1px solid var(--orfeo-form-border-strong);
    min-height: 72px;
    padding: 4px 6px 0;
}
.cefx-ribbon .rb-group-label {
    text-transform: none;
    letter-spacing: 0;
    font-size: 0.68rem;
}
.cefx-vista-active {
    background: var(--orfeo-form-surface-selected) !important;
    border-color: var(--orfeo-accent) !important;
}
/* Los botones del ribbon de Carteras usan ancho fijo (96px) y "Modificar" se
   partía en dos líneas. Aquí dejamos que crezcan al contenido sin cortar el texto. */
.cefx-ribbon .rb-btn-sm {
    width: auto !important;
    min-width: var(--rb-btn-width) !important;
    max-width: none !important;
    padding-right: 12px !important;
}
.cefx-ribbon .rb-btn-sm .rb-btn-label { white-space: nowrap !important; }

/* === Efectos a pagar / cobrar (popup): grilla + paginador visibles === */
.epag-shell,
.ecob-shell {
    overflow: hidden;
}
.epag-header, .epag-ribbon, .epag-filters, .epag-totales, .epag-pager-bar, .epag-footer,
.ecob-header, .ecob-ribbon, .ecob-filters, .ecob-totales, .ecob-pager-bar, .ecob-footer {
    flex-shrink: 0;
}
.epag-body,
.ecob-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.epag-grid-wrap,
.ecob-grid-wrap,
.epag-grid-wrap.cp-grid-wrap,
.ecob-grid-wrap.cp-grid-wrap {
    flex: 1 1 0 !important;
    height: 0 !important;
    min-height: 160px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.epag-grid-wrap .cp-grid,
.ecob-grid-wrap .cp-grid {
    overflow: hidden !important;
    height: 100% !important;
    max-height: 100% !important;
}
.epag-grid-wrap .cp-grid.dxbl-grid,
.ecob-grid-wrap .cp-grid.dxbl-grid {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    height: 100% !important;
    max-height: 100% !important;
    overflow: hidden !important;
    display: flex !important;
    flex-direction: column !important;
}
.epag-grid-wrap .cp-grid .dxbl-scroll-viewer,
.ecob-grid-wrap .cp-grid .dxbl-scroll-viewer {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow: auto !important;
}

/* === Efectos a pagar/cobrar — pestaña MDI (estética del modal) === */
.ribbon-content:has(.efectos-page) {
    padding: 0.5rem 1rem;
    background: #e4e7ec;
}
.efectos-page.diario-page {
    background: transparent;
    box-shadow: none;
    border-radius: 0;
    overflow: hidden;
    height: 100%;
    min-height: 0;
}
.efectos-page .efectos-shell {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    font-family: 'Segoe UI', sans-serif;
    font-size: 13px;
    background: #f4f6f9;
    border: 1px solid #c5c8d0;
    border-radius: 6px;
    box-shadow: 0 2px 14px rgba(0, 0, 0, 0.1);
    overflow: hidden;
}
.efectos-page .efectos-shell-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 14px;
    color: #fff;
    font-weight: 600;
    font-size: 14px;
    flex-shrink: 0;
}
.efectos-page .efectos-shell-header i.ph-duotone { font-size: 20px; opacity: 0.95; }
.efectos-page .epag-header { background: var(--orfeo-report-group-bg); }
.efectos-page .ecob-header { background: linear-gradient(180deg, #4a7c59 0%, #3a6348 100%); }
.efectos-switch {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 4px;
}
.efectos-switch-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px 10px;
    border-radius: 4px;
    border: 1px solid rgba(255, 255, 255, 0.28);
    background: rgba(255, 255, 255, 0.12);
    color: rgba(255, 255, 255, 0.88);
    font-size: 11px;
    font-weight: 500;
    text-decoration: none;
    transition: background 0.15s, border-color 0.15s;
}
.efectos-switch-btn i { font-size: 16px; }
.efectos-switch-btn:hover {
    background: rgba(255, 255, 255, 0.22);
    color: #fff;
    text-decoration: none;
}
.efectos-switch-btn.efectos-switch-active {
    background: rgba(255, 255, 255, 0.32);
    border-color: rgba(255, 255, 255, 0.55);
    color: #fff;
    font-weight: 600;
}
.efectos-page .efectos-shell-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    padding: 10px;
    gap: 8px;
}
.efectos-page .efectos-panel-stack {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
    overflow: hidden;
}
.efectos-page .efectos-loading {
    text-align: center;
    padding: 40px 20px;
    color: #6b7280;
    font-size: 13px;
}
.efectos-page .epag-filters,
.efectos-page .ecob-filters,
.efectos-page .epag-totales,
.efectos-page .ecob-totales,
.efectos-page .epag-pager-bar,
.efectos-page .ecob-pager-bar,
.efectos-page .epag-footer,
.efectos-page .ecob-footer {
    flex-shrink: 0;
}
.efectos-page .epag-filters,
.efectos-page .ecob-filters {
    display: flex;
    align-items: center;
    gap: 8px;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    padding: 10px 12px;
    flex-wrap: wrap;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.efectos-page .epag-filters label,
.efectos-page .ecob-filters label { color: #555; font-size: 12px; white-space: nowrap; }
.efectos-page .epag-input,
.efectos-page .ecob-input {
    border: 1px solid #d1d5db;
    border-radius: 4px;
    padding: 5px 8px;
    font-size: 12px;
    background: #fff;
}
.efectos-page .epag-input:focus,
.efectos-page .ecob-input:focus {
    outline: none;
    border-color: var(--orfeo-form-focus-ring);
    box-shadow: 0 0 0 2px var(--orfeo-accent-a10);
}
.efectos-page .epag-short,
.efectos-page .ecob-short { width: 120px; }
.efectos-page .epag-date,
.efectos-page .ecob-date { width: 130px; }
.efectos-page .epag-search,
.efectos-page .ecob-search {
    flex: 1;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    padding: 5px 10px;
    font-size: 12px;
    min-width: 160px;
    background: #fff;
}
.efectos-page .epag-rbtn,
.efectos-page .ecob-rbtn {
    display: inline-flex;
    flex-direction: row;
    align-items: center;
    gap: 5px;
    background: var(--orfeo-form-primary-btn);
    color: #fff;
    border: 1px solid var(--orfeo-form-primary-btn-border);
    border-radius: 4px;
    padding: 5px 12px;
    cursor: pointer;
    font-size: 12px;
    min-width: unset;
    font-weight: 500;
}
.efectos-page .epag-rbtn:hover,
.efectos-page .ecob-rbtn:hover { background: var(--orfeo-form-primary-btn-hover); }
.efectos-page .epag-rbtn i,
.efectos-page .ecob-rbtn i { font-size: 14px; }
.efectos-page .epag-totales,
.efectos-page .ecob-totales { display: flex; gap: 8px; flex-wrap: wrap; }
.efectos-page .epag-kpi,
.efectos-page .ecob-kpi {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    padding: 10px 14px;
    flex: 1;
    min-width: 140px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.efectos-page .epag-kpi-lbl,
.efectos-page .ecob-kpi-lbl {
    display: block;
    font-size: 10px;
    color: #6b7280;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-weight: 600;
}
.efectos-page .epag-kpi-val,
.efectos-page .ecob-kpi-val {
    display: block;
    font-size: 17px;
    font-weight: 700;
    color: #111827;
    margin-top: 3px;
    font-variant-numeric: tabular-nums;
}
.efectos-page .epag-red { color: #991b1b; }
.efectos-page .ecob-green { color: #065f46; }
.efectos-page .ecob-red { color: #991b1b; }
.efectos-page .epag-grid-wrap,
.efectos-page .ecob-grid-wrap {
    flex: 1 1 0;
    height: 0;
    min-height: 180px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.efectos-page .epag-grid-wrap .cp-grid.dxbl-grid,
.efectos-page .ecob-grid-wrap .cp-grid.dxbl-grid {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    height: 100% !important;
    max-height: 100% !important;
    overflow: hidden !important;
    display: flex !important;
    flex-direction: column !important;
}
.efectos-page .epag-grid-wrap .cp-grid .dxbl-scroll-viewer,
.efectos-page .ecob-grid-wrap .cp-grid .dxbl-scroll-viewer {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow: auto !important;
}
.efectos-page .epag-grid-wrap:focus { outline: 2px solid #fca5a5; outline-offset: -2px; }
.efectos-page .ecob-grid-wrap:focus { outline: 2px solid #6ee7b7; outline-offset: -2px; }
.efectos-page .epag-pager-bar,
.efectos-page .ecob-pager-bar {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 10px;
    padding: 8px 12px;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    font-size: 12px;
    color: #374151;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.efectos-page .epag-pager-info,
.efectos-page .ecob-pager-info { font-variant-numeric: tabular-nums; }
.efectos-page .epag-pager-btn,
.efectos-page .ecob-pager-btn {
    border: 1px solid #d1d5db;
    background: #f9fafb;
    border-radius: 4px;
    padding: 5px 12px;
    cursor: pointer;
    font-size: 12px;
    font-weight: 500;
}
.efectos-page .epag-pager-btn:hover:not([disabled]) { background: #fee2e2; border-color: #fca5a5; }
.efectos-page .ecob-pager-btn:hover:not([disabled]) { background: #d1fae5; border-color: #6ee7b7; }
.efectos-page .epag-pager-btn[disabled],
.efectos-page .ecob-pager-btn[disabled] { opacity: 0.45; cursor: default; }
.efectos-page .epag-pager-goto,
.efectos-page .ecob-pager-goto { display: inline-flex; align-items: center; gap: 4px; }
.efectos-page .epag-pager-input,
.efectos-page .ecob-pager-input {
    width: 52px;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    padding: 3px 4px;
    text-align: center;
    font-size: 12px;
}
.efectos-page .epag-footer,
.efectos-page .ecob-footer {
    padding: 6px 8px 2px;
    font-size: 12px;
    color: #4b5563;
    background: transparent;
}
.efectos-page .epag-kbd-hint,
.efectos-page .ecob-kbd-hint { color: #9ca3af; font-size: 11px; }
.efectos-page .epag-date-err,
.efectos-page .ecob-date-err { color: #dc2626; font-weight: 600; }
.efectos-page .epag-estado-pen,
.efectos-page .ecob-estado-pen {
    background: #fef3c7 !important;
    color: var(--orfeo-dark) !important;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
}
.efectos-page .epag-estado-pag,
.efectos-page .ecob-estado-cob {
    background: #d1fae5 !important;
    color: #065f46 !important;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
}
.efectos-page .epag-estado-dev,
.efectos-page .ecob-estado-dev {
    background: #e5e7eb !important;
    color: #6b7280 !important;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
}

/* Tema pagar (ocre) */
.efectos-page.epag-page .epag-rbtn {
    background: var(--orfeo-ochre);
    border-color: var(--orfeo-ochre-hover);
    color: #fff;
}
.efectos-page.epag-page .epag-rbtn:hover {
    background: var(--orfeo-ochre-hover);
    border-color: #8f4532;
}
.efectos-page.epag-page .epag-input:focus,
.efectos-page.epag-page .epag-search:focus {
    border-color: var(--orfeo-ochre);
    box-shadow: 0 0 0 2px var(--orfeo-ochre-a12);
}
.efectos-page.epag-page .efectos-shell {
    border-color: #d4a89a;
}

/* Tema cobrar (verde) — misma estética modal que pagar */
.efectos-page.ecob-page .ecob-rbtn {
    background: linear-gradient(180deg, #4a7c59 0%, #3a6348 100%);
    border-color: #2f5039;
    color: #fff;
}
.efectos-page.ecob-page .ecob-rbtn:hover {
    background: linear-gradient(180deg, #528661 0%, #406b4f 100%);
    border-color: #2a4533;
}
.efectos-page.ecob-page .ecob-input:focus,
.efectos-page.ecob-page .ecob-search:focus {
    border-color: #4a7c59;
    box-shadow: 0 0 0 2px rgba(74, 124, 89, 0.22);
}
.efectos-page.ecob-page .efectos-shell {
    border-color: #9bc4a8;
}
.efectos-page.ecob-page .ecob-kpi {
    border-color: #cfe8d6;
}

/* === Emisión efectos (popup) === */
.popup-host-window:has(.efemi-shell) {
    width: min(920px, 96vw);
    height: min(780px, 92vh);
    max-width: 96vw;
    max-height: 92vh;
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
}
.efemi-shell {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    background: #fff;
    font-family: 'Segoe UI', sans-serif;
    font-size: 13px;
    overflow: hidden;
    border: 1px solid #c5c8d0;
    border-radius: 6px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
}
.efemi-shell--cobrar .efemi-header {
    background: linear-gradient(180deg, #4a7c59 0%, #3a6348 100%);
}
.efemi-shell--pagar .efemi-header {
    background: var(--orfeo-report-group-bg);
}
.efemi-header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 14px;
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    flex-shrink: 0;
}
.efemi-header i { font-size: 18px; opacity: 0.92; }
.efemi-close {
    margin-left: auto;
    background: transparent;
    border: none;
    color: #fff;
    cursor: pointer;
    font-size: 15px;
    padding: 4px 8px;
    border-radius: 4px;
    line-height: 1;
}
.efemi-close:hover { background: rgba(255, 255, 255, 0.15); }
.efemi-body {
    display: flex;
    flex: 1;
    min-height: 0;
    flex-direction: row;
    overflow: hidden;
}
.efemi-nav {
    width: 148px;
    flex-shrink: 0;
    background: #f5f1ea;
    border-right: 1px solid #e8ddd4;
    padding: 6px 0;
    display: flex;
    flex-direction: column;
    gap: 1px;
    overflow-y: auto;
}
.efemi-nav-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    background: transparent;
    border: none;
    border-left: 3px solid transparent;
    color: #5c6370;
    padding: 10px 6px;
    font-size: 11px;
    cursor: pointer;
    text-align: center;
    line-height: 1.2;
}
.efemi-nav-btn i { font-size: 20px; }
.efemi-nav-btn:hover { background: var(--orfeo-ochre-a10); color: var(--orfeo-dark); }
.efemi-nav-active {
    background: var(--orfeo-ochre-a12) !important;
    color: var(--orfeo-dark) !important;
    border-left-color: var(--orfeo-ochre) !important;
    font-weight: 600;
}
.efemi-nav-sep { height: 1px; background: #e8ddd4; margin: 4px 10px; }
.efemi-main {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-width: 0;
    overflow: hidden;
}
.efemi-content {
    flex: 1;
    padding: 14px 16px;
    overflow-y: auto;
    min-height: 0;
}
.efemi-section-title {
    font-size: 12px;
    font-weight: 700;
    margin-bottom: 8px;
    color: var(--orfeo-ochre);
    text-transform: uppercase;
    letter-spacing: 0.3px;
}
.efemi-group {
    margin-bottom: 12px;
    padding-bottom: 10px;
    border-bottom: 1px solid #eef0f4;
}
.efemi-group:last-child { border-bottom: none; }
.efemi-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.efemi-lbl { font-size: 12px; color: #444; white-space: nowrap; }
.efemi-sel,
.efemi-inp-cue,
.efemi-inp-date {
    font-size: 12px;
    padding: 4px 6px;
    border: 1px solid #c5c8d0;
    border-radius: 4px;
    background: #fff;
}
.efemi-inp-cue { width: 100px; }
.efemi-inp-date { width: 130px; }
.efemi-chk {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: #333;
    cursor: pointer;
    margin-bottom: 5px;
}
.efemi-chk input { accent-color: var(--orfeo-ochre); }
.efemi-a { font-size: 12px; color: #666; }
.efemi-textarea {
    width: 100%;
    font-size: 12px;
    padding: 6px 8px;
    border: 1px solid #c5c8d0;
    border-radius: 4px;
    resize: vertical;
    margin-top: 6px;
    font-family: inherit;
}
.efemi-preview {
    border-top: 1px solid #e2e5ec;
    padding: 10px 0 0;
    flex: 1;
    min-height: 0;
    overflow: auto;
}
.efemi-preview-intro {
    font-size: 12px;
    color: #555;
    margin-bottom: 8px;
}
.efemi-preview-empty { color: #888; font-size: 12px; padding: 12px 0; }
.efemi-preview-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 4px;
    overflow: hidden;
}
.efemi-preview-table thead th {
    background: var(--orfeo-report-thead-bg);
    color: var(--orfeo-dark);
    padding: 7px 8px;
    text-align: left;
    border-bottom: 2px solid #e8ddd4;
    font-weight: 600;
    white-space: nowrap;
}
.efemi-preview-table tbody td {
    padding: 5px 8px;
    border-bottom: 1px solid #f1f5f9;
    vertical-align: middle;
}
.efemi-preview-table tbody tr:nth-child(even) td { background: var(--orfeo-report-row-alt); }
.efemi-preview-table tbody tr:hover td { background: var(--orfeo-ochre-a10); }
.efemi-preview-table tfoot td {
    padding: 7px 8px;
    background: var(--orfeo-report-subtotal-bg);
    font-weight: 700;
    border-top: 2px solid var(--orfeo-ochre-border);
}
.efemi-preview-r { text-align: right; }
.efemi-preview-mono { font-family: 'Consolas', monospace; }
.efemi-section-title--grid { margin-top: 14px; }
.efemi-grid-wrap {
    flex: 1 1 auto;
    min-height: 120px;
    max-height: 240px;
    overflow: auto;
    border: 1px solid #e2e8f0;
    border-radius: 4px;
    background: #fff;
}

/* Opciones impresión (popup host) */
.popup-host-window:has(.oip-shell) {
    width: min(860px, 98vw);
    height: min(620px, 92vh);
    max-width: 98vw;
    max-height: 92vh;
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
}
.oip-shell {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    background: #fff;
    border: 1px solid #c5c8d0;
    border-radius: 6px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
    overflow: hidden;
    font-family: 'Segoe UI', sans-serif;
    font-size: 13px;
}

/* Ficha efecto (popup) */
.ficha-efecto-seccion {
    margin: 0 0 12px 0;
    font-size: .95rem;
}
.ficha-efecto-seccion:not(:first-child) { margin-top: 18px; }
.ficha-efecto-head-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}
.ficha-efecto-cuenta-desc {
    margin-left: 10px;
    color: var(--orfeo-mid);
    font-size: .82rem;
}
.ficha-efecto-input-wide { width: 420px; max-width: 100%; }
.ficha-efecto-body .emp-row { flex-shrink: 0; }
.ficha-efecto-footer {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    padding-top: 12px;
    margin-top: 16px;
    border-top: 1px solid var(--orfeo-form-border, #e0e0e6);
}

.efemi-footer {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 10px 14px;
    border-top: 1px solid #e8eaf0;
    background: var(--orfeo-report-row-alt);
    flex-shrink: 0;
}
.efemi-btn-primary {
    padding: 7px 18px;
    font-size: 13px;
    background: var(--orfeo-ochre);
    color: #fff;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-weight: 600;
}
.efemi-btn-primary:hover:not(:disabled) { background: var(--orfeo-ochre-hover); }
.efemi-btn-primary:disabled { opacity: 0.55; cursor: default; }
.efemi-btn-secondary {
    padding: 7px 14px;
    font-size: 13px;
    background: #fff;
    color: #333;
    border: 1px solid #bbb;
    border-radius: 4px;
    cursor: pointer;
}
.efemi-btn-secondary:hover { background: #f0f0f0; }
.efemi-loading {
    text-align: center;
    padding: 8px;
    font-size: 12px;
    color: #666;
    flex-shrink: 0;
}
.efemi-w120 { min-width: 120px; }
.efemi-w130 { min-width: 130px; }
.efemi-mb6 { margin-bottom: 6px; }

.pagina-en-popup-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    padding: 0;
    background: #fff;
    display: flex;
    flex-direction: column;
}
/* Páginas @page embebidas: sin segundo marco dentro del popup */
.pagina-en-popup-body > .vaux-popup,
.pagina-en-popup-body > .diario-page,
.pagina-en-popup-body > .fichero-maestro-page,
.pagina-en-popup-body > .inmo-page,
.pagina-en-popup-body > .inicio-page,
.pagina-en-popup-body > .hm-page,
.pagina-en-popup-body > .conector-import-page,
.pagina-en-popup-body .vaux-popup--en-popup {
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    max-width: 100%;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    margin: 0;
}
.pagina-en-popup-shell:has(.vaux-popup) .pagina-en-popup-body,
.pagina-en-popup-shell:has(.diario-page) .pagina-en-popup-body,
.pagina-en-popup-shell:has(.fichero-maestro-page) .pagina-en-popup-body,
.pagina-en-popup-shell:has(.inmo-page) .pagina-en-popup-body {
    overflow: hidden;
}
.pagina-en-popup-shell--fs .pagina-en-popup-body .fichero-maestro-page,
.pagina-en-popup-shell--fs .pagina-en-popup-body .inmo-page {
    min-height: 100%;
    max-height: none;
    height: 100%;
    display: flex;
    flex-direction: column;
}
.pagina-en-popup-shell--fs .pagina-en-popup-body .fichero-maestro-page .fichero-maestro-body,
.pagina-en-popup-shell--fs .pagina-en-popup-body .inmo-page .diario-body {
    flex: 1 1 auto;
    min-height: 0;
}
.pagina-en-popup-error {
    margin: 18px;
    padding: 16px 18px;
    background: #fff5f5;
    border: 1px solid #fecaca;
    border-radius: 6px;
    color: #991b1b;
    font-size: 0.88rem;
}
.pagina-en-popup-error p { margin: 8px 0 12px; color: #7f1d1d; }
.pagina-en-popup-error-actions { display: flex; gap: 8px; }
.pagina-en-popup-body .diario-page {
    flex: 1 1 auto;
    min-height: 0;
    height: auto;
    max-height: none;
    width: 100%;
    border-radius: 0;
    box-shadow: none;
    border: none;
}

/* Conector importación — formulario compacto (modal o página suelta) */
.conector-import-page {
    display: flex;
    justify-content: center;
    padding: 2rem 1rem;
    background: linear-gradient(165deg, #faf0ed 0%, #f3e4df 42%, var(--orfeo-cream) 100%);
}
.conector-import-card {
    width: min(520px, 100%);
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 4px 32px rgba(0,0,0,.10);
    padding: 1.5rem 1.75rem 1.1rem;
    text-align: center;
}
.conector-import-brand { margin-bottom: .75rem; }
.conector-import-brand img { width: min(280px, 100%); }
.conector-import-title {
    margin: 0 0 .35rem;
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--orfeo-dark);
}
.conector-import-sub {
    margin: 0 0 .85rem;
    font-size: .85rem;
    color: var(--orfeo-mid);
    text-align: left;
}
.conector-import-meta {
    margin: 0 0 .85rem;
    font-size: .82rem;
    color: var(--orfeo-mid);
    text-align: left;
}
.conector-import-foot {
    margin-top: 1rem;
    font-size: .75rem;
    color: var(--orfeo-light);
}
.conector-import-resumen {
    padding: .85rem 1rem;
    background: var(--orfeo-cream);
    border-radius: 6px;
    border: 1px solid rgba(0,0,0,.06);
}
.conector-import-resumen ul {
    margin: 0;
    padding-left: 1.15rem;
}
.conector-import-card .form-label {
    text-align: left;
    display: block;
    font-size: .8rem;
    font-weight: 500;
    color: var(--orfeo-mid);
    text-transform: uppercase;
    letter-spacing: .05em;
    margin-bottom: .25rem;
}
.conector-import-card .btn-primary {
    background: var(--orfeo-ochre);
    border-color: var(--orfeo-ochre);
}
.conector-import-card .btn-primary:hover:not(:disabled) {
    background: var(--orfeo-ochre-hover);
    border-color: var(--orfeo-ochre-hover);
}
.pagina-en-popup-body .conector-import-page {
    min-height: 0;
    padding: 1rem 1.1rem 1.15rem;
    background: #fff;
}
.pagina-en-popup-body .conector-import-card {
    width: 100%;
    max-width: none;
    box-shadow: none;
    border-radius: 0;
    padding: 0;
}
.pagina-en-popup-body .conector-import-brand,
.pagina-en-popup-body .conector-import-title {
    display: none;
}
.pagina-en-popup-body .conector-import-sub {
    margin-top: 0;
}
.pagina-en-popup-shell:has(.fichero-maestro-page) .pagina-en-popup-head,
.pagina-en-popup-shell:has(.inmo-page) .pagina-en-popup-head {
    display: none;
}
.pagina-en-popup-shell:has(.fichero-maestro-page),
.pagina-en-popup-shell:has(.inmo-page) {
    border: 0;
    box-shadow: none;
}
.pagina-en-popup-body .diario-header { display: none; } /* el chrome del popup ya tiene cabecera */
/* Excepción: páginas con ribbon legacy DEBEN conservar su .diario-header (contiene el ribbon).
   Igual que en el desktop Orfeo, el modal embebe la cinta de mantenimiento dentro de la ventana. */
.pagina-en-popup-body .ventas-diarias-page .diario-header { display: flex; }
.pagina-en-popup-body .cheques-page .diario-header { display: flex; }
.pagina-en-popup-body .transf-page .diario-header,
.pagina-en-popup-body .remesas-page .diario-header,
.pagina-en-popup-body .bancos-page .diario-header,
.pagina-en-popup-body .presupuestos-page .diario-header,
.pagina-en-popup-body .efectos-page .diario-header,
.pagina-en-popup-body .cuentas-page .diario-header,
.pagina-en-popup-body .emp-cfg-page .diario-header {
    display: flex !important;
    flex-direction: column;
    align-items: stretch;
}
.pagina-en-popup-body .listado-oficial-page .diario-header {
    display: flex !important;
    flex-direction: column;
    align-items: stretch;
}
.pagina-en-popup-shell:has(.listado-oficial-page) .pagina-en-popup-head {
    display: none;
}
.pagina-en-popup-body .listado-oficial-page {
    min-height: 520px;
    max-height: calc(92vh - 8px);
    height: calc(92vh - 8px);
    display: flex;
    flex-direction: column;
}
.pagina-en-popup-body .listado-oficial-page .diario-body {
    flex: 1;
    min-height: 0;
}
.pagina-en-popup-body .listado-oficial-page .lo-pagina {
    width: 100%;
    max-width: none;
    min-height: 0;
    margin: 0;
    padding: 12px 16px;
    box-shadow: none;
}
.pagina-en-popup-body .listado-oficial-page .lo-tbl {
    table-layout: auto;
    min-width: 100%;
}
.pagina-en-popup-shell:has(.emp-cfg-page) .pagina-en-popup-head {
    display: none;
}
.pagina-en-popup-body .emp-cfg-page {
    min-height: 480px;
    max-height: calc(92vh - 52px);
}
.pagina-en-popup-body .transf-page,
.pagina-en-popup-body .remesas-page,
.pagina-en-popup-body .bancos-page,
.pagina-en-popup-body .presupuestos-page,
.pagina-en-popup-body .efectos-page {
    min-height: 520px;
    max-height: calc(92vh - 52px);
    height: calc(92vh - 52px);
    display: flex;
    flex-direction: column;
}
.pagina-en-popup-shell:has(.cuentas-page) {
    display: flex;
    flex-direction: column;
    height: min(820px, 92vh) !important;
    max-height: 92vh !important;
    overflow: hidden;
}
.pagina-en-popup-shell:has(.cuentas-page) .pagina-en-popup-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden !important;
    display: flex;
    flex-direction: column;
}
.pagina-en-popup-shell:has(.cuentas-page) .pagina-en-popup-body .cuentas-page {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none !important;
    height: 100% !important;
    overflow: hidden;
}
/* Modales anidados (editor dentro de popup-host) */
.orfeo-nested-modal,
body:has(.popup-host-layer) .dxbl-modal-root {
    z-index: 12050 !important;
}
.cuentas-editor-popup {
    width: 860px;
    max-width: 96vw;
}
.cuentas-editor-popup .liq-editor-main,
.cuentas-editor-main {
    background: #fff;
    overflow: auto;
    max-height: calc(92vh - 120px);
    padding: 18px 24px 20px 32px;
}
.cuentas-editor-form {
    display: flex;
    flex-direction: column;
    gap: 20px;
    padding: 0 6px 0 10px;
}
.cuentas-editor-seccion {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding-left: 4px;
}
.cuentas-editor-seccion-titulo {
    margin: 0;
    font-size: 0.74rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--orfeo-mid);
    padding-bottom: 4px;
    border-bottom: 1px solid var(--orfeo-form-border);
}
.cuentas-editor-grid {
    display: grid;
    gap: 10px 12px;
    align-items: end;
}
.cuentas-editor-grid--1 { grid-template-columns: 1fr; }
.cuentas-editor-grid--3 { grid-template-columns: 160px 1fr 150px; }
.cuentas-editor-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.cuentas-editor-grid--addr { grid-template-columns: 100px 1.4fr 1fr 72px; }
.cuentas-editor-grid--banca { grid-template-columns: 2fr 1fr 1fr; }
.cuentas-editor-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}
.cuentas-editor-field > label {
    font-size: 0.72rem;
    font-weight: 500;
    color: #6b6d78;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.cuentas-editor-input,
.cuentas-editor-popup select.cuentas-editor-input,
.cuentas-editor-popup input.cuentas-editor-input {
    width: 100%;
    box-sizing: border-box;
    min-height: 34px;
    border: 1px solid #b8bcc6 !important;
    border-radius: 6px;
    padding: 7px 10px;
    font-size: 0.88rem;
    background: #fff !important;
    color: var(--orfeo-dark);
    font-family: var(--font-sans);
    transition: border-color 0.15s, box-shadow 0.15s;
    -webkit-appearance: none;
    appearance: none;
}
.cuentas-editor-input:focus,
.cuentas-editor-popup select.cuentas-editor-input:focus,
.cuentas-editor-popup input.cuentas-editor-input:focus {
    outline: none;
    border-color: var(--orfeo-accent) !important;
    box-shadow: 0 0 0 3px var(--orfeo-accent-a13);
}
.cuentas-editor-input:disabled {
    background: #f5f4f1 !important;
    color: #6b6d78;
}
.cuentas-editor-checks {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 22px;
    padding: 6px 4px 4px 8px;
}
.cuentas-editor-error {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    margin-bottom: 4px;
    border-radius: 6px;
    background: #fff5f5;
    border: 1px solid #f5c2c7;
    color: #842029;
    font-size: 0.86rem;
}
.cuentas-editor-foot {
    justify-content: flex-end;
    gap: 8px;
}
@media (max-width: 820px) {
    .cuentas-editor-grid--3,
    .cuentas-editor-grid--4,
    .cuentas-editor-grid--addr,
    .cuentas-editor-grid--banca {
        grid-template-columns: 1fr;
    }
}
.pagina-en-popup-body .fichero-maestro-page .diario-header { display: flex !important; flex-direction: column; align-items: stretch; }
.pagina-en-popup-body .fichero-maestro-page { min-height: 520px; max-height: calc(92vh - 52px); }
.pagina-en-popup-body .inmo-page .diario-header,
.pagina-en-popup-body .inmo-page .fichero-maestro-header,
.pagina-en-popup-body .transf-page .fichero-maestro-header {
    display: flex !important;
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
}
.pagina-en-popup-body .inmo-page { min-height: 520px; max-height: calc(92vh - 52px); }
.pagina-en-popup-body .diario-footer { border-radius: 0; }

.empty-estado-accion {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 28px 18px;
    text-align: center;
}

/* === Fichero maestro (clientes / proveedores) — layout con aire === */
.fichero-maestro-header {
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 14px;
    padding: 14px 18px 12px;
    background: #fff;
    border-bottom: 1px solid var(--orfeo-form-border-strong);
}
.fichero-maestro-titulo { padding: 0 2px; }
.fichero-maestro-titulo .diario-title { font-size: 1rem; }
.fichero-maestro-titulo .diario-title i { font-size: 1.05rem; }
.fm-ribbon {
    display: flex;
    align-items: stretch;
    flex-wrap: wrap;
    gap: 4px 6px;
    background: var(--orfeo-form-surface);
    border: 1px solid var(--orfeo-form-border-strong);
    border-radius: 6px;
    padding: 10px 14px;
}
.fm-ribbon-group {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    padding: 0 14px;
}
.fm-ribbon-btns {
    display: flex;
    gap: 8px;
    flex: 1;
    align-items: flex-end;
}
.fm-ribbon-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 5px;
    padding: 8px 12px;
    min-width: 72px;
    min-height: 64px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 5px;
    cursor: pointer;
    font-size: 0.72rem;
    line-height: 1.15;
    color: #3a3a3a;
    position: relative;
}
.fm-ribbon-btn > i.ph-duotone { font-size: 1.1rem; }
.fm-ribbon-btn:hover:not(:disabled) {
    background: var(--orfeo-form-surface-hover);
    border-color: var(--orfeo-form-border-strong);
}
.fm-ribbon-btn:disabled { opacity: 0.45; cursor: default; }
.fm-ribbon-btn span { text-align: center; }
.fm-ribbon-lbl {
    text-align: center;
    font-size: 0.7rem;
    color: var(--orfeo-mid);
    border-top: 1px solid var(--orfeo-form-border);
    margin-top: 6px;
    padding-top: 5px;
    text-transform: uppercase;
    letter-spacing: 0.35px;
}
.fm-ribbon-sep {
    width: 1px;
    background: var(--orfeo-form-border-strong);
    margin: 6px 4px;
    align-self: stretch;
}
.fm-caret {
    position: absolute;
    bottom: 4px;
    right: 6px;
    font-size: 0.55rem;
    color: var(--orfeo-mid);
}
.fm-ribbon-btn--menu { position: relative; }

.transf-ribbon-vista .fm-ribbon-btns { align-items: center; gap: 10px; }
.transf-buscar { width: 220px; max-width: 28vw; font-size: 0.78rem; }
.transf-filtro { width: 130px; font-size: 0.78rem; }
.fm-uti-menu {
    position: absolute;
    top: calc(100% + 4px);
    left: 50%;
    transform: translateX(-50%);
    background: #fff;
    border: 1px solid #c5c8d0;
    border-radius: 6px;
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.16);
    z-index: 120;
    min-width: 210px;
    padding: 6px 0;
}
.fm-uti-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 16px;
    cursor: pointer;
    font-size: 0.86rem;
    color: #3a3a3a;
}
.fm-uti-item:hover { background: var(--orfeo-ochre-a10); }
.fm-uti-item i { color: var(--orfeo-ochre); font-size: 1.1rem; }
.fichero-maestro-body {
    display: flex !important;
    overflow: hidden;
    flex: 1;
    min-height: 0;
    gap: 0;
    background: #f3f4f6;
}
.fichero-maestro-side {
    width: 92px;
    padding: 14px 10px;
    flex-shrink: 0;
    background: #f8f9fa;
    border-right: 1px solid #d8dce3;
}
.fichero-maestro-side .biblio-letra {
    padding: 5px 0;
    margin-bottom: 1px;
    border-radius: 3px;
    border-bottom: none;
    font-size: 0.78rem;
}
.fichero-maestro-side-lbl {
    font-size: 0.72rem;
    font-weight: 600;
    color: #4a4d57;
    margin-bottom: 6px;
    line-height: 1.3;
}
.fichero-maestro-side-sel {
    width: 100%;
    margin-bottom: 12px;
    font-size: 0.78rem;
    padding: 5px 4px;
}
.fichero-maestro-grid-wrap {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    margin: 10px 12px 10px 0;
    background: #fff;
    border: 1px solid #d8dce3;
    border-radius: 6px;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.fichero-maestro-buscar {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    border-bottom: 1px solid #e5e7eb;
    background: #fafbfc;
    flex-shrink: 0;
}
.fichero-maestro-buscar-inp { flex: 1; max-width: 520px; }
.fichero-maestro-grid { flex: 1; min-height: 280px; }
/* Grilla compacta: anula iva-mono global (font-weight:600) y tamaño por defecto de DevExpress */
.fichero-maestro-grid.dxbl-grid,
.fichero-maestro-grid .dxbl-grid,
.fichero-maestro-grid .dxbl-grid-table {
    font-size: 0.78rem !important;
}
.fichero-maestro-grid tbody > tr > td,
.fichero-maestro-grid .dxbl-grid-data-row > td {
    padding: 3px 8px !important;
    font-size: 0.78rem !important;
    font-weight: 400 !important;
    line-height: 1.25 !important;
    vertical-align: middle;
}
.fichero-maestro-grid .dxbl-grid-cell-content {
    font-size: 0.78rem !important;
    font-weight: 400 !important;
    line-height: 1.25 !important;
    padding: 0 !important;
}
.fichero-maestro-grid .dxbl-grid-header-row th {
    padding: 4px 8px !important;
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    font-size: 0.72rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.02em;
}
.fichero-maestro-grid .dxbl-grid-header-row th .dxbl-grid-header-content {
    font-weight: 700 !important;
}
.fichero-maestro-grid .iva-mono {
    font-size: 0.78rem !important;
    font-weight: 500 !important;
    letter-spacing: 0;
}
.fichero-maestro-grid .fichero-maestro-nom {
    font-weight: 400;
    font-size: 0.78rem;
}
.fichero-maestro-grid .fichero-maestro-nom-com {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    color: #4b5563;
    font-size: 0.78rem;
    font-weight: 400;
    line-height: 1.25;
    word-break: break-word;
}
.diario-page.fichero-maestro-page {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    background: #f3f4f6;
}
.diario-page.fichero-maestro-page .diario-footer {
    padding: 10px 18px;
    margin-top: 0;
    border-top: 1px solid #d8dce3;
    background: #fff;
}
.pagina-en-popup-body .fichero-maestro-page .fichero-maestro-body {
    background: #f3f4f6;
}

/* === Fichero bienes (inmovilizado) — mismo criterio de aire === */
.diario-page.inmo-page {
    background: #f3f4f6;
}
.diario-page.inmo-page .diario-header {
    flex-wrap: wrap;
    gap: 12px 16px;
    padding: 14px 18px;
    background: #fff;
    border-bottom: 1px solid var(--orfeo-form-border-strong);
}
.diario-page.inmo-page .diario-header-actions {
    gap: 10px;
    flex-wrap: wrap;
}
.diario-page.inmo-page .diario-body {
    gap: 0;
    background: #f3f4f6;
}
.inmo-side {
    width: 248px;
    padding: 16px 18px;
    background: #f8f9fa;
    border-right: 1px solid #d8dce3;
}
.inmo-side-grp {
    margin-bottom: 18px;
    padding-bottom: 16px;
}
.inmo-side-h { margin-bottom: 8px; }
.inmo-radio {
    padding: 6px 6px;
    margin-bottom: 2px;
    border-radius: 4px;
}
.inmo-content {
    flex: 1;
    overflow: auto;
    margin: 10px 12px 10px 0;
    padding: 14px 16px;
    background: #fff;
    border: 1px solid #d8dce3;
    border-radius: 6px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.inmo-page .liq-tbl th,
.inmo-page .liq-tbl td {
    padding: 10px 14px;
}
.inmo-page .liq-tbl th {
    padding-top: 11px;
    padding-bottom: 11px;
}
.inmo-page .diario-footer {
    padding: 10px 18px;
    background: #fff;
    border-top: 1px solid #d8dce3;
}

/* === Visor SII === */
.diario-page.sii-page {
    background: #f3f4f6;
}
.sii-page .diario-body,
.sii-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    display: flex;
    background: #f3f4f6;
}
.sii-header {
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 10px !important;
}
.sii-header-top { display: flex; flex-direction: column; gap: 2px; }
.sii-header-hint {
    margin: 0;
    font-size: .8rem;
    color: var(--orfeo-mid);
}
.sii-ribbon { margin: 0; }
.sii-side {
    width: 220px;
    flex-shrink: 0;
    padding: 14px 16px;
    background: #f8f9fa;
    border-right: 1px solid #d8dce3;
    overflow-y: auto;
}
.sii-side-grp { margin-bottom: 16px; }
.sii-side-h {
    font-size: .72rem;
    font-weight: 600;
    color: var(--orfeo-mid);
    text-transform: uppercase;
    letter-spacing: .04em;
    margin-bottom: 8px;
}
.sii-filter-btn {
    display: block;
    width: 100%;
    text-align: left;
    padding: 7px 10px;
    margin-bottom: 2px;
    border: 1px solid transparent;
    border-radius: 4px;
    background: transparent;
    cursor: pointer;
    font-size: .82rem;
    color: #374151;
}
.sii-filter-btn:hover { background: #eceef2; }
.sii-filter-btn-act {
    background: #fff;
    border-color: #d0d4dc;
    font-weight: 600;
    color: var(--orfeo-accent);
}
.sii-filter-count { color: var(--orfeo-mid); font-weight: 500; }
.sii-main {
    flex: 1;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 10px 12px 10px 0;
    overflow: hidden;
}
.sii-panel {
    background: #fff;
    border: 1px solid #d8dce3;
    border-radius: 6px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
}
.sii-panel-kpi { flex-shrink: 0; padding: 12px 14px; }
.sii-resumen { margin: 0; }
.sii-panel-grid {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.sii-grid-scroll {
    flex: 1;
    min-height: 0;
    overflow: auto;
}
.sii-tbl { margin: 0; width: 100%; }
.sii-tbl th { position: sticky; top: 0; z-index: 1; background: #f1f5f9; }
.sii-csv { font-size: .72rem; }
.sii-error { font-size: .72rem; color: #a00; max-width: 220px; }
.sii-empty {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--orfeo-mid);
    font-style: italic;
    padding: 24px;
}
.sii-page .diario-footer {
    flex-shrink: 0;
    background: #fff;
    border-top: 1px solid #d8dce3;
}

.pagina-en-popup-body .sii-page .diario-header,
.pagina-en-popup-body .sii-page .sii-header {
    display: flex !important;
    flex-direction: column;
    align-items: stretch;
}
.pagina-en-popup-body .sii-page {
    min-height: 520px;
    max-height: calc(92vh - 52px);
    height: calc(92vh - 52px);
    display: flex;
    flex-direction: column;
}
.pagina-en-popup-shell:has(.sii-page) {
    display: flex;
    flex-direction: column;
    height: min(780px, 92vh);
    max-height: 92vh;
    overflow: hidden;
}
.pagina-en-popup-shell:has(.sii-page) .pagina-en-popup-head {
    display: none;
}
.pagina-en-popup-shell:has(.sii-page) .pagina-en-popup-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.pagina-en-popup-shell:has(.sii-page) .pagina-en-popup-body .sii-page {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
    height: auto;
}

/* === Biblioteca de terceros en modal === */
.pagina-en-popup-shell:has(.biblio-page) {
    display: flex;
    flex-direction: column;
    width: min(1280px, 98vw) !important;
    height: 92vh !important;
    max-width: 98vw !important;
    max-height: 92vh !important;
    overflow: hidden;
}
.popup-host-window:has(.biblio-popup-shell) {
    width: min(1280px, 98vw);
    height: 92vh;
    max-width: 98vw;
    max-height: 92vh;
}
.pagina-en-popup-shell:has(.biblio-page) .pagina-en-popup-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.pagina-en-popup-body .biblio-page {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
    height: 100%;
    display: flex;
    flex-direction: column;
    border-radius: 0;
    box-shadow: none;
}
.pagina-en-popup-body .biblio-page .fichero-maestro-header {
    flex-shrink: 0;
}
.pagina-en-popup-body .biblio-page .fichero-maestro-body {
    flex: 1 1 auto;
    min-height: 0;
}
.pagina-en-popup-body .biblio-page .fichero-maestro-grid-wrap {
    min-height: 0;
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
}

/* Sprint 1 — feedback de validación inline en inputs (NIF/IBAN/CCC) */
.ipt-ok { border-color: var(--orfeo-success) !important; box-shadow: 0 0 0 1px color-mix(in srgb, var(--orfeo-success) 18%, transparent); }
.ipt-ko { border-color: #c00 !important;    box-shadow: 0 0 0 1px rgba(204,0,0,.18); background:#fff5f5; }

/* Mini-cintas legacy en popups AEAT / páginas: unificar etiquetas de grupo */
[class*="-rb-lbl"], [class*="-rb-label"], .vd-ribbon-label, .dr-group-label {
    color: var(--orfeo-mid) !important;
}

/* Paneles informativos / avisos (sustituye cajas ámbar #fef3c7 en formularios) */
.orfeo-info-panel {
    background: var(--orfeo-form-surface-hover);
    border: 1px solid var(--orfeo-form-border-strong);
    border-radius: 4px;
    padding: 8px 12px;
    font-size: 0.82rem;
    color: var(--orfeo-dark);
}
.orfeo-info-panel strong { color: var(--orfeo-accent); }

/* Badges pendiente / aviso — gris pizarra (antes ámbar #fef3c7 en popups) */
.flst-badge-pend,
.epag-estado-pen,
.ecob-estado-pen,
.chpg-estado-pen,
.rten-tipo,
.arem-badge-generada,
.cfis-warn,
.ubr-pendiente {
    background: var(--orfeo-form-surface-hover) !important;
    color: var(--orfeo-accent) !important;
    border-color: var(--orfeo-form-border-strong);
}
.cfis-row-warn td { background: var(--orfeo-form-surface-hover) !important; }

/* Form_MsgTexto web — mensajes al usuario (ocre / amarillo; distinto del gris de formularios) */
.msgu-shell {
    background: #fff;
    border: 2px solid var(--orfeo-msg-header-from);
    border-radius: 6px;
    width: 420px;
    max-width: 92vw;
    box-shadow: 0 12px 36px rgba(192, 97, 74, 0.32);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    min-height: 0;
}
.msgu-shell.msgu-shell--listas {
    width: min(540px, 94vw);
}
.msgu-shell.msgu--warn {
    border-color: var(--orfeo-msg-warn-to);
    box-shadow: 0 12px 36px rgba(234, 179, 8, 0.35);
}
.popup-host-window:has(.msgu-shell.msgu--ochre) {
    border-color: var(--orfeo-msg-header-from);
    box-shadow: 0 12px 40px rgba(192, 97, 74, 0.38);
}
.popup-host-window:has(.msgu-shell.msgu--warn) {
    border-color: var(--orfeo-msg-warn-to);
    box-shadow: 0 12px 40px rgba(234, 179, 8, 0.38);
}
.msgu-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    font-size: 1rem;
}
.msgu--ochre .msgu-header {
    background: linear-gradient(180deg, var(--orfeo-msg-header-from) 0%, var(--orfeo-msg-header-to) 100%);
    color: #fff;
}
.msgu--warn .msgu-header {
    background: linear-gradient(180deg, var(--orfeo-msg-warn-from) 0%, var(--orfeo-msg-warn-to) 100%);
    color: var(--orfeo-msg-warn-fg);
}
.msgu-body {
    padding: 18px 20px;
    font-size: 0.95rem;
    line-height: 1.45;
    color: var(--orfeo-dark);
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}
.msgu-body:not(.msgu-body--listas) {
    white-space: pre-wrap;
}
.msgu-body--listas {
    padding: 16px 18px 18px;
}
.msgu-content--listas .msgu-parrafos {
    margin-bottom: 12px;
}
.msgu-parrafo {
    margin: 0 0 10px;
    line-height: 1.5;
    color: #2f3945;
}
.msgu-parrafo:last-child {
    margin-bottom: 0;
}
.msgu-lista-bloque + .msgu-lista-bloque {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid rgba(0, 0, 0, 0.08);
}
.msgu-lista-titulo {
    margin: 0 0 8px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #6b7280;
}
.msgu--warn .msgu-lista-titulo {
    color: #92400e;
}
.msgu--ochre .msgu-lista-titulo {
    color: #8a5a48;
}
.msgu-lista {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.msgu-lista-item {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 9px 11px;
    border-radius: 5px;
    border: 1px solid rgba(0, 0, 0, 0.06);
    background: rgba(255, 255, 255, 0.72);
    font-size: 0.88rem;
    line-height: 1.42;
    color: #36404c;
}
.msgu-lista-item--kv {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: baseline;
    gap: 12px 16px;
    padding: 8px 12px;
}
.msgu-lista-etiqueta {
    font-size: 0.86rem;
    color: #4a5568;
    line-height: 1.35;
}
.msgu-lista-valor {
    font-size: 0.9rem;
    font-weight: 600;
    color: #1e293b;
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.msgu-lista--filas {
    gap: 4px;
}
.msgu--ochre .msgu-lista-item {
    background: #fff;
    border-color: #ead9d2;
    box-shadow: 0 1px 2px rgba(192, 97, 74, 0.06);
}
.msgu--warn .msgu-lista-item {
    background: #fff;
    border-color: #f5e3a8;
    box-shadow: 0 1px 2px rgba(234, 179, 8, 0.08);
}
.msgu-lista-marker {
    flex-shrink: 0;
    width: 7px;
    height: 7px;
    margin-top: 0.45em;
    border-radius: 50%;
    background: var(--orfeo-msg-header-from);
}
.msgu--warn .msgu-lista-marker {
    background: var(--orfeo-msg-warn-to);
}
.msgu-lista-texto {
    flex: 1;
    min-width: 0;
    word-break: break-word;
}
.msgu--ochre .msgu-body {
    background: #fffaf7;
}
.msgu--warn .msgu-body {
    background: #fffbeb;
}
.msgu-footer {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 10px 14px;
    border-top: 1px solid var(--orfeo-form-border);
    background: var(--orfeo-form-surface);
}
.msgu-footer--opciones {
    flex-wrap: wrap;
    justify-content: center;
}
.msgu--ochre .msgu-footer .conc-btn-primary {
    background: var(--orfeo-msg-header-from) !important;
    border-color: var(--orfeo-msg-header-to) !important;
    color: #fff !important;
}
.msgu--ochre .msgu-footer .conc-btn-primary:hover:not(:disabled) {
    background: var(--orfeo-ochre-hover) !important;
    border-color: var(--orfeo-msg-header-to) !important;
}
.msgu--warn .msgu-footer .conc-btn-primary {
    background: var(--orfeo-msg-warn-btn) !important;
    border-color: var(--orfeo-msg-warn-btn-h) !important;
    color: #fff !important;
}
.msgu--warn .msgu-footer .conc-btn-primary:hover:not(:disabled) {
    background: var(--orfeo-msg-warn-btn-h) !important;
    border-color: #854d0e !important;
}

/* Recursos del usuario — popup configuración permisos */
.rec-popup-shell {
    background: #fff;
    border: 1px solid var(--orfeo-form-border-strong);
    border-radius: 6px;
    width: min(920px, 96vw);
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25);
}
.rec-popup-header {
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%);
    color: #fff;
    padding: 10px 14px;
    border-radius: 6px 6px 0 0;
    display: flex;
    align-items: center;
    gap: 8px;
}
.rec-popup-header button {
    margin-left: auto;
    background: transparent;
    border: 0;
    color: #fff;
    font-size: 1.2rem;
    cursor: pointer;
}
.rec-popup-body {
    padding: 16px 18px;
    overflow: auto;
    flex: 1;
}
.rec-popup-footer {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    padding: 10px 14px;
    border-top: 1px solid var(--orfeo-form-border);
    background: var(--orfeo-form-surface);
    border-radius: 0 0 6px 6px;
}
.rec-grp {
    border: 1px solid var(--orfeo-form-border-strong);
    border-radius: 6px;
    padding: 10px 14px 12px;
    margin-bottom: 12px;
}
.rec-grp legend {
    font-size: 0.82rem;
    font-weight: 700;
    color: #404040;
    padding: 0 6px;
}
.rec-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px 16px;
    font-size: 0.88rem;
}
.rec-grid label {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
}
.rec-perm-tbl {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.86rem;
}
.rec-perm-tbl th,
.rec-perm-tbl td {
    border: 1px solid var(--orfeo-form-border);
    padding: 5px 8px;
    text-align: left;
}
.rec-perm-tbl th {
    background: var(--orfeo-form-surface);
    font-size: 0.75rem;
    text-transform: uppercase;
}
.rec-perm-grp-title {
    font-size: 0.78rem;
    font-weight: 700;
    color: #404040;
    text-transform: uppercase;
    margin: 10px 0 6px 0;
}
.rec-buscar {
    width: 100%;
    max-width: 360px;
    margin-bottom: 12px;
}
.msgu--ochre .msgu-header .ph-check-circle,
.msgu--ochre .msgu-header .ph-question,
.msgu--ochre .msgu-header .ph-info {
    color: rgba(255, 255, 255, 0.92);
}
.msgu--warn .msgu-header .ph-warning-circle {
    color: var(--orfeo-msg-warn-fg);
}

.orfeo-consulta-banner {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    margin: 0 0 8px 0;
    font-size: 0.88rem;
    color: #5c4a1a;
    background: #fef9e7;
    border: 1px solid #f0d78c;
    border-radius: 6px;
}

/* Barra de mensajes del formulario activo (Form_MsgTexto / ayudas contextuales) */
.orfeo-form-mensajes {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
    min-height: 32px;
    padding: 6px 14px;
    font-size: 0.82rem;
    line-height: 1.35;
    border-top: 1px solid var(--orfeo-form-border);
    background: var(--orfeo-form-surface);
    color: var(--orfeo-dark);
}
.orfeo-form-mensajes i { font-size: 1.1rem; flex-shrink: 0; }
.orfeo-form-mensajes-text { flex: 1; }
.orfeo-form-mensajes-info { background: #f0f4f8; color: #334155; border-top-color: #cbd5e1; }
.orfeo-form-mensajes-info i { color: #5c6370; }
.orfeo-form-mensajes-ok { background: #ecfdf5; color: #065f46; border-top-color: #6ee7b7; }
.orfeo-form-mensajes-ok i { color: #059669; }
.orfeo-form-mensajes-warn { background: #fffbeb; color: #92400e; border-top-color: #fcd34d; }
.orfeo-form-mensajes-warn i { color: #d97706; }
.orfeo-form-mensajes-error { background: #fef2f2; color: #991b1b; border-top-color: #fca5a5; }
.orfeo-form-mensajes-error i { color: #dc2626; }
.orfeo-form-mensajes-pregunta { background: #eff6ff; color: #1e3a5f; border-top-color: #93c5fd; }
.orfeo-form-mensajes-pregunta i { color: #2563eb; }
.orfeo-form-mensajes-procesando { background: #f8fafc; color: #475569; border-top-color: #cbd5e1; }
.orfeo-form-mensajes-procesando i { color: var(--orfeo-form-icon-accent, #1f5fbf); }
.orfeo-form-mensajes-spin { display: inline-block; animation: orfeo-form-mensajes-spin 0.85s linear infinite; }
@keyframes orfeo-form-mensajes-spin { to { transform: rotate(360deg); } }
.orfeo-form-mensajes-acciones {
    display: flex;
    gap: 8px;
    flex-shrink: 0;
    margin-left: 8px;
}
.orfeo-form-mensajes-btn {
    padding: 3px 12px;
    font-size: 0.78rem;
    border: 1px solid #94a3b8;
    border-radius: 4px;
    background: #fff;
    color: #334155;
    cursor: pointer;
}
.orfeo-form-mensajes-btn:hover { background: #f1f5f9; }
.orfeo-form-mensajes-btn-primary {
    background: var(--orfeo-accent, #1f5fbf);
    border-color: var(--orfeo-accent, #1f5fbf);
    color: #fff;
    font-weight: 600;
}
.orfeo-form-mensajes-btn-primary:hover { filter: brightness(1.05); }

/* === Popups modales (shell homogéneo gris pizarra) === */
.orfeo-popup-shell {
    background: #fff;
    border: 1px solid var(--orfeo-form-border-strong);
    border-radius: 6px;
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25);
    display: flex;
    flex-direction: column;
    max-height: 90vh;
}
.orfeo-popup-header {
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%);
    color: #fff;
    padding: 10px 14px;
    border-radius: 6px 6px 0 0;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
    border-bottom: 1px solid var(--orfeo-form-border-strong);
}
.orfeo-popup-header button,
.orfeo-popup-header .orfeo-popup-close {
    margin-left: auto;
    background: transparent;
    border: 0;
    color: #fff;
    font-size: 1.2rem;
    cursor: pointer;
    line-height: 1;
}
.orfeo-popup-body {
    padding: 14px 18px;
    overflow-y: auto;
    flex: 1;
    min-height: 0;
}
.orfeo-popup-footer {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    padding: 10px 14px;
    border-top: 1px solid var(--orfeo-form-border);
    background: var(--orfeo-form-surface);
    border-radius: 0 0 6px 6px;
    flex-shrink: 0;
}
.orfeo-popup-notice {
    background: var(--orfeo-form-surface-hover);
    border: 1px solid var(--orfeo-form-border-strong);
    border-radius: 4px;
    padding: 10px 12px;
    font-size: 0.83rem;
    color: var(--orfeo-dark);
    line-height: 1.5;
}
.orfeo-popup-notice i { color: var(--orfeo-form-icon-accent); }
.orfeo-popup-notice-warn {
    background: var(--orfeo-form-surface-hover);
    border-color: var(--orfeo-form-border-strong);
    color: var(--orfeo-dark);
}
.orfeo-popup-notice-warn i { color: var(--orfeo-form-icon-accent); }
.orfeo-popup-notice-ok {
    background: var(--orfeo-success-bg);
    border-color: #a7d4b5;
    color: #14532d;
}
.orfeo-popup-notice-ok i { color: var(--orfeo-success); }

/* Anula botones primarios con color inline (ocre/azul/teal) dentro del host de popups */
.popup-host-content .conc-btn-primary[style*="background"],
.popup-host-content .conc-btn.conc-btn-primary[style*="background"] {
    background: var(--orfeo-form-primary-btn) !important;
    border-color: var(--orfeo-form-primary-btn-border) !important;
    color: #fff !important;
}
.popup-host-content .conc-btn-primary[style*="background"]:hover:not(:disabled) {
    background: var(--orfeo-form-primary-btn-hover) !important;
    border-color: var(--orfeo-form-primary-btn-border) !important;
}

/* Cabeceras de popup con gradiente verde/teal/ocre inline → gris pizarra */
.popup-host-content [style*="linear-gradient(135deg,#065f46"],
.popup-host-content [style*="linear-gradient(135deg, #065f46"],
.popup-host-content [style*="linear-gradient(180deg,#0d9488"],
.popup-host-content [style*="linear-gradient(180deg,#1e6b8a"],
.popup-host-content [style*="linear-gradient(135deg,#92400e"],
.popup-host-content [style*="linear-gradient(180deg,#c0614a"] {
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%) !important;
}

/* Azul / teal inline y clases locales en popups → gris pizarra (no aplica a .msgu-shell / mensajes ocre) */
.popup-host-content [style*="color:#0078d4"],
.popup-host-content [style*="color: #0078d4"],
.popup-host-content [style*="color:#0e7490"],
.popup-host-content [style*="color:#2563eb"],
.popup-host-content [style*="color:#3b82f6"],
.popup-host-content [style*="color:#1f5fbf"] {
    color: var(--orfeo-ochre) !important;
}
.popup-host-content [style*="background:#0078d4"],
.popup-host-content [style*="background: #0078d4"],
.popup-host-content [style*="background:#0e7490"],
.popup-host-content [style*="background:#2563eb"] {
    background: var(--orfeo-form-primary-btn) !important;
    border-color: var(--orfeo-form-primary-btn-border) !important;
    color: #fff !important;
}
.popup-host-content [class*="-btn-primary"],
.popup-host-content [class*="-btn_primary"] {
    background: var(--orfeo-form-primary-btn) !important;
    border-color: var(--orfeo-form-primary-btn-border) !important;
    color: #fff !important;
}
.popup-host-content [class*="-btn-primary"]:hover:not(:disabled),
.popup-host-content [class*="-btn_primary"]:hover:not(:disabled) {
    background: var(--orfeo-form-primary-btn-hover) !important;
}
.popup-host-content [class*="-section-title"] {
    color: var(--orfeo-ochre) !important;
}
.popup-host-content [class*="-active"][class*="nav"],
.popup-host-content [class*="-nav-active"],
.popup-host-content [class*="-tab-act"],
.popup-host-content .ana-active,
.popup-host-content .ilr-active {
    border-color: var(--orfeo-form-border-strong) !important;
}
.popup-host-content .ana-active,
.popup-host-content .ilr-active {
    background: var(--orfeo-form-surface-selected) !important;
}
.popup-host-content .emi-nav-active {
    border-left-color: var(--orfeo-ochre) !important;
    background: var(--orfeo-ochre-a12) !important;
    color: var(--orfeo-dark) !important;
}
.popup-host-content .ivaeml-nav-active {
    background: var(--orfeo-ochre-a12) !important;
    color: var(--orfeo-dark) !important;
    border-left: 3px solid var(--orfeo-ochre) !important;
}
.popup-host-content [style*="linear-gradient(135deg,#1a3c6e"],
.popup-host-content [style*="linear-gradient(135deg,#1e3a5f"],
.popup-host-content [style*="linear-gradient(180deg,#0078d4"] {
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%) !important;
}
.popup-host-content [style*="background:#0e7490"],
.popup-host-content [style*="background:#7c3aed"],
.popup-host-content [style*="background:#1d6f42"] {
    background: var(--orfeo-form-primary-btn) !important;
}
.popup-host-content [style*="color:#1d6f42"],
.popup-host-content [style*="color:#7c3aed"],
.popup-host-content [style*="color:#3b8a3b"] {
    color: var(--orfeo-form-icon-accent) !important;
}
.popup-host-content .ret-active,
.popup-host-content .pres-form-title {
    background: var(--orfeo-form-surface-selected) !important;
    border-color: var(--orfeo-form-border-strong) !important;
    color: var(--orfeo-dark) !important;
}
.popup-host-content .pres-btn-ok {
    background: var(--orfeo-form-primary-btn) !important;
}

.vaux-popup-titlebar > i,
.liq-editor-titlebar > span:first-child i {
    color: var(--orfeo-form-icon-accent) !important;
}

.orfeo-boot-splash {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 50vh;
    font-size: 1rem;
    color: var(--orfeo-mid, #5c6370);
}

.orfeo-boot-splash .ph-spinner-gap {
    font-size: 1.5rem;
    animation: rotar 1.2s linear infinite;
}

/* CuentasAnualesCalcularPopup */
.ca-calc-shell {
    width: min(420px, 92vw);
    background: #fff;
    border: 1px solid #c5c8d0;
    border-radius: 6px;
    overflow: hidden;
    box-shadow: 0 8px 28px rgba(0, 0, 0, 0.22);
    font-family: "Segoe UI", Arial, sans-serif;
    font-size: 0.88rem;
}
.ca-calc-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from), var(--orfeo-form-shell-header-to));
    color: #fff;
}
.ca-calc-x {
    background: rgba(255, 255, 255, 0.2);
    border: 0;
    color: #fff;
    width: 28px;
    height: 28px;
    cursor: pointer;
    border-radius: 4px;
}
.ca-calc-body {
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.ca-calc-hint {
    margin: 0 0 6px;
    color: #555;
    font-size: 0.82rem;
    line-height: 1.35;
}
.ca-calc-chk {
    display: flex;
    gap: 8px;
    align-items: center;
}
.ca-calc-foot {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 10px 14px;
    background: #f5f5f5;
    border-top: 1px solid #ddd;
}
.ca-calc-btn {
    padding: 6px 14px;
    border: 1px solid #aaa;
    background: #fff;
    cursor: pointer;
    border-radius: 2px;
}
.ca-calc-btn-primary {
    background: var(--orfeo-form-primary-btn, #5a6573);
    color: #fff;
    border-color: #4a5560;
}

/* ImpresionBackstagePopup */
.bs-btn {
    display: flex;
    align-items: center;
    gap: 8px;
    background: transparent;
    border: 0;
    color: #3a3a3a;
    padding: 10px 14px;
    text-align: left;
    cursor: pointer;
    font-size: 0.86rem;
    border-left: 3px solid transparent;
}
.bs-btn:hover { background: rgba(0, 0, 0, 0.06); }
.bs-btn:disabled { opacity: 0.45; cursor: not-allowed; }
.bs-btn-active {
    background: rgba(0, 0, 0, 0.08);
    border-left-color: var(--orfeo-form-shell-header-to, #454b55);
}
.bs-btn i { font-size: 1.05rem; color: var(--orfeo-form-icon-accent, #5a6573); }
.bs-card {
    background: #fff;
    border: 1px solid #d4d8de;
    border-radius: 4px;
    display: flex;
    flex-direction: column;
    min-height: 0;
}
.bs-card-h {
    background: #eef0f3;
    padding: 6px 10px;
    font-size: 0.82rem;
    font-weight: 600;
    color: #3a4252;
    border-bottom: 1px solid #d4d8de;
    display: flex;
    align-items: center;
    gap: 6px;
}
.bs-card-h i { color: var(--orfeo-form-icon-accent, #5a6573); }
.bs-card-b {
    padding: 10px;
    font-size: 0.82rem;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.bs-radio {
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: 0.82rem;
    cursor: pointer;
}
.bs-row { display: flex; align-items: center; gap: 6px; }
.bs-row label.bs-lbl { width: 110px; color: #3a4252; font-size: 0.78rem; }
.bs-row input.bs-in {
    flex: 1;
    padding: 2px 5px;
    border: 1px solid #c5c8d0;
    border-radius: 3px;
    font-size: 0.82rem;
}

/* CuentasAnualesDocumentoGeneracionPopup — Form_ProcesoCuentasAnualesMemoria */
.popup-host-window:has(.ca-docgen-shell) {
    width: auto;
    max-width: min(640px, 96vw);
    background: transparent;
    border: 0;
    box-shadow: none;
}
.ca-docgen-shell {
    width: min(580px, 94vw);
    background: #fff;
    border: 1px solid #a0a4ad;
    font-family: "Segoe UI", Tahoma, Arial, sans-serif;
    font-size: 0.84rem;
    color: #222;
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.2);
}
.ca-docgen-title-bar {
    text-align: center;
    font-weight: 600;
    padding: 8px 12px;
    background: linear-gradient(180deg, #f0f2f5, #e4e7ec);
    border-bottom: 1px solid #c5c8d0;
}
.ca-docgen-body {
    padding: 12px 16px 8px;
}
.ca-docgen-intro {
    margin: 0 0 10px;
    line-height: 1.45;
    white-space: pre-line;
    color: #333;
    font-size: 0.82rem;
}
.ca-docgen-seccion {
    margin: 0 0 10px;
    font-weight: 600;
    font-size: 0.82rem;
}
.ca-docgen-fila {
    display: grid;
    grid-template-columns: 110px 1fr;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}
.ca-docgen-fila-fichero {
    grid-template-columns: 110px 1fr auto;
}
.ca-docgen-lbl {
    text-align: right;
    color: #333;
    font-size: 0.82rem;
}
.ca-docgen-inp {
    width: 100%;
    padding: 3px 6px;
    border: 1px solid #a8acb4;
    font-size: 0.82rem;
    box-sizing: border-box;
}
.ca-docgen-inp-ruta {
    font-family: Consolas, "Courier New", monospace;
    font-size: 0.78rem;
}
.ca-docgen-btn-examinar {
    padding: 3px 10px;
    border: 1px solid #a8acb4;
    background: #f5f5f5;
    cursor: pointer;
    font-size: 0.8rem;
    white-space: nowrap;
}
.ca-docgen-btn-examinar:hover { background: #e8e8e8; }
.ca-docgen-progress {
    width: 100%;
    margin-top: 8px;
}
.ca-docgen-estado {
    margin: 4px 0 0;
    font-size: 0.78rem;
    color: #555;
}
.ca-docgen-foot {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    padding: 10px 14px;
    border-top: 1px solid #d0d3da;
    background: #f5f5f5;
}
.ca-docgen-estado-pie {
    flex: 1;
    font-size: 0.78rem;
    color: #555;
}
.ca-docgen-btn {
    min-width: 88px;
    padding: 5px 14px;
    border: 1px solid #a8acb4;
    background: #fff;
    cursor: pointer;
    font-size: 0.82rem;
}
.ca-docgen-btn-primary {
    background: var(--orfeo-form-primary-btn, #5a6573);
    color: #fff;
    border-color: #4a5560;
}
.ca-docgen-btn:disabled,
.ca-docgen-btn-primary:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}
.ca-docgen-inp-num { max-width: 90px; }
.ca-docgen-fila-chk { grid-template-columns: 1fr; }
.ca-docgen-fila-chk .ca-docgen-chk {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 0.82rem;
    color: #333;
    margin: 4px 0 0 110px;
}

/* Ficheros auxiliares CA (formulación, saldos N-1) */
.popup-host-window:has(.ca-aux-fichero-shell) {
    width: auto;
    max-width: min(960px, 98vw);
    background: transparent;
    border: 0;
    box-shadow: none;
}
.ca-aux-fichero-shell {
    width: min(920px, 96vw);
    height: min(640px, 92vh);
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #a0a4ad;
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.2);
    font-family: "Segoe UI", Tahoma, Arial, sans-serif;
    font-size: 0.84rem;
}
.ca-aux-fichero-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from), var(--orfeo-form-shell-header-to));
    color: #fff;
    font-weight: 600;
}
.ca-aux-fichero-x {
    background: transparent;
    border: 0;
    color: #fff;
    font-size: 1.1rem;
    cursor: pointer;
    padding: 2px 8px;
}
.ca-aux-fichero-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    padding: 8px 10px;
    background: #f0f2f5;
    border-bottom: 1px solid #d0d3da;
}
.ca-aux-tb-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    border: 1px solid #b8bcc4;
    background: #fff;
    border-radius: 3px;
    font-size: 0.8rem;
    cursor: pointer;
}
.ca-aux-tb-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.ca-aux-tb-btn:hover:not(:disabled) { background: var(--orfeo-ochre-a10); }
.ca-aux-tb-primary { background: var(--orfeo-form-primary-btn, #5a6573); color: #fff; border-color: #4a5560; }
.ca-aux-tb-sep { width: 1px; height: 22px; background: #ccc; margin: 0 4px; }
.ca-aux-ficha {
    padding: 10px 14px;
    border-bottom: 1px solid #e0e3e8;
    background: #fafbfc;
}
.ca-aux-fichero-grid {
    flex: 1;
    min-height: 0;
    overflow: auto;
    padding: 8px;
}
.ca-aux-dx-grid { font-size: 0.82rem; }

/* Elementos de formulación — fichero escritorio */
.ca-frm-fichero-shell { width: min(980px, 98vw); height: min(720px, 94vh); }
.ca-frm-fichero-shell .ca-aux-fichero-grid {
    padding: 12px 22px 18px 22px;
}
.ca-frm-fichero-shell .ca-frm-buscar {
    padding: 6px 22px;
}
.ca-frm-fichero-shell .ca-docgen-foot {
    padding: 10px 22px;
}
.ca-frm-fichero-shell .ca-frm-ribbon {
    padding: 4px 22px;
}
.ca-frm-fichero-shell .ca-frm-grid-title {
    margin-left: 2px;
    margin-right: 2px;
    padding-left: 6px;
    padding-right: 6px;
}
.ca-frm-dx-grid .dxbl-grid-header-row th,
.ca-frm-dx-grid .dxbl-grid-data-row td {
    padding-left: 10px !important;
    padding-right: 10px !important;
}
.ca-frm-dx-grid .dxbl-grid-header-row th:first-child,
.ca-frm-dx-grid .dxbl-grid-data-row td:first-child {
    padding-left: 16px !important;
}
.ca-frm-dx-grid .dxbl-grid-header-row th:last-child,
.ca-frm-dx-grid .dxbl-grid-data-row td:last-child {
    padding-right: 16px !important;
}
.ca-frm-fichero-shell .ca-frm-empty {
    margin-left: 6px;
    margin-right: 6px;
}
.ca-frm-fichero-shell .ca-frm-grid-ctx-wrap {
    margin-right: 2px;
}
.ca-frm-fichero-shell .ca-frm-gene-config {
    padding: 12px 22px 16px;
}
.ca-frm-grid-ctx-wrap {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}
.ca-frm-grid-ctx-wrap > div:first-child {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}
.ca-frm-grid-print-host {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
}
.ca-frm-grid-print-host .ca-frm-dx-grid,
.ca-frm-grid-print-host .dxbl-grid {
    flex: 1;
    min-height: 280px;
}
.ca-frm-ribbon {
    display: flex;
    background: var(--orfeo-form-surface, #f3f3f3);
    border-bottom: 1px solid var(--orfeo-form-border-strong, #c5c8d0);
    padding: 4px 6px;
    align-items: stretch;
}
.ca-frm-ribbon-grp { display: flex; flex-direction: column; padding: 0 8px; }
.ca-frm-ribbon-btns { display: flex; gap: 2px; align-items: flex-end; }
.ca-frm-ribbon-lbl {
    text-align: center;
    font-size: 0.68rem;
    color: var(--orfeo-mid, #888);
    border-top: 1px solid var(--orfeo-form-border, #ccc);
    margin-top: 3px;
    padding-top: 2px;
}
.ca-frm-ribbon-sep { width: 1px; background: #ccc; margin: 2px 4px; align-self: stretch; }
.ca-frm-rb {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    padding: 4px 8px;
    min-width: 58px;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 3px;
    cursor: pointer;
    font-size: 0.68rem;
    color: #333;
}
.ca-frm-rb:hover:not(:disabled) { background: var(--orfeo-ochre-a12); border-color: var(--orfeo-ochre-border); }
.ca-frm-rb:disabled { opacity: 0.45; cursor: not-allowed; }
.ca-frm-gene-config { padding: 12px 16px; border-bottom: 1px solid #e0e3e8; }
.ca-frm-gene-hint { font-size: 0.78rem; color: #666; margin: 8px 0 0; }
.ca-frm-buscar {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    padding: 6px 12px;
    border-bottom: 1px solid #e8e8e8;
    background: #fafafa;
}
.ca-frm-buscar-lbl { font-size: 0.78rem; color: #555; }
.ca-frm-buscar-inp {
    width: min(280px, 50vw);
    padding: 4px 28px 4px 8px;
    border: 1px solid #a8acb4;
    font-size: 0.82rem;
}
.ca-frm-buscar .ph-magnifying-glass { color: #888; margin-left: -24px; pointer-events: none; }
.ca-frm-grid-title {
    margin: 0 0 8px;
    font-size: 0.95rem;
    font-weight: 600;
    color: #1f3c6e;
}
.ca-frm-dx-grid .dxbs-grid-header-content,
.ca-frm-dx-grid .dxbl-grid-header-content { font-weight: 700 !important; text-transform: uppercase; font-size: 0.72rem; }
.ca-frm-ficha-shell { width: min(520px, 94vw); }
.ca-frm-ficha-body { max-height: 60vh; overflow: auto; }
.ca-frm-hint { font-size: 0.78rem; color: #666; margin: 8px 0; }
.ca-frm-lineas { display: flex; flex-direction: column; gap: 6px; }
.ca-frm-linea-fila { display: grid; grid-template-columns: 1fr 1fr auto; gap: 6px; }
.ca-docgen-fila-formula { grid-template-columns: 110px 1fr; }
.ca-san-sin-maestro { color: #b45309; font-style: italic; }
.ca-frm-empty {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    min-height: min(280px, 42vh);
    margin: 16px 4px 28px;
    padding: 36px 32px 40px;
    background: linear-gradient(180deg, #fafbfc 0%, #f4f6f9 100%);
    border: 1px dashed #c8ced8;
    border-radius: 8px;
    box-sizing: border-box;
}
.ca-frm-empty--cargando {
    min-height: 120px;
    padding: 28px 32px;
    align-items: center;
    text-align: center;
}
.ca-frm-empty-icon {
    font-size: 2.25rem;
    color: #94a3b8;
    margin-bottom: 14px;
    line-height: 1;
}
.ca-frm-empty-msg {
    margin: 0;
    max-width: 36rem;
    font-size: 0.9rem;
    line-height: 1.55;
    color: #4b5563;
}
.ca-frm-empty-accion {
    margin-top: 16px;
    padding: 0;
    border: 0;
    background: transparent;
    color: #1f5fbf;
    font-size: 0.82rem;
    text-decoration: underline;
    cursor: pointer;
}
.ca-frm-empty-accion:hover { color: #164a96; }

/* Modo pantalla completa Orfeo (orfeo-fs-lock + Fullscreen API). Escape no lo desactiva; F11 alterna. */
html.orfeo-fs-lock {
    overflow: hidden !important;
    height: 100% !important;
    width: 100% !important;
    position: fixed !important;
    inset: 0 !important;
    margin: 0 !important;
}
html.orfeo-fs-lock body {
    margin: 0 !important;
    padding: 0 !important;
    position: fixed !important;
    inset: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    height: 100dvh !important;
    max-width: 100vw !important;
    max-height: 100dvh !important;
    overflow: hidden !important;
    box-sizing: border-box !important;
}

/* === Modales central: alta empresa, licencias (gris Orfeo) === */
.cemp-shell {
    background: #fff;
    border: 1px solid #c5c8d0;
    border-radius: 10px;
    width: min(1080px, 96vw);
    max-height: 92vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 12px 40px rgba(15, 23, 42, 0.22);
    overflow: hidden;
}
.cemp-header {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%);
    color: #fff;
}
.cemp-header-icon {
    width: 42px;
    height: 42px;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.15);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
}
.cemp-header-text { display: flex; flex-direction: column; line-height: 1.2; }
.cemp-header-text strong { font-size: 1rem; }
.cemp-header-text span { font-size: 0.78rem; opacity: 0.9; }
.cemp-close {
    margin-left: auto;
    background: transparent;
    border: 0;
    color: #fff;
    font-size: 1.15rem;
    cursor: pointer;
    padding: 4px 8px;
    border-radius: 4px;
}
.cemp-close:hover:not(:disabled) { background: rgba(255, 255, 255, 0.2); }
.cemp-body {
    flex: 1;
    overflow: auto;
    padding: 16px 18px 12px;
    background: linear-gradient(180deg, #f8f9fc 0%, #fff 120px);
}
.cemp-intro {
    margin: 0 0 14px;
    font-size: 0.84rem;
    color: #5c6070;
    line-height: 1.45;
}
.cemp-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}
@media (max-width: 760px) {
    .cemp-grid { grid-template-columns: 1fr; }
}
.cemp-card {
    background: #fff;
    border: 1px solid #e2e4ec;
    border-radius: 8px;
    padding: 12px 14px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.cemp-card--wide { grid-column: 1 / -1; }
.cemp-card-title {
    margin: 0 0 10px;
    font-size: 0.82rem;
    font-weight: 600;
    color: #3f4250;
    display: flex;
    align-items: center;
    gap: 6px;
}
.cemp-card-title i { color: var(--orfeo-form-icon-accent); font-size: 1.05rem; }
.cemp-fields {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 10px 14px;
    align-items: start;
}
.cemp-fields--stack { grid-template-columns: 1fr; }
.cemp-field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.cemp-field--grow { grid-column: span 2; }
@media (max-width: 760px) {
    .cemp-field--grow { grid-column: span 1; }
}
.cemp-field label {
    font-size: 0.78rem;
    font-weight: 600;
    color: #5c6070;
}
.cemp-field-row { display: flex; gap: 10px; flex-wrap: wrap; }
.cemp-field--narrow { max-width: 100px; }
.cemp-field--inline {
    flex-direction: row;
    align-items: center;
    gap: 10px;
    margin-top: 4px;
}
.cemp-input-codigo { width: 72px !important; font-size: 1.05rem !important; letter-spacing: 0.08em; }
.cemp-input-num { width: 100px !important; }
.cemp-codigo-wrap { display: flex; align-items: center; gap: 8px; }
.cemp-codigo-state { font-size: 1.25rem; line-height: 1; }
.cemp-codigo-state--ok { color: #059669; }
.cemp-codigo-state--err { color: #dc2626; }
.cemp-codigo-state--wait { color: var(--orfeo-form-icon-accent); animation: cemp-spin 0.9s linear infinite; }
.cemp-hint--wait {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: #5c6070;
    font-weight: 500;
}
.cemp-hint--wait i { animation: cemp-spin 0.9s linear infinite; }
.cemp-card--loading { position: relative; }
.cemp-wait-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 10px;
    padding: 8px 10px;
    border-radius: 6px;
    background: linear-gradient(90deg, #eef0f3 0%, #f7f8fa 50%, #eef0f3 100%);
    background-size: 200% 100%;
    animation: cemp-wait-shimmer 1.2s ease-in-out infinite;
    color: #5c6070;
    font-size: 0.82rem;
    font-weight: 500;
}
.cemp-wait-bar i { font-size: 1.1rem; animation: cemp-spin 0.9s linear infinite; flex-shrink: 0; }
.cemp-fields--dimmed { opacity: 0.55; pointer-events: none; }
@keyframes cemp-spin { to { transform: rotate(360deg); } }
@keyframes cemp-wait-shimmer {
    0% { background-position: 100% 0; }
    100% { background-position: -100% 0; }
}
.cemp-hint { font-size: 0.75rem; color: #6b7280; }
.cemp-hint--ok { color: #047857; }
.cemp-hint--err { color: #b91c1c; }
.cemp-chip-lic {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    background: #ecfdf5;
    color: #047857;
    font-size: 0.82rem;
}
.cemp-checks { display: flex; flex-direction: column; gap: 8px; font-size: 0.86rem; }
.cemp-check {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    cursor: pointer;
    color: #374151;
}
.cemp-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 7px;
    border-radius: 4px;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    background: #eef0f3;
    color: #5c6070;
}
.cemp-alert {
    display: flex;
    gap: 10px;
    align-items: flex-start;
    padding: 10px 12px;
    border-radius: 8px;
    font-size: 0.84rem;
    margin-bottom: 12px;
}
.cemp-alert--ok {
    background: #ecfdf5;
    border: 1px solid #a7f3d0;
    color: #065f46;
}
.cemp-alert--ok i { font-size: 1.3rem; flex-shrink: 0; }
.cemp-alert--error {
    background: #fef2f2;
    border: 1px solid #fecaca;
    color: #991b1b;
}
.cemp-creds { margin-top: 6px; font-size: 0.78rem; opacity: 0.95; }
.cemp-footer {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: flex-end;
    align-items: center;
    padding: 14px 20px;
    border-top: 1px solid var(--orfeo-form-border, #e8e8ec);
    background: var(--orfeo-form-surface, #f7f7fa);
}

.orfeo-aviso-seguridad {
    border-radius: 0;
    border-left: none;
    border-right: none;
}

/* ═══════════════════════════════════════════════════════════════
   NORMALIZACIÓN GLOBAL DE DXGRID — aplica a TODAS las grillas
   Referencia: .apuntes-dxgrid del EditorAsiento
   ═══════════════════════════════════════════════════════════════ */

/* Fuente y tamaño base: sobreescribir variables CSS de DevExpress directamente.
   DevExpress usa var(--dxbl-grid-font-size) en todos sus selectores internos,
   por lo que es más efectivo cambiar la variable que luchar con !important. */
.dxbl-grid {
    --dxbl-grid-font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif;
    --dxbl-grid-font-size: var(--orfeo-grid-data-fs);
    --dxbl-grid-header-font-weight: 700 !important;
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    font-size: var(--orfeo-grid-data-fs) !important;
}

/* Cabecera de columnas: estilo «Saldos por columnas» (--orfeo-grid-head-fs, mayúsculas, negrita) */
.dxbl-grid-header-row th,
.dxbl-grid .dxbl-grid-header-row th {
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    font-size: var(--orfeo-grid-head-fs) !important;
    font-weight: var(--orfeo-grid-head-fw) !important;
    letter-spacing: var(--orfeo-grid-head-ls) !important;
    text-transform: uppercase !important;
    line-height: 1.2 !important;
    color: var(--orfeo-grid-head-fg) !important;
    background: var(--orfeo-grid-head-bg) !important;
    border-bottom: 2px solid var(--orfeo-grid-head-border) !important;
    padding: var(--orfeo-grid-head-pad) !important;
    white-space: nowrap;
    -webkit-font-smoothing: auto;
    font-synthesis: weight;
}
/* Elementos internos de DevExpress: heredan del th (padding solo en th) */
.dxbl-grid .dxbl-grid-header-row th .dxbl-grid-header-content,
.dxbl-grid .dxbl-grid-header-row th *,
.dxbl-grid .dxbl-grid-header-row th a,
.dxbl-grid .dxbl-grid-header-row th span,
.dxbl-grid .dxbl-grid-header-row th div {
    font-family: inherit !important;
    font-size: inherit !important;
    font-weight: inherit !important;
    line-height: inherit !important;
    letter-spacing: inherit !important;
    text-transform: inherit !important;
    color: inherit !important;
    padding: 0 !important;
    margin: 0 !important;
    -webkit-font-smoothing: auto;
    font-synthesis: weight;
}
/* Iconos de orden/menú de DevExpress en la cabecera ocre → blancos */
.dxbl-grid .dxbl-grid-header-row th .dxbl-grid-header-indicator,
.dxbl-grid .dxbl-grid-header-row th i,
.dxbl-grid .dxbl-grid-header-row th svg,
.dxbl-grid .dxbl-grid-header-row th [class*="dxbl-sort"],
.dxbl-grid .dxbl-grid-header-row th [class*="indicator"] {
    color: var(--orfeo-grid-head-fg) !important;
    fill: var(--orfeo-grid-head-fg) !important;
}

/* Filas de datos: padding compacto, alineación vertical centrada */
.dxbl-grid-data-row td {
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    font-size: var(--orfeo-grid-data-fs) !important;
    padding: 3px 8px !important;
    vertical-align: middle !important;
    border-bottom: 1px solid var(--orfeo-form-border) !important;
}

/* Hover de fila */
.dxbl-grid-data-row:hover td {
    background: var(--orfeo-accent-a08) !important;
}

/* Fila seleccionada / focused */
.dxbl-grid-data-row.dxbl-grid-row-focused td,
.dxbl-grid-data-row.dxbl-selected td {
    background: var(--orfeo-accent-a15) !important;
    color: var(--orfeo-dark) !important;
}

/* Fila de pie (totales/sumarios) */
.dxbl-grid-footer-row td {
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    font-size: 0.78rem !important;
    font-weight: 600 !important;
    color: var(--orfeo-dark) !important;
    background: var(--orfeo-form-surface) !important;
    border-top: 2px solid var(--orfeo-form-border-strong) !important;
    padding: 4px 8px !important;
}

/* Caja de búsqueda integrada en el grid */
.dxbl-grid .dxbl-search-box input {
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    font-size: 0.82rem !important;
}

/* Paginador */
.dxbl-grid .dxbl-pager {
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    font-size: 0.78rem !important;
    color: var(--orfeo-mid) !important;
    border-top: 1px solid var(--orfeo-form-border) !important;
    background: var(--orfeo-form-surface) !important;
}

/* Columnas numéricas/mono ya definidas por iva-mono se respetan;
   las demás heredan de la regla base */

/* ═══════════════════════════════════════════════════════════════
   NORMALIZACIÓN CABECERAS GRILLAS HTML — alineado con DevExpress
   ═══════════════════════════════════════════════════════════════ */
.orfeo-html-grid-wrap thead th,
.conc-tbl th,
.liq-tbl th,
.conc-table th,
.efp-table thead th,
.efp-table-pro thead th,
.cca-tbl thead th,
.lo-tbl th,
.lo-tbl--cli-pro th,
[class$="-tbl"]:not(.hm-w-tbl) thead th,
.ivaf-grid thead th,
.ivap-table thead th,
.apuntes-table thead th,
.lista-table thead th,
.vaux-tbl thead th,
.saldos-cols-tbl thead th,
.saldos-mens-tbl thead th,
.balance-page .balance-sum-tbl thead th,
.balance-tbl-desktop thead th,
.ocnf-table thead th,
table.iva-grid thead th,
.sii-tbl thead th,
.rec-perm-tbl thead th,
.efemi-preview-table thead th,
.inmo-tbl thead th,
.fichero-clipro-page table thead th,
.iva-tabla thead th,
.iva-tabla th[colspan],
.afact-table thead th,
.arem-table thead th,
.cfmt-table thead th,
.ffac-table thead th,
.egrf-top-table thead th,
.dot-meses thead th,
.lfa-tbl-wrap thead th,
.liq-editor-tbl thead th {
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    font-size: var(--orfeo-grid-head-fs) !important;
    font-weight: var(--orfeo-grid-head-fw) !important;
    letter-spacing: var(--orfeo-grid-head-ls) !important;
    text-transform: uppercase !important;
    line-height: 1.2 !important;
    color: var(--orfeo-grid-head-fg) !important;
    background: var(--orfeo-grid-head-bg) !important;
    border-bottom: 2px solid var(--orfeo-grid-head-border) !important;
    padding: var(--orfeo-grid-head-pad) !important;
    white-space: nowrap;
    vertical-align: middle;
}
/* Texto/iconos internos de las cabeceras HTML → blancos sobre ocre */
.orfeo-html-grid-wrap thead th *,
.efp-table-pro thead th *,
.lista-table thead th *,
.apuntes-table thead th *,
.ivap-table thead th *,
[class$="-tbl"]:not(.hm-w-tbl) thead th *,
.liq-tbl th * {
    font-size: inherit !important;
    font-weight: var(--orfeo-grid-head-fw) !important;
    color: var(--orfeo-grid-head-fg) !important;
    text-transform: inherit !important;
    letter-spacing: inherit !important;
}

/* Listados / informes: cabecera unificada ocre (mismo tamaño compacto) */
.orfeo-html-grid-wrap thead th,
.lo-tbl th,
[class$="-tbl"]:not(.conc-tbl):not(.liq-tbl):not(.vaux-tbl):not(.hm-w-tbl) thead th {
    background: var(--orfeo-grid-head-bg) !important;
    color: var(--orfeo-grid-head-fg) !important;
    border-bottom: 1px solid var(--orfeo-grid-head-border) !important;
}

/* ═══════════════════════════════════════════════════════════════
   RESPONSIVE — breakpoints globales para la shell y popups
   Target: portátiles 13-15" (≥1024px) y tablets (≥768px)
   ═══════════════════════════════════════════════════════════════ */

/* ── 1200px: comprimir info de usuario en la cabecera ── */
@media (max-width: 1200px) {
    .rb-user-line2 { display: none; }
    .rb-user-name { max-width: 160px; }
    .rb-user { max-width: 40%; }
}

/* ── 1024px: portátiles pequeños ── */
@media (max-width: 1024px) {
    /* Cabecera: ocultar nombre completo, mantener icones */
    .rb-user-name { max-width: 140px; }
    .rb-empresa-nombre { max-width: 130px; }
    .rb-manual-btn span, .rb-salir-btn span { display: none; }

    /* Botones de ribbon: solo icono sin texto en los grupos secundarios */
    .rb-btn-sm .rb-btn-label { display: none; }
    .rb-btn-sm { min-width: 28px; width: 28px; padding: 4px 0; }

    /* Popups: ocupar más del ancho disponible */
    .orfeo-popup-card, .orfeo-popup-card--form {
        max-width: 98vw !important;
        width: 98vw !important;
    }

    /* Tablas: scroll horizontal en lugar de desbordamiento */
    .conc-tbl-wrap, .liq-tbl-wrap { overflow-x: auto; }
}

/* ── 900px: ocultar el ribbon lateral de grupos, navegación simplificada ── */
@media (max-width: 900px) {
    /* Etiquetas de tab → sólo icono */
    .rb-tab-label { display: none; }
    .rb-tab { min-width: 34px; padding: 0 8px; }

    /* Ribbon: grupos colapsados horizontalmente con scroll */
    .rb-group { min-width: 60px; }
    .rb-group-title { font-size: 0.58rem; }

    /* Campos de formulario en emp-row y liq-editor-row: apilados */
    .emp-row { flex-wrap: wrap; gap: 4px; }
    .liq-editor-row { flex-wrap: wrap; gap: 4px; }
}

/* ── 768px: tablet landscape ── */
@media (max-width: 768px) {
    /* Cabecera compacta */
    .rb-header { height: 38px; padding: 0 0.5rem; }

    /* Ribbon: scroll horizontal, sin wrap */
    .ribbon-toolbar { overflow-x: auto; overflow-y: hidden; flex-wrap: nowrap; }

    /* Popups a pantalla casi completa */
    .orfeo-popup-card, .orfeo-popup-card--form {
        max-width: 100vw !important;
        width: 100vw !important;
        border-radius: 0 !important;
        max-height: 100vh !important;
        height: 100vh !important;
    }

    /* Login page */
    .login-card { margin: 1rem; min-width: 0; width: calc(100vw - 2rem); }
}

/* ── Utilidades responsive reutilizables ── */
@media (max-width: 1024px) {
    .hide-lt-1024 { display: none !important; }
}
@media (max-width: 768px) {
    .hide-lt-768 { display: none !important; }
    .show-lt-768 { display: block !important; }
}

/* ═══════════════════════════════════════════════════════════════
   CABECERAS GLOBALES — estilo «Saldos por columnas» (última regla, gana a todo)
   DevExpress: texto real en .dxbl-grid-header-content. HTML: thead th / .liq-tbl th.
   ═══════════════════════════════════════════════════════════════ */
.dxbl-grid,
.dxbl-grid.dxbl-grid {
    --dxbl-grid-header-font-weight: 700 !important;
}
.dxbl-grid .dxbl-grid-table > thead > tr.dxbl-grid-header-row > th:not(.dxbl-grid-header-indent-cell):not(.dxbl-grid-empty-header),
.dxbl-grid .dxbl-grid-header-row th,
.dxbl-grid thead th,
.dxbl-grid th[role="columnheader"],
.dxbs-grid .dxbl-grid-header-row th,
table:not(.hm-w-tbl):not(.hm-cal) thead th,
.orfeo-html-grid-wrap thead th,
[class$="-tbl"]:not(.hm-w-tbl) thead th,
[class*="-table"] thead th,
.conc-tbl th,
.liq-tbl th,
.lo-tbl th,
.lo-tbl--cli-pro th,
.vaux-tbl thead th,
.ivaf-grid th,
.ivap-table thead th,
.efp-table th,
.efp-table-pro thead th,
.lista-table thead th,
.apuntes-table thead th,
table.iva-grid thead th,
.balance-tbl-desktop thead th,
.balance-page .balance-sum-tbl thead th,
.saldos-cols-tbl thead th,
.saldos-mens-tbl thead th,
.efemi-preview-table thead th,
.orfeo-print-preview-content thead th,
.diario-grid .dxbl-grid-header-row th,
.cp-grid .dxbl-grid-header-row th,
.mcuen-grid .dxbl-grid-header-row th,
.fichero-clipro-page .fichero-clipro-grid .dxbl-grid-header-row th,
.fichero-maestro-grid .dxbl-grid-header-row th,
.efp-table thead th,
.efp-table-pro thead th,
.cca-tbl thead th,
.ocnf-table thead th,
.sii-tbl thead th,
.rec-perm-tbl thead th,
.inmo-tbl thead th,
.fichero-clipro-page table thead th,
.iva-tabla thead th,
.afact-table thead th,
.arem-table thead th,
.cfmt-table thead th,
.ffac-table thead th,
.lfa-tbl-wrap thead th,
.liq-editor-tbl thead th {
    font-family: 'Segoe UI', system-ui, -apple-system, Helvetica, sans-serif !important;
    font-size: var(--orfeo-grid-head-fs) !important;
    font-weight: var(--orfeo-grid-head-fw) !important;
    text-transform: uppercase !important;
    letter-spacing: var(--orfeo-grid-head-ls) !important;
    line-height: var(--orfeo-grid-head-lh) !important;
    padding: var(--orfeo-grid-head-pad) !important;
    height: auto !important;
    min-height: 0 !important;
    box-sizing: border-box !important;
    color: var(--orfeo-grid-head-fg) !important;
    background: var(--orfeo-grid-head-bg) !important;
    border-bottom: 2px solid var(--orfeo-grid-head-border) !important;
    -webkit-font-smoothing: auto;
    font-synthesis: weight;
}
.dxbl-grid .dxbl-grid-table > thead > tr.dxbl-grid-header-row > th:not(.dxbl-grid-header-indent-cell):not(.dxbl-grid-empty-header) {
    --dxbl-grid-text-cell-padding-x: 0 !important;
    --dxbl-grid-text-cell-padding-y: 0 !important;
    --dxbl-grid-line-height: var(--orfeo-grid-head-lh) !important;
    --dxbl-grid-header-spacing: 0.2rem !important;
}
.dxbl-grid .dxbl-grid-header-row th .dxbl-grid-header-content,
.dxbl-grid .dxbl-grid-header-row th .dxbl-grid-header-content *:not(i):not(svg):not(path):not([class*="ph-"]) {
    padding: 0 !important;
    margin: 0 !important;
    min-height: 0 !important;
    height: auto !important;
    font-size: inherit !important;
    font-weight: inherit !important;
    line-height: inherit !important;
    letter-spacing: inherit !important;
    text-transform: inherit !important;
}
/* Hijos de cabeceras HTML: sin padding extra (solo el th lleva padding) */
table:not(.hm-w-tbl):not(.hm-cal) thead th *:not(i):not(svg):not(path):not([class*="ph-"]),
.orfeo-html-grid-wrap thead th *:not(i):not(svg):not(path):not([class*="ph-"]),
[class$="-tbl"]:not(.hm-w-tbl) thead th *:not(i):not(svg):not(path):not([class*="ph-"]),
[class*="-table"] thead th *:not(i):not(svg):not(path):not([class*="ph-"]),
.liq-tbl th *:not(i):not(svg):not(path):not([class*="ph-"]) {
    font-family: inherit !important;
    font-size: inherit !important;
    font-weight: inherit !important;
    line-height: inherit !important;
    letter-spacing: inherit !important;
    text-transform: inherit !important;
    color: inherit !important;
    padding: 0 !important;
    margin: 0 !important;
    background: transparent !important;
    border: 0 !important;
}
/* Editor IVA denso: cabecera más pequeña a propósito */
.iva-grid-compact thead th {
    font-size: 0.66rem !important;
    padding: 4px 6px !important;
}

/* ═══════════════════════════════════════════════════════════════
   TAMAÑO DE DATOS DE GRILLAS — homogeneo en todas (DevExpress + HTML)
   Antes variaba: consulta 0.76rem, informes 0.78–0.82rem, estandar 0.83rem.
   Unificado a --orfeo-grid-data-fs. Excluye el calendario fiscal (texto mayor a
   proposito) y el editor compacto de IVA (no figura aqui, queda intacto).
   ═══════════════════════════════════════════════════════════════ */
.dxbl-grid .dxbl-grid-data-row td,
.cp-grid tbody > tr > td,
.apuntes-dxgrid tbody > tr > td,
.diario-grid tbody > tr > td,
.mcuen-grid tbody > tr > td,
.fichero-clipro-page .fichero-clipro-grid .dxbl-grid-data-row td,
.fichero-maestro-grid .dxbl-grid-data-row td,
[class$="-tbl"]:not(.calfiscal-tbl) tbody td,
.orfeo-html-grid-wrap tbody td,
.lista-table tbody td,
.apuntes-table tbody td,
.ivap-table tbody td,
.efp-table tbody td,
.efp-table-pro tbody td,
.ocnf-table tbody td,
table.iva-grid tbody td,
.iva-tabla tbody td,
.afact-table tbody td,
.arem-table tbody td,
.cfmt-table tbody td,
.ffac-table tbody td,
.efemi-preview-table tbody td {
    font-size: var(--orfeo-grid-data-fs) !important;
}

/* ═══════════════════════════════════════════════════════════════
   INTRODUCCIÓN DE ASIENTOS — cabeceras de grilla sin ocre
   Panel consultas (#editor-cp-panel) + grilla edición (.apuntes-grid-wrap)
   Debe ir al final: gana a la regla global ocre de .dxbl-grid-header-row th
   ═══════════════════════════════════════════════════════════════ */
#editor-cp-panel .dxbl-grid.cp-grid .dxbl-grid-table > thead > tr.dxbl-grid-header-row > th,
#editor-cp-panel .dxbl-grid.cp-grid .dxbl-grid-header-row th,
.editor-panel-edicion .apuntes-grid-wrap .dxbl-grid-table > thead > tr.dxbl-grid-header-row > th,
.editor-panel-edicion .apuntes-grid-wrap .dxbl-grid-header-row th,
.editor-panel-edicion .apuntes-grid-wrap .apuntes-dxgrid .dxbl-grid-table > thead > tr.dxbl-grid-header-row > th,
.editor-panel-edicion .apuntes-grid-wrap .apuntes-dxgrid .dxbl-grid-header-row th {
    background: var(--orfeo-form-surface) !important;
    color: var(--orfeo-mid) !important;
    border-bottom: 1px solid var(--orfeo-form-border) !important;
    border-right: 1px solid var(--orfeo-border-muted) !important;
}
#editor-cp-panel .dxbl-grid.cp-grid .dxbl-grid-header-row th .dxbl-grid-header-indicator,
#editor-cp-panel .dxbl-grid.cp-grid .dxbl-grid-header-row th i,
#editor-cp-panel .dxbl-grid.cp-grid .dxbl-grid-header-row th svg,
#editor-cp-panel .dxbl-grid.cp-grid .dxbl-grid-header-row th [class*="dxbl-sort"],
.editor-panel-edicion .apuntes-grid-wrap .dxbl-grid-header-row th .dxbl-grid-header-indicator,
.editor-panel-edicion .apuntes-grid-wrap .dxbl-grid-header-row th i,
.editor-panel-edicion .apuntes-grid-wrap .dxbl-grid-header-row th svg,
.editor-panel-edicion .apuntes-grid-wrap .dxbl-grid-header-row th [class*="dxbl-sort"] {
    color: var(--orfeo-mid) !important;
    fill: var(--orfeo-mid) !important;
}

/* ═══════════════════════════════════════════════════════════════
   ESCRITORIO — widgets sin cabecera ocre (contactos, tareas, calendario)
   ═══════════════════════════════════════════════════════════════ */
.hm-page .hm-widget table.hm-w-tbl > thead > tr > th,
.hm-page .hm-widgets table.hm-w-tbl > thead > tr > th,
.hm-page .hm-w-tbl thead th,
.hm-page .hm-w-tbl th,
.hm-page table.hm-w-tbl thead th,
.hm-page .hm-cal thead th,
.hm-page .hm-cal th,
.hm-page table.hm-cal thead th {
    background: var(--orfeo-form-surface) !important;
    color: var(--orfeo-mid) !important;
    border-bottom: 1px solid var(--orfeo-form-border) !important;
    border-right: 0 !important;
}
.hm-page .hm-cal thead th,
.hm-page .hm-cal th {
    text-align: center !important;
    font-weight: 600 !important;
    padding: 4px 0 !important;
}
.hm-page .hm-w-tbl thead th,
.hm-page .hm-w-tbl th {
    text-align: left !important;
    font-size: 0.7rem !important;
    letter-spacing: 0.04em !important;
    padding: 4px 8px !important;
}
.hm-page .hm-w-tbl thead th *,
.hm-page .hm-cal thead th * {
    color: inherit !important;
    background: transparent !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
}

/* =================================================================
   UNIFICACIÓN VISUAL DE POPUPS  (Orfeo · una sola identidad)
   Converge TODAS las familias de shell (*-shell) al marco, cabecera
   y botón de cierre canónicos de .omodal-shell, sin tocar el layout
   interno (anchos, navegación lateral, cuerpos, cabeceras ricas).
   Especificidad .popup-host-window > [class*="-shell"]  (0,2,0)
   gana a las reglas .xxx-shell (0,1,0) de cada familia → sin !important.
   ================================================================= */

/* 1) Marco exterior idéntico en todos los popups */
.popup-host-window > [class*="-shell"] {
    border: 1px solid #c5c8d0;
    border-radius: 6px;
    box-shadow: 0 8px 30px rgba(0, 0, 0, .25);
    background: #fff;
}

/* 2) Cabecera: mismo degradado oro y color de texto en todas las familias.
      Combinador hijo directo (>) → solo afecta a la cabecera de primer nivel,
      nunca a sub-elementos (p.ej. .cemp-header-icon / .cemp-header-text). */
.popup-host-window > [class*="-shell"] > [class*="-header"] {
    background: linear-gradient(180deg, var(--orfeo-form-shell-header-from) 0%, var(--orfeo-form-shell-header-to) 100%);
    color: #fff;
}

/* 3) Botón de cierre (✕) idéntico en cabecera */
.popup-host-window > [class*="-shell"] > [class*="-header"] [class*="-close"] {
    margin-left: auto;
    background: transparent;
    border: none;
    color: #fff;
    font-size: 16px;
    cursor: pointer;
    width: 32px;
    height: 32px;
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    padding: 0;
}
.popup-host-window > [class*="-shell"] > [class*="-header"] [class*="-close"]:hover {
    background: rgba(255, 255, 255, .2);
}

/* 4) Pie de acciones: misma franja (fondo, borde superior y padding) en todas
      las familias. Solo cosmético del contenedor; no se fuerza la disposición
      de los botones para no alterar layouts existentes. */
.popup-host-window > [class*="-shell"] > [class*="-footer"] {
    background: var(--orfeo-form-surface, #f7f7fa);
    border-top: 1px solid var(--orfeo-form-border, #e8e8ec);
    padding: 14px 20px;
}
