/*==============================================================================
  ROSSA UI — Centralized design system (override-first)
  Loaded LAST in every entry point so it overrides legacy CSS.

  SECTIONS
    1. Tokens (:root)
    2. Base / typography
    3. Buttons (.admin_boton + modifiers) + legacy specificity busters
    4. Forms / inputs / selects
    5. Tags / pills
    6. Tables
    7. Cards
    8. Payment / status utilities
    9. Section headings
   10-43. Global chrome + per-screen sections (banners inline, numbered)
   44. Avisos (campanita del toolbar + panel + página module=avisos)
   45. Políticas de cancelación (listado / edición / reglas)
   46. Planes / tarifas (fees, price_plans, restriction_plans, boards, fee_edit)
   50. Uso de la interfaz (module=uso_botones) — contadores de pulsaciones
  61. Config módulo facturación — pestaña AEAT NIF (VNifV2)
  62. Panel SAT Estado Verifactu (fcts02:verifactuVisor)
  65. Tarjeta de datos estándar (.rossa-datacard) + Comunicaciones · Reglas de envío
  66. Comunicaciones — cromo de la página (cabecera, pestañas, filtro, alta)
  67. Menú lateral: raíl de iconos que se despliega al pasar el ratón
  68. Barra superior: solo «Está gestionando» + salir (lo demás baja al raíl)
  69. Cromo v5.5: sin barra superior, menú de usuario y pie estándar siempre
  70. Cromo único de ventana modal (lydia_popup · Comunicaciones · SweetAlert · jQuery UI)
  71. Campos de filtro y fechas (.rossa-field + todo input de fecha del admin)
  72. Selector de rango de fechas (.rossa-daterange + js/rossa/rango_fechas.js)
  73. El calendario de jQuery UI (#ui-datepicker-div): mismo aspecto en todo el PMS
  74. Fechas: el nodo que guarda el ISO no se ve (data-rossa-oculto)
  75. Paginador único (.rossa-pager) — un solo aspecto para los tres motores
  76. Pastillas de código PIN (.unpin / .unpermiso) — contraste y caja
  77. Módulo facturación: los dos listados con el lenguaje del PMS
  78. Módulo facturación: fichas, asistente, modales, dashboard y configuración
  79. Módulo facturación: colocación (pie de acciones, fichas fusionadas, filtros)
  80. Pestañas de enlace (.rossa-pestanas): las de Ver reservas, pero navegan
  81. Control de accesos (module=llaves_api)
  82. Importacion de reservas de RoomDoo (module=roomdoo_reservas)
  83. Salto de mes/año en los calendarios (.rossa-dpsalto + js/rossa/salto_calendario.js)
  84. Inicio por widgets (módulo inic01: .rossa-inicio / .rossa-widget / .rossa-contador / .rossa-stats / .rossa-evolucion)
  85. Ver reserva (module=ver_reserva): ficha fija + pestañas + raíl; su Timeline (85.10) viste también module=timeline (.rossa-rtl) y el modo gestor de showRTL (tr.gestor)
  86. Aviso flotante (.rossa-toast + js/rossa/toast.js): el resultado de una acción, un momento
  87. Pantalla de error (.rossa-error-screen + js/rossa/error_screen.js): centrada, actúa sola
  88. Popups: con un <dialog> modal abierto la página de debajo no rueda (js/rossa/dialog_lock.js)
  89. Páginas dentro del drawer (html.rossa-drawer-embed): el título siempre visible; sin el #loading de lydia; las maquetadas a sangre (.rossa-full-bleed), sin rellenos; en móvil, 16px a los cuatro lados
  90. Selector de establecimientos (#rossa_estab_form.rossa-estab-picker): arriba a la derecha, varios a la vez
  91. Ficha de puerta (module=edit_door): selector múltiple de establecimientos con buscador
  92. Enviar factura por email (fcts02:sendBillMail)
  93. Envío manual de email, SMS y WhatsApp (.rossa-manual-send): rótulos encima de cada campo, como el modal de plantillas
    . Exportar de las tablas: modal que abre el botón «Exportar» de la barra (js/rossa/exportar.js); la impresión vive en css/rossa/print.css
==============================================================================*/

/*------------------------------------------------------------------ 1. TOKENS */
:root {
  /* Brand */
  --rossa-teal:        #005e66;  /* primary accent: headings, links, primary btn */
  --rossa-teal-600:    #0c5b63;
  --rossa-red:         #e7004c;  /* brand red: filter pills, danger emphasis */

  --rossa-cyan:        #17799b;  /* links, table row left-accent */
  --rossa-ink:         #16292d;  /* headings & body text (near-black petrol) */
  --rossa-coral:       #ea5c36;  /* warning / payment-due */
  --rossa-salmon:      #fcece8;  /* destructive / unpaid background */
  --rossa-surface:     #eceff1;  /* default buttons, table rows */
  --rossa-surface-2:   #f0f4f4;  /* page-ish light background */
  --rossa-border:      #d8dede;
  --rossa-muted:       #677074;  /* secondary text */
  --rossa-white:       #ffffff;
  --rossa-green:       #19ac8a;  /* positive amount ("total pagado") */

  /* Figma RossaRedisign.fig — valores exactos, conviven con los muestreados de arriba */
  --rossa-petrol:      #205c68;  /* inputs, labels, secondary/dark buttons */
  --rossa-petrol-dark: #03424e;  /* petrol button hover */
  --rossa-navy:        #00303c;  /* H1 / tab text */
  --rossa-zebra:       rgba(32, 92, 104, .05);  /* even-row tint (Figma zebra) */
  --rossa-deep:        #003846;  /* section headings, footer text */
  --rossa-green-fig:   #00a886;  /* ENTRADAS/SALIDAS heading + underline, small primary buttons */
  --rossa-green-dark:  #04604b;  /* green button hover (Figma "Default 12 Hover") */
  --rossa-red-dark:    #c1003f;  /* brand-red button hover */
  --rossa-cyan-fig:    #00a8d2;  /* client-name links (Figma cards/tables) */
  --rossa-strip:       #eff2f3;  /* card header strip / message background */
  --rossa-strip-soft:  #fafafa;  /* pie del admin (#rossa-actionbar) y barra de acciones de .rossa-datacard */
  --rossa-stroke:      #5c7c84;  /* Figma "DB/DB 700": trazo de tarjeta + etiquetas de campo */
  --rossa-per:         #b8990b;  /* Figma "Pagos/PER": condicion pendiente */
  --rossa-pag:         #76bc21;  /* Figma "Pagos/PAG": condición cumplida (pagada, check-in hecho) */
  --rossa-no-pagado:   #eb5d37;  /* Figma "Pagos/No Pagado": el naranja de las insignias NP */
  --rossa-pendiente:   #fab511;  /* = .rossa-card-tag-pendingpay / -faltacobro (§14858) */
  --rossa-chip:        #ffcc00;  /* Figma "Colors/Yellow": el chip de la tarjeta de crédito */
  --rossa-db-500:      #e1e7e8;  /* Figma "DB/DB 500": filete de las tarjetas de Comunicaciones */
  --rossa-chat-head:   #f7f7f7;  /* Figma: cabecera del chat de Comunicaciones */
  --rossa-db-400:      #006c87;  /* Figma "DB/DB 400": condición informativa (check-in pendiente) */
  --rossa-hairline:    #e1e7e8;  /* Figma: separadores de columna y de banda en Ver reserva */
  --rossa-pink:        #ff4582;  /* Figma: tinte al 5% de la tarjeta de check-out */
  --rossa-wine:        #9a0033;  /* Figma: acción de emergencia (= leyenda .nocupada) */
  --rossa-red-800:     #740026;  /* Figma "Rossa/Rossa 800": rótulo INACTIVA sobre tarjeta apagada */
  --rossa-red-700:     #9a0033;  /* Figma "Rossa/Rossa 700": título Check-Outs del inicio */
  --rossa-db-500:      #e1e7e8;  /* Figma "DB/DB 500": trazo de las tarjetas del inicio V5.6 */
  /* Columna de texto del raíl desplegado: la fija la navegación (§68.10 b), no se elige */
  --rossa-rail-text:   63px;
  --rossa-pager-ink:   #97b8c0;  /* números y flechas */
  --rossa-pager-tint:  #e8f5f8;  /* pastilla de la página actual / hover */
  --rossa-pager-off:   #cfe0e4;  /* flecha deshabilitada */
  --rossa-note-booking:  #fef7f5;  /* notas de reserva / huésped */
  --rossa-note-cleaning: #f2fafc;  /* notas de limpieza */
  --rossa-note-payment:  #fbfaf2;  /* notas de pago */
  --rossa-hairline:      rgba(32, 92, 104, .45);  /* 0.5px petrol strokes in Figma */
  --rossa-hairline-soft: rgba(32, 92, 104, .18);  /* row separators */
  --rossa-tint:          rgba(32, 92, 104, .04);  /* airy petrol wash — replaces flat #efefef blocks */
  --rossa-tint-red:      rgba(231, 0, 76, .02);   /* Figma: banda de RESTANTE A PAGAR */

  /* Shape & elevation */
  --rossa-radius:      8px;
  --rossa-radius-pill: 999px;
  --rossa-shadow:      0 1px 3px rgba(20, 40, 60, .12), 0 1px 2px rgba(20, 40, 60, .06);
  --rossa-font:        'Work Sans', system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
}

/*-------------------------------------------------------- 2. BASE / TYPOGRAPHY */
/* Scoped to the admin shell: bare elements must stay untouched on guest pages. */

/*------------------------------------------------------------------ 3. BUTTONS */
.admin_boton {
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
  border: 1px solid var(--rossa-teal);
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 14px;
  line-height: 1.25;
  padding: 9px 16px;
  border-radius: var(--rossa-radius);
  cursor: pointer;
  display: inline-block;
  box-sizing: border-box;
  text-align: center;
  text-decoration: none !important;
  transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.admin_boton:hover {
  background-color: #00474d;
  border-color: #00474d;
}
.admin_boton:active { background-color: #003a40; }
.admin_boton:disabled,
.admin_boton[disabled] {
  color: #9aa3a3;
  background-color: #f2f4f5;
  border-color: var(--rossa-border);
  cursor: not-allowed;
}
/* Specificity buster: lydia `input.admin_boton, button.admin_boton {padding:5px 10px}` (0,1,1). */
input.admin_boton,
button.admin_boton {
  padding: 9px 16px;
  line-height: 1.25;
}

/* Botonera horizontal centrada (Volver a la izq. + Enviar a la dcha. en send_mail_module). */
#contenido_admin .rossa-btn-bar {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
/* lydia da margin-left/right:auto a .admin_boton; dentro de un flex anulan justify-content. */
#contenido_admin .rossa-btn-bar .admin_boton {
  margin-left: 0;
  margin-right: 0;
}

/* Primary (teal) — e.g. "Filtrar" */
.admin_boton--primary {
  background-color: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}
.admin_boton--primary:hover {
  background-color: #00474d;
  border-color: #00474d;
}
.admin_boton--primary.boton_rojo { background-color: var(--rossa-teal) !important; }
.admin_boton--primary.boton_rojo:hover { background-color: #00474d !important; }
/* Deshabilitado: gris apagado (vence al teal !important del buster de arriba). */
.admin_boton--primary.boton_rojo:disabled,
.admin_boton--primary.boton_rojo[disabled] {
  background-color: #f2f4f5 !important;
  color: #9aa3a3;
  border-color: var(--rossa-border);
  cursor: not-allowed;
}

/* Destructive — e.g. "Cancelar reserva" */
.admin_boton--danger {
  background-color: var(--rossa-salmon);
  border-color: #f6d6cd;
  color: var(--rossa-coral);
}
.admin_boton--danger:hover { background-color: #fbe0d8; }
/* boton_rojo (lydia, fondo naranja !important) gana a --danger; lo neutralizamos. */
.admin_boton--danger.boton_rojo {
  background-color: var(--rossa-salmon) !important;
  color: var(--rossa-coral) !important;
  border-color: var(--rossa-coral) !important;
}
.admin_boton--danger.boton_rojo:hover {
  background-color: #fbe0d8 !important;
  color: var(--rossa-coral) !important;
  border-color: var(--rossa-coral) !important;
}
#contenido_admin [id^="price_plan_"] .admin_boton,
#contenido_admin [id^="restriction_plan_"] .admin_boton {
  margin-left: 8px;
}
#contenido_admin .col_precio_hab { white-space: nowrap; }
#contenido_admin .col_precio_hab .casilla_precio,
#contenido_admin .col_precio_hab .desglose {
  display: inline-block;
  vertical-align: middle;
}
#contenido_admin .col_precio_hab .desglose { margin-left: 8px; }
/* §18 estira estos inputs a 320px con euro15.png; aquí ancho fijo e icono del cdn. */
#contenido_admin .precio_por_hab {
  display: inline-block;
  width: 96px;
  max-width: 96px;
  text-align: right;
  padding-right: 26px;
  background-image: url("https://cdn.rossa.app/icons/euro.svg?bg");
  background-repeat: no-repeat;
  background-position: right 7px center;
  background-size: 12px 12px;
}

/* Secondary — blanco + borde (p. ej. "Resetear" en gestor_huespedes). */
.admin_boton--secondary {
  background-color: var(--rossa-white) !important;
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
.admin_boton--secondary:hover {
  background-color: var(--rossa-surface) !important;
  border-color: #c7cfcf;
}
.admin_boton--secondary:disabled,
.admin_boton--secondary[disabled] {
  background-color: #f2f4f5 !important;
  color: #9aa3a3;
  border-color: var(--rossa-border);
  cursor: not-allowed;
}

/* --- Legacy specificity busters ------------------------------------------- */
table.rossa_table_estandar .admin_boton {           /* was #1bad89, radius 15px */
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
  border: 1px solid var(--rossa-teal);
  border-radius: var(--rossa-radius);
}
table.rossa_table_estandar .admin_boton.admin_boton--primary {
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
  border-color: var(--rossa-teal);
}
#field_reg .admin_boton {                            /* was solid red register btn */
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
  border-color: var(--rossa-teal);
}

/*------------------------------------------------- 4. FORMS / INPUTS / SELECTS */
.rossa-field input[type="text"],
.rossa-field input[type="number"],
.rossa-field input[type="email"],
.rossa-field input[type="datepicker"],
.rossa-field input[type="date"],
.rossa-field input[type="search"],
.rossa-field select,
table.rossa_table_estandar input,
table.rossa_table_estandar select {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
  background-color: var(--rossa-white);
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  font-size: 14px;
  padding: 8px 14px;
  box-sizing: border-box;
}
.rossa-field input:focus,
.rossa-field select:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .15);
}

/* surveys_filters: "Seleccionar todos" / "Deseleccionar todos", una fila en movil. */
@media (max-width: 700px) {
  #contenido_admin .surveys-establecimientos-actions { display: flex; gap: 8px; }
  #contenido_admin .surveys-establecimientos-actions button { flex: 1 1 0; min-width: 0; margin-left: 0; }
}

#contenido_admin .surveys-select-wrap .select2-selection__arrow { display: none; }
#contenido_admin .surveys-select-wrap .select2-container { width: 100% !important; }

/*------------------------------------------------------------ 5. TAGS / PILLS */
.rossa-tag {
  display: inline-block;
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 12px;
  line-height: 1;
  padding: 6px 12px;
  border-radius: var(--rossa-radius-pill);
  background-color: var(--rossa-surface);
  color: var(--rossa-ink);
  border: 1px solid var(--rossa-border);
}
.rossa-tag--teal   { background-color: var(--rossa-teal); color: #fff; border-color: var(--rossa-teal); }
.rossa-tag--red    { background-color: var(--rossa-red);  color: #fff; border-color: var(--rossa-red);  }
.rossa-tag--cyan   { background-color: var(--rossa-cyan); color: #fff; border-color: var(--rossa-cyan); }
.rossa-tag--gray   { background-color: #b8bdbd;           color: #fff; border-color: #b8bdbd; }
.rossa-tag--coral  { background-color: var(--rossa-coral);color: #fff; border-color: var(--rossa-coral);}

/*----------------------------------------------------------------- 6. TABLES */
/* El look de filas separadas es opt-in vía .rossa-table: las tablas legacy se rompen con él. */

/* -- Opt-in modern table (full redesign look) -- */
.rossa-table {
  font-family: var(--rossa-font);
  border-collapse: separate;
  border-spacing: 0 6px;
  width: 100%;
  background-color: transparent;
  color: var(--rossa-ink);
}
.rossa-table thead th {
  background-color: transparent;
  color: var(--rossa-ink);
  font-weight: 700;
  text-align: left;
  padding: 8px 12px;
  border: 0;
}
.rossa-table tbody td {
  background-color: var(--rossa-surface);
  padding: 14px 12px;
  border: 0;
  vertical-align: middle;
}
.rossa-table tbody tr td:first-child {
  border-left: 4px solid var(--rossa-cyan);
  border-top-left-radius: var(--rossa-radius);
  border-bottom-left-radius: var(--rossa-radius);
}
.rossa-table tbody tr td:last-child {
  border-top-right-radius: var(--rossa-radius);
  border-bottom-right-radius: var(--rossa-radius);
}
/* Date-group header row (e.g. "08-08-2025") */
.rossa-table__group td,
.rossa-table tr.group td {
  background-color: var(--rossa-surface-2) !important;
  border-left: 0 !important;
  color: var(--rossa-ink);
  font-weight: 700;
  padding: 4px 12px;
}
/* Las anclas tipo botón quedan excluidas: si no, este selector vence a .rossa-btn. */
.rossa-table a:not(.rossa-btn):not(.rossa-btn-negative):not(.admin_boton) {
  color: var(--rossa-cyan-fig);
  font-weight: 400;
  text-decoration: none;
}
.rossa-table a:not(.rossa-btn):not(.rossa-btn-negative):not(.admin_boton):hover { text-decoration: underline; }

/* -- Safe cosmetic-only overrides for existing legacy tables (no layout change) -- */
table.rossa_table_estandar { color: var(--rossa-ink); }
table.rossa_table_estandar thead tr.cab td { color: var(--rossa-ink); }
table.rossa_table_estandar a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button),
table.t_notificaciones a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative) { color: var(--rossa-cyan-fig); font-weight: 400; }

/*------------------------------------------------------------------- 7. CARDS */
.rossa-card {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: var(--rossa-shadow);
  padding: 18px 20px;
}
.rossa-card--empty {                 /* dashed empty-state, e.g. "No hay pagos" */
  border-style: dashed;
  border-color: var(--rossa-border);
  box-shadow: none;
  text-align: center;
  color: var(--rossa-muted);
}
.rossa-card__title { color: var(--rossa-teal); font-weight: 700; }
.rossa-card__value { color: var(--rossa-ink);  font-weight: 700; font-size: 24px; }

/*----------------------------------------------------- 8. PAYMENT / STATUS UTILS */
.rossa-status-box {                  /* salmon "NO PAGADO" block */
  background-color: var(--rossa-salmon);
  color: var(--rossa-coral);
  border-radius: var(--rossa-radius);
  padding: 14px 16px;
  font-weight: 700;
}
.rossa-amount-bar {                  /* filled "Restante a pagar" bar */
  background-color: var(--rossa-coral);
  color: var(--rossa-white);
  border-radius: var(--rossa-radius);
  padding: 10px 14px;
  font-weight: 700;
  display: flex;
  justify-content: space-between;
}
.rossa-amount--paid { color: var(--rossa-green); font-weight: 700; }
.rossa-amount--due  { color: var(--rossa-coral); font-weight: 700; }

/*--------------------------------------------------------- 9. SECTION HEADINGS */
.rossa-heading {                     /* teal centered sub-section heading */
  color: var(--rossa-teal);
  font-family: var(--rossa-font);
  font-weight: 700;
  text-align: center;
}
.rossa-heading--main {               /* navy left-aligned main heading */
  color: var(--rossa-ink);
  text-align: left;
  font-size: 22px;
}

/*=============================================================================
  10. GLOBAL CHROME  (sidebar + page background + content header)
=============================================================================*/

/* Page background: white (no grey) */
body { background-color: var(--rossa-white); }

/* --- Sidebar: navy -> light --- */
#menu {
  background: var(--rossa-white);
  border-right: 1px solid var(--rossa-border);
  height: calc(100vh - 72px - 48px);
  padding-bottom: 12px;
  min-height: 0;
  top: 72px;
  margin-top: 0;
  z-index: 200;
}
#toplydia { z-index: 250; }
/* Con el menú colapsado el footer se oculta: el raíl recupera la altura */
body.showhidemenu #menu { height: calc(100vh - 72px); }
@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  /* Off-canvas móvil/tablet sin ratón: solo despeja el toolbar (48px) */
  #menu { top: 48px; height: calc(100vh - 48px); }
  body.showhidemenu #menu { top: 48px; height: calc(100vh - 48px); }
  #menu { z-index: 260; }
}
#menu::-webkit-scrollbar              { background-color: var(--rossa-white); }
#menu::-webkit-scrollbar-track        { background-color: var(--rossa-white); }
#menu::-webkit-scrollbar-thumb        { background-color: var(--rossa-teal); }  /* idle: teal claro */
#menu::-webkit-scrollbar-thumb:hover  { background-color: #00474d; }            /* hover: teal oscuro */
/* Firefox (no hover state on scrollbars) */
#menu { scrollbar-color: var(--rossa-teal) var(--rossa-white); }

/* Logo is a red mark — visible on white, no plate needed */
#menu #capa_logo { background: transparent; }

/* Menu item text + icons */
#menu .panel_admin a,
#menu .panel_admin a.menugroup,
#menu .panel_admin a .txtmenu,
#menu .panel_admin a.menugroup .txtmenu {
  color: var(--rossa-ink);
}
/* El icono es una máscara pintada con `background-color: currentColor` (§32): basta el `color`. */
#menu .panel_admin a i,
#menu .panel_admin a.menugroup i { color: var(--rossa-stroke) !important; }

/* Todo acento a la izquierda del menú va por sombra interior, nunca por borde: el borde empuja. */

/* Hover: subtle surface, ink text, teal accent edge */
#menu .panel_admin li a:hover,
#menu .panel_admin li a.menugroup:hover {
  background: var(--rossa-surface);
  color: var(--rossa-ink);
  border-left: 0;
  box-shadow: inset 1px 0 0 var(--rossa-teal);
  border-radius: 0;
}

/* Active item: subtle teal tint + teal text + teal left bar (not a heavy fill) */
#menu .panel_admin li a.currmenu,
#menu .panel_admin li a.menugroup.currmenu {
  background: rgba(0, 94, 102, .10);
  color: var(--rossa-teal);
  border-left: 0;
  box-shadow: inset 1px 0 0 var(--rossa-teal);
  border-radius: 0;
}
#menu .panel_admin li a.currmenu i,
#menu .panel_admin li a.menugroup.currmenu i { color: var(--rossa-teal) !important; }

/* Lydia acumula `currmenu` en cada grupo clicado; el tile lo lleva solo .rossa-open. */
#menu .panel_admin > li > a.menugroup.currmenu { background: transparent; box-shadow: none; }
#menu .panel_admin > li.rossa-open > a.menugroup {
  background: rgba(0, 94, 102, .10);
  border-left: 0;
  box-shadow: inset 1px 0 0 var(--rossa-teal);
  border-radius: 0;
  color: var(--rossa-teal);
}
#menu .panel_admin > li.rossa-open > a.menugroup i { color: var(--rossa-teal) !important; }

/* Expanded submenu: crimson + red inset shadow -> clean transparent panel */
#menu .menugroupitems {
  background-color: var(--rossa-surface);   /* panel gris-azulado de los hijos expandidos (Figma) */
  border-left: 0 !important;
  box-shadow: none;           /* removes the inset #9A163F red glow */
  margin-bottom: 6px;
}
#menu .menugroupitems li a:hover,
#menu .menugroupitems li a.currmenu {
  background: rgba(0, 94, 102, .10);
  color: var(--rossa-teal);
  border-left: 0;                /* el borde blanco de lydia movía el rótulo 3px */
}
#menu .menugroupitems li a:hover i,
#menu .menugroupitems li a.currmenu i { color: var(--rossa-teal) !important; }

/* Clases distintas para que el toggle legacy de 1er nivel (.menugroupitems) no los toque. */
#menu .rossa-submenu { list-style: none; }
#menu .rossa-submenu__items {
  display: none;                /* collapsed by default; JS toggles it */
  list-style: none;
  margin: 0;
  padding: 0;
}
#menu .rossa-submenu.is-open > .rossa-submenu__items { display: block; }
#menu .panel_admin > li > .menugroupitems { display: none !important; }
#menu .panel_admin > li.rossa-open > .menugroupitems { display: block !important; }
#menu .rossa-submenu__items li { margin-bottom: 3px; }   /* small vertical gap, like the top-level items */
#menu .rossa-submenu__items li a {
  margin-left: 0;
  padding-left: 22px;          /* sangría modesta; ya no hay punto-nodo que librar */
  color: var(--rossa-muted);   /* grandchild = secondary text (fixes legacy orange) */
}
/* La 2ª regla no va bajo .menugroupitems: un submenú aplanado cuelga de .panel_admin. */
#menu .menugroupitems li a i { display: none; }
#menu .rossa-submenu__items li a i { display: none; }

#menu .panel_admin .menugroupitems li a { font-size: 14px; }        /* child */
#menu .panel_admin .rossa-submenu__items li a { font-size: 13px; }  /* grandchild */

/* Scoped a .menugroupitems: un submenú ascendido a 1er nivel debe pintar el icono grande. */
#menu .menugroupitems a.rossa-submenu__head .fas,
#menu .menugroupitems a.rossa-submenu__head .far {
  font-size: 16px;
  width: 30px;
  margin-right: 3px;
  text-align: left;
}
/* Solo los grupos multi-item son a.menugroup; Inicio/Facturas no llevan indicador. */
#menu .panel_admin > li > a.menugroup::after,
#menu .panel_admin a.rossa-submenu__head::after {
  content: "";
  display: block;               /* lydia oculta su ::after en móvil; forzamos que se vea */
  flex: 0 0 auto;
  margin-left: auto;            /* empuja el indicador al borde derecho */
  width: 15px; height: 15px;
  font-size: 0;                 /* mata cualquier glifo FA heredado */
  background-color: var(--rossa-muted);
  -webkit-mask: url("https://cdn.rossa.app/icons/plus.svg") no-repeat center;  mask: url("https://cdn.rossa.app/icons/plus.svg") no-repeat center;
  -webkit-mask-size: contain;   mask-size: contain;
}
/* 1er nivel: solo .rossa-open, no el currmenu que lydia acumula al clicar. */
#menu .panel_admin > li.rossa-open > a.menugroup::after,
#menu .rossa-submenu.is-open > a.rossa-submenu__head::after,
#menu .panel_admin a.rossa-submenu__head.currmenu::after {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/minus.svg");  mask-image: url("https://cdn.rossa.app/icons/minus.svg");
}
/* Etiqueta de las filas de 1er nivel alineada a la izquierda, junto al icono. */
#menu .panel_admin > li > a { display: flex; align-items: center; }
#menu .panel_admin > li > a .txtmenu { flex: 1; text-align: left; }
/* Color de los hijos de grupo: ink (corrige el naranja legacy de algunos módulos). */
#menu .menugroupitems > li > a { color: var(--rossa-ink); }

/* ============================================================================
   MENÚ RESPONSIVE — flyouts en cascada en ≥701px; acordeón inline en móvil (≤700px)
   ============================================================================ */
@media (min-width: 701px) and (hover: hover) and (pointer: fine) {
  #menu .panel_admin > li { position: relative; }

  /* Panel flotante de los hijos de un grupo (1er nivel): solo con ratón real.
     En tablet táctil (sin hover) el grupo se expande en línea, como en móvil. */
  #menu .menugroupitems {
    position: absolute;
    left: 100%; top: 0;
    min-width: 232px; width: max-content; max-width: 340px;
    overflow: visible;          /* visible para que el submenú anidado (Lineal/Mensual) no se recorte */
    margin: 0; padding: 8px 0;
    background: var(--rossa-white);
    border: 1px solid var(--rossa-border);
    border-radius: 0 10px 10px 0;
    box-shadow: 10px 12px 34px rgba(0, 48, 60, .16);
    z-index: 1200;
  }
  /* lydia pone opacity:0 a TODO el texto del menú; el de dentro de los flyouts sí debe verse. */
  body.showhidemenu #menu .menugroupitems a .txtmenu,
  body.showhidemenu #menu .rossa-submenu__items a .txtmenu { opacity: 1 !important; }
  /* Dentro del panel los hijos van a la izquierda (no centrados como el raíl). */
  #menu .menugroupitems > li > a { text-align: left; padding: 9px 16px; }

  /* Submenú de 2º nivel → otro panel a la derecha del primero. */
  #menu .rossa-submenu { position: relative; }
  #menu .rossa-submenu.is-open > .rossa-submenu__items {
    position: absolute;
    left: 100%; top: 0;
    min-width: 180px; width: max-content;
    margin: 0; padding: 8px 0;
    background: var(--rossa-white);
    border: 1px solid var(--rossa-border);
    border-radius: 0 10px 10px 0;
    box-shadow: 10px 12px 34px rgba(0, 48, 60, .16);
    z-index: 1300;
  }
}

#menu .menugroupitems,
#menu .rossa-submenu__items {
  scrollbar-width: thin;                                   /* Firefox */
  scrollbar-color: var(--rossa-border) transparent;
}
#menu .menugroupitems::-webkit-scrollbar,
#menu .rossa-submenu__items::-webkit-scrollbar { width: 4px; height: 4px; }
#menu .menugroupitems::-webkit-scrollbar-track,
#menu .rossa-submenu__items::-webkit-scrollbar-track { background: transparent; }
#menu .menugroupitems::-webkit-scrollbar-thumb,
#menu .rossa-submenu__items::-webkit-scrollbar-thumb { background: var(--rossa-border); border-radius: 999px; }
#menu .menugroupitems::-webkit-scrollbar-thumb:hover,
#menu .rossa-submenu__items::-webkit-scrollbar-thumb:hover { background: var(--rossa-muted); }

/* Se oculta solo el indicador +/-: al icono lo posiciona el padding del <a>. */
@media (min-width: 1025px) {
  body.showhidemenu #menu .panel_admin > li > a.menugroup::after { display: none; }
}


/* Geometría medida en vivo: filas de 42px -> centro 21px; iconos a +13px; texto a +46px. */
/* — Level 1: group children (.menugroupitems > li) — */
#menu .menugroupitems > li { position: relative; }
#menu .menugroupitems > li::before {            /* vertical trunk segment */
  content: ""; position: absolute;
  left: -7px; top: 0; bottom: 0; width: 1px;
  background: var(--rossa-border);
}
#menu .menugroupitems > li:first-child::before { top: 21px; }                 /* start at 1st tick */
#menu .menugroupitems > li:last-child::before  { bottom: calc(100% - 21px); } /* end at last tick  */
#menu .menugroupitems > li::after {             /* horizontal tick to the row */
  content: ""; position: absolute;
  left: -7px; top: 21px; width: 15px; height: 1px;
  background: var(--rossa-border);
}
/* — Level 2: sub-menu children (.rossa-submenu__items > li): nested trunk + dots — */
#menu .rossa-submenu__items { position: relative; }
#menu .rossa-submenu__items > li { position: relative; }
#menu .rossa-submenu__items > li::before {      /* nested trunk segment */
  content: ""; position: absolute;
  left: 17px; top: 0; bottom: 0; width: 1px;
  background: var(--rossa-border);
}
#menu .rossa-submenu__items > li:first-child::before { top: -10px; }                /* reach up to the parent head */
#menu .rossa-submenu__items > li:last-child::before  { bottom: calc(100% - 21px); } /* stop at last node */
#menu .rossa-submenu__items > li > a::before {  /* node dot (idle = hollow) */
  content: ""; position: absolute;
  left: 13px; top: 50%; transform: translateY(-50%);
  width: 9px; height: 9px; border-radius: 50%;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  z-index: 1;
}
#menu .rossa-submenu__items > li > a.currmenu::before {  /* active node = filled teal */
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
}
#menu .rossa-submenu__items li a:hover {
  background: rgba(0, 94, 102, .10);   /* hover: subtle teal tile (affordance) */
  color: var(--rossa-teal);
  border-radius: 8px;
  border-left: 0;                      /* idem: sin el borde de lydia no se mueve */
}
/* Vence al tile de currmenu del grupo/panel (misma especificidad) por cargar después. */
#menu .rossa-submenu__items li a.currmenu {
  background: transparent;
  /* Sombra interior, no borde: un borde de 3px empuja el rótulo y descuadra la fila. */
  border-left: 0;
  box-shadow: inset 1px 0 0 var(--rossa-teal);
  border-radius: 0;
  color: var(--rossa-ink);
  font-weight: 600;
}
#menu .rossa-submenu__items li a:hover i,
#menu .rossa-submenu__items li a.currmenu i { color: var(--rossa-teal) !important; }

/* — Rediseño Figma: SIN conectores de árbol ni puntos (los hijos son texto plano) — */
#menu .menugroupitems > li::before,
#menu .menugroupitems > li::after,
#menu .rossa-submenu__items > li::before,
#menu .rossa-submenu__items > li > a::before { content: none; }

/* El <span>Ocultar</span> se oculta pero sigue en el HTML: lydia.css y Lydia_Script.js lo usan. */
#menu #hidemenu,
#menu #hidemenu span { color: var(--rossa-muted); }
#menu #hidemenu {
  height: 34px;
  margin-top: -10px;
  padding: 0 8px 0 0;
}
#menu #hidemenu span { display: none; }
#menu #hidemenu::before {
  content: "";
  display: block;
  width: 26px; height: 26px;
  font-family: inherit;                 /* neutraliza el glifo FA de lydia.css */
  background-color: currentColor;
  -webkit-mask: url("https://cdn.rossa.app/icons/chevrons-left.svg") no-repeat center;   mask: url("https://cdn.rossa.app/icons/chevrons-left.svg") no-repeat center;
  -webkit-mask-size: 18px 18px;   mask-size: 18px 18px;
  transition: transform .25s ease;
}
#menu #hidemenu:hover { color: var(--rossa-teal); }
/* Colapsado: la misma flecha mirando al otro lado (= "mostrar"). */
body.showhidemenu #menu #hidemenu::before { transform: rotate(180deg); }

/* Content header */
#cabecera_texto h1 { color: var(--rossa-ink); }
.admin_tit { border-bottom: 1px solid var(--rossa-border); color: var(--rossa-ink); }

/* Los items van flotados en orden de DOM; `order` los recoloca sin tocar el marcado. */
#toolbar {
  display: flex;
  align-items: center;
  gap: 14px;
  min-height: 72px;
  padding: 16px 24px 12px 76px;   /* left gap reserves room for the round logo */
  background: var(--rossa-white);
  border: 0;
  border-bottom: 1px solid var(--rossa-border);
  box-sizing: border-box;
  color: var(--rossa-ink);
  font-size: 14px;
}
#toolbar div { margin: 0; }        /* cancel base "#toolbar div{margin:2px 5px}" */
#toolbar #portal,
#toolbar .demo_mode,
#toolbar #fechahora,
#toolbar #nombreuser,
#toolbar #descon { float: none; }  /* flex controls placement, not floats */
#toolbar #portal     { order: 1; margin-right: auto; }  /* far left, after logo */
#toolbar .demo_mode  { order: 2; }
#toolbar #fechahora  { order: 3; }
#toolbar #nombreuser { order: 4; display: inline-flex; align-items: center; gap: 8px; }
#toolbar #descon     { order: 5; }
#toolbar #portal a,
#toolbar #nombreuser,
#toolbar #nombreuser strong,
#toolbar #fechahora,
#toolbar #fechahora span { color: var(--rossa-ink); }

/* Content clears the fixed bar — beats footer.php's inline 30px */
#contenedor_absoluto { padding-top: 80px !important; }   /* 72 de barra + 8 de aire */
#contenedor_absoluto:has(#contenido_admin.isiframe) { padding-top: 20px !important; }

/* El halo blanco (padding + fondo del contenedor) es lo que corta las líneas de detrás. */
#toolbar #toolbarlogo {
  top: 20px;      /* la línea cruza el disco a ~59% de su alto */
  left: 1px;
  z-index: 300;
  padding: 7px;
  background: var(--rossa-white);
  border-radius: 50%;
  line-height: 0;              /* sin el hueco de línea base bajo el <img> */
}
/* El PNG viene recortado al disco: 51 × 455/500 ≈ 46px mantiene el tamaño en pantalla. */
#toolbar #logo_lidia { width: 46px; height: 46px; }

/* margin:0 anula el margin-top:4.5px legacy de #descon. */
#descon,
#panel_user {
  display: inline-flex;
  align-items: center;
  height: 32px;
  margin: 0;
  padding: 0 14px;
  border-radius: var(--rossa-radius);
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
  background: transparent;
}
#panel_user { color: var(--rossa-teal); border: 1px solid var(--rossa-teal); }
#panel_user:hover { background: var(--rossa-teal); color: var(--rossa-white); }
#descon { color: var(--rossa-red); border: 1px solid var(--rossa-red); }
#descon:hover { background: var(--rossa-red); color: var(--rossa-white); }

#toolbar #btn-crear-reserva {
  order: 2;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 32px;
  margin: 0;
  padding: 0 16px;
  border-radius: var(--rossa-radius);
  background: var(--rossa-teal);
  border: 1px solid var(--rossa-teal);
  color: var(--rossa-white);
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
  text-decoration: none;
}
#toolbar #btn-crear-reserva i { font-size: 25px; line-height: 1; transform: translateY(2px); margin-left: -4px; }
#toolbar #btn-crear-reserva:hover { background: var(--rossa-ink); border-color: var(--rossa-ink); color: var(--rossa-white); }

/* El offset izquierdo libra el sidebar fijo de 260px; float/width/uppercase anulan lydia. */
#footer {
  position: fixed;
  left: 0;                        /* anchored to the LEFT MENU column only */
  right: auto;
  bottom: 0;
  z-index: 990;                   /* above #menu so it shows over the sidebar */
  float: none;
  width: 260px;                   /* = #menu width — footer lives over the sidebar */
  box-sizing: border-box;
  margin: 0;
  padding: 10px 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  background: var(--rossa-white);
  border-top: 0;
  color: var(--rossa-deep);
  font-family: var(--rossa-font);
  font-size: 14px !important;     /* beats lydia's 14px !important */
  font-weight: 400;
  text-transform: none;
  text-shadow: none;
  text-align: center;
  transition: left .7s ease;     /* eases in lockstep with the #menu collapse */
}
/* Short centered hairline (Figma: 810px line inside a 941px footer) */
#footer::before {
  content: "";
  display: block;
  width: min(820px, 86%);
  height: 1px;
  background: rgba(32, 92, 104, .45);
  margin-bottom: 4px;
}
#footer #footer-text { color: var(--rossa-deep); }
#footer #footer-text strong { font-weight: 700; }
#footer #poralt,
#footer a { color: var(--rossa-deep); font-weight: 400; text-decoration: none; }
#footer a:hover { color: var(--rossa-petrol); }
#footer #footer-logo img { display: block; height: 26px; width: auto; }
/* El login ya lleva versión + copyright (body.lologin); dentro de la app solo el logo. */
body:not(.lologin) #footer::before { display: none; }
body:not(.lologin) #footer #footer-text { display: none; }
/* Collapsed sidebar (icon rail): hide the footer — no room for the credit. */
body.showhidemenu #footer { display: none; }
@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  /* Móvil/tablet sin ratón: el sidebar es un overlay, así que el pie ocupa todo el ancho. */
  #footer { left: 0; width: 100%; display: flex; }
}
/* El login queda fuera. */
body:not(.lologin):has(#footer) { padding-bottom: 24px; }

/*=============================================================================
  11. SCREEN: Gestión de reservas
=============================================================================*/

/* Grey content panel (#ECF0F1) behind the filters/table -> white */
.rossa-ctr-admin { background-color: var(--rossa-white); }

/* Table: gray "floating cards" -> airy white rows with thin separators */
.rossa-table--bkg tr { background-color: var(--rossa-white); }
.rossa-table--bkg th,
.rossa-table--bkg td {
  border: 0;
  border-bottom: 1px solid var(--rossa-border);
  padding: 14px 8px;
}
.rossa-table--bkg th {
  color: var(--rossa-muted);
  font-weight: 700;
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: .03em;
}
/* `.rossa-table.rossa-table--bkg` (lydia.css) pinta las etiquetas con barra teal y gana. */
.rossa-table.rossa-table--bkg {
  box-shadow: none;
  border-radius: var(--rossa-radius);
  margin: 0;
}
.rossa-table.rossa-table--bkg th,
.rossa-table.rossa-table--bkg th[colspan="2"] {
  background-color: transparent;
  color: var(--rossa-muted);
  font-weight: 700;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .03em;
  padding: 14px 8px;
}
.rossa-table.rossa-table--bkg td:first-child { color: var(--rossa-ink); }
/* Icono eliminar (papelera) en tarjeta: naranja legacy -> destructivo salmón + coral. */
.rossa-trash {
  background-color: var(--rossa-salmon);
  color: var(--rossa-coral);
}
/* .rossa-btn lo pone verde y ver_reserva.css naranja-outline; 0,2,0 vence a ambos (0,1,0). */
.rossa-btn.rossa-btn--red {
  background-color: var(--rossa-salmon);
  color: var(--rossa-coral);
  border: 1px solid #f6d6cd;
}
.rossa-btn.rossa-btn--red:hover,
.rossa-btn.rossa-btn--red:active {
  background-color: #fbe0d8;
  color: var(--rossa-coral);
  border-color: var(--rossa-coral);
}
#contenido_admin table.dcc-table.rossa-tbl.rossa-tbl {
  border-collapse: separate;
  border-spacing: 0 10px;
}
#contenido_admin table.dcc-table.rossa-tbl.rossa-tbl > tbody > tr.dcc-sec > td {
  background-color: var(--rossa-surface-2) !important;
  color: var(--rossa-ink);
  font-weight: 700;
  text-transform: none;
  text-align: left;
  height: auto;
  padding: 10px 12px;
}
#contenido_admin table.dcc-table.rossa-tbl.rossa-tbl > tbody > tr.dcc-sec > td span {
  font-weight: 400;
  color: var(--rossa-muted);
}
#contenido_admin .dcc-table-wrap:has(> table.rossa-tbl) {
  border: 0;
  background: transparent;
}
#contenido_admin .dcc-add-wrap {
  border: 0;
}
#contenido_admin .dcc-add-toggle {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
  clip: rect(0, 0, 0, 0);
}
#contenido_admin .dcc-add-wrap > .dcc-add-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 176px;
  height: 34px;
  padding: 0 12px;
  background: var(--rossa-white);
  color: var(--rossa-navy);
  border: 1px solid var(--rossa-stroke);
  border-radius: var(--rossa-radius);
  margin-bottom: 10px;
  cursor: pointer;
}
#contenido_admin .dcc-add-wrap > .dcc-add-summary:hover {
  background: var(--rossa-tint);
}
#contenido_admin .dcc-add-wrap .dcc-add-bd {
  display: none;
  background: none;
  border-top: 0;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  overflow: hidden;
  opacity: 0;
  transform: translateY(-10px);
  transition: opacity .25s ease, transform .25s ease, display .25s allow-discrete;
}
#contenido_admin .dcc-add-wrap .dcc-add-toggle:checked ~ .dcc-add-bd {
  display: block;
  opacity: 1;
  transform: translateY(0);
}
@starting-style {
  #contenido_admin .dcc-add-wrap .dcc-add-toggle:checked ~ .dcc-add-bd {
    opacity: 0;
    transform: translateY(-10px);
  }
}
#contenido_admin .dcc-add-wrap .dcc-add-bd input.dcc-add-field,
#contenido_admin .dcc-add-wrap .dcc-add-bd select.dcc-add-field {
  height: 34px;
  box-sizing: border-box;
}
#contenido_admin .dcc-intro {
  background: none;
  border: 0;
  padding: 0;
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
  font-size: 12px;
}
#contenido_admin .dcc-intro details {
  width: fit-content;
  border: 0;
  border-radius: var(--rossa-radius);
}
#contenido_admin .dcc-intro details[open] {
  border: 1px solid var(--rossa-border);
  border-top: 0;
}
#contenido_admin .dcc-intro details > summary {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 34px;
  padding: 0 12px;
  background: var(--rossa-white);
  color: var(--rossa-navy);
  border: 1px solid var(--rossa-stroke);
  border-radius: var(--rossa-radius);
  cursor: pointer;
  list-style: none;
}
#contenido_admin .dcc-intro details > summary::-webkit-details-marker {
  display: none;
}
#contenido_admin .dcc-intro details > summary:hover {
  background: var(--rossa-tint);
}
@media (max-width: 700px) {
  #contenido_admin .dcc-intro details {
    width: 100%;
  }
  /* #new_filter_value (renderFilterValueSelectHtml) trae style="min-width:320px" inline y sin
     clase .dcc-add-field: desborda el padding del contenedor en móvil sin este !important. */
  #contenido_admin .dcc-add-wrap .dcc-add-bd input,
  #contenido_admin .dcc-add-wrap .dcc-add-bd select,
  #contenido_admin .dcc-add-wrap .dcc-add-bd textarea {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box;
  }
  #contenido_admin .dcc-add-wrap > .dcc-add-summary {
    width: 100%;
    box-sizing: border-box;
  }
}
#contenido_admin .dcc-add-chevron {
  display: inline-flex;
  flex: 0 0 auto;
  font-size: 12px;
  color: var(--rossa-muted);
  transition: transform .15s ease;
}
#contenido_admin .dcc-add-wrap .dcc-add-toggle:checked ~ .dcc-add-summary .dcc-add-chevron {
  transform: rotate(180deg);
}
#contenido_admin .dcc-act-cell .dcc-btn-del {
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
}
/* Fila no eliminable ("Oblig."): mismo icono de papelera que el th, en negro/navy en vez del
   rojo de acción — el estilo inline de .dcc-badge-lock (caja con borde rojo) era para el texto. */
#contenido_admin .dcc-act-cell .dcc-badge-lock {
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
}
/* §65 pinta en rojo TODO .fa-trash-alt de una fila de datos (pensado para la acción de borrar),
   sin exigir .rossa-ico--del: hace falta pisarlo en el propio icono, no en el span padre. */
#contenido_admin table.dcc-table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .dcc-badge-lock .fa-trash-alt {
  color: var(--rossa-tbl-ico) !important;
}
.rossa-ctr__icon--timeline {
  background-image: none;
  background-color: var(--rossa-teal);
  -webkit-mask: url("https://cdn.rossa.app/icons/receipt-text.svg") no-repeat center / contain;
          mask: url("https://cdn.rossa.app/icons/receipt-text.svg") no-repeat center / contain;
  width: 44px;
  height: 44px;
  top: -22px;
}

#contenido_admin > .rossa-ctr-booking > .rossa-ctr-block--timeline > .rossa-ctr__icon--timeline { display: none; }
#contenido_admin > .rossa-ctr-booking:has(> .rossa-ctr-block--timeline) { margin-top: 0; }
#contenido_admin > .rossa-ctr-booking > .rossa-ctr-block--timeline { padding-top: 0; }

/* margin-left:0 vence al `margin:5px` legacy para alinear la 1ª pestaña con el filtro. */
.rossa-slider .rossa-slider__tab-box,
#tabs_comunicaciones,
#tabs-container,
#tabs_crs,
#tabs_ofertas,
#tabs_pagreserva {
  gap: 10px;
  margin-left: 0;
}
/* #tabs_comunicaciones hace de .rossa-slider y de __tab-box a la vez (sin flechas). */
#tabs_comunicaciones {
  display: flex;
  padding: 0;
  margin-bottom: 20px;
  background: none;
  box-shadow: none;
  border: none;
  border-radius: 0;
}
/* #tabs_crs (view_user y demás SharedViewer), #tabs_ofertas (llaves_api) y #tabs_pagreserva (web_content) tienen la misma forma .pest > a que #tabs_comunicaciones. */
#tabs_comunicaciones .pest,
#tabs_crs .pest,
#tabs_ofertas .pest,
#tabs_pagreserva .pest {
  border: none;
  border-radius: 0;
  background: none;
  margin: 0;
  padding: 0;
  float: none;
  display: flex;
}

#tabs_comunicaciones .pest.current,
#tabs_crs .pest.current,
#tabs_ofertas .pest.current,
#tabs_pagreserva .pest.current {
  border-bottom: 0 !important;
}
.rossa-slider__tab-box .rossa-slider__tab,
#tabs_comunicaciones .pest a,
#tabs_crs .pest a,
#tabs_ofertas .pest a,
#tabs_pagreserva .pest a,
#tabs-container .rossa-tabs {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--rossa-muted);
  border-radius: 0;
  color: var(--rossa-muted);
  padding: 8px 6px;
  margin-right: 0;         /* beats legacy .rossa-tabs{margin-right:6px} — spacing is the container's gap */
  min-width: 0;            /* beats legacy 70px floor so short labels don't pad out */
  font-family: var(--rossa-font);
  font-weight: 400;
  text-decoration: none;
  white-space: nowrap;
}
/* Anula el padding izquierdo de la 1ª pestaña: alinea su texto, no su caja de clic. */
.rossa-slider__tab-box .rossa-slider__tab:first-child,
#tabs_comunicaciones .pest:first-child a,
#tabs_crs .pest:first-child a,
#tabs_ofertas .pest:first-child a,
#tabs_pagreserva .pest:first-child a,
#tabs-container .rossa-tabs:first-child { padding-left: 8px; }
.rossa-slider__tab-box .rossa-slider__tab:hover,
#tabs_comunicaciones .pest a:hover,
#tabs_crs .pest a:hover,
#tabs_ofertas .pest a:hover,
#tabs_pagreserva .pest a:hover,
#tabs-container .rossa-tabs:hover {
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--rossa-muted);
  color: var(--rossa-ink);
}
/* El color/borde teal de la pestaña activa ya los pone el bloque UNIFIED TABS; aquí el peso. */
.rossa-slider__tab-box .rossa-slider__tab.active,
#tabs_comunicaciones .pest.current a,
#tabs_crs .pest.current a,
#tabs_ofertas .pest.current a,
#tabs_pagreserva .pest.current a,
#tabs-container .rossa-tabs-current {
  background: transparent;
  border: 0;
  border-bottom: 2px solid var(--rossa-teal);
  color: var(--rossa-teal);
  font-weight: 700;
}

/* view_user Timeline/Acciones (showRTL): reusan el card .rossa-ctr* de ver_reserva (margin-top:50px, padding 20/30px) sin su body.rossa-tabs-on que lo compensa. */
#trtimeline .rossa-ctr-booking,
#trtimelineuser .rossa-ctr-booking {
  display: block;
  margin-top: 0;
}
#trtimeline .rossa-ctr-block,
#trtimelineuser .rossa-ctr-block {
  display: block;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  background: transparent;
  border-radius: 0;
}
#trtimeline .rossa-ctr,
#trtimelineuser .rossa-ctr {
  width: 100%;
  padding: 0;
}
#trtimeline .rossa-ctr h1,
#trtimelineuser .rossa-ctr h1 {
  margin: 0 0 12px;
}

/* SharedViewer (.colnewtl): flex-basis:300px fijo no se estira a full width en movil. */
@media (max-width: 700px) {
  #contenido_admin .colnewtl {
    flex: 1 1 100%;
    max-width: 100%;
    margin-left: 0;
  }
}

/* view_user #tdescripcion (SharedViewer): tabla anonima interna no hereda el width:100% del <table>. */
@media (max-width: 600px) {
  #tdescripcion table.estandar {
    display: block;
    width: 100%;
  }
  #tdescripcion table.estandar tbody {
    display: flex;
    flex-direction: column;
    width: 100%;
  }
  #tdescripcion table.estandar tbody tr:not(.invicible) {
    display: flex;
    width: 100%;
    gap: 5px;
  }
  #tdescripcion table.estandar tbody tr:not(.invicible) td {
    flex: 1 1 0;
    min-width: 0;
    box-sizing: border-box;
  }
}

/*=============================================================================
  12. GENERIC ADMIN CONTENT  (broad theme for config/form panels)
=============================================================================*/
#contenido_admin input[type="text"],
#contenido_admin input[type="email"],
#contenido_admin input[type="password"],
#contenido_admin input[type="number"],
#contenido_admin input[type="search"],
#contenido_admin input[type="tel"],
#contenido_admin input[type="date"],
#contenido_admin input[type="datepicker"],
#contenido_admin input.hasDatepicker,
#contenido_admin textarea,
#contenido_admin select {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background-color: var(--rossa-white);
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
}
/* Todo desplegable nativo lleva la flecha de Select2 (chevron-down del CDN, ya en gris trazo). */
#contenido_admin select:not([multiple]):not([size]) {
  -webkit-appearance: none;
  appearance: none;
  background-image: url("https://cdn.rossa.app/icons/chevron-down.svg?bg");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 14px 14px;
  min-height: 34px;
  padding-left: 10px;
  padding-right: 32px;
}
#contenido_admin select::-ms-expand { display: none; }
/* jQuery-UI date fields (type="datepicker" / .hasDatepicker): clickable affordance */
#contenido_admin input[type="datepicker"],
#contenido_admin input.hasDatepicker { cursor: pointer; }
#contenido_admin input:focus,
#contenido_admin textarea:focus,
#contenido_admin select:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .15);
}

/*=============================================================================
  13. SCREEN: Ver reserva (booking detail)
=============================================================================*/

/* Secondary buttons: gray -> white outline */
.rossa-btn--default {
  background-color: var(--rossa-white);
  color: var(--rossa-ink);
  border: 1px solid var(--rossa-border);
}
.rossa-btn--default:hover {
  background-color: var(--rossa-surface);
  border-color: #c7cfcf;
}
.rossa-btn--negative { border-color: var(--rossa-border); color: var(--rossa-ink); }

/* Cards: flat — no border, no shadow, modest radius */
.rossa-ctr-block {
  border-radius: 10px;
  border: 0;
  box-shadow: none;
}

#contenido_admin .pdia-precio {
  cursor: help;
  border-bottom: 1px dotted var(--rossa-teal);
}
.tippy-popper .pdia-hover {
  text-align: left;
  min-width: 140px;
}
.tippy-popper .pdia-hover__row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  font-size: 12px;
  line-height: 1.5;
}
.tippy-popper .pdia-hover__day { opacity: .85; }
.tippy-popper .pdia-hover__imp { font-weight: 600; white-space: nowrap; }

/*=============================================================================
  14. SCREEN: Inicio dashboard (pagina_inicio)
=============================================================================*/

/* Leftover grey -> white; drop the boxed outer border */
.rossa-box-dropdown        { background: var(--rossa-white); }
.rossa-init-secciones-tabs { border: 0; }

.rossa-dropdown,
.rossa-dropdown--entrada,
.rossa-dropdown--salida,
.rossa-dropdown--actual {
  background: transparent;
  color: var(--rossa-green-fig);
  border-radius: 0;
  border-bottom: 1px solid var(--rossa-green-fig);
  padding: 8px 4px;
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: .02em;
}
/* aire entre la cabecera desplegable y sus tarjetas: pegaban a 0px */
#contenido_admin .rossa-box-dropdown { margin-bottom: 40px; position: static; }

/* Varias zonas de la tarjeta heredaban la Verdana del body de lydia. */
#contenido_admin .rossa-card { font-family: var(--rossa-font); }

.rossa-card-status .rossa-card-tag {
  font-family: var(--rossa-font);
  font-size: 13px;
  letter-spacing: .02em;
}
@media screen and (max-width: 480px) {
  .rossa-card-status .rossa-card-tag {
    width: 40px;
    height: 40px;
    font-size: 13px;
  }
}

/* ---- UNIFIED TABS: text + teal underline --------------------------------- */
/* Los !important vencen a las reglas `.current { … !important }` de lydia.css. */
.rossa-tabs,
.pest {
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  padding: 8px 10px;
  margin-right: 6px;
  color: var(--rossa-muted);
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 600;
  text-transform: none;
  cursor: pointer;
  transition: color .15s ease, border-color .15s ease;
}
.rossa-tabs a,
.pest a { color: inherit; text-decoration: none; }
.rossa-tabs:hover,
.rossa-tabs-focus,
.pest:hover {
  background: transparent;
  color: var(--rossa-ink);
}
.rossa-tabs-current,
.rossa-tabs-current:hover,
.pest.current,
.pest.current:hover {
  background: transparent;
  border-bottom: 2px solid var(--rossa-teal) !important;
  color: var(--rossa-teal) !important;
  cursor: default;
}
.rossa-tabs-current a,
.pest.current a,
.pest.current:hover a { color: var(--rossa-teal) !important; }

/* Tab-section headings "FECHA ACTUAL: ..." — Figma: Work Sans Regular ~19px */
.rossa-init-secciones-tabs h2,
#filter-container .cont h2 {
  font-family: var(--rossa-font);
  font-size: 19px;
  font-weight: 400;
  color: var(--rossa-deep);
}

/* Reservation cards: fully styled in §20. */

/*=============================================================================
  15. SCREEN: Inicio — header + filter bar (.rossa-container-filters)
=============================================================================*/
#contenido_admin h1 {
  font-family: var(--rossa-font);
  font-size: 23px;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin .rossa-intro {
  font-family: var(--rossa-font);
  font-size: 16px;
  font-weight: 500;
  color: var(--rossa-petrol);
  max-width: 860px;
}

/* Filter bar: one airy row, Figma gap rhythm */
.rossa-container-filters { gap: 16px; margin: 18px 0 24px; }
.rossa-container-filters .rossa-init-filters { gap: 16px; }
.rossa-container-filters .rossa-init-filters input { margin: 0; }
.rossa-container-filters .rossa-init-filters-pair { display: flex; align-items: flex-start; gap: 16px; }

.rossa-container-filters {
  align-items: flex-start;
  flex-wrap: nowrap;
}

/* Inputs: square hairline boxes (Figma draws 0.5px #205c68 strokes) */
.rossa-container-filters .rossa-input {
  height: 39px;
  box-sizing: border-box;
  border: 1px solid rgba(32, 92, 104, .55);
  border-radius: 0;
  background-color: var(--rossa-white);
  padding: 8px 15px;
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 500;
  color: var(--rossa-petrol);
  cursor: auto;
  -webkit-appearance: none;
  appearance: none;
}
.rossa-container-filters .rossa-input:focus {
  outline: none;
  border-color: var(--rossa-petrol);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}
.rossa-container-filters input[type="datepicker"].rossa-input,
.rossa-container-filters input[type="date"].rossa-input { cursor: pointer; }

/* Labels ("Búsqueda:", checkbox captions) */
.rossa-container-filters .rossa-text {
  font-family: var(--rossa-font);
  font-size: 16px;
  font-weight: 500;
  color: var(--rossa-petrol);
}

.rossa-container-filters .rossa-init-field {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  vertical-align: bottom;
}
.rossa-container-filters .rossa-init-search {
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}
/* Sin type="..." no hay `[type="text"]` que activar en §12: conserva su borde propio. */
.rossa-container-filters .rossa-init-search .rossa-input {
  border: 1px solid var(--rossa-stroke);
  border-radius: var(--rossa-radius);
}

.rossa-container-filters .rossa-init-checks {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}
.rossa-container-filters .rossa-init-label-spacer { visibility: hidden; }
.rossa-container-filters .rossa-init-checks-row {
  display: flex;
  align-items: center;
  height: 39px;
  gap: 16px;
}

/* Checkboxes: real checkboxes, petrol accent */
.rossa-container-filters .rossa-container-checkbox { align-items: center; gap: 6px; }
.rossa-container-filters .rossa-checkbox {
  -webkit-appearance: auto;
  appearance: auto;
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--rossa-petrol);
  cursor: pointer;
}

/* "Filtrar reservas" (submit): filled petrol, radius 5 */
.rossa-container-filters input.rossa-btn {
  height: 39px;
  margin: 0;
  padding: 10px 15px;
  border: 0;
  border-radius: 5px;
  background-color: var(--rossa-petrol);
  color: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 600;
  line-height: 1 !important;     /* beats legacy 18px !important */
  -webkit-appearance: none;
  appearance: none;
}
.rossa-container-filters input.rossa-btn:hover,
.rossa-container-filters input.rossa-btn:active { background-color: var(--rossa-petrol-dark); }

/* "Añadir reserva" (anchor): filled brand red, radius 5 */
.rossa-container-filters a.rossa-btn {
  height: 39px;
  margin: 0;
  padding: 10px 15px;
  border: 0;
  border-radius: 5px;
  background-color: var(--rossa-red);
  color: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 600;
  line-height: 19px !important;  /* beats legacy 18px !important */
}
.rossa-container-filters a.rossa-btn:hover,
.rossa-container-filters a.rossa-btn:active { background-color: var(--rossa-red-dark); }

/* Fianzas ocultas solo por CSS: HTML y JS quedan intactos, borrar esto devuelve la función. */
.rossa-container-filters .rossa-container-checkbox:has(#rossa-checkbox-bail) { display: none; }
/* Fallback sin :has(): el wrapper sigue en el flujo pero ya no muestra nada */
.rossa-container-filters label[for="rossa-checkbox-bail"],
.rossa-container-filters #rossa-checkbox-bail { display: none; }
#contenido_admin #rossa-box-bail { display: none; }

/* `#filter-bookings input` (ID) de pagina_inicio.css gana a las clases: se vence con más IDs. */
@media (max-width: 480px) {
  #contenido_admin #filter-bookings {
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
  }
  .rossa-container-filters .rossa-init-search {
    width: 100%;
    align-items: stretch;
  }
  #contenido_admin #filter-bookings .rossa-init-field,
  .rossa-container-filters .rossa-init-search .rossa-input {
    width: 100%;
  }
  #contenido_admin #filter-bookings input.rossa-input,
  #contenido_admin #filter-bookings input.rossa-btn {
    width: 100%;
    box-sizing: border-box;
  }
}
@media (min-width: 481px) and (hover: none) and (pointer: coarse) {
  #contenido_admin .rossa-container-filters { flex-wrap: wrap; }
}

/*=============================================================================
  16. SCROLL BUTTONS (#topbottom)
=============================================================================*/
#topbottom {
  position: fixed;
  right: 16px;
  bottom: 24px;                /* centers a 32px button in the ~80px footer */
  top: auto;
  transform: none;
  z-index: 985;                /* just above #footer (980) */
  width: auto;
  display: flex;
  flex-direction: row;
  gap: 8px;
  opacity: 1;
}
#btntop,
#btnbottom {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  background: var(--rossa-white);
  color: var(--rossa-petrol);
  border: 1px solid rgba(32, 92, 104, .35);
  border-radius: 50%;
  box-shadow: none;
  cursor: pointer;
  transition: background-color .15s ease, color .15s ease;
}
#btntop:hover,
#btnbottom:hover {
  background: var(--rossa-petrol);
  color: var(--rossa-white);
}

/*=============================================================================
  17. FEEDBACK MESSAGES  (.mensaje_ok / .mensaje_error / .mensaje_warning)
=============================================================================*/
/* Se conservan las propiedades de layout de lydia.css (display:flex, gaps): solo la piel. */
.mensaje_ok,
.mensaje_error,
.mensaje_warning {
  border: 0;
  border-radius: 8px;
  box-shadow: none;
  padding: 12px 16px;
  margin: 10px 0;
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  text-shadow: none;
  gap: 12px;          /* even spacing between text and action buttons (flex) */
  flex-wrap: wrap;
}
/* Status-tinted boxes (Figma language), not grey strips */
.mensaje_error   { background: var(--rossa-salmon); color: var(--rossa-red); }
.mensaje_ok      { background: #ebf7f3;             color: var(--rossa-green-fig); }
.mensaje_warning { background: #fdf3ec;             color: var(--rossa-coral); }
/* Legacy markup puts <br/><br/> inside the flex bar -> empty flex items: hide */
.mensaje_ok br, .mensaje_error br, .mensaje_warning br { display: none; }
/* .admin_boton legacy trae margin-left:auto y dentro de estos flex separa los botones. */
.mensaje_ok .admin_boton,
.mensaje_error .admin_boton,
.mensaje_warning .admin_boton { margin: 0; }
/* Las anclas tipo botón quedan excluidas: no deben recibir este color de texto. */
.mensaje_error a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative),
.mensaje_error a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):visited     { color: var(--rossa-red);       text-decoration: underline; }
.mensaje_ok a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative),
.mensaje_ok a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):visited        { color: var(--rossa-green-fig); text-decoration: underline; }
.mensaje_warning a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative),
.mensaje_warning a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):visited   { color: var(--rossa-coral);     text-decoration: underline; }
/* Filled buttons inside messages keep readable white text */
.mensaje_ok a.admin_boton, .mensaje_ok a.rossa-btn,
.mensaje_error a.admin_boton, .mensaje_error a.rossa-btn,
.mensaje_warning a.admin_boton, .mensaje_warning a.rossa-btn {
  color: var(--rossa-white);
  text-decoration: none;
}
.rossa-broken-bookings__ids { display: flex; flex-wrap: wrap; gap: 6px 12px; }

/*=============================================================================
  18. LEGACY TABLES — cosmetic Figma alignment (table.estandar & friends)
=============================================================================*/
/* Solo piel: el padding se mantiene cerca del legacy para no descuadrar colspan y anidados. */
table.estandar {
  background: var(--rossa-white);
  border-radius: 5px;
}
@media (max-width: 600px) {
  #contenido_admin table.estandar { width: 100%; }
  #contenido_admin table.estandar[width="33%"] { display: table; width: 100%; }
  
  #contenido_admin table.estandar.rossa-tbl--huespedes {
    display: table;
    width: 100%;
  }
}
table.estandar tr td {
  border: 0;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  padding: 8px 8px;
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);   /* body text token — navy didn't match the white bg */
}
/* Header band: navy-on-white between hairlines (was white-on-navy) */
tr.cab td,
tr.cab th,
table.estandar tr.cab td,
.results-table tr.cab td,
.system-info-table tr.cab td {
  background: var(--rossa-white);
  color: var(--rossa-navy);
  font-family: var(--rossa-font);
  font-weight: 600;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: .03em;
  border: 0;
  /* !important required: lydia.css tr.cab sets border:0 !important */
  border-top: 1px solid var(--rossa-hairline) !important;
  border-bottom: 1px solid var(--rossa-hairline) !important;
  border-radius: 0;
}
/* estandar_v4 (timeline view): gray cells -> white + hairline */
table.estandar_v4 tr:not(.cab) td {
  background: var(--rossa-white);
  border-bottom: 1px solid var(--rossa-hairline-soft);
  border-radius: 0;
}
/* Etiquetas de fila del detalle de timeline (Tipo/Nivel/Destino…) */
table.view_tl tr td.cabtl { color: var(--rossa-ink); }
/* Guardas: fuera las bandas .cab y los colores de fila con estado de estandar_v4. */
.rossa-table--bkg tbody tr:nth-child(even) td,
table.estandar tbody tr:not(.cab):nth-child(even) td,
table.estandar_v4 tbody tr:not(.cab):not(.tr_usos_boards):not(.tr_usos_boards_mov):not(.tr_reservas_lineas):nth-child(even) td,
table.rossa_table_estandar tbody tr:not(.cab):nth-child(even) td,
table.t_notificaciones tbody tr:not(.cab):nth-child(even) td,
.rossa-table tbody tr:nth-child(even) td,
.supplements-table tbody tr:nth-child(even) td,
.system-info-table tbody tr:not(.cab):nth-child(even) td,
.results-table tbody tr:not(.cab):nth-child(even) td {
  background-color: var(--rossa-zebra);
}

table.estandar tr td input[type="text"],
table.estandar tr td input[type="email"],
table.estandar tr td input[type="password"],
table.estandar tr td input[type="number"],
table.estandar tr td input[type="tel"],
table.estandar tr td input[type="search"],
table.estandar tr td input[type="datepicker"],
table.estandar tr td select {
  width: 100%;
  max-width: 320px;
  height: 38px;
  padding: 6px 12px;
  box-sizing: border-box;
}
table.estandar tr td textarea {
  width: 100%;
  max-width: 320px;
  min-height: 80px;
  padding: 6px 12px;
  box-sizing: border-box;
}
table.estandar td input[type="submit"].admin_boton,
table.estandar td button.admin_boton,
#contenido_admin form > input[type="submit"].admin_boton,
#contenido_admin form > .admin_boton {
  display: block;
  margin: 14px auto;
}
#contenido_admin .rossa-sms-precarga-table td form { display: flex; align-items: center; gap: 8px; }
#contenido_admin .rossa-sms-precarga-table td input[type="submit"].admin_boton { display: inline-block; margin: 0; }

#contenido_admin #send-new-sms textarea.full-textarea {
  max-width: none;
  width: 100%;
  height: 160px;
  min-height: 120px;
}
/* direction:rtl invierte el orden visual: sale Volver → Enviar aunque el HTML vaya al revés. */
#contenido_admin #send-new-sms td:has(#new) { text-align: center; direction: rtl; }
#contenido_admin #send-new-sms a.admin_boton,
#contenido_admin #send-new-sms #new {
  float: none; display: inline-block; direction: ltr; vertical-align: middle; margin: 0 6px;
}

#contenido_admin #rtl_filters input[type="datepicker"],
#contenido_admin #rtl_filters input[type="date"],
#contenido_admin #rtl_filters input[type="number"],
#contenido_admin #rtl_filters .rossa-daterange__field,
#contenido_admin #rtl_filters .admin_boton {
  height: 34px;
  box-sizing: border-box;
  vertical-align: bottom;
}
#contenido_admin #rtl_filters input[type="datepicker"],
#contenido_admin #rtl_filters input[type="date"],
#contenido_admin #rtl_filters input[type="number"] {
  padding-top: 0;
  padding-bottom: 0;
}
#contenido_admin #rtl_filters .admin_boton {
  padding-top: 0;
  padding-bottom: 0;
  line-height: 32px;
  margin-left: 0;
  margin-right: 0;
}
#contenido_admin #rtl_filters a.admin_boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: normal;
}
#contenido_admin #rtl_filters a.admin_ko { background-color: var(--rossa-red); border-color: var(--rossa-red); }
#contenido_admin #rtl_filters a.admin_ko:hover { background-color: var(--rossa-red-dark); border-color: var(--rossa-red-dark); }
/* En <=1350px timelineFunctions.php pone .contrtlfilter en columna; lo forzamos a fila. */
#contenido_admin #rtl_filters .contrtlfilter { flex-direction: row; flex-wrap: wrap; align-items: flex-end; }
#contenido_admin #rtl_filters .contrtlfilter > .rtlfilter:not(:last-child) { flex-basis: 100%; }
#contenido_admin #rtl_filters .contrtlfilter > .rtlfilter:last-child:not(:only-child) .rtlfiltertit { display: none; }
#contenido_admin #rtl_filters .contrtlfilter > .rtlfilter:last-child .rtlfiltercont {
  display: flex;
  justify-content: flex-start;
  align-items: center;
  gap: 8px;
}

/* Reserva hueco a la derecha para no tapar el círculo de selección de la esquina. */
#contenido_admin .cuadro_estancia_lotes > p {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding-right: 30px;
  box-sizing: border-box;
  max-width: 100%;
}
/* "Rellenar todos" va sin icono: no hay cubo de pintura en el CDN. */
#contenido_admin .boton_fill_lotes i { font-size: 19px; }

/* lydia coloca el icono de fondo al 90% y en el botón estrecho se solapaba con el texto. */
#contenido_admin a.rdx_btn {
  background-position: right 8px center;
  background-size: 15px;
  padding-right: 30px;
}

/*=============================================================================
  19. JQUERY UI (smoothness 1.9.1) — dialogs, datepicker, autocomplete reskin
=============================================================================*/
.ui-widget { font-family: var(--rossa-font); }
.ui-widget-content {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
.ui-widget-header {
  background: var(--rossa-white);          /* shorthand kills the gradient image */
  border-color: var(--rossa-border);
  color: var(--rossa-navy);
  font-family: var(--rossa-font);
  font-weight: 600;
}
.ui-dialog {
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  box-shadow: 0 18px 50px rgba(0, 48, 60, .25);
  padding: 0;
}
.ui-dialog .ui-dialog-titlebar {
  background: var(--rossa-white);
  border: 0;
  border-bottom: 1px solid var(--rossa-border);
  border-radius: 10px 10px 0 0;
  padding: 12px 16px;
  color: var(--rossa-navy);
}
.ui-dialog .ui-dialog-content { padding: 14px 16px; }
.ui-dialog .ui-dialog-buttonpane {
  border-top: 1px solid var(--rossa-border);
  margin: 0;
  padding: 10px 16px;
}
.ui-dialog .ui-dialog-buttonpane button {
  background: var(--rossa-petrol);
  border: 1px solid var(--rossa-petrol);
  border-radius: 5px;
  color: var(--rossa-white);
  font-family: var(--rossa-font);
  font-weight: 600;
  font-size: 13px;
  padding: 7px 14px;
}
.ui-dialog .ui-dialog-buttonpane button:hover {
  background: var(--rossa-petrol-dark);
  border-color: var(--rossa-petrol-dark);
}
/* Buttons / clickable cells (datepicker days, selectmenu items, ui-buttons) */
.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
  font-weight: 400;
}
.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-focus,
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus {
  background: var(--rossa-strip);
  border: 1px solid var(--rossa-hairline);
  color: var(--rossa-navy);
}
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active {
  background: var(--rossa-petrol);
  border: 1px solid var(--rossa-petrol);
  color: var(--rossa-white);
}
.ui-state-highlight,
.ui-widget-content .ui-state-highlight,
.ui-widget-header .ui-state-highlight {                /* datepicker "today" */
  background: var(--rossa-strip);
  border: 1px solid var(--rossa-green-fig);
  color: var(--rossa-navy);
}
.ui-datepicker .ui-datepicker-header {
  background: var(--rossa-white);
  border: 0;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  border-radius: 0;
}
.ui-datepicker .ui-datepicker-title { color: var(--rossa-navy); }

/*=============================================================================
  20. INICIO BOOKING CARDS
=============================================================================*/
.rossa-card.rossa-filter-card {
  border-radius: 5px;
  border: 1px solid #e6e6e6;
  box-shadow: 0 1px 2px rgba(0, 0, 0, .25);
  padding: 0;            /* anula el padding de §7 .rossa-card */
  overflow: hidden;      /* strip/footer corners clip to the 5px radius */
}
.rossa-card.rossa-filter-card .rossa-card-header {
  border-radius: 5px 5px 0 0;
  overflow: hidden;                  /* clips status-tinted children to radius */
  background: var(--rossa-strip);
  min-height: 40px;
  align-items: center;
  font-family: var(--rossa-font);
}
/* Empty-state placeholder ("No hay ninguna reserva") keeps its navy bar */
.rossa-card.rossa-filter-card .rossa-card-header.rossa-card-header-no-data {
  background: var(--rossa-navy);
}
.rossa-card.rossa-filter-card .rossa-card-body { border-color: #e6e6e6; }
.rossa-card.rossa-filter-card .rossa-card-client {
  border-top: 1px solid #e6e6e6;
  border-bottom: 1px solid #e6e6e6;
  font-family: var(--rossa-font);
}
.rossa-card.rossa-filter-card .rossa-card-client a { color: var(--rossa-cyan-fig); }
.rossa-card.rossa-filter-card .rossa-card-footer {
  border-top: 1px solid #e6e6e6;
  border-radius: 0 0 5px 5px;
}
.rossa-card.rossa-filter-card .rossa-card-estancias,
.rossa-card.rossa-filter-card .rossa-card-services { color: var(--rossa-petrol); }
.rossa-card.rossa-filter-card .rossa-card-huesped { color: var(--rossa-petrol); }
/* Huéspedes completos o check-in marcado a mano: verde */
.rossa-card.rossa-filter-card .rossa-card-huesped.rossa-card-huespedes-completos { color: var(--rossa-pag); }

/* Tarjetas del dashboard de inicio */
.rossa-init-container-bookings .rossa-card.rossa-filter-card .rossa-card-header,
.rossa-reubicaciones-pendientes .rossa-card.rossa-filter-card .rossa-card-header { align-items: stretch; }
.rossa-init-container-bookings .rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-id,
.rossa-init-container-bookings .rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-dates,
.rossa-reubicaciones-pendientes .rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-id,
.rossa-reubicaciones-pendientes .rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-dates {
  display: flex;
  align-items: center;
}
.rossa-init-container-bookings .rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-id,
.rossa-reubicaciones-pendientes .rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-id {
  justify-content: center;
  margin-right: 0;
}
.rossa-reubicaciones-pendientes .rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-id {
  width: auto;
  flex: 0 0 auto;
  padding-left: 12px;
  padding-right: 12px;
}
.rossa-reubicaciones-pendientes .rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-dates {
  justify-content: center;
}

/* El reparto rígido 35%/65% de pagina_inicio.css:454-465 no cuadra con tres columnas. */
/* Con tres columnas el 16px del legacy (pagina_inicio.css:448) no deja pasar las dos fechas. */
.rossa-card.rossa-filter-card .rossa-card-header { font-size: 14px; }
.rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-id {
  width: 22%;
  flex: 0 0 22%;
}
.rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-dates {
  width: auto;
  flex: 1 1 auto;
  min-width: 0;
  padding-left: 10px;
  padding-right: 4px;
}
/* El rango de fechas no debe partirse en dos líneas al ceder sitio a "Noches N" */
.rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-dates > span { white-space: nowrap; }
.rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-nights {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 4px;
  flex: 0 0 auto;
  padding: 4px 10px 4px 4px;
  white-space: nowrap;
  font-weight: 600;
}
/* En tarjetas muy estrechas el icono sobra: el texto "Noches N" ya se explica */
@media screen and (max-width: 420px) {
  .rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-nights i { display: none; }
  .rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-nights { padding-left: 2px; padding-right: 6px; }
}

/* --- Observaciones de la reserva ------------------------------------------*/
#contenido_admin .rossa-card.rossa-filter-card > .rossa-card-observation {
  top: 10px;                  /* (40px de cabecera - 20px de icono) / 2 */
  right: 10px;
  height: 20px;
  width: 20px;
  background-color: transparent;
  border: 0;
  border-radius: 0;
  font-size: 0;               /* oculta la "i" de texto: el glifo lo pone la máscara */
}
#contenido_admin .rossa-card.rossa-filter-card > .rossa-card-observation::before {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  background-color: var(--rossa-white);
  -webkit-mask-image: url("https://cdn.rossa.app/icons/info.svg");  mask-image: url("https://cdn.rossa.app/icons/info.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}
/* solo cuando hay observación: "Noches" se separa del icono */
#contenido_admin .rossa-card.rossa-filter-card:has(> .rossa-card-observation) .rossa-card-header > .rossa-card-nights {
  padding-right: 36px;
}
/* El color va también en la `i`: el icono se pinta con `background-color: currentColor`. */
.rossa-init-container-bookings .rossa-card.rossa-filter-card .rossa-card__client-icons .rossa-btn--icon,
.rossa-reubicaciones-pendientes .rossa-card.rossa-filter-card .rossa-card__client-icons .rossa-btn--icon {
  background-color: var(--rossa-strip);
}
.rossa-init-container-bookings .rossa-card.rossa-filter-card .rossa-card__client-icons .rossa-btn--icon,
.rossa-init-container-bookings .rossa-card.rossa-filter-card .rossa-card__client-icons .rossa-btn--icon i,
.rossa-reubicaciones-pendientes .rossa-card.rossa-filter-card .rossa-card__client-icons .rossa-btn--icon,
.rossa-reubicaciones-pendientes .rossa-card.rossa-filter-card .rossa-card__client-icons .rossa-btn--icon i {
  color: var(--rossa-teal);
}
.rossa-init-container-bookings .rossa-card.rossa-filter-card .rossa-card__client-icons .rossa-btn--icon:hover,
.rossa-reubicaciones-pendientes .rossa-card.rossa-filter-card .rossa-card__client-icons .rossa-btn--icon:hover {
  background-color: var(--rossa-border);
}

/* Entre los segmentos .rossa-card-tag-reubicacion asomaba la tira gris del header. */
.rossa-card.rossa-filter-card .rossa-card-header:has(> .rossa-card-tag-reubicacion) {
  background-color: var(--rossa-coral);
}
.rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-tag-reubicacion {
  background-color: transparent;
}

/*=============================================================================
  21. GLOBAL SMALL BUTTONS  (.rossa-btn / .rossa-btn-negative)
=============================================================================*/
/* Excepciones que ganan solas: §15 y .rossa-btn-primary; .color-orange hay que reafirmarlo. */
.rossa-btn {
  background-color: var(--rossa-green-fig);
  border-radius: 5px;
  font-family: var(--rossa-font);
  font-weight: 600;
  line-height: 16px !important;     /* beats legacy 18px !important */
}
.rossa-btn:hover,
.rossa-btn:active { background-color: var(--rossa-green-dark); }
/* Icon-only chips (clock/SMS/WhatsApp on cards) stay circular */
.rossa-btn.rossa-btn--icon { border-radius: var(--rossa-radius-pill); }
.rossa-btn.color-orange { background-color: #eb5d37; }
.rossa-btn.color-orange:hover { background-color: #d44d2a; }
.rossa-btn.rossa-btn-primary:active { background-color: var(--rossa-red-dark); }
.rossa-btn-negative {
  border: 1px solid var(--rossa-petrol);
  color: var(--rossa-petrol);
  border-radius: 5px;
  font-family: var(--rossa-font);
  font-weight: 600;
}
.rossa-btn-negative:hover,
.rossa-btn-negative:active {
  background-color: var(--rossa-strip);
  border-color: var(--rossa-petrol);
  color: var(--rossa-petrol);
}
/* Generic inputs/selects sharing the Figma hairline-box language */
.rossa-select,
.rossa-input {
  border: 1px solid var(--rossa-hairline);
  border-radius: 0;
  background-color: var(--rossa-white);
  font-family: var(--rossa-font);
  color: var(--rossa-petrol);
}
.rossa-select:focus,
.rossa-input:focus {
  outline: none;
  border-color: var(--rossa-petrol);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}

/*=============================================================================
  22. PANELS & PAGE CHROME
=============================================================================*/
.secciones_tabs {
  border: 0;
  box-shadow: none;
  background: var(--rossa-white);
}
.rossa-init-container { border: 0; background: var(--rossa-white); }
#contenido_padre {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 5px;
}
.admin_tit { border-bottom: 1px solid var(--rossa-border); }
/* Body links: legacy red underlined bold -> brand red, underline on hover */
p a,
ul.instrucciones li a {
  color: var(--rossa-red);
  text-decoration: none;
  font-weight: 600;
}
p a:hover,
ul.instrucciones li a:hover { text-decoration: underline; }
/* Pagination */
.paginacion { font-family: var(--rossa-font); color: var(--rossa-muted); }
.paginacion a {
  color: var(--rossa-petrol);
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 5px;
  text-decoration: none;
}
.paginacion a:hover { background: var(--rossa-strip); color: var(--rossa-petrol); }
.paginacion span { color: var(--rossa-navy); font-weight: 700; }
/* Legacy toggle switch: blue checked state -> Figma green */
input:checked + .slider_switch { background-color: var(--rossa-green-fig); }
/* Legacy yellow form fields -> clean hairline boxes (width/layout untouched) */
.campos input {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-hairline);
  color: var(--rossa-navy);
  font-family: var(--rossa-font);
  font-weight: 500;
}

/*=============================================================================
  23. FORM SURFACES — flat-gray cleanup (#efefef family)
=============================================================================*/
/* Utilidades: .rossa-surface (panel), .rossa-surface--tint, .rossa-surface--strip. */
.rossa-surface {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-hairline-soft);
  border-radius: 5px;
}
.rossa-surface--tint  { background-color: var(--rossa-tint); }
.rossa-surface--strip { background-color: var(--rossa-strip); }

/* --- Add-reserva pricing board (the canonical offender) --- */
.total_reserva {
  background-color: var(--rossa-zebra);
  color: var(--rossa-navy);
  font-family: var(--rossa-font);
  border-bottom: 1px solid var(--rossa-hairline-soft) !important; /* legacy #dedede !important */
}
#contenido_admin .total_reserva {
  border-bottom: 1px solid var(--rossa-hairline-soft) !important;
}
#precio_total_admin_res {
  background-color: var(--rossa-zebra);
  color: var(--rossa-petrol);
  border-bottom: 1px solid var(--rossa-hairline-soft) !important;
}
#contenido_admin .precios_descuento,
#contenido_admin #precio_total_descontado_res {
  background-color: var(--rossa-zebra);
  color: var(--rossa-petrol);
  border-bottom: 1px solid var(--rossa-hairline-soft) !important;
}
/* Wash a la mitad de --rossa-tint: conviven con la botonera fija de add_reserva. */
.reservas_boards tr.tr_usos_boards td,
.reservas_boards tr.tr_usos_boards_mov td,
tr.tr_reservas_lineas td {
  border-bottom: 1px solid var(--rossa-hairline-soft) !important;
}
.reservas_boards tr.tr_usos_boards td,
.reservas_boards tr.tr_usos_boards_mov td {
  background-color: rgba(32, 92, 104, .02);
}
/* Specificity buster del zebra */
table.estandar tbody tr.tr_usos_boards:not(.cab) td,
table.estandar tbody tr.tr_usos_boards_mov:not(.cab) td {
  background-color: rgba(32, 92, 104, .02);
}
/* `table.estandar tr td` volvía ink el texto blanco y el zebra de §18 (0,3,4) tapaba el fondo. */
#contenido_admin .reservas_boards .cab_uso_reserva {
  background-color: var(--rossa-teal) !important;
  color: var(--rossa-white) !important;
}
#contenido_admin .reservas_boards .cab_uso_reserva .uso-title { color: var(--rossa-white) !important; }
/* Estancia SIN disponibilidad */
#contenido_admin .reservas_boards tr.maxshow-0 .cab_uso_reserva {
  background-color: var(--rossa-muted) !important;
  color: var(--rossa-white) !important;
}
#contenido_admin .reservas_boards tr.maxshow-0 .cab_uso_reserva .capacity-label,
#contenido_admin .reservas_boards tr.maxshow-0 .cab_uso_reserva .capacity-value { color: var(--rossa-white); }
/* El icono va sobre un círculo casi blanco: nunca en blanco, sería invisible. */
#contenido_admin .reservas_boards tr.maxshow-0 .cab_uso_reserva .capacity-icon i { color: var(--rossa-muted); }
#contenido_admin .reservas_boards tr:has(input:disabled) td,
#contenido_admin .reservas_boards tr:has(select:disabled) td {
  background-color: var(--rossa-surface);
  color: var(--rossa-muted);
}
#contenido_admin .reservas_boards tr:has(input:disabled) td a,
#contenido_admin .reservas_boards tr:has(select:disabled) td a { color: var(--rossa-muted); }
#contenido_admin .reservas_boards tr:has(input:disabled) input:disabled,
#contenido_admin .reservas_boards tr:has(select:disabled) select:disabled {
  background-color: var(--rossa-surface);
  border-color: var(--rossa-border);
  color: var(--rossa-muted);
  opacity: 1;   /* el gris ya lo da el color, no un lavado del navegador */
}
/* §18 estira estos inputs a 320px y lydia da flex:1 + min-width:200px a cada columna. */
#contenido_admin .subtitle-tr td {
  background-color: var(--rossa-white) !important;
  color: var(--rossa-navy) !important;
  font-family: var(--rossa-font);
  font-weight: 600;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: .03em;
  text-align: left;
  border-radius: 0;
  padding: 8px 8px;
  border-top: 1px solid var(--rossa-hairline) !important;
  border-bottom: 1px solid var(--rossa-hairline) !important;
}
#contenido_admin .subtitle-tr td span { color: var(--rossa-navy) !important; }
#contenido_admin .guest-count .guest-input { width: 72px; max-width: 72px; text-align: center; }
/* Layout fijo: Adultos y Menores no crecen ni se parten; las edades van en su propia línea. */
#contenido_admin .guest-info-row { flex-wrap: wrap; align-items: flex-start; justify-content: left; gap: 15px 40px; }
#contenido_admin .guest-info-col { flex: 0 0 auto; min-width: 0; text-align: center; }
#contenido_admin .guest-info-row .minor-ages { flex: 1 0 100%; display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 12px; }
#contenido_admin .guest-info-col .guest-type,
#contenido_admin .guest-info-col .guest-count { justify-content: center; }
#contenido_admin #cod-descuento-tipo { width: 150px; max-width: 150px; }
#contenido_admin #concepto_descuento { width: 150px; max-width: 150px; }
#contenido_admin #cod-valor { width: 80px; max-width: 80px; text-align: right; }
/* vertical-align:top: sin él los pies de cada grupo empujan los controles fuera de línea. */
#contenido_admin .ser-cell .ser-price,
#contenido_admin .ser-cell .ser-qty {
  display: inline-flex; flex-direction: column; align-items: center; gap: 4px;
  vertical-align: top; width: 96px;
}
#contenido_admin .ser-cell .ser-price { margin-right: 20px; }
/* Ancho de columna fijo: sin él la columna crece con el pie "máx. total N" y descentra. */
#contenido_admin .ser-cell .ser-qty select.num_habs { width: 72px; max-width: 72px; }
#contenido_admin .ser-cell .ser-unit,
#contenido_admin .ser-cell .ser-max {
  color: var(--rossa-muted); font-size: 12px;
  white-space: nowrap; text-align: center;
}
#contenido_admin .descuento-campos {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: start;
  gap: 8px 10px;
}
#contenido_admin .descuento-campos .desc-tipo-label { font-weight: 600; color: var(--rossa-ink); }
#contenido_admin .suplemento-info {
  background: var(--rossa-tint);
  border-left: 3px solid var(--rossa-teal);
  box-shadow: none;
  color: var(--rossa-muted);
}
#contenido_admin .suplemento-info i,
#contenido_admin .suplemento-info strong { color: var(--rossa-teal); }
#contenido_admin .supplement-info {
  background: none;
  border-left: 0;
  border-radius: 5px;
  text-align: left;
}
#contenido_admin .supplement-header,
#contenido_admin .supplement-header i { color: var(--rossa-teal); }
#contenido_admin .supplement-amount { color: var(--rossa-ink); }
#contenido_admin .guests-info { border-color: var(--rossa-border); }
#contenido_admin .precios,
#contenido_admin .suplemento-precio { color: var(--rossa-petrol); }
#contenido_admin .total-separator-tr td:after { background-color: var(--rossa-hairline-soft); }
#contenido_admin .total-separator-tr td { background-color: transparent !important; }
tr.errorpar td { background-color: var(--rossa-tint); border-bottom: 1px solid var(--rossa-hairline-soft); }
#contenido_admin table.estandar.reservas_lineas tbody.rossa-uso-tbody--odd tr:not(.cab) td {
  background-color: var(--rossa-white);
}
#contenido_admin table.estandar.reservas_lineas tbody.rossa-uso-tbody--even tr:not(.cab) td {
  background-color: var(--rossa-tbl-zebra);
}

/* --- ver_reserva.css surfaces --- */
.rossa-separator--new   { background-color: var(--rossa-hairline-soft); }
.rossa-table tbody tr:nth-child(odd)  { background-color: var(--rossa-white); }
.rossa-table tbody tr:nth-child(even) { background-color: var(--rossa-tint); }
.rossa-btn--destacado,
.rossa-btn--destacado:hover,
.rossa-btn--destacado:active { background-color: var(--rossa-strip); }

.rossa-table tbody td {
  background-color: var(--rossa-white);
  border-bottom: 1px solid var(--rossa-hairline-soft);
}

/* --- Generic gray panels / utility blocks (lydia.css) --- */
.secart,
.bloqueconfig {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-hairline-soft);
  border-radius: 5px;
}
.grayBlock { background-color: var(--rossa-strip); }
.blonewtl  { background-color: var(--rossa-white); border: 1px solid var(--rossa-hairline-soft); }
#mensajetextos {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 8px;
  box-shadow: var(--rossa-shadow);
}

/* --- Lotes / availability grids: gray input fills -> hairline boxes --- */
.campo_editable_lotes,
.cierre_editable_lotes,
.campo_tipo_lotes,
#tipo_dispestancia_lotes_global,
#cierre_lotes_global,
#checkinout_disponible_global {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-hairline-soft);
}
.lote_disp, .lote_precio, .lote_mindia { background-color: var(--rossa-tint); }
div#contenedor_creador_lotes select,
div#contenedor_creador_lotes input,
.tipo_precio_lotes {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-hairline-soft);
}
.day_calendar input { background-color: var(--rossa-white); border: 1px solid var(--rossa-hairline-soft); }

/* --- Setup wizard (complete_setup.css) --- */
.section, .room-container, .use-container {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-hairline-soft);
}
.stay-header, .room-header, .use-header { background-color: var(--rossa-strip); }
.multi-language-field label { background-color: var(--rossa-strip); }
.language-tab { background-color: var(--rossa-white); border-color: var(--rossa-hairline-soft); }

/* --- Form components / selector tables --- */
.services-selector th,
.physical-rooms-field th {
  background-color: var(--rossa-white);
  color: var(--rossa-navy);
  border-bottom: 1px solid var(--rossa-hairline);
}
.services-selector tr:nth-child(even),
.physical-rooms-field tr:nth-child(even) { background-color: var(--rossa-tint); }

/* --- Config suplementos / DB maintenance / iCal --- */
.batch-edit-panel,
.results-container {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-hairline-soft);
}
.supplements-table th {
  background-color: var(--rossa-white);
  color: var(--rossa-navy);
  border-bottom: 1px solid var(--rossa-hairline);
}
.results-table tr:nth-child(even) { background-color: var(--rossa-tint); }
.results-table tr:hover { background-color: var(--rossa-strip); }
.ical-admin .table th,
#logsContent .table th {
  background-color: var(--rossa-white);
  color: var(--rossa-navy);
  border-bottom: 1px solid var(--rossa-hairline);
}
.ical-admin .table input[type="text"] { background-color: var(--rossa-white); }

/* --- Simple-table selects (gray pills) --- */
table.rossa_table_estandar select {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-hairline);
  border-radius: 0;
}
#form_add_services select[id^="iva-other-service_"] {
  width: fit-content;
}

/* --- gestion_reservas badges built on #ECF0F1 --- */
.rossa-bkg__content { background-color: var(--rossa-strip); }
.rossa-bkg__child-triangle { border-color: var(--rossa-strip) transparent transparent transparent; }

/* --- PHP-emitted inline grays (need !important to beat style="...") --- */
tr[style*="ECF0F1"] { background-color: var(--rossa-tint) !important; }       /* add_services_current.php */
.condition-row, .custom-field-row { background-color: var(--rossa-white) !important; border: 1px solid var(--rossa-hairline-soft) !important; }
.shortcodes-legend { background-color: var(--rossa-strip) !important; }
/* asigProfiles in-body <style> hover — beatable: rossa.css loads after it */
#perfiles_fact tbody tr:hover { background-color: var(--rossa-strip); }
/* Reservation cards: 20px pill radius -> cleaner 10px (header/footer inherit) */
.rossa-card.rossa-filter-card { border-radius: 10px; border-color: var(--rossa-border); }

/*=============================================================================
  24. FEEDBACK — alerts inline (shared building block)
=============================================================================*/
.rossa-alert {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700; /* Work Sans only loads 100/400/700: 600 would be faux-bold */
  color: var(--rossa-ink);
  background: var(--rossa-surface-2);
  border: 1px solid var(--rossa-border);
  border-left: 4px solid var(--rossa-muted);
  border-radius: var(--rossa-radius);
  padding: 12px 16px;
  margin: 10px 0;
}
.rossa-alert i { margin-top: 1px; }
.rossa-alert--success { border-left-color: var(--rossa-green); background: #ebf7f3; }
.rossa-alert--success i { color: var(--rossa-green); }
.rossa-alert--error   { border-left-color: var(--rossa-red); background: var(--rossa-salmon); }
.rossa-alert--error i { color: var(--rossa-red); }
.rossa-alert--warning { border-left-color: var(--rossa-coral); background: #fdf3e7; }
.rossa-alert--warning i { color: var(--rossa-coral); }
.rossa-alert--info    { border-left-color: var(--rossa-cyan); background: #eef6fa; }
.rossa-alert--info i  { color: var(--rossa-cyan); }

#contenido_admin p.ok,
#contenido_admin div.ok,
#contenido_admin p.error,
#contenido_admin div.error,
#contenido_admin p.mensaje_error {
  display: block;
  width: auto;
  font-family: var(--rossa-font);
  font-size: 14px;
  background: #ebf7f3;
  border: 1px solid var(--rossa-border);
  border-left: 4px solid var(--rossa-green);
  border-radius: var(--rossa-radius);
  color: var(--rossa-ink);
  padding: 12px 16px;
  margin: 10px 0;
}
#contenido_admin p.error,
#contenido_admin div.error,
#contenido_admin p.mensaje_error {
  background: var(--rossa-salmon);
  border-left-color: var(--rossa-red);
}

/* Texto ink: blanco sobre #19ac8a queda en 2.87:1, por debajo del AA 4.5:1. */
.rossa-tag--green { background-color: var(--rossa-green); color: var(--rossa-ink); border-color: var(--rossa-green); }
/* Outline/soft tag (e.g. roles regulares) */
.rossa-tag--soft { background-color: var(--rossa-white); color: var(--rossa-muted); border-color: var(--rossa-border); }

/* Ghost secondary button (Cancelar / acciones secundarias) */
.admin_boton--ghost {
  background-color: var(--rossa-white);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
.admin_boton--ghost:hover {
  background-color: var(--rossa-surface);
  border-color: #c7cfcf;
  color: var(--rossa-ink);
}

/*=============================================================================
  25. SCREEN: User manager (list + edit)
=============================================================================*/
/* .rossa-toggle, no .rossa-switch: ese nombre ya existe en rossa_components.css. */

/* --- List view -------------------------------------------------------- */
.rossa-users-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin: 18px 0 6px;
}
.rossa-users-toolbar .rossa-field { display: inline-flex; align-items: center; gap: 8px; }
.rossa-users-toolbar label {
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 13px;
  color: var(--rossa-ink);
}
/* "Add user" button: left-aligned, below the filters */
.rossa-users-actions { margin: 14px 0 6px; }
.rossa-users-count {
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-muted);
  margin: 4px 0 10px;
}
.rossa-table-scroll { overflow-x: auto; }

.rossa-table--usuarios thead th {
  color: var(--rossa-muted);
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: .04em;
}
.rossa-table--usuarios td { font-family: var(--rossa-font); font-size: 14px; }
/* AA contrast for the gray pill on these screens (base §5 untouched) */
.rossa-table--usuarios .rossa-tag--gray,
.rossa-perm .rossa-tag--gray { color: var(--rossa-ink); }
.rossa-table--usuarios .rossa-users-muted { color: var(--rossa-muted); }
/* Inactive user row: dimmed */
.rossa-table--usuarios tr.rossa-users-row--off td { opacity: .62; }
/* Actions column aligned to the right */
.rossa-table--usuarios th:last-child,
.rossa-table--usuarios td:last-child { text-align: right; }
@media (max-width: 700px) {
  .rossa-table--usuarios th,
  .rossa-table--usuarios td,
  .rossa-table--usuarios th:last-child,
  .rossa-table--usuarios td:last-child { text-align: center; }
}

/* Per-row action buttons: icon ghost buttons */
.rossa-iconbtn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--rossa-radius);
  border: 1px solid transparent;
  background: transparent;
  color: var(--rossa-teal);
  font-size: 16px;
  cursor: pointer;
  text-decoration: none !important;
  transition: background-color .15s ease, color .15s ease;
}
/* Specificity buster: `#contenido_admin a:link` (1,1,1); mismo peso, gana por orden. */
#contenido_admin a.rossa-iconbtn,
#contenido_admin a.rossa-iconbtn:link,
#contenido_admin a.rossa-iconbtn:visited,
#contenido_admin a.rossa-iconbtn:hover { color: var(--rossa-teal); }
.rossa-iconbtn:hover { background: rgba(0, 94, 102, .10); }
.rossa-iconbtn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .25);
}
.rossa-iconbtn--danger,
#contenido_admin a.rossa-iconbtn--danger,
#contenido_admin a.rossa-iconbtn--danger:link,
#contenido_admin a.rossa-iconbtn--danger:visited,
#contenido_admin a.rossa-iconbtn--danger:hover { color: var(--rossa-red); }
.rossa-iconbtn--danger:hover { background: var(--rossa-salmon); }
.rossa-iconbtn--danger:focus-visible { box-shadow: 0 0 0 3px rgba(231, 0, 76, .25); }
.rossa-iconbtn--muted { color: var(--rossa-muted); }
.rossa-iconbtn--muted:hover { background: var(--rossa-surface); color: var(--rossa-ink); }

.rossa-edituser-top-back { display: none; }

/* --- Edit view: panel layout ------------------------------------------ */
.rossa-users-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
  margin-top: 14px;
}
@media (max-width: 1200px) {
  .rossa-users-grid { grid-template-columns: minmax(0, 1fr); }
}
/* No content for the right column (non-superuser editing themselves) */
.rossa-users-grid--single { grid-template-columns: minmax(0, 1fr); }
.rossa-users-grid__col { display: flex; flex-direction: column; gap: 18px; min-width: 0; }

.rossa-panel {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: var(--rossa-shadow);
  overflow: hidden;
}
.rossa-panel__head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 18px;
  background: var(--rossa-surface-2);
  border-bottom: 1px solid var(--rossa-border);
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 14px;
  color: var(--rossa-teal);
}
.rossa-panel__head i { font-size: 14px; }
.rossa-panel__head .rossa-panel__aside {
  margin-left: auto;
  font-weight: 400;
  font-size: 12px;
  color: var(--rossa-muted);
}
.rossa-panel__body { padding: 16px 18px; }

/* Collapsible panels: clickable header + rotating chevron */
.rossa-panel--collapsible > .rossa-panel__head {
  cursor: pointer;
  user-select: none;
}
.rossa-panel--collapsible > .rossa-panel__head:hover { background: var(--rossa-surface); }
.rossa-panel--collapsible > .rossa-panel__head:focus-visible {
  outline: none;
  box-shadow: inset 0 0 0 3px rgba(0, 94, 102, .25);
}
.rossa-panel__chevron {
  margin-left: 10px;
  color: var(--rossa-muted) !important;
  transition: transform .15s ease;
  flex: 0 0 auto;
}
/* With no aside (counter), the chevron pushes itself to the right */
.rossa-panel__head > .rossa-panel__chevron:last-child { margin-left: auto; }
.rossa-panel__head .rossa-panel__aside + .rossa-panel__chevron { margin-left: 10px; }
.rossa-panel--collapsed > .rossa-panel__body { display: none; }
.rossa-panel--collapsed > .rossa-panel__head .rossa-panel__chevron { transform: rotate(-90deg); }

.rossa-panel__intro {
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-muted);
  margin: 0 0 14px;
}

/* Form rows: label on the left, control on the right */
.rossa-form-row {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 8px 0;
}
.rossa-form-row > label,
.rossa-form-row > .rossa-form-label {
  flex: 0 0 150px;
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 13px;
  color: var(--rossa-ink);
  padding-top: 9px;
}
.rossa-form-row > div { flex: 1 1 auto; min-width: 0; }
.rossa-form-row input[type="text"],
.rossa-form-row input[type="email"],
.rossa-form-row input[type="password"] {
  width: 100%;
  max-width: 360px;
  padding: 8px 14px;
  box-sizing: border-box; /* without this, padding widens each field differently */
}
@media (max-width: 640px) {
  .rossa-form-row { flex-direction: column; gap: 4px; }
  .rossa-form-row > label, .rossa-form-row > .rossa-form-label { flex-basis: auto; padding-top: 0; }
  .rossa-form-row > div { width: 100%; }
}
.rossa-help {
  font-family: var(--rossa-font);
  font-size: 12px;
  color: var(--rossa-muted);
  line-height: 1.45;
}
.rossa-help--error { color: var(--rossa-red); }

/* Password field: two icon buttons INSIDE the field (generate + eye) */
.rossa-passfield { position: relative; max-width: 360px; }
.rossa-passfield input { width: 100%; padding-right: 76px !important; box-sizing: border-box; }
/* Edge adds its own native reveal eye: hide it so we don't show two */
.rossa-passfield input::-ms-reveal,
.rossa-passfield input::-ms-clear { display: none; }
.rossa-passfield__btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  border: 0;
  background: transparent;
  color: var(--rossa-muted);
  cursor: pointer;
  width: 32px;
  height: 32px;
  border-radius: var(--rossa-radius);
}
.rossa-passfield__btn--eye { right: 4px; }
.rossa-passfield__btn--generate { right: 38px; }

/* jquery-validate marca los campos con .error, que hereda width/padding globales. */
.rossa-form-row input.error,
.rossa-passfield input.error {
  width: 100% !important;
  margin: 0 !important;
  padding: 8px 14px !important;
  border: 1px solid var(--rossa-red) !important;
  border-radius: var(--rossa-radius) !important;
  box-shadow: 0 0 0 3px rgba(231, 0, 76, .12);
  background-color: var(--rossa-white);
}
.rossa-passfield input.error { padding-right: 76px !important; }
/* La etiqueta que inyecta jquery-validate hereda la misma caja. */
.rossa-form-row label.error {
  display: block;
  width: auto !important;
  margin: 6px 0 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent;
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-red);
  text-align: left;
}
.rossa-passfield__btn:hover { color: var(--rossa-teal); background: var(--rossa-surface); }
.rossa-passfield__btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .25);
}

/* Las clases de estado llevan prefijo is- para no chocar con las globales .ok/.error. */
.rossa-pass-checks {
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
  font-family: var(--rossa-font);
  font-size: 12px;
  color: var(--rossa-muted);
}
.rossa-pass-checks li {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 0;
  padding: 2px 0;
  background: transparent;
  border: 0;
  width: auto;
  text-align: left;
  cursor: default;
}
.rossa-pass-checks li i { width: 14px; text-align: center; font-size: 11px; }
.rossa-pass-checks li.is-ok { color: var(--rossa-green); }
.rossa-pass-checks li.is-ko { color: var(--rossa-red); }

/* Toggle (Active) — distinct name so it doesn't clash with .rossa-switch */
.rossa-toggle { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; }
.rossa-toggle input { position: absolute; opacity: 0; width: 0; height: 0; }
.rossa-toggle__track {
  position: relative;
  width: 44px;
  height: 24px;
  border-radius: 999px;
  background: #c9d1d3;
  transition: background-color .15s ease;
  flex: 0 0 auto;
}
.rossa-toggle__track::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--rossa-white);
  box-shadow: 0 1px 2px rgba(0,0,0,.25);
  transition: left .15s ease;
}
.rossa-toggle input:checked + .rossa-toggle__track { background: var(--rossa-green); }
.rossa-toggle input:checked + .rossa-toggle__track::after { left: 23px; }
.rossa-toggle input:focus-visible + .rossa-toggle__track { box-shadow: 0 0 0 3px rgba(0, 94, 102, .25); }
.rossa-toggle__text { font-family: var(--rossa-font); font-weight: 700; font-size: 13px; color: var(--rossa-ink); }

/* --- Edit view: permissions catalogue --------------------------------- */
.rossa-perm-tools {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 18px;
  margin-bottom: 10px;
}
.rossa-perm-tools__group {
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1 1 220px;
  max-width: 340px;
  min-width: 0;
}
.rossa-perm-tools__group .rossa-help { margin-top: 0; }
.rossa-perm-tools select,
.rossa-perm-tools input[type="search"] { padding: 7px 12px; box-sizing: border-box; width: 100%; }
.rossa-perm-tools label {
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 13px;
  color: var(--rossa-ink);
}
.rossa-perm-tools label i { color: var(--rossa-teal); margin-right: 4px; }
.rossa-perm-counter {
  margin-left: auto;
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-teal);
  background: rgba(0, 94, 102, .08);
  border-radius: var(--rossa-radius-pill);
  padding: 6px 12px;
  white-space: nowrap;
}

.rossa-perm-cat { margin-bottom: 6px; }
.rossa-perm-cat__title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 13px;
  color: var(--rossa-teal);
  border-bottom: 2px solid var(--rossa-teal);
  padding: 6px 2px;
  margin: 12px 0 6px;
}
.rossa-perm-cat__title .rossa-perm-cat__count { margin-left: auto; color: var(--rossa-muted); font-weight: 400; font-size: 12px; }

.rossa-perm {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 9px 8px;
  border-radius: var(--rossa-radius);
  cursor: pointer;
  transition: background-color .12s ease;
}
.rossa-perm:hover { background: var(--rossa-surface-2); }
.rossa-perm input[type="checkbox"] {
  flex: 0 0 auto;
  width: 17px;
  height: 17px;
  margin-top: 2px;
  accent-color: var(--rossa-teal);
  cursor: pointer;
}
.rossa-perm__body { flex: 1 1 auto; min-width: 0; }
.rossa-perm__name {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 14px;
  color: var(--rossa-ink);
}
.rossa-perm__name i { font-size: 13px; color: var(--rossa-muted); }
.rossa-perm__desc {
  font-family: var(--rossa-font);
  font-size: 12.5px;
  color: var(--rossa-muted);
  line-height: 1.45;
  margin-top: 2px;
}
.rossa-perm__code {
  font-family: Consolas, Menlo, monospace;
  font-size: 11px;
  color: var(--rossa-muted);
  background: var(--rossa-surface);
  border: 1px solid var(--rossa-border);
  border-radius: 4px;
  padding: 1px 6px;
}
.rossa-perm--legacy .rossa-perm__name { color: var(--rossa-muted); }
.rossa-perm--legacy { border: 1px dashed var(--rossa-border); }
.rossa-perm--hidden { display: none; }

/* Scope / fees / payment methods (superuser-only panels) */
.rossa-users-scope-choice { display: flex; gap: 18px; margin-bottom: 12px; }
.rossa-users-scope-choice label {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 13px;
  color: var(--rossa-ink);
  cursor: pointer;
}
.rossa-users-scope-choice input[type="radio"] { accent-color: var(--rossa-teal); }
.rossa-users-checklist label {
  display: flex;
  align-items: center;
  gap: 9px;
  font-family: var(--rossa-font);
  font-size: 13.5px;
  color: var(--rossa-ink);
  padding: 5px 6px;
  border-radius: var(--rossa-radius);
  cursor: pointer;
}
.rossa-users-checklist label:hover { background: var(--rossa-surface-2); }
.rossa-users-checklist input[type="checkbox"] { accent-color: var(--rossa-teal); width: 16px; height: 16px; }

/* El pie ocupa la columna del menú (left:0 / width:260px): la barra arranca en left:260px. */
.rossa-form-actions {
  position: fixed;
  left: 260px;                    /* = #menu width; clears the footer column */
  right: 0;
  bottom: 0;
  z-index: 981;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin: 0;
  padding: 14px 20px;
  background: var(--rossa-surface-2);
  border-top: 1px solid var(--rossa-border);
  box-shadow: 0 -2px 10px rgba(20, 40, 60, .07);
  box-sizing: border-box;
  transition: left .7s ease;      /* follows the #menu collapse in lockstep */
}
/* Follow the collapsed sidebar, same as #footer */
body.showhidemenu .rossa-form-actions { left: 60px; }
@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  /* botonera a ancho completo en móvil/tablet sin ratón (independiente del estado del menú) */
  .rossa-form-actions,
  body.showhidemenu .rossa-form-actions { left: 0; }
  /* aparta el botón flotante de DevTools (errorVysor) para que no tape la botonera */
  body:has(.rossa-form-actions) .dvt-toggle { bottom: 84px !important; }
  /* responsive.css declara `#contenido_admin */
  #contenido_admin:has(.rossa-form-actions) { padding-bottom: 84px !important; }
}
/* La barra es fixed (fuera de flujo): se reserva hueco para que no tape el último panel. */
#contenido_admin:has(.rossa-form-actions) { padding-bottom: 84px; }

/* Vence a los valores heredados de .admin_boton y de input/button.admin_boton. */
.rossa-form-actions .admin_boton {
  margin: 0;
  min-width: 110px;
  padding: 9px 16px;
}

.rossa-form-actions:has(#reservar),
.rossa-form-actions:has(#finalizar),
.rossa-form-actions:has(#volver_reserva),
.rossa-form-actions:has(#volver_habitaciones),
.rossa-form-actions:has(#volver_estancias_servicios) {
  background: var(--rossa-white);
}
.rossa-form-actions #reservar,
.rossa-form-actions #finalizar,
.rossa-form-actions #volver_reserva,
.rossa-form-actions #volver_habitaciones,
.rossa-form-actions #volver_estancias_servicios {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 180px;
  height: 30px;
  margin: 0;
  padding: 0 16px;
  border: 1.5px solid var(--rossa-petrol) !important;
  border-radius: 5px;
  background: var(--rossa-white);
  box-shadow: none;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  text-align: center;
  color: var(--rossa-petrol);
  transition: background-color .15s ease, color .15s ease;
}
.rossa-form-actions #reservar:hover:not(:disabled),
.rossa-form-actions #finalizar:hover:not(:disabled),
.rossa-form-actions #volver_reserva:hover,
.rossa-form-actions #volver_habitaciones:hover:not(:disabled),
.rossa-form-actions #volver_estancias_servicios:hover:not(:disabled) {
  background: var(--rossa-petrol);
  color: var(--rossa-white);
}
.rossa-form-actions #reservar[disabled],
.rossa-form-actions #reservar:disabled,
.rossa-form-actions #finalizar[disabled],
.rossa-form-actions #finalizar:disabled,
.rossa-form-actions #volver_habitaciones[disabled],
.rossa-form-actions #volver_habitaciones:disabled,
.rossa-form-actions #volver_estancias_servicios[disabled],
.rossa-form-actions #volver_estancias_servicios:disabled {
  background: var(--rossa-surface) !important;
  border: 1px solid var(--rossa-border) !important;
  color: var(--rossa-muted) !important;
  cursor: not-allowed;
  opacity: 1;
}
/* En PC solo texto (sin icono); en móvil solo icono. El texto es un nodo de texto suelto
   (sin span), así que se colapsa con font-size:0 en vez de ocultarlo por marcado. */
.rossa-form-actions #reservar i,
.rossa-form-actions #finalizar i,
.rossa-form-actions #volver_reserva i,
.rossa-form-actions #volver_habitaciones i,
.rossa-form-actions #volver_estancias_servicios i {
  display: none;
}
@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  .rossa-form-actions #reservar,
  .rossa-form-actions #finalizar,
  .rossa-form-actions #volver_reserva,
  .rossa-form-actions #volver_habitaciones,
  .rossa-form-actions #volver_estancias_servicios {
    font-size: 0;
    width: 180px;
    min-width: 0;
    gap: 0;
  }
  .rossa-form-actions #reservar i,
  .rossa-form-actions #finalizar i,
  .rossa-form-actions #volver_reserva i,
  .rossa-form-actions #volver_habitaciones i,
  .rossa-form-actions #volver_estancias_servicios i {
    display: inline-block !important;
    font-size: 14px;
  }
  #volver_reserva i::before {
    -webkit-mask-image: url("https://cdn.rossa.app/icons/x.svg");
            mask-image: url("https://cdn.rossa.app/icons/x.svg");
  }
}

#contenido_admin.isiframe .rossa-form-actions {
  left: 0;
}
#contenido_admin.isiframe table:has(+ .rossa-form-actions) {
  margin-bottom: 90px;
}
#contenido_admin.isiframe:has(#finalizar) {
  margin-bottom: 90px;
}

#contenido_admin .rossa-add-reserva-dates {
  margin-bottom: 18px;
}
#contenido_admin .rossa-add-reserva-dates__title {
  margin: 0 0 14px;
  font-family: var(--rossa-font);
  font-weight: 600;
  font-size: 18px;
  letter-spacing: .03em;
  color: var(--rossa-navy);
  text-align: left;
}
#contenido_admin .rossa-add-reserva-dates__title--client {
  text-align: center;
  text-transform: uppercase;
}
#contenido_admin .rossa-client-cards-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin: 0 0 18px;
}
#contenido_admin .rossa-client-cards-row:has(+ .rossa-client-cards-row) {
  margin-bottom: 0;
}
#contenido_admin .rossa-client-cards-row + .rossa-client-cards-row {
  margin-top: 14px;
}
#contenido_admin .rossa-client-card {
  min-width: 0;
  box-sizing: border-box;
  padding: 18px 20px;
  border: 1px solid var(--rossa-db-500);
  border-radius: var(--rossa-radius);
}
#contenido_admin .rossa-client-card--double {
  grid-column: span 2;
}
#contenido_admin .rossa-client-card__table {
  width: 100%;
  border-collapse: collapse;
}
#contenido_admin .rossa-client-card__table td {
  padding: 10px 0;
  vertical-align: middle;
  border: 0;
}
#contenido_admin .rossa-client-card__table tr:has(textarea) td {
  vertical-align: top;
}
#contenido_admin .rossa-client-card__title {
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 16px;
  color: var(--rossa-petrol);
  text-align: left;
}
#contenido_admin .rossa-client-card__table td.rossa-client-card__label-cell {
  width: 1%;
  white-space: nowrap;
  padding-right: 16px;
}
#contenido_admin .rossa-client-card__label {
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-client-card__input {
  width: 100%;
  max-width: none;
  min-width: 0;
  min-height: 36px;
  padding: 6px 10px;
  box-sizing: border-box;
  font-family: var(--rossa-font);
  font-size: 13px;
  border: 1px solid var(--rossa-navy) !important;
  border-radius: 0 !important;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
}
#contenido_admin select.rossa-client-card__input {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background-color: var(--rossa-white);
  background-image: url("https://cdn.rossa.app/icons/chevron-down.svg?bg");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 14px 14px;
  padding-right: 30px;
}
#contenido_admin #loca:disabled {
  border-color: var(--rossa-db-500) !important;
}
#contenido_admin .rossa-client-card__table td.rossa-client-card__label-cell.rossa-client-card__label-cell--wrap {
  white-space: normal;
}
#contenido_admin .rossa-client-card--split {
  display: flex;
  gap: 20px;
  align-items: stretch;
  height: 100%;
}
#contenido_admin .rossa-client-card--split .rossa-client-card__col {
  flex: 1 1 0;
  min-width: 0;
}
#contenido_admin .rossa-client-card__col--tarjeta {
  margin-top: 40px;
}
#contenido_admin .rossa-client-card__tarjeta-icons {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
#contenido_admin .rossa-client-card__hidden-field {
  display: none;
}
#contenido_admin .rossa-add-reserva-dates__actions {
  margin-top: 4px;
}
#contenido_admin .rossa-add-reserva-dates__period-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
}
#contenido_admin .rossa-add-reserva-dates__period-row .rossa-daterange {
  flex: 1 1 200px;
  min-width: 200px;
}
#contenido_admin .rossa-add-reserva-dates__period-row #busca_disponible {
  flex: 1 1 200px;
  min-width: 200px;
}
#rossa-add-reserva-rango .rossa-daterange__field {
  width: 100%;
}
#rossa-add-reserva-rango .rossa-daterange__field::after {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-days.svg");
          mask-image: url("https://cdn.rossa.app/icons/calendar-days.svg");
}
/* Datos del cliente / Pago y facturación (paso 3): mismos filtros que "Datos de la reserva",
   pero un textarea (Observaciones, Datos de la tarjeta) ocupa toda la fila. */
#contenido_admin .rossa-add-reserva-dates.table_datos_clientes .filter-container--wide {
  flex: 1 1 100%;
}
#contenido_admin .rossa-add-reserva-dates.table_datos_clientes textarea.rossa-input {
  min-height: 80px;
  padding: 6px 10px;
  box-sizing: border-box;
  font-family: var(--rossa-font);
  font-size: 13px;
  border: 1px solid var(--rossa-stroke);
}
/* "Nombre y apellidos" (class.automatic.php:suggest_box, .sugg_auto) */
#contenido_admin .rossa-client-card__table .sugg_auto {
  margin: 0;
  width: 100%;
  max-width: none;
  min-height: 36px;
  padding: 6px 30px 6px 10px;
  box-sizing: border-box;
  font-family: var(--rossa-font);
  font-size: 13px;
  border: 1px solid var(--rossa-navy) !important;
  border-radius: 0 !important;
}
/* La capa de sugerencias (.auto_display) es position:absolute sin top/left propio (lydia.css): */
#contenido_admin .rossa-client-card__table td:has(.sugg_auto) {
  position: relative;
}
#contenido_admin .rossa-client-card__table .auto_display {
  top: 100%;
  left: 0;
  width: 100%;
  max-width: none;
  margin-top: 4px;
}
/* Datos de la tarjeta: sus 4 inputs */
/* Teléfono (includes/functions.php:getHtmlPhones, telefonos.css): select de prefijo (select2) +
   input en una sola fila, ocupando entre los dos lo mismo que cualquier otro input del filtro. */
#contenido_admin .rossa-add-reserva-dates.table_datos_clientes .rossa-container-phone {
  flex-wrap: nowrap;
}
#contenido_admin .rossa-add-reserva-dates.table_datos_clientes .rossa-container-input {
  flex: 1 1 auto;
  min-width: 0;
}
#contenido_admin .rossa-add-reserva-dates.table_datos_clientes .rossa-select-phone-prefix {
  width: 70px;
}
#contenido_admin .rossa-add-reserva-dates.table_datos_clientes .rossa-container-prefix .select2-container {
  width: 70px !important;
}
body:has(.table_datos_clientes) .select2-dropdown:has(#select2-id_pais_telefono-results) {
  width: 160px !important;
}
#contenido_admin .rossa-add-reserva-dates.table_datos_clientes .rossa-tel__phone {
  width: 100%;
  box-sizing: border-box;
  min-height: 36px;
  border: 1px solid var(--rossa-navy);
  border-radius: 0;
}
#contenido_admin .rossa-add-reserva-dates.table_datos_clientes .select2-container--default .select2-selection--single {
  border-radius: 0 !important;
  border-color: var(--rossa-navy) !important;
}
/* `#add_reserva .campo_texto` (lydia.css) mete un inset shadow gris en todos los inputs de este form. */
#contenido_admin .rossa-add-reserva-dates.table_datos_clientes .campo_texto {
  box-shadow: none;
}
/* Vence al padding:10px de table.estandar (lydia.css) para la tabla de resultados de disponibilidad.
   border-spacing:0 vence al cellspacing="6" del marcado: ese hueco lo deja separado a la izquierda
   del contenedor (el título de al lado no lo tiene), no solo entre celdas. */
#contenido_admin table.estandar.reservas_boards {
  padding: 0;
  border-spacing: 0;
}
/* Mismo padding:10px de table.estandar (lydia.css) en la tabla de estancias/servicios (paso 2). */
#contenido_admin table.estandar.reservas_lineas {
  padding: 0;
  border-spacing: 0;
}
/* "Resultados de la búsqueda" (api/lib/bookingFunctions.php, sin clase): mismo margen arriba y
   abajo que el margin-bottom del título "Datos de la reserva" (.rossa-add-reserva-dates__title). */
#contenido_admin #response_table_bookings h2 {
  margin-top: 14px;
  margin-bottom: 14px;
}
/* Placeholder de "Resultados de la búsqueda" antes de buscar / mientras carga (admin/add_reserva.php
   y admin/js/apiCall.js#rossa-availability-skeleton-tpl): misma tabla con guiones, atenuada, con
   un cartel centrado encima. */
#contenido_admin .rossa-availability-skeleton {
  position: relative;
  min-height: 65vh;
}
#contenido_admin .rossa-availability-skeleton table {
  filter: grayscale(1);
  opacity: .5;
  pointer-events: none;
  user-select: none;
}
#contenido_admin .rossa-availability-skeleton__overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
#contenido_admin .rossa-availability-skeleton__caption {
  transform: translateY(-8em);
  background: var(--rossa-white);
  padding: 10px 20px;
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 14px;
  color: var(--rossa-navy);
}

.rossa-scope-tree {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.rossa-scope-group {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  overflow: hidden;
}
.rossa-scope-head {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 9px 12px;
  /* Al quedar cubierta se ocultan checkbox y chevron: el min-height evita que la fila encoja. */
  min-height: 44px;
  box-sizing: border-box;
  background: var(--rossa-surface-2);
  cursor: pointer;
  font-family: var(--rossa-font);
}
/* The header collapses/expands; the checkbox+icon zone selects */
.rossa-scope-head:hover { background: #e9eeee; }
.rossa-scope-head > i,
.rossa-scope-select i { color: var(--rossa-teal); }
.rossa-scope-select {
  display: flex;
  align-items: center;
  gap: 9px;
  cursor: pointer;
  /* Roomy click area without changing the visible geometry */
  padding: 9px;
  margin: -9px;
}
.rossa-scope-head input[type="checkbox"],
.rossa-scope-item input[type="checkbox"] {
  accent-color: var(--rossa-teal);
  width: 16px;
  height: 16px;
  flex: 0 0 auto;
  cursor: pointer;
}
.rossa-scope-name { font-weight: 700; font-size: 13.5px; color: var(--rossa-ink); }
.rossa-scope-meta {
  font-size: 12px;
  color: var(--rossa-muted);
  margin-left: auto;
  white-space: nowrap;
}
.rossa-scope-children {
  display: flex;
  flex-direction: column;
  padding: 4px 10px 6px 30px;
}
.rossa-scope-item {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 5px 6px;
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  cursor: pointer;
}
.rossa-scope-item:hover { background: var(--rossa-surface-2); }
.rossa-scope-item i { color: var(--rossa-muted); font-size: 12px; width: 14px; text-align: center; }
/* Sub-groupings: teal icon to tell them apart from establishments */
.rossa-scope-item--subgroup i { color: var(--rossa-teal); }
.rossa-scope-item .rossa-scope-name { font-weight: 400; font-size: 13px; }

/* Rooms per establishment: the counter expands the list as chips */
.rossa-scope-est-block { display: flex; flex-direction: column; }
.rossa-scope-est-toggle {
  margin-left: auto;
  border: 0;
  background: transparent;
  font-family: var(--rossa-font);
  font-size: 12px;
  color: var(--rossa-muted);
  white-space: nowrap;
  cursor: pointer;
  padding: 3px 7px;
  border-radius: var(--rossa-radius);
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.rossa-scope-est-toggle:hover { background: var(--rossa-surface); color: var(--rossa-teal); }
.rossa-scope-est-toggle i { font-size: 10px; transition: transform .15s ease; }
.rossa-scope-est-toggle.is-open i { transform: rotate(180deg); }
.rossa-scope-estancias {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 2px 6px 8px 37px;
}
.rossa-scope-estancia {
  font-family: var(--rossa-font);
  font-size: 11px;
  color: var(--rossa-ink);
  background: var(--rossa-surface);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
  padding: 3px 9px;
}

/* "Included" tags: hidden until their grouping is checked */
.rossa-scope-included,
.rossa-scope-covered-tag { display: none; font-size: 10px; padding: 4px 9px; margin-left: 8px; }

/* Checked grouping: its children become covered (no checkbox, dimmed) */
.rossa-scope-group.is-on > .rossa-scope-children .rossa-scope-item { opacity: .75; cursor: default; }
.rossa-scope-group.is-on > .rossa-scope-children input.js-scope-est,
.rossa-scope-group.is-on > .rossa-scope-children input.js-scope-subgroup { display: none; }
.rossa-scope-group.is-on > .rossa-scope-children .rossa-scope-included { display: inline-block; }

/* Grouping covered by another checked grouping */
.rossa-scope-group.is-covered { opacity: .75; }
.rossa-scope-group.is-covered > .rossa-scope-head input { display: none; }
.rossa-scope-group.is-covered > .rossa-scope-head .rossa-scope-covered-tag { display: inline-block; }
.rossa-scope-group.is-covered > .rossa-scope-children { display: none; }
.rossa-scope-group.is-covered > .rossa-scope-head .rossa-scope-collapse { display: none; }

/* Collapse/expand button for a grouping */
.rossa-scope-collapse {
  border: 0;
  background: transparent;
  color: var(--rossa-muted);
  width: 26px;
  height: 26px;
  border-radius: var(--rossa-radius);
  cursor: pointer;
  flex: 0 0 auto;
  margin-left: 4px;
}
.rossa-scope-collapse:hover { background: var(--rossa-surface); color: var(--rossa-teal); }
.rossa-scope-collapse:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .25);
}
.rossa-scope-collapse i { transition: transform .15s ease; }
.rossa-scope-group.is-collapsed > .rossa-scope-head .rossa-scope-collapse i { transform: rotate(-90deg); }
.rossa-scope-group.is-collapsed > .rossa-scope-children { display: none; }

@media (max-width: 700px) {
  #jerarquias-tree .rossa-scope-head,
  #jerarquias-tree .rossa-scope-item {
    flex-wrap: wrap;
  }
  #jerarquias-tree .rossa-scope-meta,
  #jerarquias-tree .rossa-scope-est-toggle {
    margin-left: 0;
  }
  #jerarquias-tree .rossa-scope-included,
  #jerarquias-tree .rossa-scope-covered-tag {
    margin-left: 0;
  }
}

/* SAT badge in headers */
.rossa-users-satbadge {
  font-family: var(--rossa-font);
  font-size: 11px;
  font-weight: 700;
  color: var(--rossa-white);
  background: var(--rossa-teal);
  border-radius: var(--rossa-radius-pill);
  padding: 3px 10px;
  letter-spacing: .03em;
}

/* --- Previsualización de estancias del ámbito: botón + modal -------------- */
.rossa-scope-preview {
  display: none;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--rossa-border);
  text-align: center;
}
.rossa-scope-preview__btn { display: inline-flex; align-items: center; gap: 7px; }

.rossa-modal[id^="modal-"] {
  z-index: 2000;
}

.rossa-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(22, 41, 45, .45);
}
.rossa-modal-overlay.is-open { display: flex; }
.rossa-modal-overlay .rossa-modal {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 560px;
  max-height: 80vh;
  background: var(--rossa-white);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
  overflow: hidden;
}
.rossa-modal__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--rossa-border);
}
.rossa-modal__title { margin: 0; font-size: 17px; font-weight: 700; color: var(--rossa-ink); }
.rossa-modal-overlay .rossa-modal__close {
  border: 0;
  background: none;
  cursor: pointer;
  font-size: 24px;
  line-height: 1;
  color: var(--rossa-muted);
  padding: 0 4px;
}
.rossa-modal-overlay .rossa-modal__close:hover { color: var(--rossa-red); }
.rossa-modal__sub { margin: 0; padding: 12px 20px 0; font-size: 13px; color: var(--rossa-muted); }
.rossa-modal__body { padding: 12px 20px 16px; overflow-y: auto; flex: 1 1 auto; }
.rossa-modal__foot {
  display: flex;
  justify-content: flex-end;
  padding: 12px 20px;
  border-top: 1px solid var(--rossa-border);
}
.rossa-modal__empty { margin: 8px 0; color: var(--rossa-muted); font-style: italic; }

.rossa-modal-stays { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.rossa-modal-stays li {
  padding: 7px 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-size: 14px;
  color: var(--rossa-ink);
}

.rossa-modal-estgroup { margin-bottom: 14px; }
.rossa-modal-estgroup__name {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-teal);
  margin-bottom: 6px;
}
.rossa-modal-estgroup__name i { color: var(--rossa-teal); }
.rossa-modal-estgroup__count {
  margin-left: auto;
  font-size: 11px;
  font-weight: 700;
  color: var(--rossa-muted);
  background: var(--rossa-surface);
  border-radius: var(--rossa-radius-pill);
  padding: 2px 9px;
}
.rossa-modal-estgroup__rooms { display: flex; flex-wrap: wrap; gap: 6px; padding-left: 22px; }
.rossa-modal-estgroup__rooms--empty { color: var(--rossa-muted); font-style: italic; font-size: 13px; padding-left: 22px; }
.rossa-modal-room {
  font-size: 13px;
  color: var(--rossa-ink);
  background: var(--rossa-surface);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
  padding: 3px 11px;
}
/* Accesible (incluida) vs excluida (tachada), como la vista previa antigua */
.rossa-modal-room.is-on {
  color: var(--rossa-ink);
  background: var(--rossa-white);
  border-color: var(--rossa-teal);
}
.rossa-modal-room.is-off {
  color: var(--rossa-muted);
  background: transparent;
  border-color: var(--rossa-border);
  text-decoration: line-through;
  opacity: .7;
}
/* Establecimiento sin ninguna estancia accesible: cabecera atenuada */
.rossa-modal-estgroup.is-none .rossa-modal-estgroup__name,
.rossa-modal-estgroup.is-none .rossa-modal-estgroup__name i { color: var(--rossa-muted); }

/* AYUDA CONTEXTUAL: el "?" del <h1> abre un .rossa-modal; reutiliza span.rossa-help (§27). */

/*=============================================================================
  15. type="datepicker" SUPPORT
=============================================================================*/
/* responsive.css solo casaba `input[type="text"]`: estos espejos mantienen el tamaño móvil. */
@media (max-width: 1100px){
  .bloqueportada table.estandar tr td input[type="datepicker"]{
    width: 100% !important;
  }
}
@media (max-width: 780px){
  table.estandar tr td input[type="datepicker"]{
    width: 100% !important;
    min-width: 0;
    box-sizing: border-box;
  }
}

/*=============================================================================
  16. TIPPY TOOLTIPS (tippy.js v4)
=============================================================================*/
/* Vence a la hoja base que tippy inyecta por JS gracias al orden de documento. */
.tippy-popper .tippy-tooltip {
  background-color: #e9eaec;           /* sampled from reference (unchanged) */
  color: #41484b;                      /* darker, near-black grey text */
  border: 1px solid #b6bcbf;           /* darker visible border */
  border-radius: 12px;
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 13px;
  line-height: 1.35;
  padding: 9px 16px;
  box-shadow: 0 4px 12px rgba(40, 50, 60, .08);
  text-shadow: none;
}
.tippy-popper .tippy-arrow,
.tippy-popper .tippy-roundarrow { display: none; }
.tippy-popper .tippy-backdrop { background-color: #e9eaec; }

/*=============================================================================
  20. SCREEN: gestor_estancias_lotes
=============================================================================*/
/* Solo CSS: el JS del módulo poda al enviar y usa cadenas parent()/children() estrictas. */

/* Layout: breathe, and kill the inner scroll-trap (page scrolls naturally) */
#contenedor_creador_lotes { max-width: 1040px; gap: 14px; }
#contenedor_doble_lotes   { gap: 14px; }
#contenedor_estancias_lotes {
  max-height: none;
  overflow: visible;
  gap: 14px;
  padding: 4px 0;
}

/* Panels: baby-blue -> white cards, readable type */
#panel_principal_lotes,
#panel_atajos_lotes,
#weekdays_container {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  padding: 16px 18px;
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
}
#panel_principal_lotes { font-size: 14px; }      /* was .65em */
#panel_atajos_lotes p, #panel_principal_lotes p { font-size: 14px; }
#weekdays_container h3 {
  color: var(--rossa-navy);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .03em;
  margin: 0 0 8px;
}
#contenedor_doble_lotes hr {
  border: 0;
  border-top: 1px solid var(--rossa-hairline-soft);
  margin: 10px 0;
}

/* Estancia cards: blue/white-text -> white card, ink text, navy name band */
.cuadro_estancia_lotes {
  background: var(--rossa-white);
  color: var(--rossa-ink);
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  font-weight: 400;
  cursor: pointer;
  transition: background-color .12s ease, border-color .12s ease;
}
.cuadro_estancia_lotes p:first-child {
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .03em;
  color: var(--rossa-navy);
  border-bottom: 1px solid var(--rossa-hairline-soft);
  padding-bottom: 6px;
}
.cuadro_estancia_lotes .bloq_cierre_canal,
.cuadro_estancia_lotes .bloq_disp_canal,
.cuadro_estancia_lotes .bloq_disp_web { font-size: 13px; }
.disponibilidad_maxima_lotes { color: var(--rossa-muted); font-size: 12px; }

/* Uso tiles: fluid white tiles instead of fixed 156px blue blocks */
.cuadro_uso_lotes {
  background: var(--rossa-white);
  color: var(--rossa-ink);
  border: 1px solid var(--rossa-border);
  border-radius: 8px;
  width: auto;
  min-width: 0;
  padding: 10px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background-color .12s ease, border-color .12s ease;
}
.campo_valor_uso { width: 64px; text-align: center; }

/* El verde del módulo usa !important. */
.cuadro_estancia_lotes:hover:not(.selectedstay),
.cuadro_uso_lotes:hover:not(.selecteduso) {
  background: rgba(0, 94, 102, .05);
  border-color: var(--rossa-teal);
}
.cuadro_estancia_lotes.selectedstay,
.cuadro_uso_lotes.selecteduso {
  background: rgba(0, 94, 102, .12) !important;
  border: 2px solid var(--rossa-teal) !important;
  color: var(--rossa-ink) !important;
}

/* Sin anillos: la seleccion se lee en el borde y fondo de la tarjeta (.selectedstay/.selecteduso) y del dia. */
#contenido_admin .cuadro_estancia_lotes::before,
#contenido_admin .cuadro_estancia_lotes::after,
#contenido_admin .cuadro_uso_lotes::before,
#contenido_admin .cuadro_uso_lotes::after,
#contenido_admin .weekday-item::before,
#contenido_admin .weekday-item::after { content: none !important; display: none !important; }
/* «Seleccionar» pasa de toggle redondo a boton secundario; el checkbox sigue debajo del label para el JS. */
#contenido_admin .selectall_lotes_mark { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); border: 0; margin: 0; padding: 0; }
#contenido_admin .selectall_lotes_wrap {
  display: inline-flex; align-items: center; position: relative; cursor: pointer;
  padding: 8px 14px; border: 1px solid var(--rossa-teal); border-radius: var(--rossa-radius);
  background: var(--rossa-white); color: var(--rossa-teal); font-family: var(--rossa-font); font-weight: 700; font-size: 13px;
}
#contenido_admin .selectall_lotes_wrap:hover,
#contenido_admin .selectall_lotes_wrap:has(.selectall_lotes:checked) { background: var(--rossa-teal); color: var(--rossa-white); }
#contenido_admin .selectall_lotes_wrap .selectall_lotes_text { color: inherit; }
/* «Rellenar» con texto, misma caja que el resto de .boton_fill_lotes. */
#contenido_admin #boton_fillselected_lotes {
  width: auto !important; height: auto !important; min-width: 0 !important; aspect-ratio: auto !important; flex: 0 0 auto !important;
  padding: 8px 14px !important; border-radius: var(--rossa-radius) !important; font-size: 13px !important; line-height: 1.2 !important;
}

/* La barra de CARGAR sobra: el establecimiento ya viene del raíl. */
#contenido_admin .lotes_establecimiento_filter { display: none; }
/* Campos del panel y de las tarjetas con la caja de los filtros (8px, 36px, trazo) en vez de pastilla. */
#contenido_admin #panel_principal_lotes input[type="date"],
#contenido_admin #panel_principal_lotes input[type="datepicker"],
#contenido_admin #contenedor_doble_lotes input[type="date"],
#contenido_admin #contenedor_doble_lotes input[type="datepicker"],
#contenido_admin .fecha_inicio_lotes, #contenido_admin .fecha_fin_lotes,
#contenido_admin .cuadro_estancia_lotes select,
#contenido_admin .cuadro_estancia_lotes input[type="text"] {
  height: 36px; box-sizing: border-box; padding: 0 12px;
  border: 1px solid var(--rossa-stroke); border-radius: var(--rossa-radius);
  font-family: var(--rossa-font); font-size: 13px; color: var(--rossa-ink); background-color: var(--rossa-white);
}
/* Los Select2 del panel con el mismo trazo que los de .rossa-filters. */
#contenido_admin #panel_principal_lotes .select2-container--default .select2-selection--single,
#contenido_admin #contenedor_doble_lotes .select2-container--default .select2-selection--single,
#contenido_admin .cuadro_estancia_lotes .select2-container--default .select2-selection--single { border-color: var(--rossa-stroke) !important; }
#contenido_admin .cuadro_estancia_lotes .select2-selection__rendered { font-weight: 400 !important; font-size: 13px !important; }
/* El JS del modulo hace .hide() sobre el <select>; la caja Select2 es su hermana y debe seguirlo. */
#contenido_admin select[style*="display: none"] + .select2-container,
#contenido_admin select[style*="display:none"] + .select2-container { display: none !important; }
/* Valor global y planes (precios/restricciones): misma caja que el resto. */
#contenido_admin #panel_atajos_lotes input[type="text"],
#contenido_admin div#panel_atajos_lotes #input_fill_campos_lotes p.lotes_fila_global input.global_value_lotes,
#contenido_admin #panel_principal_lotes select,
#contenido_admin #panel_atajos_lotes select,
#contenido_admin .cuadro_uso_lotes select,
#contenido_admin .cuadro_uso_lotes .campo_valor_uso {
  height: 36px; box-sizing: border-box; padding: 0 12px;
  border: 1px solid var(--rossa-stroke); border-radius: var(--rossa-radius);
  font-family: var(--rossa-font); font-size: 13px; font-weight: 400; color: var(--rossa-ink); background: var(--rossa-white);
}
#contenido_admin div#panel_atajos_lotes #input_fill_campos_lotes p.lotes_fila_global input.global_value_lotes { min-height: 36px; max-height: 36px; line-height: 36px; }
/* Select2 fija el ancho al montar (56px) y el desplegable lo hereda */
#contenido_admin #input_fill_campos_lotes p.lotes_fila_global > .select2-container { min-width: 110px; }
.select2-dropdown:has(#select2-tipo_dispestancia_lotes_global-results, #select2-tipo_precio_lotes_global-results, #select2-cierre_lotes_global-results) { min-width: 110px; }
.select2-dropdown:has(#select2-tipo_dispestancia_lotes_global-results, #select2-tipo_precio_lotes_global-results, #select2-cierre_lotes_global-results) .select2-results__options { overflow-x: hidden; }
/* Ese ancho de montaje sale menor que el texto si el select aún no tenía su tamaño: nunca por debajo de lo que ocupa. */
#contenido_admin #panel_principal_lotes .select2-container,
#contenido_admin #contenedor_doble_lotes .select2-container,
#contenido_admin .cuadro_estancia_lotes .select2-container { min-width: max-content; }
body:has(#contenedor_creador_lotes) .select2-dropdown { min-width: max-content; }
body:has(#contenedor_creador_lotes) .select2-dropdown .select2-results__options { overflow-x: hidden; }
/* El tile mide ~120px: valor y tipo de precio en dos filas para que «Sumar %» no se trunque. */
#contenido_admin .cuadro_uso_lotes .uso_lotes_controles { flex-wrap: wrap; gap: 6px; }
#contenido_admin .cuadro_uso_lotes .campo_valor_uso { width: 100%; min-width: 0; max-width: none; flex: 1 1 100%; padding: 0 8px; min-height: 36px; max-height: 36px; line-height: 34px; }
#contenido_admin .cuadro_uso_lotes .select2-container { width: 100% !important; flex: 1 1 100%; min-width: 0; }
#contenido_admin #panel_principal_lotes .select2-selection__rendered,
#contenido_admin #contenedor_doble_lotes .select2-selection__rendered,
#contenido_admin .cuadro_uso_lotes .select2-selection__rendered { font-size: 13px !important; font-weight: 400 !important; color: var(--rossa-ink) !important; }
#contenido_admin .cuadro_uso_lotes .select2-container--default .select2-selection--single { border-color: var(--rossa-stroke) !important; }
/* Tipografia de los filtros unificados (gestor_pedidos): valor a 400, rotulos a 700/12px teal. */
#contenido_admin #panel_principal_lotes .select2-selection__rendered,
#contenido_admin #contenedor_doble_lotes .select2-selection__rendered { font-weight: 400 !important; }
#contenido_admin #panel_principal_lotes input[type="date"],
#contenido_admin #panel_principal_lotes input[type="datepicker"],
#contenido_admin .cuadro_estancia_lotes select,
#contenido_admin .cuadro_estancia_lotes input[type="text"] { font-weight: 400; font-size: 13px; }
#contenido_admin #panel_principal_lotes label,
#contenido_admin #panel_principal_lotes p:has(> #campo_tipo_lotes),
#contenido_admin #panel_principal_lotes #select_price_plan,
#contenido_admin #panel_principal_lotes #select_restriction_plan,
#contenido_admin #panel_principal_lotes .lotes_fecha_etiq,
#contenido_admin .lotes_fila_global_label,
#contenido_admin .selectall_lotes_rotulo,
#contenido_admin .bloq_disp_lotes_label,
#contenido_admin .bloq_cierre_lotes_label { font-family: var(--rossa-font); font-weight: 700; font-size: 12px; color: var(--rossa-teal); text-transform: none; }
#contenido_admin .selectall_lotes_rotulo { margin-right: 10px; }
/* Seleccionar y Rellenar, misma caja. */
#contenido_admin .selectall_lotes_wrap,
#contenido_admin #boton_fillselected_lotes {
  display: inline-flex !important; align-items: center; justify-content: center; box-sizing: border-box;
  height: 36px !important; min-width: 110px !important; padding: 0 14px !important; font-size: 13px !important; line-height: 1 !important;
}

/* Round toggles: select-all + weekday chips -> teal language */
.selectall_lotes {
  background: var(--rossa-white);
  border: 2px solid var(--rossa-teal);
}
.selectall_lotes:checked { background: var(--rossa-teal); border-color: var(--rossa-teal); }
.lote_dias {
  background: var(--rossa-white);
  border: 2px solid var(--rossa-border);
}
.lote_dias:checked { background: var(--rossa-teal); border-color: var(--rossa-teal); }
.weekday-label { color: var(--rossa-ink); font-weight: 700; }

/* Bulk-fill buttons: blue -> teal outline secondaries */
.boton_fill_lotes {
  background: var(--rossa-white);
  color: var(--rossa-teal);
  border: 1px solid var(--rossa-teal);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 13px;
  padding: 8px 14px;
  cursor: pointer;
}
.boton_fill_lotes:hover { background: var(--rossa-teal); color: var(--rossa-white); }
#contenido_admin .boton_fill_lotes:disabled,
#contenido_admin .boton_fill_lotes:disabled:hover { color: #9aa3a3; background: #f2f4f5; border-color: var(--rossa-border); cursor: not-allowed; }

/* Save: red 740px slab -> primary teal, centered, honest disabled state */
#realizar_cambios_lotes {
  width: auto;
  min-width: 300px;
  max-width: 100%;
  display: block;
  margin: 18px auto;
  background: var(--rossa-teal);
  color: var(--rossa-white);
  border: 1px solid var(--rossa-teal);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 15px;
  padding: 12px 28px;
  cursor: pointer;
}
#realizar_cambios_lotes:enabled:hover { background: #00474d; border-color: #00474d; }
#realizar_cambios_lotes:disabled {
  background: #f2f4f5;
  border-color: var(--rossa-border);
  color: #9aa3a3;
  cursor: not-allowed;
}

/* --- 20b. lotes: los paneles azules del módulo sobrevivían a los overrides suaves --- */
/* jQuery .show()/.hide() sigue funcionando: el display sale del CSS y hide() inyecta none. */
#contenedor_gestor_lotes #panel_principal_lotes,
#contenedor_gestor_lotes #panel_atajos_lotes,
#contenedor_gestor_lotes #weekdays_container,
#panel_principal_lotes,
#panel_atajos_lotes,
#weekdays_container {
  background: var(--rossa-white) !important;
  border: 1px solid var(--rossa-border) !important;
  border-radius: 10px !important;
  color: var(--rossa-ink) !important;
}

/* inline-block + 280px de padding sin width desbordaba el viewport en horizontal. */
#contenido_admin.contenido_admin_fullscreen {
  display: block;
  float: none;
  width: auto;
  max-width: 100%;
  box-sizing: border-box;
}

/* Center the whole module */
#contenedor_gestor_lotes {
  display: flex;
  flex-direction: column;
  align-items: center;
}
#contenedor_creador_lotes { margin: 0 auto; }

/* Las tarjetas sin marcar van BLANCAS: si se tiñen, el estado seleccionado deja de verse. */
.cuadro_estancia_lotes:not(.selectedstay),
.cuadro_uso_lotes:not(.selecteduso) {
  background: var(--rossa-white) !important;
  border: 1px solid var(--rossa-border) !important;
}
.cuadro_estancia_lotes:hover:not(.selectedstay),
.cuadro_uso_lotes:hover:not(.selecteduso) {
  background: rgba(0, 94, 102, .05) !important;
  border-color: var(--rossa-teal) !important;
}

/* Even, full-width card grid (no ragged right edge) */
#contenedor_estancias_lotes {
  width: 100%;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  justify-content: center;
}

/* Control rows: label + field on one line, uniform heights */
#panel_principal_lotes p {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin: 10px 0;
  font-weight: 600;
}
#panel_principal_lotes p br { display: none; }   /* "Desde … Hasta …" one row */
#panel_atajos_lotes p {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin: 10px 0;
  font-weight: 600;
}
#panel_principal_lotes select,
#panel_principal_lotes input,
#panel_atajos_lotes select,
#panel_atajos_lotes input[type="text"] {
  height: 36px;
  box-sizing: border-box;
}
.multiple-actions-buttons {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  width: 100%;
}

/* Weekdays: centered chip row */
.weekdays-selector {
  display: flex;
  justify-content: center;
  gap: 16px;
  flex-wrap: wrap;
}
.weekday-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}

/* Estancia cards: tighter, centered content */
.cuadro_estancia_lotes { padding: 12px 14px; }
.cuadro_estancia_lotes p:first-child { margin: 0 0 8px; }

/*=============================================================================
  21. MOBILE CHROME (≤700px, y tablet sin ratón — ver menu.php para el estado inicial)
=============================================================================*/
@media (max-width: 700px), (hover: none) and (pointer: coarse) {

  /* --- HEADER: ☰ left / logo CENTER / user buttons right, no user name --- */
  #toolbar { min-height: 48px; padding: 4px 12px 4px 60px; gap: 8px; font-size: 13px; }
  #toolbar #portal,
  #toolbar #fechahora { display: none; }
  #toolbar #toolbarlogo {
    top: 4px;
    left: 50%;
    transform: translateX(-50%);
    padding: 0;
    background: none;
  }
  #toolbar #logo_lidia { width: 38px; height: 38px; }
  #toolbar #nombreuser {
    margin-left: 0;
    margin-right: 0;
    font-size: 0;        /* hides the "Hola: SAT" text nodes */
    gap: 0;
  }
  /* Panel / Desconectar -> compact icon pills (text collapsed via font-size:0) */
  #panel_user, #descon {
    height: 34px; width: 38px;
    padding: 0;
    justify-content: center;
    font-size: 0;
  }
  /* Iconos de las pills como máscara Lucide, tintados con el color del texto. */
  #panel_user::before, #descon::before {
    content: "";
    display: inline-block;
    width: 18px; height: 18px;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;   mask-repeat: no-repeat;
    -webkit-mask-position: center;    mask-position: center;
    -webkit-mask-size: contain;       mask-size: contain;
  }
  #panel_user::before { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-user.svg"); mask-image: url("https://cdn.rossa.app/icons/circle-user.svg"); }
  #descon::before     { -webkit-mask-image: url("https://cdn.rossa.app/icons/log-out.svg");     mask-image: url("https://cdn.rossa.app/icons/log-out.svg"); }
  /* "Crear reserva" -> compact icon-only pill (matches the account pills) */
  #toolbar #btn-crear-reserva { padding: 0; width: 38px; height: 34px; justify-content: center; gap: 0; }
  #toolbar #btn-crear-reserva .rossa-tb-label { display: none; }
  #toolbar #btn-crear-reserva i { font-size: 20px; margin-left: 0; transform: translateY(1px); }   /* "+" centrado en la barra móvil (anula el margin/transform de escritorio) */
  #contenedor_absoluto { padding-top: 52px !important; padding-left: 0 !important; }

  /* --- CONTENT: menu overlays — kill every menu-era offset, use full width --- */
  #contenido_admin,
  body.showhidemenu #contenido_admin {
    float: none !important;
    width: 100% !important;
    margin-left: 0 !important;
    padding-left: 12px !important;
    padding-right: 12px !important;
    box-sizing: border-box;
  }

  /* --- MENU collapsed (mobile default) = hamburger button, top-right --- */
  body.showhidemenu #menu {
    width: 38px; height: 36px; min-height: 36px;
    padding: 0; margin: 0;
    top: 6px; left: 12px; right: auto;
    background: var(--rossa-white);
    border: 1px solid var(--rossa-teal);
    border-radius: var(--rossa-radius);
    overflow: hidden;
    z-index: 260;
  }
  body.showhidemenu #menu .panel_admin,
  body.showhidemenu #menu #capa_logo { display: none; }
  body.showhidemenu #menu #hidemenu {
    width: 100%; height: 100%;
    margin: 0; padding: 0;
    justify-content: center;
    align-items: center;
    color: var(--rossa-teal);
  }
  body.showhidemenu #menu #hidemenu span { display: none; }
  /* Hamburguesa como MÁSCARA Lucide (icono menu), no glifo Font Awesome. */
  body.showhidemenu #menu #hidemenu::before {
    content: "";
    display: inline-block;
    width: 20px; height: 20px;
    background-color: currentColor;
    -webkit-mask: url("https://cdn.rossa.app/icons/menu.svg") no-repeat center;   mask: url("https://cdn.rossa.app/icons/menu.svg") no-repeat center;
    -webkit-mask-size: contain;   mask-size: contain;
    transform: none;   /* aquí es hamburguesa, no la flecha girada del §10 */
  }

  /* --- MENU expanded = off-canvas drawer, touch-sized --- */
  body:not(.showhidemenu) #menu {
    position: fixed;
    width: 100%;                       /* Figma #3: lista a ancho completo */
    height: calc(100vh - 48px); min-height: 0;
    top: 48px; left: 0; margin: 0; padding: 4px 0;
    z-index: 1000;
    overflow-y: auto; overflow-x: hidden;
    box-shadow: 0 12px 24px rgba(0, 48, 60, .12);
  }
  body:not(.showhidemenu) #menu .panel_admin a,
  body:not(.showhidemenu) #menu .panel_admin a.menugroup { padding: 12px 8px; font-size: 15px; }
  body:not(.showhidemenu) #menu .panel_admin a .txtmenu,
  body:not(.showhidemenu) #menu .panel_admin a.menugroup .txtmenu { width: auto; font-size: 15px; opacity: 1; }
  /* La regla móvil de arriba baja el padding a 8px y el texto choca con el punto (~13px). */
  body:not(.showhidemenu) #menu .rossa-submenu__items li a { padding-left: 22px; }

  /* --- FOOTER: back into document flow (a fixed footer steals phone space) --- */
  #footer {
    position: static !important;
    left: auto !important;
    padding: 10px 12px;
    font-size: 11px;
  }
  body:has(#footer) { padding-bottom: 0 !important; }

  /* --- MOBILE TYPOGRAPHY: tighter scale --- */
  #contenido_admin h1 { font-size: 20px !important; }          /* was ~24 */
  #contenido_admin h2 { font-size: 14px !important; }
  #contenido_admin h3 { font-size: 13px !important; }
  #contenido_admin h1 + p,
  #cabecera_texto p { font-size: 12px !important; }            /* page descriptions */
}

/*=============================================================================
  22. PORTAL TITLE (#portal — the alojamiento name in the header)
=============================================================================*/
/* El margin-left:80px legacy es !important, así que el reset también debe serlo. */
/* min-width:0 + ellipsis: en la barra flex un nombre largo empujaría los botones de cuenta. */
#toolbar #portal {
  margin-left: 18px !important;
  min-width: 0;
  font-size: 20px;
}
#toolbar #portal a {
  display: block;
  overflow: hidden;
  font-family: var(--rossa-font);
  font-style: normal;
  font-weight: 700;
  font-size: 20px;
  line-height: 1.2;
  letter-spacing: .01em;
  color: var(--rossa-navy);
  text-decoration: none;
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-left: 0;
}
#toolbar #portal a:hover { color: var(--rossa-teal); }

/*=============================================================================
  23. ver_reserva SECONDARY BUTTONS — re-assert Figma white-outline
=============================================================================*/
/* !important para vencer a las declaraciones forzadas del repintado global de .rossa-btn. */
.rossa-btn--default,
.rossa-btn--reserva,
.rossa-btn--negative {
  background: var(--rossa-teal) !important;     /* match the app-wide buttons */
  color: var(--rossa-white) !important;
  border: 1px solid var(--rossa-teal) !important;
  border-radius: var(--rossa-radius) !important;
  font-weight: 700;
}
.rossa-btn--default:hover,
.rossa-btn--reserva:hover,
.rossa-btn--negative:hover {
  background: #00474d !important;
  border-color: #00474d !important;
  color: var(--rossa-white) !important;
}

/*=============================================================================
  24. FOOTER "PAGE CONTINUES" HINT (desktop, where the footer is fixed)
=============================================================================*/
@media (min-width: 701px){
  /* El filete sobre el crédito (#footer::before del bloque base) se mantiene. */
}

/*=============================================================================
  25. VER RESERVA — TAB MODE (pareja del script de pestañas de ver_reserva.php)
=============================================================================*/
.rossa-tabbar {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  width: 100%;
  max-width: none;
  margin: 4px 0 20px;
  border-bottom: 1px solid var(--rossa-border);
  background: var(--rossa-white);
  position: sticky;
  top: 74px;
  z-index: 30;
}
.rossa-tabbar__tab i {
  margin-right: 7px;
  font-size: 12px;
}
.rossa-tabbar__tab {
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  padding: 10px 14px;
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-muted);
  cursor: pointer;
}
.rossa-tabbar__tab:hover { color: var(--rossa-ink); }
.rossa-tabbar__tab--active { color: var(--rossa-teal); border-bottom-color: var(--rossa-teal); }

#contenido_admin.isiframe .vr-page-head { display: none; }
#contenido_admin.isiframe .rossa-tabbar { top: 0; }

.rossa-tab-hidden { display: none !important; }

/* En modo pestañas cada tab muestra UNA card y conserva su aspecto original. */
body.rossa-tabs-on .rossa-ctr__buttons { display: none !important; }
body.rossa-tabs-on .rossa-ctr__icon { display: none !important; }
body.rossa-tabs-on .rossa-ctr-booking { display: block; }
body.rossa-tabs-on .rossa-ctr-booking__column,
body.rossa-tabs-on .rossa-ctr-booking__content {
  width: 100%;
  max-width: none;
  float: none;
  display: block;
}
/* center the card; its bg / 30px radius / max-width:560px come from rossa_components.css */
body.rossa-tabs-on .rossa-ctr-block { margin: 0 auto 30px; }
/* Timeline + the comms log/chat tail are not 560px cards — give them room, centered */
body.rossa-tabs-on .rossa-ctr-block--timeline { max-width: 980px; }
body.rossa-tabs-on .rossa-vr-extra { max-width: 980px; margin: 0 auto; }

@media (max-width: 700px){
  .rossa-tabbar { gap: 0; top: 48px; flex-wrap: nowrap; }
  .rossa-tabbar__tab { flex: 1 1 0; padding: 11px 4px; font-size: 0; display: flex; align-items: center; justify-content: center; }
  .rossa-tabbar__tab i { margin-right: 0; font-size: 18px; }

  body.rossa-tabs-on h1.vr-hide {
    display: block !important;
    margin: 0 0 16px;
    font: 700 22px/1.25 var(--rossa-font);
    letter-spacing: -0.01em;
    color: var(--rossa-ink);
  }
}

/* Chrome shadows OFF (user request): side menu, header, footer */
#menu, #toolbar, #toplydia, #footer { box-shadow: none !important; }

/*=============================================================================
  30. VER RESERVA — TAB PANEL LAYOUT (replantea el panel activo de §25)
=============================================================================*/
/* Carga después de §25 y solo afecta a body.rossa-tabs-on. */
/* Panel = superficie plana a ancho de contenido */
body.rossa-tabs-on .rossa-ctr-block {
  width: 100%;
  max-width: none;
  margin: 0 0 28px;
  padding: 0 0 16px;
  background: transparent;
  border-radius: 0;
}
body.rossa-tabs-on .rossa-ctr {
  width: 100% !important;
  align-items: stretch;
  padding: 0;
}
/* En pagos el h1 cuelga de .rossa-ctr__main-content, no del .rossa-ctr. */
body.rossa-tabs-on .rossa-ctr > h1,
body.rossa-tabs-on .rossa-ctr > .rossa-ctr__main-content > h1 {
  text-align: left;
  font-size: 20px;
  margin: 0 0 6px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--rossa-border);
}
body.rossa-tabs-on .rossa-ctr__main-content { width: 100%; }
body.rossa-tabs-on .rossa-separator { width: 100%; margin: 16px 0; }

/* Grupos de botones: de columna/rejilla fija -> fila compacta que envuelve */
body.rossa-tabs-on .rossa-ctr__btn-status,
body.rossa-tabs-on .rossa-ctr__btn-card,
body.rossa-tabs-on .rossa-ctr__btn-iva,
body.rossa-tabs-on .rossa-ctr__btn-bill,
body.rossa-tabs-on .rossa-ctr__btn-tipo-facturacion,
body.rossa-tabs-on .rossa-ctr__btn-huespedes,
body.rossa-tabs-on .rossa-ctr__btn-comunicaciones {
  display: flex !important;
  flex-direction: row !important;   /* varios grupos eran column legacy: los botones se apilaban */
  flex-wrap: wrap;
  gap: 10px;
  width: auto !important;
  max-width: none !important;
  grid-template-columns: none !important;
  align-items: center;
}
/* Botones compactos como en el resto de la app (no losas a 100%) */
body.rossa-tabs-on .rossa-ctr .rossa-btn--default,
body.rossa-tabs-on .rossa-ctr .rossa-btn--reserva,
body.rossa-tabs-on .rossa-ctr .rossa-btn--negative {
  width: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  flex: 0 0 auto !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  padding: 9px 16px !important;
  border-radius: var(--rossa-radius) !important;
}

body.rossa-tabs-on .rossa-ctr__status-payment {
  display: flex !important;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 16px 32px;
  width: 100%;
}
body.rossa-tabs-on .rossa-ctr__btn-status { align-content: flex-start; }
/* "Marcar como" (h3) ocupa toda la fila, encima de sus botones */
body.rossa-tabs-on .rossa-ctr__btn-status > h3 { flex: 0 0 100%; margin: 0 0 4px; }

body.rossa-tabs-on .rossa-ctr__credit-card,
body.rossa-tabs-on .rossa-ctr__iva,
body.rossa-tabs-on .rossa-ctr__bill,
body.rossa-tabs-on .rossa-ctr__tipo-facturacion,
body.rossa-tabs-on .rossa-ctr__commentary {
  width: 100% !important;
  justify-content: flex-start !important;
  align-items: center;
  gap: 24px;
}
/* "Hay Tarjeta" ocupaba width:100% y empujaba sus botones al borde derecho */
body.rossa-tabs-on .rossa-ctr__content-card { width: auto; flex: 0 1 auto; }

/* Comentarios: título+botón a la izquierda, textarea con ancho razonable */
body.rossa-tabs-on .rossa-ctr__commentary { align-items: flex-start; }
body.rossa-tabs-on .rossa-ctr__textarea { align-items: stretch; flex: 1 1 320px; max-width: 520px; }
body.rossa-tabs-on .rossa-ctr__textarea .rossa-textarea,
body.rossa-tabs-on .rossa-ctr__textarea textarea { width: 100%; box-sizing: border-box; }

body.rossa-tabs-on .rossa-ctr__payment-try { align-items: flex-start; width: 100%; }

body.rossa-tabs-on .rossa-ctr__communications { width: 100%; align-items: flex-start; }
body.rossa-tabs-on .rossa-ctr__communications form { justify-content: flex-start; }

/* --- Alturas de control uniformes */
body.rossa-tabs-on .rossa-ctr .rossa-input,
body.rossa-tabs-on .rossa-ctr select,
body.rossa-tabs-on .rossa-ctr input[type="number"],
body.rossa-tabs-on .rossa-ctr input[type="time"],
body.rossa-tabs-on .rossa-ctr input[type="text"],
body.rossa-tabs-on .rossa-ctr input[type="email"],
body.rossa-tabs-on .rossa-ctr input[type="datepicker"] {
  height: 36px;
  box-sizing: border-box;
}
body.rossa-tabs-on .rossa-ctr__iva,
body.rossa-tabs-on .rossa-ctr__bill,
body.rossa-tabs-on .rossa-ctr__tipo-facturacion,
body.rossa-tabs-on .rossa-ctr__credit-card,
body.rossa-tabs-on .rossa-ctr__data-iva,
body.rossa-tabs-on .rossa-ctr__data-bill,
body.rossa-tabs-on .rossa-ctr__data-tipo-facturacion,
body.rossa-tabs-on .rossa-ctr__content-card { align-items: center; }

/* --- Grupos de botones independientes: fila a la izquierda, ancho completo --- */
body.rossa-tabs-on .rossa-ctr__btn-huespedes,
body.rossa-tabs-on .rossa-ctr__btn-comunicaciones {
  width: 100% !important;
  justify-content: flex-start;
}

/* --- Estado de pago: caja a la izquierda y botones "Marcar como" en fila --- */
body.rossa-tabs-on .rossa-ctr__btn-status { flex: 1 1 340px; }

/* --- Nº huéspedes: input y Guardar a la misma altura, en línea ----------- */
body.rossa-tabs-on #bloque-guests .rossa-ctr__commentary { align-items: center; }
body.rossa-tabs-on #form_num_huespedes { display: inline-flex; align-items: center; gap: 8px; }

/* Anti-FOUC: body.vr-preinit (lo quita el script de pestañas) oculta todo menos la activa. */
body.rossa-tabs-on.vr-preinit .rossa-ctr-block,
body.rossa-tabs-on.vr-preinit .rossa-vr-extra { display: none !important; }
body.rossa-tabs-on.vr-preinit .rossa-ctr-block:has(#bloque-resumen) { display: flex !important; }

/* --- Jerarquía visual de botones (UX) */
body.rossa-tabs-on .rossa-ctr .rossa-btn--default,
body.rossa-tabs-on .rossa-ctr .rossa-btn--negative {
  background: var(--rossa-white) !important;
  color: var(--rossa-teal) !important;
  border: 1px solid var(--rossa-border) !important;
}
body.rossa-tabs-on .rossa-ctr .rossa-btn--default:hover,
body.rossa-tabs-on .rossa-ctr .rossa-btn--default:active,
body.rossa-tabs-on .rossa-ctr .rossa-btn--negative:hover,
body.rossa-tabs-on .rossa-ctr .rossa-btn--negative:active {
  background: var(--rossa-tint) !important;
  border-color: var(--rossa-teal) !important;
  color: var(--rossa-teal) !important;
}
body.rossa-tabs-on .rossa-ctr .rossa-btn--cancelar,
body.rossa-tabs-on .rossa-ctr .rossa-btn--sinrem,
body.rossa-tabs-on .rossa-ctr .rossa-btn--red {
  background: var(--rossa-salmon) !important;
  color: var(--rossa-coral) !important;
  border: 1px solid var(--rossa-salmon) !important;
}
body.rossa-tabs-on .rossa-ctr .rossa-btn--cancelar:hover,
body.rossa-tabs-on .rossa-ctr .rossa-btn--sinrem:hover,
body.rossa-tabs-on .rossa-ctr .rossa-btn--red:hover {
  background: rgba(234, 92, 54, .14) !important;   /* salmón un punto más intenso, no relleno naranja */
  color: var(--rossa-coral) !important;
  border-color: var(--rossa-coral) !important;
}

/* "Más acciones" (Cliente): separa el icono del texto (iban pegados) */
body.rossa-tabs-on #toggle-edit-datos-cliente { align-items: center; gap: 6px; }

/* --- Reserva: barra de acciones en UNA fila */
body.rossa-tabs-on #bloque-reserva .rossa-ctr__huespedes {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  width: 100%;
}
body.rossa-tabs-on #bloque-reserva .rossa-ctr__huespedes > .rossa-ctr__btn-huespedes {
  width: auto !important;
}
/* el grupo que contiene Cancelar se empuja al extremo derecho de la fila */
body.rossa-tabs-on #bloque-reserva .rossa-ctr__huespedes > .rossa-ctr__btn-huespedes:has(.rossa-btn--cancelar) {
  margin-left: auto;
}
/* avisos y separadores ocupan su propia línea completa */
body.rossa-tabs-on #bloque-reserva .rossa-ctr__huespedes > .rossa-notice,
body.rossa-tabs-on #bloque-reserva .rossa-ctr__huespedes > .rossa-separator {
  flex-basis: 100%;
}

/* Dentro de los botones primarios teal la ayuda va en blanco: en #00303C no contrastaba. */
body.rossa-tabs-on #bloque-pagos .rossa-btn--reserva .rossa-caption {
  color: rgba(255, 255, 255, .92) !important;
}

/* --- Pagos y Cliente: campos de comentarios */
body.rossa-tabs-on #bloque-pagos .rossa-ctr__commentary,
body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 8px 12px;
  width: 100%;
}
body.rossa-tabs-on #bloque-pagos .rossa-ctr__data-commentary,
body.rossa-tabs-on #bloque-pagos .rossa-ctr__data-accesseshour,
body.rossa-tabs-on #bloque-cliente .rossa-ctr__data-commentary,
body.rossa-tabs-on #bloque-cliente .rossa-ctr__data-accesseshour {
  display: contents;
}
/* título: su propia línea completa */
body.rossa-tabs-on #bloque-pagos .rossa-ctr__commentary .rossa-subtitle,
body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary .rossa-subtitle {
  flex: 0 0 100%;
  order: 0;
  margin: 0;
}
/* textarea: ocupa el ancho disponible a la izquierda */
body.rossa-tabs-on #bloque-pagos .rossa-ctr__textarea,
body.rossa-tabs-on #bloque-cliente .rossa-ctr__textarea {
  order: 1;
  flex: 1 1 auto;
  width: auto;
  max-width: none;            /* el textarea usa el ancho disponible (no 640) */
  align-items: stretch;
  justify-content: flex-start;
}
/* botón: a la derecha del textarea */
body.rossa-tabs-on #bloque-pagos .rossa-ctr__commentary .rossa-btn,
body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary .rossa-btn {
  order: 2;
  flex: 0 0 auto;
}
body.rossa-tabs-on #bloque-pagos .rossa-ctr__textarea textarea,
body.rossa-tabs-on #bloque-pagos .rossa-ctr__textarea .rossa-textarea,
body.rossa-tabs-on #bloque-cliente .rossa-ctr__textarea textarea,
body.rossa-tabs-on #bloque-cliente .rossa-ctr__textarea .rossa-textarea {
  width: 100%;
  max-width: none;
  box-sizing: border-box;
}

/* --- Cliente "Más acciones" */
body.rossa-tabs-on #bloque-cliente .rossa-ctr__client-buttons {
  width: 100%;
  justify-content: flex-start;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 12px;
}
/* "Cambiar cliente:" */
body.rossa-tabs-on #bloque-cliente .rossa-ctr__client-buttons > h2 {
  flex: 0 0 100%;
  margin: 0;
}
body.rossa-tabs-on #bloque-cliente .rossa-ctr__fact { align-items: flex-start; width: 100%; }
/* los 4 botones de "Cambiar cliente": prioridad alta = relleno teal (tono oscuro) */
body.rossa-tabs-on #bloque-cliente .rossa-ctr__client-buttons .rossa-btn--default {
  background: var(--rossa-teal) !important;
  color: var(--rossa-white) !important;
  border: 1px solid var(--rossa-teal) !important;
}
body.rossa-tabs-on #bloque-cliente .rossa-ctr__client-buttons .rossa-btn--default:hover,
body.rossa-tabs-on #bloque-cliente .rossa-ctr__client-buttons .rossa-btn--default:active {
  background: var(--rossa-petrol-dark) !important;
  border-color: var(--rossa-petrol-dark) !important;
  color: var(--rossa-white) !important;
}

/* --- Cliente "Más acciones": toggle claro + área en tarjeta + jerarquía ---- */
body.rossa-tabs-on #toggle-edit-datos-cliente {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 8px 0 0;
  padding: 8px 14px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font: 700 13px/1 var(--rossa-font);
  color: var(--rossa-teal);
  cursor: pointer;
}
body.rossa-tabs-on #toggle-edit-datos-cliente:hover { border-color: var(--rossa-teal); background: var(--rossa-tint); }
body.rossa-tabs-on #edit_datos_cliente {
  margin-top: 12px;
  padding: 18px 22px 20px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 12px;
}
/* sub-títulos del área: labels subordinados (no compiten con las secciones teal) */
body.rossa-tabs-on #edit_datos_cliente h2,
body.rossa-tabs-on #edit_datos_cliente .rossa-subtitle {
  font: 700 13px/1.3 var(--rossa-font) !important;
  letter-spacing: .01em !important;
  text-transform: none !important;
  color: var(--rossa-ink) !important;
  margin: 0 0 4px !important;
}
/* "Cambiar cliente:" como label de su grupo, no como h2 grande */
body.rossa-tabs-on #edit_datos_cliente .rossa-ctr__client-buttons > h2 { flex: 0 0 100%; }
body.rossa-tabs-on #bloque-cliente .rossa-ctr__row {
  width: 100%;
  justify-content: flex-start;
  gap: 16px;
}

/* --- Pagos: Transacciones -> 2 columnas (Pagos recurrentes | Devoluciones) */
body.rossa-tabs-on #bloque-pagos .rossa-grid-auto-200 {
  grid-template-columns: 1fr 1fr;
  width: 100%;
  max-width: none;            /* Transacciones a 50/50 usando TODO el ancho */
  gap: 18px;
}
body.rossa-tabs-on #bloque-pagos .rossa-grid-auto-200 > * { width: auto; min-width: 0; }
body.rossa-tabs-on #bloque-pagos .rossa-card-transaction { height: 100%; box-sizing: border-box; }
@media (max-width: 700px){
  body.rossa-tabs-on #bloque-pagos .rossa-grid-auto-200 { grid-template-columns: 1fr; }
}

/* --- Timeline: separar el botón "Ver todo el RTL" */
body.rossa-tabs-on #bloque-timeline .admin_boton.admin_ok { margin-top: 22px; }

/* Tarjetas de transacciones (Pagos recurrentes / Devoluciones): 2 por fila */
body.rossa-tabs-on .rossa-ctr__grid {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  justify-content: stretch;
}

/* Flujo alineado a la izquierda */
body.rossa-tabs-on .rossa-ctr p:not(.mensaje_error) { text-align: left; }
body.rossa-tabs-on .rossa-ctr__data-client {
  align-items: flex-start;
  width: 100%;
  margin-bottom: 4px;
}
body.rossa-tabs-on .rossa-ctr__client-name { font-size: 16px; font-weight: 700; }

body.rossa-tabs-on .rossa-box__dates {
  grid-template-columns: repeat(auto-fit, minmax(150px, 190px));
  justify-content: start;
  gap: 12px 32px;
  padding: 4px 0;
}
body.rossa-tabs-on .rossa-ctr__title {
  justify-content: flex-start;
  height: auto;
  margin-bottom: 6px;
}
body.rossa-tabs-on .rossa-ctr__dates-content { align-items: flex-start; height: auto; }
body.rossa-tabs-on .rossa-ctr__dates-content p { text-align: left; }

/* Toggle "Más acciones": a la izquierda, no centrado en una banda vacía */
body.rossa-tabs-on #toggle-edit-datos-cliente { display: inline-flex; }
body.rossa-tabs-on .rossa-ctr > div[style*="text-align: center"] { text-align: left !important; }

/*=============================================================================
  26. ROSSA-SCREEN — scaffolding for the remade Ver reserva tabs
=============================================================================*/
.rossa-screen__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  width: 100%;
  padding: 4px 0 12px;
  border-bottom: 1px solid var(--rossa-border);
  margin-bottom: 18px;
}
.rossa-screen__heading {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 20px;
  font-weight: 700;
  color: var(--rossa-ink);
}
.rossa-screen__heading i { color: var(--rossa-teal); margin-right: 10px; font-size: 17px; }
.rossa-screen__actions { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }

.rossa-screen__section {
  width: 100%;
  padding: 14px 0;
  border-bottom: 1px solid var(--rossa-hairline-soft);
}
.rossa-screen__section:last-child { border-bottom: 0; }
.rossa-screen__subtitle {
  margin: 0 0 12px;
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-teal);
  text-align: left;
}
.rossa-screen__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 14px 24px;
  width: 100%;
}
.rossa-screen__field { min-width: 0; }
.rossa-screen__label {
  display: block;
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--rossa-muted);
  margin-bottom: 4px;
}
.rossa-screen__value {
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.rossa-screen__row {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  width: 100%;
  margin: 8px 0;
}

/*=============================================================================
  27. VER RESERVA — COLLAPSIBLE CARDS (accordion, pairs with js/rossa/ver_reserva.js)
=============================================================================*/
/* El marcado original no se toca: el JS inyecta .rossa-screen__head y alterna is-collapsed. */
body.rossa-collapse-on .rossa-ctr-booking { display: block; margin-top: 14px; }
body.rossa-collapse-on .rossa-ctr-booking__column { display: block; width: 100% !important; }
body.rossa-collapse-on .rossa-ctr-booking__content { display: block; width: 100%; }
body.rossa-collapse-on .rossa-ctr-block {
  display: block;
  width: 100%;
  max-width: 920px;
  margin: 0 auto 12px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  padding: 4px 18px 14px;
  box-shadow: none;
}
body.rossa-collapse-on .rossa-ctr { width: 100% !important; }
/* injected head replaces the card's own big h1 + floating circle icon */
body.rossa-collapse-on .rossa-ctr > h1 { display: none; }
body.rossa-collapse-on .rossa-ctr-block > div[class*="rossa-ctr__icon"] { display: none; }
/* the per-block jump buttons are pointless against folded cards */
body.rossa-collapse-on .rossa-ctr__buttons { display: none !important; }

/* the injected head is the click bar */
body.rossa-collapse-on .rossa-screen__head {
  cursor: pointer;
  -webkit-user-select: none;
  user-select: none;
  border-bottom: 0;
  margin-bottom: 0;
  padding: 12px 0;
}
body.rossa-collapse-on .rossa-collapse:not(.is-collapsed) .rossa-screen__head {
  border-bottom: 1px solid var(--rossa-border);
  margin-bottom: 14px;
}
body.rossa-collapse-on .rossa-screen__head:hover .rossa-screen__heading { color: var(--rossa-teal); }
.rossa-collapse__chev {
  margin-left: auto;
  color: var(--rossa-muted);
  font-size: 13px;
  transition: transform .15s ease;
}
.rossa-collapse.is-collapsed .rossa-collapse__chev { transform: rotate(-90deg); }

/* folded: everything after the head disappears */
.rossa-collapse.is-collapsed .rossa-screen__head ~ * { display: none !important; }
body.rossa-collapse-on .rossa-collapse.is-collapsed { padding-bottom: 4px; }

/* El JS reparenta los seis wrappers a este contenedor. */
body.rossa-collapse-on .rossa-collapse-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  align-items: start;
  max-width: 1200px;
  margin: 14px auto;
}
body.rossa-collapse-on .rossa-collapse-grid .rossa-ctr-block {
  margin: 0;
  max-width: none;
}
body.rossa-collapse-on .rossa-collapse-grid .rossa-collapse:not(.is-collapsed) { grid-column: 1 / -1; }
@media (max-width: 900px){
  body.rossa-collapse-on .rossa-collapse-grid { grid-template-columns: 1fr; }
}
/* the emptied legacy column containers */
body.rossa-collapse-on .rossa-ctr-booking { display: none; }

/*=============================================================================
  28. VER RESERVA — desplegables estilo gestor_usuarios
=============================================================================*/
/* Activo solo bajo body.rossa-scopes-on; los bloques los envuelve js/rossa/ver_reserva.js. */
body.rossa-scopes-on .rossa-scope-list {
  display: grid;
  grid-template-columns: 1fr 1fr;   /* dos por fila: izquierda / derecha */
  align-items: start;
  gap: 14px;
  width: 100%;
  max-width: none;                  /* usa TODO el ancho disponible, sin bordes */
  margin: 16px 0;
}
/* Filas alineadas arriba: una tarjeta abierta no debe estirar a su pareja. */
@media (max-width: 900px){
  body.rossa-scopes-on .rossa-scope-list { grid-template-columns: 1fr; }
}
body.rossa-scopes-on .rossa-ctr-booking { display: none; }   /* vaciados por el JS */
body.rossa-scopes-on .rossa-scope-children .rossa-ctr-block {
  display: block;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 4px 10px 12px;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
body.rossa-scopes-on .rossa-scope-children .rossa-ctr { width: 100% !important; }
/* la cabecera del grupo ya nombra el bloque: fuera h1 e iconos flotantes */
body.rossa-scopes-on .rossa-scope-children .rossa-ctr > h1 { display: none; }
body.rossa-scopes-on .rossa-scope-children .rossa-ctr-block > div[class*="rossa-ctr__icon"] { display: none; }
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__buttons { display: none !important; }
body.rossa-scopes-on .rossa-scope-name i { color: var(--rossa-teal); margin-right: 8px; }
/* sin checkbox/meta en ver_reserva: empuja el chevron al borde derecho como en edit_user */
body.rossa-scopes-on .rossa-scope-name { margin-right: auto; font-size: 15px; }
body.rossa-scopes-on .rossa-scope-head { padding: 12px 16px; }

/* Los bloques .rossa-ctr* se diseñaron para una tarjeta de 520px: se neutralizan sus anchos. */
body.rossa-scopes-on .rossa-scope-children .rossa-ctr { align-items: center; }
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__main-content {
  width: 100%;
}
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__row,
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__commentary,
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__client-buttons {
  width: 100%;
  justify-content: center;
  gap: 14px;
  flex-wrap: wrap;
}
body.rossa-scopes-on .rossa-scope-children .rossa-box__dates {
  grid-template-columns: repeat(4, minmax(110px, 1fr));
  width: 100%;
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
}
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__data-client { justify-content: center; text-align: center; }
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__huespedes,
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__data-huesped { justify-content: center; }

body.rossa-scopes-on .rossa-scope-children .rossa-ctr__btn-comunicaciones,
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__btn-huespedes,
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__btn-status,
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__btn-card,
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__btn-iva,
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__btn-bill,
body.rossa-scopes-on .rossa-scope-children .rossa-ctr__btn-tipo-facturacion {
  display: flex !important;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  align-items: center;
  width: auto !important;
  grid-template-columns: none !important;
}
/* Botones compactos como en el resto de la app (no losas) */
body.rossa-scopes-on .rossa-scope-children .rossa-ctr .rossa-btn--reserva,
body.rossa-scopes-on .rossa-scope-children .rossa-ctr .rossa-btn--default,
body.rossa-scopes-on .rossa-scope-children .rossa-ctr .rossa-btn--negative {
  width: auto !important;
  min-width: 0 !important;
  flex: 0 0 auto !important;
  text-align: center !important;
  padding: 9px 16px !important;
}
/* Inputs/textarea a un ancho de pantalla, no de tarjeta estrecha */
body.rossa-scopes-on .rossa-scope-children .rossa-ctr input[type="text"],
body.rossa-scopes-on .rossa-scope-children .rossa-ctr input[type="email"],
body.rossa-scopes-on .rossa-scope-children .rossa-ctr input[type="tel"] { width: min(360px, 100%); height: 38px; box-sizing: border-box; }
body.rossa-scopes-on .rossa-scope-children .rossa-ctr textarea { width: min(520px, 100%); min-height: 84px; box-sizing: border-box; }
body.rossa-scopes-on #bloque-cliente .rossa-box__dates {
  grid-template-columns: repeat(4, minmax(110px, 1fr));
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
}
body.rossa-scopes-on #bloque-cliente .rossa-ctr__data-client {
  justify-content: center;
  text-align: center;
}

/*=============================================================================
  27. PAGE HELP ICON — badge "?" junto al <h1> (span.tippy.rossa-help[title])
=============================================================================*/
/* Scoped al <span>: los <p class="rossa-help"> de los formularios conservan su estilo. */
/* El «?» sigue en el DOM (textContent de help_modal_page.php) y se tapa con font-size:0. */
span.rossa-help {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  margin-left: 12px;
  padding: 0;
  border: none;
  border-radius: 0;
  background: none;
  color: var(--rossa-stroke);
  font-size: 0;
  line-height: 1;
  vertical-align: middle;
  cursor: help;
  user-select: none;
  transition: color .15s ease;
}
span.rossa-help::before {
  content: "";
  display: block;
  width: 24px;
  height: 24px;
  background-color: currentColor;
  -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-question-mark.svg");
          mask-image: url("https://cdn.rossa.app/icons/circle-question-mark.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}
span.rossa-help:hover { color: var(--rossa-petrol); }

/*=============================================================================
  29. SCREEN: LOGIN  (body.lologin — login / forgot_password / reset_password)
=============================================================================*/
/* rossa.css va LAST en los tres <head> propios: el #footer fijo de §10 se re-sobrescribe aquí. */
body.lologin {
  display: flex;               /* two columns: brand panel | form */
  flex-direction: row;
  align-items: stretch;
  min-height: 100vh;
  margin: 0;
  background: var(--rossa-white);   /* cancels lydia's textura.jpg tile */
  font-family: var(--rossa-font);
}

/* ── LEFT: teal brand panel ─────────────────────────────────────────────── */
body.lologin .rossa-login-aside {
  position: relative;
  flex: 0 0 45%;
  max-width: 45%;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  justify-content: center;     /* tagline sits vertically centered */
  padding: 56px 64px;
  background: var(--rossa-red);   /* brand pink of the ROSSA logo */
  overflow: hidden;
}
/* The red ROSSA wordmark rendered solid white on the pink field */
body.lologin .rossa-login-aside-logo {
  position: absolute;
  top: 48px;
  left: 64px;
  width: 150px;
  height: auto;
  filter: brightness(0) invert(1);
}
body.lologin .rossa-login-aside-title {
  max-width: 12ch;
  margin: 0;
  color: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: clamp(32px, 3.4vw, 52px);
  font-weight: 700;
  line-height: 1.06;
  letter-spacing: -.01em;
}

/* ── RIGHT: form column ─────────────────────────────────────────────────── */
body.lologin .rossa-login-main {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  background: var(--rossa-white);
}

/* The old white card with drop shadow dissolves into the flat column */
body.lologin #registro {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;     /* vertically centered form block */
  align-items: center;         /* centers the 420px column horizontally */
  box-sizing: border-box;
  width: auto;
  margin: 0;
  padding: 48px clamp(24px, 6vw, 96px);
  background: var(--rossa-white);
  box-shadow: none;
  border: 0;
  text-align: left;
}
/* Every direct block shares the same 420px column, left-aligned */
body.lologin #registro > * {
  width: 100%;
  max-width: 420px;
}

/* Heading block (mockup: "Iniciar sesión" + muted subtitle) */
body.lologin .rossa-login-head { margin-bottom: 28px; }
body.lologin .rossa-login-title {
  margin: 0 0 6px;
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  font-size: clamp(26px, 2.4vw, 34px);
  font-weight: 700;
  line-height: 1.1;
}
body.lologin .rossa-login-sub {
  margin: 0;
  color: var(--rossa-muted);
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 400;
}

/* Feedback lines: bare bold text, no bordered box */
body.lologin p.error,
body.lologin p.ok {
  box-sizing: border-box;
  margin: 0 0 16px;
  padding: 10px 12px;
  border: 0 !important;   /* lydia: `.error{border:#C00 2px solid !important}` */
  border-radius: var(--rossa-radius);
  background: transparent;
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.3;
  text-align: left;
}
body.lologin p.error { color: var(--rossa-red); background: var(--rossa-salmon); }
body.lologin p.ok,
body.lologin p.ok.login-msg-ok {
  color: var(--rossa-green-fig);
  background: var(--rossa-strip);
  font-size: 14px;
}

/* Form wrapper + fieldset: drop lydia's fixed height/border/padding */
body.lologin #formy { width: 100%; }
body.lologin #field_reg {
  height: auto;
  margin: 0;
  padding: 0;
  border: 0;
  color: var(--rossa-ink);
}
/* legacy <br/> spacers — the .campos margins below replace them */
body.lologin #field_reg br { display: none; }

/* Field block: full-width label-over-input */
body.lologin .campos {
  width: 100%;
  margin: 0 0 18px;
}
body.lologin .campos label {
  display: block;
  width: auto;
  padding: 0 0 8px;
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 600;
}
body.lologin .campos input {
  box-sizing: border-box;
  width: 100%;
  height: 46px;
  padding: 11px 14px;
  background-color: var(--rossa-surface-2);   /* soft grey fill (mockup) */
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 400;
}
body.lologin .campos input::placeholder { color: var(--rossa-muted); }
body.lologin .campos input:focus {
  outline: none;
  background-color: var(--rossa-white);
  border-color: var(--rossa-red);
  box-shadow: 0 0 0 3px rgba(231, 0, 76, .14);
}
body.lologin .campos input.error { border-color: var(--rossa-red); }

/* Button row: full-width teal CTA (mockup) */
body.lologin #field_reg > div:not(.campos) {
  width: 100%;
  margin: 4px 0 0;
  text-align: left;
}
/* beats lydia's `#field_reg .admin_boton` (red, 220px) AND rossa §3 teal */
body.lologin #field_reg .admin_boton {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  height: 48px;
  padding: 12px 16px;
  background-color: var(--rossa-red);
  border: 0;
  border-radius: var(--rossa-radius);
  color: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 600;
  line-height: 1.2;
  cursor: pointer;
  transition: background-color .15s ease;
}
body.lologin #field_reg .admin_boton:hover,
body.lologin #field_reg .admin_boton:active {
  background-color: var(--rossa-red-dark);
}

/* Secondary links (¿Has olvidado tu contraseña? / Volver al login) */
body.lologin .login-link-container {
  margin: 16px 0 0;
  text-align: left;
}
body.lologin .login-link {
  color: var(--rossa-red);
  font-family: var(--rossa-font);
  font-size: 13px;
}
body.lologin .login-link:hover { color: var(--rossa-red-dark); }

/* Footer: small muted credit, right-aligned at the bottom of the form column */
body.lologin #creditoslog {
  margin-top: auto;            /* hugs the bottom of .rossa-login-main */
  padding: 16px clamp(24px, 6vw, 96px);
  font-weight: 400;
  text-shadow: none;
}
body.lologin #creditoslog #footer {
  position: static;
  float: none;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;   /* mockup: footer credits bottom-right */
  gap: 10px;
  border-top: 0;
  background: transparent;
  font-size: 13px !important;  /* beats lydia's 14px !important */
  font-weight: 400;
  text-transform: none;
  text-shadow: none;
  color: var(--rossa-muted);
}
body.lologin #creditoslog #footer a { color: var(--rossa-muted); }
body.lologin #creditoslog #footer #footer-logo img { height: 20px; }

/* ── Responsive: tablet/landscape (861–1024) mantiene las dos columnas ── */
@media (max-width: 1024px) and (min-width: 861px) {
  body.lologin .rossa-login-aside { flex-basis: 42%; max-width: 42%; padding: 48px 44px; }
  body.lologin #registro { padding: 40px clamp(24px, 5vw, 64px); }
}

@media (max-width: 860px) {
  body.lologin { flex-direction: column; min-height: 100vh; }
  body.lologin .rossa-login-aside {
    flex: 0 0 auto;
    max-width: none;
    justify-content: flex-start;
    align-items: flex-start;      /* logo + tagline flush left (mockup) */
    gap: 8px;
    padding: 18px 26px 22px;
  }
  /* Logo_200x200.png es un lienzo cuadrado: `cover` recorta su transparencia arriba y abajo. */
  body.lologin .rossa-login-aside-logo {
    position: static;
    margin: 0;
    width: 126px;
    height: 34px;
    object-fit: cover;
    object-position: center;
  }
  body.lologin .rossa-login-aside-title {
    max-width: 22ch;
    font-size: 19px;
    line-height: 1.22;
    letter-spacing: 0;
  }
  body.lologin .rossa-login-main { flex: 1 1 auto; }
  body.lologin #registro { justify-content: flex-start; align-items: center; padding: 44px 28px 32px; }
  body.lologin .rossa-login-head { text-align: center; }  /* mockup: heading centered */
  body.lologin #creditoslog { padding: 16px 28px 20px; }
  body.lologin #creditoslog #footer {
    justify-content: center;
    padding-top: 18px;
    border-top: 1px solid var(--rossa-border);
    text-align: center;
  }
}

/* Phones: collapse the hero further; tighten the form spacing. */
@media (max-width: 560px) {
  body.lologin .rossa-login-aside { gap: 7px; padding: 16px 22px 20px; }
  body.lologin .rossa-login-aside-logo { width: 112px; height: 30px; }
  body.lologin .rossa-login-aside-title { font-size: 17px; }
  body.lologin #registro { justify-content: flex-start; padding: 36px 22px 32px; }
  body.lologin .rossa-login-head { margin-bottom: 22px; }
  body.lologin .rossa-login-title { font-size: 26px; }
  body.lologin .campos { margin-bottom: 14px; }
}
/*
  28. SCREEN: Página de Reserva  (module=web_content)
=============================================================================*/
#tabs_pagreserva {
  margin-bottom: 18px;
}
/* Panel plano: sin el borde gris legacy de .cont (common.css) */
.rossa-webcontent { padding: 0; }
.rossa-webcontent .cont { border: 0; }
.rossa-webcontent > .cont > h1:first-child { margin-top: 0; }
/* Oculta el "Volver" al selector de ayudas (no aplica en el panel unificado) */
.rossa-webcontent a[href*="module=help_selector"] { display: none !important; }
@media (max-width: 700px) {
  /* El actionbar fijo al pie tapaba el final de la sección; margen algo mayor que su alto. */
  #contenido_admin .secciones_tabs.rossa-webcontent {
    margin-bottom: 90px;
  }
}

/* ---- Listados como TARJETAS */
.rossa-wc-list { margin-top: 8px; }
.rossa-wc-card {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-left: 4px solid var(--rossa-green-fig);   /* acento teal-verde = .crule.on (--cpl) */
  border-radius: var(--rossa-radius);
  margin-bottom: 8px;
  transition: box-shadow .15s ease, border-color .15s ease;
}
.rossa-wc-card:hover { box-shadow: 0 2px 10px rgba(32, 92, 104, .10); }
.rossa-wc-card--off { border-left-color: var(--rossa-border); opacity: .6; }
.rossa-wc-card--off:hover { opacity: .85; }
.rossa-wc-card__top {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  flex-wrap: wrap;
}
.rossa-wc-card__dot { font-size: 9px; line-height: 1; color: var(--rossa-green-fig); }
.rossa-wc-card--off .rossa-wc-card__dot { color: var(--rossa-muted); }
.rossa-wc-card__name { font-size: 14px; font-weight: 700; color: var(--rossa-ink); }
.rossa-wc-card__pill {
  font-size: 10px;
  font-weight: 700;
  color: var(--rossa-muted);
  background: var(--rossa-strip);
  padding: 2px 8px;
  border-radius: var(--rossa-radius-pill);
  letter-spacing: .02em;
}
.rossa-wc-card__meta { font-size: 12px; color: var(--rossa-muted); font-style: italic; }
.rossa-wc-card__actions { margin-left: auto; display: flex; gap: 8px; align-items: center; }
/* alinea verticalmente los iconos-acción legacy dentro de la tarjeta */
.rossa-wc-card__actions a { display: inline-flex; align-items: center; }
.rossa-wc-card__actions a img { vertical-align: middle; }
/* "Ver" / botón primario dentro de la tarjeta: sin el margin centrado de §18 */
.rossa-wc-card__actions .admin_boton { margin: 0 !important; display: inline-flex; }
/* Badges de tipo (Creado por el sistema / Enlace / Texto) — paleta comunicaciones */
.rossa-wc-tag {
  display: inline-block;
  padding: 2px 9px;
  border-radius: var(--rossa-radius-pill);
  font-size: 11px;
  font-weight: 700;
  white-space: nowrap;
}
.rossa-wc-tag--sys  { background: #dde8eb; color: var(--rossa-navy); }   /* creado por el sistema */
.rossa-wc-tag--link { background: #d0f0ed; color: var(--rossa-petrol); } /* enlace */
.rossa-wc-tag--text { background: #fef9c3; color: #7a5c00; }             /* texto */
/* "N sub-botones": señal de que el botón principal tiene hijos desplegables */
.rossa-wc-tag--subs {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-cyan);
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.rossa-wc-tag--subs i { font-size: 11px; }

/* ---- Sub-botones desplegables dentro de la tarjeta del botón de ayuda (<details>) ---- */
.rossa-wc-subs { border-top: 1px solid var(--rossa-border); }
.rossa-wc-subs > .rossa-wc-subs__head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  cursor: pointer;
  list-style: none;
  user-select: none;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--rossa-muted);
}
.rossa-wc-subs > .rossa-wc-subs__head::-webkit-details-marker { display: none; }
.rossa-wc-subs > .rossa-wc-subs__head::marker { content: ""; }
.rossa-wc-subs > .rossa-wc-subs__head:hover { color: var(--rossa-teal); }
.rossa-wc-subs__chevron { font-size: 11px; transition: transform .15s ease; }
.rossa-wc-subs[open] > .rossa-wc-subs__head .rossa-wc-subs__chevron { transform: rotate(180deg); }
.rossa-wc-subs__list { padding: 0 16px 10px 28px; }
.rossa-wc-sub {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 8px 0;
  border-top: 1px solid var(--rossa-hairline-soft);
}
.rossa-wc-sub--off { opacity: .6; }
.rossa-wc-sub--off .rossa-wc-card__dot { color: var(--rossa-muted); }
.rossa-wc-sub__name { font-size: 13px; font-weight: 600; color: var(--rossa-ink); }
.rossa-wc-subs__foot { padding-top: 8px; font-size: 12px; }
.rossa-wc-subs__foot a { color: var(--rossa-cyan-fig); text-decoration: none; }
.rossa-wc-subs__foot a:hover { text-decoration: underline; }

/* Sub-fila de la tarjeta: espejo de .crule-hr + .crule-pipe de Reglas de envío. */
.rossa-wc-card__hr { height: 1px; background: var(--rossa-border); margin: 0 16px; opacity: .7; }
.rossa-wc-card__sub {
  padding: 9px 16px 11px;
  font-size: 13px;
  color: var(--rossa-muted);
  display: flex;
  gap: 8px;
  align-items: baseline;
  flex-wrap: wrap;
  line-height: 1.5;
}
.rossa-wc-card__sub-label {
  flex-shrink: 0;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--rossa-muted);
}
.rossa-wc-card__sub p { margin: 0; }
/* Las tablas de drill-down se renderizan como .rossa-wc-card: no hay tablas en el panel. */

/* ── Tab "Previsualizar" (.rossa-pv): iframe de pageBookingClients/demo.php ── */
.rossa-pv { margin-top: 4px; }
.rossa-pv__controls {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 12px 16px;
  padding: 0 0 16px;
  border-bottom: 1px solid var(--rossa-border);
}
.rossa-pv__field { display: flex; flex-direction: column; gap: 5px; min-width: 12rem; }
.rossa-pv__field--narrow { min-width: 8rem; }
.rossa-pv__field--grow { margin-left: auto; min-width: 0; }
.rossa-pv__label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--rossa-muted);
}
.rossa-pv__field select { width: 100%; }
.rossa-pv__actions { display: flex; gap: 8px; }
.rossa-pv__actions .admin_boton { margin: 0; }

/* Conmutador Móvil / Ordenador */
.rossa-pv__seg {
  display: inline-flex;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  overflow: hidden;
  background: #fff;
}
.rossa-pv__segbtn {
  appearance: none;
  border: 0;
  background: #fff;
  color: var(--rossa-muted);
  font: 600 12px/1 var(--rossa-font);
  padding: 9px 12px;
  cursor: pointer;
}
.rossa-pv__segbtn + .rossa-pv__segbtn { border-left: 1px solid var(--rossa-border); }
.rossa-pv__segbtn.is-on { background: var(--rossa-teal); color: #fff; }

/* Barra de fases */
.rossa-pv__phases {
  display: flex;
  align-items: center;
  gap: 2px;
  flex-wrap: wrap;
  padding: 10px 0 0;
}
.rossa-pv__phase {
  appearance: none;
  border: 0;
  background: none;
  border-bottom: 2px solid transparent;
  color: var(--rossa-muted);
  font: 600 13px/1 var(--rossa-font);
  padding: 10px 12px;
  cursor: pointer;
  white-space: nowrap;
  transition: color .15s ease, border-color .15s ease;
}
.rossa-pv__phase:hover { color: var(--rossa-ink); }
.rossa-pv__phase.is-on { color: var(--rossa-teal); border-bottom-color: var(--rossa-teal); }
.rossa-pv__nav {
  appearance: none;
  border: 1px solid var(--rossa-border);
  background: #fff;
  color: var(--rossa-teal);
  border-radius: var(--rossa-radius);
  font-size: 12px;
  line-height: 1;
  padding: 8px 10px;
  cursor: pointer;
}
.rossa-pv__nav:hover { border-color: var(--rossa-teal); }

/* Escenario de la previsualización */
.rossa-pv__stage {
  margin-top: 14px;
  padding: 20px 12px;
  background: var(--rossa-surface);
  border-radius: 10px;
}
.rossa-pv__device {
  position: relative;               /* ancla del indicador de carga */
  max-width: 420px;
  margin: 0 auto;
  background: #fff;
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  overflow: hidden;
}
.rossa-pv__device--ordenador { max-width: 100%; }
.rossa-pv__device iframe {
  display: block;
  width: 100%;
  height: 760px;
  border: 0;
  transition: opacity .2s ease;
}

/* El iframe se recarga entero al cambiar de fase: sin aviso parece que no ha pasado nada. */
.rossa-pv__status {
  margin: 8px 2px 0;
  min-height: 1.2em;
  font-size: 12px;
  color: var(--rossa-muted);
}
.rossa-pv__device.is-loading iframe { opacity: .18; }
.rossa-pv__loading {
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;
  z-index: 2;
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  background: rgba(255, 255, 255, .72);
}
.rossa-pv__device.is-loading .rossa-pv__loading { display: flex; }
.rossa-pv__spinner {
  width: 26px;
  height: 26px;
  border: 2px solid var(--rossa-border);
  border-top-color: var(--rossa-teal);
  border-radius: 50%;
  animation: rossa-pv-spin .7s linear infinite;
}
.rossa-pv__loadingtxt {
  font-size: 12px;
  font-weight: 600;
  color: var(--rossa-teal);
}
@keyframes rossa-pv-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .rossa-pv__spinner { animation-duration: 2.4s; }
  .rossa-pv__device iframe { transition: none; }
}
@media (max-width: 700px) {
  .rossa-pv__field--grow { margin-left: 0; }
  .rossa-pv__stage { padding: 12px 6px; }
  .rossa-pv__device iframe { height: 620px; }
}

/*=============================================================================
  29. SCREEN: Creación de preguntas frecuentes y de vídeos
      (module=add_pregunta_v2 / add_video_step_v2)
=============================================================================*/
/* Scope #contenido_admin.rossa-wc-edit: el ID da especificidad sobre lo legacy sin !important. */

/* Tablas planas y blancas (anula el striping/fondos de table.estandar) */
#contenido_admin.rossa-wc-edit table.estandar { border-spacing: 0; background: var(--rossa-white); margin-bottom: 22px; }
#contenido_admin.rossa-wc-edit table.estandar td {
  background: var(--rossa-white);
  border: 0;
  border-radius: 0;
  text-align: left;
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  padding: 6px 2px;
}

/* ── Canales: chips seleccionables (pill, tinte teal al marcar) ───────────── */
#contenido_admin.rossa-wc-edit .rossa-canales { margin: 4px 0 24px; }
#contenido_admin.rossa-wc-edit .rossa-canales__title,
#contenido_admin.rossa-wc-edit .rossa-estcards-head__title {
  display: block;
  color: var(--rossa-teal);
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 700;
  text-transform: none;
  border-bottom: 2px solid var(--rossa-teal);
  padding: 18px 2px 8px;
}
#contenido_admin.rossa-wc-edit .rossa-canales__hint { color: var(--rossa-muted); font-size: 12px; font-weight: 400; }
#contenido_admin.rossa-wc-edit .rossa-canales__bar { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0; }
#contenido_admin.rossa-wc-edit .rossa-canales__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 12px;
  max-height: 30vh;
  overflow-y: auto;
  padding-right: 4px;
}
#contenido_admin.rossa-wc-edit .rossa-canal-card {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 12px 14px;
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
  cursor: pointer;
  user-select: none;
  transition: background .15s ease, border-color .15s ease, color .15s ease;
}
#contenido_admin.rossa-wc-edit .rossa-canal-card:hover { border-color: var(--rossa-teal); }
#contenido_admin.rossa-wc-edit .rossa-canal-card input {
  accent-color: var(--rossa-teal);
  width: 15px;
  height: 15px;
  margin: 0;
  flex-shrink: 0;
  cursor: pointer;
}
#contenido_admin.rossa-wc-edit .rossa-canal-card:has(input:checked) {
  background: var(--rossa-tint);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
  font-weight: 600;
}

/* ── Cabecera de estancias: título + buscador + "Marcar Todos" ────────────── */
#contenido_admin.rossa-wc-edit .rossa-estcards-head { margin: 4px 0 14px; }
#contenido_admin.rossa-wc-edit .rossa-estcards-head__tools {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 12px;
}
#contenido_admin.rossa-wc-edit .rossa-estcards-search {
  width: 250px;               /* = ancho base de una card de estancia (grid minmax 250px) */
  max-width: 100%;
  height: 38px;               /* mismo alto que el botón "Marcar Todos" */
  box-sizing: border-box;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 0 12px;
  font-size: 13px;
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
}
#contenido_admin.rossa-wc-edit .rossa-estcards-search:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}

/* Botoneras "Marcar..." (canales y estancias) */
#contenido_admin.rossa-wc-edit .rossa-canales__bar button,
#contenido_admin.rossa-wc-edit .rossa-estcards-head button {
  display: inline-flex;
  align-items: center;
  height: 38px;               /* mismo alto que el buscador */
  box-sizing: border-box;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 600;
  padding: 0 14px;
  margin: 0;
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease;
}
#contenido_admin.rossa-wc-edit .rossa-canales__bar button:hover,
#contenido_admin.rossa-wc-edit .rossa-estcards-head button:hover { background: var(--rossa-surface); border-color: #c7cfcf; }

/* ── Estancias: la card es el EDIFICIO; dentro, estancias seleccionables una a una ── */
#contenido_admin.rossa-wc-edit .rossa-estcards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 12px;
  margin-bottom: 22px;
  max-height: 55vh;
  overflow-y: auto;
  padding-right: 4px;
}
#contenido_admin.rossa-wc-edit .rossa-estcard {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 12px 14px;
  transition: background .15s ease, border-color .15s ease;
}
#contenido_admin.rossa-wc-edit .rossa-estcard:has(input.estancia_check:checked) {
  background: var(--rossa-tint);
  border-color: var(--rossa-teal);
}
#contenido_admin.rossa-wc-edit .rossa-estcard__name {
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-ink);
  border-bottom: 1px solid var(--rossa-border);
  padding-bottom: 7px;
  margin-bottom: 9px;
}
#contenido_admin.rossa-wc-edit .rossa-estcard__rooms { display: flex; flex-direction: column; gap: 3px; }
#contenido_admin.rossa-wc-edit .rossa-estcard__room {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
  line-height: 1.4;
  padding: 5px 7px;
  border-radius: 6px;
  cursor: pointer;
  transition: background .12s ease, color .12s ease;
}
#contenido_admin.rossa-wc-edit .rossa-estcard__room:hover { background: var(--rossa-strip); }
#contenido_admin.rossa-wc-edit .rossa-estcard__room:has(input:checked) {
  background: rgba(32, 92, 104, .10);   /* algo más visible que el fondo de la card */
  color: var(--rossa-teal);
  font-weight: 600;
}
#contenido_admin.rossa-wc-edit .rossa-estcard__room input.estancia_check {
  accent-color: var(--rossa-teal);
  width: 15px;
  height: 15px;
  margin: 0;
  flex-shrink: 0;
  cursor: pointer;
}

#contenido_admin.rossa-wc-edit #create_pregunta_v2 .rossa-estcard__rooms, #contenido_admin.rossa-wc-edit #create_video_v2 .rossa-estcard__rooms {
  --rossa-estcard-room-height: 34px;
  --rossa-estcard-visible-rooms: 5;
  --rossa-estcard-expanded-rooms: 10;
  display: flex;
  flex-direction: column;
  gap: 3px;
  max-height: calc((var(--rossa-estcard-room-height) * var(--rossa-estcard-visible-rooms)) + (3px * (var(--rossa-estcard-visible-rooms) - 1)));
  overflow: hidden;
  padding-right: 4px;
}
#contenido_admin.rossa-wc-edit #create_pregunta_v2 .rossa-estcard.is-expanded .rossa-estcard__rooms, #contenido_admin.rossa-wc-edit #create_video_v2 .rossa-estcard.is-expanded .rossa-estcard__rooms {
  max-height: calc((var(--rossa-estcard-room-height) * var(--rossa-estcard-expanded-rooms)) + (3px * (var(--rossa-estcard-expanded-rooms) - 1)));
  overflow-y: auto;
}
#contenido_admin.rossa-wc-edit #create_pregunta_v2 .rossa-estcard__room, #contenido_admin.rossa-wc-edit #create_video_v2 .rossa-estcard__room {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 34px;
  padding: 4px 6px;
  border-radius: 6px;
}
#contenido_admin.rossa-wc-edit #create_pregunta_v2 .rossa-estcard__room:hover, #contenido_admin.rossa-wc-edit #create_video_v2 .rossa-estcard__room:hover {
  background: var(--rossa-strip);
}
#contenido_admin.rossa-wc-edit #create_pregunta_v2 .rossa-estcard__toggle, #contenido_admin.rossa-wc-edit #create_video_v2 .rossa-estcard__toggle {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  background: none;
  border: none;
  color: var(--rossa-teal);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  padding: 4px 0 0;
  text-decoration: underline;
  box-shadow: none;
}
#contenido_admin.rossa-wc-edit #create_pregunta_v2 .rossa-estcard__toggle:hover, #contenido_admin.rossa-wc-edit #create_video_v2 .rossa-estcard__toggle:hover {
  color: var(--rossa-green);
  background: none;
  border: none;
}
#contenido_admin.rossa-wc-edit #create_pregunta_v2 .rossa-estcard__toggle[hidden], #contenido_admin.rossa-wc-edit #create_video_v2 .rossa-estcard__toggle[hidden] {
  display: none;
}

/* ── Bloques de idioma: banner teal a todo el ancho (separador notorio) ────── */
#contenido_admin.rossa-wc-edit table.estandar td { vertical-align: top; padding: 8px 10px 8px 2px; }
#contenido_admin.rossa-wc-edit table.estandar td[width="15%"] {
  color: var(--rossa-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  padding-top: 14px;
}
/* El <td> solo aporta la separación superior (transparente) entre editor y banner. */
#contenido_admin.rossa-wc-edit table.estandar tr.rossa-lang-row > td {
  padding: 30px 0 0;
  background: transparent;
  vertical-align: top;
}
/* El banner es una caja teal IDÉNTICA para todos los idiomas. */
#contenido_admin.rossa-wc-edit .rossa-lang-banner {
  background: var(--rossa-tint);
  color: var(--rossa-teal);
  font-size: 16px;
  font-weight: 800;
  letter-spacing: .01em;
  text-transform: none;
  padding: 13px 16px;
  border-radius: var(--rossa-radius);
  border-left: 4px solid var(--rossa-teal);
}

/* Se excluye el buscador de estancias, que tiene su propio ancho/alto. */
#contenido_admin.rossa-wc-edit input[type="text"]:not(.rossa-estcards-search) {
  width: 100%;
  max-width: 520px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 9px 12px;
  font-size: 14px;
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
  box-sizing: border-box;
  height: auto;
}
#contenido_admin.rossa-wc-edit input[type="text"]:not(.rossa-estcards-search):focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}

/* Botonera fija al fondo */
#contenido_admin.rossa-wc-edit table.estandar td[colspan="2"]:has(input.admin_boton) {
  position: fixed;
  left: 260px;                    /* = ancho de #menu; deja libre el footer */
  right: 0;
  bottom: 0;
  z-index: 981;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin: 0;
  padding: 14px 20px;
  background: var(--rossa-surface-2);
  border-top: 1px solid var(--rossa-border);
  box-shadow: 0 -2px 10px rgba(20, 40, 60, .07);
  box-sizing: border-box;
  transition: left .7s ease;      /* acompaña el plegado del menú */
}
body.showhidemenu #contenido_admin.rossa-wc-edit table.estandar td[colspan="2"]:has(input.admin_boton) { left: 60px; }
@media (max-width: 700px) {
  #contenido_admin.rossa-wc-edit table.estandar td[colspan="2"]:has(input.admin_boton) { left: 0; }
  body.showhidemenu #contenido_admin.rossa-wc-edit table.estandar td[colspan="2"]:has(input.admin_boton) { left: 35px; }
}
/* La barra queda fuera del flujo: reservar hueco para que no tape el final */
#contenido_admin.rossa-wc-edit { padding-bottom: 84px; }

/* input y <a> heredan paddings distintos del legacy y salían con alturas diferentes. */
#contenido_admin.rossa-wc-edit td[colspan="2"] .admin_boton {
  margin: 0;
  min-width: 110px;
  padding: 9px 16px;
  box-sizing: border-box;
}
#contenido_admin.rossa-wc-edit a.admin_boton {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
#contenido_admin.rossa-wc-edit a.admin_boton:hover { background: var(--rossa-surface); color: var(--rossa-ink); }
/* Tipo seleccionado (Texto/Enlace) en el paso "Seleccionar tipo": teal lleno */
#contenido_admin.rossa-wc-edit a.admin_boton.rossa-tipo-active,
#contenido_admin.rossa-wc-edit a.admin_boton.rossa-tipo-active:hover {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}

/* --- Creación de ayudas (add_help_step_v2): selector de estancia ---------- */
#contenido_admin.rossa-wc-edit .rossa-helpsel__buttons { display: none; }

/* Acción destructiva con la forma de botón estándar (salmon + coral) */
#contenido_admin.rossa-wc-edit .button_load_content.eliminar_contenido,
#contenido_admin.rossa-wc-edit .button_load_content.eliminar_contenido:hover {
  background: var(--rossa-salmon);
  border: 1px solid var(--rossa-salmon);
  border-radius: var(--rossa-radius);
  color: var(--rossa-coral);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 700;
  text-transform: none;
  padding: 8px 14px;
  margin: 0;
  cursor: pointer;
  text-decoration: none;
}

/* Fila de control: label + desplegable + estado + eliminar */
#contenido_admin.rossa-wc-edit .rossa-helpsel {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin: 0 0 16px;
}
#contenido_admin.rossa-wc-edit .rossa-helpsel__label {
  font-family: var(--rossa-font);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--rossa-muted);
  min-width: 80px;
}
#contenido_admin.rossa-wc-edit .rossa-helpsel .select2 { min-width: 340px; }
/* max-width vence al width:100% inline que select2 hereda del <select>. */
#contenido_admin.rossa-wc-edit table.estandar .select2-container { max-width: 340px; }
/* Ayuda contextual del selector de estancia (aclara el flujo estancia↔contenido) */
#contenido_admin.rossa-wc-edit .rossa-helpsel__hint {
  margin: -6px 0 18px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--rossa-muted);
  max-width: 760px;
}
#contenido_admin.rossa-wc-edit .rossa-helpsel__hint strong { color: var(--rossa-ink); font-weight: 700; }
#contenido_admin.rossa-wc-edit .rossa-helpsel__hint-green { color: #0f8a6e; font-weight: 700; }

#contenido_admin.rossa-wc-edit table.estandar thead tr.cab_help td {
  color: var(--rossa-teal);
  font-size: 15px;
  font-weight: 700;
  text-transform: none;
  text-align: left;
  border-bottom: 2px solid var(--rossa-teal);
  padding: 18px 2px 8px;
}
#contenido_admin.rossa-wc-edit table.estandar tbody tr.cab_help td {
  color: var(--rossa-teal);
  font-size: 16px;
  font-weight: 700;
  text-transform: none;
  text-align: left;
  border-bottom: 2px solid var(--rossa-teal);
  padding: 24px 2px 10px;
}
#contenido_admin.rossa-wc-edit table.estandar td.cab {
  color: var(--rossa-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
}

/*=============================================================================
  30. SELECT2 (re-skin global, v4.1)
=============================================================================*/
/* El dropdown se monta en <body>: por eso estas reglas no van scoped. */
.select2-container--default .select2-selection--single {
  height: 36px;
  /* !important: ver_reserva.css fija border #bbb !important sobre este mismo selector */
  border: 1px solid var(--rossa-border) !important;
  border-radius: var(--rossa-radius);
  background-color: var(--rossa-white);
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 34px;
  padding-left: 12px;
}
.select2-container--default .select2-selection--single .select2-selection__arrow { height: 34px; }
.select2-container--default .select2-selection--single .select2-selection__arrow b {
  display: block;
  position: absolute;
  top: 50%;
  left: 50%;
  border: 0;
  width: 14px;
  height: 14px;
  margin: -7px 0 0 -7px;
  background-color: var(--rossa-muted);
  -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg");
          mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
  transition: transform .15s ease;
}
.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
  border: 0;
  transform: rotate(180deg);
}
.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--open .select2-selection--single {
  border-color: var(--rossa-teal) !important;
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .15);
}

/* Desplegable y buscador interno */
.select2-dropdown {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
  box-shadow: 0 6px 18px rgba(20, 40, 60, .10);
}
.select2-search--dropdown { padding: 8px; }
.select2-container--default .select2-search--dropdown .select2-search__field {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  padding: 6px 10px;
  outline: none;
}
.select2-container--default .select2-search--dropdown .select2-search__field:focus {
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .15);
}

/* Opciones y grupos */
.select2-results__option {
  font-size: 14px;
  padding: 7px 12px;
}
/* Cascada por orden (especificidades empatadas a propósito): tint < verde < hover teal. */
.select2-container--default .select2-results__option--selected,
.select2-container--default .select2-results__option[aria-selected="true"] {
  background-color: var(--rossa-tint);
  color: var(--rossa-ink);
}
/* Verde SOLO en la opción que tiene contenido. */
.select2-container--default .select2-results__option:has(> .rossa-opt-asignada) {
  background-color: rgba(25, 172, 138, .28);
}
.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable,
.select2-container--default .select2-results__option--highlighted[aria-selected] {
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
}
/* En la opción resaltada (fondo teal) el icono pasa a blanco para seguir viéndose. */
.select2-container--default .select2-results__option--highlighted img {
  filter: brightness(0) invert(1);
}
.select2-results__group {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}

/*=============================================================================
  31. SCREEN: Gestión de servicios para botón de ayuda (module=help_step_services)
=============================================================================*/
/* Scope: #contenido_admin.rossa-hss; el <label> hace que la card marque el checkbox, sin JS. */
.rossa-hss .section-info {
  background: var(--rossa-white) !important;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 16px 18px !important;
  margin-bottom: 20px;
}
.rossa-hss .section-info h3 { margin: 0 0 12px; font-size: 14px; font-weight: 700; color: var(--rossa-deep); }
.rossa-hss .section-info p  { margin: 3px 0; font-size: 13px; color: var(--rossa-ink); }

.rossa-hss-section__title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--rossa-teal);
  border-bottom: 1px solid var(--rossa-border);
  padding-bottom: 8px;
  margin: 22px 0 14px;
}
.rossa-hss-group { margin-bottom: 18px; }
.rossa-hss-group__title { font-size: 13px; font-weight: 700; color: var(--rossa-ink); margin-bottom: 10px; }
.rossa-svc-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 10px;
}
.rossa-svc-card {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 12px 14px;
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease;
}
.rossa-svc-card:hover { border-color: var(--rossa-teal); }
.rossa-svc-card:has(input:checked) { border-color: var(--rossa-teal); background: rgba(0, 168, 134, .08); }
.rossa-svc-card input[type="checkbox"] { margin: 2px 0 0; flex-shrink: 0; }
.rossa-svc-card__body { display: flex; flex-direction: column; gap: 2px; }
.rossa-svc-card__name { font-size: 13px; font-weight: 700; color: var(--rossa-ink); }
.rossa-svc-card__desc { font-size: 12px; color: var(--rossa-muted); }
.rossa-hss-actions {
  display: flex;
  gap: 10px;
  align-items: center;
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid var(--rossa-border);
}

.rossa-hss-actions .admin_boton {
  margin: 0 !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 9px 16px;
  line-height: 1.25;
  box-sizing: border-box;
  vertical-align: middle;
}

/* Feedback alert box styles for Gestor de Pagos */
.rossa-feedback {
  padding: 12px 16px;
  border-radius: var(--rossa-radius);
  margin-top: 15px;
  margin-bottom: 25px;
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 500;
}
.rossa-feedback--success {
  background: #d4edda;
  color: #155724;
  border: 1px solid #c3e6cb;
}
.rossa-feedback--error {
  background: #f8d7da;
  color: #721c24;
  border: 1px solid #f5c6cb;
}

/* Specific overrides for compact confirmation modals inside Gestor de Pagos */
.rossa-modal-overlay .rossa-modal.rossa-modal--confirm {
  max-width: 440px !important;
  text-align: left !important;
}
.rossa-modal--confirm .rossa-modal__title {
  text-align: left !important;
  margin: 0 !important;
  font-size: 16px !important;
  font-weight: 700 !important;
}
.rossa-modal--confirm .rossa-modal__head {
  justify-content: space-between !important;
  padding: 14px 20px !important;
}
.rossa-modal--confirm .rossa-modal__close {
  margin-left: auto !important;
}
.rossa-modal--confirm .rossa-modal__confirmation > div {
  display: flex !important;
  gap: 10px !important;
  justify-content: flex-end !important;
  margin-top: 25px !important;
  max-width: none !important;
  width: auto !important;
}
.rossa-modal--confirm .rossa-modal__confirmation p,
.rossa-modal--confirm .rossa-modal__confirmation {
  font-size: 15px !important;
  color: var(--rossa-ink) !important;
  margin: 0 !important;
  text-align: left !important;
  line-height: 1.5 !important;
}

/* Conviven con el .rossa-modal legacy de rossa_components.css (overlay fixed). */
.rossa-wc-edit .rossa-modal-overlay,
#modal-recurring-payment.rossa-modal-overlay,
#modal-refund-payment.rossa-modal-overlay,
#modal-loading-payment-transaction.rossa-modal-overlay,
#modal-transaction-successfully.rossa-modal-overlay,
#modal-transaction-failed.rossa-modal-overlay {
  position: fixed !important;
  inset: 0 !important;
  z-index: 2000 !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 24px !important;
  background: rgba(22, 41, 45, .45) !important;
}
.rossa-wc-edit .rossa-modal-overlay.is-open,
.rossa-wc-edit .rossa-modal-overlay.active,
#modal-recurring-payment.rossa-modal-overlay.is-open,
#modal-recurring-payment.rossa-modal-overlay.active,
#modal-refund-payment.rossa-modal-overlay.is-open,
#modal-refund-payment.rossa-modal-overlay.active,
#modal-loading-payment-transaction.rossa-modal-overlay.is-open,
#modal-loading-payment-transaction.rossa-modal-overlay.active,
#modal-transaction-successfully.rossa-modal-overlay.is-open,
#modal-transaction-successfully.rossa-modal-overlay.active,
#modal-transaction-failed.rossa-modal-overlay.is-open,
#modal-transaction-failed.rossa-modal-overlay.active { display: flex !important; }
.rossa-wc-edit .rossa-modal-overlay .rossa-modal,
#modal-recurring-payment.rossa-modal-overlay .rossa-modal,
#modal-refund-payment.rossa-modal-overlay .rossa-modal,
#modal-loading-payment-transaction.rossa-modal-overlay .rossa-modal,
#modal-transaction-successfully.rossa-modal-overlay .rossa-modal,
#modal-transaction-failed.rossa-modal-overlay .rossa-modal {
  display: flex !important;
  flex-direction: column !important;
  width: 100% !important;
  max-width: 680px !important;
  max-height: 80vh !important;
  background: var(--rossa-white) !important;
  border-radius: var(--rossa-radius) !important;
  font-family: var(--rossa-font) !important;
  color: var(--rossa-ink) !important;
  overflow: hidden !important;
  position: relative !important;
  height: auto !important;
  margin: auto !important;
  inset: unset !important;
}

/* Cabecera y scrollbar a sangre en los modales del GESTOR DE PAGOS */
#contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-modal__head,
#contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-modal__body,
#modal-recurring-payment .rossa-modal__head,
#modal-recurring-payment .rossa-modal__body,
#modal-refund-payment .rossa-modal__head,
#modal-refund-payment .rossa-modal__body,
#modal-loading-payment-transaction .rossa-modal__head,
#modal-loading-payment-transaction .rossa-modal__body,
#modal-transaction-successfully .rossa-modal__head,
#modal-transaction-successfully .rossa-modal__body,
#modal-transaction-failed .rossa-modal__head,
#modal-transaction-failed .rossa-modal__body {
  width: 100% !important;
  align-self: stretch !important;
  box-sizing: border-box !important;
}
#contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-modal__body,
#modal-recurring-payment .rossa-modal__body,
#modal-refund-payment .rossa-modal__body,
#modal-loading-payment-transaction .rossa-modal__body,
#modal-transaction-successfully .rossa-modal__body,
#modal-transaction-failed .rossa-modal__body {
  padding: 0 !important;
}

/*=============================================================================
  32. CDN ICON SET — Lucide SVGs from Cloudflare R2 (cdn.rossa.app/icons/)
=============================================================================*/
/* INVARIANTE: cada fa-* de (a) debe estar también en (b)+(c); solo en (a) sale en blanco. */
/* Sin mapear a propósito: fa-spin/fa-spinner/fa-circle/fa-pulse (animaciones de carga). */

/* (a) Shared: turn every MAPPED FA icon's ::before into a Lucide SVG mask. */
i.fa-home::before, i.fa-house-user::before,
i.fa-calendar::before, i.fa-calendar-alt::before, i.fa-calendar-week::before,
i.fa-calendar-check::before, i.fa-calendar-plus::before, i.fa-calendar-times::before,
i.fa-clock::before, i.fa-stopwatch::before, i.fa-history::before,
i.fa-search::before, i.fa-eye::before, i.fa-eye-slash::before,
i.fa-edit::before, i.fa-pen::before, i.fa-pencil::before,
i.fa-trash::before, i.fa-trash-alt::before,
i.fa-times::before, i.fa-times-circle::before,
i.fa-check::before, i.fa-check-circle::before, i.fa-circle-check::before, i.fa-check-square::before, i.fa-check-double::before,
i.fa-plus-circle::before, i.fa-plus-square::before, i.fa-exclamation-triangle::before,
i.fa-exclamation-circle::before, i.fa-exclamation::before, i.fa-question-circle::before,
i.fa-download::before, i.fa-power-off::before, i.fa-sign-in-alt::before,
i.fa-undo::before, i.fa-sync::before,
i.fa-cog::before, i.fa-cogs::before, i.fa-tools::before, i.fa-wrench::before,
i.fa-sliders-h::before,
i.fa-chevron-down::before, i.fa-chevron-up::before,
i.fa-chevron-left::before, i.fa-chevron-right::before,
i.fa-angle-left::before, i.fa-angle-right::before,
i.fa-angle-double-left::before, i.fa-angle-double-right::before,
i.fa-chevron-circle-left::before, i.fa-chevron-circle-right::before,
i.fa-arrow-circle-right::before,
i.fa-user::before, i.fa-user-tag::before, i.fa-user-clock::before,
i.fa-user-md::before, i.fa-user-tie::before, i.fa-user-graduate::before,
i.fa-landmark::before,
i.fa-users::before, i.fa-user-friends::before, i.fa-people-arrows::before,
i.fa-user-plus::before, i.fa-user-check::before, i.fa-user-slash::before,
i.fa-user-cog::before, i.fa-users-cog::before, i.fa-user-edit::before,
i.fa-user-shield::before, i.fa-shield-alt::before,
i.fa-id-card::before, i.fa-id-card-alt::before, i.fa-address-card::before,
i.fa-passport::before, i.fa-handshake::before, i.fa-concierge-bell::before,
i.fa-envelope::before, i.fa-mail-bulk::before,
i.fa-envelope-open::before, i.fa-envelope-open-text::before,
i.fa-comments::before, i.fa-sms::before, i.fa-whatsapp::before,
i.fa-phone::before, i.fa-phone-volume::before,
i.fa-bed::before, i.fa-door-closed::before, i.fa-door-open::before, i.fa-toilet::before,
i.fa-hotel::before, i.fa-building::before,
i.fa-key::before, i.fa-lock::before, i.fa-unlock-alt::before,
i.fa-map-marker-alt::before, i.fa-map-signs::before, i.fa-globe::before,
i.fa-swimming-pool::before, i.fa-dog::before, i.fa-coffee::before,
i.fa-glass-cheers::before,
i.fa-credit-card::before, i.fa-euro-sign::before,
i.fa-file-invoice-dollar::before, i.fa-receipt::before,
i.fa-percent::before, i.fa-percentage::before,
i.fa-chart-bar::before, i.fa-poll::before, i.fa-chart-line::before,
i.fa-tags::before, i.fa-tag::before,
i.fa-tasks::before, i.fa-list::before, i.fa-th-list::before, i.fa-stream::before,
i.fa-scroll::before, i.fa-newspaper::before, i.fa-bolt::before,
i.fa-language::before, i.fa-external-link-alt::before, i.fa-link::before, i.fa-share-square::before, i.fa-images::before,
i.fa-suitcase::before, i.fa-plus::before, i.fa-minus::before,
i.fa-play::before,
i.fa-bell::before,
/* --- iconos propios de marca (nombres en español en el bucket) --- */
i.fa-layer-group::before, i.fa-folder-open::before, i.fact-icon-folio::before, i.fa-ban::before,
i.fact-icon-folios::before, i.fact-icon-factura::before, i.rossa-icon-repeat-2::before, i.rossa-icon-carpeta-check::before,
i.rossa-icon-sliders-vertical::before, i.rossa-icon-unlink-2::before, i.rossa-icon-clock-plus::before,
i.rossa-icon-link-2::before,
i.rossa-icon-table-properties::before, i.rossa-icon-debug::before, i.rossa-icon-copiar-clonar::before,
i.fa-database::before, i.fa-spa::before, i.fa-file-import::before,
i.fa-file-alt::before, i.fa-code-branch::before,
i.fa-battery-full::before, i.fa-battery-three-quarters::before,
i.fa-battery-half::before, i.fa-battery-quarter::before,
i.fa-battery-empty::before,
i.fa-copy::before, i.fa-clone::before, i.fa-sitemap::before,
i.fa-object-group::before, i.fa-baby::before, i.fa-child::before,
i.fa-file-csv::before, i.fa-file-excel::before, i.fa-folder-plus::before,
i.fa-file-export::before, i.fa-table::before, i.fa-calculator::before,
i.fa-font::before, i.fa-magic::before, i.fa-minus-circle::before,
i.fa-leaf::before, i.fa-file-pdf::before,
i.fa-random::before, i.fa-exchange-alt::before, i.fa-compress::before,
i.fa-upload::before, i.fa-sort-up::before, i.fa-sort-down::before,
/* Cada nombre de aquí DEBE estar también en el mapa (c) o el icono sale en BLANCO. */
i.fa-suitcase-rolling::before,
i.fa-arrow-left::before, i.fa-arrow-right::before, i.fa-caret-down::before,
i.fa-sync-alt::before, i.fa-bars::before, i.fa-align-justify::before,
i.fa-list-alt::before, i.fa-info-circle::before, i.fa-image::before,
i.fa-camera::before, i.fa-photo-video::before, i.fa-video::before,
i.fa-video-camera::before, i.fa-desktop::before,
i.fa-barcode::before, i.fa-briefcase::before, i.fa-calendar-day::before,
i.fa-th::before, i.fa-sign::before, i.fa-clipboard-list::before,
i.fa-coins::before, i.fa-money-bill-alt::before, i.fa-hand-holding-usd::before,
i.fa-comment::before, i.fa-comment-dots::before, i.fa-compress-alt::before,
i.fa-file-archive::before, i.fa-file-contract::before, i.fa-file-invoice::before,
i.fa-filter::before, i.fa-flag::before, i.fa-hand-paper::before,
i.fa-id-badge::before, i.fa-parking::before, i.fa-pause-circle::before,
i.fa-pie-chart::before, i.fa-school::before, i.fa-sort::before,
i.fa-square::before, i.fa-table-columns::before, i.fa-tachometer-alt::before,
i.fa-unlink::before, i.fa-unlock::before, i.fa-user-circle::before,
i.fa-utensils::before,
/* Cada nombre de aquí DEBE estar también en el mapa (d). */
i.fa-star::before, i.fa-paper-plane::before, i.fa-lightbulb::before,
i.fa-infinity::before, i.fa-hashtag::before, i.fa-moon::before,
i.fa-box::before, i.fa-boxes::before, i.fa-robot::before,
i.fa-puzzle-piece::before, i.fa-th-large::before, i.fa-balance-scale::before,
i.fa-file-text-o::before, i.fa-file-pdf-o::before, i.fa-level-up::before,
i.fa-file-code::before, i.fa-balance-scale::before,
/* fa-tasas: clase dedicada (no fa-receipt). Debe estar también en el mapa (b). */
i.fa-tasas::before,
i.fa-bug::before {
  content: "";
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;          mask-repeat: no-repeat;
  -webkit-mask-position: center;           mask-position: center;
  -webkit-mask-size: contain;              mask-size: contain;
}

/* (b) Per-icon file map (FA class -> Lucide file in the bucket). */
i.fa-home::before, i.fa-house-user::before                                   { -webkit-mask-image: url("https://cdn.rossa.app/icons/house.svg");          mask-image: url("https://cdn.rossa.app/icons/house.svg"); }
i.fa-calendar::before, i.fa-calendar-alt::before, i.fa-calendar-week::before { -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar.svg");       mask-image: url("https://cdn.rossa.app/icons/calendar.svg"); }
i.fa-calendar-check::before                                                  { -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-check.svg"); mask-image: url("https://cdn.rossa.app/icons/calendar-check.svg"); }
i.fa-calendar-plus::before                                                   { -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-plus.svg");  mask-image: url("https://cdn.rossa.app/icons/calendar-plus.svg"); }
i.fa-calendar-times::before                                                  { -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-x.svg");     mask-image: url("https://cdn.rossa.app/icons/calendar-x.svg"); }
i.fa-clock::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/clock.svg");          mask-image: url("https://cdn.rossa.app/icons/clock.svg"); }
i.fa-stopwatch::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/timer.svg");          mask-image: url("https://cdn.rossa.app/icons/timer.svg"); }
i.fa-history::before                                                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/history.svg");        mask-image: url("https://cdn.rossa.app/icons/history.svg"); }
i.fa-search::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/search.svg");         mask-image: url("https://cdn.rossa.app/icons/search.svg"); }
i.fa-eye::before                                                             { -webkit-mask-image: url("https://cdn.rossa.app/icons/eye.svg");            mask-image: url("https://cdn.rossa.app/icons/eye.svg"); }
i.fa-eye-slash::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/eye-off.svg");        mask-image: url("https://cdn.rossa.app/icons/eye-off.svg"); }
i.fa-edit::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/square-pen.svg");     mask-image: url("https://cdn.rossa.app/icons/square-pen.svg"); }
i.fa-pen::before                                                             { -webkit-mask-image: url("https://cdn.rossa.app/icons/pen.svg");            mask-image: url("https://cdn.rossa.app/icons/pen.svg"); }
i.fa-pencil::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/pencil.svg");         mask-image: url("https://cdn.rossa.app/icons/pencil.svg"); }
i.fa-trash::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/trash.svg");          mask-image: url("https://cdn.rossa.app/icons/trash.svg"); }
i.fa-trash-alt::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/trash-2.svg");        mask-image: url("https://cdn.rossa.app/icons/trash-2.svg"); }
i.fa-times::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/x.svg");              mask-image: url("https://cdn.rossa.app/icons/x.svg"); }
i.fa-times-circle::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-x.svg");       mask-image: url("https://cdn.rossa.app/icons/circle-x.svg"); }
i.fa-check::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/check.svg");          mask-image: url("https://cdn.rossa.app/icons/check.svg"); }
i.fa-check-circle::before, i.fa-circle-check::before                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-check.svg");   mask-image: url("https://cdn.rossa.app/icons/circle-check.svg"); }
i.fa-check-square::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/square-check.svg");   mask-image: url("https://cdn.rossa.app/icons/square-check.svg"); }
i.fa-check-double::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/check-check.svg");    mask-image: url("https://cdn.rossa.app/icons/check-check.svg"); }
i.fa-plus-circle::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-plus.svg");    mask-image: url("https://cdn.rossa.app/icons/circle-plus.svg"); }
i.fa-plus-square::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/square-plus.svg");    mask-image: url("https://cdn.rossa.app/icons/square-plus.svg"); }
i.fa-exclamation-triangle::before                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/triangle-alert.svg"); mask-image: url("https://cdn.rossa.app/icons/triangle-alert.svg"); }
i.fa-exclamation-circle::before, i.fa-exclamation::before                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-alert.svg");   mask-image: url("https://cdn.rossa.app/icons/circle-alert.svg"); }
i.fa-question-circle::before                                                 { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-question-mark.svg");   mask-image: url("https://cdn.rossa.app/icons/circle-question-mark.svg"); }
i.fa-download::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/download.svg");       mask-image: url("https://cdn.rossa.app/icons/download.svg"); }
i.fa-power-off::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/power-off.svg");      mask-image: url("https://cdn.rossa.app/icons/power-off.svg"); }
i.fa-sign-in-alt::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/log-in.svg");         mask-image: url("https://cdn.rossa.app/icons/log-in.svg"); }
i.fa-undo::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/rotate-ccw.svg");     mask-image: url("https://cdn.rossa.app/icons/rotate-ccw.svg"); }
i.fa-sync::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/refresh-cw.svg");     mask-image: url("https://cdn.rossa.app/icons/refresh-cw.svg"); }
i.fa-cog::before, i.fa-cogs::before                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/settings.svg");       mask-image: url("https://cdn.rossa.app/icons/settings.svg"); }
i.fa-tools::before, i.fa-wrench::before                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/wrench.svg");         mask-image: url("https://cdn.rossa.app/icons/wrench.svg"); }
i.fa-sliders-h::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/sliders-horizontal.svg"); mask-image: url("https://cdn.rossa.app/icons/sliders-horizontal.svg"); }
i.fa-chevron-down::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg");   mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg"); }
i.fa-chevron-up::before                                                      { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-up.svg");     mask-image: url("https://cdn.rossa.app/icons/chevron-up.svg"); }
i.fa-chevron-left::before, i.fa-angle-left::before                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-left.svg");   mask-image: url("https://cdn.rossa.app/icons/chevron-left.svg"); }
i.fa-chevron-right::before, i.fa-angle-right::before                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg");  mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg"); }
i.fa-angle-double-left::before                                               { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevrons-left.svg");  mask-image: url("https://cdn.rossa.app/icons/chevrons-left.svg"); }
i.fa-angle-double-right::before                                              { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevrons-right.svg"); mask-image: url("https://cdn.rossa.app/icons/chevrons-right.svg"); }
i.fa-chevron-circle-left::before                                             { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-chevron-left.svg");  mask-image: url("https://cdn.rossa.app/icons/circle-chevron-left.svg"); }
i.fa-chevron-circle-right::before                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-chevron-right.svg"); mask-image: url("https://cdn.rossa.app/icons/circle-chevron-right.svg"); }
i.fa-arrow-circle-right::before                                              { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg");   mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg"); }
i.fa-user::before, i.fa-user-tag::before, i.fa-user-clock::before,
i.fa-user-md::before, i.fa-user-tie::before, i.fa-user-graduate::before,
i.fa-landmark::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/user.svg");           mask-image: url("https://cdn.rossa.app/icons/user.svg"); }
i.fa-users::before, i.fa-user-friends::before, i.fa-people-arrows::before    { -webkit-mask-image: url("https://cdn.rossa.app/icons/users.svg");          mask-image: url("https://cdn.rossa.app/icons/users.svg"); }
i.fa-user-plus::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/user-plus.svg");      mask-image: url("https://cdn.rossa.app/icons/user-plus.svg"); }
i.fa-user-check::before                                                      { -webkit-mask-image: url("https://cdn.rossa.app/icons/user-check.svg");     mask-image: url("https://cdn.rossa.app/icons/user-check.svg"); }
i.fa-user-slash::before                                                      { -webkit-mask-image: url("https://cdn.rossa.app/icons/user-x.svg");         mask-image: url("https://cdn.rossa.app/icons/user-x.svg"); }
i.fa-user-cog::before, i.fa-users-cog::before, i.fa-user-edit::before        { -webkit-mask-image: url("https://cdn.rossa.app/icons/user-cog.svg");       mask-image: url("https://cdn.rossa.app/icons/user-cog.svg"); }
i.fa-user-shield::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/shield-user.svg");    mask-image: url("https://cdn.rossa.app/icons/shield-user.svg"); }
i.fa-shield-alt::before                                                      { -webkit-mask-image: url("https://cdn.rossa.app/icons/shield-check.svg");   mask-image: url("https://cdn.rossa.app/icons/shield-check.svg"); }
i.fa-id-card::before, i.fa-id-card-alt::before, i.fa-address-card::before,
i.fa-passport::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/id-card.svg");        mask-image: url("https://cdn.rossa.app/icons/id-card.svg"); }
i.fa-handshake::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/handshake.svg");      mask-image: url("https://cdn.rossa.app/icons/handshake.svg"); }
i.fa-concierge-bell::before                                                  { -webkit-mask-image: url("https://cdn.rossa.app/icons/concierge-bell.svg"); mask-image: url("https://cdn.rossa.app/icons/concierge-bell.svg"); }
/* ICONOS DE MARCA: nombres EN ESPAÑOL; el bucket es case-sensitive y no tiene listado. */
i.fa-bell::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/Campana-aviso03.svg"); mask-image: url("https://cdn.rossa.app/icons/Campana-aviso03.svg"); }
i.fa-layer-group::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/Agrupaciones.svg");    mask-image: url("https://cdn.rossa.app/icons/Agrupaciones.svg"); }
i.fa-folder-open::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/Carpeta-abierta.svg"); mask-image: url("https://cdn.rossa.app/icons/Carpeta-abierta.svg"); }
/* En facturacion `fa-folder-open` significa FOLIO: el modulo anade `.fact-icon-folio`. */
i.fact-icon-folio::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/Folio.svg");           mask-image: url("https://cdn.rossa.app/icons/Folio.svg"); }
i.fact-icon-folios::before                                                   { -webkit-mask-image: url("https://cdn.rossa.app/icons/Folios.svg");          mask-image: url("https://cdn.rossa.app/icons/Folios.svg"); }
i.fact-icon-factura::before                                                  { -webkit-mask-image: url("https://cdn.rossa.app/icons/receipt-text.svg");    mask-image: url("https://cdn.rossa.app/icons/receipt-text.svg"); }
/* llaves_api: "Reasignar codigos a reservas" usa repeat-2 en vez del refresh-cw generico de fa-sync. */
i.rossa-icon-repeat-2::before                                                { -webkit-mask-image: url("https://cdn.rossa.app/icons/repeat-2.svg");        mask-image: url("https://cdn.rossa.app/icons/repeat-2.svg"); }
/* asig_door: "Guardar" usa Carpeta-check en vez del check generico de fa-check. */
i.rossa-icon-carpeta-check::before                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/Carpeta-check.svg");   mask-image: url("https://cdn.rossa.app/icons/Carpeta-check.svg"); }
/* folioVisor: "Acciones" usa sliders-vertical en vez del sliders-horizontal generico de fa-sliders-h. */
i.rossa-icon-sliders-vertical::before                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/sliders-vertical.svg"); mask-image: url("https://cdn.rossa.app/icons/sliders-vertical.svg"); }
/* folioVisor: "Dividir" (panel de Acciones) usa unlink-2 en vez del trending-up-down generico de fa-code-branch. */
i.rossa-icon-unlink-2::before                                                 { -webkit-mask-image: url("https://cdn.rossa.app/icons/unlink-2.svg");        mask-image: url("https://cdn.rossa.app/icons/unlink-2.svg"); }
i.rossa-icon-clock-plus::before                                               { -webkit-mask-image: url("https://cdn.rossa.app/icons/clock-plus.svg");      mask-image: url("https://cdn.rossa.app/icons/clock-plus.svg"); }
/* Perfiles: "Asociación de perfiles" usa link-2 en vez del link generico de fa-link. */
i.rossa-icon-link-2::before                                                   { -webkit-mask-image: url("https://cdn.rossa.app/icons/link-2.svg");          mask-image: url("https://cdn.rossa.app/icons/link-2.svg"); }
/* archivos_xls: Generar Excel / Generar Excel (debug) / Copiar, icon-only. */
i.rossa-icon-table-properties::before                                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/table-properties.svg"); mask-image: url("https://cdn.rossa.app/icons/table-properties.svg"); }
i.rossa-icon-debug::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/debug.svg");           mask-image: url("https://cdn.rossa.app/icons/debug.svg"); }
i.rossa-icon-copiar-clonar::before                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/Copiar-Clonar.svg");   mask-image: url("https://cdn.rossa.app/icons/Copiar-Clonar.svg"); }
i.fa-ban::before                                                             { -webkit-mask-image: url("https://cdn.rossa.app/icons/Prohibido.svg");       mask-image: url("https://cdn.rossa.app/icons/Prohibido.svg"); }
i.fa-database::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/Base-datos.svg");      mask-image: url("https://cdn.rossa.app/icons/Base-datos.svg"); }
i.fa-file-import::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/Importar.svg");        mask-image: url("https://cdn.rossa.app/icons/Importar.svg"); }
/* Spa es de RELLENO (no trazo) y 25×25: como máscara pinta un glifo macizo. */
i.fa-spa::before                                                             { -webkit-mask-image: url("https://cdn.rossa.app/icons/Spa.svg");             mask-image: url("https://cdn.rossa.app/icons/Spa.svg"); }
/* Folio = hoja con la esquina doblada, la forma clásica de "documento". */
i.fa-file-alt::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/Folio.svg");           mask-image: url("https://cdn.rossa.app/icons/Folio.svg"); }
i.fa-code-branch::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/trending-up-down.svg"); mask-image: url("https://cdn.rossa.app/icons/trending-up-down.svg"); }

/* Batería: 7 variantes en el bucket para 5 tramos de FA; sus nombres van percent-encoded. */
i.fa-battery-full::before,
i.fa-battery-three-quarters::before                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/Bater%C3%ADa%2002.svg"); mask-image: url("https://cdn.rossa.app/icons/Bater%C3%ADa%2002.svg"); }
i.fa-battery-half::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/Bater%C3%ADa%2004.svg"); mask-image: url("https://cdn.rossa.app/icons/Bater%C3%ADa%2004.svg"); }
i.fa-battery-quarter::before                                                 { -webkit-mask-image: url("https://cdn.rossa.app/icons/Bater%C3%ADa%2003.svg"); mask-image: url("https://cdn.rossa.app/icons/Bater%C3%ADa%2003.svg"); }
i.fa-battery-empty::before                                                   { -webkit-mask-image: url("https://cdn.rossa.app/icons/Bater%C3%ADa%2007.svg"); mask-image: url("https://cdn.rossa.app/icons/Bater%C3%ADa%2007.svg"); }

/* Los nombres con tilde van percent-encoded. */
i.fa-copy::before, i.fa-clone::before                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/Copiar-Clonar.svg");    mask-image: url("https://cdn.rossa.app/icons/Copiar-Clonar.svg"); }
i.fa-sitemap::before                                                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/%C3%81rbol-jerarqu%C3%ADa.svg"); mask-image: url("https://cdn.rossa.app/icons/%C3%81rbol-jerarqu%C3%ADa.svg"); }
i.fa-object-group::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/Fusi%C3%B3n.svg");      mask-image: url("https://cdn.rossa.app/icons/Fusi%C3%B3n.svg"); }
i.fa-baby::before, i.fa-child::before                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/menores.svg");         mask-image: url("https://cdn.rossa.app/icons/menores.svg"); }
i.fa-file-csv::before, i.fa-file-excel::before                               { -webkit-mask-image: url("https://cdn.rossa.app/icons/CSV.svg");             mask-image: url("https://cdn.rossa.app/icons/CSV.svg"); }
/* Solo se usa en facturación ("Crear folio") → icono de marca Crear-folio. */
i.fa-folder-plus::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/Crear-folio.svg");  mask-image: url("https://cdn.rossa.app/icons/Crear-folio.svg"); }
i.fa-file-export::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/Carpeta-output.svg");   mask-image: url("https://cdn.rossa.app/icons/Carpeta-output.svg"); }
i.fa-table::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/table-properties.svg"); mask-image: url("https://cdn.rossa.app/icons/table-properties.svg"); }
i.fa-calculator::before                                                      { -webkit-mask-image: url("https://cdn.rossa.app/icons/square-pi.svg");       mask-image: url("https://cdn.rossa.app/icons/square-pi.svg"); }
i.fa-font::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/square-pilcrow.svg");  mask-image: url("https://cdn.rossa.app/icons/square-pilcrow.svg"); }
i.fa-magic::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/zap.svg");             mask-image: url("https://cdn.rossa.app/icons/zap.svg"); }
i.fa-minus-circle::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/minus.svg");           mask-image: url("https://cdn.rossa.app/icons/minus.svg"); }
i.fa-leaf::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/Carpeta-root.svg");    mask-image: url("https://cdn.rossa.app/icons/Carpeta-root.svg"); }
i.fa-file-pdf::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/scroll-text.svg");     mask-image: url("https://cdn.rossa.app/icons/scroll-text.svg"); }
i.fa-random::before, i.fa-exchange-alt::before                               { -webkit-mask-image: url("https://cdn.rossa.app/icons/iteration-cw.svg");     mask-image: url("https://cdn.rossa.app/icons/iteration-cw.svg"); }
i.fa-compress::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevrons-down-up.svg"); mask-image: url("https://cdn.rossa.app/icons/chevrons-down-up.svg"); }
i.fa-upload::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/square-arrow-up.svg");  mask-image: url("https://cdn.rossa.app/icons/square-arrow-up.svg"); }
i.fa-sort-up::before                                                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-up.svg");       mask-image: url("https://cdn.rossa.app/icons/chevron-up.svg"); }
i.fa-sort-down::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg");     mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg"); }
/* fa-filter apuntaba a sliders-horizontal (apaño de cuando no había embudo). */
i.fa-filter::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/Filtro.svg");          mask-image: url("https://cdn.rossa.app/icons/Filtro.svg"); }

/* --- facturación 2026-08-06: brand Figma ya en CDN + alias FA4 --- */
i.fa-hand-paper::before                                                      { -webkit-mask-image: url("https://cdn.rossa.app/icons/Facturaci%C3%B3n-Manual.svg"); mask-image: url("https://cdn.rossa.app/icons/Facturaci%C3%B3n-Manual.svg"); }
/* fa-camera solo se usa en snapshots de folio ("Último estado conocido"). */
i.fa-camera::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/%C3%9Altimo-Estado.svg"); mask-image: url("https://cdn.rossa.app/icons/%C3%9Altimo-Estado.svg"); }
i.fa-file-text-o::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/Folio.svg");           mask-image: url("https://cdn.rossa.app/icons/Folio.svg"); }
i.fa-file-pdf-o::before                                                      { -webkit-mask-image: url("https://cdn.rossa.app/icons/scroll-text.svg");     mask-image: url("https://cdn.rossa.app/icons/scroll-text.svg"); }
/* Línea hija / ajuste: corner-down-right ya apunta al anidado; anular fa-rotate-90. */
i.fa-level-up::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/corner-down-right.svg"); mask-image: url("https://cdn.rossa.app/icons/corner-down-right.svg"); }
i.fa-level-up.fa-rotate-90                                                   { transform: none; }
i.fa-file-code::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/Carpeta-codigo.svg");  mask-image: url("https://cdn.rossa.app/icons/Carpeta-codigo.svg"); }
/* "Repartir igual" (combineFolios) → porcentajes iguales. */
i.fa-balance-scale::before                                                   { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-percent.svg"); mask-image: url("https://cdn.rossa.app/icons/circle-percent.svg"); }
/* Modificadores (clase nueva permitida): botones emitir borrador / generar factura. */
i.fa-file-alt.fa-rossa-draft::before                                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/borrador.svg");        mask-image: url("https://cdn.rossa.app/icons/borrador.svg"); }
i.fa-file-invoice.fa-rossa-gen::before                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/Generar-factura.svg"); mask-image: url("https://cdn.rossa.app/icons/Generar-factura.svg"); }

/* BLOQUEADOS (asset ausente en CDN, dejar glifo FA): fa-hashtag, fa-paper-plane. */

/* debug: badge de los modales verifactu y ALDA devtools (subido al CDN 2026-08-11) */
i.fa-bug::before                                                              { -webkit-mask-image: url("https://cdn.rossa.app/icons/debug.svg");           mask-image: url("https://cdn.rossa.app/icons/debug.svg"); }

/* Se ocultan por CSS, no se borra el marcado: el JS reinyecta estos fa-save/fa-inbox tras cada AJAX. */
i.fa-save,
i.fa-inbox { display: none; }
i.fa-envelope::before, i.fa-mail-bulk::before                                { -webkit-mask-image: url("https://cdn.rossa.app/icons/mail.svg");           mask-image: url("https://cdn.rossa.app/icons/mail.svg"); }
i.fa-envelope-open::before, i.fa-envelope-open-text::before                  { -webkit-mask-image: url("https://cdn.rossa.app/icons/mail-open.svg");      mask-image: url("https://cdn.rossa.app/icons/mail-open.svg"); }
i.fa-comments::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/message-square.svg"); mask-image: url("https://cdn.rossa.app/icons/message-square.svg"); }
/* SMS y WhatsApp compartían message-circle y salían idénticos; el bucket no trae logos. */
i.fa-sms::before                                                             { -webkit-mask-image: url("https://cdn.rossa.app/icons/message-square-text.svg"); mask-image: url("https://cdn.rossa.app/icons/message-square-text.svg"); }
i.fa-whatsapp::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/message-circle.svg"); mask-image: url("https://cdn.rossa.app/icons/message-circle.svg"); }
i.fa-phone::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/phone.svg");          mask-image: url("https://cdn.rossa.app/icons/phone.svg"); }
i.fa-phone-volume::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/phone-call.svg");     mask-image: url("https://cdn.rossa.app/icons/phone-call.svg"); }
i.fa-bed::before                                                             { -webkit-mask-image: url("https://cdn.rossa.app/icons/bed.svg");            mask-image: url("https://cdn.rossa.app/icons/bed.svg"); }
i.fa-toilet::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/toilet.svg");         mask-image: url("https://cdn.rossa.app/icons/toilet.svg"); }
i.fa-door-closed::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/door-closed.svg");    mask-image: url("https://cdn.rossa.app/icons/door-closed.svg"); }
i.fa-door-open::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/door-open.svg");      mask-image: url("https://cdn.rossa.app/icons/door-open.svg"); }
i.fa-hotel::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/hotel.svg");          mask-image: url("https://cdn.rossa.app/icons/hotel.svg"); }
i.fa-building::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/building.svg");       mask-image: url("https://cdn.rossa.app/icons/building.svg"); }
/* fa-key = "códigos" de acceso (antes "llaves") → icono propio de marca del CDN */
i.fa-key::before                                                             { -webkit-mask-image: url("https://cdn.rossa.app/icons/Accesos%20y%20cerraduras.svg"); mask-image: url("https://cdn.rossa.app/icons/Accesos%20y%20cerraduras.svg"); }
i.fa-lock::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/lock.svg");           mask-image: url("https://cdn.rossa.app/icons/lock.svg"); }
i.fa-unlock-alt::before                                                      { -webkit-mask-image: url("https://cdn.rossa.app/icons/lock-open.svg");      mask-image: url("https://cdn.rossa.app/icons/lock-open.svg"); }
i.fa-map-marker-alt::before                                                  { -webkit-mask-image: url("https://cdn.rossa.app/icons/map-pin.svg");        mask-image: url("https://cdn.rossa.app/icons/map-pin.svg"); }
i.fa-map-signs::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/map-pinned.svg");     mask-image: url("https://cdn.rossa.app/icons/map-pinned.svg"); }
i.fa-globe::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/globe.svg");          mask-image: url("https://cdn.rossa.app/icons/globe.svg"); }
i.fa-swimming-pool::before                                                   { -webkit-mask-image: url("https://cdn.rossa.app/icons/waves.svg");          mask-image: url("https://cdn.rossa.app/icons/waves.svg"); }
i.fa-dog::before                                                             { -webkit-mask-image: url("https://cdn.rossa.app/icons/dog.svg");            mask-image: url("https://cdn.rossa.app/icons/dog.svg"); }
i.fa-coffee::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/coffee.svg");         mask-image: url("https://cdn.rossa.app/icons/coffee.svg"); }
i.fa-glass-cheers::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/wine.svg");           mask-image: url("https://cdn.rossa.app/icons/wine.svg"); }
i.fa-credit-card::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/credit-card.svg");    mask-image: url("https://cdn.rossa.app/icons/credit-card.svg"); }
i.fa-euro-sign::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/euro.svg");           mask-image: url("https://cdn.rossa.app/icons/euro.svg"); }
i.fa-file-invoice-dollar::before, i.fa-receipt::before                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/receipt-euro.svg");   mask-image: url("https://cdn.rossa.app/icons/receipt-euro.svg"); }
i.fa-tasas::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/Gesti%C3%B3n-tarifas.svg"); mask-image: url("https://cdn.rossa.app/icons/Gesti%C3%B3n-tarifas.svg"); }
i.fa-percent::before, i.fa-percentage::before                                { -webkit-mask-image: url("https://cdn.rossa.app/icons/percent.svg");        mask-image: url("https://cdn.rossa.app/icons/percent.svg"); }
i.fa-chart-bar::before, i.fa-poll::before                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/chart-bar.svg");      mask-image: url("https://cdn.rossa.app/icons/chart-bar.svg"); }
i.fa-chart-line::before                                                      { -webkit-mask-image: url("https://cdn.rossa.app/icons/chart-line.svg");     mask-image: url("https://cdn.rossa.app/icons/chart-line.svg"); }
i.fa-tags::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/tags.svg");           mask-image: url("https://cdn.rossa.app/icons/tags.svg"); }
i.fa-tag::before                                                             { -webkit-mask-image: url("https://cdn.rossa.app/icons/tag.svg");            mask-image: url("https://cdn.rossa.app/icons/tag.svg"); }
i.fa-tasks::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/list-checks.svg");    mask-image: url("https://cdn.rossa.app/icons/list-checks.svg"); }
i.fa-list::before, i.fa-th-list::before, i.fa-stream::before                 { -webkit-mask-image: url("https://cdn.rossa.app/icons/list.svg");           mask-image: url("https://cdn.rossa.app/icons/list.svg"); }
i.fa-scroll::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/scroll.svg");         mask-image: url("https://cdn.rossa.app/icons/scroll.svg"); }
i.fa-suitcase::before, i.fa-suitcase-rolling::before                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/luggage.svg");        mask-image: url("https://cdn.rossa.app/icons/luggage.svg"); }
i.fa-plus::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/plus.svg");           mask-image: url("https://cdn.rossa.app/icons/plus.svg"); }
i.fa-minus::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/minus.svg");          mask-image: url("https://cdn.rossa.app/icons/minus.svg"); }
i.fa-newspaper::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/newspaper.svg");      mask-image: url("https://cdn.rossa.app/icons/newspaper.svg"); }
i.fa-bolt::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/zap.svg");            mask-image: url("https://cdn.rossa.app/icons/zap.svg"); }
i.fa-language::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/languages.svg");      mask-image: url("https://cdn.rossa.app/icons/languages.svg"); }
i.fa-external-link-alt::before                                               { -webkit-mask-image: url("https://cdn.rossa.app/icons/external-link.svg");  mask-image: url("https://cdn.rossa.app/icons/external-link.svg"); }
i.fa-share-square::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/square-arrow-out-up-right.svg");   mask-image: url("https://cdn.rossa.app/icons/square-arrow-out-up-right.svg"); }
i.fa-images::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/image.svg");          mask-image: url("https://cdn.rossa.app/icons/image.svg"); }
i.fa-link::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/link.svg");           mask-image: url("https://cdn.rossa.app/icons/link.svg"); }
i.fa-play::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-play.svg");    mask-image: url("https://cdn.rossa.app/icons/circle-play.svg"); }

/* (c) Sub-bloque aparte (una clase por línea) para que el chequeo de paridad (a)/(b) sea mecánico. */
i.fa-arrow-left::before                                                      { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-left.svg");    mask-image: url("https://cdn.rossa.app/icons/chevron-left.svg"); }
i.fa-arrow-right::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg");   mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg"); }
i.fa-caret-down::before                                                      { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg");    mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg"); }
i.fa-sync-alt::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/refresh-cw.svg");      mask-image: url("https://cdn.rossa.app/icons/refresh-cw.svg"); }
i.fa-bars::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/menu.svg");            mask-image: url("https://cdn.rossa.app/icons/menu.svg"); }
/* Calendar view switch: "Lineal" = chart-no-axes-gantt, its pair-mate "Mensual" (fa-th) = calendar-days. */
i.fa-align-justify::before                                                   { -webkit-mask-image: url("https://cdn.rossa.app/icons/chart-no-axes-gantt.svg"); mask-image: url("https://cdn.rossa.app/icons/chart-no-axes-gantt.svg"); }
i.fa-list-alt::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/list.svg");            mask-image: url("https://cdn.rossa.app/icons/list.svg"); }
i.fa-th::before                                                              { -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-days.svg");   mask-image: url("https://cdn.rossa.app/icons/calendar-days.svg"); }
i.fa-info-circle::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/info.svg");            mask-image: url("https://cdn.rossa.app/icons/info.svg"); }
i.fa-image::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/image.svg");           mask-image: url("https://cdn.rossa.app/icons/image.svg"); }
/* camera: en facturación es "Último estado"; hoy solo vive en folios. */
i.fa-camera::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/%C3%9Altimo-Estado.svg"); mask-image: url("https://cdn.rossa.app/icons/%C3%9Altimo-Estado.svg"); }
i.fa-video::before, i.fa-video-camera::before, i.fa-photo-video::before      { -webkit-mask-image: url("https://cdn.rossa.app/icons/video.svg");           mask-image: url("https://cdn.rossa.app/icons/video.svg"); }
i.fa-desktop::before                                                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/monitor.svg");         mask-image: url("https://cdn.rossa.app/icons/monitor.svg"); }
i.fa-barcode::before                                                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/scan-barcode.svg");    mask-image: url("https://cdn.rossa.app/icons/scan-barcode.svg"); }
i.fa-briefcase::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/briefcase.svg");       mask-image: url("https://cdn.rossa.app/icons/briefcase.svg"); }
i.fa-calendar-day::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-1.svg");      mask-image: url("https://cdn.rossa.app/icons/calendar-1.svg"); }
i.fa-sign::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-range.svg");  mask-image: url("https://cdn.rossa.app/icons/calendar-range.svg"); }
i.fa-clipboard-list::before                                                  { -webkit-mask-image: url("https://cdn.rossa.app/icons/table-of-contents.svg"); mask-image: url("https://cdn.rossa.app/icons/table-of-contents.svg"); }
i.fa-coins::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/euro.svg");            mask-image: url("https://cdn.rossa.app/icons/euro.svg"); }
/* coins contextual: en el badge de precio de reubicaciones va "Precio" (brand) */
#relocation-content .room-card-badge i.fa-coins::before                      { -webkit-mask-image: url("https://cdn.rossa.app/icons/Precio.svg");          mask-image: url("https://cdn.rossa.app/icons/Precio.svg"); }
i.fa-money-bill-alt::before                                                  { -webkit-mask-image: url("https://cdn.rossa.app/icons/wallet.svg");          mask-image: url("https://cdn.rossa.app/icons/wallet.svg"); }
i.fa-hand-holding-usd::before                                                { -webkit-mask-image: url("https://cdn.rossa.app/icons/trending-up.svg");     mask-image: url("https://cdn.rossa.app/icons/trending-up.svg"); }
i.fa-comment::before, i.fa-comment-dots::before                              { -webkit-mask-image: url("https://cdn.rossa.app/icons/message-square-text.svg"); mask-image: url("https://cdn.rossa.app/icons/message-square-text.svg"); }
i.fa-compress-alt::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevrons-down-up.svg"); mask-image: url("https://cdn.rossa.app/icons/chevrons-down-up.svg"); }
i.fa-file-archive::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/paperclip.svg");       mask-image: url("https://cdn.rossa.app/icons/paperclip.svg"); }
i.fa-file-contract::before                                                   { -webkit-mask-image: url("https://cdn.rossa.app/icons/scroll-text.svg");     mask-image: url("https://cdn.rossa.app/icons/scroll-text.svg"); }
i.fa-file-invoice::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/receipt-euro.svg");    mask-image: url("https://cdn.rossa.app/icons/receipt-euro.svg"); }
/* Misma máscara que el bloque brand de arriba — NO volver a sliders (ganaba por orden). */
i.fa-filter::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/Filtro.svg");          mask-image: url("https://cdn.rossa.app/icons/Filtro.svg"); }
i.fa-flag::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/flag.svg");            mask-image: url("https://cdn.rossa.app/icons/flag.svg"); }
/* hand-paper: máscara de marca en el bloque facturación 2026-08-06 (arriba). */
i.fa-id-badge::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/id-card.svg");         mask-image: url("https://cdn.rossa.app/icons/id-card.svg"); }
i.fa-parking::before                                                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/square-parking.svg");  mask-image: url("https://cdn.rossa.app/icons/square-parking.svg"); }
i.fa-pause-circle::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-pause.svg");    mask-image: url("https://cdn.rossa.app/icons/circle-pause.svg"); }
i.fa-pie-chart::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/chart-pie.svg");       mask-image: url("https://cdn.rossa.app/icons/chart-pie.svg"); }
i.fa-school::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/university.svg");      mask-image: url("https://cdn.rossa.app/icons/university.svg"); }
i.fa-sort::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevrons-up-down.svg"); mask-image: url("https://cdn.rossa.app/icons/chevrons-up-down.svg"); }
i.fa-square::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/square.svg");          mask-image: url("https://cdn.rossa.app/icons/square.svg"); }
i.fa-table-columns::before                                                   { -webkit-mask-image: url("https://cdn.rossa.app/icons/table-properties.svg"); mask-image: url("https://cdn.rossa.app/icons/table-properties.svg"); }
i.fa-tachometer-alt::before                                                  { -webkit-mask-image: url("https://cdn.rossa.app/icons/chart-no-axes-combined.svg"); mask-image: url("https://cdn.rossa.app/icons/chart-no-axes-combined.svg"); }
i.fa-unlink::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/unlink.svg");          mask-image: url("https://cdn.rossa.app/icons/unlink.svg"); }
i.fa-unlock::before                                                          { -webkit-mask-image: url("https://cdn.rossa.app/icons/lock-open.svg");       mask-image: url("https://cdn.rossa.app/icons/lock-open.svg"); }
i.fa-user-circle::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-user.svg");     mask-image: url("https://cdn.rossa.app/icons/circle-user.svg"); }
i.fa-utensils::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/utensils.svg");        mask-image: url("https://cdn.rossa.app/icons/utensils.svg"); }

/* (d) Iconos de marca: nombre en español, tilde y "º" percent-encodeados; todos en la lista (a). */
i.fa-star::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/Destacado.svg");           mask-image: url("https://cdn.rossa.app/icons/Destacado.svg"); }
i.fa-paper-plane::before                                                     { -webkit-mask-image: url("https://cdn.rossa.app/icons/Enviar.svg");              mask-image: url("https://cdn.rossa.app/icons/Enviar.svg"); }
i.fa-lightbulb::before                                                       { -webkit-mask-image: url("https://cdn.rossa.app/icons/Sugerencias.svg");         mask-image: url("https://cdn.rossa.app/icons/Sugerencias.svg"); }
i.fa-infinity::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/No-Limites.svg");          mask-image: url("https://cdn.rossa.app/icons/No-Limites.svg"); }
/* "#" dentro de una caja redondeada: es el nº de reserva / de factura / de folio. */
i.fa-hashtag::before                                                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/N%C2%BA-habitaciones.svg"); mask-image: url("https://cdn.rossa.app/icons/N%C2%BA-habitaciones.svg"); }
i.fa-moon::before                                                            { -webkit-mask-image: url("https://cdn.rossa.app/icons/Noches.svg");              mask-image: url("https://cdn.rossa.app/icons/Noches.svg"); }
i.fa-box::before, i.fa-boxes::before                                         { -webkit-mask-image: url("https://cdn.rossa.app/icons/Paquete-contenidos.svg");  mask-image: url("https://cdn.rossa.app/icons/Paquete-contenidos.svg"); }
i.fa-robot::before                                                           { -webkit-mask-image: url("https://cdn.rossa.app/icons/ChatBot.svg");             mask-image: url("https://cdn.rossa.app/icons/ChatBot.svg"); }
i.fa-puzzle-piece::before                                                    { -webkit-mask-image: url("https://cdn.rossa.app/icons/M%C3%B3dulo.svg");         mask-image: url("https://cdn.rossa.app/icons/M%C3%B3dulo.svg"); }
/* fa-th ya es calendar-days (conmutador Lineal/Mensual); fa-th-large es la rejilla. */
i.fa-th-large::before                                                        { -webkit-mask-image: url("https://cdn.rossa.app/icons/Cuadr%C3%ADcula.svg");     mask-image: url("https://cdn.rossa.app/icons/Cuadr%C3%ADcula.svg"); }
/* "Variante524" es el nombre por defecto de Figma al exportar: si lo renombran, cambiar la URL. */
i.fa-balance-scale::before                                                   { -webkit-mask-image: url("https://cdn.rossa.app/icons/Variante524.svg");         mask-image: url("https://cdn.rossa.app/icons/Variante524.svg"); }
/* Alquiler-Bici.svg está subido pero SIN MAPEAR: no hay ningún `fa-bicycle` en el código. */

/*=============================================================================
  33. ACTION-ICON HELPERS — for legacy <img> icons converted to <i>
=============================================================================*/
/* El glifo/máscara viene de §32; estas clases solo fijan tamaño y tinte. */
/* Al convertir un <img>, las clases que enlaza el JS (addQTip/act/deli/…) pasan al nuevo <i>. */
.rossa-ico        { font-size: 16px; line-height: 1; vertical-align: -0.15em; cursor: pointer; }
a:hover .rossa-ico { filter: brightness(.85); }
.rossa-ico--edit  { color: var(--rossa-teal); }
.rossa-ico--del   { color: var(--rossa-red); }
.rossa-ico--on    { color: var(--rossa-green); }
.rossa-ico--off   { color: var(--rossa-muted); }
.rossa-ico--info  { color: var(--rossa-cyan); }
.rossa-ico--mail  { color: var(--rossa-teal); }
.rossa-ico--new   { color: var(--rossa-teal); }
.rossa-ico--move  { color: var(--rossa-muted); }

/*=============================================================================
  34. GLOBAL: establishment filter (admin/includes/filter_jerarquia.php)
=============================================================================*/
/* Scope por hermano adyacente: select2 inserta su .select2-container justo tras el <select>. */
/* Native <select> (also the visual when select2 isn't applied) */
form select.rossa-establecimiento-filter,
#contenido_admin select.rossa-establecimiento-filter {
  height: 36px;
  padding: 0 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-size: 13px;
  color: var(--rossa-ink);
  background: var(--rossa-white);
  min-width: 240px;
  vertical-align: middle;
}
/* select2 control (closed state) — scoped to the establishment selector only */
select.rossa-establecimiento-filter + .select2-container { min-width: 240px; vertical-align: middle; }
select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single {
  height: 36px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  display: flex;
  align-items: center;
}
select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single .select2-selection__rendered {
  color: var(--rossa-ink);
  font-size: 13px;
  line-height: 1.3;
  padding-left: 12px;
  padding-right: 28px;
}
select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single .select2-selection__arrow { height: 34px; }
select.rossa-establecimiento-filter + .select2-container--default.select2-container--focus .select2-selection--single,
select.rossa-establecimiento-filter + .select2-container--default.select2-container--open .select2-selection--single {
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}
.select2-container--open .select2-dropdown {
  z-index: 10050;
}

/* Barra del filtro: misma caja y separación en todas las pantallas */
.rossa-establecimiento-filter-bar {
  margin: 0 0 16px;
  padding: 16px 18px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-sizing: border-box;
}

.rossa-establecimiento-filter-form {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 14px;
  margin: 0;
  width: auto;
  max-width: 100%;
}
/* Los <label> heredaban la Verdana que lydia.css pinta por elemento. */
.rossa-establecimiento-filter-form,
.rossa-establecimiento-filter-form label,
.rossa-establecimiento-filter-form select,
.rossa-establecimiento-filter-form input,
.rossa-establecimiento-filter-form option { font-family: var(--rossa-font); }

/* .rossa-establecimiento-filter-fee (exclusiva de gestor_estancias): sin CSS propio,
   ahora usa .filter-container/.filter-title como el resto de pantallas. */

.rossa-establecimiento-filter-field {
  display: inline-flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 10px 12px;
  flex: 0 1 auto;
  min-width: 0;
  position: relative;
}

.rossa-establecimiento-filter-field > label {
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--rossa-ink);
  flex: 0 0 auto;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  line-height: 1.3;
}

.rossa-establecimiento-filter-field select.rossa-establecimiento-filter {
  flex: 0 1 auto;
  min-width: 0;
  max-width: 100%;
}

.rossa-establecimiento-filter-field select.rossa-establecimiento-filter + .select2-container {
  flex: 0 1 auto;
  min-width: 200px;
  max-width: 360px;
  width: auto !important;
}

.rossa-establecimiento-filter-field select.rossa-establecimiento-filter.select2-hidden-accessible {
  flex: 0 0 0;
  width: 0 !important;
  min-width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  overflow: hidden !important;
  position: absolute !important;
  clip: rect(0, 0, 0, 0) !important;
}

.rossa-establecimiento-filter-submit {
  margin: 0;
  flex: 0 0 auto;
  align-self: center;
  height: 36px;
  padding: 0 18px;
  box-sizing: border-box;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  vertical-align: middle;
}

.rossa-establecimiento-filter-form .admin_boton.rossa-establecimiento-filter-submit,
.rossa-establecimiento-filter-form input.rossa-establecimiento-filter-submit {
  margin: 0;
  margin-left: 0;
  margin-right: 0;
  height: 36px;
  padding: 0 18px;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}


/* Móvil: select más estrecho; label + select + CARGAR siguen agrupados */
@media (max-width: 600px) {
  .rossa-establecimiento-filter-field select.rossa-establecimiento-filter + .select2-container {
    min-width: 0;
    max-width: min(240px, 52vw);
  }
}

/*=============================================================================
  35. SCREEN: module_config + module_manager (módulos)
=============================================================================*/
/* Vence al <style> inline de modsGraphicHandler por orden de carga. */

/* Tab bar + panel wrapper: kill legacy grey box around tab content */
#contenido_admin .tabs.rossa-module-config {
  margin: 14px 0 0;
  padding-bottom: 0;
}
#contenido_admin .secciones_tabs.rossa-module-config {
  padding: 18px 0 0;
  margin-top: 0;
}
#contenido_admin .secciones_tabs.rossa-module-config > .cont {
  border: 0;
  padding: 0;
}

/* --- Control panel (INFO tab) ----------------------------------------- */
#contenido_admin .control-panel-container {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
  margin: 0;
  overflow: hidden;
  font-family: var(--rossa-font);
}
#contenido_admin .control-panel-container .module-header {
  background: var(--rossa-white);
  color: var(--rossa-ink);
  padding: 20px 24px;
  border-bottom: 1px solid var(--rossa-border);
  gap: 18px;
}
#contenido_admin .control-panel-container .module-icon {
  width: 72px;
  height: 72px;
  border-radius: var(--rossa-radius);
  background: var(--rossa-surface-2);
  border: 1px solid var(--rossa-border);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
#contenido_admin .control-panel-container .module-icon .module-img-fallback {
  background: var(--rossa-surface-2);
  color: var(--rossa-muted);
  font-size: 1.75rem;
}
#contenido_admin .control-panel-container .module-details h2 {
  margin: 0 0 6px;
  font-family: var(--rossa-font);
  font-size: 20px;
  font-weight: 600;
  color: var(--rossa-navy);
  text-shadow: none;
}
#contenido_admin .control-panel-container .module-description {
  margin: 0 0 10px;
  font-size: 14px;
  color: var(--rossa-muted);
  opacity: 1;
}
#contenido_admin .control-panel-container .module-meta {
  gap: 12px;
  font-size: 12px;
  color: var(--rossa-muted);
  opacity: 1;
}
#contenido_admin .control-panel-container .module-meta .module-id,
#contenido_admin .control-panel-container .module-meta .module-version {
  font-weight: 600;
  color: var(--rossa-ink);
}

/* Status badges — flat Rossa pills */
#contenido_admin .control-panel-container .status-badge,
#contenido_admin .control-panel-container .status-value {
  padding: 5px 12px;
  border-radius: var(--rossa-radius-pill);
  font-family: var(--rossa-font);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
  border: 1px solid transparent;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
#contenido_admin .control-panel-container .status-badge.status-enabled,
#contenido_admin .control-panel-container .status-value.status-enabled {
  background-color: var(--rossa-green);
  color: var(--rossa-white);
  border-color: var(--rossa-green);
}
#contenido_admin .control-panel-container .status-badge.status-disabled,
#contenido_admin .control-panel-container .status-value.status-disabled {
  background-color: var(--rossa-salmon);
  color: var(--rossa-coral);
  border-color: var(--rossa-coral);
}
#contenido_admin .control-panel-container .status-badge.status-uninstalled,
#contenido_admin .control-panel-container .status-value.status-uninstalled {
  background-color: var(--rossa-surface);
  color: var(--rossa-ink);
  border-color: var(--rossa-border);
}
#contenido_admin .control-panel-container .status-badge.status-unknown,
#contenido_admin .control-panel-container .status-value.status-unknown {
  background-color: var(--rossa-surface);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}

/* Three-column card grid — mirrors .rossa-panel (§25) */
#contenido_admin .control-panel-container .control-panel-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 18px;
  padding: 18px;
}
#contenido_admin .control-panel-container .info-card,
#contenido_admin .control-panel-container .status-card,
#contenido_admin .control-panel-container .actions-card {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
  overflow: hidden;
}
#contenido_admin .control-panel-container .card-header {
  background: var(--rossa-surface-2);
  color: var(--rossa-teal);
  padding: 12px 18px;
  border-bottom: 1px solid var(--rossa-border);
  gap: 10px;
}
#contenido_admin .control-panel-container .card-header i {
  font-size: 14px;
  color: var(--rossa-teal);
}
#contenido_admin .control-panel-container .card-header h3 {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-teal) !important;
}
#contenido_admin .control-panel-container .card-content {
  padding: 14px 18px 16px;
}
#contenido_admin .control-panel-container .info-item,
#contenido_admin .control-panel-container .status-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  padding: 9px 0;
  border-bottom: 1px solid var(--rossa-hairline-soft);
}
#contenido_admin .control-panel-container .info-item:last-child,
#contenido_admin .control-panel-container .status-item:last-child {
  border-bottom: 0;
}
#contenido_admin .control-panel-container .label {
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 13px;
  color: var(--rossa-ink);
}
#contenido_admin .control-panel-container .value {
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-muted);
  text-align: right;
}

/* Module tags + dependency chips */
#contenido_admin .control-panel-container .module-tag {
  background: var(--rossa-teal);
  color: var(--rossa-white);
  padding: 4px 10px;
  border-radius: var(--rossa-radius-pill);
  font-size: 11px;
  font-weight: 600;
  margin: 2px;
  transition: background-color .15s ease;
}
#contenido_admin .control-panel-container .module-tag:hover {
  background: #00474d;
  transform: none;
}
#contenido_admin .control-panel-container .dependency-link {
  padding: 4px 10px;
  border-radius: var(--rossa-radius-pill);
  font-family: var(--rossa-font);
  font-size: 11px;
  font-weight: 600;
  text-decoration: none;
  border: 1px solid;
  transition: background-color .15s ease, color .15s ease;
}
#contenido_admin .control-panel-container .dependency-link.required {
  background-color: rgba(23, 121, 155, .10);
  color: var(--rossa-cyan);
  border-color: var(--rossa-cyan);
}
#contenido_admin .control-panel-container .dependency-link.required:hover {
  background-color: var(--rossa-cyan);
  color: var(--rossa-white);
}
#contenido_admin .control-panel-container .dependency-link.incompatible {
  background-color: var(--rossa-salmon);
  color: var(--rossa-coral);
  border-color: var(--rossa-coral);
}
#contenido_admin .control-panel-container .dependency-link.incompatible:hover {
  background-color: var(--rossa-coral);
  color: var(--rossa-white);
}

/* Action buttons — admin_boton language */
#contenido_admin .control-panel-container .action-btn,
#contenido_admin .control-panel-container .action-link {
  width: 100%;
  padding: 10px 16px;
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  text-decoration: none;
  border: 1px solid transparent;
  box-sizing: border-box;
  transition: background-color .15s ease, border-color .15s ease;
  transform: none;
  box-shadow: none;
}
#contenido_admin .control-panel-container .action-btn:hover,
#contenido_admin .control-panel-container .action-link:hover {
  transform: none;
  box-shadow: none;
}
#contenido_admin .control-panel-container .action-btn.btn-standby,
#contenido_admin .control-panel-container .action-btn.btn-info,
#contenido_admin .control-panel-container .action-btn.module-action-btn.btn-info {
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
  border-color: var(--rossa-teal);
}
#contenido_admin .control-panel-container .action-btn.btn-standby:hover,
#contenido_admin .control-panel-container .action-btn.btn-info:hover {
  background-color: #00474d;
  border-color: #00474d;
}
#contenido_admin .control-panel-container .action-btn.btn-success {
  background-color: var(--rossa-green) !important;
  color: var(--rossa-white) !important;
  border-color: var(--rossa-green) !important;
}
#contenido_admin .control-panel-container .action-btn.btn-success:hover {
  background-color: #148f73 !important;
  border-color: #148f73 !important;
}
#contenido_admin .control-panel-container .action-btn.btn-warning {
  background-color: var(--rossa-coral);
  color: var(--rossa-white);
  border-color: var(--rossa-coral);
}
#contenido_admin .control-panel-container .action-btn.btn-warning:hover {
  background-color: #d44d2a;
  border-color: #d44d2a;
}
#contenido_admin .control-panel-container .action-btn.btn-promote {
  background-color: var(--rossa-teal) !important;
  color: var(--rossa-white) !important;
  border-color: var(--rossa-teal) !important;
}
#contenido_admin .control-panel-container .action-btn.btn-unpromote {
  background-color: var(--rossa-muted) !important;
  color: var(--rossa-white) !important;
  border-color: var(--rossa-muted) !important;
}
#contenido_admin .control-panel-container .action-link.back-link {
  background-color: var(--rossa-white) !important;
  color: var(--rossa-ink) !important;
  border: 1px solid var(--rossa-border) !important;
}
#contenido_admin .control-panel-container .action-link.back-link:hover {
  background-color: var(--rossa-surface-2) !important;
  border-color: var(--rossa-border) !important;
  color: var(--rossa-ink) !important;
}
#contenido_admin .control-panel-container .promotion-indicator {
  color: var(--rossa-coral);
}

/* --- Timeline / history tab ------------------------------------------- */
#contenido_admin .history-container {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
  margin: 0;
  overflow: hidden;
  font-family: var(--rossa-font);
}
#contenido_admin .history-container .history-header {
  background: var(--rossa-surface-2);
  color: var(--rossa-ink);
  padding: 14px 18px;
  border-bottom: 1px solid var(--rossa-border);
  gap: 12px;
}
#contenido_admin .history-container .history-header h3 {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 700;
  color: var(--rossa-teal);
}
#contenido_admin .history-container .history-header i {
  color: var(--rossa-teal);
}
#contenido_admin .history-container .history-search,
#contenido_admin .history-container .history-filter {
  height: 36px;
  padding: 0 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
  background: var(--rossa-white);
}
#contenido_admin .history-container .history-search:focus,
#contenido_admin .history-container .history-filter:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
  background: var(--rossa-white);
}
#contenido_admin .history-container .history-table-container {
  max-height: 620px;
}
#contenido_admin .history-container .history-table {
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
}
#contenido_admin .history-container .history-table th {
  background: var(--rossa-white);
  padding: 10px 12px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--rossa-muted);
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin .history-container .history-table td {
  padding: 11px 12px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  vertical-align: middle;
}
#contenido_admin .history-container .history-table tbody tr:hover {
  background-color: var(--rossa-tint);
}
#contenido_admin .history-container .action-badge,
#contenido_admin .history-container .result-badge {
  padding: 4px 10px;
  border-radius: var(--rossa-radius-pill);
  font-family: var(--rossa-font);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .03em;
  min-width: 0;
}
#contenido_admin .history-container .action-install,
#contenido_admin .history-container .result-success {
  background-color: var(--rossa-green);
  color: var(--rossa-white);
}
#contenido_admin .history-container .action-uninstall,
#contenido_admin .history-container .result-error {
  background-color: var(--rossa-red);
  color: var(--rossa-white);
}
#contenido_admin .history-container .action-enable {
  background-color: var(--rossa-cyan);
  color: var(--rossa-white);
}
#contenido_admin .history-container .action-disable {
  background-color: var(--rossa-salmon);
  color: var(--rossa-coral);
}
#contenido_admin .history-container .action-updatedb {
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
}
#contenido_admin .history-container .action-promote,
#contenido_admin .history-container .action-unpromote {
  background-color: var(--rossa-surface);
  color: var(--rossa-ink);
  border: 1px solid var(--rossa-border);
}
#contenido_admin .history-container .action-unknown {
  background-color: var(--rossa-surface);
  color: var(--rossa-muted);
  border: 1px solid var(--rossa-border);
}
#contenido_admin .history-container .module-name {
  font-weight: 600;
  color: var(--rossa-cyan);
}
#contenido_admin .history-container .user-cell,
#contenido_admin .history-container .date-cell {
  color: var(--rossa-muted);
}
#contenido_admin .history-container .date-cell {
  font-family: var(--rossa-font);
}
#contenido_admin .history-container .history-expandable-cell {
  color: var(--rossa-cyan);
  text-decoration: underline dotted var(--rossa-border);
}
#contenido_admin .history-container .history-expandable-cell:hover,
#contenido_admin .history-container .history-expandable-cell:focus {
  background-color: var(--rossa-tint);
  text-decoration-color: var(--rossa-teal);
  outline: none;
  box-shadow: inset 0 0 0 2px rgba(0, 94, 102, .15);
}
#contenido_admin .history-container .no-data-message {
  color: var(--rossa-muted);
  font-family: var(--rossa-font);
}
#contenido_admin .history-container .no-data-message i {
  color: var(--rossa-teal);
  opacity: .35;
}

/* History detail modal */
#contenido_admin .history-text-modal-content {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: var(--rossa-shadow);
  font-family: var(--rossa-font);
}
#contenido_admin .history-text-modal-header {
  background: var(--rossa-surface-2);
  border-bottom: 1px solid var(--rossa-border);
  padding: 12px 16px;
}
#contenido_admin .history-text-modal-header h4 {
  font-size: 15px;
  font-weight: 700;
  color: var(--rossa-teal);
}
#contenido_admin .history-text-modal-close {
  color: var(--rossa-muted);
}
#contenido_admin .history-text-modal-close:hover {
  color: var(--rossa-ink);
}
#contenido_admin .history-text-modal-body {
  color: var(--rossa-ink);
  font-size: 14px;
}

/* --- CONFIG forms (module_config CONFIG tab + configParams) ------------ */
#contenido_admin .rossa-config-forms {
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
}

/* Nested module tabs on configParams (Global / per-module) */
#contenido_admin .rossa-config-forms > .tabs {
  margin: 14px 0 0;
  padding-bottom: 0;
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-config-forms > .secciones_tabs {
  padding: 18px 0 0;
  margin-top: 0;
  border: 0;
  box-shadow: none;
  background: transparent;
}
#contenido_admin .rossa-config-forms > .secciones_tabs > .cont,
#contenido_admin .rossa-config-forms.cont {
  border: 0;
  padding: 0;
}

/* Form shell: single airy panel */
#contenido_admin .rossa-config-forms .form_funcionamiento {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  overflow: hidden;
}
#contenido_admin .rossa-config-forms .form_funcionamiento > fieldset {
  border: 0;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-config-forms .form_funcionamiento > fieldset > br {
  display: none;
}
#contenido_admin .rossa-config-forms legend {
  display: block;
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: 11px 18px;
  background: var(--rossa-surface-2);
  border-bottom: 1px solid var(--rossa-border);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  color: var(--rossa-teal);
  text-transform: uppercase;
}

#contenido_admin .config-search-box {
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 16px 0 14px;
  max-width: 520px;
}
#contenido_admin .config-search-box .config-search-ico {
  position: absolute;
  left: 14px;
  top: 11px;
  width: 15px;
  height: 15px;
  background-color: var(--rossa-muted);
  -webkit-mask: url("https://cdn.rossa.app/icons/search.svg") center / contain no-repeat;
          mask: url("https://cdn.rossa.app/icons/search.svg") center / contain no-repeat;
  pointer-events: none;
}
#contenido_admin .config-search-box input[type="search"] {
  flex: 1 1 auto;
  min-width: 220px;
  box-sizing: border-box;
  padding: 9px 14px 9px 38px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
  outline: none;
  transition: border-color .15s ease, box-shadow .15s ease;
}
#contenido_admin .config-search-box input[type="search"]::placeholder {
  color: var(--rossa-muted);
}
#contenido_admin .config-search-box input[type="search"]:focus {
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}
#contenido_admin .config-search-box {
  flex-wrap: wrap;
}
#contenido_admin .config-search-box .config-search-count {
  flex: 1 1 100%;
  margin: 6px 0 0 15px;
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 600;
  color: var(--rossa-muted);
  white-space: nowrap;
}
#contenido_admin .config-search-box .config-search-count:empty {
  display: none;
}
#contenido_admin .bloqueconfig .config-search-hit {
  font-weight: 700;
}
#contenido_admin #form_funcionamiento.is-searching > br { display: none; }
#contenido_admin #form_funcionamiento.is-searching fieldset { margin: 0 0 12px; }

/* Option rows */
#contenido_admin .rossa-config-forms .bloqueconfig {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 18px;
  margin: 0;
  padding: 12px 18px;
  background: var(--rossa-white);
  border: 0;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  border-radius: 0;
  font-size: 14px;
  box-sizing: border-box;
  transition: background-color .15s ease;
}
#contenido_admin .rossa-config-forms .bloqueconfig:last-child {
  border-bottom: 0;
}
#contenido_admin .rossa-config-forms .bloqueconfig:hover {
  background: var(--rossa-tint);
  border-color: transparent;
}
#contenido_admin .rossa-config-forms .bloqueconfig:has(.config_textarea) {
  align-items: flex-start;
}
#contenido_admin .rossa-config-forms .info_config_option {
  flex: 1 1 220px;
  min-width: 0;
}
#contenido_admin .rossa-config-forms .linea_config_option {
  position: static;
  top: auto;
  display: block;
  font-weight: 700;
  font-size: 14px;
  color: var(--rossa-ink);
  line-height: 1.35;
  cursor: help;
}
#contenido_admin .rossa-config-forms .bloqueconfig p {
  margin: 4px 0 0;
  padding: 0 0 0 10px;
  border-left: 2px solid var(--rossa-border);
  font-size: 12px;
  color: var(--rossa-muted);
  line-height: 1.4;
}

/* Controls */
#contenido_admin .rossa-config-forms .func_type_selector,
#contenido_admin .rossa-config-forms select.func_type_selector,
#contenido_admin .rossa-config-forms input[type="text"].func_type_selector {
  height: 36px;
  max-width: 320px;
  min-width: 160px;
  padding: 0 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
  box-sizing: border-box;
}
#contenido_admin .rossa-config-forms .func_type_selector:focus,
#contenido_admin .rossa-config-forms select.func_type_selector:focus,
#contenido_admin .rossa-config-forms input[type="text"].func_type_selector:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}
#contenido_admin .rossa-config-forms .config_textarea {
  flex: 1 1 100%;
  width: 100%;
  max-width: 100%;
}
#contenido_admin .rossa-config-forms .config_textarea textarea,
#contenido_admin .rossa-config-forms textarea.func_type_selector {
  width: 100%;
  min-height: 120px;
  padding: 10px 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
  box-sizing: border-box;
  resize: vertical;
}
#contenido_admin .rossa-config-forms .config_textarea textarea:focus,
#contenido_admin .rossa-config-forms textarea.func_type_selector:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}

/* Toggle switches */
#contenido_admin .rossa-config-forms .switch {
  flex: 0 0 auto;
  width: 44px;
  height: 24px;
}
#contenido_admin .rossa-config-forms .slider_switch {
  background-color: var(--rossa-border);
}
#contenido_admin .rossa-config-forms input:checked + .slider_switch {
  background-color: var(--rossa-green-fig);
}
#contenido_admin .rossa-config-forms input:focus + .slider_switch {
  box-shadow: 0 0 0 3px rgba(0, 168, 134, .20);
}
#contenido_admin .rossa-config-forms .slider_switch:before {
  height: 18px;
  width: 18px;
  left: 3px;
  bottom: 3px;
}
#contenido_admin .rossa-config-forms input:checked + .slider_switch:before {
  transform: translateX(20px);
}

/* Save button */
#contenido_admin .rossa-config-forms input.save_conf_func {
  display: inline-block;
  margin: 16px 18px 18px;
  padding: 9px 16px;
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
  border: 1px solid var(--rossa-teal);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 14px;
  line-height: 1.25;
  cursor: pointer;
  transition: background-color .15s ease, border-color .15s ease;
}
#contenido_admin .rossa-config-forms input.save_conf_func:hover {
  background-color: #00474d;
  border-color: #00474d;
}
#contenido_admin .rossa-config-forms input.save_conf_func:active {
  background-color: #003a40;
}

/* Empty state */
#contenido_admin .rossa-config-forms > p i,
#contenido_admin .rossa-config-forms .secciones_tabs > p i {
  font-style: normal;
  color: var(--rossa-muted);
  font-size: 14px;
}

@media (max-width: 700px) {
  #contenido_admin .rossa-config-forms .bloqueconfig {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin .rossa-config-forms .func_type_selector,
  #contenido_admin .rossa-config-forms select.func_type_selector,
  #contenido_admin .rossa-config-forms input[type="text"].func_type_selector {
    max-width: 100%;
    width: 100%;
  }
  #contenido_admin .rossa-config-forms .switch {
    align-self: flex-start;
  }
}

/* --- module_manager: card grid ---------------------------------------- */
#contenido_admin .rossa-module-manager .rossa-module-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 16px;
  margin: 4px 0 4px;
  padding: 0 0 14px;
  border-bottom: 1px solid var(--rossa-border);
  font-family: var(--rossa-font);
}
#contenido_admin .rossa-module-manager .rossa-module-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
#contenido_admin .rossa-module-manager .rossa-module-filter {
  appearance: none;
  border: 1px solid var(--rossa-border);
  background: #fff;
  color: var(--rossa-muted);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  padding: 7px 12px;
  border-radius: var(--rossa-radius-pill);
  cursor: pointer;
}
#contenido_admin .rossa-module-manager .rossa-module-filter.is-active {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: #fff;
}
#contenido_admin .rossa-module-manager .rossa-module-sort {
  display: flex;
  align-items: center;
  gap: 8px;
}
#contenido_admin .rossa-module-manager .rossa-module-sort label {
  font-size: 13px;
  font-weight: 600;
  color: var(--rossa-muted);
  white-space: nowrap;
}
#contenido_admin .rossa-module-manager .rossa-module-sort select {
  min-width: 210px;
  padding: 7px 10px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
  background: #fff;
}
#contenido_admin .rossa-module-manager .rossa-module-sort select:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .18);
}
#contenido_admin .rossa-module-manager .rossa-module-empty {
  margin: 24px 0 8px;
  text-align: center;
  color: var(--rossa-muted);
  font-size: 14px;
}

#contenido_admin .rossa-module-manager .modules-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 18px;
  padding: 18px 0 0;
  font-family: var(--rossa-font);
  align-items: stretch;
}
#contenido_admin .rossa-module-manager .module-card {
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  height: 360px;
  min-height: 360px;
  max-height: 360px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 14px;
  background: var(--rossa-white);
  box-shadow: none;
  overflow: hidden;
}
#contenido_admin .rossa-module-manager .module-card[hidden] {
  display: none !important;
}

/* Los inactivos se atenúan, sin teñir toda la ficha. */
#contenido_admin .rossa-module-manager .module-card.module-card--status-enabled {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
}
#contenido_admin .rossa-module-manager .module-card.module-card--status-enabled .module-info h3 {
  color: var(--rossa-ink);
}
#contenido_admin .rossa-module-manager .module-card.module-card--status-enabled .module-image img,
#contenido_admin .rossa-module-manager .module-card.module-card--status-enabled .module-img-fallback {
  filter: none;
  opacity: 1;
}
#contenido_admin .rossa-module-manager .module-card.module-card--status-enabled .module-status-badge {
  /* badge un poco más presente solo en activos */
  font-size: 11px;
  padding: 5px 11px;
}

#contenido_admin .rossa-module-manager .module-card.module-card--status-disabled {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
}
#contenido_admin .rossa-module-manager .module-card.module-card--status-disabled .module-image img,
#contenido_admin .rossa-module-manager .module-card.module-card--status-disabled .module-img-fallback {
  filter: grayscale(1);
  opacity: .55;
}
#contenido_admin .rossa-module-manager .module-card.module-card--status-disabled .module-info h3 {
  color: var(--rossa-muted);
  font-weight: 500;
}
#contenido_admin .rossa-module-manager .module-card.module-card--status-disabled .module-info > p:not(.module-status-meta),
#contenido_admin .rossa-module-manager .module-card.module-card--status-disabled .module-status-meta {
  opacity: .75;
}
#contenido_admin .rossa-module-manager .module-card.module-card--status-disabled .module-actions {
  opacity: .85;
}

#contenido_admin .rossa-module-manager .module-card.module-card--status-uninstalled,
#contenido_admin .rossa-module-manager .module-card.module-card--status-unknown {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
  opacity: .82;
}
#contenido_admin .rossa-module-manager .module-card.module-card--status-uninstalled .module-image img,
#contenido_admin .rossa-module-manager .module-card.module-card--status-uninstalled .module-img-fallback,
#contenido_admin .rossa-module-manager .module-card.module-card--status-unknown .module-image img,
#contenido_admin .rossa-module-manager .module-card.module-card--status-unknown .module-img-fallback {
  filter: grayscale(1);
  opacity: .4;
}
#contenido_admin .rossa-module-manager .module-card.module-card--status-uninstalled .module-info h3,
#contenido_admin .rossa-module-manager .module-card.module-card--status-unknown .module-info h3 {
  color: var(--rossa-muted);
  font-weight: 500;
}
#contenido_admin .rossa-module-manager .module-card.module-card--status-uninstalled .module-info > p:not(.module-status-meta),
#contenido_admin .rossa-module-manager .module-card.module-card--status-uninstalled .module-status-meta,
#contenido_admin .rossa-module-manager .module-card.module-card--status-unknown .module-info > p:not(.module-status-meta),
#contenido_admin .rossa-module-manager .module-card.module-card--status-unknown .module-status-meta {
  opacity: .7;
}
#contenido_admin .rossa-module-manager .module-image {
  position: relative;
  flex: 0 0 auto;
  margin-bottom: 10px;
}
#contenido_admin .rossa-module-manager .module-image img {
  width: 100%;
  height: 140px;
  object-fit: cover;
  border-radius: var(--rossa-radius);
  border: 1px solid var(--rossa-hairline-soft);
  display: block;
}
#contenido_admin .rossa-module-manager .module-img-fallback {
  width: 100%;
  height: 140px;
  border-radius: var(--rossa-radius);
  background: var(--rossa-surface-2);
  border: 1px solid var(--rossa-hairline-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--rossa-muted);
  font-size: 2.5rem;
}
#contenido_admin .rossa-module-manager .module-info {
  flex: 1 1 auto;
  min-height: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
#contenido_admin .rossa-module-manager .module-info h3 {
  margin: 0 0 6px;
  font-family: var(--rossa-font);
  font-size: 16px;
  font-weight: 600;
  color: var(--rossa-navy);
  line-height: 1.3;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
}
#contenido_admin .rossa-module-manager .module-info h3 .promotion-indicator {
  color: var(--rossa-coral);
  font-size: .85em;
  margin-left: 4px;
}
#contenido_admin .rossa-module-manager .module-info > p:not(.module-status-meta) {
  margin: 0;
  font-size: 13px;
  line-height: 1.45;
  color: var(--rossa-muted);
  flex: 1 1 auto;
  min-height: 0;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  overflow: hidden;
}
#contenido_admin .rossa-module-manager .module-status-meta {
  margin: 8px 0 0;
  font-size: 12px;
  font-weight: 500;
  color: var(--rossa-muted);
  line-height: 1.35;
  flex: 0 0 auto;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#contenido_admin .rossa-module-manager .module-card--status-enabled .module-status-meta {
  color: var(--rossa-teal);
}
#contenido_admin .rossa-module-manager .module-status-badge {
  position: absolute;
  top: 8px;
  right: 8px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  border-radius: var(--rossa-radius-pill);
  font-family: var(--rossa-font);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .02em;
  text-transform: uppercase;
  border: 1px solid transparent;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  line-height: 1.2;
}
#contenido_admin .rossa-module-manager .module-status-badge i {
  font-size: 12px;
  line-height: 1;
}
#contenido_admin .rossa-module-manager .module-status-badge.status-enabled {
  background-color: var(--rossa-green);
  color: var(--rossa-white);
  border-color: var(--rossa-green);
}
#contenido_admin .rossa-module-manager .module-status-badge.status-disabled {
  background-color: var(--rossa-salmon);
  color: var(--rossa-coral);
  border-color: var(--rossa-coral);
}
#contenido_admin .rossa-module-manager .module-status-badge.status-uninstalled {
  background-color: #fff;
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}
#contenido_admin .rossa-module-manager .module-status-badge.status-unknown {
  background-color: var(--rossa-surface);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}
#contenido_admin .rossa-module-manager .module-actions {
  display: flex;
  flex-wrap: wrap;
  flex: 0 0 auto;
  gap: 10px;
  justify-content: flex-end;
  align-items: center;
  margin-top: auto;
  padding-top: 12px;
  border-top: 1px solid var(--rossa-hairline-soft);
}
#contenido_admin .rossa-module-manager .module-actions > a {
  display: inline-flex;
  color: inherit;
  text-decoration: none;
  line-height: 0;
}
#contenido_admin .rossa-module-manager .module-action-btn {
  box-sizing: border-box;
  flex: 0 0 auto;
  min-width: 42px;
  width: 42px;
  height: 42px;
  padding: 0 !important;
  border-radius: var(--rossa-radius);
  font-size: 18px;
  line-height: 1;
  border: 1px solid transparent;
  box-shadow: none !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transform: none !important;
  cursor: pointer;
  transition: none;
}
#contenido_admin .rossa-module-manager .module-action-btn i {
  display: block;
  font-size: 18px;
  line-height: 1;
  width: 1em;
  height: 1em;
  color: inherit;
  pointer-events: none;
}
/* Masked Lucide icons (§32): fill the 1em box inside the chip */
#contenido_admin .rossa-module-manager .module-action-btn i::before {
  width: 1em;
  height: 1em;
  vertical-align: 0;
}
#contenido_admin .rossa-module-manager .module-action-btn.btn-standby,
#contenido_admin .rossa-module-manager .module-action-btn.btn-info,
#contenido_admin .rossa-module-manager .module-action-btn.btn-standby:hover,
#contenido_admin .rossa-module-manager .module-action-btn.btn-info:hover {
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
  border-color: var(--rossa-teal);
}
#contenido_admin .rossa-module-manager .module-action-btn.btn-warning,
#contenido_admin .rossa-module-manager .module-action-btn.btn-warning:hover {
  background-color: var(--rossa-coral);
  color: var(--rossa-white);
  border-color: var(--rossa-coral);
}
#contenido_admin .rossa-module-manager .module-action-btn.btn-success,
#contenido_admin .rossa-module-manager .module-action-btn.btn-success:hover {
  background-color: var(--rossa-green) !important;
  color: var(--rossa-white) !important;
  border-color: var(--rossa-green) !important;
}
#contenido_admin .rossa-module-manager .module-action-btn.completed {
  background-color: var(--rossa-green) !important;
  color: var(--rossa-white) !important;
  border-color: var(--rossa-green) !important;
  opacity: .85;
}
#contenido_admin .rossa-module-manager .module-action-btn.error,
#contenido_admin .rossa-module-manager .module-action-btn.error:hover,
#contenido_admin .rossa-module-manager .module-action-btn.btn-error,
#contenido_admin .rossa-module-manager .module-action-btn.btn-error:hover {
  background-color: var(--rossa-red) !important;
  color: var(--rossa-white) !important;
  border-color: var(--rossa-red) !important;
  opacity: .85;
}
/* Anular hovers legacy del CSS inline de modsGraphicHandler */
#contenido_admin .rossa-module-manager .module-action-btn:hover,
#contenido_admin .rossa-module-manager .module-card:hover,
#contenido_admin .rossa-module-manager .rossa-module-filter:hover {
  transform: none !important;
  box-shadow: none !important;
}
#contenido_admin .rossa-module-manager .update-database-btn {
  position: relative;
  overflow: visible;
}
#contenido_admin .rossa-module-manager .update-indicator {
  top: -3px;
  right: -3px;
  width: 12px;
  height: 12px;
  background-color: var(--rossa-red);
  border: 2px solid var(--rossa-white);
}

@media (max-width: 768px) {
  #contenido_admin .control-panel-container .control-panel-grid {
    grid-template-columns: 1fr;
    padding: 14px;
  }
  #contenido_admin .control-panel-container .module-header {
    padding: 16px;
    flex-direction: column;
    text-align: center;
  }
  #contenido_admin .control-panel-container .module-info-section {
    flex-direction: column;
    text-align: center;
  }
  #contenido_admin .history-container .history-header {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin .history-container .history-filters {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin .rossa-module-manager .modules-grid {
    grid-template-columns: 1fr;
    padding-top: 14px;
  }
  #contenido_admin .rossa-module-manager .rossa-module-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin .rossa-module-manager .rossa-module-sort {
    justify-content: space-between;
  }
  #contenido_admin .rossa-module-manager .rossa-module-sort select {
    flex: 1 1 auto;
    min-width: 0;
  }
}

/*=============================================================================
  36. PROFILES — tabla centralizada + formulario + asignación
=============================================================================*/
/* Scoped: otras tablas #perfiles_fact conservan los valores de §18. */

/* --- List table (perfiles_fact in module pests) ------------------------- */
#contenido_admin .rossa-profiles {
  width: 100%;
  max-width: none;
  margin-top: 12px;
  font-family: var(--rossa-font);
}
#contenido_admin .rossa-profiles-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#contenido_admin .rossa-profiles #perfiles_fact.rossa-profiles-table {
  margin-bottom: 0;
  width: 100%;
  min-width: 520px;
  border-collapse: collapse;
  background: transparent;
}
#contenido_admin .rossa-profiles #perfiles_fact tbody > tr.cab:first-child td {
  text-align: left;
  font-size: 14px;
  font-weight: 600;
  text-transform: none;
  letter-spacing: normal;
  color: var(--rossa-teal);
  background: var(--rossa-surface-2);
  border-top: 0 !important;
  border-bottom: 1px solid var(--rossa-border) !important;
  padding: 12px 14px;
}
#contenido_admin .rossa-profiles #perfiles_fact tr.rossa-profiles-table__head td,
#contenido_admin .rossa-profiles #perfiles_fact tr.cab.rossa-profiles-table__head td {
  text-align: center;
  padding: 9px 12px;
  font-size: 11px;
  letter-spacing: .04em;
}
#contenido_admin .rossa-profiles #perfiles_fact tr.rossa-profiles-table__head td:first-child,
#contenido_admin .rossa-profiles #perfiles_fact tr.cab.rossa-profiles-table__head td:first-child {
  text-align: left;
}
#contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab) td {
  padding: 10px 12px;
  vertical-align: middle;
}
#contenido_admin .rossa-profiles #perfiles_fact .rossa-profiles-table__name {
  text-align: left;
  font-weight: 600;
  color: var(--rossa-navy);
  min-width: 8rem;
}
#contenido_admin .rossa-profiles #perfiles_fact .rossa-profiles-table__name-with-abbr {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  max-width: 100%;
}
#contenido_admin .rossa-profiles #perfiles_fact .rossa-profiles-table__name-text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
#contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab) td:not(.rossa-profiles-table__name):not(.rossa-profiles-ops) {
  text-align: center;
  color: var(--rossa-muted);
  font-size: 13px;
}
#contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab) td.rossa-profiles-table__field--profile_description {
  text-align: left;
  max-width: 28rem;
  color: var(--rossa-ink);
  font-weight: 400;
}
#contenido_admin .rossa-profiles #perfiles_fact .rossa-profiles-color-swatch {
  display: inline-block;
  width: 1.35rem;
  height: 1.35rem;
  border-radius: 4px;
  border: 1px solid var(--rossa-border);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.35);
  vertical-align: middle;
}
#contenido_admin .rossa-profiles #perfiles_fact td.rossa-profiles-table__field--color {
  width: 1%;
  white-space: nowrap;
}
#contenido_admin .rossa-profile-config__abbr-row {
  display: flex;
  align-items: center;
  gap: 12px;
}
#contenido_admin .rossa-fact-abbr,
#contenido_admin .fv-profile-abbr {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.1rem;
  height: 2.1rem;
  min-width: 2.1rem;
  padding: 0;
  border-radius: 50%;
  background: var(--rossa-teal);
  border: none;
  color: #fff;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  line-height: 1;
  box-sizing: border-box;
  vertical-align: middle;
  flex-shrink: 0;
}
#contenido_admin .rossa-fact-abbr--lg,
#contenido_admin .fv-profile-abbr--lg {
  width: 2.75rem;
  height: 2.75rem;
  min-width: 2.75rem;
  font-size: 0.8rem;
}
#contenido_admin .rossa-fact-abbr--len3 {
  font-size: 0.58rem;
  letter-spacing: 0.02em;
}
#contenido_admin .rossa-fact-abbr--lg.rossa-fact-abbr--len3 {
  font-size: 0.7rem;
}
#contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab):hover td {
  background-color: var(--rossa-tint);
}
#contenido_admin .rossa-profiles #perfiles_fact tr.warni td {
  background: var(--rossa-salmon) !important;
  color: var(--rossa-coral);
  font-weight: 600;
  font-style: normal;
}
#contenido_admin .rossa-profiles #perfiles_fact tr.warni:hover td {
  background: #fbe0d8 !important;
}

#contenido_admin .rossa-profiles #perfiles_fact tr.cab td:last-child {
  min-width: 9.5rem;
}
#contenido_admin .rossa-profiles #perfiles_fact td.rossa-profiles-ops {
  padding: 6px 8px;
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}

/* Operaciones: rejilla en wrapper interno (nunca display:grid en el <td>) */
#contenido_admin .rossa-profiles-ops__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(5.5rem, 1fr));
  gap: 4px;
  width: max-content;
  max-width: 28rem;
  min-width: 9.5rem;
  margin-left: auto;
  padding: 0;
  box-sizing: border-box;
}
#contenido_admin .rossa-profiles-ops__form {
  display: contents;
  margin: 0;
}
#contenido_admin .rossa-profiles-ops__btn,
#contenido_admin .rossa-profiles-ops .admin_boton,
#contenido_admin .rossa-profiles-ops button.admin_boton {
  width: 100%;
  min-width: 0;
  min-height: 1.625rem;
  height: auto;
  margin: 0;
  padding: 3px 5px;
  border-radius: 5px;
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 3px;
  font-family: var(--rossa-font);
  font-size: 10px;
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: .01em;
  text-align: center;
  white-space: normal;
  overflow-wrap: anywhere;
  box-sizing: border-box;
  cursor: pointer;
  box-shadow: none;
  transition: background-color .12s ease, border-color .12s ease, color .12s ease;
}
#contenido_admin .rossa-profiles-ops__btn i,
#contenido_admin .rossa-profiles-ops .admin_boton i {
  flex: 0 0 auto;
  font-size: 11px;
  line-height: 1;
  width: 1em;
  height: 1em;
  opacity: .92;
}
#contenido_admin .rossa-profiles-ops__btn span {
  flex: 1 1 auto;
  min-width: 0;
}
/* Editar: outline teal (menos bloque sólido en la fila) */
#contenido_admin .rossa-profiles-ops__btn--edit {
  background-color: var(--rossa-white);
  color: var(--rossa-teal);
  border: 1px solid rgba(0, 94, 102, .45);
}
#contenido_admin .rossa-profiles-ops__btn--edit:hover {
  background-color: rgba(0, 94, 102, .07);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
}
#contenido_admin .rossa-profiles-ops__btn--edit i {
  font-size: 11px;
}
/* Eliminar / restaurar */
#contenido_admin .rossa-profiles-ops__btn--delete i,
#contenido_admin .rossa-profiles-ops__btn--restore i {
  font-size: 11px;
}
#contenido_admin .rossa-profiles-ops__btn--restore {
  background-color: var(--rossa-white);
  border: 1px solid rgba(0, 94, 102, .45);
  color: var(--rossa-teal);
}
#contenido_admin .rossa-profiles-ops__btn--restore:hover {
  background-color: rgba(0, 94, 102, .07);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
}
/* Secundarios: ghost muy ligero */
#contenido_admin .rossa-profiles-ops a.admin_boton.admin_boton--ghost,
#contenido_admin .rossa-profiles-ops button.admin_boton.admin_boton--ghost,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="fromProfile"],
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="modpage="],
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="module=module_config"] {
  background-color: transparent;
  color: var(--rossa-muted);
  border: 1px solid var(--rossa-hairline-soft);
}
#contenido_admin .rossa-profiles-ops a.admin_boton.admin_boton--ghost:hover,
#contenido_admin .rossa-profiles-ops button.admin_boton.admin_boton--ghost:hover,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="fromProfile"]:hover,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="modpage="]:hover,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="module=module_config"]:hover {
  background-color: var(--rossa-tint);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
#contenido_admin .rossa-profiles-ops a.admin_boton.admin_boton--ghost:hover i,
#contenido_admin .rossa-profiles-ops button.admin_boton.admin_boton--ghost:hover i,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="fromProfile"]:hover i,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="modpage="]:hover i,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="module=module_config"]:hover i {
  opacity: 1;
}
#contenido_admin .rossa-profiles-ops button.admin_boton[name="generateXLS_debug"],
#contenido_admin .rossa-profiles-ops button.admin_boton[name="generateFactZIP"] {
  border: 0;
}
/* Eliminar: tinte suave, no bloque coral pleno */
#contenido_admin .rossa-profiles-ops .admin_boton--danger {
  background-color: transparent;
  border: 1px solid rgba(234, 92, 54, .35);
  color: var(--rossa-coral);
}
#contenido_admin .rossa-profiles-ops .admin_boton--danger:hover {
  background-color: var(--rossa-salmon);
  border-color: rgba(234, 92, 54, .5);
  color: var(--rossa-coral);
}
#contenido_admin .rossa-profiles-ops .admin_boton:disabled {
  opacity: .45;
  cursor: not-allowed;
}

/* Toolbar bajo la tabla */
#contenido_admin .rossa-profiles-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-profiles-toolbar > a.admin_boton,
#contenido_admin .rossa-profiles-toolbar > button.admin_boton,
#contenido_admin .rossa-profiles-toolbar__form .admin_boton {
  margin: 0;
  min-height: 36px;
  padding: 8px 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  line-height: 1.25;
  white-space: nowrap;
}
#contenido_admin .rossa-profiles-toolbar__form {
  display: flex;
  align-items: center;
  margin: 0 0 0 auto;
}
#contenido_admin .rossa-profiles-toolbar__form--toggle .admin_boton {
  color: var(--rossa-muted);
}
#contenido_admin .rossa-profiles-toolbar__form--toggle .admin_boton:hover {
  color: var(--rossa-ink);
}

/* Enlaces a ficha de perfil en otras tablas */
#contenido_admin a[href*="module=profileConfig"]:not(.admin_boton) {
  color: var(--rossa-cyan);
  font-weight: 600;
  text-decoration: none;
}
#contenido_admin a[href*="module=profileConfig"]:not(.admin_boton):hover {
  text-decoration: underline;
}

/* --- Formulario crear/editar perfil (profileConfig popup) -------------- */
#contenido_admin .rossa-profile-config {
  max-width: min(1120px, 100%);
  margin: 0;
  padding: 20px 22px 24px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  box-shadow: none;
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
}
#contenido_admin .rossa-profile-config:has(.rossa-profile-config__nomenclatura-layout) {
  max-width: min(1120px, 100%);
}
#contenido_admin.rossa-profile-config-page:not(.isiframe) .rossa-profile-config {
  margin: 0;
}
#contenido_admin.rossa-profile-config-page > h1 {
  margin-bottom: 14px;
}
#contenido_admin.isiframe.rossa-profile-config-page > h1,
#contenido_admin.isiframe:has(.rossa-profile-config) > h1 {
  display: none;
}
#contenido_admin:not(.isiframe) .rossa-profile-config__title {
  display: none;
}
#contenido_admin .rossa-profile-config__title {
  margin: 0 0 18px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--rossa-border);
  font-size: 18px;
  font-weight: 600;
  line-height: 1.35;
  color: var(--rossa-navy);
}
#contenido_admin .rossa-profile-config form,
#contenido_admin .rossa-profile-config__form {
  display: flex;
  flex-direction: column;
  gap: 0;
}
#contenido_admin .rossa-profile-config__section {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
}
#contenido_admin .rossa-profile-config__section + .rossa-profile-config__section {
  margin-top: 8px;
  padding-top: 22px;
  border-top: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-profile-config__section-title {
  margin: 0 0 10px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-profile-config__section-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
#contenido_admin .rossa-profile-config__row {
  display: grid;
  gap: 12px 14px;
  align-items: start;
}
#contenido_admin .rossa-profile-config__row--pair {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
#contenido_admin .rossa-profile-config__row--full {
  grid-template-columns: minmax(0, 1fr);
}
#contenido_admin .rossa-profile-config__cell {
  min-width: 0;
}
#contenido_admin .rossa-profile-config__cell > .form-group,
#contenido_admin .rossa-profile-config__field--geo.form-group,
#contenido_admin .rossa-profile-config__field--nomenclatura.form-group {
  margin: 0;
  height: 100%;
}
#contenido_admin .rossa-profile-config__cell > .form-group {
  display: flex;
  flex-direction: column;
}
#contenido_admin .rossa-profile-config__field--geo > .rossa-profile-config__row--pair {
  margin: 0;
}
#contenido_admin .rossa-profile-config__hint {
  margin: -2px 0 8px;
  font-size: 12px;
  line-height: 1.45;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-profile-config .form-group {
  margin: 0;
  min-width: 0;
}
#contenido_admin .rossa-profile-config .form-group label,
#contenido_admin .rossa-profile-config__cell > label,
#contenido_admin .rossa-profile-config__field--geo .rossa-profile-config__cell > label {
  display: block;
  margin-bottom: 6px;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.35;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-profile-config .form-group .campo_texto,
#contenido_admin .rossa-profile-config .form-group select.campo_texto,
#contenido_admin .rossa-profile-config .form-group input[type="text"],
#contenido_admin .rossa-profile-config .form-group input[type="number"],
#contenido_admin .rossa-profile-config .form-group input[type="email"],
#contenido_admin .rossa-profile-config .form-group input[type="password"],
#contenido_admin .rossa-profile-config .form-group select,
#contenido_admin .rossa-profile-config .form-group textarea,
#contenido_admin .rossa-profile-config .form-group .campo_texto,
#contenido_admin .rossa-profile-config .form-group select.campo_texto {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  padding: 8px 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-profile-config .form-group input[type="text"],
#contenido_admin .rossa-profile-config .form-group input[type="number"],
#contenido_admin .rossa-profile-config .form-group input[type="email"],
#contenido_admin .rossa-profile-config .form-group input[type="password"],
#contenido_admin .rossa-profile-config .form-group select,
#contenido_admin .rossa-profile-config .form-group .campo_texto,
#contenido_admin .rossa-profile-config .form-group select.campo_texto {
  min-height: 38px;
}
#contenido_admin .rossa-profile-config .form-group textarea {
  min-height: 88px;
  resize: vertical;
}
#contenido_admin .rossa-profile-config .form-group input:focus,
#contenido_admin .rossa-profile-config .form-group select:focus,
#contenido_admin .rossa-profile-config .form-group textarea:focus,
#contenido_admin .rossa-profile-config .form-group .campo_texto:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}
#contenido_admin .rossa-profile-config .form-group:has(> input[type="checkbox"]) {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  align-self: start;
  height: auto;
  min-height: 38px;
  gap: 6px 10px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  text-align: left;
}
#contenido_admin .rossa-profile-config__row--pair > .rossa-profile-config__cell:has(> .form-group:only-child > input[type="checkbox"]) {
  align-self: end;
}
#contenido_admin .rossa-profile-config .form-group:has(> input[type="checkbox"]) label {
  flex: 1 1 0;
  min-width: 0;
  margin: 0;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
}
#contenido_admin .rossa-profile-config .form-group:has(> input[type="checkbox"]) > .help-block {
  flex: 0 0 100%;
  margin: 0;
  padding-left: 54px;
  box-sizing: border-box;
}
#contenido_admin .rossa-profile-config .form-group input[type="checkbox"] {
  -webkit-appearance: none;
  appearance: none;
  position: relative;
  order: -1;
  flex: 0 0 auto;
  width: 44px;
  height: 24px;
  margin: 0;
  border: 0;
  border-radius: var(--rossa-radius-pill);
  background-color: var(--rossa-border);
  cursor: pointer;
  transition: background-color .2s ease;
}
#contenido_admin .rossa-profile-config .form-group input[type="checkbox"]::before {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--rossa-white);
  transition: transform .2s ease;
}
#contenido_admin .rossa-profile-config .form-group input[type="checkbox"]:checked {
  background-color: var(--rossa-green-fig);
}
#contenido_admin .rossa-profile-config .form-group input[type="checkbox"]:checked::before {
  transform: translateX(20px);
}
#contenido_admin .rossa-profile-config .form-group input[type="checkbox"]:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(0, 168, 134, .20);
}
#contenido_admin .rossa-profile-config .form-group input[type="checkbox"]:focus:not(:focus-visible) {
  box-shadow: none;
}
#contenido_admin .rossa-profile-config .form-group input[type="checkbox"]:disabled {
  opacity: .5;
  cursor: not-allowed;
}
#contenido_admin .rossa-profile-config .js-apply-automation-folios {
  margin-top: 8px;
  width: auto;
  max-width: 100%;
}
#contenido_admin .rossa-profile-config__apply-automation {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  margin-top: 4px;
}
#contenido_admin .rossa-profile-config__apply-automation .js-apply-automation-folios {
  margin-top: 0;
}
#contenido_admin .rossa-profile-config__apply-automation .rossa-profile-config__hint {
  margin: 0;
}

/* Nomenclatura + panel de shortcodes (facturación) */
#contenido_admin .rossa-profile-config__field--nomenclatura {
  padding: 16px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-surface-2);
}
#contenido_admin .rossa-profile-config__field--nomenclatura > label {
  margin-bottom: 4px;
}
#contenido_admin .rossa-profile-config__field--nomenclatura > .rossa-profile-config__hint {
  margin: 0 0 12px;
}
#contenido_admin .rossa-profile-config__nomenclatura-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(240px, 300px);
  gap: 14px;
  align-items: stretch;
}
#contenido_admin .rossa-profile-config__nomenclatura-input {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
#contenido_admin .rossa-profile-config__nomenclatura-compose {
  padding: 10px 12px 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#contenido_admin .rossa-profile-config__nomenclatura-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 12px;
  min-height: 1.2em;
}
#contenido_admin .rossa-profile-config__next-serial {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-profile-config__next-serial-head {
  margin-bottom: 10px;
}
#contenido_admin .rossa-profile-config__next-serial-title {
  display: block;
  margin: 0 0 4px;
  font-size: 13px;
  font-weight: 700;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-profile-config .form-group .rossa-profile-config__next-serial-head .rossa-profile-config__hint {
  margin: 0;
}
#contenido_admin .rossa-profile-config__next-serial-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 12px;
}
#contenido_admin .rossa-profile-config__next-serial-field {
  min-width: 0;
  padding: 10px 12px 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#contenido_admin .rossa-profile-config .form-group .rossa-profile-config__next-serial-field label {
  margin-bottom: 6px;
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-profile-config .form-group .rossa-profile-config__next-serial input[type="number"] {
  width: 100%;
  max-width: none;
}
#contenido_admin .rossa-profile-config .form-group .rossa-profile-config__next-serial .rossa-profile-config__hint {
  margin: 6px 0 0;
}
#contenido_admin .rossa-profile-config .form-group .rossa-profile-config__next-serial .rossa-profile-config__hint--warn {
  color: var(--rossa-coral);
}
#contenido_admin .rossa-profile-config__nomenclatura-value {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 13px;
  letter-spacing: .01em;
}
#contenido_admin .rossa-profile-config .form-group .rossa-profile-config__nomenclatura-compose input.rossa-profile-config__nomenclatura-value {
  width: 100%;
}
#contenido_admin .rossa-profile-config__nomenclatura-tokens-caption {
  margin: 8px 0 0;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-profile-config__nomenclatura-compose:has([data-nomenclatura-tokens][hidden]) .rossa-profile-config__nomenclatura-tokens-caption {
  display: none;
}
#contenido_admin .rossa-profile-config__nomenclatura-tokens {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-top: 6px;
}
#contenido_admin .rossa-profile-config__nomenclatura-tokens[hidden] {
  display: none;
}
#contenido_admin .rossa-profile-config__nomenclatura-token {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0;
  padding: 4px 8px 4px 9px;
  border: 1px solid var(--rossa-teal);
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-tint);
  color: var(--rossa-teal);
  font-family: var(--rossa-font);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.25;
  cursor: pointer;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
#contenido_admin .rossa-profile-config__nomenclatura-token code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 11px;
  font-weight: 600;
  color: inherit;
  background: transparent;
}
#contenido_admin .rossa-profile-config__nomenclatura-token-x {
  font-size: 14px;
  font-weight: 500;
  line-height: 1;
  color: inherit;
  opacity: .7;
}
#contenido_admin .rossa-profile-config__nomenclatura-token:hover,
#contenido_admin .rossa-profile-config__nomenclatura-token:focus-visible {
  background: var(--rossa-salmon);
  border-color: var(--rossa-coral);
  color: var(--rossa-coral);
  outline: none;
}
#contenido_admin .rossa-profile-config__nomenclatura-token-sep {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 12px;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-profile-config__nomenclatura-preview {
  margin-top: auto;
  padding: 12px 14px;
  border: 1px solid var(--rossa-border);
  border-left: 3px solid var(--rossa-teal);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  color: var(--rossa-ink);
}
#contenido_admin .rossa-profile-config__nomenclatura-preview-label {
  display: block;
  margin: 0;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-profile-config__nomenclatura-preview-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 10px;
}
#contenido_admin .rossa-profile-config__nomenclatura-preview-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
}
#contenido_admin .rossa-profile-config__nomenclatura-preview-kind {
  flex: 0 0 auto;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-profile-config__nomenclatura-preview-value {
  display: block;
  flex: 1 1 auto;
  min-width: 0;
  text-align: right;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.35;
  color: var(--rossa-teal);
  word-break: break-all;
  background: transparent;
}
#contenido_admin .rossa-profile-config__nomenclatura-preview-unknown {
  color: var(--rossa-coral);
  font-weight: 600;
}
#contenido_admin .rossa-profile-config__shortcodes-panel {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  height: 100%;
  max-height: none;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  overflow: hidden;
}
#contenido_admin .rossa-profile-config__shortcodes-head {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px 10px 8px;
  border-bottom: 1px solid var(--rossa-border);
  background: var(--rossa-white);
}
#contenido_admin .rossa-profile-config__shortcodes-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-profile-config__shortcodes-hint {
  margin: 0;
  font-size: 12px;
  line-height: 1.35;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-profile-config__shortcodes-search {
  width: 100%;
  box-sizing: border-box;
  padding: 7px 10px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 12px;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-profile-config__shortcodes-search:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}
#contenido_admin .rossa-profile-config__shortcodes-list {
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  flex: 1 1 auto;
  gap: 6px;
  padding: 10px;
  overflow: auto;
  min-height: 120px;
}
#contenido_admin .rossa-profile-config__shortcode-chip {
  margin: 0;
  padding: 5px 9px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-surface-2);
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.25;
  cursor: pointer;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
#contenido_admin .rossa-profile-config__shortcode-chip code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 11px;
  font-weight: 600;
  color: inherit;
  background: transparent;
}
#contenido_admin .rossa-profile-config__shortcode-chip:hover,
#contenido_admin .rossa-profile-config__shortcode-chip:focus-visible {
  background: var(--rossa-tint);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
  outline: none;
}
#contenido_admin .rossa-profile-config__shortcode-chip.is-in-use {
  background: var(--rossa-tint);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
}
#contenido_admin .rossa-profile-config__shortcode-chip.is-in-use:hover,
#contenido_admin .rossa-profile-config__shortcode-chip.is-in-use:focus-visible {
  background: var(--rossa-salmon);
  border-color: var(--rossa-coral);
  color: var(--rossa-coral);
}
#contenido_admin .rossa-profile-config__shortcode-chip.is-filtered-out {
  display: none;
}
#contenido_admin .rossa-profile-config__shortcodes-group {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  width: 100%;
  margin-bottom: 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-profile-config__shortcodes-group:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: 0;
}
#contenido_admin .rossa-profile-config__shortcodes-group.is-filtered-out {
  display: none;
}
#contenido_admin .rossa-profile-config__shortcodes-group-title {
  flex: 0 0 100%;
  margin: 0 0 2px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-profile-config__shortcodes-req {
  text-transform: none;
  letter-spacing: 0;
  font-weight: 500;
  color: var(--rossa-teal);
}
#contenido_admin .rossa-profile-config__shortcodes-group.is-missing .rossa-profile-config__shortcodes-group-title {
  color: var(--rossa-coral);
}
#contenido_admin .rossa-profile-config__nomenclatura-status {
  margin: 0;
  min-height: 1.2em;
  font-size: 12px;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-profile-config__nomenclatura-status.is-ok {
  color: var(--rossa-green);
}
#contenido_admin .rossa-profile-config__nomenclatura-status.is-error {
  color: var(--rossa-coral);
}
#contenido_admin .rossa-profile-config__nomenclatura-reset {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--rossa-cyan);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  text-decoration: underline;
}
#contenido_admin .rossa-profile-config__nomenclatura-reset:hover {
  color: var(--rossa-teal);
}
#contenido_admin .rossa-profile-config__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  justify-content: flex-end;
  margin-top: 28px;
  padding-top: 22px;
  border-top: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-profile-config__actions .admin_boton:not(.rossa-actionbar-btn) {
  min-height: 36px;
  margin: 0;
  padding: 8px 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* Popup Lydia: scroll interno estable + barra de acciones fija abajo */
html:has(#contenido_admin.isiframe .rossa-profile-config),
html:has(#contenido_admin.isiframe .rossa-profile-config) body,
html:has(#contenido_admin.isiframe .rossa-profile-config) #contenedor_absoluto {
  height: 100%;
  min-height: 100%;
}
html:has(#contenido_admin.isiframe .rossa-profile-config) #contenedor_absoluto {
  padding-top: 0 !important;
  padding-left: 0 !important;
  min-height: 0;
}
#contenido_admin.isiframe:has(.rossa-profile-config) {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 100%;
  margin-top: 0 !important;
  padding: 0 !important;
  box-sizing: border-box;
  overflow: hidden;
}
#contenido_admin.isiframe .rossa-profile-config {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  width: 100%;
  max-width: none;
  min-height: 0;
  margin: 0;
  /* Sin padding lateral: el margen del contenido va en form/actions. */
  padding: 16px 0 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-sizing: border-box;
}
#contenido_admin.isiframe .rossa-profile-config:has(.rossa-profile-config__nomenclatura-layout) {
  max-width: none;
}
#contenido_admin.isiframe .rossa-profile-config__title {
  display: none;
}
#contenido_admin.isiframe .rossa-profile-config__form {
  flex: 1 1 auto;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
  padding: 0 22px 12px;
  box-sizing: border-box;
}
#contenido_admin.isiframe .rossa-profile-config__nomenclatura-layout {
  grid-template-columns: minmax(0, 1fr) minmax(260px, 340px);
}
#contenido_admin.isiframe .rossa-profile-config__actions {
  flex: 0 0 auto;
  position: static;
  z-index: 1;
  margin-top: 10px;
  margin-left: 0;
  margin-right: 0;
  padding: 18px 22px 16px;
  border-top: 1px solid var(--rossa-border);
  background: var(--rossa-white);
  box-shadow: none;
  box-sizing: border-box;
  justify-content: center;
}

html:has(#contenido_admin.isiframe .rossa-profile-config--compact),
html:has(#contenido_admin.isiframe .rossa-profile-config--compact) body,
html:has(#contenido_admin.isiframe .rossa-profile-config--compact) #contenedor_absoluto {
  height: auto !important;
  min-height: 0 !important;
  overflow-x: hidden;
  overflow-y: auto;
}
html:has(#contenido_admin.isiframe .rossa-profile-config--compact) #contenedor_absoluto {
  padding-top: 0 !important;
  padding-left: 0 !important;
  display: block;
}
#contenido_admin.isiframe:has(.rossa-profile-config--compact) {
  display: block;
  height: auto !important;
  min-height: 0;
  overflow: visible;
  padding: 0 !important;
}
#contenido_admin.isiframe .rossa-profile-config--compact {
  display: flex;
  flex-direction: column;
  flex: none;
  height: auto;
  min-height: 0;
  padding: 16px 0 0;
  overflow: visible;
}
#contenido_admin.isiframe .rossa-profile-config--compact .rossa-profile-config__form {
  display: block;
  flex: none;
  overflow: visible;
  padding: 0 22px 8px;
  scrollbar-gutter: auto;
}
#contenido_admin.isiframe .rossa-profile-config--compact .rossa-profile-config__actions {
  position: static;
  margin-top: 12px;
  padding: 18px 22px 16px;
  justify-content: center;
}

/* --- Asignación de perfiles (asigProfiles.php) -------------------------- */
#contenido_admin.rossa-profiles-asig {
  font-family: var(--rossa-font);
}
#contenido_admin.rossa-profiles-asig .contenido_admin h2 {
  font-size: 16px;
  font-weight: 600;
  color: var(--rossa-teal);
  margin: 0 0 12px;
}
#contenido_admin.rossa-profiles-asig .filter-controls,
#contenido_admin.rossa-profiles-asig .bulk-actions {
  background: var(--rossa-surface-2);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 14px 16px;
  margin: 16px 0;
  gap: 12px;
  box-shadow: none;
}
#contenido_admin.rossa-profiles-asig .filter-controls label,
#contenido_admin.rossa-profiles-asig .bulk-actions label {
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 700;
  color: var(--rossa-ink);
}
#contenido_admin.rossa-profiles-asig .filter-controls select,
#contenido_admin.rossa-profiles-asig .bulk-actions select {
  height: 36px;
  padding: 0 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
  min-width: 200px;
}
#contenido_admin.rossa-profiles-asig .filter-controls select:focus,
#contenido_admin.rossa-profiles-asig .bulk-actions select:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}
#contenido_admin.rossa-profiles-asig .selected-count {
  color: var(--rossa-teal);
  font-size: 13px;
  font-weight: 600;
}
/* Anula el gradiente morado del <style> inline de asigProfiles.php */
#contenido_admin.rossa-profiles-asig #perfiles_fact tr.cab td,
#contenido_admin.rossa-profiles-asig #perfiles_fact .cab td {
  background: var(--rossa-white) !important;
  color: var(--rossa-navy) !important;
  border-top: 1px solid var(--rossa-hairline) !important;
  border-bottom: 1px solid var(--rossa-hairline) !important;
  box-shadow: none;
  padding: 10px 12px;
}
#contenido_admin.rossa-profiles-asig #perfiles_fact {
  box-shadow: none;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
}
#contenido_admin.rossa-profiles-asig #perfiles_fact tbody td {
  padding: 10px 12px;
  vertical-align: middle;
}
#contenido_admin.rossa-profiles-asig #perfiles_fact tbody tr:hover {
  background-color: var(--rossa-tint);
}
#contenido_admin.rossa-profiles-asig #perfiles_fact tbody select {
  max-width: 100%;
  min-width: 200px;
}
#contenido_admin.rossa-profiles-asig .sortable-header {
  cursor: pointer;
  user-select: none;
}
#contenido_admin.rossa-profiles-asig .sortable-header::after {
  color: var(--rossa-muted);
  opacity: .7;
}
#contenido_admin.rossa-profiles-asig tr.row-changed {
  background-color: var(--rossa-salmon) !important;
  border-left: 4px solid var(--rossa-coral);
}
#contenido_admin.rossa-profiles-asig tr.row-changed:hover {
  background-color: #fbe0d8 !important;
}
#contenido_admin.rossa-profiles-asig .checkbox-cell input[type="checkbox"] {
  width: 16px;
  height: 16px;
  accent-color: var(--rossa-teal);
  cursor: pointer;
}
#contenido_admin.rossa-profiles-asig .bulk-actions button:disabled {
  opacity: .55;
  cursor: not-allowed;
}

@media (max-width: 768px) {
  #contenido_admin .rossa-profile-config {
    max-width: none;
    padding: 16px 14px 20px;
    margin: 0;
    border-left: 0;
    border-right: 0;
    border-radius: 0;
  }
  #contenido_admin .rossa-profile-config:has(.rossa-profile-config__nomenclatura-layout) {
    max-width: none;
  }
  #contenido_admin .rossa-profile-config__nomenclatura-layout {
    grid-template-columns: 1fr;
  }
  #contenido_admin .rossa-profile-config__next-serial-grid {
    grid-template-columns: 1fr;
  }
  #contenido_admin .rossa-profile-config__shortcodes-panel {
    height: auto;
    max-height: 280px;
  }
  #contenido_admin .rossa-profile-config__field--nomenclatura {
    padding: 12px;
  }
  #contenido_admin .rossa-profile-config__title {
    font-size: 17px;
    margin-bottom: 14px;
    padding-bottom: 10px;
  }
  #contenido_admin.isiframe:has(.rossa-profile-config) {
    padding: 0 !important;
  }
  #contenido_admin.isiframe .rossa-profile-config {
    max-width: none;
    margin: 0;
    padding: 14px 0 0;
  }
  #contenido_admin.isiframe .rossa-profile-config__form {
    padding: 0 16px 12px;
  }
  #contenido_admin.isiframe .rossa-profile-config__actions {
    padding: 14px 16px 12px;
  }
  #contenido_admin.isiframe .rossa-profile-config__nomenclatura-layout {
    grid-template-columns: 1fr;
  }
  #contenido_admin .rossa-profile-config__row--pair,
  #contenido_admin .rossa-profile-config__field--geo .rossa-profile-config__row--pair {
    grid-template-columns: 1fr;
  }
  #contenido_admin .rossa-profile-config__form {
    gap: 16px;
  }
  #contenido_admin .rossa-profile-config__actions {
    flex-direction: row;
    align-items: stretch;
    gap: 8px;
  }
  #contenido_admin .rossa-profile-config__actions .admin_boton {
    flex: 1 1 0;
    min-width: 0;
  }
  #contenido_admin .rossa-profiles-table-wrap {
    overflow-x: visible;
    border: 0;
    border-radius: 0;
    background: transparent;
  }
  #contenido_admin .rossa-profiles #perfiles_fact.rossa-profiles-table {
    min-width: 0;
    border-spacing: 0;
  }
  #contenido_admin .rossa-profiles #perfiles_fact tbody > tr.cab:first-child td {
    display: block;
    border: 1px solid var(--rossa-border) !important;
    border-radius: var(--rossa-radius);
    margin-bottom: 10px;
    background: var(--rossa-surface-2);
  }
  #contenido_admin .rossa-profiles #perfiles_fact tr.rossa-profiles-table__head {
    display: none;
  }
  #contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab) {
    display: block;
    margin-bottom: 10px;
    border: 1px solid var(--rossa-border);
    border-radius: var(--rossa-radius);
    background: var(--rossa-white);
    overflow: hidden;
  }
  #contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab) td {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
    padding: 9px 12px;
    border-bottom: 1px solid var(--rossa-hairline-soft);
    text-align: right;
    min-width: 0;
  }
  #contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab) td:not(.rossa-profiles-table__name):not(.rossa-profiles-ops) {
    text-align: right !important;
  }
  #contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab) td.rossa-profiles-table__name {
    padding-top: 12px;
  }
  #contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab) td:last-child {
    border-bottom: 0;
  }
  #contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab) td::before {
    content: attr(data-label);
    flex: 0 0 38%;
    max-width: 42%;
    font-weight: 700;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--rossa-muted);
    text-align: left;
    line-height: 1.35;
    padding-top: 1px;
  }
  #contenido_admin .rossa-profiles #perfiles_fact .rossa-profiles-table__name {
    font-size: 15px;
    color: var(--rossa-navy);
  }
  #contenido_admin .rossa-profiles #perfiles_fact td.rossa-profiles-ops {
    padding: 9px 12px !important;
    width: auto !important;
    white-space: normal !important;
  }
  #contenido_admin .rossa-profiles-ops__grid {
    grid-template-columns: repeat(auto-fit, minmax(5rem, 1fr));
    max-width: none;
    min-width: 0;
  }
  #contenido_admin .rossa-profiles-toolbar {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
  }
  #contenido_admin .rossa-profiles-toolbar > a.admin_boton,
  #contenido_admin .rossa-profiles-toolbar > button.admin_boton,
  #contenido_admin .rossa-profiles-toolbar__form .admin_boton {
    width: 100%;
    justify-content: center;
  }
  #contenido_admin .rossa-profiles-toolbar__form {
    margin-left: 0;
    width: 100%;
  }
}

@media (max-width: 700px) {
  #contenido_admin .rossa-profiles {
    margin-bottom: 90px;
  }
  #contenido_admin .rossa-profiles-ops__grid {
    grid-template-columns: repeat(auto-fit, minmax(4.75rem, 1fr));
  }
  #contenido_admin.rossa-profiles-asig .filter-controls,
  #contenido_admin.rossa-profiles-asig .bulk-actions {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin.rossa-profiles-asig .filter-controls select,
  #contenido_admin.rossa-profiles-asig .bulk-actions select {
    width: 100%;
    min-width: 0;
  }
}

/*=============================================================================
  37. LYDIA POPUP — authoritative overrides (loads after lydia_popup.css)
=============================================================================*/
/* Los estilos del shell viven en admin/css/lydia_popup.css; aquí solo el orden de carga. */
#lydia_popup #closepop {
  font-size: inherit;
  border-bottom: 1px solid var(--rossa-border);
}
#lydia_popup #cpbuton svg,
#lydia_popup #rpbuton svg,
#lydia_popup #opbuton svg,
#lydia_popup #dpbuton svg {
  width: 18px;
  height: 18px;
}
@media (max-width: 768px) {
  #lydia_popup #cpbuton svg,
  #lydia_popup #rpbuton svg,
  #lydia_popup #opbuton svg,
  #lydia_popup #dpbuton svg {
    width: 18px;
    height: 18px;
  }
}

/* El <h1> pasa a .lptitle del cromo: sin título el padding-top deja un hueco vacío. En el drawer se queda (§89). */
html:not(.rossa-drawer-embed) #contenido_admin.isiframe > h1:first-of-type {
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
  height: 0 !important;
  overflow: hidden !important;
  border: 0 !important;
  line-height: 0 !important;
}
#contenido_admin.isiframe {
  padding-top: 0 !important;
  margin-top: 0 !important;
}
#contenido_admin.isiframe .fv-page,
#contenido_admin.isiframe .fv-popup {
  padding-top: 8px;
}

/*=============================================================================
  38. SCREEN: Visor de facturas (factVisor.php)
=============================================================================*/
#contenido_admin .rossa-fact-visor {
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
  max-width: 100%;
}
#contenido_admin .rossa-fact-visor .fact-bills-container {
  font-family: inherit;
  color: inherit;
}
#contenido_admin .rossa-fact-visor .fact-selectall-mobile { display: none; }

/* --- Toolbar: búsqueda + acciones --------------------------------------- */
#contenido_admin .rossa-fact-visor .fact-bills-header {
  margin-bottom: 14px;
}
#contenido_admin .rossa-fact-visor .fact-bills-search-box {
  background: var(--rossa-white);
  padding: 10px 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
}
#contenido_admin .rossa-fact-visor .fact-search-form {
  display: block;
  margin: 0;
}
#contenido_admin .rossa-fact-visor .fact-search-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
}

/*=============================================================================
  31. VER RESERVA — REWORK
=============================================================================*/
/* Todo namespaced .vr-* para no chocar con el legacy. */

/* --- Breadcrumb + cabecera-resumen de la reserva (NIVEL 1) --------------- */
body.rossa-tabs-on .vr-summary__breadcrumb {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 6px;
  width: 100%;
  max-width: none;
  margin: 2px 0 12px;
  font: 700 12px/1 var(--rossa-font);
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--rossa-muted);
  text-decoration: none !important;
}
body.rossa-tabs-on .vr-summary__breadcrumb:hover { color: var(--rossa-teal); }
body.rossa-tabs-on .vr-summary__breadcrumb i { font-size: 11px; }

.vr-summary {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px 28px;
  width: 100%;
  max-width: none;
  box-sizing: border-box;
  margin: 0 0 18px;
  padding: 16px 22px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 12px;
}
.vr-summary__id { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.vr-summary__loc {
  font: 700 17px/1.1 var(--rossa-font);
  color: var(--rossa-navy);
  letter-spacing: .01em;
}
.vr-summary__client {
  font: 400 14px/1.2 var(--rossa-font);
  color: var(--rossa-cyan);
  text-decoration: none;
}
.vr-summary__client:hover { text-decoration: underline; }
.vr-summary__meta { display: flex; align-items: center; flex-wrap: wrap; gap: 14px 30px; }
.vr-summary__pair {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding-left: 30px;
  border-left: 1px solid var(--rossa-border);
}
.vr-summary__meta .vr-summary__pair:first-child { padding-left: 0; border-left: 0; }
.vr-summary__plabel {
  font: 700 10.5px/1 var(--rossa-font);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
.vr-summary__pvalue { font: 400 14px/1.2 var(--rossa-font); color: var(--rossa-ink); white-space: nowrap; }
.vr-summary__pvalue b { font-weight: 700; }
.vr-summary__badges { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-left: auto; }

/* Badges de estado del header */
body.rossa-tabs-on .vr-summary__badges .rossa-tag {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-weight: 600;
  padding: 5px 12px 5px 11px;
  background-color: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border: 1px solid var(--rossa-border);
}
body.rossa-tabs-on .vr-summary__badges .rossa-tag::before {
  content: "";
  width: 7px; height: 7px;
  border-radius: 50%;
  background: currentColor;
  flex: 0 0 auto;
}
/* Confirmada */
body.rossa-tabs-on .vr-summary__badges .rossa-tag--teal {
  background-color: rgba(0, 94, 102, .09);
  color: var(--rossa-teal);
  border-color: rgba(0, 94, 102, .22);
}
/* Pagado / positivo */
body.rossa-tabs-on .vr-summary__badges .rossa-tag--green {
  background-color: rgba(25, 172, 138, .12);
  color: var(--rossa-green);
  border-color: rgba(25, 172, 138, .30);
}
body.rossa-tabs-on .vr-summary__badges .rossa-tag--coral {
  background-color: rgba(234, 92, 54, .12);
  color: var(--rossa-coral);
  border-color: rgba(234, 92, 54, .30);
}
/* Cancelada */
body.rossa-tabs-on .vr-summary__badges .rossa-tag--red {
  background-color: rgba(231, 0, 76, .09);
  color: var(--rossa-red);
  border-color: rgba(231, 0, 76, .24);
}
/* Pago en recepción / estado neutro */
body.rossa-tabs-on .vr-summary__badges .rossa-tag--soft {
  background-color: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}

/* --- Panel plano por pestaña (NIVEL 3) + patrón de sección -------------- */
/* Reaprovecha .rossa-ctr-block (ya aplanado por §30); .vr-panel es solo para marcado nuevo. */
body.rossa-tabs-on .vr-panel { width: 100%; max-width: none; margin: 0; }
body.rossa-tabs-on .vr-panel--wide { max-width: none; }

body.rossa-tabs-on .vr-section {
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 16px;
  padding: 0;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  overflow: hidden;
}
body.rossa-tabs-on .vr-section:last-child { margin-bottom: 0; }
/* cabecera en barra tintada (estilo "permisos" del editor de usuarios) */
body.rossa-tabs-on .vr-section__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 13px 20px;
  margin: 0;
  background: var(--rossa-surface-2);
  border-bottom: 1px solid var(--rossa-border);
}
/* cuerpo del panel con su padding */
body.rossa-tabs-on .vr-section > .vr-kv,
body.rossa-tabs-on .vr-section > .vr-section__body { padding: 18px 20px; }
body.rossa-tabs-on .vr-section__title {
  margin: 0;
  font: 700 13px/1.2 var(--rossa-font);
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--rossa-teal);
}
body.rossa-tabs-on .vr-section__title i { margin-right: 8px; font-size: 12px; }
body.rossa-tabs-on .vr-section__aside { font: 400 12px/1.2 var(--rossa-font); color: var(--rossa-muted); }

/* Rejilla etiqueta/valor */
body.rossa-tabs-on .vr-kv {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px 28px;
  width: 100%;
}
body.rossa-tabs-on .vr-kv__cell { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
body.rossa-tabs-on .vr-kv__label {
  font: 700 10.5px/1 var(--rossa-font);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
body.rossa-tabs-on .vr-kv__value { font: 400 14px/1.45 var(--rossa-font); color: var(--rossa-ink); }
body.rossa-tabs-on .vr-kv__value a { color: var(--rossa-cyan); text-decoration: none; }
body.rossa-tabs-on .vr-kv__value a:hover { text-decoration: underline; }

/* Fila de acciones al pie de sección */
body.rossa-tabs-on .vr-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
}
#contenido_admin .rossa-fact-visor .fact-search-toolbar__query {
  flex: 1 1 260px;
  min-width: 0;
}
#contenido_admin .rossa-fact-visor .fact-search-input-wrapper {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 6px;
  width: 100%;
  margin: 0;
}
#contenido_admin .rossa-fact-visor .fact-search-input-wrapper input {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
  height: 34px;
  min-height: 0;
  padding: 0 11px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
  font-family: var(--rossa-font);
  font-size: 13px;
  line-height: 1.2;
  color: var(--rossa-ink);
  background: var(--rossa-white);
  box-sizing: border-box;
}
#contenido_admin .rossa-fact-visor .fact-search-input-wrapper input:hover,
#contenido_admin .rossa-fact-visor .fact-search-input-wrapper input:focus {
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}
#contenido_admin .rossa-fact-visor .fact-search-input-wrapper .fact-search-btn {
  flex: 0 0 auto;
  height: 34px;
  min-height: 0;
  padding: 0 12px;
  white-space: nowrap;
}
#contenido_admin .rossa-fact-visor .fact-search-toolbar__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex: 1 1 auto;
  min-width: 0;
}
#contenido_admin .rossa-fact-visor .fact-create-buttons {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0;
}
#contenido_admin .rossa-fact-visor .rossa-button,
#contenido_admin .rossa-fact-visor .fact-search-btn,
#contenido_admin .rossa-fact-visor .fact-clear-btn,
#contenido_admin .rossa-fact-visor .fact-create-btn,
#contenido_admin .rossa-fact-visor .fact-create-draft-btn,
#contenido_admin .rossa-fact-visor .fact-filters-toggle-btn,
#contenido_admin .rossa-fact-visor .fact-filter-apply-btn,
#contenido_admin .rossa-fact-visor .fact-filter-clear-btn,
#contenido_admin .rossa-fact-visor .fact-bulk-download-btn,
#contenido_admin .rossa-fact-visor .fact-bulk-cancel-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 34px;
  min-height: 0;
  padding: 0 12px;
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  box-shadow: none;
  box-sizing: border-box;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
#contenido_admin .rossa-fact-visor .fact-search-btn,
#contenido_admin .rossa-fact-visor .fact-create-btn,
#contenido_admin .rossa-fact-visor .fact-filter-apply-btn,
#contenido_admin .rossa-fact-visor .fact-bulk-download-btn {
  background: var(--rossa-teal);
  border: 1px solid var(--rossa-teal);
  color: var(--rossa-white);
}
#contenido_admin .rossa-fact-visor .fact-search-btn:hover,
#contenido_admin .rossa-fact-visor .fact-create-btn:hover,
#contenido_admin .rossa-fact-visor .fact-filter-apply-btn:hover,
#contenido_admin .rossa-fact-visor .fact-bulk-download-btn:hover {
  background: #00474d;
  border-color: #00474d;
  color: var(--rossa-white);
}
#contenido_admin .rossa-fact-visor .fact-create-draft-btn,
#contenido_admin .rossa-fact-visor .rossa-button--white,
#contenido_admin .rossa-fact-visor .fact-clear-btn,
#contenido_admin .rossa-fact-visor .fact-filters-toggle-btn,
#contenido_admin .rossa-fact-visor .fact-filter-clear-btn,
#contenido_admin .rossa-fact-visor .fact-bulk-cancel-btn {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
}
#contenido_admin .rossa-fact-visor .fact-create-draft-btn:hover,
#contenido_admin .rossa-fact-visor .rossa-button--white:hover,
#contenido_admin .rossa-fact-visor .fact-clear-btn:hover,
#contenido_admin .rossa-fact-visor .fact-filters-toggle-btn:hover,
#contenido_admin .rossa-fact-visor .fact-filter-clear-btn:hover,
#contenido_admin .rossa-fact-visor .fact-bulk-cancel-btn:hover {
  background: var(--rossa-tint);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
}

/* --- Filtros avanzados -------------------------------------------------- */
#contenido_admin .rossa-fact-visor .fact-filters-toggle-wrapper {
  margin-top: 8px;
}
#contenido_admin .rossa-fact-visor .fact-filters-panel {
  margin: 12px 0 16px;
  padding: 16px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
}
#contenido_admin .rossa-fact-visor .fact-filters-grid {
  gap: 12px 16px;
  margin-bottom: 16px;
}
#contenido_admin .rossa-fact-visor .fact-filter-group label {
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-muted);
  text-transform: uppercase;
  letter-spacing: .03em;
}
#contenido_admin .rossa-fact-visor .fact-filter-group label i {
  color: var(--rossa-teal);
}
#contenido_admin .rossa-fact-visor .fact-filter-select,
#contenido_admin .rossa-fact-visor .fact-filter-input {
  min-height: 36px;
  padding: 8px 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
  background: var(--rossa-white);
  box-shadow: none;
}
#contenido_admin .rossa-fact-visor .fact-filter-select:focus,
#contenido_admin .rossa-fact-visor .fact-filter-input:focus {
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}
#contenido_admin .rossa-fact-visor .fact-filters-actions {
  border-top: 1px solid var(--rossa-border);
  padding-top: 14px;
  gap: 8px;
}

/* --- Avisos y selección masiva ------------------------------------------ */
#contenido_admin .rossa-fact-visor .fact-search-info {
  background: var(--rossa-tint);
  border: 1px solid var(--rossa-border);
  border-left: 4px solid var(--rossa-teal);
  border-radius: var(--rossa-radius);
  box-shadow: none;
  color: var(--rossa-ink);
  font-size: 13px;
  margin-bottom: 14px;
}
#contenido_admin .rossa-fact-visor .fact-search-info i,
#contenido_admin .rossa-fact-visor .fact-search-info strong {
  color: var(--rossa-teal);
}
#contenido_admin .rossa-fact-visor .fact-bulk-actions {
  margin: 0 0 14px;
  padding: 12px 14px;
  background: var(--rossa-tint);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
}
#contenido_admin .rossa-fact-visor .fact-bulk-info {
  color: var(--rossa-ink);
  font-size: 13px;
  font-weight: 600;
}
#contenido_admin .rossa-fact-visor .fact-bulk-info i {
  color: var(--rossa-teal);
}

/* --- Cabecera de tabla + listado ---------------------------------------- */
#contenido_admin .rossa-fact-visor .rossa-fact-list {
  margin-top: 4px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  overflow: hidden;
}
#contenido_admin .rossa-fact-visor .rossa-fact-list .fact-table-header {
  padding: 12px 14px;
  background: var(--rossa-white);
  border: 0;
  border-bottom: 1px solid var(--rossa-border);
  border-radius: 0;
  box-shadow: none;
}
#contenido_admin .rossa-fact-visor .rossa-fact-list .fact-bills-table-wrapper {
  background: var(--rossa-white);
  border: 0;
  border-radius: 0;
  box-shadow: none;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
#contenido_admin .rossa-fact-visor .rossa-fact-list .fact-pagination {
  padding: 12px 14px;
  background: var(--rossa-white);
  border: 0;
  border-top: 1px solid var(--rossa-border);
  border-radius: 0;
  box-shadow: none;
}
#contenido_admin .rossa-fact-visor .fact-table-header-info h3 {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  color: var(--rossa-navy);
  gap: 8px;
}
#contenido_admin .rossa-fact-visor .fact-table-header-info h3 i {
  color: var(--rossa-teal);
}
#contenido_admin .rossa-fact-visor .fact-table-subtitle {
  font-size: 12px;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-visor .fact-table-header-controls label {
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-muted);
  text-transform: uppercase;
  letter-spacing: .03em;
}
#contenido_admin .rossa-fact-visor .fact-per-page-select {
  min-height: 34px;
  padding: 6px 10px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
  background: var(--rossa-white);
  box-shadow: none;
}

/* Tabla — specificity busters vs factBillsList.css (!important en thead) */
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table {
  width: 100% !important;
  min-width: 1080px;
  margin: 0 !important;
  border-collapse: collapse;
  border-spacing: 0;
  font-family: var(--rossa-font);
  font-size: 13px;
  background: var(--rossa-white);
  color: var(--rossa-petrol);
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table thead {
  background: var(--rossa-white) !important;
  color: var(--rossa-muted) !important;
  position: sticky;
  top: 0;
  z-index: 2;
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table thead th {
  padding: 13px var(--rossa-tbl-pad-x) !important;
  text-align: center !important;
  border-bottom: 1px solid var(--rossa-border) !important;
  border-radius: 0 !important;
  /* // font-size: 11px; */
  /* // font-weight: 700; */
  text-transform: uppercase;
  /* // letter-spacing: .04em; */
  /* // color: var(--rossa-muted) !important; */
  white-space: nowrap;
  background: var(--rossa-white) !important;
}
/* Cabecera como la base unificada (rossa-tbl): navy, 600 y centrada, también dentro del enlace de ordenar. */
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table .fact-th-link,
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table .fact-th-content i,
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table .fact-th-content span {
  color: inherit !important;
  font-weight: inherit !important;
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table .fact-th-content { justify-content: center; }
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table .fact-th-content .rossa-sorting {
  margin-left: -10px;
}
/* La clase de acciones la lleva el propio <td>: con su inline-flex dejaba de ser celda y los iconos no se centraban. */
@media (min-width: 769px) {
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table td.fact-bill-actions {
    display: table-cell;
    text-align: center;
    white-space: nowrap;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table td.fact-bill-actions > * {
    display: inline-flex;
    vertical-align: middle;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table td.fact-bill-actions > * + * { margin-left: 8px !important; }
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table thead .fact-th-content > i.fa {
  display: none;
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody tr {
  /* // background: var(--rossa-white) !important; */
  /* // border-bottom: 1px solid var(--rossa-hairline-soft); */
  transition: background-color .12s ease;
  animation: none !important;
}
/* // #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody tr:nth-child(even) {
  background: var(--rossa-white) !important;
} */
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody tr:hover {
  background: var(--rossa-tint) !important;
  box-shadow: none !important;
  border-left: 0 !important;
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table td {
  padding: 10px var(--rossa-tbl-pad-x);
  vertical-align: middle;
  border: 0;
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table .fact-bill-id a.admin_link {
  color: var(--rossa-cyan);
  font-weight: 600;
  text-decoration: none;
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table .fact-bill-id a.admin_link:hover {
  text-decoration: underline;
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table .fact-bill-serial,
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table .fact-bill-identifier {
  font-family: var(--rossa-font);
  /* // font-size: 12px; */
  color: var(--rossa-petrol);
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table .fact-bill-client {
  color: var(--rossa-petrol);
  font-weight: 500;
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table .fact-bill-client--folio,
#contenido_admin .rossa-fact-visor .fact-bill-main__client .fact-bill-client--folio {
  color: var(--rossa-muted);
  font-weight: 500;
  font-style: italic;
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table .fact-bill-total {
  font-weight: 700;
  color: var(--rossa-green);
  white-space: nowrap;
}
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table input[type="checkbox"] {
  /* // width: 16px; */
  /* // height: 16px; */
  /* // accent-color: var(--rossa-teal); */
  cursor: pointer;
}

/* Badges */
#contenido_admin .rossa-fact-visor .fact-badge {
  padding: 4px 10px;
  border-radius: var(--rossa-radius-pill);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .03em;
  box-shadow: none;
  border: 1px solid transparent;
}
#contenido_admin .rossa-fact-visor .fact-badge-status-pending {
  background: #fff8e6;
  color: #9a6b00;
  border-color: #f0d78c;
}
#contenido_admin .rossa-fact-visor .fact-badge-status-sent {
  background: var(--rossa-tint);
  color: var(--rossa-teal);
  border-color: rgba(0, 94, 102, .2);
}
#contenido_admin .rossa-fact-visor .fact-badge-status-error {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  border-color: rgba(234, 92, 54, .25);
}
#contenido_admin .rossa-fact-visor .fact-badge-status-success {
  background: #e8f7f2;
  color: var(--rossa-green);
  border-color: rgba(25, 172, 138, .25);
}
#contenido_admin .rossa-fact-visor .fact-badge-emission-draft {
  background: #f3eef8;
  color: #6b4f8a;
  border-color: #ddd0ea;
}
#contenido_admin .rossa-fact-visor .fact-badge-emission-provisional {
  background: #fff3ec;
  color: var(--rossa-coral);
  border-color: rgba(234, 92, 54, .2);
}
#contenido_admin .rossa-fact-visor .fact-badge-emission-confirmed {
  background: #e8f7f2;
  color: var(--rossa-green);
  border-color: rgba(25, 172, 138, .25);
}
#contenido_admin .rossa-fact-visor .fact-badge-emission-anulada,
#contenido_admin .rossa-fact-visor .fact-badge-obsolete {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  border-color: rgba(234, 92, 54, .25);
}
#contenido_admin .rossa-fact-visor .fact-badge-type-default,
#contenido_admin .rossa-fact-visor .fact-badge-type-normal {
  background: var(--rossa-tint);
  color: var(--rossa-teal);
  border-color: rgba(0, 94, 102, .2);
}
#contenido_admin .rossa-fact-visor .fact-badge-type-legacy,
#contenido_admin .rossa-fact-visor .fact-badge-type-simplified {
  background: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}
#contenido_admin .rossa-fact-visor .fact-badge-status-aborted,
#contenido_admin .rossa-fact-visor .fact-badge-status-cancelled {
  background: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}
#contenido_admin .rossa-fact-visor .fact-badge-status-not_required {
  background: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}

#contenido_admin .rossa-fact-visor .fact-badge-type-rectificative {
  background: #fff3ec;
  color: var(--rossa-coral);
  border-color: rgba(234, 92, 54, .2);
}

/* Acciones por fila — anula colores legacy de factBillsList.css */
#contenido_admin .rossa-fact-visor .fact-bill-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  justify-content: center;
  align-items: center;
  min-width: 168px;
}
#contenido_admin .rossa-fact-visor .fact-action-btn,
#contenido_admin .rossa-fact-visor a.fact-action-btn,
#contenido_admin .rossa-fact-visor button.fact-action-btn,
#contenido_admin .rossa-fact-visor span.fact-action-btn {
  width: 32px !important;
  height: 32px !important;
  min-width: 32px !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 1px solid var(--rossa-border) !important;
  border-radius: var(--rossa-radius) !important;
  background: var(--rossa-white) !important;
  color: var(--rossa-muted) !important;
  box-shadow: none !important;
  transform: none !important;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
#contenido_admin .rossa-fact-visor .fact-action-btn:hover:not(.fact-action-btn-disabled) {
  background: var(--rossa-tint) !important;
  border-color: var(--rossa-teal) !important;
  color: var(--rossa-teal) !important;
}
#contenido_admin .rossa-fact-visor .fact-action-info:hover:not(.fact-action-btn-disabled) {
  color: var(--rossa-cyan) !important;
  border-color: var(--rossa-cyan) !important;
}
#contenido_admin .rossa-fact-visor .fact-action-success:hover:not(.fact-action-btn-disabled),
#contenido_admin .rossa-fact-visor .fact-action-download:hover:not(.fact-action-btn-disabled) {
  color: var(--rossa-green) !important;
  border-color: var(--rossa-green) !important;
}
#contenido_admin .rossa-fact-visor .fact-action-warning:hover:not(.fact-action-btn-disabled) {
  color: var(--rossa-coral) !important;
  border-color: var(--rossa-coral) !important;
}
#contenido_admin .rossa-fact-visor .fact-action-btn-disabled,
#contenido_admin .rossa-fact-visor .fact-action-success.fact-action-btn-disabled,
#contenido_admin .rossa-fact-visor .fact-action-warning.fact-action-btn-disabled {
  opacity: .4 !important;
  background: var(--rossa-surface-2) !important;
  border-color: var(--rossa-border) !important;
  color: var(--rossa-muted) !important;
}
#contenido_admin .rossa-fact-visor .fact-action-btn i {
  font-size: 13px;
}

/* Reservas vinculadas */
#contenido_admin .rossa-fact-visor .fact-booking-badge {
  display: inline-flex;
  align-items: center;
  padding: 3px 8px;
  margin: 0 4px 4px 0;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-white);
  color: var(--rossa-cyan);
  font-size: 11px;
  font-weight: 600;
  text-decoration: none;
  box-shadow: none;
  transform: none;
}
#contenido_admin .rossa-fact-visor .fact-booking-badge:hover {
  background: var(--rossa-tint);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
  text-decoration: none;
}
#contenido_admin .rossa-fact-visor .fact-booking-more {
  font-size: 11px;
  color: var(--rossa-muted);
  font-weight: 600;
}

/* Paginación y vacío */
#contenido_admin .rossa-fact-visor .rossa-fact-list + .fact-pagination,
#contenido_admin .rossa-fact-visor .fact-bills-empty {
  margin: 0;
}
#contenido_admin .rossa-fact-visor .rossa-fact-list .fact-bills-empty {
  border: 0;
  border-radius: 0;
}
#contenido_admin .rossa-fact-visor .fact-pagination-info {
  font-size: 13px;
  color: var(--rossa-muted);
  font-weight: 600;
}
#contenido_admin .rossa-fact-visor .fact-page-btn {
  min-width: 34px;
  height: 34px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  box-shadow: none;
}
#contenido_admin .rossa-fact-visor .fact-page-btn:hover,
#contenido_admin .rossa-fact-visor .fact-page-btn.fact-page-btn-active {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}
#contenido_admin .rossa-fact-visor .fact-bills-empty {
  padding: 56px 20px;
  background: var(--rossa-white);
  border: 1px dashed var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
}
#contenido_admin .rossa-fact-visor .fact-bills-empty-icon {
  color: var(--rossa-border);
}
#contenido_admin .rossa-fact-visor .fact-bills-empty h3 {
  font-size: 18px;
  color: var(--rossa-navy);
}
#contenido_admin .rossa-fact-visor .fact-bills-empty p {
  color: var(--rossa-muted);
  font-size: 14px;
}

/* --- Responsive --------------------------------------------------------- */
@media (max-width: 1100px) {
  #contenido_admin .rossa-fact-visor .fact-search-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin .rossa-fact-visor .fact-search-toolbar__query,
  #contenido_admin .rossa-fact-visor .fact-search-toolbar__actions {
    flex: 1 1 auto;
    width: 100%;
  }
  #contenido_admin .rossa-fact-visor .fact-search-toolbar__actions {
    justify-content: flex-start;
  }
}
@media (max-width: 992px) {
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table {
    min-width: 960px;
  }
}
@media (max-width: 768px) {
  #contenido_admin .rossa-fact-visor .rossa-fact-list__scroll {
    overflow-x: visible;
    padding: 10px;
    margin-bottom: 90px;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table {
    min-width: 0 !important;
    border-collapse: separate;
    border-spacing: 0 10px;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table thead {
    display: none;
  }
  #contenido_admin .rossa-fact-visor .fact-selectall-mobile {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 10px;
  }
  #contenido_admin .rossa-fact-visor .fact-selectall-mobile input.fact-select-all {
    width: 18px;
    height: 18px;
    border-radius: 4px;
    accent-color: var(--rossa-petrol);
    margin: 0;
    cursor: pointer;
  }
  #contenido_admin .rossa-fact-visor .fact-selectall-mobile label {
    font-weight: 600;
    color: var(--rossa-ink);
    cursor: pointer;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody {
    display: block;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody tr.fact-bill-row {
    display: block;
    padding: 12px;
    margin-bottom: 10px;
    border: 1px solid var(--rossa-border) !important;
    border-radius: var(--rossa-radius) !important;
    background: var(--rossa-white) !important;
    box-shadow: none !important;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody tr.fact-bill-row:last-child {
    margin-bottom: 0;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody tr.fact-bill-row:hover {
    background: var(--rossa-white) !important;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody td {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
    width: 100%;
    padding: 7px 0;
    border: 0;
    box-sizing: border-box;
    text-align: right !important;
    min-height: var(--rossa-tbl-row-h);
    height: auto !important;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody td > * {
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
    overflow-wrap: anywhere;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody td::before {
    content: attr(data-label);
    flex: 0 0 42%;
    max-width: 42%;
    padding-top: 2px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--rossa-muted);
    text-align: left;
    line-height: 1.35;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody td.fact-bill-check {
    justify-content: flex-start;
    min-height: 0;
    padding-top: 0;
    padding-bottom: 4px;
    padding-left: 4px;
    margin-bottom: 4px;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody td.fact-bill-check::before {
    content: none;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody td.fact-bill-actions {
    flex-wrap: wrap !important;
    justify-content: space-between;
    align-items: stretch;
    padding-top: 10px;
    margin-top: 4px;
    border-top: 1px solid var(--rossa-hairline-soft);
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table tbody td.fact-bill-actions::before {
    flex: 0 0 100%;
    max-width: 100%;
    margin-bottom: 6px;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table td.fact-bill-actions {
    justify-content: flex-start;
    min-width: 0;
    width: 100%;
  }
  #contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table td.fact-bill-bookings {
    flex-wrap: wrap;
    min-width: 0;
    max-width: none;
  }
  #contenido_admin .rossa-fact-visor .fact-table-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }
  #contenido_admin .rossa-fact-visor .fact-table-header-controls {
    width: 100%;
    justify-content: space-between;
  }
  #contenido_admin .rossa-fact-visor .fact-bulk-content {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin .rossa-fact-visor .fact-bulk-buttons {
    width: 100%;
    flex-direction: column;
  }
  #contenido_admin .rossa-fact-visor .fact-bulk-buttons .rossa-button {
    width: 100%;
    justify-content: center;
  }
  /* El paginador es un flex-item suelto (sin .rossa-actionbar__pager) junto a .fact-bulk-actions:
     con flex-grow:1 en la seleccion y sin wrap en la barra, se quedaba sin sitio propio. */
  #rossa-actionbar:has(.fact-bulk-actions) {
    flex-wrap: wrap;
  }
  #rossa-actionbar:has(.fact-bulk-actions) > .rossa-pager {
    flex: 1 1 100%;
    justify-content: center;
  }
  #contenido_admin .rossa-fact-visor .fact-filters-actions {
    flex-direction: column;
  }
  #contenido_admin .rossa-fact-visor .fact-filter-apply-btn,
  #contenido_admin .rossa-fact-visor .fact-filter-clear-btn {
    width: 100%;
    justify-content: center;
  }
  #contenido_admin .rossa-fact-visor .fact-pagination {
    flex-direction: column;
    align-items: center;
    gap: 10px;
  }
  #contenido_admin .rossa-fact-visor .fact-pagination-buttons {
    flex-wrap: wrap;
    justify-content: center;
  }
}
@media (max-width: 640px) {
  #contenido_admin .rossa-fact-visor .fact-bills-search-box {
    padding: 10px;
  }
  #contenido_admin .rossa-fact-visor .fact-search-input-wrapper {
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
  }
  #contenido_admin .rossa-fact-visor .fact-search-input-wrapper input,
  #contenido_admin .rossa-fact-visor .fact-search-input-wrapper .fact-search-btn {
    width: 100%;
    height: 36px;
  }
  #contenido_admin .rossa-fact-visor .fact-search-toolbar__actions,
  #contenido_admin .rossa-fact-visor .fact-create-buttons {
    flex-direction: column;
    align-items: stretch;
    width: 100%;
  }
  #contenido_admin .rossa-fact-visor .fact-search-toolbar__actions .rossa-button,
  #contenido_admin .rossa-fact-visor .fact-search-toolbar__actions .fact-clear-btn,
  #contenido_admin .rossa-fact-visor .fact-create-buttons .rossa-button {
    width: 100%;
    height: 36px;
    justify-content: center;
  }
  #contenido_admin .rossa-fact-visor .fact-filters-toggle-btn {
    width: 100%;
    height: 36px;
    justify-content: center;
  }
}

/*=============================================================================
  38b. SCREEN: Detalle de factura (billVisor.php)
=============================================================================*/
#contenido_admin .rossa-fact-bill-visor {
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
  max-width: 100%;
}

#contenido_admin .rossa-fact-bill-visor .fact-bill-view-container {
  max-width: none;
  margin: 0;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

/* --- Cabecera: título + acciones ---------------------------------------- */
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 14px 16px;
  margin-bottom: 16px;
  padding: 16px 18px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-title {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 12px;
  min-width: 0;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-title h2 {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.2;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-title h2 i {
  margin-right: 8px;
  color: var(--rossa-teal);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-id-badge {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 0 12px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-teal);
  color: var(--rossa-white);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .02em;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
}

/* Editor de folio — ritmo vertical y paneles */
#contenido_admin .rossa-fact-bill-visor .folio-editor-container {
  max-width: 960px;
  margin: 0 auto 8px;
}

#contenido_admin .rossa-fact-bill-visor .folio-editor-container .fact-bill-view-header {
  margin-bottom: 24px;
}

#contenido_admin .rossa-fact-bill-visor .folio-editor-container .wizard-section {
  min-height: auto;
  margin-bottom: 24px;
  padding: 20px 22px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
}

#contenido_admin .rossa-fact-bill-visor .folio-editor-container .wizard-section:last-child {
  margin-bottom: 0;
}

#contenido_admin .rossa-fact-bill-visor .folio-editor-container .folio-editor-meta {
  padding: 16px 20px;
}

#contenido_admin .rossa-fact-bill-visor .folio-editor-container .main-toolbar {
  margin-bottom: 18px;
}

#contenido_admin .rossa-fact-bill-visor .folio-editor-container .items-container {
  margin-bottom: 18px;
}

#contenido_admin .rossa-fact-bill-visor .folio-editor-container .folio-editor-section-title,
#contenido_admin .rossa-fact-bill-visor .folio-editor-container .wizard-section > h3 {
  margin: 0 0 16px;
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 700;
  color: var(--rossa-ink);
}

#contenido_admin .rossa-fact-bill-visor .folio-editor-container .main-toolbar .folio-editor-section-title {
  margin-bottom: 0;
}

#contenido_admin .rossa-fact-bill-visor .folio-editor-container .section-summary .summary-row {
  padding: 6px 14px;
}

#contenido_admin .rossa-fact-bill-visor .folio-editor-container .section-summary .summary-row.total {
  padding: 10px 14px;
}

#contenido_admin .rossa-fact-bill-visor .folio-editor-container .form-group label {
  margin-bottom: 10px;
  color: var(--rossa-muted);
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* Botones de acción */
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn {
  margin: 0;
  height: 36px;
  padding: 0 14px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  white-space: nowrap;
  box-sizing: border-box;
  cursor: pointer;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
  transform: none;
  box-shadow: none;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn:hover {
  transform: none;
  box-shadow: none;
}
#contenido_admin .rossa-fact-bill-visor a.fact-bill-view-btn,
#rossa-actionbar a.fact-bill-view-btn {
  text-decoration: none;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn-primary {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn-primary:hover:not(:disabled):not(.fact-bill-view-btn-disabled) {
  background: #00474d;
  border-color: #00474d;
  color: var(--rossa-white);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn-success {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn-success:hover:not(:disabled):not(.fact-bill-view-btn-disabled) {
  background: var(--rossa-white);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn-warning {
  background: var(--rossa-salmon);
  border-color: var(--rossa-salmon);
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn-warning:hover:not(:disabled):not(.fact-bill-view-btn-disabled) {
  background: #fbe0d8;
  border-color: #fbe0d8;
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn-disabled,
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn:disabled {
  opacity: 1;
  cursor: not-allowed !important;
  background: #f2f4f5 !important;
  border-color: var(--rossa-border) !important;
  color: var(--rossa-muted) !important;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn-disabled:hover,
#contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn:disabled:hover {
  background: #f2f4f5 !important;
  border-color: var(--rossa-border) !important;
  color: var(--rossa-muted) !important;
}

/* --- Secciones ---------------------------------------------------------- */
#contenido_admin .rossa-fact-bill-visor .fact-bill-sections {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-section {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 16px 18px;
  box-shadow: none;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-section.full-width {
  grid-column: 1 / -1;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-section-title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--rossa-border);
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-section-title i {
  color: var(--rossa-teal);
  font-size: 14px;
}

/* --- Campos de información ---------------------------------------------- */
#contenido_admin .rossa-fact-bill-visor .fact-bill-info-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 16px;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-info-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-info-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-info-value {
  font-size: 14px;
  font-weight: 500;
  line-height: 1.45;
  color: var(--rossa-ink);
  word-break: break-word;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-info-value .empty,
#contenido_admin .rossa-fact-bill-visor .fact-bill-info-value span.empty {
  color: var(--rossa-muted);
  font-style: italic;
  font-weight: 400;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-section > p.empty {
  margin: 0;
  color: var(--rossa-muted);
  font-size: 13px;
  font-style: italic;
  font-weight: 400;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-folio-client-hint {
  margin-top: 12px;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-info-value--total {
  font-size: 18px;
  font-weight: 700;
  color: var(--rossa-green);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-status-icon--yes {
  color: var(--rossa-green);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-status-icon--no {
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-info-value a.admin_link,
#contenido_admin .rossa-fact-bill-visor .fact-client-reference-btn {
  color: var(--rossa-cyan);
  font-weight: 600;
  text-decoration: none;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-info-value a.admin_link:hover,
#contenido_admin .rossa-fact-bill-visor .fact-client-reference-btn:hover {
  color: var(--rossa-teal);
  text-decoration: underline;
}

/* --- Badges de estado --------------------------------------------------- */
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge,
#contenido_admin .rossa-fact-bill-visor .fact-badge {
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  padding: 0 10px;
  border-radius: var(--rossa-radius-pill);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
  line-height: 1.2;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-type-DEFAULT,
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-type-SIMPLIFIED,
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-status-SENT {
  background: rgba(23, 121, 155, .12);
  color: var(--rossa-cyan);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-type-RECTIFICATIVE,
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-status-ERROR {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-type-LEGACY,
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-status-CANCELLED,
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-status-ABORTED,
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-status-NOT_REQUIRED,
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-emission-LEGACY,
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-emission-PROVISIONAL {
  background: #f2f4f5;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-status-PENDING,
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-emission-DRAFT,
#contenido_admin .rossa-fact-bill-visor .fact-badge.fact-badge-status-pending {
  background: #fff4e8;
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-status-SUCCESS,
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-emission-CONFIRMED,
#contenido_admin .rossa-fact-bill-visor .fact-badge.fact-badge-status-success {
  background: rgba(25, 172, 138, .12);
  color: var(--rossa-green);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-badge-emission-ANULADA,
#contenido_admin .rossa-fact-bill-visor .fact-badge-obsolete {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
}

/* --- Tablas (líneas, pagos, documentos) --------------------------------- */
#contenido_admin .rossa-fact-bill-visor .fact-bill-lines-table {
  width: 100%;
  margin-top: 4px;
  border-collapse: collapse;
  border-spacing: 0;
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
  background: var(--rossa-white);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-lines-table thead {
  background: var(--rossa-white);
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-lines-table th {
  padding: 10px 8px;
  border-bottom: 1px solid var(--rossa-border);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--rossa-muted);
  background: var(--rossa-white);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-lines-table td {
  padding: 10px 8px;
  border-bottom: 1px solid var(--rossa-border);
  font-size: 13px;
  vertical-align: middle;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-lines-table tbody tr:hover {
  background: rgba(0, 94, 102, .03);
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-lines-table .text-right {
  text-align: right;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-lines-table .text-center {
  text-align: center;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-total-row {
  background: var(--rossa-white) !important;
  font-weight: 700;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-total-row td {
  border-top: 1px solid var(--rossa-border);
  border-bottom: 0;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-pending-row {
  background: var(--rossa-salmon) !important;
}
#contenido_admin .rossa-fact-bill-visor .fact-bill-pending-label,
#contenido_admin .rossa-fact-bill-visor .fact-bill-pending-amount {
  color: var(--rossa-coral);
  font-weight: 700;
}
#contenido_admin .rossa-fact-bill-visor .fact-booking-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  color: var(--rossa-cyan);
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  transform: none;
  box-shadow: none;
}
#contenido_admin .rossa-fact-bill-visor .fact-booking-link:hover {
  color: var(--rossa-teal);
  background: transparent;
  text-decoration: underline;
  transform: none;
  box-shadow: none;
}
#contenido_admin .rossa-fact-bill-visor .fact-payment-ref {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 8px;
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-muted);
  font-size: 12px;
  font-weight: 600;
  font-family: var(--rossa-font);
}
#contenido_admin .rossa-fact-bill-visor .fact-action-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--rossa-radius);
  border: 1px solid var(--rossa-border);
  background: var(--rossa-white);
  color: var(--rossa-teal);
  text-decoration: none;
  transition: border-color .15s ease, color .15s ease, background-color .15s ease;
}
#contenido_admin .rossa-fact-bill-visor .fact-action-btn:hover {
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
  background: rgba(0, 94, 102, .04);
}
#contenido_admin .rossa-fact-bill-visor .fact-action-btn.fact-action-btn-disabled {
  opacity: .45;
  cursor: not-allowed;
  pointer-events: none;
}

/* --- Comentarios y errores ---------------------------------------------- */
#contenido_admin .rossa-fact-bill-visor .fact-bill-comments {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 14px 16px;
  min-height: 48px;
  color: var(--rossa-ink);
  font-size: 14px;
  line-height: 1.55;
}
#contenido_admin .rossa-fact-bill-visor .fact-error-message {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 0;
  padding: 14px 16px;
  border: 1px solid #f0c4b8;
  border-radius: var(--rossa-radius);
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  font-size: 14px;
  line-height: 1.45;
}
#contenido_admin .rossa-fact-bill-visor .fact-error-message i {
  margin-top: 2px;
  font-size: 18px;
  color: var(--rossa-coral);
}

/* --- Responsive --------------------------------------------------------- */
@media (max-width: 900px) {
  #contenido_admin .rossa-fact-bill-visor .fact-bill-sections,
  #contenido_admin .rossa-fact-bill-visor .fact-bill-info-grid {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 768px) {
  #contenido_admin .rossa-fact-bill-visor .fact-bill-view-header {
    flex-direction: column;
    align-items: flex-start;
  }
  #contenido_admin .rossa-fact-bill-visor .fact-bill-view-actions {
    width: 100%;
  }
  #contenido_admin .rossa-fact-bill-visor .fact-bill-view-btn {
    flex: 1 1 calc(50% - 4px);
    min-width: 0;
  }
  #contenido_admin .rossa-fact-bill-visor .fact-bill-lines-table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* .fv-filter:hover pinta el texto teal y sobre la pastilla activa lo haría invisible. */
#contenido_admin .fv-filter--active,
#contenido_admin .fv-filter--active:hover,
#contenido_admin .fv-filter--active:focus {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}

/*=============================================================================
  38c. SCREEN: Detalle de cliente facturación (clientVisor.php)
=============================================================================*/
#contenido_admin .rossa-fact-client-visor {
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
  max-width: 100%;
}

#contenido_admin .rossa-fact-client-visor .fact-client-view-container {
  max-width: none;
  margin: 0;
  padding: 0;
  font-family: inherit;
  color: inherit;
}

/* --- Cabecera ----------------------------------------------------------- */
#contenido_admin .rossa-fact-client-visor .fact-client-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 14px 16px;
  margin-bottom: 16px;
  padding: 16px 18px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-fact-client-visor .fact-client-header i {
  color: inherit;
}
#contenido_admin .rossa-fact-client-visor .fact-client-header-info {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 16px;
  min-width: 0;
}
#contenido_admin .rossa-fact-client-visor .fact-client-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  flex: 0 0 52px;
  border-radius: 50%;
  background: rgba(0, 94, 102, .08);
  font-size: 28px;
  line-height: 1;
  color: var(--rossa-teal);
}
#contenido_admin .rossa-fact-client-visor .fact-client-avatar i {
  color: var(--rossa-teal);
}
#contenido_admin .rossa-fact-client-visor .fact-client-title h2 {
  margin: 0 0 8px;
  font-family: var(--rossa-font);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.25;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-fact-client-visor .fact-client-type-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 26px;
  padding: 0 10px;
  border-radius: var(--rossa-radius-pill);
  background: rgba(0, 94, 102, .08);
  color: var(--rossa-teal);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
  backdrop-filter: none;
}
#contenido_admin .rossa-fact-client-visor .fact-client-type-badge i {
  font-size: 12px;
  color: var(--rossa-teal);
}
#contenido_admin .rossa-fact-client-visor .fact-client-header-actions {
  text-align: left;
}
#contenido_admin .rossa-fact-client-visor .fact-client-id {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 0 12px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-teal);
  color: var(--rossa-white);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .02em;
  backdrop-filter: none;
}

/* --- Secciones ---------------------------------------------------------- */
#contenido_admin .rossa-fact-client-visor .fact-client-sections {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}
#contenido_admin .rossa-fact-client-visor .fact-client-section {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
  overflow: visible;
  animation: none;
}
#contenido_admin .rossa-fact-client-visor .fact-section-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 14px 18px 10px;
  background: transparent;
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-fact-client-visor .fact-section-header i {
  font-size: 14px;
  color: var(--rossa-teal);
}
#contenido_admin .rossa-fact-client-visor .fact-section-header h3 {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-fact-client-visor .fact-section-content {
  padding: 14px 18px 16px;
}

/* --- Campos ------------------------------------------------------------- */
#contenido_admin .rossa-fact-client-visor .fact-info-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 16px;
}
#contenido_admin .rossa-fact-client-visor .fact-info-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
#contenido_admin .rossa-fact-client-visor .fact-info-item.fact-info-full {
  grid-column: 1 / -1;
}
#contenido_admin .rossa-fact-client-visor .fact-info-item.fact-info-highlight {
  padding: 12px 14px;
  border-radius: var(--rossa-radius);
  border: 1px solid var(--rossa-border);
  background: rgba(0, 94, 102, .04);
}
#contenido_admin .rossa-fact-client-visor .fact-info-item label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-client-visor .fact-info-item span {
  font-size: 14px;
  font-weight: 500;
  line-height: 1.45;
  color: var(--rossa-ink);
  word-break: break-word;
}
#contenido_admin .rossa-fact-client-visor .fact-document-number {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 16px !important;
  font-weight: 700 !important;
  color: var(--rossa-teal) !important;
}
#contenido_admin .rossa-fact-client-visor .fact-document-number i {
  font-size: 16px;
  color: var(--rossa-teal);
}
#contenido_admin .rossa-fact-client-visor .fact-contact-link,
#contenido_admin .rossa-fact-client-visor .fact-client-reference-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--rossa-cyan);
  font-weight: 600;
  text-decoration: none;
}
#contenido_admin .rossa-fact-client-visor .fact-contact-link:hover,
#contenido_admin .rossa-fact-client-visor .fact-client-reference-btn:hover {
  color: var(--rossa-teal);
  text-decoration: underline;
}
#contenido_admin .rossa-fact-client-visor .fact-contact-link i {
  font-size: 13px;
}

/* --- Badges de estado --------------------------------------------------- */
#contenido_admin .rossa-fact-client-visor .fact-status-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 26px;
  padding: 0 10px;
  border-radius: var(--rossa-radius-pill);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
}
#contenido_admin .rossa-fact-client-visor .fact-status-active {
  background: rgba(25, 172, 138, .12);
  color: var(--rossa-green);
}
#contenido_admin .rossa-fact-client-visor .fact-status-inactive {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-client-visor .fact-status-badge i {
  font-size: 12px;
}

/* --- Errores ------------------------------------------------------------ */
#contenido_admin .rossa-fact-client-visor .fact-error-message {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 0;
  padding: 14px 16px;
  border: 1px solid #f0c4b8;
  border-left: 1px solid #f0c4b8;
  border-radius: var(--rossa-radius);
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  font-size: 14px;
  font-weight: 500;
  line-height: 1.45;
  box-shadow: none;
}
#contenido_admin .rossa-fact-client-visor .fact-error-message i {
  margin-top: 2px;
  font-size: 18px;
  color: var(--rossa-coral);
}

/* --- Responsive --------------------------------------------------------- */
@media (max-width: 1024px) {
  #contenido_admin .rossa-fact-client-visor .fact-client-sections {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 768px) {
  #contenido_admin .rossa-fact-client-visor .fact-client-header {
    flex-direction: column;
    align-items: flex-start;
    padding: 16px;
  }
  #contenido_admin .rossa-fact-client-visor .fact-client-header-info {
    flex-direction: row;
    align-items: center;
  }
  #contenido_admin .rossa-fact-client-visor .fact-info-grid {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  #contenido_admin .rossa-fact-client-visor .fact-section-content {
    padding: 12px 14px 14px;
  }
}

/*=============================================================================
  39. SCREEN: Problemas facturación automática (factIssuesVisor.php)
=============================================================================*/
#contenido_admin .rossa-fact-issues {
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
  max-width: 100%;
}
#contenido_admin .rossa-fact-issues .fact-issues-container {
  padding: 0;
  max-width: none;
  margin: 0;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-intro {
  margin: 0 0 16px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--rossa-muted);
  max-width: 820px;
}

/* --- Toolbar: pestañas + resumen ---------------------------------------- */
#contenido_admin .rossa-fact-issues .rossa-fact-issues-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-view {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  padding: 0;
  border: 0;
  border-bottom: 1px solid var(--rossa-border);
  border-radius: 0;
  background: transparent;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-view__btn {
  display: inline-flex;
  align-items: center;
  gap: 0;
  min-height: 40px;
  padding: 0 4px;
  margin: 0 16px 0 0;
  border: 0;
  border-radius: 0;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 600;
  color: var(--rossa-muted);
  text-decoration: none;
  background: transparent;
  transition: color .15s ease, border-color .15s ease;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-view__btn:last-child {
  margin-right: 0;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-view__btn:hover {
  color: var(--rossa-teal);
  background: transparent;
  text-decoration: none;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-view__btn.is-active {
  color: var(--rossa-teal);
  border-bottom-color: var(--rossa-teal);
  background: transparent;
  box-shadow: none;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-view__btn.is-active:hover {
  color: var(--rossa-teal);
  background: transparent;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-summary__chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 30px;
  padding: 0 10px;
  border-radius: var(--rossa-radius);
  font-size: 12px;
  font-weight: 600;
  color: var(--rossa-muted);
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-summary__chip i {
  font-size: 11px;
  opacity: .75;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-summary__chip--pending i {
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-summary__chip--resolved i {
  color: var(--rossa-green);
}

/* --- Acciones masivas --------------------------------------------------- */
#contenido_admin .rossa-fact-issues .rossa-fact-issues-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-bulk {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
  padding: 10px 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-bulk__select {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--rossa-ink);
  cursor: pointer;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-bulk__select input[type="checkbox"] {
  width: 16px;
  height: 16px;
  accent-color: var(--rossa-teal);
}
#contenido_admin .rossa-fact-issues .rossa-button,
#contenido_admin .rossa-fact-issues .rossa-fact-issues-bulk__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 34px;
  padding: 0 14px;
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  box-shadow: none;
  transform: none;
  border: 1px solid var(--rossa-teal);
  background: var(--rossa-teal);
  color: var(--rossa-white);
  cursor: pointer;
  text-decoration: none;
}
#contenido_admin .rossa-fact-issues .rossa-button--success,
#contenido_admin .rossa-fact-issues .rossa-fact-issues-bulk__btn {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
}
#contenido_admin .rossa-fact-issues .rossa-button:hover,
#contenido_admin .rossa-fact-issues .rossa-fact-issues-bulk__btn:hover {
  background: #00474d;
  border-color: #00474d;
  color: var(--rossa-white);
  text-decoration: none;
  transform: none;
  box-shadow: none;
}

/* --- Listado ------------------------------------------------------------ */
#contenido_admin .rossa-fact-issues .rossa-fact-issues-list {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  overflow: hidden;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-list__scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
#contenido_admin .rossa-fact-issues .fact-issues-table.rossa-fact-issues-table {
  width: 100% !important;
  min-width: 980px;
  margin: 0 !important;
  border-collapse: collapse;
  border-spacing: 0;
  background: var(--rossa-white);
  box-shadow: none !important;
  border-radius: 0;
  overflow: visible;
}
#contenido_admin .rossa-fact-issues .fact-issues-table.rossa-fact-issues-table thead {
  background: var(--rossa-white) !important;
  color: var(--rossa-muted) !important;
}
#contenido_admin .rossa-fact-issues .fact-issues-table.rossa-fact-issues-table thead th {
  padding: 10px 12px !important;
  border-bottom: 1px solid var(--rossa-border) !important;
  /* // font-size: 11px; */
  /* // font-weight: 700; */
  text-transform: uppercase;
  /* // letter-spacing: .04em; */
  /* // color: var(--rossa-muted) !important; */
  background: var(--rossa-white) !important;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-group__head td {
  padding: 8px 12px !important;
  background: var(--rossa-white) !important;
  border-top: 1px solid var(--rossa-border);
  border-bottom: 1px solid var(--rossa-hairline-soft);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-group--pending .rossa-fact-issues-group__head td,
#contenido_admin .rossa-fact-issues .rossa-fact-issues-group--resolved .rossa-fact-issues-group__head td {
  background: var(--rossa-white) !important;
  color: var(--rossa-muted);
  border-color: var(--rossa-hairline-soft);
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-group--pending .rossa-fact-issues-group__head i {
  color: var(--rossa-coral);
  opacity: .7;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-group--resolved .rossa-fact-issues-group__head i {
  color: var(--rossa-green);
  opacity: .7;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-group__head i {
  margin-right: 6px;
}
#contenido_admin .rossa-fact-issues .fact-issue-row td {
  padding: 12px;
  vertical-align: top;
  font-size: 13px;
  color: var(--rossa-ink);
  border-bottom: 1px solid var(--rossa-hairline-soft);
}
#contenido_admin .rossa-fact-issues .fact-issue-row--pending td {
  background: var(--rossa-white) !important;
  border-left: 0;
}
#contenido_admin .rossa-fact-issues .fact-issue-row--pending:hover td {
  background: var(--rossa-tint) !important;
}
#contenido_admin .rossa-fact-issues .fact-issue-row--resolved td {
  background: var(--rossa-white) !important;
  border-left: 0;
  color: var(--rossa-muted);
  opacity: 1 !important;
}
#contenido_admin .rossa-fact-issues .fact-issue-row--resolved .fact-issue-id strong,
#contenido_admin .rossa-fact-issues .fact-issue-row--resolved .fact-issue-message {
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-issues .fact-issue-row--resolved .admin_link {
  color: var(--rossa-cyan);
}
#contenido_admin .rossa-fact-issues .fact-issue-row--resolved:hover td {
  background: var(--rossa-tint) !important;
}
#contenido_admin .rossa-fact-issues .fact-issue-row .admin_link {
  color: var(--rossa-cyan);
  font-weight: 600;
  text-decoration: none;
}
#contenido_admin .rossa-fact-issues .fact-issue-row .admin_link:hover {
  text-decoration: underline;
}
#contenido_admin .rossa-fact-issues .fact-issue-message {
  max-width: 420px;
  line-height: 1.45;
  color: var(--rossa-ink);
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}
#contenido_admin .rossa-fact-issues .fact-issue-bookings {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
#contenido_admin .rossa-fact-issues .fact-booking-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-white);
  color: var(--rossa-cyan);
  font-size: 11px;
  font-weight: 600;
  text-decoration: none;
  transform: none;
}
#contenido_admin .rossa-fact-issues .fact-booking-badge:hover {
  background: var(--rossa-tint);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
  text-decoration: none;
}

/* Badges — outline suave */
#contenido_admin .rossa-fact-issues .fact-badge {
  display: inline-block;
  padding: 3px 8px;
  border-radius: var(--rossa-radius);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .02em;
  text-transform: uppercase;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-issues .fact-badge-emission-draft,
#contenido_admin .rossa-fact-issues .fact-badge-emission-confirmed,
#contenido_admin .rossa-fact-issues .fact-badge-emission-final,
#contenido_admin .rossa-fact-issues .fact-badge-emission-provisional,
#contenido_admin .rossa-fact-issues .fact-badge-error-validation,
#contenido_admin .rossa-fact-issues .fact-badge-error-client,
#contenido_admin .rossa-fact-issues .fact-badge-error-calculation,
#contenido_admin .rossa-fact-issues .fact-badge-error-duplicate,
#contenido_admin .rossa-fact-issues .fact-badge-error-other {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
  color: var(--rossa-muted);
}

/* Estado resuelto / pendiente — texto discreto */
#contenido_admin .rossa-fact-issues .fact-issue-status {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 0;
  border-radius: 0;
  font-size: 12px;
  font-weight: 600;
  border: 0;
  background: transparent;
  white-space: nowrap;
}
#contenido_admin .rossa-fact-issues .fact-issue-status--pending {
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-issues .fact-issue-status--pending i {
  opacity: .65;
}
#contenido_admin .rossa-fact-issues .fact-issue-status--resolved {
  color: var(--rossa-green);
}
#contenido_admin .rossa-fact-issues .fact-issue-status--resolved i {
  opacity: .65;
}
#contenido_admin .rossa-fact-issues .fact-issue-status__date {
  display: block;
  margin-top: 4px;
  font-size: 11px;
  font-weight: 600;
  color: var(--rossa-muted);
}

/* Vacío */
#contenido_admin .rossa-fact-issues .fact-issues-empty {
  padding: 48px 20px;
  text-align: center;
  border: 1px dashed var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#contenido_admin .rossa-fact-issues .fact-issues-empty__icon {
  font-size: 36px;
  color: var(--rossa-border);
  margin-bottom: 12px;
}
#contenido_admin .rossa-fact-issues .fact-issues-empty h3 {
  margin: 0 0 8px;
  font-size: 18px;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin .rossa-fact-issues .fact-issues-empty p {
  margin: 0;
  font-size: 14px;
  color: var(--rossa-muted);
}

/* --- Responsive --------------------------------------------------------- */
@media (max-width: 992px) {
  #contenido_admin .rossa-fact-issues .fact-issues-table.rossa-fact-issues-table {
    min-width: 860px;
  }
}
@media (max-width: 768px) {
  #contenido_admin .rossa-fact-issues .rossa-fact-issues-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin .rossa-fact-issues .rossa-fact-issues-view {
    width: 100%;
    justify-content: flex-start;
    gap: 0;
  }
  #contenido_admin .rossa-fact-issues .rossa-fact-issues-view__btn {
    flex: 0 1 auto;
    justify-content: center;
    margin: 0 12px 0 0;
    padding: 0 2px;
    font-size: 13px;
  }
  #contenido_admin .rossa-fact-issues .rossa-fact-issues-summary {
    width: 100%;
  }
  #contenido_admin .rossa-fact-issues .rossa-fact-issues-bulk {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin .rossa-fact-issues .rossa-fact-issues-bulk__btn {
    width: 100%;
  }
  #contenido_admin .rossa-fact-issues .rossa-fact-issues-list__scroll {
    overflow-x: visible;
    padding: 10px;
  }
  #contenido_admin .rossa-fact-issues .fact-issues-table.rossa-fact-issues-table {
    min-width: 0 !important;
    display: block;
    overflow-x: visible !important;
    white-space: normal !important;
    border-collapse: separate;
    border-spacing: 0 10px;
  }
  #contenido_admin .rossa-fact-issues .fact-issues-table.rossa-fact-issues-table thead,
  #contenido_admin .rossa-fact-issues .rossa-fact-issues-group__head {
    display: none;
  }
  #contenido_admin .rossa-fact-issues .fact-issues-table.rossa-fact-issues-table tbody {
    display: block;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-row {
    display: block;
    margin: 0 0 10px;
    border: 1px solid var(--rossa-border) !important;
    border-radius: var(--rossa-radius) !important;
    overflow: visible;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-row td {
    display: block;
    width: 100%;
    box-sizing: border-box;
    padding: 9px 12px;
    border: 0 !important;
    border-bottom: 1px solid var(--rossa-hairline-soft) !important;
    border-left: 0 !important;
    background: transparent !important;
    text-align: left !important;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-row td:last-child {
    border-bottom: 0 !important;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-row td::before {
    content: attr(data-label);
    display: block;
    margin: 0 0 4px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--rossa-muted);
    line-height: 1.35;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-row td[data-label=""]::before,
  #contenido_admin .rossa-fact-issues .fact-issue-row td.fact-issues-col-check::before {
    content: none;
    display: none;
    margin: 0;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-row td.fact-issues-col-check {
    border-bottom: 1px solid var(--rossa-border) !important;
    padding-bottom: 10px;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-row td > * {
    max-width: 100%;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-bookings-cell .fact-issue-bookings {
    width: 100%;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-row--pending,
  #contenido_admin .rossa-fact-issues .fact-issue-row--resolved {
    border-left: 0 !important;
    background: var(--rossa-white) !important;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-row--resolved td {
    color: var(--rossa-muted);
  }
  #contenido_admin .rossa-fact-issues .fact-issue-message {
    max-width: none !important;
    width: 100%;
    text-align: left;
    white-space: normal !important;
    overflow-wrap: anywhere;
    word-break: break-word;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-client .admin_link,
  #contenido_admin .rossa-fact-issues .fact-issue-row--resolved .admin_link {
    display: inline;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-status-cell {
    text-align: left;
  }
  #contenido_admin .rossa-fact-issues .fact-issue-status__date {
    text-align: right;
  }
}

/*=============================================================================
  40. SCREEN: Gestión de clientes + Ver cliente (+ add_cliente)
=============================================================================*/
/* El include compartido vistas_reservas.php usa los flags $view_client / $quitarAccionEliminar. */

/* --- Barra de acciones reutilizable ------------------------------------- */
#contenido_admin .rossa-page-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 16px;
  margin: 16px 0 20px;
  padding: 14px 16px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-hairline-soft);
  border-radius: var(--rossa-radius);
}
#contenido_admin .rossa-page-toolbar--compact {
  justify-content: flex-start;
  padding: 12px 14px;
  margin: 10px 0 14px;
}

/* Flex item: comparte el ancho con .rossa-actionbar__pager en vez de superponerse. */
#rossa-actionbar .rossa-page-toolbar--compact {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
}
#rossa-actionbar .rossa-page-toolbar--compact .admin_boton:not(.admin_boton--ghost) {
  border-width: 2px !important;
  font-weight: 700;
}
#rossa-actionbar .rossa-page-toolbar--compact .admin_boton--ghost {
  font-weight: normal;
}
#rossa-actionbar #btn_add_cliente i{
  display: none;
}
/* 985px: ancho real donde los 3 botones + paginación empiezan a solaparse. */
@media (max-width: 985px) {
  #rossa-actionbar .rossa-page-toolbar--compact {
    flex: 0 0 auto;
    justify-content: flex-start;
  }
  #rossa-actionbar #btn_add_cliente,
  #rossa-actionbar #btn_fusionar_repetidos,
  #rossa-actionbar #btn_fusionar_dni {
    position: relative;
    width: 40px;
    min-width: 40px;
    height: 40px;
    padding: 0;
    font-size: 0;
  }
  #rossa-actionbar #btn_add_cliente i {
    display: inline-block;
    font-size: 20px;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
  }
  #rossa-actionbar #btn_fusionar_repetidos::before,
  #rossa-actionbar #btn_fusionar_dni::before {
    content: '';
    display: block;
    position: absolute;
    top: 50%;
    left: 50%;
    width: 20px;
    height: 20px;
    background-color: currentColor;
    transform: translate(-50%, -50%);
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
  }
  #rossa-actionbar #btn_fusionar_repetidos::before {
    -webkit-mask-image: url("https://cdn.rossa.app/icons/Fusi%C3%B3n.svg");
    mask-image: url("https://cdn.rossa.app/icons/Fusi%C3%B3n.svg");
  }
  #rossa-actionbar #btn_fusionar_dni::before {
    -webkit-mask-image: url("https://cdn.rossa.app/icons/id-card.svg");
    mask-image: url("https://cdn.rossa.app/icons/id-card.svg");
  }
}
#contenido_admin .rossa-page-toolbar__nav,
:is(#contenido_admin, #rossa-actionbar) .rossa-page-toolbar__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
}
:is(#contenido_admin, #rossa-actionbar) .rossa-page-toolbar .admin_boton,
:is(#contenido_admin, #rossa-actionbar) .rossa-page-toolbar input.admin_boton,
:is(#contenido_admin, #rossa-actionbar) .rossa-page-toolbar input[type="submit"].admin_boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin: 0;
  white-space: nowrap;
}
:is(#contenido_admin, #rossa-actionbar) .rossa-page-toolbar .admin_boton i {
  font-size: 13px;
  line-height: 1;
}

#rossa-actionbar .asigna_cliente_submit:disabled,
#rossa-actionbar .fusiona_cliente_submit:disabled {
  background: var(--rossa-surface) !important;
  border-color: var(--rossa-border) !important;
  color: var(--rossa-muted) !important;
  cursor: not-allowed;
}
@media (max-width: 700px) {
  #rossa-actionbar:has(#asigna_cliente_submit) .rossa-page-toolbar__actions,
  #rossa-actionbar:has(#fusiona_cliente_submit) .rossa-page-toolbar__actions {
    flex-wrap: nowrap;
  }
  #rossa-actionbar:has(#asigna_cliente_submit) .rossa-actionbar-btn,
  #rossa-actionbar:has(#fusiona_cliente_submit) .rossa-actionbar-btn {
    width: 40px;
    min-width: 40px;
    height: 40px;
    padding: 0;
    flex: 0 0 auto;
  }
}
@media (min-width: 986px) {
  #rossa-actionbar:has(#btn_add_cliente) .rossa-page-toolbar--compact {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}
@media (max-width: 985px) {
  #rossa-actionbar:has(#btn_add_cliente) .rossa-actionbar-btn[data-rossa-exportar-abrir] { flex: none; width: 40px; min-width: 40px; height: 40px; padding: 0; }
  #rossa-actionbar:has(#btn_add_cliente) [data-rossa-exportar-abrir] .rossa-tb-label { display: none; }
  #rossa-actionbar:has(#btn_add_cliente) [data-rossa-exportar-abrir] > i { display: inline-block !important; }
}

/* --- Gestor de clientes — filtros: mismo #filter-dropdown/#rossa-filters que gestor_pedidos (sección "Desplegable de filtros") --- */
/* padding-top:0 para que el margin-top de #rossa-filters colapse con el margin-bottom de #filter-dropdown, igual que en gestor_pedidos (mismo hueco de 18px). */
/* Sin padding lateral: gestor_pedidos no envuelve #rossa-filters en un form con padding, así que el único inset lateral es el padding propio de .rossa-filters (mismo ancho en ambas pantallas). */
#contenido_admin.rossa-clientes-page form.rossa-clientes-filters {
  margin: 0;
  padding: 0 0 12px;
  background: transparent;
  border: 0;
  border-radius: 0;
}


#contenido_admin.rossa-clientes-page form.rossa-clientes-filters .rossa-filter-actions {
  padding: 0 0 14px;
  margin-top: 8px;
}
/* Ahora vive dentro de #rossa-filters (flex-wrap): fuerza su propia línea, como antes de moverlo. */
#contenido_admin.rossa-clientes-page #rossa-filters .rossa-filter-actions {
  flex: 1 0 100%;
  margin-top: 2px;
}
@media (max-width: 700px) {
  #contenido_admin.rossa-clientes-page #rossa-filters .rossa-filter-actions {
    flex: 1 1 auto;
    width: 100%;
  }
}

/* --- Escritorio: filtros fuera del desplegable --- */
@media (min-width: 701px) {
  #contenido_admin.rossa-clientes-page form.rossa-clientes-filters { padding: 0; }
}

/* Panel modo selector */
#contenido_admin.rossa-clientes-page .rossa-clientes-selector-info {
  margin: 0 0 14px;
  padding: 10px 12px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-hairline-soft);
  border-radius: var(--rossa-radius);
}
#contenido_admin.rossa-clientes-page .rossa-clientes-selector-info__picked {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-muted);
  line-height: 1.4;
}
#contenido_admin.rossa-clientes-page .rossa-clientes-selector-info__picked strong {
  color: var(--rossa-teal);
  font-weight: 700;
}
#contenido_admin.rossa-clientes-page .rossa-clientes-selector-info .rossa-clientes-warn {
  margin: 8px 0 0;
  padding: 8px 10px;
  font-size: 12px;
  line-height: 1.4;
}
#contenido_admin.rossa-clientes-page .rossa-page-toolbar--compact {
  margin-bottom: 10px;
}
#contenido_admin.rossa-clientes-page .rossa-clientes-pag {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  width: 100%;
  margin: 0 0 12px;
  font-family: var(--rossa-font);
}
#contenido_admin.rossa-clientes-page .rossa-clientes-pag--top {
  margin-top: 8px;
  margin-bottom: 0;
  padding: 10px 14px;
  background: var(--rossa-strip);
  border: 1px solid var(--rossa-hairline-soft);
  border-radius: var(--rossa-radius);
  box-sizing: border-box;
}
#contenido_admin.rossa-clientes-page .rossa-page-toolbar--compact + .rossa-clientes-pag--top {
  margin-top: 0;
}
#contenido_admin.rossa-clientes-page .rossa-clientes-pag--top + .rossa-clientes-list {
  margin-top: 10px;
}
#contenido_admin.rossa-clientes-page .rossa-clientes-pag--bottom {
  margin: 16px 0 6px;
}
#contenido_admin.rossa-clientes-page .rossa-clientes-pag__summary {
  margin: 0;
  font-size: 14px;
  color: var(--rossa-muted);
  line-height: 1.4;
}
#contenido_admin.rossa-clientes-page .rossa-clientes-pag__summary strong {
  color: var(--rossa-ink);
  font-weight: 600;
}
#contenido_admin.rossa-clientes-page .rossa-clientes-pag__links {
  margin: 0;
  width: 100%;
  text-align: left;
  line-height: 1.6;
}
#contenido_admin.rossa-clientes-page .rossa-clientes-pag__links .pactiva {
  color: var(--rossa-teal);
  font-weight: 700;
}
#contenido_admin.rossa-clientes-page .rossa-table--clientes {
  margin-top: 4px;
}
/*
#contenido_admin.rossa-clientes-page .rossa-table--clientes tr.cab td {
  font-size: 11px;
  letter-spacing: .04em;
} */
#contenido_admin.rossa-clientes-page .rossa-table--clientes td {
  font-family: var(--rossa-font);
  /* font-size: 14px;  -> §65: var(--rossa-tbl-font) */
  vertical-align: middle;
}
#contenido_admin.rossa-clientes-page .rossa-table--clientes tr.client-row td:first-child + td + td a.lydia_popup {
  color: var(--rossa-cyan-fig);
  /* font-weight: 600;  -> §65: 400 */
  text-decoration: none;
}
#contenido_admin.rossa-clientes-page .rossa-table--clientes tr.client-row td:first-child + td + td a.lydia_popup:hover {
  color: var(--rossa-teal);
  text-decoration: underline;
}
#contenido_admin.rossa-clientes-page .gestclimail {
  display: block;
  margin-top: 3px;
  /* font-size: 12px; color: var(--rossa-muted);  -> §65 */
  line-height: 1.35;
}
#contenido_admin.rossa-clientes-page .rossa-table--clientes td:last-child {
  text-align: right;
  white-space: nowrap;
}
#contenido_admin.rossa-clientes-page .rossa-table--clientes td:last-child a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0 2px;
}
#contenido_admin.rossa-clientes-page .rossa-table--clientes td[align="right"] {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
#contenido_admin.rossa-clientes-page table.estandar .rossa-clientes-warn {
  display: block;
  padding: 10px 14px;
  border-radius: var(--rossa-radius);
  background: #fdf3e7;
  border: 1px solid #f6d6cd;
  color: var(--rossa-coral);
  font-size: 13px;
  line-height: 1.45;
  text-align: left;
}

/* --- Ver cliente -------------------------------------------------------- */
#contenido_admin.rossa-ver-cliente-page .rossa-section-title {
  font-family: var(--rossa-font);
  font-size: 17px;
  font-weight: 600;
  color: var(--rossa-navy);
  margin: 28px 0 14px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
}
#contenido_admin.rossa-ver-cliente-page #clientdata {
  margin: 0;
  padding: 0;
  background: transparent;
  border-radius: var(--rossa-radius);
  overflow: hidden;
}
/* Cabecera de columnas estandar_v4 */
#contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th {
  padding: 8px 12px !important;
  color: var(--rossa-navy);
  font-weight: 600;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: .03em;
  text-align: left;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--rossa-hairline) !important;
}
#contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th::after {
  content: none;
}
#contenido_admin.rossa-ver-cliente-page #clientdata tbody tr td {
  background-color: transparent !important;
  border: 0;
  border-radius: 0;
  padding: 14px 12px !important;
  vertical-align: middle;
  color: var(--rossa-ink);
}
#contenido_admin.rossa-ver-cliente-page #clientdata a.admin_link {
  color: var(--rossa-cyan-fig);
  font-weight: 600;
  text-decoration: none;
}
#contenido_admin.rossa-ver-cliente-page #clientdata a.admin_link:hover {
  color: var(--rossa-teal);
  text-decoration: underline;
}
#contenido_admin.rossa-ver-cliente-page #clientdata tr:last-child {
  background-color: transparent;
}
#contenido_admin.rossa-ver-cliente-page #clientdata tr:last-child td {
  border-bottom: 0 !important;
  padding-top: 14px;
  padding-bottom: 14px;
  padding-left: 0 !important;
  padding-right: 0 !important;
  text-align: left;
}
#contenido_admin.rossa-ver-cliente-page #edit {
  margin: 0;
  padding: 0;
  background: transparent;
  border-radius: var(--rossa-radius);
  overflow: hidden;
}
#contenido_admin.rossa-ver-cliente-page #edit tr td:first-child {
  width: 34%;
  color: var(--rossa-muted);
  font-weight: 600;
}
#contenido_admin.rossa-ver-cliente-page #edit tr td:first-child strong,
#contenido_admin.rossa-ver-cliente-page #edit tr td:first-child label {
  font-weight: 600;
  color: var(--rossa-muted);
}
#contenido_admin.rossa-ver-cliente-page #edit textarea {
  min-height: 90px;
  max-width: 480px;
}
#contenido_admin.rossa-ver-cliente-page #edit tr:last-child td {
  padding-left: 0;
  padding-right: 0;
  text-align: left;
}
#contenido_admin.rossa-ver-cliente-page #edit tr:last-child td input[type="submit"].admin_boton {
  display: inline-block;
  margin: 0 8px 0 0;
}

#contenido_admin.rossa-ver-cliente-page .rossa-bkg-selectall { display: none; }
@media (max-width: 700px) {
  #contenido_admin.rossa-ver-cliente-page .rossa-bkg-selectall {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 12px 0;
  }
  #contenido_admin.rossa-ver-cliente-page .rossa-bkg-selectall input.select-all {
    width: 18px;
    height: 18px;
    border-radius: 4px;
    accent-color: var(--rossa-petrol);
    margin: 0;
    cursor: pointer;
  }
  #contenido_admin.rossa-ver-cliente-page .rossa-bkg-selectall label {
    font-weight: 600;
    color: var(--rossa-ink);
    cursor: pointer;
  }
}
#contenido_admin.rossa-ver-cliente-page .rossa-ver-cliente-bookings {
  margin: 0 0 8px;
}
#contenido_admin.rossa-ver-cliente-page .rossa-ver-cliente-bookings .rossa-table__container {
  margin-top: 4px;
  -webkit-overflow-scrolling: touch;
}
#contenido_admin.rossa-ver-cliente-page .rossa-ver-cliente-bookings .table-sortable {
  min-width: 880px;
}
#contenido_admin.rossa-ver-cliente-page .rossa-ver-cliente-bookings .rossa-table thead th {
  /* // color: var(--rossa-muted); */
  /* // font-size: 11px; */
  /* // font-weight: 700; */
  text-transform: uppercase;
  /* // letter-spacing: .03em; */
  white-space: nowrap;
}
#contenido_admin.rossa-ver-cliente-page .rossa-ver-cliente-bookings .tr-pedidos.cancelada td {
  color: var(--rossa-red);
}
#contenido_admin.rossa-ver-cliente-page .rossa-ver-cliente-bookings .precio_rsv {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
#contenido_admin.rossa-ver-cliente-page .rossa-ver-cliente-bookings .rossa-btn {
  margin: 2px;
  font-size: 12px;
  padding: 6px 10px;
}
#contenido_admin.rossa-ver-cliente-page .booking-actions-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  margin: 0 0 16px;
  background: var(--rossa-strip);
  border: 1px solid var(--rossa-hairline-soft);
  border-radius: var(--rossa-radius);
}
#contenido_admin.rossa-ver-cliente-page .booking-actions-toolbar .toolbar-info {
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  color: var(--rossa-ink);
}
#contenido_admin.rossa-ver-cliente-page .booking-actions-toolbar .toolbar-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
#contenido_admin.rossa-ver-cliente-page .booking-actions-toolbar .admin_boton {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0;
}
#contenido_admin.rossa-ver-cliente-page .booking-actions-toolbar .admin_boton:disabled {
  opacity: .5;
  cursor: not-allowed;
}

/* --- tabla_reservas.php (#tabla_pedidos) — check_errores y legacy -------- */
#contenido_admin #tabla_pedidos {
  border: 0;
  font-size: 14px;
  margin: 12px 0 20px;
}
#contenido_admin #tabla_pedidos tr.cab .order_link {
  color: var(--rossa-navy);
  font-weight: 600;
  text-decoration: none;
}
#contenido_admin #tabla_pedidos tr.cab .order_link:hover {
  color: var(--rossa-teal);
}
#contenido_admin #tabla_pedidos tr.cab .order_link::before {
  border-bottom-color: var(--rossa-muted);
}
#contenido_admin #tabla_pedidos tr.cab .order_link::after {
  border-top-color: var(--rossa-muted);
}
#contenido_admin #tabla_pedidos .nombre_cliente_res {
  color: var(--rossa-cyan-fig);
  font-weight: 600;
  text-decoration: none;
}
#contenido_admin #tabla_pedidos .nombre_cliente_res:hover {
  color: var(--rossa-teal);
  text-decoration: underline;
}
#contenido_admin #tabla_pedidos tr.tr-pedidos.cancelada td {
  color: var(--rossa-red);
}
#contenido_admin #tabla_pedidos .precio_rsv {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

/* --- Responsive --------------------------------------------------------- */
@media (max-width: 900px) {
  #contenido_admin .rossa-page-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin .rossa-page-toolbar__nav,
  #contenido_admin .rossa-page-toolbar__actions {
    width: 100%;
    justify-content: flex-start;
  }
  #contenido_admin .rossa-page-toolbar__nav {
    padding-bottom: 10px;
    border-bottom: 1px solid var(--rossa-hairline-soft);
  }
  #contenido_admin .rossa-page-toolbar .admin_boton,
  #contenido_admin .rossa-page-toolbar input.admin_boton,
  #contenido_admin .rossa-page-toolbar input[type="submit"].admin_boton {
    flex: 1 1 calc(50% - 5px);
    min-width: 0;
    text-align: center;
  }
}

@media (max-width: 768px) {
  #contenido_admin.rossa-clientes-page .rossa-clientes-pag--top {
    width: calc(100% + 24px);
    margin-left: -12px;
    margin-right: -12px;
    margin-top: 6px;
    margin-bottom: 0;
    padding: 10px 16px;
    border-radius: 0;
    border-left: 0;
    border-right: 0;
    border-bottom: 0;
  }
  #contenido_admin.rossa-clientes-page .rossa-page-toolbar--compact + .rossa-clientes-pag--top {
    margin-top: 0;
  }
  #contenido_admin.rossa-clientes-page .rossa-clientes-pag--top + .rossa-clientes-list {
    margin-top: 0;
  }
  #contenido_admin.rossa-clientes-page .rossa-clientes-pag--bottom {
    width: calc(100% + 24px);
    margin-left: -12px;
    margin-right: -12px;
    padding: 10px 16px;
    background: var(--rossa-strip);
    border: 1px solid var(--rossa-hairline-soft);
    border-left: 0;
    border-right: 0;
    border-radius: 0;
    box-sizing: border-box;
  }
  #contenido_admin.rossa-clientes-page form.rossa-clientes-filters {
    padding: 0 0 8px;
  }
  #contenido_admin.rossa-clientes-page form.rossa-clientes-filters .rossa-filter-actions {
    padding-top: 12px;
  }
  #contenido_admin.rossa-clientes-page form.rossa-clientes-filters .rossa-filter-actions .admin_boton,
  #contenido_admin.rossa-clientes-page form.rossa-clientes-filters .rossa-filter-actions .rossa-filter-reset-btn {
    flex: 1 1 0;
    text-align: center;
  }
  #contenido_admin.rossa-clientes-page .rossa-page-toolbar--selector .rossa-page-toolbar__actions {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin.rossa-clientes-page .rossa-page-toolbar--selector .admin_boton {
    width: 100%;
    justify-content: center;
  }
  #contenido_admin.rossa-clientes-page #cont-config {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin.rossa-clientes-page .rossa-clientes-list {
    overflow: visible !important;
    width: calc(100% + 24px);
    max-width: none;
    margin-left: -12px;
    margin-right: -12px;
    margin-bottom: 5.5em;
    padding: 0;
    box-sizing: border-box;
  }
  #contenido_admin.rossa-clientes-page table#clientes.rossa-table--clientes {
    display: block !important;
    overflow: visible !important;
    overflow-x: visible !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    margin: 0;
    padding: 0 !important;
    border: 0 !important;
    border-spacing: 0 !important;
    border-collapse: separate;
    background: transparent !important;
    border-radius: 0 !important;
    box-sizing: border-box;
  }
  #contenido_admin.rossa-clientes-page table#clientes.rossa-table--clientes > thead,
  #contenido_admin.rossa-clientes-page table#clientes.rossa-table--clientes > tbody,
  #contenido_admin.rossa-clientes-page table#clientes.rossa-table--clientes > tfoot {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    box-sizing: border-box;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.cab {
    display: none !important;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row {
    display: block !important;
    width: 100% !important;
    max-width: none;
    box-sizing: border-box;
    margin: 0;
    padding: 14px 16px;
    border: 0 !important;
    border-bottom: 1px solid var(--rossa-border) !important;
    border-radius: 0 !important;
    background: var(--rossa-white) !important;
    overflow: hidden;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:last-child {
    border-bottom: 0 !important;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row td {
    display: flex !important;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
    width: 100% !important;
    max-width: 100%;
    min-width: 0;
    padding: 6px 0 !important;
    border: none !important;
    border-radius: 0 !important;
    background: transparent !important;
    text-align: right;
    white-space: normal;
    box-sizing: border-box;
    box-shadow: none !important;
  }
  /* Anula §6 .rossa-table tbody td y bordes legacy de table.estandar (lydia) */
  #contenido_admin.rossa-clientes-page table#clientes.rossa-table--clientes.estandar tbody tr.client-row > td,
  #contenido_admin.rossa-clientes-page table#clientes.rossa-table--clientes.estandar tbody tr.client-row > td:first-child {
    border: none !important;
    border-left: none !important;
    border-radius: 0 !important;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row td::before {
    flex: 0 0 38%;
    max-width: 38%;
    padding-top: 2px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--rossa-muted);
    text-align: left;
    line-height: 1.35;
  }
  /* Listado normal */
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:not(:has(.select-cli)) td:nth-child(1) {
    display: none !important;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:not(:has(.select-cli)) td:nth-child(2) {
    display: flex !important;
    flex-direction: row;
    align-items: flex-start;
    justify-content: space-between;
    text-align: left;
    padding: 0 0 2px !important;
    margin-bottom: 0;
    border: none !important;
    border-bottom: none !important;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:not(:has(.select-cli)) td:nth-child(2)::before {
    content: none;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:not(:has(.select-cli)) td:nth-child(2) br {
    display: none;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:not(:has(.select-cli)) td:nth-child(3) {
    padding-top: 0 !important;
    border: none !important;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:not(:has(.select-cli)) td:nth-child(3)::before { content: "Teléfono"; }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:not(:has(.select-cli)) td:nth-child(4)::before { content: "NIF/CIF"; }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:not(:has(.select-cli)) td:nth-child(5)::before { content: "Registrado"; }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:not(:has(.select-cli)) td:nth-child(6)::before { content: "Nº reservas"; }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:not(:has(.select-cli)) td:nth-child(7) {
    display: flex !important;
    justify-content: center;
    flex-wrap: wrap;
    gap: 10px;
    padding-top: 10px !important;
    margin-top: 4px;
    border-left: 0 !important;
    border-right: 0 !important;
    border-bottom: 0 !important;
    border-top: 1px solid var(--rossa-hairline-soft) !important;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:not(:has(.select-cli)) td:nth-child(7)::before {
    content: none;
  }
  /* Modo selector */
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:has(.select-cli) td:nth-child(1) {
    display: flex !important;
    justify-content: space-between;
    padding-bottom: 6px !important;
    margin-bottom: 0;
    border: none !important;
    border-bottom: none !important;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:has(.select-cli) td:nth-child(1)::before {
    content: "Seleccionar";
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:has(.select-cli) td:nth-child(2) {
    display: none !important;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:has(.select-cli) td:nth-child(3) {
    display: flex !important;
    flex-direction: row;
    align-items: flex-start;
    justify-content: space-between;
    text-align: left;
    padding: 0 0 2px !important;
    margin-bottom: 0;
    border: none !important;
    border-bottom: none !important;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:has(.select-cli) td:nth-child(3) br {
    display: none;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:has(.select-cli) td:nth-child(3)::before {
    content: none;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:has(.select-cli) td:nth-child(4) {
    padding-top: 0 !important;
    border: none !important;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:has(.select-cli) td:nth-child(4)::before { content: "Teléfono"; }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:has(.select-cli) td:nth-child(5)::before { content: "NIF/CIF"; }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:has(.select-cli) td:nth-child(6)::before { content: "Registrado"; }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row:has(.select-cli) td:nth-child(7)::before { content: "Nº reservas"; }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row td a.lydia_popup {
    font-size: 15px;
    word-break: break-word;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row .gestclimail {
    word-break: break-word;
    margin-top: 0;
    text-align: right;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row td[align="right"] {
    text-align: right;
  }
  #contenido_admin.rossa-clientes-page #clientes tr.client-row td:last-child a {
    margin: 0 4px;
  }
  #contenido_admin.rossa-ver-cliente-page #edit tr:not(.cab) {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 10px 0;
    border-bottom: 1px solid var(--rossa-hairline-soft);
  }
  #contenido_admin.rossa-ver-cliente-page #edit tr:not(.cab) td {
    display: block;
    width: 100% !important;
    padding: 4px 12px;
    box-sizing: border-box;
  }
  #contenido_admin.rossa-ver-cliente-page #edit tr:not(.cab) td:first-child {
    padding-bottom: 0;
    font-size: 12px;
  }
  #contenido_admin.rossa-ver-cliente-page #clientdata tr.cab td,
  #contenido_admin.rossa-ver-cliente-page #edit tr.cab td {
    text-align: left;
    padding: 12px 14px;
  }
  #contenido_admin.rossa-ver-cliente-page #clientdata {
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr);
    gap: 6px 12px;
  }
  #contenido_admin.rossa-ver-cliente-page #clientdata thead,
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody,
  #contenido_admin.rossa-ver-cliente-page #clientdata thead tr,
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:first-child,
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:last-child {
    display: contents;
  }
  #contenido_admin.rossa-ver-cliente-page #clientdata tr.cab td,
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:last-child td {
    grid-column: 1 / -1;
    min-width: 0;
  }
  #contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th {
    grid-column: 1;
    border-bottom: 0 !important;
    font-weight: 400;
    text-transform: none;
  }
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:first-child td {
    grid-column: 2;
    min-width: 0;
  }
  #contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th:nth-child(1),
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:first-child td:nth-child(1) { grid-row: 2; }
  #contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th:nth-child(2),
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:first-child td:nth-child(2) { grid-row: 3; }
  #contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th:nth-child(3),
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:first-child td:nth-child(3) { grid-row: 4; }
  #contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th:nth-child(4),
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:first-child td:nth-child(4) { grid-row: 5; }
  #contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th:nth-child(5),
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:first-child td:nth-child(5) { grid-row: 6; }
  #contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th:nth-child(6),
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:first-child td:nth-child(6) { grid-row: 7; }
  #contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th:nth-child(7),
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:first-child td:nth-child(7) { grid-row: 8; }
  #contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th:nth-child(8),
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:first-child td:nth-child(8) { grid-row: 9; }
  #contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th:nth-child(9),
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:first-child td:nth-child(9) { grid-row: 10; }
  #contenido_admin.rossa-ver-cliente-page #clientdata thead tr:not(.cab) th:nth-child(10),
  #contenido_admin.rossa-ver-cliente-page #clientdata tbody tr:first-child td:nth-child(10) { grid-row: 11; }
  #contenido_admin.rossa-ver-cliente-page #clientdata tr:last-child td,
  #contenido_admin.rossa-ver-cliente-page #edit tr:last-child td {
    text-align: center;
    padding: 14px 0 !important;
  }
  #contenido_admin.rossa-ver-cliente-page #clientdata tr:last-child span#editarcli {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin.rossa-ver-cliente-page #edit tr:last-child td {
    display: flex;
    gap: 8px;
  }
  #contenido_admin.rossa-ver-cliente-page #edit tr:last-child input#editarcli.admin_boton,
  #contenido_admin.rossa-ver-cliente-page #edit tr:last-child #candeledit {
    flex: 1 1 0;
    min-width: 0;
    margin: 0;
  }
  #contenido_admin.rossa-ver-cliente-page .rossa-ver-cliente-bookings .table-sortable {
    min-width: 760px;
  }
  #contenido_admin.rossa-ver-cliente-page .booking-actions-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin.rossa-ver-cliente-page .booking-actions-toolbar .toolbar-buttons {
    width: 100%;
  }
  #contenido_admin.rossa-ver-cliente-page .booking-actions-toolbar .admin_boton {
    flex: 1 1 auto;
    justify-content: center;
  }
}

@media (max-width: 520px) {
  #contenido_admin .rossa-page-toolbar .admin_boton,
  #contenido_admin .rossa-page-toolbar input.admin_boton,
  #contenido_admin .rossa-page-toolbar input[type="submit"].admin_boton {
    flex: 1 1 100%;
  }
}

/*=============================================================================
  BOOKING BILLING PANEL — fcts02 popup desde Ver reserva
=============================================================================*/
#contenido_admin .fact-booking-panel__quick-btns {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: stretch;
}
#contenido_admin .fact-booking-panel__quick-form {
  margin: 0;
  flex: 1 1 200px;
  min-width: 0;
}
#contenido_admin .fact-booking-panel__quick-form--primary {
  flex: 2 1 280px;
}
#contenido_admin .fact-booking-panel__quick-form--secondary {
  flex: 1 1 200px;
  max-width: 280px;
}
#contenido_admin .fact-booking-panel button.fact-booking-panel__gen-btn {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 4px;
  width: 100%;
  min-height: 76px;
  margin: 0;
  padding: 14px 18px;
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.3;
  text-align: left;
  box-sizing: border-box;
  cursor: pointer;
  box-shadow: none;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
#contenido_admin .fact-booking-panel__gen-btn-row {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 1rem;
}
#contenido_admin .fact-booking-panel__gen-btn-row strong {
  font-weight: 700;
}
#contenido_admin .fact-booking-panel__gen-btn-hint {
  display: block;
  font-size: 0.78rem;
  font-weight: 400;
  opacity: 0.88;
}
#contenido_admin .fact-booking-panel button.fact-booking-panel__gen-btn--final {
  background: var(--rossa-teal);
  border: 1px solid var(--rossa-teal);
  color: var(--rossa-white);
}
#contenido_admin .fact-booking-panel button.fact-booking-panel__gen-btn--final:hover {
  background: #00474d;
  border-color: #00474d;
  color: var(--rossa-white);
}
#contenido_admin .fact-booking-panel button.fact-booking-panel__gen-btn--draft {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
}
#contenido_admin .fact-booking-panel button.fact-booking-panel__gen-btn--draft:hover {
  background: var(--rossa-surface);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
}
#contenido_admin .fact-booking-panel button.fact-booking-panel__gen-btn--draft .fact-booking-panel__gen-btn-hint {
  color: var(--rossa-muted);
  opacity: 1;
}
@media (max-width: 640px) {
  #contenido_admin .fact-booking-panel__quick-form--primary,
  #contenido_admin .fact-booking-panel__quick-form--secondary {
    flex: 1 1 100%;
    max-width: none;
  }
}
body.rossa-tabs-on .vr-actions__spacer { margin-left: auto; }

/* Sección avanzada colapsable (chevron propio) */
body.rossa-tabs-on .vr-disclosure { width: 100%; margin: 18px 0 0; border-top: 1px solid var(--rossa-hairline-soft); }
body.rossa-tabs-on .vr-disclosure__head {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 14px 0 0;
  background: none;
  border: 0;
  cursor: pointer;
  font: 700 13px/1.2 var(--rossa-font);
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--rossa-teal);
  text-align: left;
}
body.rossa-tabs-on .vr-disclosure__head:hover { color: var(--rossa-ink); }
body.rossa-tabs-on .vr-disclosure__chev {
  margin-left: auto;
  color: var(--rossa-muted);
  transition: transform .18s ease;
  font-size: 13px;
}
body.rossa-tabs-on .vr-disclosure.is-open .vr-disclosure__chev { transform: rotate(180deg); }
body.rossa-tabs-on .vr-disclosure__body { padding-top: 14px; }
body.rossa-tabs-on .vr-disclosure:not(.is-open) .vr-disclosure__body { display: none; }

/* Pares label+control compactos (horas, nº huéspedes, IVA…) */
body.rossa-tabs-on .vr-field {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px 14px;
  margin: 0 0 12px;
}
body.rossa-tabs-on .vr-field__label {
  flex: 0 0 200px;
  font: 700 13px/1.3 var(--rossa-font);
  color: var(--rossa-ink);
}
@media (max-width: 640px){
  body.rossa-tabs-on .vr-field__label { flex-basis: 100%; }
  .vr-summary__badges { margin-left: 0; }
}

/* --- Huéspedes: tarjetas de conteo (.guest-breakdown, solo CSS) --- */
body.rossa-tabs-on .guest-breakdown {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 14px;
  width: 100%;
  margin: 0;
}
body.rossa-tabs-on .guest-breakdown .guest-section {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 12px;
  padding: 16px 18px;
}
body.rossa-tabs-on .guest-breakdown .guest-section h3 {
  margin: 0 0 12px;
  padding: 0 0 10px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  font: 700 12px/1 var(--rossa-font);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--rossa-teal);
  text-align: left;
}
body.rossa-tabs-on .guest-breakdown .guest-counts {
  display: flex;
  gap: 28px;
  align-items: center;
  justify-content: flex-start;
}
body.rossa-tabs-on .guest-breakdown .guest-type {
  display: flex;
  align-items: center;
  gap: 10px;
}
body.rossa-tabs-on .guest-breakdown .guest-type i {
  font-size: 18px;
  color: var(--rossa-muted);
  width: 22px;
  text-align: center;
}
body.rossa-tabs-on .guest-breakdown .guest-number {
  font: 700 26px/1 var(--rossa-font);
  color: var(--rossa-ink);
}
body.rossa-tabs-on .guest-breakdown .guest-number-lite {
  font-size: 15px;
  font-weight: 700;
  color: var(--rossa-muted);
}
/* el icono "sin datos" (parte de viajero) en muted, no negro */
body.rossa-tabs-on .guest-breakdown .guest-section.registered .guest-number-lite,
body.rossa-tabs-on .guest-breakdown .guest-section.expected .guest-number-lite { color: var(--rossa-ink); }
/* "Ver partes" pegado bajo las tarjetas de partes -> separar */
body.rossa-tabs-on .guest-breakdown + .rossa-ctr__btn-huespedes { margin-top: 16px; }

/* --- Cliente rework: ocultar legacy desnudo, normalizar separadores ------ */
body.rossa-tabs-on .vr-hide { display: none !important; }
body.rossa-tabs-on #bloque-cliente .rossa-box__dates,
body.rossa-tabs-on #bloque-cliente .rossa-ctr__data-client.vr-hide + .rossa-separator { display: none !important; }
/* separadores legacy a ancho completo (eliminan las líneas de tamaños dispares) */
body.rossa-tabs-on .rossa-ctr .rossa-separator { width: 100% !important; }
/* El título ya lleva border-bottom (§30); en pagos el h1 va en .rossa-ctr__main-content. */
body.rossa-tabs-on .rossa-ctr > h1 + .rossa-separator,
body.rossa-tabs-on .rossa-ctr__main-content > h1 + .rossa-separator { display: none !important; }

/* aside de sección como enlace */
body.rossa-tabs-on a.vr-section__aside { color: var(--rossa-cyan); text-decoration: none; }
body.rossa-tabs-on a.vr-section__aside:hover { text-decoration: underline; }
/* dash de valor vacío */
body.rossa-tabs-on .vr-kv__empty { color: var(--rossa-muted); }
/* logo de origen + nombre (inline-flex para que el gap separe icono y texto) */
body.rossa-tabs-on .vr-kv__value--origin { display: inline-flex; align-items: center; gap: 10px; }
body.rossa-tabs-on .vr-kv__value--origin img { height: 34px; width: auto; flex: 0 0 auto; }
body.rossa-tabs-on .vr-kv__value--origin .referral { color: var(--rossa-muted); font-size: 12px; }

/* Mismo badge .rossa-card-tag que Gestión de reservas (definido en pagina_inicio.css). */
body.rossa-tabs-on #bloque-resumen .vr-kv__value--pay { display: inline-flex; align-items: center; gap: 10px; }
body.rossa-tabs-on #bloque-resumen .vr-kv__value--pay .rossa-card-tag {
  flex: 0 0 auto; width: 32px; height: 32px; font-size: 13px;
}
body.rossa-tabs-on #bloque-resumen .vr-pay-text { font: 600 13.5px/1.3 var(--rossa-font); color: var(--rossa-ink); }

/* --- Comunicaciones: log de notificaciones; las metricas de celda van en §65/§65.4b --- */
/* chip de destinatario/estado: de cuadro grande de color a pastilla compacta */
body.rossa-tabs-on table.full_tabla .destinatarios_box {
  display: inline-block;
  width: auto !important;
  max-width: 240px;
  min-width: 0 !important;
  height: auto !important;
  margin: 0 !important;
  padding: 6px 11px !important;
  border-radius: var(--rossa-radius) !important;
  font-size: 12px !important;
  font-weight: 700;
  line-height: 1.35;
  white-space: normal;
  word-break: break-word;
}
/* celda de acciones: pastillas §65.4b en una linea, columna a ancho de contenido */
body.rossa-tabs-on table.full_tabla td:last-child { white-space: nowrap; width: 1%; }
body.rossa-tabs-on .rossa-vr-extra {
  max-width: none !important;
  width: 100%;
  margin: 0 !important;
  overflow-x: auto;
}
body.rossa-tabs-on .rossa-vr-extra table.full_tabla { width: 100% !important; max-width: 100%; }

/* Modal "Ver Contenido" del log */
#contenido_admin .contenido_popup {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 22px 24px;
  max-width: 460px;
  width: calc(100% - 40px);
  max-height: 80vh;
  overflow-y: auto;
  box-shadow: 0 16px 48px rgba(22, 41, 45, .18);
  text-align: left;
}
#contenido_admin .contenido_popup .titulo {
  background: none;
  color: var(--rossa-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  text-align: left;
  padding: 0 0 5px;
  margin: 18px 0 7px;
  border-bottom: 1px solid var(--rossa-border);
  border-radius: 0;
}
#contenido_admin .contenido_popup .titulo:first-child { margin-top: 0; }
#contenido_admin .contenido_popup .titulo + div {
  text-align: left;
  color: var(--rossa-ink);
  font-size: 14px;
  line-height: 1.55;
  word-break: break-word;
}
#contenido_admin .contenido_popup .close_content_button { margin-top: 18px; }

/* =============================================================================
   31b. REWORK — neutralización del cruft de las cards/boards viejas
   ========================================================================== */
/* wrappers legacy con fondo gris / doble caja -> plano transparente */
body.rossa-tabs-on .guest-breakdown,
body.rossa-tabs-on .rossa-ctr__huespedes,
body.rossa-tabs-on .rossa-ctr__main-content,
body.rossa-tabs-on .rossa-ctr__payment-try,
body.rossa-tabs-on .rossa-ctr__status-payment {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}
body.rossa-tabs-on .guest-breakdown { padding: 0 !important; }
/* separadores legacy (eran #B2B2B2 oscuros) -> hairline suave */
body.rossa-tabs-on .rossa-ctr .rossa-separator {
  background: var(--rossa-hairline-soft) !important;
  height: 1px !important;
  margin: 18px 0 !important;
}

/* Timeline: contener el scroll horizontal DENTRO del panel, no en la página */
body.rossa-tabs-on #bloque-timeline { overflow-x: auto; max-width: 100%; }
body.rossa-tabs-on .rossa-ctr-block--timeline { max-width: 100%; overflow: hidden; }

body.rossa-tabs-on .rossa-vr-extra .admin_boton {
  padding: 7px 13px;
  font-size: 13px;
}

/* --- Pagos: banner de saldo (sustituye la caja salmón "board") ----------- */
body.rossa-tabs-on .vr-balance {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  justify-content: space-between;
  gap: 16px 32px;
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 16px;
  padding: 18px 22px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 12px;
}
body.rossa-tabs-on .vr-balance__cell { display: flex; flex-direction: column; gap: 5px; }
body.rossa-tabs-on .vr-balance__cell--amount { text-align: right; margin-left: auto; }
body.rossa-tabs-on .vr-balance__label {
  font: 700 10.5px/1 var(--rossa-font);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
body.rossa-tabs-on .vr-balance__state { font: 700 22px/1.1 var(--rossa-font); color: var(--rossa-ink); }
body.rossa-tabs-on .vr-balance__state--green { color: var(--rossa-green); }
body.rossa-tabs-on .vr-balance__state--coral { color: var(--rossa-coral); }
body.rossa-tabs-on .vr-balance__state--red   { color: var(--rossa-red); }
body.rossa-tabs-on .vr-balance__state--teal  { color: var(--rossa-teal); }
body.rossa-tabs-on .vr-balance__state--soft  { color: var(--rossa-petrol); }
body.rossa-tabs-on .vr-balance__sub { font: 400 13px/1.2 var(--rossa-font); color: var(--rossa-muted); }
body.rossa-tabs-on .vr-balance__total { font: 700 24px/1.1 var(--rossa-font); color: var(--rossa-ink); }
body.rossa-tabs-on .vr-balance__due { font: 700 12px/1.2 var(--rossa-font); color: var(--rossa-coral); }

/* flex:0 0 auto anula el flex-basis 340px heredado de .rossa-ctr__btn-status. */
body.rossa-tabs-on .vr-marcar { margin: 0 0 8px; flex: 0 0 auto !important; height: auto !important; }
body.rossa-tabs-on .vr-marcar__label {
  flex: 0 0 100%;
  margin: 0 0 4px;
  font: 700 12px/1 var(--rossa-font);
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--rossa-teal);
}
body.rossa-tabs-on .vr-marcar__label i { color: var(--rossa-muted); margin-right: 4px; }

/* --- Pagos: Cargos + lista de Pagos a TODO el ancho (no apretado a la izq) --- */
body.rossa-tabs-on #bloque-pagos .rossa-ctr__payment-try,
body.rossa-tabs-on #bloque-pagos .rossa-payment-attempts,
body.rossa-tabs-on #bloque-pagos .rossa-payment-attempts__summary,
body.rossa-tabs-on #bloque-pagos .rossa-payment-attempts__body,
body.rossa-tabs-on #bloque-pagos .rossa-payment-attempts-item,
body.rossa-tabs-on #bloque-pagos .rossa-ctr__tipo-facturacion,
body.rossa-tabs-on #bloque-pagos .rossa-ctr__bill {
  width: 100% !important;
  max-width: none !important;
  box-sizing: border-box;
}
/* footer del componente: acciones a la izquierda, totales a la derecha */
body.rossa-tabs-on #bloque-pagos .rossa-payment-attempts__footer {
  grid-template-columns: 1fr minmax(280px, 360px);
  align-items: start;
  gap: 18px 24px;
  width: 100%;
}
body.rossa-tabs-on #bloque-pagos .rossa-payment-attempts__summary { width: 100%; }
/* Cargos: "Forma de pago preferida" como fila que respira y observaciones a ancho */
body.rossa-tabs-on #bloque-pagos .rossa-ctr__tipo-facturacion { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; }
@media (max-width: 760px){
  body.rossa-tabs-on #bloque-pagos .rossa-payment-attempts__footer { grid-template-columns: 1fr; }
}

/*=============================================================================
  41. SCREEN: Calendario de ocupación (admin/ocupacion.php)
=============================================================================*/
#contenido_admin.rossa-ocupacion-page,
.rossa-help-doc .rossa-ocu-leyenda {
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
  --ocu-libre: var(--rossa-strip);
  --ocu-ocupada: #9a0033;
  --ocu-pagado: var(--rossa-pag);
  --ocu-semipagado: #fab511;
  --ocu-pagorecep: #b8990b;
  --ocu-cerrada: var(--rossa-stroke);
}

/* --- Filtro establecimiento ------------------------------------------------ */
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters.rossa-establecimiento-filter-bar {
  margin: 0 0 16px;
  padding: 0;
  background: transparent;
  border: 0;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-reset-actions {
  margin: 0 0 16px;
}

#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filter-form:not(:has(select)) {
  display: none;
}

#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filter-form.rossa-establecimiento-filter-form {
  gap: 12px 14px;
  align-items: flex-end;
}

#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filter-form .rossa-establecimiento-filter-field {
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filter-form .rossa-establecimiento-filter-field > label {
  min-height: 0;
  color: var(--rossa-teal);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: capitalize;
}
/* El borde ya lo ponen las reglas genéricas (§12 y §30): no hace falta repetirlo. */

#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filter-submit {
  margin: 0 !important;
  align-self: flex-end;
  display: none;
}

/* --- Toolbar + leyenda ----------------------------------------------------- */
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-actions {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0 0 16px;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-actions--legend-only {
  gap: 0;
}
/* Aplanamos toolbar + calendar-tools para que los 4 botones queden en una fila */
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-actions .rossa-ocupacion-toolbar,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-actions .rossa-ocupacion-calendar-tools {
  display: contents;
}
/* Los 4 botones uniformes: misma altura, texto en una línea, uno tras otro */
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-actions .admin_boton,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-actions .rossa-btn {
  flex: 0 0 auto;
  height: 36px;
  min-height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  padding: 0 16px;
  box-sizing: border-box;
  font-size: 12px;
  margin: 0;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-toolbar,
#contenido_admin.rossa-ocupacion-page .add_booking.rossa-ocupacion-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  float: none;
  margin: 0;
  width: 100%;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-toolbar .admin_boton {
  flex: 0 0 auto;
  min-width: 0;
  margin: 0;
  text-align: center;
  box-sizing: border-box;
}
#contenido_admin.rossa-ocupacion-page #legend.rossa-ocupacion-legend {
  float: none !important;
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  max-width: none;
  margin: 0 !important;
  margin-top: 0 !important;
  padding: 0;
  background: var(--rossa-white);
  border: 0;
  border-radius: var(--rossa-radius);
  box-shadow: none;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend__toggle {
  display: none;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend__body {
  display: block;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend__title {
  margin: 0 0 8px;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: none;
  color: var(--rossa-petrol);
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 14px;
  margin: 0;
  padding: 0;
  list-style: none;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend__item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  line-height: 1.3;
  color: var(--rossa-stroke);
}
#contenido_admin.rossa-ocupacion-page #legend .leyenda {
  display: inline-block;
  flex-shrink: 0;
  width: 30px;
  min-width: 30px;
  height: 30px;
  border-radius: 6px;
  padding: 0;
  box-sizing: border-box;
}
/* Leyenda y celdas leen las mismas --ocu-*: un color de estado se cambia solo en la raíz de §41. */
#contenido_admin.rossa-ocupacion-page #legend .nlibre {
  background: var(--ocu-libre);
  border: 1px solid var(--rossa-stroke);
}
#contenido_admin.rossa-ocupacion-page #legend .nocupada {
  background: var(--ocu-ocupada);
}
#contenido_admin.rossa-ocupacion-page #legend .npagado {
  background: var(--ocu-pagado);
}
#contenido_admin.rossa-ocupacion-page #legend .pagorecep {
  background: var(--ocu-pagorecep);
}
#contenido_admin.rossa-ocupacion-page #legend .ncerrada {
  background: var(--ocu-cerrada);
}
#contenido_admin.rossa-ocupacion-page #legend .nsemipagado {
  background: var(--ocu-semipagado);
}

/* Mensajes AJAX + barra de herramientas del calendario */
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-response[hidden] {
  display: none !important;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-response:not([hidden]) {
  display: block;
  margin: 0 0 12px;
  padding: 10px 12px;
  max-width: 100%;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-calendar-tools {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  margin: 0 0 12px;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-linear-calendar {
  font-size: 12px;
  padding: 6px 12px;
  white-space: nowrap;
  text-decoration: none;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-toggle-past {
  font-size: 12px;
  padding: 6px 12px;
  white-space: nowrap;
}
/* !important para vencer al relleno teal de .rossa-btn. */
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-linear-calendar,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-toggle-past {
  background: var(--rossa-green) !important;
  border: 1px solid var(--rossa-green) !important;
  color: var(--rossa-white) !important;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-linear-calendar:hover,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-toggle-past:hover {
  background: #13876c !important;
  border-color: #13876c !important;
  color: var(--rossa-white) !important;
}
/* Reservar / Cerrar seleccionadas deshabilitados = gris claro (Figma) */
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-toolbar .admin_boton[disabled],
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-toolbar .admin_boton:disabled {
  background: var(--rossa-surface);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-muted);
  cursor: not-allowed;
  opacity: 1;
}

#rossa-actionbar .rossa-ocupacion-actions {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  margin: 0;
}
#rossa-actionbar .rossa-ocupacion-actions .rossa-ocupacion-toolbar,
#rossa-actionbar .rossa-ocupacion-actions .rossa-ocupacion-calendar-tools {
  display: contents;
}

#rossa-actionbar .rossa-ocupacion-actions .admin_boton:disabled,
#rossa-actionbar .rossa-ocupacion-actions .admin_boton[disabled] {
  background: var(--rossa-surface) !important;
  border: none !important;
  color: var(--rossa-muted) !important;
  box-shadow: none;
  cursor: not-allowed;
}

/* Icon-only en móvil: ::before propio (no <i> hijo) para que $btn.text() no se lo lleve. */
@media (max-width: 900px) {
  #rossa-actionbar #add_booking_ocupacion,
  #rossa-actionbar #close_stay_ocupacion,
  #rossa-actionbar #rossa_ocupacion_toggle_past {
    position: relative;
    flex: 1 1 0;
    width: auto;
    min-width: 0;
    height: 40px;
    padding: 0;
    font-size: 0;
  }
  #rossa-actionbar #add_booking_ocupacion::before,
  #rossa-actionbar #close_stay_ocupacion::before,
  #rossa-actionbar #rossa_ocupacion_toggle_past::before {
    content: '';
    display: block;
    position: absolute;
    top: 50%;
    left: 50%;
    width: 20px;
    height: 20px;
    background-color: currentColor;
    transform: translate(-50%, -50%);
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
  }
  #rossa-actionbar #add_booking_ocupacion::before {
    -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-check-2.svg");
    mask-image: url("https://cdn.rossa.app/icons/calendar-check-2.svg");
  }
  #rossa-actionbar #close_stay_ocupacion::before {
    -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-x-2.svg");
    mask-image: url("https://cdn.rossa.app/icons/calendar-x-2.svg");
  }
  #rossa-actionbar #rossa_ocupacion_toggle_past::before {
    -webkit-mask-image: url("https://cdn.rossa.app/icons/history.svg");
    mask-image: url("https://cdn.rossa.app/icons/history.svg");
  }
  /* Solo cuando NO están disabled; deshabilitados siguen con la regla gris de arriba. */
  #rossa-actionbar #rossa_ocupacion_toggle_past,
  #rossa-actionbar #add_booking_ocupacion:not(:disabled),
  #rossa-actionbar #close_stay_ocupacion:not(:disabled) {
    border-color: var(--rossa-db-400) !important;
    color: var(--rossa-db-400) !important;
    background: var(--rossa-white) !important;
  }
}

@media (min-width: 901px) {
  #contenido_admin.rossa-ocupacion-page #legend.rossa-ocupacion-legend.is-collapsed .rossa-ocupacion-legend__body {
    display: block;
  }
}

@media (min-width: 1024px) {
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-actions {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 12px 20px;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-toolbar,
  #contenido_admin.rossa-ocupacion-page .add_booking.rossa-ocupacion-toolbar {
    flex: 0 1 auto;
    width: auto;
    max-width: 420px;
  }
  #contenido_admin.rossa-ocupacion-page #legend.rossa-ocupacion-legend {
    flex: 1 1 280px;
  }
}

/* --- Calendario grid ------------------------------------------------------- */
#contenido_admin.rossa-ocupacion-page #calendario_ocupacion.rossa-ocupacion-calendar {
  margin-top: 32px;
  overflow-x: visible;
  max-width: 100%;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario {
  width: 100%;
  max-width: 100%;
  table-layout: fixed;
  border-collapse: separate;
  border-spacing: 0 10px;
  margin-bottom: 8px;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario td {
  box-sizing: border-box;
  vertical-align: top;
  overflow: hidden;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .nocupacion {
  width: 100% !important;
  max-width: 100%;
  margin: 4px 0 0;
  box-sizing: border-box;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .nocupacion td {
  box-sizing: border-box;
  word-break: break-word;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .contdiaocu--empty,
#contenido_admin.rossa-ocupacion-page .tablacalendario .rossa-ocupacion-contdiaocu--empty {
  display: none !important;
  border: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  min-height: 0 !important;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .contdiaocu--filled,
#contenido_admin.rossa-ocupacion-page .tablacalendario .rossa-ocupacion-contdiaocu--filled {
  min-height: 2.5rem;
}
#contenido_admin.rossa-ocupacion-page #calendario_ocupacion.rossa-ocupacion-past-collapsed .tablacalendario td.diavalido.pasado:not(.rossa-ocupacion-day-expanded) .rossa-ocupacion-contdiaocu--filled {
  min-height: 0;
  padding: 0;
}
/* Días pasados: lydia.css los oculta siempre — aquí los gobierna el toggle */
#contenido_admin.rossa-ocupacion-page #calendario_ocupacion:not(.rossa-ocupacion-past-collapsed) .tablacalendario td.diavalido.pasado .contdiaocu:not(.rossa-ocupacion-contdiaocu--empty) {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto;
}
#contenido_admin.rossa-ocupacion-page #calendario_ocupacion.rossa-ocupacion-past-collapsed .tablacalendario td.diavalido.pasado .contdiaocu {
  display: none !important;
  min-height: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
}
#contenido_admin.rossa-ocupacion-page #calendario_ocupacion.rossa-ocupacion-past-collapsed .tablacalendario td.diavalido.pasado.rossa-ocupacion-day-expanded .contdiaocu:not(.rossa-ocupacion-contdiaocu--empty) {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto;
  min-height: 0;
  padding: 6px !important;
  margin: 0;
  border: 0;
  border-radius: 0 0 var(--rossa-radius) var(--rossa-radius);
  background: var(--rossa-surface);
}
#contenido_admin.rossa-ocupacion-page #calendario_ocupacion.rossa-ocupacion-past-collapsed .tablacalendario td.diavalido.pasado.rossa-ocupacion-day-expanded .rossa-ocupacion-contdiaocu--filled {
  min-height: 2.5rem;
  padding: 6px;
}
#contenido_admin.rossa-ocupacion-page #calendario_ocupacion.rossa-ocupacion-past-collapsed .tablacalendario td.diavalido.pasado:has(.rossa-ocupacion-contdiaocu--filled) .numerodia {
  cursor: pointer;
}
#contenido_admin.rossa-ocupacion-page #calendario_ocupacion.rossa-ocupacion-past-collapsed .tablacalendario td.diavalido.pasado.rossa-ocupacion-day-expanded .numerodia,
#contenido_admin.rossa-ocupacion-page #calendario_ocupacion:not(.rossa-ocupacion-past-collapsed) .tablacalendario td.diavalido.pasado:has(.nocupacion) .numerodia {
  border-radius: var(--rossa-radius) var(--rossa-radius) 0 0;
  margin-bottom: 0;
  box-shadow: none;
}
#contenido_admin.rossa-ocupacion-page #calendario_ocupacion.rossa-ocupacion-past-collapsed .tablacalendario td.diavalido.pasado {
  padding: 2px;
  vertical-align: top;
}
#contenido_admin.rossa-ocupacion-page #calendario_ocupacion.rossa-ocupacion-past-collapsed .tablacalendario td.diavalido.pasado:not(.rossa-ocupacion-day-expanded) .numerodia {
  border-radius: var(--rossa-radius);
  margin-bottom: 0;
}
/* Cabecera mes/año — barra de navegación */
#contenido_admin.rossa-ocupacion-page .tablacalendario > tbody > tr:first-child > td.tit {
  background: transparent !important;
  color: var(--rossa-ink);
  border: 0;
  border-radius: 0;
  padding: 0 0 14px;
  text-transform: none;
  overflow: visible;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario > tbody > tr:first-child > td.tit > table {
  width: auto;
  margin: 0;
  border-collapse: collapse;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .titmesano {
  background: transparent !important;
  color: var(--rossa-navy);
  font-size: 1.15rem;
  font-weight: 700;
  text-transform: none;
  letter-spacing: 0;
  padding: 4px 8px;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .messiguiente,
#contenido_admin.rossa-ocupacion-page .tablacalendario .mesanterior {
  width: auto;
  white-space: nowrap;
  vertical-align: middle;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .titmesano {
  vertical-align: middle;
}
/* Flechas pegadas al mes, sin recuadro */
#contenido_admin.rossa-ocupacion-page .tablacalendario .messiguiente a,
#contenido_admin.rossa-ocupacion-page .tablacalendario .mesanterior a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  height: auto;
  padding: 0 4px;
  font-size: 18px;
  color: var(--rossa-navy);
  background: transparent;
  border: 0;
  border-radius: 0;
  text-decoration: none;
  transition: color .15s ease;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .messiguiente a:hover,
#contenido_admin.rossa-ocupacion-page .tablacalendario .mesanterior a:hover {
  background: transparent;
  color: var(--rossa-petrol-dark);
}
/* Fila días de la semana */
#contenido_admin.rossa-ocupacion-page .tablacalendario > tbody > tr:nth-child(2) > td.diasemana {
  background: var(--rossa-surface) !important;
  color: var(--rossa-muted) !important;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  border: 0;
  border-top: 1px solid var(--rossa-border);
  border-bottom: 1px solid var(--rossa-border);
  border-radius: 0;
  padding: 10px 4px;
  height: auto;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario > tbody > tr:nth-child(2) > td.diasemana:first-child {
  border-left: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius) 0 0 var(--rossa-radius);
}
#contenido_admin.rossa-ocupacion-page .tablacalendario > tbody > tr:nth-child(2) > td.diasemana:last-child {
  border-right: 1px solid var(--rossa-border);
  border-radius: 0 var(--rossa-radius) var(--rossa-radius) 0;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .diasemana span {
  color: inherit;
  font-size: inherit;
  font-weight: inherit;
  text-transform: inherit;
  letter-spacing: inherit;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .tit {
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .diainvalido {
  background: var(--rossa-surface);
  border-radius: var(--rossa-radius);
  opacity: .55;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido {
  padding: 4px;
  vertical-align: top;
  text-transform: none;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido:not(.pasado) .contdiaocu {
  border: 1px solid var(--rossa-border);
  border-top: 0;
  border-radius: 0 0 var(--rossa-radius) var(--rossa-radius);
  background: var(--rossa-white);
  padding: 6px;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .pasado .contdiaocu {
  background: var(--rossa-surface);
  border: 0;
  border-radius: 0 0 var(--rossa-radius) var(--rossa-radius);
  padding: 6px;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .numerodia {
  display: block;
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  margin: 0;
  padding: 4px 3px;
  background: var(--rossa-teal);
  color: var(--rossa-white);
  border-radius: var(--rossa-radius);
  font-size: 11px;
  font-weight: 600;
  line-height: 1.2;
  text-align: center;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  position: relative;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .numerodia .rossa-ocupacion-day__num {
  display: inline;
  font-size: 12px;
  font-weight: 700;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .numerodia .rossa-ocupacion-day__month {
  display: inline;
  font-size: 11px;
  font-weight: 700;
  opacity: 1;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido.pasado .numerodia {
  background: var(--rossa-surface);
  color: #4a555b;
}
/* HOY: pastilla verde fuerte */
#contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido.hoy .numerodia {
  background: var(--rossa-green);
  color: var(--rossa-white);
}
/* Días futuros: pastilla verde claro */
#contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido:not(.pasado):not(.hoy) .numerodia {
  background: rgba(25, 172, 138, .16);
  color: #0f7d63;
}
/* La card de habitaciones toma el tono de su fecha */
#contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido.hoy .contdiaocu {
  background: rgba(25, 172, 138, .09);
  border-color: rgba(25, 172, 138, .38);
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido:not(.pasado):not(.hoy) .contdiaocu {
  background: rgba(25, 172, 138, .045);
  border-color: rgba(25, 172, 138, .22);
}
/* Día plegado (hoy/futuro): se oculta la card y queda solo la pastilla */
#contenido_admin.rossa-ocupacion-page .tablacalendario td.diavalido.rossa-ocupacion-day-collapsed .contdiaocu {
  display: none;
}
/* ▾ = plegado (por defecto) ; ▴ = desplegado. */
#contenido_admin.rossa-ocupacion-page .tablacalendario .numerodia::after { content: none; }
/* Chevron de plegado SOLO en días pasados (hoy y futuros no se pliegan) */
#contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido.pasado:has(.nocupacion) .numerodia {
  padding-left: 18px;
  padding-right: 18px;
  cursor: pointer;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido.pasado:has(.nocupacion) .numerodia::after {
  content: "\25BE";
  width: auto;
  height: auto;
  border: 0;
  position: absolute;
  right: 7px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 8px;
  line-height: 1;
  color: currentColor;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido.pasado.rossa-ocupacion-day-expanded:has(.nocupacion) .numerodia::after,
#contenido_admin.rossa-ocupacion-page #calendario_ocupacion:not(.rossa-ocupacion-past-collapsed) .tablacalendario .diavalido.pasado:has(.nocupacion) .numerodia::after {
  content: "\25B4";
}
/* Pastilla desplegada: solo esquinas superiores redondeadas (se pega a la card) */
#contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido.pasado.rossa-ocupacion-day-expanded:has(.nocupacion) .numerodia,
#contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido:not(.pasado):not(.rossa-ocupacion-day-collapsed):has(.nocupacion) .numerodia {
  border-radius: var(--rossa-radius) var(--rossa-radius) 0 0;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .findes {
  outline: 2px solid rgba(23, 121, 155, .35);
  outline-offset: -2px;
  border-radius: var(--rossa-radius);
}
#contenido_admin.rossa-ocupacion-page .nocupacion {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  margin: 4px auto;
}
#contenido_admin.rossa-ocupacion-page .tablacalendario .nocupacion td {
  padding: 1px 0;
  box-sizing: border-box;
  word-break: break-word;
}
#contenido_admin.rossa-ocupacion-page .cabocu {
  background: transparent;
  color: var(--rossa-ink);
  border-radius: 0;
  border-bottom: 1px solid var(--rossa-border);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .02em;
  text-transform: uppercase;
  text-align: center;
  padding: 7px 6px 8px;
  height: auto;
}
#contenido_admin.rossa-ocupacion-page .pasado .cabocu {
  background: transparent;
  color: var(--rossa-ink);
}
/* Precio del día = badge naranja centrado bajo el título */
#contenido_admin.rossa-ocupacion-page .cont_precios_ocupacion {
  display: block;
  text-align: center;
  margin-top: 5px;
}
#contenido_admin.rossa-ocupacion-page .nomhab {
  border: 0 !important;
  border-radius: 0 !important;
  font-size: 12.5px !important;
  font-weight: 600;
  color: #000000;
  min-height: 0;
  height: 38px;
  padding: 6px;
  box-sizing: border-box;
  vertical-align: middle !important;
  text-align: center;
}
#contenido_admin.rossa-ocupacion-page .nomhab a {
  color: #000000;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab a,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab.nocupada,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab.npagado,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab.nsemipagado,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab.pagorecep,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab.ncerrada,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab.nlibre,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab.nseleccionada {
  color: #000000 !important;
}

/* Estados de celda — semántica conservada, tokens Rossa */
#contenido_admin.rossa-ocupacion-page .nlibre {
  background: var(--ocu-libre);
  color: var(--rossa-ink);
  border-color: var(--ocu-libre);
}
#contenido_admin.rossa-ocupacion-page .nocupada {
  background: var(--ocu-ocupada);
  border-color: var(--ocu-ocupada);
  color: var(--rossa-white);
}
#contenido_admin.rossa-ocupacion-page .npagado {
  background: var(--ocu-pagado);
  border-color: var(--ocu-pagado);
  color: var(--rossa-white);
}
#contenido_admin.rossa-ocupacion-page .nsemipagado {
  background: var(--ocu-semipagado);
  border-color: var(--ocu-semipagado);
  color: var(--rossa-ink);
}
#contenido_admin.rossa-ocupacion-page .pagorecep {
  background: var(--ocu-pagorecep);
  border-color: var(--ocu-pagorecep);
  color: var(--rossa-white);
}
#contenido_admin.rossa-ocupacion-page .ncerrada {
  background: var(--ocu-cerrada);
  border-color: var(--ocu-cerrada);
  color: var(--rossa-white);
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab.nocupada:not(.npagado):not(.nsemipagado):not(.pagorecep),
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab.nocupada:not(.npagado):not(.nsemipagado):not(.pagorecep) a,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab.ncerrada,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-contdiaocu--filled .nomhab.ncerrada a {
  color: var(--rossa-white) !important;
}
#contenido_admin.rossa-ocupacion-page .nseleccionada {
  background: #bbe1f2 !important;   /* seleccionada; !important vence al azul fuerte de lydia.css */
  border-color: #bbe1f2 !important;
  color: var(--rossa-ink);
}
#contenido_admin.rossa-ocupacion-page .preocu {
  display: inline-block;
  background: #f5a623;
  color: var(--rossa-white);
  border-radius: var(--rossa-radius-pill);
  font-weight: 700;
  font-size: 12px;
  padding: 2px 12px;
}
#contenido_admin.rossa-ocupacion-page .parkocu {
  background: var(--rossa-cyan);
  color: var(--rossa-white);
  border-radius: 4px;
}
#contenido_admin.rossa-ocupacion-page .precioresocu {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
  border-radius: 4px;
}

/* Formulario ir a mes/año */
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-month-form {
  margin: 24px auto 8px;
  max-width: 420px;
  padding: 16px 18px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-month-form__table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0 12px;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-month-form__field {
  width: 50%;
  padding: 0 8px;
  vertical-align: top;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-month-form__label {
  display: block;
  margin: 0 0 6px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-month-form__select {
  display: block;
  width: 100%;
  box-sizing: border-box;
  min-height: 36px;
  padding: 6px 30px 6px 10px;
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-stroke);
  border-radius: var(--rossa-radius);
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
     -moz-appearance: none;
  background-image: url("https://cdn.rossa.app/icons/chevron-down.svg?bg");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 14px 14px;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-month-form__select:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 2px rgba(0, 94, 102, .15);
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-month-form__actions {
  padding-top: 4px;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-month-form__submit {
  margin: 0;
  min-width: 160px;
}

#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 24px;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form {
  margin: 0;
  padding: 0;
  max-width: none;
  background: none;
  border: 0;
}

#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__table,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__table tbody {
  display: flex;
  align-items: flex-end;
  gap: 12px 14px;
  flex-wrap: wrap;
  width: auto;
  border-spacing: 0;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__table tr {
  display: flex;
  align-items: center;
  gap: 12px 14px;
  flex-wrap: wrap;
  width: auto;
}

#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__field {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  width: auto;
  padding: 0;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__label {
  margin: 0;
  white-space: nowrap;
  color: var(--rossa-teal);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: capitalize;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__select {
  width: auto;
  min-width: 140px;
  /* border-color ya es var(--rossa-border) por la regla base de arriba. */
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__actions {
  padding: 0;
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__submit {
  min-width: 0;
}

/* Falta arriba-izquierda = día de llegada; abajo-derecha = día de salida. */
#contenido_admin.rossa-ocupacion-page .nomhab.inicio,
#contenido_admin.rossa-ocupacion-page .nomhab.final {
  position: relative;
  overflow: hidden;
  filter: none;
  padding-left: 2px;
  padding-right: 2px;
}
/* el número nunca envuelve (en celdas estrechas de portátil quedaba en 2 líneas) */
#contenido_admin.rossa-ocupacion-page .nomhab a {
  white-space: nowrap;
}
/* Pseudo del color del fondo, no clip-path en el <td>: así el número de habitación no se corta. */
#contenido_admin.rossa-ocupacion-page .nomhab.inicio > *,
#contenido_admin.rossa-ocupacion-page .nomhab.final > * {
  position: relative;
  z-index: 2;
}
#contenido_admin.rossa-ocupacion-page .nomhab.inicio::before,
#contenido_admin.rossa-ocupacion-page .nomhab.final::after {
  content: "";
  position: absolute;
  inset: -2px;            /* sobresale 2px para cubrir el píxel del borde; overflow:hidden lo recorta */
  background: #fff;
  z-index: 1;
  pointer-events: none;
  font-family: inherit;
}
/* llegada: recorte (triángulo blanco) en la esquina inferior-izquierda */
#contenido_admin.rossa-ocupacion-page .nomhab.inicio::before {
  clip-path: polygon(0 0, 0 100%, 24px 100%);
}
/* salida: recorte en la esquina superior-derecha */
#contenido_admin.rossa-ocupacion-page .nomhab.final::after {
  clip-path: polygon(calc(100% - 24px) 0, 100% 0, 100% 100%);
}

/* Leyenda: swatches de ejemplo con el mismo corte real (llegada der / salida izq) */
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend .leyenda.rossa-leg-llegada,
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend .leyenda.rossa-leg-salida {
  background: var(--rossa-navy) !important;
}

#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend .leyenda.rossa-leg-llegada {
  clip-path: polygon(0% 0, 100% 0%, 100% 100%);
}
#contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend .leyenda.rossa-leg-salida {
  clip-path: polygon(0% 0, 100% 100%, 0 100%);
}
/* Leyenda en el modal de ayuda: el modal cuelga del body, por eso la lista repite las --ocu-* de la raíz de §41. */
/* Mismo formato que la leyenda de control de accesos (§81): una fila por color con su explicación. */
.rossa-help-doc .rossa-ocu-leyenda {
  margin: 0 0 10px;
  padding: 0;
  list-style: none;
}
.rossa-help-doc .rossa-ocu-leyenda li {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 6px 0;
  color: var(--rossa-muted);
}
.rossa-help-doc .rossa-ocu-leyenda__sw {
  flex: 0 0 auto;
  box-sizing: border-box;
  width: 24px;
  height: 24px;
  border-radius: 6px;
}
.rossa-help-doc .rossa-ocu-leyenda__sw--libre        { background: var(--ocu-libre); border: 1px solid var(--rossa-stroke); }
.rossa-help-doc .rossa-ocu-leyenda__sw--ocupada      { background: var(--ocu-ocupada); }
.rossa-help-doc .rossa-ocu-leyenda__sw--pagado       { background: var(--ocu-pagado); }
.rossa-help-doc .rossa-ocu-leyenda__sw--seleccionada { background: #bbe1f2; }
.rossa-help-doc .rossa-ocu-leyenda__sw--pagorecep    { background: var(--ocu-pagorecep); }
.rossa-help-doc .rossa-ocu-leyenda__sw--cerrada      { background: var(--ocu-cerrada); }
.rossa-help-doc .rossa-ocu-leyenda__sw--semipagado   { background: var(--ocu-semipagado); }
.rossa-help-doc .rossa-ocu-leyenda__sw--llegada,
.rossa-help-doc .rossa-ocu-leyenda__sw--salida       { background: var(--rossa-navy); }
.rossa-help-doc .rossa-ocu-leyenda__sw--llegada      { clip-path: polygon(0% 0, 100% 0%, 100% 100%); }
.rossa-help-doc .rossa-ocu-leyenda__sw--salida       { clip-path: polygon(0% 0, 100% 100%, 0 100%); }
#contenido_admin.rossa-ocupacion-page .nomhab.nocupada.inicio,
#contenido_admin.rossa-ocupacion-page .nomhab.nocupada.final,
#contenido_admin.rossa-ocupacion-page .nomhab.nocupada.inicio.final {
  background: var(--ocu-ocupada);
  border-color: var(--ocu-ocupada);
}
#contenido_admin.rossa-ocupacion-page .nomhab.npagado.inicio,
#contenido_admin.rossa-ocupacion-page .nomhab.npagado.final,
#contenido_admin.rossa-ocupacion-page .nomhab.npagado.inicio.final {
  background: var(--ocu-pagado);
  border-color: var(--ocu-pagado);
}
#contenido_admin.rossa-ocupacion-page .nomhab.nsemipagado.inicio,
#contenido_admin.rossa-ocupacion-page .nomhab.nsemipagado.final,
#contenido_admin.rossa-ocupacion-page .nomhab.nsemipagado.inicio.final {
  background: var(--ocu-semipagado);
  border-color: var(--ocu-semipagado);
}
#contenido_admin.rossa-ocupacion-page .nomhab.pagorecep.inicio,
#contenido_admin.rossa-ocupacion-page .nomhab.pagorecep.final,
#contenido_admin.rossa-ocupacion-page .nomhab.pagorecep.inicio.final {
  background: var(--ocu-pagorecep);
  border-color: var(--ocu-pagorecep);
}
#contenido_admin.rossa-ocupacion-page .nomhab.ncerrada.inicio,
#contenido_admin.rossa-ocupacion-page .nomhab.ncerrada.final,
#contenido_admin.rossa-ocupacion-page .nomhab.ncerrada.inicio.final {
  background: var(--ocu-cerrada);
  border-color: var(--ocu-cerrada);
}
/* Día llegada / salida en la leyenda = solo el icono (sin caja) + el texto */
#contenido_admin.rossa-ocupacion-page #legend .degra.leyenda,
#contenido_admin.rossa-ocupacion-page #legend .degra_inverso.leyenda {
  position: static;
  overflow: visible;
  background: none;
  border: 0;
  border-radius: 0;
  width: auto;
  min-width: 0;
  height: auto;
  filter: none;
}
#contenido_admin.rossa-ocupacion-page #legend .degra.leyenda::before,
#contenido_admin.rossa-ocupacion-page #legend .degra_inverso.leyenda::after {
  font-family: "Font Awesome 6 Free", "Font Awesome 5 Free", "FontAwesome";
  font-weight: 900;
  position: static;
  width: auto;
  height: auto;
  line-height: 1;
  font-size: 13px;
  color: var(--rossa-ink);
  background: none;
}
#contenido_admin.rossa-ocupacion-page #legend .degra.leyenda::before {
  content: "\f2f6";   /* entrada */
}
#contenido_admin.rossa-ocupacion-page #legend .degra_inverso.leyenda::after {
  content: "\f2f5";   /* salida */
}

@media (max-width: 900px) {
  #contenido_admin.rossa-ocupacion-page {
    overflow-x: hidden;
  }
  #contenido_admin.rossa-ocupacion-page #calendario_ocupacion.rossa-ocupacion-calendar {
    overflow-x: visible;
    margin-left: 0;
    margin-right: 0;
    margin-bottom: 5em;
    padding-left: 0;
    padding-right: 0;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-toolbar .admin_boton {
    width: 100%;
    flex: 1 1 auto;
    box-sizing: border-box;
    text-align: center;
  }
  #contenido_admin.rossa-ocupacion-page #legend.rossa-ocupacion-legend {
    float: none !important;
    width: 100% !important;
    max-width: 100%;
    margin: 0 auto !important;
    margin-top: 0 !important;
    padding: 0;
    box-sizing: border-box;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend__body {
    text-align: left;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend__toggle {
    display: block;
    width: 100%;
    box-sizing: border-box;
    text-align: center;
    font-size: 12px;
    padding: 6px 12px;
    margin: 0;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend.is-collapsed .rossa-ocupacion-legend__body {
    display: none;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend.is-collapsed {
    padding-bottom: 0;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend:not(.is-collapsed) .rossa-ocupacion-legend__title {
    display: none;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend__list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 8px 14px;
    margin-top: 10px;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend__item {
    justify-content: center;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-calendar-tools {
    justify-content: stretch;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-linear-calendar,
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-toggle-past {
    width: 100%;
    box-sizing: border-box;
    text-align: center;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form {
    flex: 1 1 100%;
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__table,
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__table tbody {
    width: 100%;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__table tr {
    width: 100%;
    flex-basis: 100%;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__field {
    flex: 1 1 0;
    align-items: stretch;
    text-align: left;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-filters .rossa-ocupacion-month-form__select {
    width: 100%;
    min-width: 0;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-month-form__actions {
    width: 100%;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-month-form__submit {
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-reset-actions .rossa-filter-reset-btn {
    width: 100%;
    box-sizing: border-box;
    text-align: center;
  }
  /* Rejilla del mes -> lista vertical de días (una tarjeta por día) */
  #contenido_admin.rossa-ocupacion-page .tablacalendario {
    display: block;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    border-spacing: 0;
    font-size: 13px;
  }
  #contenido_admin.rossa-ocupacion-page .tablacalendario > tbody,
  #contenido_admin.rossa-ocupacion-page .tablacalendario > tbody > tr {
    display: block;
    width: 100%;
  }
  #contenido_admin.rossa-ocupacion-page .tablacalendario td {
    height: auto;
  }
  /* cabecera de días de la semana y días de relleno: fuera en móvil */
  #contenido_admin.rossa-ocupacion-page .tablacalendario .diasemana,
  #contenido_admin.rossa-ocupacion-page .tablacalendario .diainvalido {
    display: none !important;
  }
  /* título del mes a ancho completo */
  #contenido_admin.rossa-ocupacion-page .tablacalendario .tit {
    display: block;
    width: 100%;
  }
  /* cada día válido = tarjeta a ancho completo, apilada verticalmente */
  #contenido_admin.rossa-ocupacion-page .tablacalendario td.diavalido {
    display: block;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box;
    padding: 4px;
    margin: 0 0 12px;
    vertical-align: top;
  }
  /* las habitaciones conservan su rejilla compacta dentro de la tarjeta */
  #contenido_admin.rossa-ocupacion-page .tablacalendario .nocupacion {
    width: 100%;
  }
  #contenido_admin.rossa-ocupacion-page .tablacalendario .numerodia {
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .03em;
    padding: 6px 3px;
    text-align: center;
    white-space: nowrap;
  }
  #contenido_admin.rossa-ocupacion-page .tablacalendario .numerodia .rossa-ocupacion-day__num {
    display: inline;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
  }
  /* móvil: mostrar el mes también -> fecha completa "1 DE JULIO" (mayús + negrita) */
  #contenido_admin.rossa-ocupacion-page .tablacalendario .numerodia .rossa-ocupacion-day__month {
    display: inline;
  }
  #contenido_admin.rossa-ocupacion-page .tablacalendario .diavalido:not(.pasado) .contdiaocu,
  #contenido_admin.rossa-ocupacion-page .tablacalendario .pasado .rossa-ocupacion-contdiaocu--filled {
    padding: 3px;
  }
  #contenido_admin.rossa-ocupacion-page .tablacalendario > tbody > tr:nth-child(2) > td.diasemana {
    font-size: 10px;
    font-weight: 700;
    padding: 6px 0;
  }
  #contenido_admin.rossa-ocupacion-page .tablacalendario > tbody > tr:nth-child(2) > td.diasemana:first-child {
    border-left: 1px solid var(--rossa-border);
    border-radius: var(--rossa-radius) 0 0 var(--rossa-radius);
  }
  #contenido_admin.rossa-ocupacion-page .tablacalendario > tbody > tr:nth-child(2) > td.diasemana:last-child {
    border-right: 1px solid var(--rossa-border);
    border-radius: 0 var(--rossa-radius) var(--rossa-radius) 0;
  }
  #contenido_admin.rossa-ocupacion-page .nomhab {
    font-size: 13px !important;
    min-height: 40px;    /* altura mínima táctil, igual para libres y ocupadas */
    display: flex;
    flex-wrap: wrap;     /* los iconos de servicio bajan a una 2ª línea */
    align-items: center;
    justify-content: center;
    align-content: center;
    padding: 8px 4px;
    line-height: 1.3;
  }
  #contenido_admin.rossa-ocupacion-page .nomhab > a { flex: 0 0 100%; }
  #contenido_admin.rossa-ocupacion-page .nomhab > i {
    flex: 0 0 auto;
    margin: 2px 3px 0;
  }
  #contenido_admin.rossa-ocupacion-page .cabocu {
    font-size: 12px !important;
    padding: 4px 3px;
  }
  #contenido_admin.rossa-ocupacion-page .nocupacion {
    margin: 2px auto;
  }
  /* Al hacer flex los td dejan de ser celdas: la tabla pasa a grid y tbody/tr se disuelven. */
  #contenido_admin.rossa-ocupacion-page .tablacalendario table.nocupacion {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 4px;
  }
  #contenido_admin.rossa-ocupacion-page .tablacalendario table.nocupacion > tbody,
  #contenido_admin.rossa-ocupacion-page .tablacalendario table.nocupacion > tbody > tr {
    display: contents;
  }
  #contenido_admin.rossa-ocupacion-page .tablacalendario table.nocupacion .cabocu {
    grid-column: 1 / -1;
  }
  /* El tr se disuelve con display:contents, así que el grid-column va en el td. */
  #contenido_admin.rossa-ocupacion-page .tablacalendario table.nocupacion > tbody > tr > td.nomhab:only-child {
    grid-column: 1 / -1;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-month-form {
    max-width: none;
    margin-left: 0;
    margin-right: 0;
  }
}

@media (max-width: 480px) {
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend__list {
    display: grid;
    grid-auto-flow: column;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: repeat(5, auto);   /* 9 items / 2 columnas: 5 huecos por columna */
    justify-items: start;
    align-items: center;
    column-gap: 24px;
    row-gap: 8px;
  }
  #contenido_admin.rossa-ocupacion-page .rossa-ocupacion-legend__item {
    justify-content: flex-start;
  }
}

/* =============================================================================
   32. PESTAÑA RESUMEN (ver_reserva) — dashboard de tarjetas
   ========================================================================== */
/* align-items:stretch: todas las tarjetas de una fila igualan altura. */
body.rossa-tabs-on #bloque-resumen .vr-resumen__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  align-items: stretch;
}
body.rossa-tabs-on #bloque-resumen .vr-resumen__grid > .vr-section { margin: 0; height: 100%; }
/* código de llave/PIN monoespaciado (Resumen y tab Llaves) */
body.rossa-tabs-on .vr-key {
  font-family: ui-monospace, "Cascadia Code", Consolas, monospace;
  font-weight: 700;
  letter-spacing: .04em;
  color: var(--rossa-ink);
}
body.rossa-tabs-on .vr-key-type { color: var(--rossa-muted); font-size: 12px; }
body.rossa-tabs-on #bloque-resumen .vr-keys .vr-section__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
body.rossa-tabs-on #bloque-resumen .vr-key-copy {
  border: 0;
  background: none;
  color: var(--rossa-muted);
  cursor: pointer;
  padding: 0 2px;
  margin-left: 6px;
  font-size: 12px;
  vertical-align: middle;
}
body.rossa-tabs-on #bloque-resumen .vr-key-copy:hover { color: var(--rossa-teal); }
body.rossa-tabs-on #bloque-resumen .vr-key-copy.is-copied { color: var(--rossa-green); }
body.rossa-tabs-on #bloque-resumen .vr-resumen__sep {
  width: 60%;
  height: 1px;
  border: 0;
  background: var(--rossa-border);
  margin: 48px auto;
}
/* minmax(0,1fr) + min-width:0: la columna puede encoger y el texto largo baja de línea. */
body.rossa-tabs-on #bloque-resumen .vr-kv {
  box-sizing: border-box;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 14px 18px;
}
body.rossa-tabs-on #bloque-resumen .vr-kv__cell { min-width: 0; }
body.rossa-tabs-on #bloque-resumen .vr-kv__value { white-space: normal; }
/* sublínea (precio por noche) */
body.rossa-tabs-on #bloque-resumen .vr-kv__sub {
  display: inline-block;
  margin-top: 2px;
  font-size: 12px;
  color: var(--rossa-muted);
}
body.rossa-tabs-on #bloque-resumen .vr-kv__value .rossa-tag {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-weight: 600;
  padding: 4px 11px;
  background-color: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border: 1px solid var(--rossa-border);
}
body.rossa-tabs-on #bloque-resumen .vr-kv__value .rossa-tag::before {
  content: "";
  width: 7px; height: 7px;
  border-radius: 50%;
  background: currentColor;
  flex: 0 0 auto;
}
body.rossa-tabs-on #bloque-resumen .vr-kv__value .rossa-tag--teal  { background-color: rgba(0, 94, 102, .09);   color: var(--rossa-teal);  border-color: rgba(0, 94, 102, .22); }
body.rossa-tabs-on #bloque-resumen .vr-kv__value .rossa-tag--green { background-color: rgba(25, 172, 138, .12); color: var(--rossa-green); border-color: rgba(25, 172, 138, .30); }
body.rossa-tabs-on #bloque-resumen .vr-kv__value .rossa-tag--coral { background-color: rgba(234, 92, 54, .12);  color: var(--rossa-coral); border-color: rgba(234, 92, 54, .30); }
body.rossa-tabs-on #bloque-resumen .vr-kv__value .rossa-tag--red   { background-color: rgba(231, 0, 76, .09);   color: var(--rossa-red);   border-color: rgba(231, 0, 76, .24); }
body.rossa-tabs-on #bloque-resumen .vr-kv__value .rossa-tag--soft  { background-color: var(--rossa-surface-2);  color: var(--rossa-muted); border-color: var(--rossa-border); }

/* Solo se parte una palabra si por sí sola excede el ancho de la celda. */
body.rossa-tabs-on #bloque-resumen .vr-kv__value,
body.rossa-tabs-on #bloque-resumen .vr-kv__label,
body.rossa-tabs-on #bloque-resumen .vr-origin-name { overflow-wrap: break-word; word-break: normal; hyphens: none; }

@media (max-width: 1180px) {
  body.rossa-tabs-on #bloque-resumen .vr-resumen__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  body.rossa-tabs-on #bloque-resumen .vr-resumen__grid { grid-template-columns: 1fr; }
}

/* =============================================================================
   33. VER RESERVA — cabecera de página y ajuste de las tarjetas de Resumen
   ========================================================================== */
/* Cabecera: "Ver reserva" + botón "Volver al gestor de reservas" */
body.rossa-tabs-on .vr-page-head { margin: 0 0 20px; }
body.rossa-tabs-on .vr-page-title {
  margin: 0 0 14px;
  font: 700 22px/1.2 var(--rossa-font);
  color: var(--rossa-ink);
}
body.rossa-tabs-on .vr-page-title__id { color: var(--rossa-teal); }
body.rossa-tabs-on .vr-back-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 11px 18px;
  background: var(--rossa-teal);
  color: #fff;
  font: 600 13px/1 var(--rossa-font);
  text-decoration: none;
  border: 0;
  border-radius: 6px;
  transition: background .15s ease;
}
body.rossa-tabs-on .vr-back-btn:hover,
body.rossa-tabs-on .vr-back-btn:focus { background: var(--rossa-petrol-dark); color: #fff; text-decoration: none; }

/* Tarjetas de Resumen menos redondeadas (6px) */
body.rossa-tabs-on #bloque-resumen .vr-section { border-radius: 6px; }


/* Check-in: icono + texto (verde si hecho, gris si no) */
body.rossa-tabs-on #bloque-resumen .vr-check { display: inline-flex; align-items: center; gap: 7px; font: 600 13.5px/1.3 var(--rossa-font); color: var(--rossa-ink); }
body.rossa-tabs-on #bloque-resumen .vr-check i { font-size: 15px; }
body.rossa-tabs-on #bloque-resumen .vr-check--yes i { color: var(--rossa-green); }
body.rossa-tabs-on #bloque-resumen .vr-check--no  i { color: var(--rossa-muted); }

/* Origen: logo + nombre del canal */
body.rossa-tabs-on #bloque-resumen .vr-origin-name { font: 600 13.5px/1.3 var(--rossa-font); color: var(--rossa-ink); }

body.rossa-tabs-on #bloque-resumen .vr-section__title i { font-size: 16px; margin-right: 9px; }

/* Solo en escritorio; los estados de menú colapsado suman el mismo +40px. */
@media (min-width: 1025px) {
  /* El padding-right es igual en cualquier estado del menú: el colapso solo cambia el izq. */
  body.rossa-tabs-on #contenido_admin { padding-left: 320px; padding-right: 120px; }
  body.rossa-tabs-on.showhidemenu #contenido_admin { padding-left: 110px; }
  body.rossa-tabs-on #contenido_admin.hiddenmenu { padding-left: 70px; }
}

/* =============================================================================
   34. TAB CLIENTE — rework plano
   ========================================================================== */
/* ver_reserva.css legacy ponía este contenedor a display:flex con sus hijos al 90%. */
body.rossa-tabs-on #edit_datos_cliente { display: block; margin: 0; padding: 0; background: transparent; border: 0; border-radius: 0; }
/* Solo se anula el centrado horizontal legacy; el margen vertical queda libre. */
body.rossa-tabs-on #bloque-cliente #edit_datos_cliente > div { width: 100%; margin-left: 0; margin-right: 0; }

/* Cabecera: nombre · | · teléfono · | · email (en fila, con separadores verticales) */
body.rossa-tabs-on #bloque-cliente .vr-cli-head {
  display: flex; align-items: center; justify-content: flex-start;
  flex-wrap: wrap; gap: 10px 16px; padding: 2px 0;
}
/* separador de eje vertical entre los elementos de la cabecera */
body.rossa-tabs-on #bloque-cliente .vr-cli-head__div { flex: 0 0 auto; width: 1px; height: 18px; background: var(--rossa-border); }
body.rossa-tabs-on #bloque-cliente .vr-cli-head__name {
  font: 600 18px/1.25 var(--rossa-font); color: var(--rossa-ink); text-decoration: none;
}
body.rossa-tabs-on #bloque-cliente .vr-cli-head__name:hover { color: var(--rossa-teal); }
body.rossa-tabs-on #bloque-cliente .vr-cli-head__contact { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 20px; }
body.rossa-tabs-on #bloque-cliente .vr-cli-head__item { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--rossa-ink); }
body.rossa-tabs-on #bloque-cliente .vr-cli-head__item i { color: var(--rossa-teal); font-size: 13px; }
body.rossa-tabs-on #bloque-cliente .vr-cli-head__item a { color: var(--rossa-cyan); text-decoration: none; }
body.rossa-tabs-on #bloque-cliente .vr-cli-head__item a:hover { text-decoration: underline; }
body.rossa-tabs-on #bloque-cliente .vr-cli-head__ficha { font-size: 13px; color: var(--rossa-cyan); text-decoration: none; white-space: nowrap; }
body.rossa-tabs-on #bloque-cliente .vr-cli-head__ficha:hover { text-decoration: underline; }

/* separador fino a todo el ancho entre secciones */
body.rossa-tabs-on #bloque-cliente .vr-cli-sep { height: 1px; background: var(--rossa-border); margin: 18px 0; }

/* fila de datos de la reserva (rejilla kv compacta) */
body.rossa-tabs-on #bloque-cliente .vr-cli-data { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 16px 24px; }

/* dos columnas: horas (check-in | check-out) y comentarios (coment. | limpieza) */
body.rossa-tabs-on #bloque-cliente .vr-cli-2col { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px 36px; align-items: start; }
body.rossa-tabs-on #bloque-cliente .vr-cli-2col > .rossa-ctr__row,
body.rossa-tabs-on #bloque-cliente .vr-cli-2col > .rossa-ctr__commentary { width: 100%; margin: 0; }
@media (max-width: 760px) {
  body.rossa-tabs-on #bloque-cliente .vr-cli-2col { grid-template-columns: 1fr; }
  /* móvil: nombre arriba, teléfono y correo debajo en columna, sin separadores */
  body.rossa-tabs-on #bloque-cliente .vr-cli-head { flex-direction: column; align-items: flex-start; gap: 6px; }
  body.rossa-tabs-on #bloque-cliente .vr-cli-head__div { display: none; }
}

/* --- Ajustes finos del tab Cliente --------------------------------------- */
/* Etiquetas de la fila de datos: más grandes (ya van en mayúsculas) */
body.rossa-tabs-on #bloque-cliente .vr-cli-data .vr-kv__label { font-size: 13px; letter-spacing: .05em; }

/* Vencen al override de §30. */
body.rossa-tabs-on #bloque-cliente #edit_datos_cliente .rossa-ctr__client-buttons > h2,
body.rossa-tabs-on #bloque-cliente #edit_datos_cliente .rossa-ctr__row h2,
body.rossa-tabs-on #bloque-cliente #edit_datos_cliente .rossa-ctr__commentary .rossa-subtitle {
  font: 700 13px/1.3 var(--rossa-font) !important;
  letter-spacing: .05em !important;
  text-transform: uppercase !important;
  color: var(--rossa-ink) !important;
  margin: 0 !important;
}

/* "Cambiar cliente": etiqueta a la izquierda, botones a su DERECHA (no debajo) */
body.rossa-tabs-on #bloque-cliente .rossa-ctr__client-buttons { align-items: center; gap: 10px 12px; }
body.rossa-tabs-on #bloque-cliente #edit_datos_cliente .rossa-ctr__client-buttons > h2 { flex: 0 0 auto !important; }

/* Botones Cliente nuevo/existente/facturación: color CLARO (outline), no relleno fuerte */
body.rossa-tabs-on #bloque-cliente .rossa-ctr__client-buttons .rossa-btn--default {
  background: var(--rossa-white) !important;
  color: var(--rossa-teal) !important;
  border: 1px solid var(--rossa-border) !important;
  font-weight: 600 !important;
}
body.rossa-tabs-on #bloque-cliente .rossa-ctr__client-buttons .rossa-btn--default:hover,
body.rossa-tabs-on #bloque-cliente .rossa-ctr__client-buttons .rossa-btn--default:active {
  background: var(--rossa-tint) !important;
  border-color: var(--rossa-teal) !important;
  color: var(--rossa-teal) !important;
}

body.rossa-tabs-on #bloque-cliente .vr-cli-sep { margin: 28px 0; }
body.rossa-tabs-on #bloque-cliente .vr-cli-2col.vr-cli-hours { margin: 6px 0; }
/* comentarios pegado a su separador superior -> darle aire */
body.rossa-tabs-on #bloque-cliente .vr-cli-2col.vr-cli-comments { margin: 6px 0; }

body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary {
  display: flex; flex-direction: row; flex-wrap: nowrap; align-items: flex-start; gap: 14px 18px;
}
body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary .rossa-ctr__data-accesseshour {
  display: flex !important; flex-direction: column; align-items: flex-start; gap: 10px;
  flex: 0 0 auto; width: auto; min-width: 120px;
}
body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary .rossa-subtitle { flex: 0 0 auto !important; }
body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary .rossa-ctr__textarea {
  order: 0; flex: 0 1 360px; width: auto; min-width: 0; max-width: 100%;
}
body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary .rossa-textarea,
body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary textarea { min-height: 120px; }

/* Horas: CHECK-IN en teal con «« ; CHECK-OUT en rojo con »» */
body.rossa-tabs-on #bloque-cliente #edit_datos_cliente .vr-cli-hours .rossa-ctr__row:nth-of-type(1) h2 { color: var(--rossa-teal) !important; }
body.rossa-tabs-on #bloque-cliente #edit_datos_cliente .vr-cli-hours .rossa-ctr__row:nth-of-type(2) h2 { color: var(--rossa-red) !important; }
body.rossa-tabs-on #bloque-cliente .vr-cli-hours .rossa-ctr__row:nth-of-type(1) h2::after { content: " \00AB\00AB"; font-weight: 700; }
body.rossa-tabs-on #bloque-cliente .vr-cli-hours .rossa-ctr__row:nth-of-type(2) h2::after { content: " \00BB\00BB"; font-weight: 700; }

/* display:contents saca título y botón de .rossa-ctr__data-accesseshour para poder ordenarlos. */
@media (max-width: 760px) {
  body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary { flex-direction: column; align-items: stretch; }
  body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary .rossa-ctr__data-accesseshour { display: contents !important; }
  body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary .rossa-subtitle { order: 0 !important; }
  body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary .rossa-ctr__textarea { order: 1 !important; flex: 1 1 auto !important; width: 100% !important; max-width: none !important; }
  body.rossa-tabs-on #bloque-cliente .rossa-ctr__commentary .rossa-btn { order: 2 !important; align-self: flex-start; margin-top: 10px; }
}
/*=============================================================================
  38. SCREEN: Establecimientos y estancias  (module=estancias + edit_estancias)
=============================================================================*/
/* Carga después de lydia.css: las reglas de igual especificidad ganan. No se toca el layout. */

/* --- Establishment card: flat white, thin border, no shadow --- */
#contenido_admin .cont_establecimiento {
  background-color: #fff;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
  padding: 16px;
  margin-bottom: 16px;
}
#contenido_admin .cab_establecimiento {
  border-bottom: 1px solid var(--rossa-border);
  padding-bottom: 12px;
  margin-bottom: 4px;
}
#contenido_admin .cab_establecimiento h2 {
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
}
#contenido_admin .estab_info {
  color: var(--rossa-muted);
  letter-spacing: .04em;
}
/* min / max capacity pills -> teal (min) / red (max), pill radius */
#contenido_admin .estminmax {
  background-color: var(--rossa-teal);
  border-radius: var(--rossa-radius-pill);
  padding: 3px 10px;
}
#contenido_admin .estmax { background-color: var(--rossa-red); }
#contenido_admin .tipo_title { background-color: var(--rossa-teal); }

/* --- Estancia (room) card: flat white instead of grey + shadow --- */
#contenido_admin .estancia {
  background-color: #fff;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
  color: var(--rossa-ink);
}
#contenido_admin .estancia:hover {
  box-shadow: none;
  border-color: var(--rossa-teal);
}
/* image / placeholder tile: teal icon on a subtle tint, rounded to match card */
#contenido_admin .bloq_estancia_iz i.fas {
  color: var(--rossa-teal);
  background-color: var(--rossa-surface);
  border-radius: var(--rossa-radius) var(--rossa-radius) 0 0;
}
#contenido_admin .bloq_estancia_iz img {
  border-radius: var(--rossa-radius) var(--rossa-radius) 0 0;
}
/* room name -> ink, slightly bolder */
#contenido_admin .texto_estancia {
  color: var(--rossa-ink);
  font-weight: 600;
}
/* baños / habitaciones meta -> muted */
#contenido_admin .desc_estancia,
#contenido_admin .desc_estancia span {
  color: var(--rossa-muted);
}
/* "Usos" / "Habitaciones" subsection headers -> thin border, small uppercase muted */
#contenido_admin .cab_subtitle_estancia {
  border-top: 1px solid var(--rossa-border);
}
#contenido_admin .cab_subtitle_estancia h4 {
  color: var(--rossa-muted);
  text-transform: uppercase;
  letter-spacing: .04em;
  font-size: 12px;
  font-family: var(--rossa-font);
}
/* uso rows: thin separators, cyan text accent */
#contenido_admin .uso {
  border-bottom: 1px solid var(--rossa-border);
  padding: 4px 0 4px 4px;
  color: var(--rossa-ink);
}
/* habitaciones chips: subtle tint instead of flat grey */
#contenido_admin .cont_habit span {
  background-color: var(--rossa-surface);
  color: var(--rossa-ink);
  border-radius: var(--rossa-radius);
  padding: 4px 0;
}

/* --- Icon buttons: teal accent, teal fill on hover (matches global) --- */
#contenido_admin .icon_boton {
  color: var(--rossa-teal);
  border-radius: var(--rossa-radius);
}
#contenido_admin .icon_boton:hover {
  background-color: var(--rossa-teal);
  color: #fff;
}

/* --- edit_estancias step indicator (#pasos / .paso / .pasoactivo) --- */
#contenido_admin #pasos .paso {
  color: var(--rossa-muted);
  font-family: var(--rossa-font);
}
#contenido_admin #pasos .pasoactivo {
  color: var(--rossa-teal) !important;
}
@media (max-width: 850px) {
  #contenido_admin .sinhabita .cont_estancias { display: grid; }
}
@media (max-width: 700px) {
  #contenido_admin table.estandar.rossa-establecimiento-table,
  #contenido_admin table.estandar.rossa-establecimiento-table tbody,
  #contenido_admin table.estandar.rossa-establecimiento-table tr,
  #contenido_admin table.estandar.rossa-establecimiento-table tr td {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin table.estandar.rossa-establecimiento-table tr td {
    text-align: left;
  }
  #contenido_admin table.estandar.rossa-establecimiento-table tr td:first-child {
    padding-bottom: 4px;
  }
  #contenido_admin table.estandar.rossa-establecimiento-table tr:not(.cab) td:has(input[type="checkbox"]) {
    display: flex;
    align-items: center;
    gap: 8px;
  }
  #contenido_admin table.estandar.rossa-establecimiento-table input[type="text"],
  #contenido_admin table.estandar.rossa-establecimiento-table input[type="number"],
  #contenido_admin table.estandar.rossa-establecimiento-table select,
  #contenido_admin table.estandar.rossa-establecimiento-table textarea {
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin table.estandar.rossa-establecimiento-table select {
    text-align: center;
    text-align-last: center;
  }
  #contenido_admin table.estandar.rossa-establecimiento-table .select2-container {
    width: 100% !important;
  }
  #contenido_admin table.estandar.rossa-establecimiento-table .select2-selection__rendered {
    text-align: center;
  }
}

/* --- edit_establecimiento / edit_agrupacion en móvil: botón Guardar -------- */
/* `:has(submit)`: si los botones pasan a la barra del pie, la última tabla es la de datos y no debe tocarse. */
@media (max-width: 600px) {
  #contenido_admin form#add_establecimiento > table.estandar:last-of-type:has(input[type="submit"]),
  #contenido_admin form#add_establecimiento > table.estandar:last-of-type:has(input[type="submit"]) tbody,
  #contenido_admin form#add_establecimiento > table.estandar:last-of-type:has(input[type="submit"]) tr,
  #contenido_admin form#add_establecimiento > table.estandar:last-of-type:has(input[type="submit"]) td,
  #contenido_admin form#add_agrupacion > table.estandar:last-of-type:has(input[type="submit"]),
  #contenido_admin form#add_agrupacion > table.estandar:last-of-type:has(input[type="submit"]) tbody,
  #contenido_admin form#add_agrupacion > table.estandar:last-of-type:has(input[type="submit"]) tr,
  #contenido_admin form#add_agrupacion > table.estandar:last-of-type:has(input[type="submit"]) td {
    display: block;
    width: 100%;
    box-sizing: border-box;
    background: none;
    padding-left: 0;
    padding-right: 0;
  }
  /* la cabecera "Guardar" sobra: el botón ya lo dice */
  #contenido_admin form#add_establecimiento > table.estandar:last-of-type:has(input[type="submit"]) tr.cab,
  #contenido_admin form#add_agrupacion > table.estandar:last-of-type:has(input[type="submit"]) tr.cab {
    display: none;
  }
  #contenido_admin form#add_establecimiento > table.estandar:last-of-type:has(input[type="submit"]) input[type="submit"],
  #contenido_admin form#add_agrupacion > table.estandar:last-of-type:has(input[type="submit"]) input[type="submit"] {
    width: 100%;
    box-sizing: border-box;
  }
}

/*=============================================================================
  39. SCREEN: Cierre de habitaciones  (module=gestor_rooms)
=============================================================================*/

/* --- Armazón de la pantalla: dos estados, cada uno con su rejilla --- */
#contenido_admin .rooms-page {
  max-width: 1280px;   /* en monitores muy anchos el contenido deja de estirarse */
}
/* (a) estado inicial: columna centrada */
#contenido_admin .rooms-page:not(:has(#cerrar_estancia)):not(:has(#tabla_stay_closed_periods)) {
  max-width: 620px;
  margin: 0 auto;
  padding-top: 6px;
  text-align: center;   /* el bloque entero se lee como portada de la pantalla */
}
/* dentro de la tarjeta los campos siguen alineados a la izquierda */
#contenido_admin .rooms-page:not(:has(#cerrar_estancia)) #tabla_select_estancia .cab td,
#contenido_admin .rooms-page:not(:has(#cerrar_estancia)) #tabla_select_estancia td { text-align: left; }
#contenido_admin .rooms-page:not(:has(#cerrar_estancia)) #tabla_select_estancia tr:last-child td { text-align: center !important; }
#contenido_admin .rooms-page:not(:has(#cerrar_estancia)) #tabla_select_estancia { max-width: 100%; }
#contenido_admin .rooms-hint {
  margin: 14px 0 0;
  color: var(--rossa-muted);
  font-size: 13px;
  line-height: 1.5;
  text-align: center;
}
/* La columna "Estancia" no tiene contenido hasta elegir el tipo. */
#contenido_admin #tabla_select_estancia:has(#select_stay:empty) .cab td:nth-child(2) { visibility: hidden; }

/* (b) Cada hijo directo va a su celda: el marcado no tiene contenedores por bloque. */
/* 1600px: el alta de cierre necesita ~620px de columna para el motivo. */
@media (min-width: 1600px) {
  #contenido_admin .rooms-page:has(#cerrar_estancia) {
    display: grid;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
    column-gap: 26px;
    align-items: start;
  }
  #contenido_admin .rooms-page:has(#cerrar_estancia) > h1:first-of-type { grid-area: 1 / 1 / 2 / -1; }
  #contenido_admin .rooms-page:has(#cerrar_estancia) > .rooms-back      { grid-area: 2 / 1 / 3 / -1; }
  #contenido_admin .rooms-page:has(#cerrar_estancia) > h1 ~ h1          { grid-area: 3 / 1 / 4 / -1; max-width: 100%; }
  /* El grid usa align-items:start, así que el estirado se pide aquí. */
  #contenido_admin .rooms-page:has(#cerrar_estancia) > #form_choose_stay {
    grid-area: 4 / 1 / 5 / 2;
    align-self: stretch;
  }
  /* tbody vuelve a display:table para conservar la fila de dos columnas. */
  #contenido_admin .rooms-page:has(#cerrar_estancia) #tabla_select_estancia {
    display: flex;
    flex-direction: column;
    justify-content: center;
    height: 100%;
    padding: 18px 22px;   /* simétrico: el 6/18 de la tarjeta descentraba el bloque */
  }
  #contenido_admin .rooms-page:has(#cerrar_estancia) #tabla_select_estancia tbody {
    display: table;
    width: 100%;
  }
  #contenido_admin .rooms-page:has(#cerrar_estancia) > #cerrar_estancia  { grid-area: 4 / 2 / 5 / 3; }
  #contenido_admin .rooms-page:has(#cerrar_estancia) > #response_stay    { grid-area: 5 / 1 / 6 / -1; }
  #contenido_admin .rooms-page:has(#cerrar_estancia) > br               { display: none; }
  #contenido_admin .rooms-page:has(#cerrar_estancia) > .rooms-section-title { grid-area: 6 / 1 / 7 / -1; }
  #contenido_admin .rooms-page:has(#cerrar_estancia) > .rooms-empty-state,
  #contenido_admin .rooms-page:has(#cerrar_estancia) > #tabla_stay_closed_periods_wrapper { grid-area: 7 / 1 / 8 / -1; }
  #contenido_admin .rooms-page:has(#cerrar_estancia) > .rooms-batchbar  { grid-area: 8 / 1 / 9 / -1; }
  /* El max-width de 860px era para el layout de una sola columna. */
  #contenido_admin .rooms-page:has(#cerrar_estancia) #tabla_select_estancia,
  #contenido_admin .rooms-page:has(#cerrar_estancia) #tabla_stay_close_period,
  #contenido_admin .rooms-page:has(#cerrar_estancia) #cerrar_estancia > p,
  #contenido_admin .rooms-page:has(#cerrar_estancia) #response_stay:not(:empty),
  #contenido_admin .rooms-page:has(#cerrar_estancia) .rooms-empty-state { max-width: 100%; }
  #contenido_admin .rooms-page:has(#cerrar_estancia) #form_choose_stay,
  #contenido_admin .rooms-page:has(#cerrar_estancia) #cerrar_estancia { margin: 0; }
  /* El aire superior lo da el margen del título de la estancia, no cada bloque. */
  #contenido_admin .rooms-page:has(#cerrar_estancia) #tabla_select_estancia { margin: 0; }
  #contenido_admin .rooms-page:has(#cerrar_estancia) #tabla_stay_close_period { margin: 8px 0 0; }
  #contenido_admin .rooms-page:has(#cerrar_estancia) #cerrar_estancia > p { margin-top: 0; }
  #contenido_admin .rooms-page:has(#cerrar_estancia) > h1 ~ h1 { margin-bottom: 16px; }
}
/* En readonly (popup de cierres iCal) no hay formularios: solo título y lista. */
#contenido_admin .rooms-page--readonly { max-width: 100%; }

/* Franja intermedia: las 9 columnas piden más ancho del que hay, así que scrollea en su caja. */
@media (min-width: 761px) and (max-width: 1599px) {
  #contenido_admin #tabla_stay_closed_periods_wrapper {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  #contenido_admin #tabla_stay_closed_periods { min-width: 900px; }
}

/* --- Cabecera de pantalla: "Volver" pasa a secundario para no competir con el h1 --- */
#contenido_admin .rooms-page > h1 { margin-bottom: 4px; }
/* El botón "Volver" de debajo está comentado en el módulo. */
#contenido_admin .rooms-page:not(:has(.rooms-back)) > h1:first-of-type { margin-bottom: 16px; }
#contenido_admin .rooms-page .rooms-back { margin: 0 0 18px; }
#contenido_admin .rooms-page .rooms-back a.admin_boton {
  display: inline-flex;
  align-items: center;
  min-width: 0;
  margin: 0;
  padding: 6px 14px;
  background-color: var(--rossa-white) !important;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
  color: var(--rossa-muted) !important;
  font-size: 12.5px;
  font-weight: 600;
}
#contenido_admin .rooms-page .rooms-back a.admin_boton:hover {
  border-color: var(--rossa-teal);
  color: var(--rossa-teal) !important;
}
/* El nombre de la estancia viene como <h1>; en readonly (iCal) es el único y conserva su tamaño. */
#contenido_admin .rooms-page h1 ~ h1 {
  max-width: 1100px;                 /* mismo ancho que las tarjetas de abajo */
  margin: 26px 0 0;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--rossa-border);
  font-size: 20px;
  line-height: 1.25;
}

/* --- Tarjetas de formulario (selector de estancia + cerrar estancia) ------- */
#contenido_admin #tabla_select_estancia,
#contenido_admin #tabla_stay_close_period {
  width: 100%;
  max-width: 1100px;   /* a una columna acompañan el ancho de la lista */
  margin: 12px 0 26px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  border-collapse: separate;
  border-spacing: 0;
  padding: 6px 22px 18px;
  box-sizing: border-box;
}
/* etiquetas de columna (.cab) -> rótulos de campo */
#contenido_admin #tabla_select_estancia .cab td,
#contenido_admin #tabla_stay_close_period > tbody > tr.cab > td {
  background: none !important;
  border: none !important;
  color: var(--rossa-muted) !important;
  text-transform: uppercase;
  letter-spacing: .04em;
  font-size: 11px;
  font-weight: 700;
  text-align: left;
  padding: 14px 10px 2px;
}
/* la 1ª .cab de "CERRAR ESTANCIA" es el título de la tarjeta */
#contenido_admin #tabla_stay_close_period > tbody > tr.cab:first-child > td {
  color: var(--rossa-ink) !important;
  font-size: 13px;
  padding: 8px 10px 12px;
  border-bottom: 1px solid var(--rossa-border) !important;
}
/* `> tbody > tr > td`: el calendario del rango anida otra <table> y no debe heredar estas celdas. */
#contenido_admin #tabla_select_estancia td,
#contenido_admin #tabla_stay_close_period > tbody > tr > td {
  border: none;
  padding: 4px 10px;
  vertical-align: top;
  text-align: left;
  /* Dentro de la tarjeta blanca no cabe el zebra de §18. */
  background-color: transparent !important;
}
/* botón de cada tarjeta: alineado con los campos, no centrado ni flotando */
#contenido_admin #tabla_select_estancia tr:last-child td {
  text-align: left !important;
  padding-top: 16px;
}
#contenido_admin #tabla_select_estancia #choose_stay,
#contenido_admin #tabla_stay_close_period input[type="submit"].admin_boton {
  margin: 0;
  min-width: 132px;
}
/* La celda del botón alinea abajo: por arriba los rótulos dejan los controles descuadrados. */
#contenido_admin #tabla_stay_close_period > tbody > tr:not(.cab) > td:last-child { vertical-align: bottom; }

/* "Tipo habitación" es un Select2 con width inline de 310px y "Estancia" un <select> nativo. */
#contenido_admin #tabla_select_estancia .select2-container {
  width: 100% !important;   /* vence el width inline que fija select2 */
  max-width: 320px;
}
/* El <select> que select2 esconde sigue en el DOM: si se le da ancho, desborda en móvil. */
#contenido_admin #tabla_select_estancia select:not(.select2-hidden-accessible) {
  width: 100%;
  max-width: 320px;
  box-sizing: border-box;
}
#contenido_admin #tabla_stay_close_period input[type="date"],
#contenido_admin #tabla_stay_close_period input[type="datepicker"],
#contenido_admin #tabla_stay_close_period textarea {
  width: 100%;
  box-sizing: border-box;
  /* El textarea del motivo trae dos filas (44px) y los input[type=date] se quedaban en 27px. */
  min-height: 44px;
}
#contenido_admin #tabla_stay_close_period textarea { min-height: 72px; }
#contenido_admin #tabla_stay_close_period textarea {
  resize: vertical;
}
/* Tres columnas: periodo (a su ancho), motivo (todo el resto) y boton. */
#contenido_admin #tabla_stay_close_period > tbody > tr:not(:first-child) > td:nth-child(1) { width: 1%; white-space: nowrap; }
/* El date nativo aportaba ~140px intrinsecos; el datepicker de texto con width:100% no, y la columna del motivo (100%) los aplastaba a 43px. */
#contenido_admin #tabla_stay_close_period input[type="date"],
#contenido_admin #tabla_stay_close_period input[type="datepicker"] { min-width: 140px; }
/* Un textarea con width:100% no aporta ancho intrínseco: con width:auto la columna colapsa. */
#contenido_admin #tabla_stay_close_period > tbody > tr:not(:first-child) > td:nth-child(2) { width: 100%; }
/* min-width:0: el tamaño intrínseco del textarea (cols=25) fijaba un mínimo a la tabla. */
#contenido_admin #tabla_stay_close_period textarea { min-width: 0; }
#contenido_admin #tabla_stay_close_period > tbody > tr:not(:first-child) > td:nth-child(3) { width: 1%; white-space: nowrap; }
#contenido_admin #cerrar_estancia > p {
  max-width: 1100px;
  box-sizing: border-box;   /* mismo ancho exacto que la tarjeta de abajo */
  margin: 0 0 4px;
  padding: 10px 14px;
  background: var(--rossa-tint);
  border-left: 3px solid var(--rossa-teal);
  border-radius: 0 var(--rossa-radius) var(--rossa-radius) 0;
  color: var(--rossa-ink);
  font-size: 12.5px;
  line-height: 1.45;
}
/* respuesta del alta de cierre (ok / error con reservas asociadas) */
#contenido_admin #response_stay:not(:empty) {
  max-width: 1100px;
  margin: 14px 0 0;
}

/* --- Título de la lista + contador ---------------------------------------- */
#contenido_admin .rooms-section-title {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 26px 0 6px;
  color: var(--rossa-ink);
  font-size: 13px;
  letter-spacing: .04em;
}
#contenido_admin .rooms-section-title .rooms-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 20px;
  padding: 0 7px;
  background: var(--rossa-teal);
  border-radius: var(--rossa-radius-pill);
  color: var(--rossa-white);
  font-size: 11.5px;
  font-weight: 700;
}
/* sin cierres: caja de estado vacío en lugar de una frase colgando */
#contenido_admin .rooms-empty-state {
  max-width: 1100px;
  box-sizing: border-box;
  margin: 6px 0 0;
  padding: 22px;
  background: var(--rossa-white);
  border: 1px dashed var(--rossa-border);
  border-radius: var(--rossa-radius);
  color: var(--rossa-muted);
  font-size: 13px;
  text-align: center;
}

/* --- DataTables: controles superiores (buscar + nº de registros) ----------- */
#contenido_admin .dataTables_wrapper .dataTables_length,
#contenido_admin .dataTables_wrapper .dataTables_filter {
  color: var(--rossa-muted);
  font-family: var(--rossa-font);
  font-size: 13px;
}
#contenido_admin .dataTables_wrapper .dataTables_filter input,
#contenido_admin .dataTables_wrapper .dataTables_length select {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 6px 10px;
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  background-color: var(--rossa-white);
}
#contenido_admin .dataTables_wrapper .dataTables_filter input:focus,
#contenido_admin .dataTables_wrapper .dataTables_length select:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}
#contenido_admin #tabla_stay_closed_periods_wrapper .dataTables_filter { float: left; text-align: left; margin-bottom: 10px; }
#contenido_admin #tabla_stay_closed_periods_wrapper .dataTables_length { float: right; }

/* --- Tabla de cierres ----------------------------------------------------- */
#contenido_admin #tabla_stay_closed_periods thead th {
  background-color: var(--rossa-white);
  /* // color: var(--rossa-muted); */
  text-transform: uppercase;
  /* // letter-spacing: .04em; */
  /* // font-size: 11px; */
  /* // font-weight: 600; */
  white-space: nowrap;
  border-bottom: 2px solid var(--rossa-border);
}
/* `border: none` quita la rejilla #ddd que trae la tabla del legacy. */
#contenido_admin #tabla_stay_closed_periods.estandar th,
#contenido_admin #tabla_stay_closed_periods.estandar td {
  border: none;                                    /* fuera la rejilla #ddd */
  /* // border-bottom: 1px solid var(--rossa-border); */
  /* // padding: 12px 10px; */
  text-align: left;
  vertical-align: middle;
}
#contenido_admin #tabla_stay_closed_periods tbody tr:hover {
  background-color: var(--rossa-tint);
}
/* fila marcada para anulación: se distingue del hover */
#contenido_admin #tabla_stay_closed_periods tbody tr:has(.cierre-checkbox:checked) {
  background-color: var(--rossa-salmon);
}
/* el resaltado de columna ordenada de DataTables es un box-shadow inset */
#contenido_admin #tabla_stay_closed_periods tbody td.sorting_1,
#contenido_admin #tabla_stay_closed_periods tbody td.sorting_2,
#contenido_admin #tabla_stay_closed_periods tbody td.sorting_3 {
  background-color: transparent;
  box-shadow: none !important;
}
/* jerarquía de datos: el periodo manda; id / registro / usuario son metadatos */
#contenido_admin #tabla_stay_closed_periods td[data-label="Desde"],
#contenido_admin #tabla_stay_closed_periods td[data-label="Hasta"] {
  color: var(--rossa-ink);
  font-weight: 600;
  white-space: nowrap;
}
#contenido_admin #tabla_stay_closed_periods .rooms-nights {
  display: block;
  color: var(--rossa-muted);
  font-size: 11px;
  font-weight: 500;
}
#contenido_admin #tabla_stay_closed_periods td[data-label="Registrado"],
#contenido_admin #tabla_stay_closed_periods td[data-label="Usuario"] {
  color: var(--rossa-muted);
  /* // font-size: 12px; */
  white-space: nowrap;
}
#contenido_admin #tabla_stay_closed_periods .rooms-id {
  color: var(--rossa-muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
#contenido_admin #tabla_stay_closed_periods td[data-label="Motivo"] {
  color: var(--rossa-ink);
  font-size: 13px;
  min-width: 220px;
}
#contenido_admin #tabla_stay_closed_periods .rooms-empty {
  color: var(--rossa-muted);
  font-style: italic;
}
/* checkbox de selección */
#contenido_admin #tabla_stay_closed_periods input[type="checkbox"] {
  /* // width: 16px; */
  /* // height: 16px; */
  /* // accent-color: var(--rossa-teal); */
  cursor: pointer;
}

/* El valor crudo lo sustituye el PHP por una etiqueta legible. */
#contenido_admin .rooms-origen {
  display: inline-block;
  padding: 3px 10px;
  border-radius: var(--rossa-radius-pill);
  font-size: 11.5px;
  font-weight: 600;
  line-height: 1.5;
  white-space: nowrap;
}
#contenido_admin .rooms-origen--manual { background: rgba(0, 94, 102, .10);  color: var(--rossa-teal); }
#contenido_admin .rooms-origen--ical   { background: rgba(23, 121, 155, .12); color: var(--rossa-cyan); }
#contenido_admin .rooms-origen--cron   { background: var(--rossa-surface);    color: var(--rossa-muted); }
#contenido_admin .rooms-origen--otro   { background: var(--rossa-surface);    color: var(--rossa-muted); }

/* --- DataTables: pie (info + paginación) ---------------------------------- */
#contenido_admin .dataTables_wrapper .dataTables_info {
  color: var(--rossa-muted);
  font-size: 12px;
}
#contenido_admin #tabla_stay_closed_periods_wrapper .dataTables_info { float: left; text-align: left; }
#contenido_admin #tabla_stay_closed_periods_wrapper .dataTables_paginate { float: right; text-align: right; margin-top: 6px; }
#contenido_admin .dataTables_wrapper .dataTables_paginate .paginate_button {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  color: var(--rossa-ink) !important;
  padding: 5px 11px;
  margin: 0 2px;
}
#contenido_admin .dataTables_wrapper .dataTables_paginate .paginate_button:hover {
  background: var(--rossa-tint);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal) !important;
}
#contenido_admin .dataTables_wrapper .dataTables_paginate .paginate_button.current,
#contenido_admin .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white) !important;
}
#contenido_admin .dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
#contenido_admin .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover {
  color: var(--rossa-muted) !important;
  background: var(--rossa-white);
  border-color: var(--rossa-border);
  cursor: default;
}

/* --- Acciones destructivas: neutras en reposo, rojo solo en hover/foco --- */
#contenido_admin .btn-anular-cierre.admin_boton {
  min-width: 0;
  margin: 0;
  padding: 6px 12px;
  background-color: var(--rossa-white) !important;   /* vence lydia .boton_rojo */
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: none;
  color: var(--rossa-muted) !important;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}
#contenido_admin .btn-anular-cierre.admin_boton:hover,
#contenido_admin .btn-anular-cierre.admin_boton:focus-visible {
  background-color: var(--rossa-salmon) !important;
  border-color: var(--rossa-red);
  color: var(--rossa-red) !important;
}
/* El div de la barra trae text-align centrado inline. */
#contenido_admin .rooms-batchbar {
  clear: both;
  max-width: 100%;
  margin-top: 18px !important;
  text-align: left !important;
}
#contenido_admin #btn-anular-lote.admin_boton {
  min-width: 0;
  margin: 0;
  padding: 8px 16px;
  border-radius: var(--rossa-radius);
  box-shadow: none;
  font-size: 12.5px;
  font-weight: 600;
}
#contenido_admin #btn-anular-lote.admin_boton:disabled {
  background-color: var(--rossa-surface) !important;
  border: 1px solid var(--rossa-surface) !important;
  color: var(--rossa-muted) !important;
  cursor: not-allowed;
  opacity: 1;
}
/* con cierres marcados pasa a destructivo real */
#contenido_admin #btn-anular-lote.admin_boton:not(:disabled) {
  background-color: var(--rossa-salmon) !important;
  border: 1px solid var(--rossa-red) !important;
  color: var(--rossa-red) !important;
  cursor: pointer;
}
#contenido_admin #btn-anular-lote.admin_boton:not(:disabled):hover {
  background-color: var(--rossa-red) !important;
  color: var(--rossa-white) !important;
}

/* --- Móvil: la tabla de 9 columnas pedía ~900px y en 390 se salía de la pantalla --- */
@media (max-width: 760px) {
  #contenido_admin .rooms-page h1 ~ h1 { font-size: 18px; margin-top: 20px; }
  #contenido_admin .rooms-page .rooms-back a.admin_boton { width: auto; }

  /* -- formularios apilados -- */
  #contenido_admin #tabla_select_estancia,
  #contenido_admin #tabla_stay_close_period { padding: 6px 14px 16px; }
  #contenido_admin #tabla_select_estancia,
  #contenido_admin #tabla_select_estancia tbody,
  #contenido_admin #tabla_select_estancia tr,
  #contenido_admin #tabla_select_estancia td,
  #contenido_admin #tabla_stay_close_period,
  #contenido_admin #tabla_stay_close_period > tbody,
  #contenido_admin #tabla_stay_close_period > tbody > tr,
  #contenido_admin #tabla_stay_close_period > tbody > tr > td {
    display: block;
    width: 100%;
    box-sizing: border-box;
    text-align: left;
  }
  #contenido_admin #tabla_select_estancia tr.cab { display: none; }
  /* En CERRAR ESTANCIA la 1ª .cab es el título; la 2ª son rótulos que se reponen campo a campo. */
  #contenido_admin #tabla_stay_close_period > tbody > tr.cab + tr.cab { display: none; }
  #contenido_admin #tabla_select_estancia tr:not(.cab) td::before,
  #contenido_admin #tabla_stay_close_period > tbody > tr:not(.cab) > td::before {
    display: block;
    color: var(--rossa-muted);
    text-transform: uppercase;
    letter-spacing: .04em;
    font-size: 11px;
    font-weight: 700;
    margin: 10px 0 4px;
  }
  #contenido_admin #tabla_select_estancia tr:not(.cab) td:first-child:not([colspan])::before { content: "Tipo habitación"; }
  #contenido_admin #tabla_select_estancia #select_stay::before { content: "Estancia"; }
  #contenido_admin #tabla_select_estancia #select_stay:empty { display: none; }
  /* Los anchos por columna de escritorio (fechas de 134px) dejaban los inputs a media caña. */
  #contenido_admin #tabla_stay_close_period > tbody > tr:not(:first-child) > td:nth-child(1),
  #contenido_admin #tabla_stay_close_period > tbody > tr:not(:first-child) > td:nth-child(2),
  #contenido_admin #tabla_stay_close_period > tbody > tr:not(:first-child) > td:nth-child(3) { width: 100%; white-space: normal; }
  #contenido_admin #tabla_stay_close_period > tbody > tr:not(.cab) > td:nth-child(1)::before { content: "Periodo de cierre"; }
  #contenido_admin #tabla_stay_close_period > tbody > tr:not(.cab) > td:nth-child(2)::before { content: "Motivo"; }
  #contenido_admin #tabla_select_estancia .select2-container,
  #contenido_admin #tabla_select_estancia select:not(.select2-hidden-accessible) { max-width: 100%; }
  /* botones de formulario a ancho completo (objetivo táctil) */
  #contenido_admin #tabla_select_estancia #choose_stay,
  #contenido_admin #tabla_stay_close_period input[type="submit"].admin_boton {
    width: 100%;
    max-width: 100%;
    padding: 11px 16px;
  }
  #contenido_admin #tabla_stay_close_period > tbody > tr:not(.cab) > td:last-child::before { content: none; }
  #contenido_admin #tabla_stay_close_period > tbody > tr:not(.cab) > td:last-child { padding-top: 14px; }

  /* -- controles de DataTables apilados -- */
  #contenido_admin #tabla_stay_closed_periods_wrapper { overflow-x: visible; }
  #contenido_admin .dataTables_wrapper .dataTables_filter,
  #contenido_admin .dataTables_wrapper .dataTables_length {
    float: none !important;
    text-align: left !important;
    margin: 0 0 10px;
  }
  /* El label envuelve texto + input: en bloque el campo cae debajo a todo el ancho. */
  #contenido_admin .dataTables_wrapper .dataTables_filter label { display: block; }
  #contenido_admin .dataTables_wrapper .dataTables_filter input {
    display: block;
    width: 100%;
    margin: 6px 0 0;
    box-sizing: border-box;
  }

  /* -- la lista de cierres pasa a fichas -- */
  #contenido_admin #tabla_stay_closed_periods,
  #contenido_admin #tabla_stay_closed_periods tbody,
  #contenido_admin #tabla_stay_closed_periods tr,
  #contenido_admin #tabla_stay_closed_periods td {
    display: block;
    width: auto;
    box-sizing: border-box;
  }
  #contenido_admin #tabla_stay_closed_periods thead { display: none; }
  #contenido_admin #tabla_stay_closed_periods { width: 100% !important; }
  #contenido_admin #tabla_stay_closed_periods tbody tr {
    position: relative;
    margin-bottom: 10px;
    padding: 12px 14px 14px 42px;   /* hueco izquierdo para el checkbox */
    background: var(--rossa-white);
    border: 1px solid var(--rossa-border);
    border-radius: var(--rossa-radius);
  }
  #contenido_admin #tabla_stay_closed_periods tbody tr:hover { background: var(--rossa-white); }
  #contenido_admin #tabla_stay_closed_periods tbody tr:has(.cierre-checkbox:checked) {
    background: var(--rossa-salmon);
    border-color: var(--rossa-red);
  }
  #contenido_admin #tabla_stay_closed_periods.estandar td {
    border: none !important;
    padding: 2px 0 !important;
    /* El zebra de §18 va por celda y dentro de la ficha pintaba franjas dato a dato. */
    background-color: transparent !important;
  }
  /* checkbox anclado arriba a la izquierda de la ficha */
  #contenido_admin #tabla_stay_closed_periods tbody td:first-child {
    position: absolute;
    top: 12px;
    left: 14px;
    padding: 0 !important;
  }
  #contenido_admin #tabla_stay_closed_periods tbody input[type="checkbox"] { width: 18px; height: 18px; }
  /* etiqueta + valor en una línea por dato */
  #contenido_admin #tabla_stay_closed_periods tbody td[data-label] {
    display: flex;
    align-items: baseline;
    gap: 8px;
  }
  #contenido_admin #tabla_stay_closed_periods tbody td[data-label]::before {
    content: attr(data-label);
    flex: 0 0 84px;
    color: var(--rossa-muted);
    text-transform: uppercase;
    letter-spacing: .04em;
    font-size: 10px;
    font-weight: 700;
    line-height: 1.6;
  }
  /* ID y periodo forman la cabecera de la ficha */
  #contenido_admin #tabla_stay_closed_periods tbody td[data-label="ID"] {
    margin-bottom: 4px;
    padding-bottom: 6px !important;
    border-bottom: 1px solid var(--rossa-border) !important;
  }
  #contenido_admin #tabla_stay_closed_periods tbody td[data-label="ID"]::before { content: none; }
  #contenido_admin #tabla_stay_closed_periods tbody td[data-label="ID"] .rooms-id {
    color: var(--rossa-ink);
    font-size: 13px;
    font-weight: 700;
  }
  #contenido_admin #tabla_stay_closed_periods tbody td[data-label="Desde"],
  #contenido_admin #tabla_stay_closed_periods tbody td[data-label="Hasta"] { font-size: 13.5px; }
  #contenido_admin #tabla_stay_closed_periods tbody td[data-label="Hasta"] { align-items: center; }
  #contenido_admin #tabla_stay_closed_periods tbody .rooms-nights { display: inline; margin-left: 6px; }
  #contenido_admin #tabla_stay_closed_periods tbody td[data-label="Motivo"] { min-width: 0; }
  /* el botón cierra la ficha, a ancho completo */
  #contenido_admin #tabla_stay_closed_periods tbody td[data-label="Operaciones"] {
    display: block;
    margin-top: 10px;
  }
  #contenido_admin #tabla_stay_closed_periods tbody td[data-label="Operaciones"]::before { content: none; }
  #contenido_admin .btn-anular-cierre.admin_boton {
    width: 100%;
    padding: 10px 12px;
    font-size: 12.5px;
  }

  /* -- pie: info y paginación centradas, y lote a ancho completo -- */
  #contenido_admin #tabla_stay_closed_periods_wrapper .dataTables_info,
  #contenido_admin #tabla_stay_closed_periods_wrapper .dataTables_paginate {
    float: none !important;
    text-align: center !important;
  }
  #contenido_admin #tabla_stay_closed_periods_wrapper .dataTables_paginate { margin-top: 10px; }
  #contenido_admin .dataTables_wrapper .dataTables_paginate .paginate_button { padding: 8px 14px; }
  #contenido_admin .rooms-batchbar { text-align: center !important; }
  #contenido_admin #btn-anular-lote.admin_boton { width: 100%; padding: 12px 16px; }
}

/*=============================================================================
  40. SCREEN: Partes de reserva y viajeros  (module=radix_reports)
=============================================================================*/

/* Como span suelto (el <style> inline del módulo), al partirse el texto el fondo se rompe. */
#contenido_admin #perfiles_fact .status-sin-enviar,
#contenido_admin #perfiles_fact .status-enviado,
#contenido_admin #perfiles_fact .status-exito,
#contenido_admin #perfiles_fact .status-fallido,
#contenido_admin #perfiles_fact .status-cancelado,
#contenido_admin #perfiles_fact .status-anulado,
#contenido_admin #perfiles_fact .status-tramitado-errores,
#contenido_admin #perfiles_fact .status-desconocido,
#contenido_admin #perfiles_fact .btn-ver-detalles {
  display: inline-block;
  line-height: 1.4;
}

/* keep the wide table at its natural width and let it scroll on small screens */
.rossa-table-scroll {
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
#contenido_admin .rossa-table-scroll > #perfiles_fact {
  min-width: 880px;
}
#contenido_admin #perfiles_fact .rossa-tbl-empty {
  text-align: center;
  color: var(--rossa-muted);
  padding: 24px 12px;
}

/* Los textarea readonly traen resize:both y el tirador los saca de la caja del modal. */
#detallesModal #modalPeticion,
#detallesModal #modalRespuesta,
#detallesModal #modalResponseLote {
  resize: vertical;
  max-width: 100%;
  box-sizing: border-box;
}

/*=============================================================================
  42. VER RESERVA — TAB PAGOS
=============================================================================*/
/* Solo CSS: el DOM no se puede reordenar (forms mal cerrados y a#rossa-iframe debe seguir ahí). */
/* Para ganar a §30/31b se replica su prefijo body.rossa-tabs-on: decide el orden de carga. */

/* Selectores enumerados para no alcanzar los h2 de los .rossa-modal del mismo bloque. */
#bloque-pagos .rossa-ctr__content-card h2,
#bloque-pagos .rossa-ctr__data-iva h2,
#bloque-pagos .rossa-ctr__payment-try > h2,
#bloque-pagos .rossa-payment-attempts__title {
  font-size: 13px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--rossa-ink);
  margin: 0 0 12px;
}
/* En las filas inline (Tarjeta, IVA) el encabezado convive con su control */
#bloque-pagos .rossa-ctr__content-card h2,
#bloque-pagos .rossa-ctr__data-iva h2 { margin: 0; }

/* Etiquetas de campo dentro de Cargos (h5/h3 heredaban tamaños dispares) */
#bloque-pagos .rossa-ctr__bill h5,
#bloque-pagos .rossa-ctr__commentary .rossa-subtitle {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--rossa-muted);
  margin: 0;
}

/* Ritmo vertical homogéneo entre secciones */
#bloque-pagos .rossa-separator--full { margin: 26px 0 22px; }

#bloque-pagos .rossa-ctr__content-card img,
#bloque-pagos .rossa-ctr__content-card .rossa-i { display: none; }
#bloque-pagos .rossa-ctr__content-card {
  display: flex;
  align-items: center;
  gap: 12px;
}
#bloque-pagos .rossa-ctr__content-card > span {
  display: inline-block;
  padding: 3px 14px;
  border-radius: var(--rossa-radius-pill);
  border: 1px solid var(--rossa-border);
  background: #fff;
  font-size: 13px;
  font-weight: 700;
  color: var(--rossa-muted);
}
#bloque-pagos .rossa-ctr__content-card img[src*="SiTarjeta"] ~ span {
  color: var(--rossa-teal);
  border-color: var(--rossa-teal);
}

/* El aviso llega con style inline rojo: de ahí el selector p[style]. */
#bloque-pagos .rossa-ctr__payment-try--transactions > p {
  font-size: 13px;
  color: var(--rossa-muted);
  margin: 0 0 14px;
}
#bloque-pagos .rossa-ctr__payment-try--transactions > p[style] {
  display: inline-block;
  padding: 9px 14px;
  border-radius: var(--rossa-radius);
  background: var(--rossa-salmon);
  color: var(--rossa-coral) !important;   /* gana al color:red inline */
  font-weight: 600;
}

/* "Pagos" abre sección dentro del contenedor de Cargos: no hay separador en el DOM. */
#bloque-pagos .rossa-payment-attempts {
  gap: 16px;
  border-top: 1px solid var(--rossa-border);
  padding-top: 22px;
  margin-top: 26px;
}
#bloque-pagos .rossa-payment-attempts__body {
  max-height: 380px;
  padding-right: 6px;
  border-bottom-color: var(--rossa-border);
}
#bloque-pagos .rossa-payment-attempts-item { border-color: var(--rossa-border); }
#bloque-pagos .rossa-payment-attempts-item__id { color: var(--rossa-teal); }
#bloque-pagos .rossa-payment-attempts-item__type-payment-attempt {
  color: var(--rossa-teal);
  border-color: var(--rossa-teal);
}
/* re-asserted: la regla de arriba (con #id) ganaría al modificador --failed */
#bloque-pagos .rossa-payment-attempts-item__type-payment-attempt--failed {
  background: var(--rossa-salmon);
  color: var(--rossa-red);
  border-color: var(--rossa-red);
}
#bloque-pagos .rossa-payment-attempts__info { border-color: var(--rossa-border); }
#bloque-pagos .rossa-payment-attempts__info__title { color: var(--rossa-ink); }

/* Los enlaces heredaban el gris a todo lo ancho de --old-gray. */
body.rossa-tabs-on #bloque-pagos .rossa-payment-attempts__footer {
  grid-template-columns: minmax(0, 1fr) minmax(300px, 380px);
  gap: 18px 28px;
  align-items: start;
}
#bloque-pagos .rossa-payment-attempts__buttons {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 10px;
}
#bloque-pagos .rossa-payment-attempts__buttons .rossa-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  padding: 10px 18px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: #fff;
  color: var(--rossa-ink);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0;
  text-transform: none;
  text-decoration: none;
  box-shadow: none;
  cursor: pointer;
}
#bloque-pagos .rossa-payment-attempts__buttons .rossa-button:hover {
  background: #fff;
  color: var(--rossa-teal);
  border-color: var(--rossa-teal);
  box-shadow: none;
}
/* Añadir pago o reembolso = acción principal */
#bloque-pagos .rossa-payment-attempts__buttons #rossa-iframe {
  background: var(--rossa-teal);
  color: #fff;
  border-color: var(--rossa-teal);
}
#bloque-pagos .rossa-payment-attempts__buttons #rossa-iframe:hover {
  background: #00474d;
  border-color: #00474d;
  color: #fff;
}

#bloque-pagos .rossa-payment-attempts__table {
  border-color: var(--rossa-border);
  border-radius: 10px;
  background: #fff;
}
#bloque-pagos .rossa-payment-attempts__table__row { color: var(--rossa-ink); }
#bloque-pagos .rossa-payment-attempts__table__row th,
#bloque-pagos .rossa-payment-attempts__table__row td {
  border-bottom-color: var(--rossa-border);
  padding: 11px 16px;
}
#bloque-pagos .rossa-payment-attempts__table__title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--rossa-muted);
}
#bloque-pagos .rossa-payment-attempts__table__price { font-size: 14px; }
#bloque-pagos .rossa-payment-attempts__table__price--paid { color: var(--rossa-green); }
#bloque-pagos .rossa-payment-attempts__table__row--diff,
#bloque-pagos .rossa-payment-attempts__table__row--diff-bail {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
}
#bloque-pagos .rossa-payment-attempts__table__row--diff .rossa-payment-attempts__table__title,
#bloque-pagos .rossa-payment-attempts__table__row--diff-bail .rossa-payment-attempts__table__title {
  color: var(--rossa-coral);
}
#bloque-pagos .rossa-payment-attempts__table__price--diff,
#bloque-pagos .rossa-payment-attempts__table__price--diff-bail {
  color: var(--rossa-coral);
  font-size: 15px;
}

/* El colapso se re-declara aquí: la regla de escritorio de arriba ganaba por orden a la de 31b. */
@media (max-width: 760px) {
  body.rossa-tabs-on #bloque-pagos .rossa-payment-attempts__footer {
    grid-template-columns: 1fr;
  }
  #bloque-pagos .rossa-payment-attempts__summary { order: -1; }
  #bloque-pagos .rossa-payment-attempts__buttons .rossa-button {
    flex: 1 1 auto;
    justify-content: center;
  }
}

/*=============================================================================
  43. AYUDA CONTEXTUAL — modal desde el badge «?» del h1
=============================================================================*/
/* Clases genéricas: .rossa-help-modal (overlay) + .rossa-help-doc (contenido). */
.rossa-help-modal .rossa-modal { max-width: 680px; }
.rossa-help-modal .rossa-modal__title i { color: var(--rossa-teal); }
/* «Entendido» reutiliza .rossa-modal__close para cerrar por JS: no debe heredar el icono ×. */
.rossa-help-modal .rossa-modal__foot .admin_boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 9px 16px;
  line-height: 1.25;
  box-sizing: border-box;
  vertical-align: middle;
  font-size: 14px;
  border: 1px solid var(--rossa-teal);
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
}
/* =====================================================================
   §32. SCREEN: tourist_taxes (configuraciones + repeater de bloques)
   ===================================================================== */
#contenido_admin #ttax-blocks { display: flex; flex-direction: column; gap: 12px; margin-top: 6px; }
#contenido_admin .ttax-block { position: relative; border: 1px solid var(--rossa-border); border-radius: var(--rossa-radius); padding: 12px 14px 14px; background: #fff; }
#contenido_admin .ttax-block__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
#contenido_admin .ttax-block__title { font-weight: 600; font-size: 13px; color: var(--rossa-muted); }
#contenido_admin .ttax-block__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px 14px; }
#contenido_admin .ttax-field { display: flex; flex-direction: column; gap: 3px; }
#contenido_admin .ttax-field > label { font-size: 12px; color: var(--rossa-muted); }
#contenido_admin .ttax-field input,
#contenido_admin .ttax-field select { width: 100%; box-sizing: border-box; }
#contenido_admin .ttax-field input[type="text"],
#contenido_admin .ttax-field input[type="number"] { height: 33px; padding: 0 8px; }
#contenido_admin .ttax-field--check { flex-direction: row; align-items: center; gap: 6px; align-self: flex-end; padding-bottom: 7px; }
#contenido_admin .ttax-field--check input { width: auto; }
#contenido_admin #ttax-blocks-empty { color: var(--rossa-muted); font-size: 13px; padding: 8px 0; }
#ttax-authority-modal #ttax-authority-tipo { width: 100%; box-sizing: border-box; }
@media (max-width: 700px) {
  #ttax-dup-modal .rossa-modal__foot { flex-direction: column-reverse; gap: 8px; }
  #ttax-dup-modal .rossa-modal__foot .admin_boton { width: 100%; }
  #ttax-import-modal .rossa-modal__foot { flex-direction: column-reverse; gap: 8px; }
  #ttax-import-modal .rossa-modal__foot .admin_boton { width: 100%; }
  #ttax-import-modal input[type="file"] { display: block; width: 100%; white-space: normal; }
  #ttax-import-modal input[type="file"]::file-selector-button { display: block; width: 100%; margin: 0 0 6px; }
}

/* .ttax-page es un wrapper aditivo: gancho para tocar solo las pantallas de tasas. */

/* La regla global `.rossa-table a:not(...)` lo tiñe de #00a8d2; aquí se pasa a --rossa-cyan. */
#contenido_admin .ttax-page .rossa-table a:not(.rossa-btn):not(.rossa-btn-negative):not(.admin_boton):not(.rossa-iconbtn) {
  color: var(--rossa-cyan);
}
/* Esa misma regla global pintaba los icon-buttons de #00a8d2 por especificidad. */
#contenido_admin .ttax-page a.rossa-iconbtn { color: var(--rossa-teal); }

/* lydia (input/button.admin_boton{padding:5px 10px}) encoge los <button>/<input> frente a los <a>. */
#contenido_admin .ttax-page a.admin_boton,
#contenido_admin .ttax-page button.admin_boton,
#contenido_admin .ttax-page input.admin_boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 9px 16px;
  line-height: 1.25;
  box-sizing: border-box;
  vertical-align: middle;
}

#contenido_admin .ttax-page .ttax-field .ttax-hint {
  font-size: 11px;
  color: var(--rossa-muted);
  line-height: 1.2;
}
#contenido_admin .ttax-page .ttax-field--check label {
  font-size: 12px;
  color: var(--rossa-ink);
}
/* Inputs numéricos de los bloques: importe/edad/noches/IVA alineados a la derecha. */
#contenido_admin .ttax-page .ttax-field input[type="number"] { text-align: right; }
/* Nota del checkbox «Es una plantilla …»: texto secundario, más pequeño. */
#contenido_admin .ttax-page .ttax-tpl-note { font-size: 12px; color: var(--rossa-muted); }
/* Desplegable de patrones de fábrica (solo lectura) en el panel de mapeo. */
#contenido_admin .ttax-page .ttax-defaults { margin-top: 10px; }
#contenido_admin .ttax-page .ttax-defaults summary { cursor: pointer; color: var(--rossa-muted); font-size: 13px; }
/* Texto de estado vacío en celdas de tabla (NO usar span.rossa-help, que es el badge "?"). */
#contenido_admin .ttax-page .ttax-empty { color: var(--rossa-muted); font-size: 13px; }
/* Solo entre hermanos, para no meter un margen suelto arriba del primer panel. */
#contenido_admin .ttax-page .rossa-panel + .rossa-panel { margin-top: 28px; }

/* .ttax-help-doc se estiliza por clase, no por id, para que ambos modales se vean igual. */
#ttax-help-modal .rossa-modal,
#ttax-help-mapping-modal .rossa-modal { max-width: 680px; }
#ttax-help-modal .rossa-modal__title i,
#ttax-help-mapping-modal .rossa-modal__title i { color: var(--rossa-teal); }
/* «Entendido» reutiliza .rossa-modal__close (cierre por JS) y su :hover lo teñía de rojo. */
#ttax-help-modal .rossa-modal__foot .admin_boton:hover { color: var(--rossa-white); }
/* Reutilizan .rossa-modal__close para cerrar por JS, pero no deben heredar el icono ×. */
#contenido_admin .ttax-page .rossa-modal__foot .admin_boton {
  font-size: 14px;
  border: 1px solid var(--rossa-teal);
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
}
/* Botón hover: ayuda (modal de .rossa-help-modal) */
.rossa-help-modal .rossa-modal__foot .admin_boton:hover { color: var(--rossa-white); }

/* Botón hover y ghost: ayuda (modal de gestión de tasas — .ttax-page) */
#contenido_admin .ttax-page .rossa-modal__foot .admin_boton:hover { color: var(--rossa-white); }
#contenido_admin .ttax-page .rossa-modal__foot .admin_boton--ghost {
  border-color: var(--rossa-border);
  background-color: var(--rossa-white);
  color: var(--rossa-ink);
}
#contenido_admin .ttax-page .rossa-modal__foot .admin_boton--ghost:hover { color: var(--rossa-ink); background-color: var(--rossa-surface); }

/* Resetea la sangría por defecto del <dl>/<dd> del navegador. */
.rossa-help-doc { font-size: 14px; line-height: 1.5; color: var(--rossa-ink); }
.rossa-help-doc .rossa-help-lead { margin: 0 0 14px; }
.rossa-help-doc p { margin: 0 0 8px; }
.rossa-help-doc .rossa-help-h {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 18px 0 6px;
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-teal);
}

/* Scoped a .ttax-help-doc (clase, no id) para que ambos modales de ayuda se vean igual. */
.ttax-help-doc { font-size: 14px; line-height: 1.5; color: var(--rossa-ink); }
.ttax-help-doc .ttax-help-lead { margin: 0 0 14px; }
.ttax-help-doc p { margin: 0 0 8px; }
.ttax-help-doc .ttax-help-h {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 18px 0 6px;
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-teal);
}
.rossa-help-doc .rossa-help-h i,
.ttax-help-doc .ttax-help-h i { color: var(--rossa-teal); font-size: 13px; }

.rossa-help-doc .rossa-help-dl,
.ttax-help-doc .ttax-help-dl { margin: 0 0 6px; }

.rossa-help-doc .rossa-help-dl dt,
.ttax-help-doc .ttax-help-dl dt { margin-top: 8px; font-weight: 600; color: var(--rossa-ink); }

.rossa-help-doc .rossa-help-dl dd,
.ttax-help-doc .ttax-help-dl dd { margin: 2px 0 0 0; color: var(--rossa-muted); }

.rossa-help-doc .rossa-help-dl dd strong,
.ttax-help-doc .ttax-help-dl dd strong { color: var(--rossa-ink); }

.rossa-help-doc .rossa-help-tag,
.ttax-help-doc .ttax-help-tag {
  font-size: 11px;
  font-weight: 700;
  color: var(--rossa-cyan);
  border: 1px solid var(--rossa-border); 
  border-radius: var(--rossa-radius-pill);
  padding: 1px 9px;
}
.ttax-help-doc .ttax-help-muted,
.rossa-help-doc .rossa-help-muted { font-weight: 400; font-size: 12px; color: var(--rossa-muted); }
.ttax-help-doc .ttax-help-note,
.rossa-help-doc .rossa-help-note {
  display: flex;
  gap: 10px;
  margin-top: 16px;
  padding: 10px 12px;
  background: var(--rossa-surface);
  border-radius: var(--rossa-radius);
  font-size: 13px;
  color: var(--rossa-muted);
}
.rossa-help-doc .rossa-help-note i { margin-top: 2px; color: var(--rossa-teal); }

/* El JS del partial abre solo la sección del tab activo. */
.rossa-help-doc details.rossa-help-acc {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  margin: 0 0 10px;
}
.rossa-help-doc .rossa-help-acc > summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 11px 14px;
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-teal);
}
.rossa-help-doc .rossa-help-acc > summary::-webkit-details-marker { display: none; }
.rossa-help-doc .rossa-help-acc > summary::before {
  content: "\f054";               /* chevron-right */
  font-family: "Font Awesome 5 Free";
  font-weight: 900;
  font-size: 11px;
  color: var(--rossa-muted);
  transition: transform .15s ease;
}
.rossa-help-doc .rossa-help-acc[open] > summary::before { transform: rotate(90deg); }
.rossa-help-doc .rossa-help-acc__body { padding: 2px 14px 12px; }
.rossa-help-doc .rossa-help-acc__body .rossa-help-h:first-child { margin-top: 4px; }

/*=============================================================================
  44. SCREEN: Reubicar habitaciones (admin/reubicar_v2.php)
=============================================================================*/
/* Override-only sobre admin/css/reubicar_v2.css, que no se toca. */
/* El JS reinyecta el cuerpo de las tarjetas: todo cuelga de las clases existentes. */
/* SCOPE ESTRICTO por IDs: .rossa-modal / .stay-container / .room-card existen en otros módulos. */
:root {
  /* Estados de habitación: mismos valores que la leyenda de ocupación (§41), que es la canónica */
  --rossa-reloc-libre:     var(--rossa-strip);   /* = .nlibre */
  --rossa-reloc-reservada: #bbe1f2;              /* = .nseleccionada */
  --rossa-reloc-ocupada:   #9a0033;              /* = .nocupada · Figma "Rossa/Rossa 700" */
  --rossa-reloc-cerrada:   var(--rossa-stroke);  /* = .ncerrada */
  --rossa-reloc-pendiente: var(--rossa-red);     /* sin equivalente en ocupación */
}

/* --- Cabecera de reserva (#booking-info): de tarjeta centrada a fila meta --- */
div#booking-info { justify-content: flex-start; padding: 4px 0 12px; }
div#booking-info .booking-info-content {
  flex-direction: row;
  align-items: center;
  gap: 12px;
  padding: 0;
  background-color: transparent;
  border-radius: 0;
  color: var(--rossa-ink);
}
#booking-info .title { font-size: 15px; text-align: left; color: var(--rossa-ink); }
#booking-info .booking-info__list { flex-direction: row; }
#booking-info .booking-info__list-item i { color: var(--rossa-teal); }
#booking-info .booking-info__list-item span { font-size: 13.5px; color: var(--rossa-muted); }

/* --- Acordeones: Alojamiento (nivel 1, tinte) / Estancia (nivel 2, blanca) --- */
#relocation-content .accommodation-container {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  overflow: hidden;
}
#relocation-content .accommodation__header {
  background-color: var(--rossa-white);
  border-bottom: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
  border-radius: 0;
}
#relocation-content .accommodation__header:hover { background-color: var(--rossa-tint); }
#relocation-content .dropdown-accommodation__title { font-weight: 700; font-size: 15px; }
#relocation-content .stay-container {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  overflow: hidden;
}
#relocation-content .stay__header {
  background-color: var(--rossa-white);
  color: var(--rossa-ink);
  border-radius: 0;
  margin-bottom: 0;
}
#relocation-content .stay__header:hover { background-color: var(--rossa-tint); }
#relocation-content .dropdown-stay__title { font-weight: 600; font-size: 14px; }
#relocation-content .dropdown-accommodation__icon i,
#relocation-content .dropdown-stay__icon i { color: var(--rossa-teal); }
#relocation-content .stay__body {
  justify-content: start;
  background: transparent;
  border-radius: 0;
  border-top: 1px solid var(--rossa-hairline-soft);
}
/* Estados vacíos: "No se han encontrado estancias/habitaciones..." */
#relocation-content em { color: var(--rossa-muted); }

/* --- Tarjetas de habitación: planas, borde neutro; color en franja/tag ------ */
#relocation-content .room-card {
  box-shadow: none;
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
}
/* Badges informativos (nº línea, huéspedes, llave, precio): aquietados */
#relocation-content .room-card-badge {
  background-color: var(--rossa-surface);
  color: var(--rossa-ink);
}
/* Los semánticos conservan texto blanco */
#relocation-content .room-card-badge--booking-pag,
#relocation-content .room-card-badge--booking-np,
#relocation-content .room-card-badge--booking-per,
#relocation-content .room-card-badge--booking-fc,
#relocation-content .room-card-badge--booking-pen,
#relocation-content .room-card-badge--closure { color: #fff; }
/* per/fc/pen van después de la clase binaria legacy para ganarle a igual especificidad. */
#relocation-content .room-card-badge--booking-pag { background: #76BC21 !important; }  /* = .rossa-card-tag-pagado */
#relocation-content .room-card-badge--booking-np  { background: #EB5D37 !important; }  /* = .rossa-card-tag-no-pagado */
#relocation-content .room-card-badge--booking-per { background: #B8990B !important; }  /* = .rossa-card-tag-pagrecepcion */
#relocation-content .room-card-badge--booking-fc,
#relocation-content .room-card-badge--booking-pen { background: #FAB511 !important; }  /* = -faltacobro / -pendingpay */
#relocation-content .room-card-badge--closure { background: var(--rossa-reloc-cerrada) !important; }

/* Por estado: franja + tag circular + chip de la leyenda de la barra fija */
#relocation-content .room--available .room-card__header,
#relocation-content .room--available .room-card-number,
#rcp-legend .rcp-legend__item span.room--available {
  background: var(--rossa-reloc-libre);
}
#relocation-content .room--reserved .room-card__header,
#relocation-content .room--reserved .room-card-number,
#rcp-legend .rcp-legend__item span.room--reserved {
  background: var(--rossa-reloc-reservada);
}
#relocation-content .room--with-bookings .room-card__header,
#relocation-content .room--with-bookings .room-card-number,
#rcp-legend .rcp-legend__item span.room--with-bookings {
  background: var(--rossa-reloc-ocupada);
}
#relocation-content .room--with-closures .room-card__header,
#relocation-content .room--with-closures .room-card-number,
#rcp-legend .rcp-legend__item span.room--with-closures {
  background: var(--rossa-reloc-cerrada);
}
#relocation-content .room--closures-and-bookings .room-card__header,
#relocation-content .room--closures-and-bookings .room-card-number,
#rcp-legend .rcp-legend__item span.room--closures-and-bookings {
  background: linear-gradient(90deg, var(--rossa-reloc-cerrada) 50%, var(--rossa-reloc-ocupada) 50%);
}
#relocation-content .room--need-locate .room-card__header,
#relocation-content .room--need-locate .room-card-number,
#rcp-legend .rcp-legend__item span.room--need-locate {
  background: var(--rossa-reloc-pendiente);
}
/* Estados claros: número/tag legibles en ink + anillo de definición */
#relocation-content .room--available .room-card-number,
#relocation-content .room--reserved .room-card-number {
  color: var(--rossa-ink);
  box-shadow: 0 0 0 1px var(--rossa-hairline-soft);
}
/* Estados oscuros: el legacy solo les pone `cursor`, no color, y al oscurecer ocupada/cerrada el número quedaba ilegible. */
#relocation-content .room--with-bookings .room-card-number,
#relocation-content .room--with-closures .room-card-number,
#relocation-content .room--closures-and-bookings .room-card-number,
#relocation-content .room--need-locate .room-card-number { color: var(--rossa-white); }
/* Etiqueta de estado del cuerpo ("Disponible" / "Bloqueado") */
#relocation-content .room--available .room-card-badge--highlight {
  background: var(--rossa-reloc-libre);
  color: var(--rossa-ink);
}
#relocation-content .room--need-locate .room-card-badge--highlight {
  background: var(--rossa-reloc-pendiente);
  color: #fff;
}
/* Selección (clase declarada por el JS; hoy inactiva — cobertura defensiva) */
#relocation-content .room--selected .room-card__header,
#relocation-content .room--selected .room-card-number { background-color: #8fcbe9; }
@keyframes selectedRoomAnimation {
  0%, 50%, 100% { background-color: var(--rossa-reloc-reservada); }
  25%, 75%      { background-color: #8fcbe9; }
}

/* --- Barra fija inferior: blanca, alineada al sidebar (patrón form-actions) -- */
/* Dos barras fijas en bottom:0 y la global (z-index 295) tapaba la leyenda de esta (z-index 8): sobra cuando la pantalla trae la suya. */
body:has(#relocation-control-panel) #rossa-actionbar.rossa-actionbar--vacia { display: none; }
#contenido_admin:has(#relocation-control-panel) > a[href*="module=ver_reserva"] {
  display: none;
}
#relocation-control-panel {
  background-color: var(--rossa-white);
  color: var(--rossa-ink);
  border-top: 1px solid var(--rossa-border);
  width: auto;
  left: 0px;                    /* = #menu width (como .rossa-form-actions) */
  right: 0;
  margin: 0;
}
body.showhidemenu #relocation-control-panel { width: auto; left: 0px; margin: 0; }
#msg-pending-locate { color: var(--rossa-ink); }
#infoselected {
  background-color: var(--rossa-strip);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  color: var(--rossa-ink);
}
#infoselected .infoselected-title { color: var(--rossa-ink); }
#infoselected .infoselected-item-title { color: var(--rossa-muted); text-decoration: none; }
#infoselected .infoselected-item-value { color: var(--rossa-ink); font-weight: 600; }
#relocation-control-panel .rcp-button {
  background-color: var(--rossa-teal);
  border-radius: var(--rossa-radius);
}
#relocation-control-panel .rcp-button:hover { background-color: #00474d; }
/* Mismas medidas que la leyenda de ocupación (§41): chip 30px radio 6, textos a 14. */
#rcp-legend {
  display: block;
  margin: 4px 0 16px;
}
#rcp-legend .rcp-legend__title {
  margin: 0 0 8px;
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-deep);
}
#rcp-legend .rcp-legend__list {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 14px;
}
#rcp-legend .rcp-legend__item {
  align-items: center;
  column-gap: 6px;
  font-size: 14px;
  line-height: 1.3;
  color: var(--rossa-muted);
}
#rcp-legend .rcp-legend__item span {
  width: 30px;
  min-width: 30px;
  height: 30px;
  border-radius: 6px;
  box-shadow: inset 0 0 0 1px rgba(22, 41, 45, .12);  /* define chips claros */
}

/* --- Modales (SOLO por ID: .rossa-modal a pelo pertenece a gestor_pagos) ---- */
#locate-modal .modal-content,
#closure-info-modal .modal-content {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
}
#locate-modal .modal-title,
#closure-info-modal .modal-title { font-size: 16px; font-weight: 700; color: var(--rossa-ink); }
#locate-modal .modal-close,
#closure-info-modal .modal-close { color: var(--rossa-muted); }
#locate-modal .modal-close:hover,
#closure-info-modal .modal-close:hover { color: var(--rossa-red); }
#locate-modal .data-item-title,
#closure-info-modal .data-item-title { color: var(--rossa-ink); font-weight: 600; }
#locate-modal .data-item-value,
#closure-info-modal .data-item-value { color: var(--rossa-muted); opacity: 1; }
#locate-modal .old-data { color: var(--rossa-red); }
#locate-modal .modal-body select {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  color: var(--rossa-ink);
}
#locate-modal .modal-body select:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}
#locate-modal .modal-body select.error-field { border-color: var(--rossa-red); }
#locate-modal .rossa-modal-btn,
#closure-info-modal .rossa-modal-btn {
  border-radius: var(--rossa-radius);
  font-weight: 700;
  text-decoration: none;
}
#locate-modal .modal-btn--cancel,
#closure-info-modal .modal-btn--cancel {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
}
#locate-modal .modal-btn--cancel:hover,
#closure-info-modal .modal-btn--cancel:hover { background-color: #e9eeee; color: var(--rossa-ink); }
#locate-modal .modal-btn--ok,
#closure-info-modal .modal-btn--ok {
  background-color: var(--rossa-teal);
  border: 1px solid var(--rossa-teal);
  color: var(--rossa-white);
}
#locate-modal .modal-btn--ok:hover,
#closure-info-modal .modal-btn--ok:hover { background-color: #00474d; border-color: #00474d; }
#locate-modal .rossa-modal-btn:disabled {
  color: #9aa3a3;
  background-color: #f2f4f5;
  border-color: var(--rossa-border) !important;  /* buster: legacy #bbb !important */
  cursor: not-allowed;
}

/* --- Móvil: espejo del breakpoint legacy (usa !important — buster) ---------- */
@media (max-width: 700px) {
  #relocation-control-panel {
    width: auto !important;
    left: 0;
    right: 0;
    margin: 0 !important;
  }
  #contenido_admin .rcp-legend__list {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
  }
}

/*=============================================================================
  45. AVISOS — campanita del toolbar, panel desplegable y página module=avisos
=============================================================================*/

/* Mismo order que #nombreuser (4): al ir antes en el DOM queda entre la fecha y la cuenta. */
#toolbar #rossa-avisos-bell {
  order: 4;
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  margin: 0;
  border-radius: var(--rossa-radius);
  color: var(--rossa-teal);
  text-decoration: none;
  line-height: 1;
}
#toolbar #rossa-avisos-bell:hover { background: var(--rossa-surface); }
#toolbar #rossa-avisos-bell .fa-bell { font-size: 16px; }

/* Badge contador: pill roja anclada a la esquina de la campana */
#rossa-avisos-badge {
  position: absolute;
  top: -4px;
  right: -6px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-red);
  color: var(--rossa-white);
  font-size: 10px;
  font-weight: 700;
  line-height: 16px;
  text-align: center;
}

/* ---- Grupo de avisos (página y panel) ---- */
.rossa-avisos-grupo { margin: 0 0 26px; }
.rossa-avisos-grupo__head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 4px;
  padding: 0 12px;
}
.rossa-avisos-grupo__titulo {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--rossa-ink);
}
.rossa-avisos-grupo__count {
  display: inline-flex;
  align-items: center;
  padding: 2px 10px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-surface);
  border: 1px solid var(--rossa-border);
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-ink);
}

/* ---- Lista: look de listado gestor_pedidos, en divs ---- */
.rossa-avisos-lista { background: var(--rossa-white); }
.rossa-avisos-lista__head {
  display: grid;
  grid-template-columns: 1fr 110px 140px;
  gap: 16px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--rossa-border);
  color: var(--rossa-muted);
  font-weight: 700;
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: .03em;
}
.rossa-avisos-lista__head span:nth-child(3) { text-align: right; }

/* Lista sin columna de fecha: solo la pintan las dos pantallas donde significa algo. */
.rossa-avisos-lista--sin-fecha .rossa-avisos-lista__head,
.rossa-avisos-lista--sin-fecha .rossa-aviso { grid-template-columns: 1fr 140px; }
.rossa-avisos-lista--sin-fecha .rossa-avisos-lista__head span:nth-child(2) { text-align: right; }

/* Aquí sí hay hover, a diferencia del listado: la fila completa es un enlace. */
.rossa-aviso {
  display: grid;
  grid-template-columns: 1fr 110px 140px;
  gap: 16px;
  align-items: center;
  padding: 14px 12px;
  background: var(--rossa-white);
  border-bottom: 1px solid var(--rossa-hairline-soft);
  border-left: 3px solid transparent;
  color: var(--rossa-ink);
  text-decoration: none;
  font-family: var(--rossa-font);
}
.rossa-aviso:nth-of-type(even) { background: var(--rossa-zebra); }
.rossa-aviso:hover { background: var(--rossa-tint); }
.rossa-aviso--warning  { border-left-color: var(--rossa-coral); }
.rossa-aviso--critical { border-left-color: var(--rossa-red); }
.rossa-aviso--info     { border-left-color: var(--rossa-cyan); }

.rossa-aviso__mensaje {
  color: var(--rossa-cyan-fig);
  font-weight: 400;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rossa-aviso:hover .rossa-aviso__mensaje { text-decoration: underline; }
.rossa-aviso__fecha { color: var(--rossa-muted); font-size: 13px; }
.rossa-aviso__fecha--urgente { color: var(--rossa-coral); font-weight: 700; }
.rossa-aviso__importe {
  color: var(--rossa-coral);
  font-weight: 700;
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.rossa-aviso__etiqueta {
  color: var(--rossa-coral);
  font-weight: 600;
  font-size: 12px;
  text-align: right;
  line-height: 1.3;
}

/* Pie de grupo: truncado + enlace a la página filtrada */
.rossa-avisos-grupo__mas {
  padding: 10px 12px;
  font-size: 12px;
  color: var(--rossa-muted);
}
.rossa-avisos-grupo__mas a { color: var(--rossa-cyan-fig); text-decoration: none; }
.rossa-avisos-grupo__mas a:hover { text-decoration: underline; }

/* Estado vacío (página y panel): lenguaje .rossa-card--empty */
.rossa-avisos-vacio {
  margin: 8px 0;
  padding: 18px;
  border: 1px dashed var(--rossa-border);
  border-radius: 10px;
  text-align: center;
  color: var(--rossa-muted);
}

/* ---- Panel desplegable de la campanita: capa flotante bajo el toolbar. ---- */
#rossa-avisos-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1999;
  display: none;
  background: rgba(22, 41, 45, .45);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
#rossa-avisos-panel {
  position: fixed;
  top: 50%;
  left: 50%;
  right: auto;
  transform: translate(-50%, -50%);
  z-index: 2000;
  display: flex;
  flex-direction: column;
  width: 720px;
  max-width: calc(100vw - 48px);
  max-height: min(82vh, calc(100vh - 80px));
  overflow: hidden;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 12px;
  padding: 0;
  box-sizing: border-box;
}
#rossa-avisos-panel #rossa-avisos-content {
  display: flex;
  flex-direction: column;
  min-height: 0;
  max-height: inherit;
  overflow: hidden;
}
.rossa-avisos-panel-lista {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  padding: 12px;
}
#rossa-avisos-panel .rossa-avisos-grupo,
#rossa-avisos-panel .rossa-aviso-resumen { margin: 0 0 8px; }
#rossa-avisos-panel .rossa-avisos-grupo:last-child,
#rossa-avisos-panel .rossa-aviso-resumen:last-child { margin-bottom: 2px; }
#rossa-avisos-panel .rossa-avisos-grupo__head { padding: 0 4px; position: relative; }
#rossa-avisos-panel .rossa-avisos-grupo__titulo { font-size: 11px; }
#rossa-avisos-panel .rossa-avisos-grupo > .rossa-avisos-grupo__head::before,
#rossa-avisos-panel .rossa-avisos-grupo > .rossa-avisos-grupo__head::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  height: 8px;
  cursor: pointer;
}
#rossa-avisos-panel .rossa-avisos-grupo > .rossa-avisos-grupo__head::before { bottom: 100%; }
#rossa-avisos-panel .rossa-avisos-grupo > .rossa-avisos-grupo__head::after { top: 100%; }
#rossa-avisos-panel .rossa-avisos-grupo[open] > .rossa-avisos-grupo__head::after { height: 4px; }
#rossa-avisos-panel .rossa-avisos-grupo > .rossa-avisos-grupo__head:hover::before,
#rossa-avisos-panel .rossa-avisos-grupo > .rossa-avisos-grupo__head:hover::after {
  background: var(--rossa-tint);
}
/* fila-resumen (actualizaciones): mismo reparto con su margen de 12px */
#rossa-avisos-panel .rossa-aviso-resumen { position: relative; }
#rossa-avisos-panel .rossa-aviso-resumen::before,
#rossa-avisos-panel .rossa-aviso-resumen::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  height: 6px;
  cursor: pointer;
}
#rossa-avisos-panel .rossa-aviso-resumen::before { bottom: 100%; }
#rossa-avisos-panel .rossa-aviso-resumen::after { top: 100%; }
#rossa-avisos-panel .rossa-aviso-resumen:hover { border-radius: 0; }
#rossa-avisos-panel .rossa-aviso-resumen:hover::before {
  background: var(--rossa-tint);
  border-radius: var(--rossa-radius) var(--rossa-radius) 0 0;
}
#rossa-avisos-panel .rossa-aviso-resumen:hover::after {
  background: var(--rossa-tint);
  border-radius: 0 0 var(--rossa-radius) var(--rossa-radius);
}
#rossa-avisos-panel .rossa-avisos-lista__head { display: none; }
#rossa-avisos-panel .rossa-aviso {
  grid-template-columns: 1fr auto auto;
  gap: 10px;
  padding: 10px 8px;
  font-size: 13px;
}
/* En el panel las listas van siempre sin fecha: dos columnas (mensaje + detalle) */
#rossa-avisos-panel .rossa-avisos-lista--sin-fecha .rossa-aviso { grid-template-columns: 1fr auto; }
#rossa-avisos-panel .rossa-aviso:nth-of-type(even) { background: var(--rossa-white); }
#rossa-avisos-panel .rossa-aviso:hover { background: var(--rossa-tint); }
#rossa-avisos-panel .rossa-avisos-grupo__mas { padding: 8px; }
#rossa-avisos-panel .rossa-avisos-vacio {
  margin: 12px;
  padding: 20px 14px;
}

/* Solo lo usan los avisos que no se pueden marcar como leídos; la severidad no tiñe la fila. */
.rossa-aviso-resumen {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 12px;
  padding: 4px 4px;
  border: 0;
  border-radius: var(--rossa-radius);
  background: transparent;
  text-decoration: none;
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
  transition: background .12s ease;
}
.rossa-aviso-resumen:last-child { margin-bottom: 2px; }
.rossa-aviso-resumen:hover { background: var(--rossa-tint); }
.rossa-aviso-resumen:hover .rossa-aviso-resumen__cta { text-decoration: underline; }

/* 16px fijos: los glifos de FontAwesome no son de ancho fijo sin .fa-fw, que pide tocar el markup. */
.rossa-aviso-resumen__icon {
  flex: 0 0 16px;
  width: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-right: 6px;
  font-size: 12px;
  line-height: 1;
  color: var(--rossa-teal);
}

.rossa-aviso-resumen__body {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.rossa-aviso-resumen__msg {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
  line-height: 1.35;
  color: var(--rossa-ink);
}
.rossa-aviso-resumen__cta {
  font-size: 11px;
  font-weight: 500;
  color: var(--rossa-cyan);
}

.rossa-aviso-resumen__count {
  flex: 0 0 auto;
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  padding: 2px 10px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-surface);
  border: 1px solid var(--rossa-border);
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-ink);
  font-variant-numeric: tabular-nums;
}

/* Mismas métricas que .rossa-avisos-grupo__chevron: alinea las píldoras de conteo. */
.rossa-aviso-resumen__chevron {
  flex: 0 0 auto;
  margin-left: 8px;
  color: var(--rossa-muted);
  font-size: 10px;
}

#rossa-avisos-panel .rossa-aviso-resumen,
#rossa-avisos-panel details.rossa-avisos-grupo > summary.rossa-avisos-grupo__head {
  box-sizing: border-box;
  height: 44px;
  padding: 0 8px;
}
#rossa-avisos-panel details.rossa-avisos-grupo > summary.rossa-avisos-grupo__head { margin: 0; }
#rossa-avisos-panel .rossa-aviso-resumen__cta { display: none; }
#rossa-avisos-panel .rossa-aviso-resumen__body { overflow: hidden; }
#rossa-avisos-panel .rossa-aviso-resumen__msg,
#rossa-avisos-panel .rossa-avisos-grupo__titulo {
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
#rossa-avisos-panel .rossa-avisos-grupo__titulo { flex: 1 1 auto; }
#rossa-avisos-panel .rossa-aviso-resumen__icon,
#rossa-avisos-panel .rossa-avisos-grupo__icon { margin-right: 0; }

/* El panel es ahora un modal de 720px: la escala de 11px se quedaba diminuta a ese ancho. */
#rossa-avisos-panel .rossa-avisos-grupo__titulo,
#rossa-avisos-panel .rossa-aviso-resumen__msg,
#rossa-avisos-panel .rossa-aviso-resumen__cta { font-size: 13px; }
#rossa-avisos-panel .rossa-aviso-resumen__icon { font-size: 15px; flex-basis: 20px; width: 20px; }
#rossa-avisos-panel .rossa-aviso-resumen__count,
#rossa-avisos-panel .rossa-avisos-grupo__count { font-size: 14px; }
#rossa-avisos-panel .rossa-avisos-panel__ampliada { font-size: 13px; padding: 6px 10px; }
#rossa-avisos-panel .rossa-avisos-panel__foot { padding: 8px 12px 10px; }

/* Pie del panel: enlace discreto a vista amplificada */
.rossa-avisos-panel__foot {
  flex: 0 0 auto;
  margin: 0;
  padding: 4px 10px 6px;
  border-top: 1px solid var(--rossa-hairline-soft);
  text-align: center;
  background: var(--rossa-white);
}
.rossa-avisos-panel__ampliada {
  display: inline-block;
  padding: 2px 6px;
  font: 500 11px/1.2 var(--rossa-font);
  color: var(--rossa-muted);
  text-decoration: none;
  border-radius: 4px;
}
.rossa-avisos-panel__ampliada:hover {
  color: var(--rossa-teal);
  background: transparent;
  text-decoration: underline;
}

/* Intro breve en páginas de avisos / listados dedicados */
.rossa-avisos-page-intro {
  margin: 0 0 16px;
  color: var(--rossa-muted);
  font: 400 13px/1.4 var(--rossa-font);
}

/* Loader de refresco (stale-while-revalidate) */
.rossa-avisos-panel--cargando #rossa-avisos-content {
  opacity: .45;
  pointer-events: none;
  transition: opacity .12s ease;
}
.rossa-avisos-panel--cargando::after {
  content: "";
  position: absolute;
  top: 14px;
  right: 16px;
  width: 15px;
  height: 15px;
  border: 2px solid var(--rossa-border);
  border-top-color: var(--rossa-teal);
  border-radius: 50%;
  animation: rossa-avisos-spin .6s linear infinite;
}
@keyframes rossa-avisos-spin { to { transform: rotate(360deg); } }
.rossa-avisos-cargando { padding: 28px 16px; text-align: center; color: var(--rossa-muted); }

/* Móvil: panel a ancho útil + toolbar más compacta; listado página sin overflow */
@media (max-width: 700px) {
  .rossa-avisos-lista__head,
  .rossa-aviso { grid-template-columns: 1fr 64px 78px; gap: 6px; }
  .rossa-aviso { padding: 12px 8px; font-size: 13px; }
  .rossa-aviso__mensaje { white-space: normal; }
  .rossa-aviso__fecha { font-size: 11px; }
  .rossa-aviso__importe { font-size: 12px; }

  #rossa-avisos-panel,
  html.rossa-rail #rossa-avisos-panel {
    top: 50%;
    left: 50%;
    right: auto;
    bottom: auto;
    transform: translate(-50%, -50%);
    width: calc(100vw - 16px);
    max-width: none;
    max-height: calc(100vh - 58px - env(safe-area-inset-bottom, 0px));
    border-radius: 12px;
  }
  .rossa-avisos-panel-lista { padding: 10px; }
  .rossa-aviso-resumen { padding: 6px 4px; }
  .rossa-aviso-resumen__msg { font-size: 11px; }
  .rossa-aviso-resumen__cta { font-size: 11px; }
  .rossa-avisos-panel__foot { padding: 4px 8px 6px; }
  .rossa-avisos-panel__ampliada {
    min-height: 0;
    width: auto;
    padding: 4px 8px;
    font-size: 11px;
  }
}

/* Toolbar móvil/tablet sin ratón: campana al tamaño de las pills + cluster derecho ordenado */
@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  #toolbar {
    gap: 6px;
    padding-right: max(10px, env(safe-area-inset-right, 0px));
  }
  #toolbar #rossa-avisos-bell {
    width: 38px;
    height: 34px;
    margin-left: auto;
    flex-shrink: 0;
  }
  #toolbar #rossa-avisos-bell .fa-bell { font-size: 15px; }
  #toolbar #btn-crear-reserva,
  #panel_user,
  #descon { flex-shrink: 0; }
  #toolbar #nombreuser { gap: 6px; }
  #toolbar .demo_mode {
    order: 2;
    font-size: 10px;
    padding: 2px 6px;
    max-width: 48px;
    overflow: hidden;
    text-overflow: ellipsis;
  }
}

/* --- 45.b AVISOS — marcar como leído (alertas por usuario) ------------------- */

/* La acción va DETRÁS del texto, no superpuesta: absoluta tapaba la columna derecha. */
.rossa-aviso-row {
  display: flex;
  align-items: stretch;
  gap: 6px;
  padding-right: 8px;
}
.rossa-aviso-row .rossa-aviso { flex: 1 1 auto; min-width: 0; }

/* El zebra va al contenedor: al envolver cada <a> en un div, :nth-of-type dejaría de alternar. */
.rossa-avisos-lista .rossa-aviso-row:nth-of-type(even) .rossa-aviso {
  background: var(--rossa-zebra);
}
#rossa-avisos-panel .rossa-avisos-lista .rossa-aviso-row:nth-of-type(even) .rossa-aviso {
  background: var(--rossa-white);
}

/* La acción SIEMPRE visible: con opacity:0 hasta el hover no se descubría. */
.rossa-aviso-marcar {
  align-self: center;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 26px;
  padding: 0;
  border: 1px solid var(--rossa-border);
  border-radius: 6px;
  background: var(--rossa-white);
  color: var(--rossa-muted);
  font-size: 12px;
  line-height: 1;
  cursor: pointer;
  transition: background .12s ease, color .12s ease, border-color .12s ease;
}
.rossa-aviso-marcar:hover {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}
.rossa-aviso-marcar:focus-visible {
  outline: 2px solid var(--rossa-teal);
  outline-offset: 1px;
}
.rossa-aviso-marcar[disabled] { opacity: .45; cursor: default; }

/* Iguala la especificidad del zebra, así que gana por orden de carga sin !important. */
.rossa-avisos-lista .rossa-aviso-row--leida .rossa-aviso,
.rossa-avisos-lista .rossa-aviso-row--leida:nth-of-type(even) .rossa-aviso {
  background: var(--rossa-strip);
  border-left-color: var(--rossa-border);
}
.rossa-aviso-row--leida .rossa-aviso { opacity: .7; }
.rossa-aviso-row--leida .rossa-aviso__mensaje { color: var(--rossa-muted); }
.rossa-aviso-row--leida .rossa-aviso-marcar {
  color: var(--rossa-cyan);
  border-color: var(--rossa-cyan);
}

/* --- Grupos plegables de la campanita: <details> nativo, el plegado no depende de JS --- */

details.rossa-avisos-grupo > summary.rossa-avisos-grupo__head {
  display: flex;
  align-items: center;
  cursor: pointer;
  list-style: none;          /* Firefox */
  user-select: none;
}
/* El triángulo nativo se sustituye por el chevron propio */
details.rossa-avisos-grupo > summary.rossa-avisos-grupo__head::-webkit-details-marker { display: none; }
details.rossa-avisos-grupo > summary.rossa-avisos-grupo__head::marker { content: ""; }
details.rossa-avisos-grupo > summary.rossa-avisos-grupo__head:hover { background: var(--rossa-tint); }
details.rossa-avisos-grupo > summary.rossa-avisos-grupo__head:focus-visible {
  outline: 2px solid var(--rossa-teal);
  outline-offset: -2px;
}
.rossa-avisos-grupo__chevron {
  margin-left: 8px;
  color: var(--rossa-muted);
  font-size: 10px;
  transition: transform .15s ease;
}
details.rossa-avisos-grupo[open] > summary .rossa-avisos-grupo__chevron { transform: rotate(180deg); }
/* El contador deja de empujar al chevron al final de la línea */
details.rossa-avisos-grupo > summary .rossa-avisos-grupo__count { margin-left: auto; }

/* flex:0 0 auto: sin él esta cabecera se comprime cuando el panel llega a su max-height. */
.rossa-avisos-panel__head {
  flex: 0 0 auto;
  display: flex;
  justify-content: flex-end;
  padding: 8px 40px 6px 12px;
  border-bottom: 1px solid var(--rossa-border);
}
.rossa-avisos-marcar-todas,
.rossa-avisos-marcar-tipo {
  border: 0;
  background: transparent;
  padding: 2px 4px;
  color: var(--rossa-cyan);
  font-family: var(--rossa-font);
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
}
.rossa-avisos-marcar-todas:hover,
.rossa-avisos-marcar-tipo:hover { text-decoration: underline; }
.rossa-avisos-marcar-todas[disabled],
.rossa-avisos-marcar-tipo[disabled] { opacity: .4; cursor: default; }

.rossa-avisos-grupo__icon {
  display: inline-flex;
  align-items: center;
  /* Ancho fijo: cada glifo de FontAwesome mide lo suyo y los títulos arrancarían descuadrados. */
  flex: 0 0 16px;
  width: 16px;
  justify-content: center;
  margin-right: 6px;
  color: var(--rossa-teal);
  font-size: 12px;
}
.rossa-avisos-grupo--marcable .rossa-avisos-grupo__head { align-items: center; }
.rossa-avisos-grupo__head .rossa-avisos-accion { margin-left: auto; flex: 0 0 auto; }
.rossa-avisos-accion form { display: flex; margin: 0; }
.rossa-avisos-accion__btn {
  margin: 0;
  padding: 4px 12px;
  border: 1px solid var(--rossa-coral);
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.3;
  cursor: pointer;
}
.rossa-avisos-accion__btn:hover { background: #fbe0d8; }
#rossa-avisos-panel .rossa-avisos-accion { margin: 0; padding: 2px 8px 8px; justify-content: flex-end; }
#rossa-avisos-panel .rossa-avisos-accion form { justify-content: flex-end; }
#rossa-avisos-panel .rossa-avisos-accion__btn--texto {
  border: 0;
  background: transparent;
  padding: 2px 4px;
  border-radius: 0;
  color: var(--rossa-coral);
  font-size: 11px;
}
#rossa-avisos-panel .rossa-avisos-accion__btn--texto:hover { background: transparent; text-decoration: underline; }

/* Toggle de leídos en la página module=avisos */
.rossa-avisos-page-barra {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 18px;
}
.rossa-avisos-toggle-leidos {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--rossa-muted);
  font-size: 12px;
  text-decoration: none;
}
.rossa-avisos-toggle-leidos:hover { color: var(--rossa-ink); }
.rossa-avisos-toggle-leidos.is-activo { color: var(--rossa-teal); font-weight: 600; }
.rossa-avisos-grupo--silenciados { opacity: .85; }

/* El badge cuenta elementos, no tipos: con min-width 16px la pill se salía de la campana. */
#rossa-avisos-badge {
  max-width: 34px;
  overflow: hidden;
  box-sizing: content-box;
}

@media (max-width: 700px) {
  /* Área de pulsación cómoda en táctil */
  .rossa-aviso-marcar { width: 34px; height: 30px; }
  .rossa-aviso-row { gap: 4px; padding-right: 4px; }
  .rossa-avisos-panel__head { padding: 6px 36px 4px 8px; }
}

/*=============================================================================
  46. INDICADOR DE SALDO PENDIENTE (badge "Pagado")
=============================================================================*/
/* El glifo del <i> (reloj) se sustituye por la máscara Pendiente-Pago01 en su ::before. */
.rossa-card-tag { position: relative; overflow: visible; }
.rossa-card-tag .rossa-tag-pending {
  position: absolute;
  right: -4px;
  bottom: -4px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-white);
  border-radius: 50%;
  box-sizing: border-box;
}
/* El ::before deja de ser el reloj de §32 y pasa al aviso. */
.rossa-card-tag .rossa-tag-pending::before {
  display: block;
  content: "";
  width: 100%;
  height: 100%;
  background-color: var(--rossa-red);
  -webkit-mask-image: url("https://cdn.rossa.app/icons/Pendiente-Pago01.svg");
          mask-image: url("https://cdn.rossa.app/icons/Pendiente-Pago01.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}
/* aviso de saldo restante bajo el estado de pago (card Reserva del resumen) */
body.rossa-tabs-on #bloque-resumen .vr-pay-due {
  font: 600 12px/1.35 var(--rossa-font);
  color: var(--rossa-coral);
}
/* =============================================================================
   §39  IMPORTACIÓN DE RESERVAS (import_bookings)
============================================================================= */
/* Los colores legacy conviven con .rossa-btn, que gana por orden; #contenido_admin lo vence. */
/* Primario (teal) — "Cargar archivo" / "Importar reservas" */
#contenido_admin .import-btn--primary {
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
  border: 1px solid var(--rossa-teal);
}
#contenido_admin .import-btn--primary:hover,
#contenido_admin .import-btn--primary:active { background-color: #00474d; }

/* Secundario (blanco + borde). */
#contenido_admin .import-btn--secondary,
#contenido_admin .export-config-btn,
#contenido_admin .import-config-btn,
#contenido_admin .export-conditions-btn,
#contenido_admin .import-conditions-btn,
#contenido_admin .toggle-full-preview,
#contenido_admin .add-condition-btn,
#contenido_admin .add-custom-field-btn,
#contenido_admin .autodetect-btn,
#contenido_admin .restore-config-btn,
#contenido_admin .add-mapping-btn,
#contenido_admin .simulate-btn,
#contenido_admin .assign-values-btn {
  background-color: var(--rossa-white);
  color: var(--rossa-ink);
  border: 1px solid var(--rossa-border);
}
#contenido_admin .import-btn--secondary:hover,
#contenido_admin .export-config-btn:hover,
#contenido_admin .import-config-btn:hover,
#contenido_admin .export-conditions-btn:hover,
#contenido_admin .import-conditions-btn:hover,
#contenido_admin .toggle-full-preview:hover,
#contenido_admin .add-condition-btn:hover,
#contenido_admin .add-custom-field-btn:hover,
#contenido_admin .autodetect-btn:hover,
#contenido_admin .restore-config-btn:hover,
#contenido_admin .add-mapping-btn:hover,
#contenido_admin .simulate-btn:hover,
#contenido_admin .assign-values-btn:hover { background-color: var(--rossa-surface); }

/* Destructivo (salmón + coral) — quitar condición / campo / relación */
#contenido_admin .remove-condition-btn,
#contenido_admin .remove-custom-field-btn,
#contenido_admin .remove-mapping-btn {
  background-color: var(--rossa-salmon);
  color: var(--rossa-coral);
  border: 1px solid #f6d6cd;
}
#contenido_admin .remove-condition-btn:hover,
#contenido_admin .remove-custom-field-btn:hover,
#contenido_admin .remove-mapping-btn:hover { background-color: #fbe0d8; }

/* =============================================================================
   §40  COMISIONES (comisiones.php)
============================================================================= */
/* §12 tira "Ver" y "Modificar" a línea propia centrada; aquí 2 ids vencen a ese selector. */
/* §18 y el zebra pisaban el `.tr-reserva td {color:#fff}` legacy de las filas-cabecera. */
#contenido_admin #submit-fechas,
#contenido_admin #submit-comision {
  display: inline-block;
  vertical-align: middle;
  margin: 0 4px;
}
/* Misma caja que .admin_boton: font 14 / lh 1.25 / padding 9 / border 1. */
#contenido_admin .fechas-calendar select,
#contenido_admin #new-comision {
  font-size: 14px;
  line-height: 1.25;
  padding: 9px 8px;
  box-sizing: border-box;
  vertical-align: middle;
}
#contenido_admin #new-comision {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  width: 64px;
  max-width: none;
}
#tablacomisiones .tr-reserva td { color: #fff; }
#tablacomisiones .tr-reserva td,
#tablacomisiones .tr-reserva.reservada-no-pagada td { background: rgb(50, 50, 50); }
#tablacomisiones .tr-reserva.pagada td    { background: #830083; }
#tablacomisiones .tr-reserva.facturada td { background: #008300; }
#tablacomisiones .tr-reserva.deleted td   { background: rgb(128, 0, 0); }

/* Ayuda de tasas turísticas (merge feature/rossa-v5.5 — billing concept) */
.ttax-help-doc .ttax-help-note i { margin-top: 2px; color: var(--rossa-teal); }

/*=============================================================================
  44. HELP-STEP ICONS — selector Lucide (module=add_help_step_v2) + render
=============================================================================*/
.rossa-lucide {
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;
  background-color: currentColor;
  -webkit-mask: var(--ri) center / contain no-repeat;
          mask: var(--ri) center / contain no-repeat;
}
.rossa-lucide--danger { color: var(--rossa-red); }

i.rossa-lucide.img_icon_step { font-size: 30px; color: var(--rossa-teal); }
i.rossa-lucide.img_icon_step.rossa-lucide--danger { color: var(--rossa-red); }
@media (min-width: 700px) { i.rossa-lucide.img_icon_step { font-size: 45px; } }
/* Hereda el blanco de .cabecera_preguntas vía currentColor. */
.cabecera_preguntas .rossa-lucide.cabecera_preguntas__icon { font-size: 34px; }

/* Cabecera del huésped: botones idioma/contacto. */
.rossa-headbtn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 35px;
  height: 35px;
  flex-shrink: 0;
  border-radius: 50%;
  background: #fff;
  /* Aro de color INSET + box-shadow blanco por fuera: replica el doble borde de los PNG. */
  box-shadow: inset 0 0 0 2px #fff, inset 0 0 0 4px currentColor;
  box-sizing: border-box;
  cursor: pointer;
  vertical-align: middle;
}
.rossa-headbtn .rossa-lucide { font-size: 15px; }
.rossa-headbtn--green { color: var(--rossa-green); }
.rossa-headbtn--teal  { color: var(--rossa-teal); }
@media (min-width: 700px) {
  .rossa-headbtn { width: 45px; height: 45px; box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 6px currentColor; }
  .rossa-headbtn .rossa-lucide { font-size: 19px; }
}
@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  .header_actions {
    display: flex;
    justify-content: flex-end;
    align-items: flex-start;
    gap: 4px;
  }
}

/* ---- Selector en rejilla (editor de ayudas) ---- */
#contenido_admin .rossa-iconpick { margin: 4px 0 8px; }
#contenido_admin .rossa-iconpick__sel {
  display: flex;
  align-items: center;
  gap: 16px;
  border: 1px solid var(--rossa-border);
  border-radius: 12px;
  padding: 12px 16px;
  margin-bottom: 18px;
}
#contenido_admin .rossa-iconpick__prev { font-size: 34px; color: var(--rossa-teal); line-height: 1; }
#contenido_admin .rossa-iconpick__prev.rossa-lucide--danger { color: var(--rossa-red); }
#contenido_admin .rossa-iconpick__meta { display: flex; flex-direction: column; gap: 2px; }
#contenido_admin .rossa-iconpick__meta b { font-size: 14px; }
#contenido_admin .rossa-iconpick__meta code {
  background: var(--rossa-surface);
  padding: 1px 7px;
  border-radius: 5px;
  font-size: 12px;
  color: var(--rossa-ink);
  width: fit-content;
}
#contenido_admin .rossa-iconpick__sectitle {
  text-transform: uppercase;
  font-size: 11px;
  letter-spacing: .05em;
  color: var(--rossa-muted);
  font-weight: 700;
  margin: 18px 0 10px;
}
#contenido_admin .rossa-iconpick__sectitle span { color: var(--rossa-teal); }
#contenido_admin .rossa-iconpick__fav {
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 10px;
}
#contenido_admin .rossa-iconpick__favcell {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  padding: 14px 8px;
  border: 1px solid var(--rossa-border);
  border-radius: 12px;
  cursor: pointer;
  background: #fff;
}
#contenido_admin .rossa-iconpick__favcell:hover { border-color: var(--rossa-teal); }
#contenido_admin .rossa-iconpick__favcell .rossa-lucide { font-size: 30px; color: var(--rossa-teal); }
#contenido_admin .rossa-iconpick__favcell .rossa-lucide--danger { color: var(--rossa-red); }
#contenido_admin .rossa-iconpick__favcell .lbl { font-size: 13px; font-weight: 600; color: var(--rossa-ink); }
#contenido_admin .rossa-iconpick__favcell .sub { font-size: 11px; color: var(--rossa-muted); }
#contenido_admin .rossa-iconpick__favcell.is-sel { border-color: var(--rossa-teal); box-shadow: 0 0 0 2px rgba(0, 94, 102, .18); }
#contenido_admin .rossa-iconpick__search { display: flex; align-items: center; gap: 8px; margin: 4px 0 12px; }
#contenido_admin .rossa-iconpick__search input {
  flex: 0 1 320px;
  padding: 8px 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font: inherit;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-iconpick__search input:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}
#contenido_admin .rossa-iconpick__search .n { font-size: 12px; color: var(--rossa-muted); }
/* El nombre Lucide sigue en el DOM y en el title aunque no se pinte. */
#contenido_admin .rossa-iconpick__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(46px, 1fr));
  gap: 4px;
  max-height: 340px;
  overflow: auto;
  padding: 6px;
  border: 1px solid var(--rossa-border);
  border-radius: 12px;
}
#contenido_admin .rossa-iconpick__cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0;
  aspect-ratio: 1 / 1;
  padding: 0;
  border-radius: 10px;
  cursor: pointer;
  border: 1px solid transparent;
}
#contenido_admin .rossa-iconpick__cell:hover { background: var(--rossa-surface); }
#contenido_admin .rossa-iconpick__cell .rossa-lucide { font-size: 22px; color: var(--rossa-ink); }
/* El nombre se conserva en el HTML (búsqueda/tooltip) pero no se pinta. */
#contenido_admin .rossa-iconpick__cell .cn { display: none; }
#contenido_admin .rossa-iconpick__cell.is-sel { border-color: var(--rossa-teal); background: rgba(0, 94, 102, .06); }
#contenido_admin .rossa-iconpick__cell.is-sel .rossa-lucide { color: var(--rossa-teal); }
/* En "Habituales" se queda la etiqueta en castellano y se oculta el nombre Lucide. */
#contenido_admin .rossa-iconpick__favcell .sub { display: none; }
@media (max-width: 720px) { #contenido_admin .rossa-iconpick__fav { grid-template-columns: repeat(2, 1fr); } }

/* =============================================================================
   §45  POLÍTICAS DE CANCELACIÓN (cancelation_policies + cancelation_policy_config)
============================================================================= */
/* Wrapper aditivo .cxpol-page: no renombra clases legacy y reutiliza §25. */
#contenido_admin .cxpol-page .rossa-users-actions { margin: 8px 0 4px; }
#contenido_admin .cxpol-page .rossa-panel { margin-bottom: 12px; }
#contenido_admin .cxpol-page form > .rossa-panel { max-width: 720px; }
#contenido_admin .cxpol-page #rulesForm > .rossa-panel { max-width: none; }
#contenido_admin .cxpol-page .rossa-panel__head { padding: 10px 14px; }
#contenido_admin .cxpol-page .rossa-panel__body { padding: 10px 14px; }
#contenido_admin .cxpol-page .rossa-form-row {
  padding: 4px 0;
  gap: 10px;
  align-items: center;
}
#contenido_admin .cxpol-page .rossa-form-row > label,
#contenido_admin .cxpol-page .rossa-form-row > .rossa-form-label {
  flex: 0 0 168px;
  padding-top: 0;
}
#contenido_admin .cxpol-page .rossa-form-row:has(textarea),
#contenido_admin .cxpol-page .rossa-form-row:has(.cxpol-time-ref),
#contenido_admin .cxpol-page .rossa-form-row:has(.cxpol-lang-stack) { align-items: flex-start; }
#contenido_admin .cxpol-page .rossa-form-row:has(textarea) > label,
#contenido_admin .cxpol-page .rossa-form-row:has(textarea) > .rossa-form-label,
#contenido_admin .cxpol-page .rossa-form-row:has(.cxpol-time-ref) > label,
#contenido_admin .cxpol-page .rossa-form-row:has(.cxpol-time-ref) > .rossa-form-label,
#contenido_admin .cxpol-page .rossa-form-row:has(.cxpol-lang-stack) > label,
#contenido_admin .cxpol-page .rossa-form-row:has(.cxpol-lang-stack) > .rossa-form-label { padding-top: 8px; }
#contenido_admin .cxpol-page .rossa-help { margin: 3px 0 0; }
#contenido_admin .cxpol-page .rossa-form-row input[type="text"],
#contenido_admin .cxpol-page .rossa-form-row input[type="number"],
#contenido_admin .cxpol-page .rossa-form-row select {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

#contenido_admin .cxpol-page .cxpol-textarea {
  width: 100%;
  max-width: 100%;
  min-height: 90px;
  padding: 8px 12px;
  box-sizing: border-box;
  resize: vertical;
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#contenido_admin .cxpol-page .cxpol-textarea:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .18);
}

/* Checkbox «Política activa» alineado con el resto de labels del form. */
#contenido_admin .cxpol-page .cxpol-check {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
  padding-top: 9px;
  cursor: pointer;
}
#contenido_admin .cxpol-page .cxpol-check input {
  width: 16px;
  height: 16px;
  accent-color: var(--rossa-teal);
}

/* Metadatos de la política en la pantalla de reglas. */
#contenido_admin .cxpol-page .cxpol-meta {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 12px 18px;
  margin: 0;
}
#contenido_admin .cxpol-page .cxpol-meta--wide { grid-column: 1 / -1; }
#contenido_admin .cxpol-page .cxpol-meta dt {
  margin: 0 0 2px;
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-muted);
  text-transform: uppercase;
  letter-spacing: .02em;
}
#contenido_admin .cxpol-page .cxpol-meta dd {
  margin: 0;
  font-size: 14px;
  color: var(--rossa-ink);
}

/* Bloque de ayuda encima del repeater. */
#contenido_admin .cxpol-page .cxpol-help { margin-bottom: 12px; }
#contenido_admin .cxpol-page .cxpol-help ul {
  margin: 8px 0 0;
  padding-left: 18px;
}
#contenido_admin .cxpol-page .cxpol-help li { margin-bottom: 4px; }
#contenido_admin .cxpol-page .cxpol-help__example {
  margin: 10px 0 0;
  font-size: 13px;
  color: var(--rossa-muted);
}

/* Repeater de umbrales v2 (cards). */
#contenido_admin .cxpol-page .cxpol-rules {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
#contenido_admin .cxpol-page .cxpol-rules__empty {
  text-align: center;
  padding: 24px 16px;
  color: var(--rossa-muted);
}
#contenido_admin .cxpol-page .cxpol-rules__empty i {
  font-size: 28px;
  opacity: .55;
  margin-bottom: 6px;
}
#contenido_admin .cxpol-page .cxpol-rule {
  display: block;
  padding: 12px 14px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#contenido_admin .cxpol-page .cxpol-rule__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 10px;
}
#contenido_admin .cxpol-page .cxpol-rule__title {
  font-size: 13px;
  color: var(--rossa-teal);
}
#contenido_admin .cxpol-page .cxpol-rule__grid {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) minmax(240px, 2fr);
  gap: 14px 18px;
}
@media (max-width: 768px) {
  #contenido_admin .cxpol-page .cxpol-rule__grid { grid-template-columns: 1fr; }
}
#contenido_admin .cxpol-page .cxpol-rule__field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}
#contenido_admin .cxpol-page .cxpol-rule__field > label {
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-muted);
}
#contenido_admin .cxpol-page .cxpol-rule__field .cxpol-check { padding-top: 0; }
#contenido_admin .cxpol-page .cxpol-hours {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
#contenido_admin .cxpol-page .cxpol-hours input[type="number"] {
  width: 96px;
  padding: 7px 10px;
  box-sizing: border-box;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 14px;
  text-align: right;
}
#contenido_admin .cxpol-page .cxpol-hours input[type="number"]:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .18);
}
/* Conversión horas → días (no reutilizar span.rossa-help: ese es el badge "?" 20×20) */
#contenido_admin .cxpol-page .cxpol-hours__hint {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: var(--rossa-radius-pill);
  background: rgba(0, 94, 102, .08);
  color: var(--rossa-teal);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.3;
  white-space: nowrap;
}
#contenido_admin .cxpol-page .cxpol-hours__hint:empty { display: none; }

/* Bloques multiidioma (descripción visible) */
#contenido_admin .cxpol-page .cxpol-lang-stack {
  display: flex;
  flex-direction: column;
  gap: 12px;
  width: 100%;
}
#contenido_admin .cxpol-page .cxpol-lang-block {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 10px 12px;
  background: #fff;
}
#contenido_admin .cxpol-page .cxpol-lang-block__head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  font-size: 13px;
  font-weight: 700;
  color: var(--rossa-ink);
}
#contenido_admin .cxpol-page .cxpol-lang-block__badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: var(--rossa-radius-pill);
  background: rgba(0, 94, 102, .1);
  color: var(--rossa-teal);
  font-size: 11px;
  font-weight: 600;
}
#contenido_admin .cxpol-page .cxpol-lang-block .cxpol-textarea {
  width: 100%;
  min-height: 88px;
}

#contenido_admin .cxpol-page .cxpol-rule--locked {
  border-color: rgba(0, 94, 102, .28);
  background: rgba(0, 94, 102, .03);
}
#contenido_admin .cxpol-page .cxpol-locked-label {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
  color: var(--rossa-ink);
}
#contenido_admin .cxpol-page .cxpol-locked-label i {
  color: var(--rossa-teal);
  margin-right: 4px;
}

/* Cargos: % / fijo / noches */
#contenido_admin .cxpol-page .cxpol-charge__types {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 14px;
  margin-bottom: 8px;
}
#contenido_admin .cxpol-page .cxpol-charge__types .cxpol-check { padding-top: 0; }
#contenido_admin .cxpol-page .cxpol-charge__field label {
  display: block;
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-muted);
  margin-bottom: 4px;
}
#contenido_admin .cxpol-page .cxpol-charge__input {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
#contenido_admin .cxpol-page .cxpol-charge__input input {
  width: 110px;
  padding: 7px 10px;
  box-sizing: border-box;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 14px;
  text-align: right;
}
#contenido_admin .cxpol-page .cxpol-charge__input input:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .18);
}
#contenido_admin .cxpol-page .cxpol-charge__input span {
  font-size: 13px;
  color: var(--rossa-muted);
}

/* Timeline resumen */
#contenido_admin .cxpol-page .cxpol-timeline {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0 0 12px;
  padding: 10px 14px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-surface-2);
  font-size: 13px;
  color: var(--rossa-ink);
}
#contenido_admin .cxpol-page .cxpol-timeline__chip {
  display: inline-block;
  padding: 4px 10px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  font-size: 12px;
  font-weight: 600;
  color: var(--rossa-teal);
}

/* Referencia temporal en el form de plan */
#contenido_admin .cxpol-page .cxpol-time-ref .cxpol-check { padding-top: 0; }
#contenido_admin .cxpol-page .cxpol-time-ref__fixed {
  margin-top: 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-width: 200px;
}
#contenido_admin .cxpol-page .cxpol-time-ref__fixed input[type="time"] {
  padding: 7px 10px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 14px;
}

/* Validación client-side del formulario de reglas. */
#contenido_admin .cxpol-page .cxpol-invalid {
  border-color: var(--rossa-red) !important;
  box-shadow: 0 0 0 3px rgba(231, 0, 76, .18) !important;
}

/* Enlaces de acción en la tabla: no heredar cyan-fig de §6. */
#contenido_admin .cxpol-page .rossa-table a.rossa-iconbtn { color: var(--rossa-teal); }
#contenido_admin .cxpol-page .rossa-table a.rossa-iconbtn--danger { color: var(--rossa-red); }

/* Botones uniformes (mismo truco que §32 ttax). */
#contenido_admin .cxpol-page a.admin_boton,
#contenido_admin .cxpol-page button.admin_boton,
#contenido_admin .cxpol-page input.admin_boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 9px 16px;
  line-height: 1.25;
  box-sizing: border-box;
  vertical-align: middle;
}

/* =============================================================================
   §46  PLANES / TARIFAS (fees, fee_edit, price_plans, restriction_plans, boards)
============================================================================= */
/* Wrapper aditivo .plans-page; no se renombran cab/redcab/IDs que el JS pueda usar. */
#contenido_admin .plans-page .rossa-users-actions {
  margin: 8px 0 4px;
}
#contenido_admin .plans-page .rossa-panel { margin-bottom: 12px; }

/* Formularios: el panel no se estira a todo el ancho dejando un vacío a la dcha. */
#contenido_admin .plans-page form > .rossa-panel { max-width: 720px; }
#contenido_admin .plans-page .plans-create-grid .rossa-panel { max-width: none; }

#contenido_admin .plans-page .rossa-panel__head { padding: 10px 14px; }
#contenido_admin .plans-page .rossa-panel__body { padding: 10px 14px; }

/* Filas de formulario más compactas. */
#contenido_admin .plans-page .rossa-form-row {
  padding: 4px 0;
  gap: 10px;
  align-items: center;
}
#contenido_admin .plans-page .rossa-form-row > label,
#contenido_admin .plans-page .rossa-form-row > .rossa-form-label {
  flex: 0 0 168px;
  padding-top: 0;
}
#contenido_admin .plans-page .rossa-form-row:has(textarea),
#contenido_admin .plans-page .rossa-form-row:has(.plans-origins-grid) {
  align-items: flex-start;
}
#contenido_admin .plans-page .rossa-form-row:has(textarea) > label,
#contenido_admin .plans-page .rossa-form-row:has(textarea) > .rossa-form-label,
#contenido_admin .plans-page .rossa-form-row:has(.plans-origins-grid) > label,
#contenido_admin .plans-page .rossa-form-row:has(.plans-origins-grid) > .rossa-form-label {
  padding-top: 8px;
}
#contenido_admin .plans-page .rossa-help {
  margin: 3px 0 0;
}
#contenido_admin .plans-page .rossa-panel__body > .rossa-users-actions:last-child {
  margin: 10px 0 0;
}
/* Móvil: la fila pasa a columna */
@media (max-width: 640px) {
  #contenido_admin .plans-page .rossa-form-row,
  #contenido_admin .plans-page .rossa-form-row:has(textarea),
  #contenido_admin .plans-page .rossa-form-row:has(.plans-origins-grid) {
    align-items: stretch;
    padding: 6px 0;
  }
  /* Con el align flex-start de la versión escritorio el campo encogía al contenido. */
  #contenido_admin .plans-page .rossa-form-row > div { width: 100%; }
  #contenido_admin .plans-page .rossa-form-row > label,
  #contenido_admin .plans-page .rossa-form-row > .rossa-form-label,
  #contenido_admin .plans-page .rossa-form-row:has(textarea) > label,
  #contenido_admin .plans-page .rossa-form-row:has(textarea) > .rossa-form-label,
  #contenido_admin .plans-page .rossa-form-row:has(.plans-origins-grid) > label,
  #contenido_admin .plans-page .rossa-form-row:has(.plans-origins-grid) > .rossa-form-label {
    flex: 0 0 auto;
    padding-top: 0;
  }
  #contenido_admin .plans-page .rossa-form-row input[type="text"],
  #contenido_admin .plans-page .rossa-form-row select {
    width: 100%;
    max-width: none;
    box-sizing: border-box;
  }
}

#contenido_admin .plans-page a.admin_boton,
#contenido_admin .plans-page button.admin_boton,
#contenido_admin .plans-page input.admin_boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 9px 16px;
  line-height: 1.25;
  box-sizing: border-box;
  vertical-align: middle;
}

/* Textareas y campos sueltos del módulo de planes. */
#contenido_admin .plans-page .plans-textarea {
  width: 100%;
  max-width: 100%;
  min-height: 72px;
  padding: 8px 12px;
  box-sizing: border-box;
  resize: vertical;
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#contenido_admin .plans-page .plans-textarea:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .18);
}
#contenido_admin .plans-page .plans-keyword {
  font-size: 12px;
  color: var(--rossa-muted);
  background: var(--rossa-surface-2);
  border: 1px solid var(--rossa-border);
  border-radius: 4px;
  padding: 2px 7px;
}
#contenido_admin .plans-page .plans-inline-fields {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
#contenido_admin .plans-page .plans-inline-fields input,
#contenido_admin .plans-page .plans-inline-fields select {
  max-width: 200px;
}
#contenido_admin .plans-page .plans-inline-fields--wrap input { max-width: 160px; }
#contenido_admin .plans-page .plans-coef { width: 80px; max-width: 80px; }

/* Checkboxes de orígenes en fee_edit. */
#contenido_admin .plans-page .plans-origins-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 6px 12px;
  margin-top: 4px;
}
#contenido_admin .plans-page .plans-check {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  color: var(--rossa-ink);
  cursor: pointer;
}
#contenido_admin .plans-page .plans-check input {
  width: 16px;
  height: 16px;
  accent-color: var(--rossa-teal);
}

/* ---- Tarjetas del listado de tarifas (printFeeTarget) -------------------- */
#contenido_admin .plans-page .plans-fee-list {
  display: flex;
  flex-direction: column;
  gap: 34px;
  margin-top: 26px;
}
#contenido_admin .plans-page .plans-fee-list > .rossa-panel { margin-bottom: 0; }
#contenido_admin .plans-page .plans-fee-card .rossa-panel__head {
  flex-wrap: wrap;
  gap: 8px 12px;
}
#contenido_admin .plans-page .plans-fee-card__actions {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
  margin-left: auto;
}
#contenido_admin .plans-page .plans-fee-card--off { opacity: .78; }
#contenido_admin .plans-page .plans-fee-card--off .rossa-panel__head {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
}
#contenido_admin .plans-page .plans-fee-card__table {
  width: 100%;
  border-collapse: collapse;
  background: transparent;
  margin: 0;
  /* Sin esto cada tarjeta reparte el ancho segun su texto y las columnas no se alinean entre si. */
  table-layout: fixed;
}
#contenido_admin .plans-page .plans-fee-card__table td {
  padding: 6px 10px;
  border: 0;
  vertical-align: top;
  text-align: left;
  background: transparent !important;
  color: var(--rossa-ink);
}
@media (min-width: 701px) {
  #contenido_admin .plans-page .plans-fee-card__labels td:nth-child(1) { width: 22%; }
  #contenido_admin .plans-page .plans-fee-card__labels td:nth-child(2) { width: 26%; }
  #contenido_admin .plans-page .plans-fee-card__labels td:nth-child(3) { width: 22%; }
  #contenido_admin .plans-page .plans-fee-card__labels td:nth-child(4) { width: 10%; }
  #contenido_admin .plans-page .plans-fee-card__labels td:nth-child(5) { width: 20%; }
}
#contenido_admin .plans-page .plans-fee-card__labels td {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .03em;
  color: var(--rossa-muted) !important;
  padding-top: 0;
  padding-bottom: 6px;
  /* La fila lleva .cab: el !important es el de la banda de cabecera global. */
  border-top: 0 !important;
  border-bottom: 0 !important;
}
#contenido_admin .plans-page .plans-fee-card__values td {
  font-size: 14px;
  font-weight: 500;
}
#contenido_admin .plans-page .plans-fee-card__origins {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
#contenido_admin .plans-page .plans-origin {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
}
#contenido_admin .plans-page .plans-origin__icon {
  max-width: 22px;
  max-height: 22px;
  vertical-align: middle;
}

/* ---- Tablas legacy de price/restriction plans ---------------------------- */
#contenido_admin .plans-page table.estandar.plans-plan-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  overflow: hidden;
  margin: 0 0 12px;
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
}
#contenido_admin .plans-page table.estandar.plans-plan-table td {
  padding: 8px 12px;
  border-bottom: 1px solid var(--rossa-border);
  /* // background: var(--rossa-white) !important; */
  color: var(--rossa-ink);
  vertical-align: middle;
}
#contenido_admin .plans-page table.estandar.plans-plan-table tr:last-child > td {
  border-bottom: 0;
}
/*
#contenido_admin .plans-page table.estandar.plans-plan-table tr.cab > td,
#contenido_admin .plans-page table.estandar.plans-plan-table tr.redcab > td {
  background: var(--rossa-surface-2) !important;
  color: var(--rossa-teal) !important;
  font-weight: 700;
  font-size: 13px;
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin .plans-page table.estandar.plans-plan-table tr.cab:first-child > td,
#contenido_admin .plans-page table.estandar.plans-plan-table tr.redcab:first-child > td {
  font-size: 15px;
  color: var(--rossa-ink) !important;
} */
/* tr.redcab no lleva la clase .cab, asi que la §65 no la alcanza. */
#contenido_admin .plans-page table.estandar.plans-plan-table tr.redcab > td {
  background: var(--rossa-white) !important;
  color: var(--rossa-navy) !important;
  font-size: var(--rossa-tbl-font);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .4px;
}
#contenido_admin .plans-page .plans-btn-inline {
  float: right !important;
  margin: 0 0 0 6px !important;
  vertical-align: middle;
}

/* Selects / inputs dentro de tablas de planes. */
#contenido_admin .plans-page table.estandar.plans-plan-table input[type="text"],
#contenido_admin .plans-page table.estandar.plans-plan-table input[type="number"],
#contenido_admin .plans-page table.estandar.plans-plan-table select,
#contenido_admin .plans-page table.estandar.plans-plan-table textarea {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 8px 12px;
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
  box-sizing: border-box;
  max-width: 100%;
}
#contenido_admin .plans-page table.estandar.plans-plan-table textarea {
  width: 100%;
  min-height: 80px;
}

/* Form rows: selects generados por baseHTML — ocupan el ancho del panel. */
#contenido_admin .plans-page .rossa-form-row select,
#contenido_admin .plans-page .rossa-form-row input[type="text"],
#contenido_admin .plans-page .rossa-form-row input[type="number"] {
  width: 100%;
  max-width: 100%;
  padding: 7px 12px;
  box-sizing: border-box;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
  background: var(--rossa-white);
}
#contenido_admin .plans-page .rossa-form-row select:focus,
#contenido_admin .plans-page .rossa-form-row input:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .18);
}

/* Grid de formularios de creación (personalizado + relativo/compacto). */
#contenido_admin .plans-page .plans-create-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 12px;
  margin-top: 4px;
}
#contenido_admin .plans-page .plans-create-grid > form { display: contents; }
#contenido_admin .plans-page .plans-create-grid .rossa-panel { margin-bottom: 0; }

/* Tabla servicios / usos en edición: inputs compactos. */
#contenido_admin .plans-page .rossa-table input[type="number"],
#contenido_admin .plans-page .rossa-table select {
  width: 100%;
  max-width: 160px;
  padding: 6px 10px;
  box-sizing: border-box;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 13px;
}

/* Enlaces iconbtn en tablas de regímenes. */
#contenido_admin .plans-page .rossa-table a.rossa-iconbtn { color: var(--rossa-teal); }
#contenido_admin .plans-page .rossa-table a.rossa-iconbtn--danger { color: var(--rossa-red); }

@media (max-width: 900px) {
  #contenido_admin .plans-page .plans-fee-card__table,
  #contenido_admin .plans-page .plans-fee-card__table tbody,
  #contenido_admin .plans-page .plans-fee-card__table tr,
  #contenido_admin .plans-page .plans-fee-card__table td {
    display: block;
    width: 100%;
  }
  #contenido_admin .plans-page .plans-fee-card__labels { display: none; }
  #contenido_admin .plans-page .plans-fee-card__values td {
    border-bottom: 1px solid var(--rossa-border);
    padding: 8px 0;
  }
  #contenido_admin .plans-page .plans-fee-card__actions {
    width: 100%;
    margin-left: 0;
  }
}

/*=============================================================================
  47. VER RESERVA · TAB RESERVA — bloque "Tasa turística" (lock + exención)
=============================================================================*/
/* Aquí span.rossa-help es TEXTO de ayuda, no el badge "?" de §28: se des-badgea acotado. */
#ttax-booking-box > p {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
}
#ttax-booking-box > p > strong {
  flex: 0 0 130px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--rossa-muted);
}
/* Solo el help FINAL de cada fila (siempre último hijo) salta a su propia línea. */
#ttax-booking-box span.rossa-help {
  width: auto;
  height: auto;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  justify-content: flex-start;
  color: var(--rossa-muted);
  font-size: 12px;
  font-weight: 400;
  line-height: 1.45;
  cursor: default;
  user-select: text;
}
#ttax-booking-box span.rossa-help:hover { border: 0; color: var(--rossa-muted); }
#ttax-booking-box > p > span.rossa-help:last-child {
  flex: 1 0 100%;
  margin-left: 140px;   /* 130px de etiqueta + gap: alinea con los controles */
}
/* Controles a la altura de los botones ghost */
#ttax-booking-box select,
#ttax-booking-box input[type="text"] {
  height: 34px;
  box-sizing: border-box;
}
/* §31 centra los .admin_boton de los bloques con margin:auto; aquí van en línea */
#ttax-booking-box .admin_boton { margin: 0; }
@media (max-width: 700px) {
  #ttax-booking-box > p > strong { flex-basis: 100%; }
  #ttax-booking-box > p > span.rossa-help:last-child { margin-left: 0; }
}

/* Avisos de reserva (checkForAlerts: "No se ha determinado la tasa turística…"). */
#contenido_admin.rossa-ctr-admin > br:has(+ .mensaje_ok),
#contenido_admin.rossa-ctr-admin > br:has(+ .mensaje_warning),
#contenido_admin.rossa-ctr-admin > br:has(+ .mensaje_error),
#contenido_admin.rossa-ctr-admin > br:has(+ br + .mensaje_ok),
#contenido_admin.rossa-ctr-admin > br:has(+ br + .mensaje_warning),
#contenido_admin.rossa-ctr-admin > br:has(+ br + .mensaje_error),
#contenido_admin.rossa-ctr-admin > .mensaje_ok + br,
#contenido_admin.rossa-ctr-admin > .mensaje_warning + br,
#contenido_admin.rossa-ctr-admin > .mensaje_error + br { display: none; }
#contenido_admin.rossa-ctr-admin > .mensaje_ok,
#contenido_admin.rossa-ctr-admin > .mensaje_warning,
#contenido_admin.rossa-ctr-admin > .mensaje_error { margin: 12px 0; }

/*=============================================================================
  48. SCREEN: Registro N2 (module=registro_n2)
=============================================================================*/
#contenido_admin .wizard-step {
  width: fit-content;
  min-width: 100%;
  box-sizing: border-box;
}
#contenido_admin .wizard-step .btn-action {
  background-color: var(--rossa-teal);
  color: var(--rossa-white);
  border: 1px solid var(--rossa-teal);
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 14px;
  line-height: 1.25;
  padding: 9px 16px;
  border-radius: var(--rossa-radius);
  cursor: pointer;
  display: inline-block;
  box-sizing: border-box;
  text-align: center;
  text-decoration: none !important;
  transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
#contenido_admin .wizard-step .btn-action:hover { background-color: #00474d; border-color: #00474d; }
#contenido_admin .wizard-step .btn-action:active { background-color: #003a40; }
#contenido_admin .wizard-step .btn-action.btn-secondary {
  background-color: var(--rossa-white);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
#contenido_admin .wizard-step .btn-action.btn-secondary:hover,
#contenido_admin .wizard-step .btn-action.btn-secondary:active { background-color: var(--rossa-surface); border-color: var(--rossa-border); }
/* Solo la caja del histórico tiene hijo flotado, de ahí el :has. */
@media (max-width: 700px) {
  #contenido_admin .wizard-step:has(> div[style*="float"]) {
    display: flex;
    flex-direction: column;
  }
  #contenido_admin .wizard-step > h3 { order: 1; margin-bottom: 6px; }
  #contenido_admin .wizard-step > div[style*="float"] { order: 2; float: none; margin: 0 0 12px; }
  #contenido_admin .wizard-step > .history-table { order: 3; margin-top: 8px; }
}

/*=============================================================================
  49. SCREEN: Accesos y cerraduras — device_groups + device_scheduled_actions
=============================================================================*/
#contenido_admin .device-groups-list h2 {
  display: none;
}
#contenido_admin .device-group-btn-primary {
  background-color: var(--rossa-teal);
  border: 1px solid var(--rossa-teal);
  color: var(--rossa-white);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-weight: 700;
}
#contenido_admin .device-group-btn-primary:hover {
  background-color: #00474d;
  border-color: #00474d;
  color: var(--rossa-white);
}
#contenido_admin .device-group-btn-secondary {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-weight: 700;
}
#contenido_admin .device-group-btn-secondary:hover {
  background-color: var(--rossa-surface);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}

/* Estos botones llevan sus colores como estilo inline: solo se ganan con !important. */
#contenido_admin .table-container a.btn.btn-primary {
  background: var(--rossa-teal) !important;
  color: var(--rossa-white) !important;
  border-radius: var(--rossa-radius) !important;
  font-family: var(--rossa-font);
}
#contenido_admin .table-container a.btn.btn-primary:hover { background: #00474d !important; }
/* Eliminar = destructivo Rossa: salmón + texto/borde rojos */
#contenido_admin .table-container button.btn.btn-danger {
  background: var(--rossa-salmon) !important;
  color: var(--rossa-red) !important;
  border: 1px solid var(--rossa-red) !important;
  border-radius: var(--rossa-radius) !important;
  font-family: var(--rossa-font);
}
#contenido_admin .table-container button.btn.btn-danger:hover {
  background: var(--rossa-red) !important;
  color: var(--rossa-white) !important;
}
#contenido_admin .table-container .btn {
  display: inline-block;
  margin: 3px 6px 3px 0 !important;
  min-width: 92px;
  text-align: center;
  box-sizing: border-box;
}

/* "Volver atrás" trae naranja inline. */
#contenido_admin .tarea-programada-form button.btn.btn-primary {
  background: var(--rossa-teal) !important;
  color: var(--rossa-white) !important;
  border: 1px solid var(--rossa-teal) !important;
  border-radius: var(--rossa-radius) !important;
  font-family: var(--rossa-font);
}
#contenido_admin .tarea-programada-form button.btn.btn-primary:hover { background: #00474d !important; border-color: #00474d !important; }
#contenido_admin .tarea-programada-form button.btn.btn-back {
  background: var(--rossa-white) !important;
  color: var(--rossa-ink) !important;
  border: 1px solid var(--rossa-border) !important;
  border-radius: var(--rossa-radius) !important;
  font-family: var(--rossa-font);
}
#contenido_admin .tarea-programada-form button.btn.btn-back:hover { background: var(--rossa-surface) !important; }

#contenido_admin table.rossa-tbl.rossa-dsa-tabla .rossa-iconbtn.rossa-iconbtn {
  font-size: var(--rossa-tbl-ico-size);
  color: var(--rossa-tbl-ico);
}
#contenido_admin table.rossa-tbl.rossa-dsa-tabla .rossa-iconbtn.rossa-iconbtn--danger { color: var(--rossa-red); }

/*=============================================================================
  50. CALENDARIO — conmutador de vista (lineal / mensual)
=============================================================================*/
/* Son enlaces reales entre módulos, no tabs JS: así no se renderizan las dos vistas. */
#contenido_admin .rossa-cal-viewbar {
  display: flex;
  flex: 0 0 auto;                    /* en calendar.php #contenido_admin es flex column */
  align-items: center;
  justify-content: flex-start;
  margin: 0 0 12px;
}
/* calendar.php comparte el mismo .rossa-cal-viewbar y no debe llevar este espaciado. */
#contenido_admin.rossa-ocupacion-page .rossa-cal-viewbar {
  padding-bottom: 30px;
}
#contenido_admin .rossa-cal-switch {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 0;
  width: 65px;
  height: 30px;
  box-sizing: border-box;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-db-400);
  border-radius: 7px;
}
#contenido_admin .rossa-cal-switch__opt {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 1 1 30px;
  height: 30px;
  box-sizing: border-box;
  border-radius: var(--rossa-radius-pill);
  color: var(--rossa-muted);
  font-size: 15px;
  line-height: 1;
  text-decoration: none;
}
#contenido_admin a.rossa-cal-switch__opt:hover,
#contenido_admin a.rossa-cal-switch__opt:focus {
  background: rgba(0, 94, 102, .08);
  color: var(--rossa-teal);
  text-decoration: none;
}
#contenido_admin .rossa-cal-switch__opt i {
  font-size: 1.6em;
}
#contenido_admin .rossa-cal-switch__opt:not(.is-active) i.fa-th,
#contenido_admin .rossa-cal-switch__opt:not(.is-active) i.fa-align-justify {
  color: var(--rossa-db-400);
}
#contenido_admin .rossa-cal-switch__opt.is-active {
  background: var(--rossa-db-400);
  border-radius: 7px;
  color: var(--rossa-white);
  cursor: default;
}
/* Etiqueta accesible (no visible): el control es icon-only por diseño. */
#contenido_admin .rossa-cal-switch__label {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
/* El #root de calendar.php trae height:100% + flex:1: con la barra sumaría más del 100%. */
#contenido_admin.rossa-cal-page #root {
  height: auto;
  min-height: 0;
}

@media (max-width: 700px) {
  #contenido_admin #tabla_fechas_reserva .rossa-filters { padding: 0; }
}

/* ADD_RESERVA MÓVIL — paso 1, datos de la reserva (#tabla_fechas_reserva) */
@media (max-width: 600px) {
  #tabla_fechas_reserva { border: 0; }
  #tabla_fechas_reserva .rossa-add-reserva-dates__title:first-of-type {
    font-size: 16px !important;
    text-align: center;
  }
  #contenido_admin #response_table_bookings h2 { font-size: 16px !important; }
  #tabla_fechas_reserva .filter-title { text-align: left; }
}
@media (min-width: 481px) {
  #contenido_admin #tabla_fechas_reserva .rossa-filters { flex-direction: row; gap: 16px; }
  #contenido_admin #tabla_fechas_reserva .filter-container { flex: 0 1 460px; width: auto; }
  #contenido_admin:has(#tabla_fechas_reserva) #cabecera_texto h1 {
    text-align: left;
    border-bottom: 0;
    padding-bottom: 0;
  }
  #tabla_fechas_reserva .rossa-add-reserva-dates__title:first-of-type { text-align: left; }
}

/* ADD_RESERVA MÓVIL — paso 3, datos del cliente (.rossa-client-card*) */
@media (max-width: 600px) {
  #contenido_admin .rossa-client-cards-row { grid-template-columns: 1fr; }
  #contenido_admin .rossa-client-card--double { grid-column: span 1; }
  #contenido_admin .rossa-client-card--split { flex-direction: column; height: auto; }
  #contenido_admin .rossa-client-card__col--tarjeta { margin-top: 0; }
  #contenido_admin .rossa-client-card__table,
  #contenido_admin .rossa-client-card__table tbody,
  #contenido_admin .rossa-client-card__table tr { display: block; width: 100%; }
  #contenido_admin .rossa-client-card__table td {
    display: block;
    width: 100%;
    padding: 0 0 14px;
  }
  #contenido_admin .rossa-client-card__table td.rossa-client-card__label-cell {
    width: 100%;
    white-space: normal;
    padding: 0 0 4px;
  }
}
@media (min-width: 481px) and (hover: none) and (pointer: coarse) {
  #contenido_admin .table_datos_clientes { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
  #contenido_admin .table_datos_clientes > .rossa-add-reserva-dates__title { grid-column: 1 / -1; }
  #contenido_admin .table_datos_clientes .rossa-client-cards-row { display: contents; }
  #contenido_admin .table_datos_clientes .rossa-client-card--double { grid-column: span 2; }
}

/*=============================================================================
  51. ADD_RESERVA MÓVIL — resultados de disponibilidad (table.reservas_boards)
=============================================================================*/
/* La tabla trae anchos y cellspacing="6" en el marcado; display:block los desactiva. */
@media (max-width: 600px) {
  /* Fuera del modelo de tabla: sin columnas compartidas ni border-spacing */
  #contenido_admin table.reservas_boards {
    display: block;
    width: 100%;
    box-sizing: border-box;
    border-spacing: 0;
    padding: 0;
  }
  #contenido_admin .reservas_boards thead,
  #contenido_admin .reservas_boards tbody,
  #contenido_admin .reservas_boards tr { display: block; width: auto; }
  #contenido_admin .reservas_boards td:not(.cabestancia) {
    display: block;
    box-sizing: border-box;
    width: auto;
  }
  #contenido_admin .reservas_boards td[width] { width: auto; }
  /* La oculta responsive.css; se reafirma aquí porque la regla de arriba tiene más peso que la suya. */
  #contenido_admin .reservas_boards .cabestancia { display: none; }
  /* Cabecera de columnas y filas de relleno: sin función en modo apilado */
  #contenido_admin .reservas_boards thead tr.cab:has(.cabestancia) { display: none; }
  #contenido_admin .reservas_boards tr.tr_usos_boards_mov,
  #contenido_admin .reservas_boards tr.tr_empty { display: none; }

  /* Banda de fechas de la búsqueda */
  #contenido_admin .reservas_boards td.cabfechas { padding: 8px 12px !important; }

  /* Cabecera de estancia/uso: título y badge de capacidad sin cortarse */
  #contenido_admin .reservas_boards .cab_uso_reserva {
    padding: 10px 12px !important;
    border-radius: var(--rossa-radius) var(--rossa-radius) 0 0;
  }
  #contenido_admin .reservas_boards .cab_uso_reserva .uso-info { flex-wrap: wrap; gap: 6px 10px; }
  #contenido_admin .reservas_boards .cab_uso_reserva .uso-title { white-space: normal; }

  /* Tarjeta de tarifa: título + campos en una fila que envuelve */
  #contenido_admin .reservas_boards tr.tr_usos_boards {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 10px 16px;
    margin-bottom: 6px;
    padding: 10px 12px 12px;
    background-color: rgba(32, 92, 104, .02);
    border-bottom: 1px solid var(--rossa-hairline-soft);
    border-radius: 0 0 var(--rossa-radius) var(--rossa-radius);
  }
  #contenido_admin .reservas_boards tr.tr_usos_boards > td {
    padding: 0 !important;      /* lydia: .reservas_boards tr td { padding: 5px 8px !important } */
    background-color: transparent !important;
    border: 0 !important;
  }
  /* Estancia mín/máx sin valor: no deja hueco */
  #contenido_admin .reservas_boards tr.tr_usos_boards > td:empty { display: none; }

  /* Título del plan de tarifas, a línea completa sobre los campos */
  #contenido_admin .reservas_boards tr.tr_usos_boards > td.cab_board_reserva {
    display: block;
    flex: 1 0 100%;
    margin-bottom: 2px;
    color: var(--rossa-ink);
    font-size: 13px;
  }
  #contenido_admin .reservas_boards tr.tr_usos_boards > td.cab_board_reserva strong { font-weight: 600; }

  /* Etiquetas por celda, en lugar del thead */
  #contenido_admin .reservas_boards tr.tr_usos_boards > td:not(.cab_board_reserva)::before {
    display: block;
    margin-bottom: 4px;
    color: var(--rossa-muted);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: .04em;
    line-height: 1.2;
    text-transform: uppercase;
    white-space: nowrap;
  }
  #contenido_admin .reservas_boards tr.tr_usos_boards > td.center::before          { content: "Min / máx."; }
  #contenido_admin .reservas_boards tr.tr_usos_boards > td.col_precio_hab::before  { content: "Precio / hab."; }
  #contenido_admin .reservas_boards tr.tr_usos_boards > td:has(select.num_habs)::before { content: "Nº hab."; }
  #contenido_admin .reservas_boards tr.tr_usos_boards > td.precios::before         { content: "Precio"; }

  /* la celda viene con text-align:center para el modo tabla */
  #contenido_admin .reservas_boards tr.tr_usos_boards > td.center {
    flex: 1 0 100%;
    text-align: left;
  }
  #contenido_admin .reservas_boards tr.tr_usos_boards > td.center .estminmax { display: inline-block; }

  /* Nº hab.: el desplegable se comprimía con la columna de 100px */
  #contenido_admin .reservas_boards tr.tr_usos_boards select.num_habs {
    width: auto;
    min-width: 68px;
  }

  /* Importe de la línea, al margen derecho de la tarjeta */
  #contenido_admin .reservas_boards tr.tr_usos_boards > td.precios {
    margin-left: auto;
    color: var(--rossa-ink);
    font-weight: 600;
    text-align: right;
  }

  /* Aire entre bloques de estancia */
  #contenido_admin .reservas_boards td.empty_separator {
    height: 10px;
    padding: 0 !important;
    line-height: 10px;
  }

  /* Pie: Total en una línea (concepto | importe) y botón a todo el ancho */
  #contenido_admin .reservas_boards tr:has(> td.total_reserva) {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
  }
  #contenido_admin .reservas_boards td.total_reserva,
  #contenido_admin .reservas_boards #precio_total_admin_res {
    font-size: 15px;
    font-weight: 600;
  }
}

/*===== 52. ADD_RESERVA MÓVIL — paso 2, estancias y servicios (table.reservas_lineas) =====*/
@media (max-width: 600px) {
  #contenido_admin table.reservas_lineas {
    display: block;
    width: 100%;
    box-sizing: border-box;
    border-spacing: 0;
    padding: 0;
  }
  #contenido_admin .reservas_lineas tbody,
  #contenido_admin .reservas_lineas tr { display: block; width: auto; }
  #contenido_admin .reservas_lineas td {
    display: block;
    box-sizing: border-box;
    width: auto;
  }
  #contenido_admin .reservas_lineas td[width] { width: auto; }
  /* Cabecera de columnas (se repite por línea): las etiquetas van por celda */
  #contenido_admin .reservas_lineas tr.cab { display: none; }

  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(select.estancias_select) {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 12px 12px;
  }
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(select.estancias_select) > td {
    width: 100%;
    padding: 0 !important;
    text-align: left !important;   /* las celdas vienen con align="center" */
    border: 0 !important;
  }
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(select.estancias_select) > td:first-child h3 { margin: 0 0 4px; }
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(select.estancias_select) > td.precios {
    color: var(--rossa-ink);
    font-weight: 600;
    white-space: nowrap;
  }
  /* Etiquetas de las celdas que dejaron de tener cabecera */
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(select.estancias_select) > td:not(:first-child)::before {
    display: block;
    margin-bottom: 4px;
    color: var(--rossa-muted);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: .04em;
    line-height: 1.2;
    text-transform: uppercase;
    white-space: nowrap;
  }
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(select.estancias_select) > td:has(> strong)::before { content: "Plan de tarifas"; }
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(select.estancias_select) > td:has(select.estancias_select)::before { content: "Estancia"; }
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(select.estancias_select) > td.precios::before { content: "Precio"; }

  /* Suplementos por huésped: concepto | importe */
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(td.suplemento-precio) {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 0 12px;
  }
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(td.suplemento-precio) > td { text-align: left !important; }
  #contenido_admin .reservas_lineas td.suplemento-precio { white-space: nowrap; font-weight: 600; }
  /* El fondo pasa a la fila: en cada celda, los bloques apilados se leen como pastillas sueltas. */
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(select.estancias_select),
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(td.suplemento-precio),
  #contenido_admin .reservas_lineas tr:has(> td.total_reserva) { background-color: rgba(32, 92, 104, .02); }
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(select.estancias_select) > td,
  #contenido_admin .reservas_lineas tr.tr_reservas_lineas:has(td.suplemento-precio) > td,
  #contenido_admin .reservas_lineas tr:has(> td.total_reserva) > td { background-color: transparent !important; }

  /* Bloque de huéspedes: ya es flex por dentro, solo necesita el ancho */
  #contenido_admin .reservas_lineas tr.guests-tr > td { width: auto; }
  #contenido_admin .reservas_lineas tr.guests-tr .guest-info-row {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }
  #contenido_admin .reservas_lineas tr.guests-tr .guest-info-col {
    width: 100%;
    text-align: left;
  }
  #contenido_admin .reservas_lineas tr.guests-tr .guest-type,
  #contenido_admin .reservas_lineas tr.guests-tr .guest-count {
    justify-content: flex-start;
  }
  #contenido_admin .reservas_lineas tr.guests-tr .guest-count .guest-input {
    width: 100%;
    max-width: none;
  }

  /* Pie: concepto a la izquierda, importe a la derecha */
  #contenido_admin .reservas_lineas tr:has(> td.total_reserva) {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 6px 10px;
    padding: 4px 12px;
  }
  #contenido_admin .reservas_lineas tr:has(> td.total_reserva) > td { text-align: left !important; }
  #contenido_admin .reservas_lineas td.total_reserva h3 { margin: 0; }
  #contenido_admin .reservas_lineas #precio_total_admin_res,
  #contenido_admin .reservas_lineas #precio_total_descontado_res,
  #contenido_admin .reservas_lineas td.precios_descuento {
    margin-left: auto;          /* el importe del descuento cae en su propia línea */
    text-align: right !important;
    white-space: nowrap;
    font-weight: 600;
  }
  #contenido_admin .reservas_lineas tr:has(> td.total_reserva) > td:has(.descuento-campos) { flex: 1 0 100%; border-bottom: 0 !important; }
}

@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  #contenido_admin .descuento-campos #cod-descuento-tipo {
    flex: 1 1 0; min-width: 0; width: auto; max-width: none;
  }
  #contenido_admin .descuento-campos__fila { display: flex; flex: 1 0 100%; gap: 8px 10px; }
  #contenido_admin .descuento-campos__fila #concepto_descuento {
    flex: 3 1 0; min-width: 0; width: auto; max-width: none;
  }
  #contenido_admin .descuento-campos__fila #cod-valor {
    flex: 1 1 0; min-width: 0; width: auto; max-width: none;
  }
  #contenido_admin .reservas_lineas tr:has(> td.total_reserva) > td:has(.descuento-campos) { border-bottom: 0 !important; }
}

@media (min-width: 481px) and (hover: none) and (pointer: coarse) {
  #contenido_admin .reservas_lineas tr.guests-tr .guest-info-row { flex-direction: row; }
  #contenido_admin .reservas_lineas tr.guests-tr .guest-info-col { flex: 1 1 40%; width: auto; min-width: 0; }
  #contenido_admin .reservas_lineas tr.guests-tr .guest-count .guest-input { width: 100%; max-width: none; }
}

/*===== 53. SCREEN: Reporte diario (module=reporte_diario) =====*/

#contenido_admin.rd-page #cont-config {
  margin: 0;
}


#contenido_admin.rd-page .rd-page-date {
  margin: 4px 0 0;
  color: var(--rossa-red-dark);
  font-size: 20px !important;
  font-weight: 400;
  text-align: left;
}

/* --- Selector de día: una sola línea, controles a la misma altura ---------- */
#contenido_admin.rd-page .rd-daybar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 10px;
  margin: 0px 0 0;
  padding: 14px 0;
  background: var(--rossa-white);
  border: 0;
  border-radius: var(--rossa-radius);
  box-sizing: border-box;
}

#contenido_admin.rd-page .rd-daybar .rossa-filters {
  margin: 0;
  padding: 0;
}
#contenido_admin.rd-page .rd-daybar input[type="datepicker"],
#contenido_admin.rd-page .rd-daybar input[type="date"] {
  width: auto;
  min-height: 38px;
  margin: 0;
  box-sizing: border-box;
}
/* §12 pone los submit de formulario en display:block con márgenes automáticos. */
#contenido_admin.rd-page .rd-daybar input[type="submit"].admin_boton {
  display: inline-flex;
  align-items: center;
  width: auto;
  min-height: 38px;
  margin: 0;
  padding: 8px 18px;
}
/* "Volver a hoy" era una banda teal a todo el ancho: acción secundaria. */
#contenido_admin.rd-page .rd-daybar .rd-today.admin_boton {
  display: inline-flex;
  align-items: center;
  width: auto;
  min-width: 0;
  min-height: 38px;
  margin: 0;
  padding: 8px 16px;
  background-color: var(--rossa-white) !important;
  border: 1px solid var(--rossa-border);
  box-shadow: none;
  color: var(--rossa-muted) !important;
  font-size: 12.5px;
  font-weight: 600;
  text-decoration: none;
}
#contenido_admin.rd-page .rd-daybar .rd-today.admin_boton:hover {
  border-color: var(--rossa-teal);
  color: var(--rossa-teal) !important;
}
/* el <br/> suelto tras el formulario ya no hace falta para separar */
#contenido_admin.rd-page #cont-config > br { display: none; }

/* --- Bloques de sección --------------------------------------------------- */
/* `.rossa-ctr-block` trae `max-width:560px` de ver_reserva. */
#contenido_admin.rd-page .rd-section {
  width: 100%;
  max-width: none;
  margin: 26px 0 0;
  padding: 0;
}
/* .rossa-ctr viene de ver_reserva (520px, centrado): aquí ocupa su bloque */
#contenido_admin.rd-page .rd-section .rossa-ctr {
  width: 100%;
  max-width: none;
  align-items: stretch;
  padding: 0;
  font-size: inherit;
}
/* "Limpieza" / "Comidas" llegan como <h1> y competían con el título de la pantalla. */
#contenido_admin.rd-page .rd-section .rossa-ctr > h1 {
  margin: 0 0 14px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
  text-align: left;
  text-transform: uppercase;
}
/* Títulos "Limpieza" / "Comidas" del reporte diario. */
#contenido_admin.rd-page .rd-section--limpieza .rossa-ctr > h1,
#contenido_admin.rd-page .rd-section--comidas .rossa-ctr > h1 {
  width: 100%;
  margin: 8px 0;
  padding: 15px 30px;
  border-top: 1px solid var(--rossa-stroke);
  border-bottom: 1px solid var(--rossa-stroke);
  color: #2c3e50;
  font-size: 21px;
  font-weight: 600;
  letter-spacing: normal;
  text-transform: uppercase;
  box-sizing: border-box;
}
#contenido_admin.rd-page .rd-section .rossa-ctr > h2 {
  margin: 30px 16px 8px;
  color: var(--rossa-teal);
  font-size: 13.5px;
  font-weight: 400;
  text-align: left;
}
/* Rótulo grande sobre "Reservas que hacen el Check-out/in hoy": Check-Outs en
   rojo (--rossa-red-dark), Check-Ins en verde de condición cumplida (--rossa-pag). */
#contenido_admin.rd-page .rd-section .rossa-ctr > h2 .rd-subtitle-tag {
  display: block;
  font-size: 20px;
  font-weight: 700;
}
#contenido_admin.rd-page .rd-section .rossa-ctr > h2 .rd-subtitle-tag--checkout {
  color: var(--rossa-red-dark);
}
#contenido_admin.rd-page .rd-section .rossa-ctr > h2 .rd-subtitle-tag--checkin {
  color: var(--rossa-pag);
}
#contenido_admin.rd-page .rd-section .rossa-ctr > br { display: none; }

/* --- Tablas del reporte --------------------------------------------------- */
/* el contenedor de ver_reserva scrollea con un min-width pensado para las tablas de la reserva */
#contenido_admin.rd-page .rossa-table__container {
  width: 100%;
  overflow-x: visible;
}
#contenido_admin.rd-page table.rossa-table {
  width: 100%;
  min-width: 0;
}
#contenido_admin.rd-page table.rossa-table th {
  color: var(--rossa-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-align: left;
  text-transform: uppercase;
  white-space: nowrap;
}
#contenido_admin.rd-page table.rossa-table td {
  color: var(--rossa-ink);
  font-size: 13.5px;
}
/* Día sin salidas / entradas / comidas: aviso en la propia tabla */
#contenido_admin.rd-page tr.rd-empty td {
  padding: 18px 10px;
  color: var(--rossa-muted);
  font-size: 13px;
  font-style: italic;
  text-align: center;
}
/* Total de comidas: cierra la tabla */
#contenido_admin.rd-page tr.rd-total td {
  border-top: 2px solid var(--rossa-border);
  color: var(--rossa-ink);
  font-weight: 700;
}

/*----- Escritorio ancho: los cuatro elementos son hermanos directos del .rossa-ctr y se colocan por celdas -----*/
@media (min-width: 1200px) {
  #contenido_admin.rd-page .rd-section--limpieza .rossa-ctr {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: 28px;
    align-items: start;
  }
  #contenido_admin.rd-page .rd-section--limpieza .rossa-ctr > h1 { grid-area: 1 / 1 / 2 / -1; }
  #contenido_admin.rd-page .rd-section--limpieza .rossa-ctr > h2:nth-of-type(1) { grid-area: 2 / 1 / 3 / 2; }
  #contenido_admin.rd-page .rd-section--limpieza .rossa-ctr > h2:nth-of-type(2) { grid-area: 2 / 2 / 3 / 3; }
  #contenido_admin.rd-page .rd-section--limpieza .rossa-ctr > .rossa-table__container:nth-of-type(1) { grid-area: 3 / 1 / 4 / 2; }
  #contenido_admin.rd-page .rd-section--limpieza .rossa-ctr > .rossa-table__container:nth-of-type(2) { grid-area: 3 / 2 / 4 / 3; }
}

/* --- Móvil ---------------------------------------------------------------- */
@media (max-width: 760px) {
  #contenido_admin.rd-page #cont-config h1 {
    border-bottom: 0;
    padding-bottom: 0;
    text-align: left;
  }
}
@media (max-width: 480px) {
  #contenido_admin.rd-page #cont-config h1,
  #contenido_admin.rd-page .rd-page-date {
    text-align: center;
  }
  #contenido_admin.rd-page .rd-daybar {
    align-items: stretch;
    flex-direction: column;
    padding: 12px 14px;
  }
  #contenido_admin.rd-page .rd-daybar input[type="datepicker"],
  #contenido_admin.rd-page .rd-daybar input[type="date"],
  #contenido_admin.rd-page .rd-daybar input[type="submit"].admin_boton,
  #contenido_admin.rd-page .rd-daybar .rd-today.admin_boton {
    width: 100%;
    justify-content: center;
    min-height: 44px;    /* objetivo táctil */
    box-sizing: border-box;
  }
}
@media (max-width: 760px) {
  #contenido_admin.rd-page table.rossa-table { min-width: 0; }
  #contenido_admin.rd-page table.rossa-table th {
    white-space: normal;
    font-size: 10px;
  }
  #contenido_admin.rd-page table.rossa-table th,
  #contenido_admin.rd-page table.rossa-table td { padding-left: 6px; padding-right: 6px; }
  #contenido_admin.rd-page table.rossa-table td { font-size: 12.5px; }
  #contenido_admin.rd-page .rd-section { margin-top: 20px; }
}

/*===== 54. SCREEN: Apertura por llamada (module=gsm_rtu5024) =====*/
/* El módulo trae el color de estado y el alto del contenedor como estilos inline desde PHP. */

#contenido_admin #cont-config:has(.gsm-filterbar) {
  max-width: 1180px;
  margin: 0 auto;
}
/* cabecera de la pantalla y rótulo de la configuración */
#contenido_admin #cont-config:has(.gsm-filterbar) > h2 {
  margin: 22px 0 0;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}
#contenido_admin #cont-config:has(.gsm-filterbar) > p:has(strong) {
  max-width: 1180px;
  box-sizing: border-box;
  margin: 20px 0;
  padding: 12px 16px;
  background: var(--rossa-tint);
  border-left: 3px solid var(--rossa-teal);
  border-radius: 0 var(--rossa-radius) var(--rossa-radius) 0;
  color: var(--rossa-ink);
  font-size: 12.5px;
  line-height: 1.5;
}

/* --- Tarjeta de configuración del dispositivo ----------------------------- */
#contenido_admin #gsm-config table.estandar {
  width: 100%;
  max-width: 1180px;
  margin: 12px 0 0 !important;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  border-collapse: separate;
  border-spacing: 0;
  padding: 6px 20px 18px;
  box-sizing: border-box;
}
#contenido_admin #gsm-config table.estandar .cab td {
  background: none !important;
  border: none !important;
  color: var(--rossa-ink) !important;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .04em;
  text-align: left !important;
  text-transform: uppercase;
  padding: 12px 8px 10px !important;
}
#contenido_admin #gsm-config table.estandar td {
  background-color: transparent !important;
  border: 0 !important;
  border-bottom: 1px solid var(--rossa-border) !important;
  padding: 9px 8px !important;
  text-align: left !important;
  vertical-align: middle;
  color: var(--rossa-ink);
  font-size: 13px;
}
#contenido_admin #gsm-config table.estandar tbody tr:last-child td { border-bottom: 0 !important; }
/* los campos traen size="50px" en el marcado: caja uniforme y no infinita */
#contenido_admin #gsm-config table.estandar input[type="text"] {
  width: 100%;
  max-width: 380px;
  min-height: 36px;
  box-sizing: border-box;
}
#contenido_admin #gsm-config input[type="submit"].admin_boton {
  display: inline-flex;
  align-items: center;
  width: auto;
  min-width: 132px;
  margin: 16px 0 0;
}

/* --- Fila de formularios de mantenimiento --------------------------------- */
#contenido_admin .gsm-forms {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
  max-width: 1180px;
  margin: 26px auto 0;
  align-items: start;
}
#contenido_admin .gsm-forms > form { margin: 0; }
#contenido_admin .gsm-forms table.estandar {
  width: auto !important;
  max-width: 100%;
  margin: 0 auto !important;
}
#contenido_admin .gsm-forms table.estandar .cab td { text-align: left !important; }
#contenido_admin .gsm-forms table.estandar tbody td,
#contenido_admin .gsm-forms table.estandar thead td:not(.cab td) { text-align: center !important; }
/* rótulos de columna del alta, sobre su campo */
#contenido_admin .gsm-forms #add-user table.estandar thead tr:not(.cab) td {
  color: var(--rossa-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  padding-bottom: 2px !important;
}
#contenido_admin .gsm-forms input[type="datetime-local"],
#contenido_admin .gsm-forms input[type="datepicker"],
#contenido_admin .gsm-forms input[type="date"],
#contenido_admin .gsm-forms input[type="time"] {
  min-width: 200px;
  min-height: 38px;
  padding: 6px 10px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-sizing: border-box;
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  font-size: 13px;
}
#contenido_admin .gsm-forms input[type="datetime-local"]:focus,
#contenido_admin .gsm-forms input[type="datepicker"]:focus,
#contenido_admin .gsm-forms input[type="date"]:focus,
#contenido_admin .gsm-forms input[type="time"]:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .12);
}
/* "Consultar reales" trae los rótulos dentro de la celda del campo */
#contenido_admin #inquiry-user-range table.estandar input[type="number"] {
  min-width: 150px;
  min-height: 38px;
  text-align: center;
}
/* dentro de cada tarjeta los campos se apilan a ancho completo */
#contenido_admin .gsm-forms table.estandar input[type="text"],
#contenido_admin .gsm-forms table.estandar input[type="number"],
#contenido_admin .gsm-forms table.estandar select {
  width: 100%;
  min-height: 36px;
  box-sizing: border-box;
}
#contenido_admin .gsm-forms table.estandar input[type="submit"].admin_boton,
#contenido_admin .gsm-forms input[type="submit"].admin_boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  min-width: 120px;
  margin: 10px 0 0;
}
/* "Añadir usuario" mantiene sus 5 columnas: el thead va aparte y apilando se perdía la correspondencia. */
#contenido_admin .gsm-forms > #add-user       { grid-column: 1 / -1; order: 1; }
#contenido_admin .gsm-forms > #del-by-id      { order: 2; }
#contenido_admin .gsm-forms > #inquiry-user-range { order: 3; }
#contenido_admin .gsm-forms #add-user table.estandar td { white-space: nowrap; }
#contenido_admin .gsm-forms #add-user table.estandar input[type="text"],
#contenido_admin .gsm-forms #add-user table.estandar input[type="number"],
#contenido_admin .gsm-forms #add-user table.estandar input[type="datetime-local"],
#contenido_admin .gsm-forms #add-user table.estandar select { min-width: 130px; }
#contenido_admin .gsm-forms #inquiry-user-range table.estandar td { padding: 6px 8px !important; }

/* --- Barra de leyenda + filtro -------------------------------------------- */
#contenido_admin .gsm-filterbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 20px;
  max-width: 1180px;
  margin: 0 0 20px;
  padding: 12px 16px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-sizing: border-box;
}
#contenido_admin .gsm-legend {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 28px;
}
#contenido_admin .gsm-legend__title,
#contenido_admin .gsm-search__label {
  color: var(--rossa-muted);
  text-transform: uppercase;
  letter-spacing: .04em;
  font-size: 11px;
  font-weight: 700;
}
#contenido_admin .gsm-legend__item {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin: 0;
  color: var(--rossa-ink);
  font-size: 12.5px;
  cursor: pointer;
}
#contenido_admin .gsm-legend__item input[type="checkbox"] {
  width: 15px;
  height: 15px;
  margin: 0;
  accent-color: var(--rossa-teal);
  cursor: pointer;
}
/* el punto de color liga cada casilla con el acento de su tarjeta */
#contenido_admin .gsm-legend__item span::before {
  content: "";
  display: inline-block;
  width: 9px;
  height: 9px;
  margin-right: 6px;
  border-radius: 50%;
  vertical-align: 0;
}
#contenido_admin .gsm-legend__item--actual span::before    { background: var(--rossa-green); }
#contenido_admin .gsm-legend__item--pendiente span::before { background: var(--rossa-coral); }
#contenido_admin .gsm-legend__item--pasado span::before    { background: var(--rossa-border); }
#contenido_admin .gsm-search {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
#contenido_admin .gsm-search select,
#contenido_admin .gsm-search input[type="text"],
#contenido_admin .gsm-search input[type="datepicker"],
#contenido_admin .gsm-search input[type="date"] {
  width: auto;
  min-height: 34px;
  margin: 0;
  box-sizing: border-box;
}
#contenido_admin .gsm-search input[type="text"] { min-width: 170px; }

/*----- Contenedor de columnas: el alto fijo con scroll interno escondía registros -----*/
#contenido_admin .caja_apertura_por_llamada {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 22px 26px;
  height: auto !important;
  /* Este bloque y .gsm-forms cuelgan de #contenido_admin, no de #cont-config, que es quien centra el resto. */
  max-width: 1180px;
  margin-left: auto;
  margin-right: auto;
  overflow: visible !important;
  align-items: start;
}
#contenido_admin .numeros_custom,
#contenido_admin .numeros_reserva {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
  margin: 0 !important;
}
/* rótulos de columna: llegan como <h1> con width y center inline */
#contenido_admin .numeros_custom > h1,
#contenido_admin .numeros_reserva > h1 {
  width: auto !important;
  margin: 0 0 4px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
  text-align: left !important;
  text-transform: uppercase;
}

/* --- Tarjeta de número ---------------------------------------------------- */
#contenido_admin .cuadro_gsm {
  position: relative;
  /* lydia fija `width:420px; height:106.5px` y esa altura recortaba el número y el botón */
  width: auto;
  height: auto;
  margin: 0;
  padding: 12px 14px 12px 16px;
  background-color: var(--rossa-white) !important;   /* vence el color inline */
  border: 1px solid var(--rossa-border);
  border-left: 3px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-sizing: border-box;
  color: var(--rossa-ink);
  font-size: 13px;
  line-height: 1.5;
}
/* El texto del estado lo pone el CSS porque el marcado solo trae la clase. */
#contenido_admin .cuadro_gsm::before {
  display: inline-block;
  align-self: flex-start;   /* el contenedor es flex column: sin esto se estira */
  margin-bottom: 8px;
  padding: 2px 9px;
  border-radius: var(--rossa-radius-pill);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}
#contenido_admin .cuadro_gsm.num_actual { border-left-color: var(--rossa-green); }
#contenido_admin .cuadro_gsm.num_actual::before {
  content: "Con permiso";
  background: rgba(25, 172, 138, .12);
  color: #0f7a62;
}
#contenido_admin .cuadro_gsm.num_pendiente { border-left-color: var(--rossa-coral); }
#contenido_admin .cuadro_gsm.num_pendiente::before {
  content: "Pendiente";
  background: var(--rossa-salmon);
  color: #b8431f;
}
#contenido_admin .cuadro_gsm.num_pasado { border-left-color: var(--rossa-border); }
#contenido_admin .cuadro_gsm.num_pasado::before {
  content: "Caducado";
  background: var(--rossa-surface);
  color: var(--rossa-muted);
}
/* los datos, en filas: los spans traen float inline */
#contenido_admin .cuadro_gsm > span {
  display: block;
  float: none !important;
  text-align: left !important;
}
#contenido_admin .cuadro_gsm hr {
  margin: 8px 0;
  border: 0;
  border-top: 1px solid var(--rossa-border);
}
#contenido_admin .cuadro_gsm br { display: none; }
#contenido_admin .cuadro_gsm .nom_gsm { font-size: 14px; }
#contenido_admin .cuadro_gsm .num_gsm { font-variant-numeric: tabular-nums; }
#contenido_admin .cuadro_gsm .campo-nombre,
#contenido_admin .cuadro_gsm .id_gsm { color: var(--rossa-muted); }
#contenido_admin .cuadro_gsm .id_gsm { font-weight: 700; }
/* icono de renombrar: no admite clases nuevas (las lee el JS), solo caja */
#contenido_admin .cuadro_gsm img[name="boton_cambiar_nombre_gsm"] {
  vertical-align: -3px;
  cursor: pointer;
  opacity: .55;
}
#contenido_admin .cuadro_gsm img[name="boton_cambiar_nombre_gsm"]:hover { opacity: 1; }
/* formulario de renombrado, en línea */
#contenido_admin .cuadro_gsm .change_name_form input[type="text"] {
  width: 150px;
  min-height: 30px;
  padding: 4px 8px;
  box-sizing: border-box;
}
#contenido_admin .cuadro_gsm .change_name_form .admin_boton {
  display: inline-flex;
  align-items: center;
  width: auto;
  min-width: 0;
  min-height: 30px;
  margin: 0 0 0 4px;
  padding: 4px 12px;
  font-size: 12px;
}
/* "Eliminar": el marcado trae un div vacío dentro del enlace. */
#contenido_admin .cuadro_gsm .del-extra-line {
  display: inline-block;
  width: auto !important;
  height: auto !important;
  padding: 3px 10px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  color: var(--rossa-muted);
  font-size: 11.5px;
  font-weight: 600;
}
#contenido_admin .cuadro_gsm .del-extra-line::before { content: "Quitar"; }
/* lydia le pone una X blanca sobre cuadro rojo con `::after`: sobra al ser texto */
#contenido_admin .cuadro_gsm .del-extra-line::after { content: none; }
#contenido_admin .cuadro_gsm a:hover .del-extra-line {
  background: var(--rossa-salmon);
  border-color: var(--rossa-red);
  color: var(--rossa-red);
}

/*----- Orden interno de la tarjeta: el marcado son spans sueltos con float, se identifican por lo que contienen -----*/
#contenido_admin .cuadro_gsm {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
#contenido_admin .cuadro_gsm .gsm-name-row,
#contenido_admin .cuadro_gsm > span:first-of-type { padding-right: 62px; }
#contenido_admin .cuadro_gsm > span:has(.id_gsm) {
  position: absolute;
  top: 12px;
  right: 14px;
  font-size: 11.5px;
}
#contenido_admin .cuadro_gsm > span:has(.num_gsm) { order: 3; }
#contenido_admin .cuadro_gsm > span:has(.fec_ini_gsm) { order: 4; }
#contenido_admin .cuadro_gsm > span:has(.fec_fin_gsm) { order: 5; }
#contenido_admin .cuadro_gsm > span:has(.del-extra-line) {
  order: 6;
  align-self: flex-end;
  margin-top: 8px;
  color: transparent;          /* oculta el texto "Eliminar:" del marcado */
  font-size: 0;
}
#contenido_admin .cuadro_gsm > span:has(.fec_ini_gsm),
#contenido_admin .cuadro_gsm > span:has(.fec_fin_gsm) {
  color: var(--rossa-muted);
  font-size: 12px;
}

/* --- Formularios inferiores (eliminar por id / añadir / consultar) --------- */
#contenido_admin #del-by-id table.estandar,
#contenido_admin #add-user table.estandar,
#contenido_admin #inquiry-user-range table.estandar {
  width: 100%;
  max-width: 1180px;
  margin: 0 0 22px !important;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  border-collapse: separate;
  border-spacing: 0;
  padding: 6px 18px 16px;
  box-sizing: border-box;
}
#contenido_admin #del-by-id table.estandar .cab td,
#contenido_admin #add-user table.estandar .cab td,
#contenido_admin #inquiry-user-range table.estandar .cab td {
  background: none !important;
  border: none !important;
  color: var(--rossa-ink) !important;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .04em;
  text-align: left !important;
  text-transform: uppercase;
  padding: 12px 8px 10px !important;
}
#contenido_admin #del-by-id table.estandar td,
#contenido_admin #add-user table.estandar td,
#contenido_admin #inquiry-user-range table.estandar td {
  background-color: transparent !important;
  border: 0 !important;
  padding: 6px 8px !important;
  text-align: left !important;
  vertical-align: middle;
}

/* --- Móvil ---------------------------------------------------------------- */
@media (max-width: 900px) {
  #contenido_admin .caja_apertura_por_llamada { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
  #contenido_admin .cuadro_gsm { padding: 12px 12px 12px 14px; }
  /* §21 baja los h1 de contenido a 20px con !important y estos rótulos de columna llegan como h1 */
  #contenido_admin .numeros_custom > h1,
  #contenido_admin .numeros_reserva > h1 { font-size: 12.5px !important; }
  #contenido_admin .gsm-forms { grid-template-columns: minmax(0, 1fr); }
  #contenido_admin .gsm-forms > #add-user { overflow-x: visible; }
  #contenido_admin .gsm-forms #add-user table.estandar { min-width: 0; }
  #contenido_admin .gsm-forms table.estandar,
  #contenido_admin .gsm-forms table.estandar tbody,
  #contenido_admin .gsm-forms table.estandar tr,
  #contenido_admin .gsm-forms table.estandar td {
    display: block;
    width: auto !important;
    box-sizing: border-box;
  }
  #contenido_admin .gsm-forms table.estandar thead { display: block; }
  /* la 1ª .cab es el título de la tarjeta; la 2ª son los rótulos de columna */
  #contenido_admin .gsm-forms #add-user table.estandar thead tr.cab + tr.cab { display: none; }
  #contenido_admin .gsm-forms table.estandar td {
    padding: 4px 8px !important;
    text-align: left !important;
    white-space: normal !important;
  }
  /* Las etiquetas se cuelgan del campo de cada celda y no de su posición: hay un hidden suelto en el <tr> y una columna que oculta el JS, así que nth-child no cuadra. */
  #contenido_admin .gsm-forms #add-user tbody td:has(select),
  #contenido_admin .gsm-forms #add-user tbody td:has(input:not([type="hidden"])):not(:has(input[type="submit"]))::before,
  #contenido_admin .gsm-forms #add-user tbody td:has(select)::before {
    display: block;
    margin: 8px 0 4px;
    color: var(--rossa-muted);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
  }
  #contenido_admin .gsm-forms #add-user tbody td:has(#user-id)::before    { content: "ID"; }
  #contenido_admin .gsm-forms #add-user tbody td:has(#user-name)::before  { content: "Nombre (opcional)"; }
  #contenido_admin .gsm-forms #add-user tbody td#res-id::before           { content: "ID reserva (opcional)"; }
  #contenido_admin .gsm-forms #add-user tbody td:has(#user-phone)::before { content: "Número de teléfono"; }
  #contenido_admin .gsm-forms #add-user tbody td:has(#user-from)::before  { content: "Desde (opcional)"; }
  #contenido_admin .gsm-forms #add-user tbody td:has(#user-to)::before    { content: "Hasta (opcional)"; }
  /* la celda del botón no lleva etiqueta */
  #contenido_admin .gsm-forms #add-user tbody td:has(input[type="submit"])::before { content: none; }
  /* controles a ancho completo y con objetivo táctil */
  #contenido_admin .gsm-forms table.estandar input[type="text"],
  #contenido_admin .gsm-forms table.estandar input[type="number"],
  #contenido_admin .gsm-forms table.estandar input[type="datetime-local"],
  #contenido_admin .gsm-forms table.estandar select {
    width: 100% !important;
    min-width: 0 !important;
    /* §18 limita los text/number/select a 320px y se quedaban cortos frente a los campos de fecha */
    max-width: 100% !important;
    min-height: 44px;
  }
  #contenido_admin .gsm-forms table.estandar input[type="submit"].admin_boton {
    width: 100%;
    min-height: 44px;
    margin-top: 14px;
  }
  /* "Consultar reales" trae sus dos campos en celdas con el rótulo dentro */
  #contenido_admin #inquiry-user-range table.estandar input[type="number"] { text-align: left; }
  #contenido_admin .gsm-filterbar { flex-direction: column; align-items: stretch; }
  #contenido_admin .gsm-search { flex-wrap: wrap; }
  #contenido_admin .gsm-search input[type="text"] { flex: 1 1 auto; min-width: 0; }
  #contenido_admin .cuadro_gsm .change_name_form input[type="text"] { width: 100%; }
  #contenido_admin #del-by-id table.estandar,
  #contenido_admin #add-user table.estandar,
  #contenido_admin #inquiry-user-range table.estandar { padding: 6px 12px 14px; }
}

/*===== 55. SCREEN: Gestión de reservas — vista de tarjetas (module=gestor_pedidos) =====*/
/* vistas_reservas.php pinta cada reserva dos veces (tarjetas y tabla) y oculta una con `.rossa-none`. */

/* Conmutador Tarjetas/Tabla oculto en gestor_pedidos (a petición). */
#contenido_admin .filter-typeviews { display: none; }

#contenido_admin .rossa__typeview {
  width: fit-content;
  gap: 2px;
  padding: 3px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
}
#contenido_admin .rossa__typeview .rossa__view {
  align-items: center;
  gap: 6px;
  padding: 6px 14px;
  background: transparent;
  border-radius: var(--rossa-radius-pill);
  color: var(--rossa-muted);
  font: 600 12.5px/1 var(--rossa-font);
  opacity: 1;
}
/* Se oculta el icono del marcado: al convertirlo a máscara (.rossa-i) se colaba un SEGUNDO icono al lado. */
#contenido_admin .rossa__typeview .rossa__view img,
#contenido_admin .rossa__typeview .rossa__view .rossa-i,
#contenido_admin .rossa__typeview .rossa__view > i { display: none; }
#contenido_admin .rossa__typeview .rossa__view::before {
  content: "";
  width: 16px;
  height: 16px;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;         mask-repeat: no-repeat;
  -webkit-mask-position: center;          mask-position: center;
  -webkit-mask-size: contain;             mask-size: contain;
}
#contenido_admin .rossa__typeview .rossa__view::after { font: inherit; }
#contenido_admin .rossa__typeview .rossa__view[data-view="0"]::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/id-card.svg");
  mask-image: url("https://cdn.rossa.app/icons/id-card.svg");
}
#contenido_admin .rossa__typeview .rossa__view[data-view="0"]::after { content: "Tarjetas"; }
#contenido_admin .rossa__typeview .rossa__view[data-view="1"]::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/table-properties.svg");
  mask-image: url("https://cdn.rossa.app/icons/table-properties.svg");
}
#contenido_admin .rossa__typeview .rossa__view[data-view="1"]::after { content: "Tabla"; }
#contenido_admin .rossa__typeview .rossa__view:hover { color: var(--rossa-ink); }
#contenido_admin .rossa__typeview .rossa__typeview-current {
  background: var(--rossa-tint);
  color: var(--rossa-teal);
}

/* Sin !important para que `.rossa-none` siga pudiendo ocultarla. */
#contenido_admin .rossa-card__container {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(272px, 1fr));
  gap: 16px;
  align-items: stretch;
  justify-content: start;
  margin-top: 4px;
}

/* --- La ficha -------------------------------------------------------------- */
#contenido_admin .rossa-card__container .rossa-bkg {
  width: auto;
  position: relative;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  color: var(--rossa-ink);
  font-size: 13px;
}
/* cabecera: dentro del borde, sin pico ni pestaña */
#contenido_admin .rossa-bkg .rossa-bkg__header {
  height: auto;
  padding: 12px 14px 0;
  box-sizing: border-box;
}
#contenido_admin .rossa-bkg .rossa-bkg__content-header { width: 100%; }
#contenido_admin .rossa-bkg .rossa-bkg__info {
  gap: 18px;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
  overflow: visible;
}
#contenido_admin .rossa-bkg .rossa-bkg__content {
  height: auto;
  padding: 0;
  margin: 0;
  background-color: transparent;
  flex-direction: row;
  align-items: baseline;
  gap: 6px;
  text-align: left;
}
#contenido_admin .rossa-bkg .rossa-bkg__title {
  color: var(--rossa-muted);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}
#contenido_admin .rossa-bkg .rossa-bkg__id > span:last-child,
#contenido_admin .rossa-bkg .rossa-bkg__paytry > span:last-child {
  font-weight: 700;
  font-size: 13.5px;
}
#contenido_admin .rossa-bkg .rossa-bkg__triangle,
#contenido_admin .rossa-bkg .rossa-bkg__child-triangle { display: none; }

/* cuerpo: el borde y el radio ya los pone la ficha */
#contenido_admin .rossa-bkg .rossa-bkg__body {
  position: static;              /* el badge de pago se ancla a la ficha */
  justify-content: flex-start;
  align-items: stretch;
  padding: 6px 14px 14px;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-sizing: border-box;
}

/*----- Estado del pago: el disco de color y su punto coral son §46 / pagina_inicio -----*/
#contenido_admin .rossa-bkg .rossa-bkg__status {
  position: absolute;
  top: 12px;
  right: 14px;
  width: auto;
  height: auto;
}
#contenido_admin .rossa-bkg .rossa-bkg__status .rossa-card-tag {
  width: 30px;
  height: 30px;
  font-size: 11.5px;
}
#contenido_admin .rossa-bkg .rossa-bkg__status .rossa-card-tag-pagado    { background-color: var(--rossa-green); }
#contenido_admin .rossa-bkg .rossa-bkg__status .rossa-card-tag-no-pagado { background-color: var(--rossa-coral); }
#contenido_admin .rossa-bkg .rossa-bkg__status .rossa-card-tag-normal    { background-color: var(--rossa-ink); }
/* hueco del badge para que no pise el Id. Pago */
#contenido_admin .rossa-bkg .rossa-bkg__header { padding-right: 54px; }

/* Checkbox de selección (module=fcts02) */
#contenido_admin .rossa-bkg > .rossa-bkg__select {
  position: absolute;
  top: 12px;
  left: 14px;
  width: 18px;
  height: 18px;
  border-radius: 4px;
  accent-color: var(--rossa-petrol);
  margin: 0;
  z-index: 1;
  cursor: pointer;
}
#contenido_admin .rossa-bkg:has(> .rossa-bkg__select) .rossa-bkg__header { padding-left: 34px; }
#contenido_admin .rossa-bkg:has(> .rossa-bkg__select) .rossa-bkg__info { margin-left: 10px; }

/* El texto que emite getStatusTxt() se conserva en el DOM (lectores de pantalla) pero no se pinta. */
#contenido_admin .booking-status {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  min-width: 0;
  padding: 0;
  border-radius: 0;
  background: none;
  font: 600 0/1 var(--rossa-font);
  white-space: nowrap;
}
/* Cada color es el `stroke` del SVG: la mascara descarta el del fichero. */
#contenido_admin .booking-status.status-confirmed { color: #76bc21; }
#contenido_admin .booking-status.status-cancelled { color: #740026; }
#contenido_admin .booking-status.status-noshow    { color: #03424e; }
#contenido_admin .booking-status.status-deleted   { color: #c1003f; }
/* Sin icono que lo represente, el desconocido se queda con su etiqueta. */
#contenido_admin .booking-status.status-unknown   { color: var(--rossa-muted); font-size: 12px; }

/* Icono de estado como mascara (§32) para que tome el color de cada estado. */
#contenido_admin .booking-status::before {
  content: "";
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;   mask-repeat: no-repeat;
  -webkit-mask-position: center;    mask-position: center;
  -webkit-mask-size: contain;       mask-size: contain;
}
#contenido_admin .booking-status.status-confirmed::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/Reserva-confirmada.svg");
  mask-image: url("https://cdn.rossa.app/icons/Reserva-confirmada.svg");
}
#contenido_admin .booking-status.status-cancelled::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/Reserva-cancelada.svg");
  mask-image: url("https://cdn.rossa.app/icons/Reserva-cancelada.svg");
}
#contenido_admin .booking-status.status-noshow::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/Reserva-no-show.svg");
  mask-image: url("https://cdn.rossa.app/icons/Reserva-no-show.svg");
}
#contenido_admin .booking-status.status-deleted::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/Reserva-eliminada.svg");
  mask-image: url("https://cdn.rossa.app/icons/Reserva-eliminada.svg");
}
#contenido_admin .booking-status.status-unknown::before { content: none; }

/* --- Cliente --------------------------------------------------------------- */
#contenido_admin .rossa-bkg .rossa-bkg__client {
  width: auto;
  height: auto;
  gap: 1px;
  padding: 8px 0 10px;
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-bkg .rossa-bkg__client a {
  color: var(--rossa-cyan);
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
}
#contenido_admin .rossa-bkg .rossa-bkg__client a:hover { text-decoration: underline; }

/*----- Datos de la reserva (tabla interna): los <span> heredaban monospace de una regla legacy -----*/
#contenido_admin .rossa-bkg table.rossa-table--bkg {
  margin: 0;
  border-collapse: collapse;
  font-size: 12.5px;
}
#contenido_admin .rossa-bkg table.rossa-table--bkg tr { background-color: transparent; }
/* el zebra de §18 (.rossa-table--bkg even td) partía cada dato en una banda de color */
#contenido_admin .rossa-bkg table.rossa-table--bkg th,
#contenido_admin .rossa-bkg table.rossa-table--bkg td {
  background-color: transparent;
  border: 0;
  border-bottom: 1px solid var(--rossa-border);
  padding: 8px 0;
  vertical-align: middle;
}
#contenido_admin .rossa-bkg table.rossa-table--bkg tr:last-child th,
#contenido_admin .rossa-bkg table.rossa-table--bkg tr:last-child td { border-bottom: 0; }
#contenido_admin .rossa-bkg table.rossa-table--bkg th {
  width: 40%;
  color: var(--rossa-muted);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .04em;
  line-height: 1.35;
  text-align: left;
  text-transform: uppercase;
}
#contenido_admin .rossa-bkg table.rossa-table--bkg td {
  color: var(--rossa-ink);
  text-align: right;
}
#contenido_admin .rossa-bkg table.rossa-table--bkg td span,
#contenido_admin .rossa-bkg table.rossa-table--bkg td { font-family: var(--rossa-font); }
#contenido_admin .rossa-bkg table.rossa-table--bkg td { font-variant-numeric: tabular-nums; }
/* precio: última fila, es el dato que se busca de un vistazo */
#contenido_admin .rossa-bkg table.rossa-table--bkg tr:last-child td {
  color: var(--rossa-teal);
  font-size: 14px;
  font-weight: 700;
}
/* iconos de origen (42px en el marcado) y chips de habitación, a la derecha */
#contenido_admin .rossa-bkg .origen_res img {
  width: 26px;
  height: 26px;
  vertical-align: middle;
}
#contenido_admin .rossa-bkg .rossa-box-habs {
  max-width: none;
  gap: 4px;
  justify-content: flex-end;
}

/* --- Acciones -------------------------------------------------------------- */
#contenido_admin .rossa-bkg .rossa-bkg__buttons {
  gap: 8px;
  justify-content: flex-start;
  flex-wrap: wrap;
  padding-top: 12px;
}
#contenido_admin .rossa-bkg .rossa-bkg__buttons > div {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
/* El !important es para vencer a §23, que declara `--negative` con !important. */
#contenido_admin .rossa-bkg .rossa-bkg__buttons .rossa-btn--border {
  background: var(--rossa-teal) !important;
  border: 1px solid var(--rossa-teal) !important;
  color: var(--rossa-white) !important;
}
#contenido_admin .rossa-bkg .rossa-bkg__buttons .rossa-btn--border:hover { background: #00474d !important; }
#contenido_admin .rossa-bkg .rossa-bkg__buttons .rossa-btn--negative {
  background: var(--rossa-white) !important;
  border: 1px solid var(--rossa-border) !important;
  color: var(--rossa-ink) !important;
}
#contenido_admin .rossa-bkg .rossa-bkg__buttons .rossa-btn--negative:hover { background: var(--rossa-surface) !important; }

/* El marcado repite la ficha vacía con su cabecera: ocupa la fila entera. */
#contenido_admin .rossa-bkg:has(.rossa-bkg-noreserva) { grid-column: 1 / -1; }
#contenido_admin .rossa-bkg:has(.rossa-bkg-noreserva) .rossa-bkg__header { display: none; }
#contenido_admin .rossa-bkg .rossa-bkg-noreserva {
  margin: 0;
  padding: 34px 0;
  color: var(--rossa-muted);
  font-size: 13.5px;
  font-weight: 600;
}

/*----- Desplegable de filtros (solo móvil, ≤600px por gestion_reservas.css) -----*/
#contenido_admin #filter-dropdown {
  margin: 10px;
  padding: 11px 14px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  color: var(--rossa-ink);
  font-size: 13px;
  font-weight: 600;
}
#contenido_admin #filter-dropdown:active { background-color: var(--rossa-tint); }
#contenido_admin #filter-dropdown i { color: var(--rossa-teal); }
/* El toggle del dropdown deja un display:none inline en #rossa-filters; al volver a PC (sin recargar) se quedaba oculto. */
@media (min-width: 601px) {
  #contenido_admin #rossa-filters { display: flex !important; }
}

/* --- Móvil ---------------------------------------------------------------- */
@media (max-width: 700px) {
  #contenido_admin .rossa-card__container { grid-template-columns: minmax(0, 1fr); }
  /* con 5 pestañas la última salta de línea: la fila incompleta se alinea con las demás */
  #contenido_admin .rossa-slider .rossa-slider__tab-box { justify-content: flex-start; }
  #contenido_admin .rossa-slider .rossa-slider__tab-box .rossa-slider__tab { flex: 0 0 auto; }
  /* acciones a ancho completo: son el objetivo táctil de la ficha */
  #contenido_admin .rossa-bkg .rossa-bkg__buttons,
  #contenido_admin .rossa-bkg .rossa-bkg__buttons > div { width: 100%; }
  #contenido_admin .rossa-bkg .rossa-bkg__buttons .rossa-btn,
  #contenido_admin .rossa-bkg .rossa-bkg__buttons .admin_boton {
    flex: 1 1 auto;
    min-height: 40px;
    text-align: center;
  }
  #contenido_admin .rossa__typeview { width: 100%; }
  #contenido_admin .rossa__typeview .rossa__view { flex: 1 1 0; justify-content: center; }
  #contenido_admin .rossa-content-tabs { margin-bottom: 4em; }
}

/*===== 56. DIÁLOGO DE CONFIRMACIÓN (jQuery UI dialog: eliminar reserva) =====*/
/* Estos botones no van en el `.ui-dialog-buttonpane`: están en el contenido y el JS les aplica `.button()`. */

/* --- Marco, velo y aspa --------------------------------------------------- */
.ui-widget-overlay {
  background: var(--rossa-ink);
  opacity: .45;
}
.ui-dialog .ui-dialog-titlebar { padding: 13px 16px; }
.ui-dialog .ui-dialog-title {
  color: var(--rossa-ink);
  font-size: 14.5px;
  font-weight: 700;
}
/* la aspa venía del sprite del tema: pastilla discreta con la X del tipo */
.ui-dialog .ui-dialog-titlebar-close {
  width: 26px;
  height: 26px;
  margin-top: -13px;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 50%;
}
.ui-dialog .ui-dialog-titlebar-close:hover { background: var(--rossa-surface); }
.ui-dialog .ui-dialog-titlebar-close .ui-icon {
  width: 26px;
  height: 26px;
  margin: 0;
  background: none;                     /* fuera el sprite */
  text-indent: 0;
  overflow: hidden;
  color: transparent;                   /* oculta el texto "close" del marcado */
  font-size: 0;
}
.ui-dialog .ui-dialog-titlebar-close .ui-icon::before {
  content: "✕";
  display: block;
  color: var(--rossa-muted);
  font-size: 14px;
  line-height: 26px;
  text-align: center;
}
.ui-dialog .ui-dialog-titlebar-close:hover .ui-icon::before { color: var(--rossa-ink); }

/*----- Contenido: el alto en línea (dialog({height:300})) dejaba aire muerto -----*/
.ui-dialog .ui-dialog-content {
  height: auto !important;
  max-height: 72vh;
  padding: 16px;
  color: var(--rossa-ink);
  font-size: 13.5px;
  line-height: 1.5;
}
.ui-dialog .ui-dialog-content > p { margin: 0 0 8px; }
/* botones sueltos dentro del contenido: a la escala del texto, no a 1.1em */
.ui-dialog .ui-dialog-content button.admin_boton,
.ui-dialog .ui-dialog-content button.ui-button {
  font-size: 13px;
  font-weight: 600;
  padding: 9px 16px;
}

/*----- Par de confirmación: los <p> ocupan la fila completa y el <br> deja de contar -----*/
#del-dialog.ui-dialog-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 10px;
  align-content: start;
}
#del-dialog.ui-dialog-content > p { grid-column: 1 / -1; }
#del-dialog.ui-dialog-content > br { display: none; }
#del-dialog.ui-dialog-content > button {
  width: 100%;
  margin: 6px 0 0;
  box-sizing: border-box;
  text-align: center;
}
/* el diálogo enfoca su primer botón al abrirse y el anillo del navegador salía negro sobre el destructivo */
#del-dialog.ui-dialog-content > button:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(234, 92, 54, .22);
}
#del-dialog #cancel-del:focus { box-shadow: 0 0 0 3px rgba(0, 94, 102, .18); }

/* la aclaración ("eliminar no es lo mismo que cancelar") es contexto, no orden */
#del-dialog.ui-dialog-content > p:last-of-type {
  color: var(--rossa-muted);
  font-size: 12.5px;
}
/* acción destructiva: los ids ganan a .ui-widget-content .ui-state-default */
#del-dialog #eliminar {
  background: var(--rossa-salmon);
  border: 1px solid #f6d6cd;
  color: var(--rossa-coral);
}
#del-dialog #eliminar:hover { background: #fbe0d8; }
/* vuelta atrás: secundario de contorno */
#del-dialog #cancel-del {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
}
#del-dialog #cancel-del:hover { background: var(--rossa-surface); }

/* --- Móvil ---------------------------------------------------------------- */
@media (max-width: 700px) {
  /* el ancho lo fija el JS (width:450) y desbordaba la pantalla */
  .ui-dialog {
    max-width: calc(100vw - 24px);
    left: 12px !important;
  }
  #del-dialog.ui-dialog-content { grid-template-columns: minmax(0, 1fr); }
}

/*===== 57. FILTER BAR — LAYOUT COMPARTIDO (.rossa-filters) =====*/
/* El estilo va en la CLASE: los selectores con ids concretos son de gestor_pedidos y en otras pantallas no encuentran nada. */
#contenido_admin .rossa-filters {
  gap: 16px;
  margin: 18px 0 18px;
  padding: 0;
  background: var(--rossa-white);
  border: 0;
  border-radius: var(--rossa-radius);
  box-sizing: border-box;
  /* con `end`, el bloque de fechas (dos líneas) dejaba los rótulos de su fila a distinta altura */
  align-items: flex-start;
}
/* flex-grow 0: con grow, un filtro solo en su fila estiraba su control a todo el ancho del panel. */
#contenido_admin .rossa-filters .filter-container {
  flex: 0 1 210px;
  min-width: 0;
  gap: 5px;
}
#contenido_admin .rossa-filters .filter-container:has(> .filter-container-dates) { flex: 0 0 100%; }
/* Filtro de fecha simple sin selects de tipo/operador  */
#contenido_admin .rossa-filters .filter-container:has(> .filter-box-dates) { flex: 0 1 436px; }

/* rótulos */
#contenido_admin .rossa-filters .filter-title {
  padding-left: 0;
  color: var(--rossa-teal);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  line-height: 1.2;
  text-transform: capitalize;
}

#contenido_admin .rossa-filters select.rossa-input,
#contenido_admin .rossa-filters input.rossa-input,
#contenido_admin .rv-codes__select,
#contenido_admin .rv-dialog__select,
#contenido_admin input.rv-hour-input {
  min-height: 36px;
  padding: 6px 10px;
  box-sizing: border-box;
  font-size: 13px;
  border: 1px solid var(--rossa-stroke);
  /* §12 no incluye `input[type=time]`, así que el radio no le llegaba. */
  border-radius: var(--rossa-radius);
}
/* El ancho es cosa de los filtros; el aspecto de arriba lo comparten. */
#contenido_admin .rossa-filters select.rossa-input,
#contenido_admin .rossa-filters input.rossa-input {
  width: 100%;
  min-width: 0;
  max-width: none;
}

#contenido_admin .rossa-filters #select-dates { text-transform: capitalize; }
#contenido_admin .rossa-filters select.rossa-input,
#contenido_admin .rv-codes__select,
#contenido_admin .rv-dialog__select {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  background-image: url("https://cdn.rossa.app/icons/chevron-down.svg?bg");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 14px 14px;
  padding-right: 30px;
}

/* Grupo de dos controles dentro de un filtro  */
#contenido_admin .rossa-filters .filter-container:has(> .filter-container-inside) { flex: 0 1 436px; }
#contenido_admin .rossa-filters .filter-container-inside {
  gap: 16px;
  align-items: stretch;
  justify-content: flex-start;
}
#contenido_admin .rossa-filters .filter-container-inside > #select-search,
#contenido_admin .rossa-filters .filter-container-inside > input.rossa-input,
#contenido_admin .rossa-filters .filter-container-inside > select.rossa-input,

#contenido_admin .rossa-filters .filter-container-inside > .select2-container { flex: 0 1 210px; }
#contenido_admin .rossa-filters .filter-container > .select2-container {
  width: 100% !important;
}
#contenido_admin .rossa-filters .select2-container--default .select2-selection--single {
  border: 1px solid var(--rossa-stroke) !important;
}
/* El chevron propio del envoltorio de encuestas sobra: Select2 ya pinta el suyo. */
#contenido_admin .rossa-filters .surveys-select-wrap:has(.select2-container)::after { content: none; }
/* Los desplegables de casillas de encuestas llevan la misma flecha que Select2. */
#contenido_admin .rossa-filters .surveys-checkdrop__toggle::after {
  width: 14px;
  height: 14px;
  border: 0;
  background-color: var(--rossa-muted);
  -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg");
          mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
  transform: none;
  transition: transform .15s ease;
}
#contenido_admin .rossa-filters .surveys-checkdrop__toggle[aria-expanded="true"]::after { transform: rotate(180deg); }

#contenido_admin .rossa-filters .filter-container-dates {
  gap: 16px;
  align-items: flex-start;
}
#contenido_admin .rossa-filters .filter-container-dates { flex-wrap: wrap; }
#contenido_admin .rossa-filters .filter-container-dates > #select-dates    { flex: 0 1 210px; }
#contenido_admin .rossa-filters .filter-container-dates > #select-operator { flex: 0 1 210px; }

#contenido_admin .rossa-filters .filter-box-dates {
  flex: 0 0 auto;
  gap: 16px;
  flex-wrap: nowrap;
}

#contenido_admin .rossa-filters .filter-box-dates > input.rossa-input { flex: 0 0 210px; }

/* El JS repone este filtro con `.css("display","")`: el !important lo mantiene oculto sin sacarlo del DOM. */
#contenido_admin .rossa-filters .filter-container--deleted { display: none !important; }

/* --- Barra de acciones del filtro (Restablecer / acción principal) -------- */
#contenido_admin .rossa-filter-actions {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  padding: 0;
}

/* Dentro de #rossa-filters la barra de acciones va siempre en su propia línea, bajo los filtros. */
#contenido_admin #rossa-filters .rossa-btn-bar.rossa-filter-actions {
  flex: 1 0 100%;
  width: 100%;
  margin-top: 4px;
}
#gestor_huespedes_filtros .rossa-filter-actions {
  margin: 16px 0px;
}
/* Restablecer/Mostrar huéspedes ahora viven dentro de #rossa-filters — misma línea propia que antes de moverlos dentro del dropdown. */
#gestor_huespedes_filtros #rossa-filters .rossa-filter-actions {
  flex: 1 0 100%;
}

/* gestor_pedidos: Restablecer ahora vive dentro de #rossa-filters — misma línea propia que antes de moverlo dentro del dropdown. */
#rossa-filters .rossa-box-buttons.rossa-filter-actions {
  flex: 1 0 100%;
}
@media (max-width: 700px) {
  /* en columna, flex-basis:100% del bloque de arriba pasa a ser alto, no ancho: hace falta width explícito */
  #rossa-filters .rossa-box-buttons.rossa-filter-actions {
    width: 100%;
  }
  #rossa-filters .rossa-box-buttons.rossa-filter-actions .rossa-filter-reset-btn {
    width: 100%;
  }
}

#contenido_admin .rossa-filter-reset-btn {
  background: var(--rossa-white) !important;
  border: 1px solid var(--rossa-teal) !important;
  border-radius: var(--rossa-radius);
  color: var(--rossa-teal) !important;
  font-size: 13px;
  font-weight: 700;
  margin: 0;
  padding: 6px 10px;
}
#contenido_admin .rossa-filter-reset-btn:hover { background: var(--rossa-surface) !important; }
#contenido_admin .rossa-filter-actions input[type="submit"] {
  padding: 6px 10px;
  line-height: 16px;
}

/*----- Reservas por página: vive fuera de la barra, sobre el listado -----*/
#contenido_admin .filter-box-perpage {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 14px 0 10px;
  color: var(--rossa-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}
#contenido_admin .filter-box-perpage input.rossa-input {
  width: 68px !important;                /* el marcado trae style="width:50px" */
  height: 32px;
  padding: 4px 8px;
  box-sizing: border-box;
  color: var(--rossa-ink);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0;
  text-align: center;
}

/*----- Móvil: la barra vive dentro del acordeón #filter-dropdown; el `display` lo gobierna el inline del JS -----*/
@media (max-width: 700px) {
  #contenido_admin .rossa-filters:not(#rossa-filters) { display: flex; }
  #contenido_admin .rossa-filters {
    flex-direction: column;
    gap: 12px;
    padding: 14px;
  }
  #contenido_admin .rossa-filters .filter-container,
  #contenido_admin .rossa-filters .filter-container:has(#select-search),
  #contenido_admin .rossa-filters .filter-container:has(#select-dates),
  #contenido_admin .rossa-filters .filter-container:has(> .filter-container-inside),
  #contenido_admin .rossa-filters .filter-container:has(> .filter-box-dates) {
    flex: 1 1 auto;
    width: 100%;
  }
  #contenido_admin .rossa-filters select.rossa-input,
  #contenido_admin .rossa-filters input.rossa-input { min-height: 40px; }
  /* en columna estrecha el select de "Buscar por" no necesita reservar 190px */
  /* flex-direction:row vence al `column` de gestion_reservas.css a ≤480px: en columna, el flex:1 1 100%
     de sus hijos pasa a ser alto y el ancho vuelve a depender del width inline de Select2. */
  #contenido_admin .rossa-filters .filter-container-inside {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: flex-start;
  }
  #contenido_admin .rossa-filters .filter-container-inside > #select-search { flex: 1 1 100%; }
  #contenido_admin .rossa-filters .filter-container-inside > input.rossa-input { flex: 1 1 100%; }
  #contenido_admin .rossa-filters .filter-container-inside > select.rossa-input {
    flex: 1 1 100%;
    max-height: 40px;
  }
  #contenido_admin .rossa-filters .filter-container-inside > .select2-container {
    flex: 1 1 100%;
    max-height: 40px;
    align-self: flex-start;
  }
  #contenido_admin .rossa-filters .filter-container-dates > #select-dates,
  #contenido_admin .rossa-filters .filter-container-dates > #select-operator,
  #contenido_admin .rossa-filters .filter-box-dates,
  #contenido_admin .rossa-filters .filter-box-dates > input.rossa-input { flex: 1 1 100%; }
  #contenido_admin .rossa-filters .filter-container-dates > .select2-container {
    flex: 1 1 0;
    min-width: 0;
    width: auto !important;
  }
  #contenido_admin .rossa-filters .filter-box-dates {
    flex-wrap: wrap;
    align-items: flex-start;
  }
  #contenido_admin .rossa-filters .filter-box-dates > input.rossa-input {
    max-height: 40px;
  }
  #gestor_huespedes_filtros .rossa-filter-actions .rossa-filter-reset-btn,
  #gestor_huespedes_filtros .rossa-filter-actions input[type="submit"] {
    flex: 1 1 0;
  }
  /* en columna, flex-basis:100% del bloque de arriba pasa a ser alto, no ancho: hace falta width explícito */
  #gestor_huespedes_filtros #rossa-filters .rossa-filter-actions {
    width: 100%;
  }
}

/*===== 58. USO DE LA INTERFAZ (module=uso_botones) =====*/
#contenido_admin .rossa-uso-intro {
  color: var(--rossa-muted);
  max-width: 70ch;
  margin: 0 0 18px;
}

/* Resumen: cifras planas, sin caja ni sombra (criterio "flat" del rediseño) */
#contenido_admin .rossa-uso-resumen {
  display: flex;
  flex-wrap: wrap;
  gap: 34px;
  margin: 0 0 22px;
  padding: 0 0 18px;
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-uso-kpi {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
#contenido_admin .rossa-uso-kpi__n {
  font-size: 28px;
  font-weight: 700;
  line-height: 1.1;
  color: var(--rossa-teal);
  font-variant-numeric: tabular-nums;
}
#contenido_admin .rossa-uso-kpi__t {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--rossa-muted);
}

#contenido_admin .rossa-uso-filtros {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  margin: 0 0 20px;
}
/* Los selects del admin traen anchos elásticos de lydia.css. */
#contenido_admin .rossa-uso-filtros > * { flex: 0 0 auto; }
#contenido_admin .rossa-uso-filtros select { max-width: 240px; }
/* lydia.css:1177 pone `margin-left/right:auto` a `.admin_boton`: dentro de un flex separa los botones a los bordes. */
#contenido_admin .rossa-uso-filtros .admin_boton {
  margin-left: 0;
  margin-right: 0;
}
#contenido_admin .rossa-uso-filtros label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--rossa-muted);
  margin: 0 -4px 0 6px;
}
/* Clase propia y no `.rossa-btn--default`: esa está forzada a teal con !important más arriba. */
#contenido_admin .rossa-uso-filtros .rossa-uso-reset {
  display: inline-block;
  padding: 6px 14px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  color: var(--rossa-ink);
  font-weight: 700;
  font-size: 14px;
  text-decoration: none;
}
#contenido_admin .rossa-uso-filtros .rossa-uso-reset:hover { background: var(--rossa-surface); }

/* La barra va detrás y el número encima, tabular para alinear los dígitos entre filas. */
#contenido_admin .rossa-uso-tabla td.rossa-uso-num {
  position: relative;
  text-align: right;
  white-space: nowrap;
  min-width: 170px;
}
/* Especificidad: el centrado de celda de §65.3 empata con la regla de arriba y carga despues. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.rossa-uso-num,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab > td.rossa-uso-num {
  text-align: right;
}
#contenido_admin .rossa-uso-barra {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  height: 20px;
  min-width: 3px;
  border-radius: 3px;
  background: rgba(32, 92, 104, .14);
  pointer-events: none;
}
#contenido_admin .rossa-uso-n {
  position: relative;
  font-weight: 600;
  color: var(--rossa-ink);
  font-variant-numeric: tabular-nums;
}

#contenido_admin .rossa-uso-ir {
  color: var(--rossa-cyan);
  font-weight: 700;
  text-decoration: none;
}
#contenido_admin .rossa-uso-ir:hover { text-decoration: underline; }

/* Fuera de #contenido_admin a propósito: el destino puede estar en el menú o en la barra. */
.rossa-track-goto {
  outline: 2px solid var(--rossa-teal) !important;
  outline-offset: 3px;
  border-radius: var(--rossa-radius);
  animation: rossa-track-latido 1.1s ease-in-out 3;
}
@keyframes rossa-track-latido {
  0%, 100% { box-shadow: 0 0 0 0 rgba(0, 94, 102, .40); }
  50%      { box-shadow: 0 0 0 7px rgba(0, 94, 102, 0); }
}
@media (prefers-reduced-motion: reduce) {
  .rossa-track-goto { animation: none; }
}

/* Pista de localización, no dato de agregación: el contador es por elemento */
#contenido_admin .rossa-uso-donde {
  display: block;
  font-size: 11px;
  font-weight: 400;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-uso-clave {
  font-size: 12px;
  color: var(--rossa-muted);
  word-break: break-all;
}
/* Clave derivada del texto: sobrevive peor a un rediseño, se avisa en la fila */
#contenido_admin .rossa-uso-debil {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 7px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .03em;
  vertical-align: middle;
}

#contenido_admin .rossa-uso-vacio,
#contenido_admin .rossa-uso-nota {
  color: var(--rossa-muted);
}
#contenido_admin .rossa-uso-nota {
  font-size: 12px;
  margin-top: 12px;
}

@media (max-width: 700px) {
  #contenido_admin .rossa-uso-resumen { gap: 22px; }
  #contenido_admin .rossa-uso-kpi__n { font-size: 22px; }
  #contenido_admin .rossa-uso-filtros label { margin-left: 0; }
}

/*===== 59. BUSCADOR DEL MENÚ LATERAL (admin/includes/menu_buscador.php) =====*/
/* La lista de resultados lleva también `.panel_admin` para heredar el aspecto de los enlaces del menú. */
.rossa-menusearch { padding: 10px 12px 6px; }
/* Etiqueta solo para lectores de pantalla */
.rossa-menusearch__label {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}
.rossa-menusearch__box { position: relative; display: block; }
.rossa-menusearch__ico {
  position: absolute;
  left: 9px; top: 50%;
  transform: translateY(-50%);
  font-size: 12px;
  color: var(--rossa-muted);
  pointer-events: none;
}
.rossa-menusearch__input {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  box-sizing: border-box;
  padding: 7px 26px 7px 28px;
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
  background: #fff;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  outline: none;
}
.rossa-menusearch__input::placeholder { color: var(--rossa-muted); }
.rossa-menusearch__input:focus {
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 2px rgba(0, 94, 102, .15);
}
/* La "x" nativa de type=search duplicaría nuestro botón de limpiar */
.rossa-menusearch__input::-webkit-search-cancel-button,
.rossa-menusearch__input::-webkit-search-decoration { -webkit-appearance: none; appearance: none; }
.rossa-menusearch__clear {
  position: absolute;
  right: 4px; top: 50%;
  transform: translateY(-50%);
  display: none;
  padding: 4px 6px;
  border: 0;
  background: none;
  color: var(--rossa-muted);
  font-size: 11px;
  line-height: 1;
  cursor: pointer;
}
.rossa-menusearch__clear:hover { color: var(--rossa-ink); }
#menu.rossa-menusearch-has .rossa-menusearch__clear { display: block; }

/* Modo resultados */
.rossa-menusearch__results { display: none; }
#menu.rossa-menusearch-on > ul.panel_admin:not(.rossa-menusearch__results) { display: none; }
#menu.rossa-menusearch-on .rossa-menusearch__results { display: block; }
/* Un resultado lleva dos líneas (etiqueta + grupo) y hay que dejarlo crecer o se solapan. */
#menu .rossa-menusearch__results a.rossa-menusearch__hit {
  height: auto;
  min-height: 0;
  line-height: 1.25;
  padding-top: 9px;
  padding-bottom: 9px;
  align-items: center;
  overflow: visible;
}
/* Si el grupo cuelga como hermano flex, su texto largo deja la etiqueta a 0px (el enlace tiene overflow:hidden). */
#menu .rossa-menusearch__results .rossa-menusearch__body {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-width: 0;
}
#menu .rossa-menusearch__results .rossa-menusearch__body .txtmenu { min-width: 0; }
/* La fila se clona del enlace real del menú, así que arrastra su <i>: se oculta aquí, no en el JS. */
#menu .rossa-menusearch__results a.rossa-menusearch__hit > i,
#menu .rossa-menusearch__results a.rossa-menusearch__hit > .fas,
#menu .rossa-menusearch__results a.rossa-menusearch__hit > .far { display: none; }
#menu .rossa-menusearch__results a.rossa-menusearch__hit { padding-left: 14px; }
#menu .rossa-menusearch__results a.rossa-menusearch__hit.is-sel {
  background: rgba(0, 94, 102, .08);
  box-shadow: inset 2px 0 0 var(--rossa-teal);
}
.rossa-menusearch__ctx {
  display: block;
  margin-top: 2px;
  max-width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
.rossa-menusearch__empty {
  padding: 12px 14px;
  font-size: 12px;
  color: var(--rossa-muted);
}

/* El JS limpia la búsqueda si la caja deja de verse; con la caja siempre visible no salta. */
@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  #menu .rossa-menusearch { display: block; padding: 8px 12px 10px; }
  #menu .rossa-menusearch__box { width: auto; }
  /* Caja cómoda para el dedo y sin zoom automático en iOS (font-size >= 16px). */
  #menu .rossa-menusearch__input { height: 42px; font-size: 16px; }
}

/*===== 60. SELECTOR DE ICONO DE SERVICIO (module=add_servicio) =====*/
#contenido_admin .rossa-icosel { display: block; }
/* Aviso para los valores heredados que no son del catálogo ni una imagen subida */
#contenido_admin .rossa-icosel__aviso {
  margin: 0 0 10px;
  padding: 8px 10px;
  font-size: 12px;
  line-height: 1.45;
  color: var(--rossa-ink);
  background: var(--rossa-salmon);
  border-left: 3px solid var(--rossa-coral);
  border-radius: var(--rossa-radius);
}
#contenido_admin .rossa-icosel__aviso code {
  font-family: ui-monospace, Consolas, monospace;
  font-size: 11px;
}
#contenido_admin .rossa-icosel__grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 10px;
}
#contenido_admin .rossa-icosel__opt {
  appearance: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  width: 84px;
  min-height: 68px;
  padding: 9px 6px;
  background: #fff;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  cursor: pointer;
  transition: border-color .15s ease, box-shadow .15s ease;
}
#contenido_admin .rossa-icosel__opt:hover { border-color: var(--rossa-teal); }
#contenido_admin .rossa-icosel__opt.is-on {
  border-color: var(--rossa-teal);
  box-shadow: inset 0 0 0 1px var(--rossa-teal);
}
#contenido_admin .rossa-icosel__ico {
  font-size: 20px;
  line-height: 1;
  color: var(--rossa-teal);
}
#contenido_admin .rossa-icosel__ico i { font-size: 20px; }
#contenido_admin .rossa-icosel__txt {
  font-size: 11px;
  line-height: 1.2;
  text-align: center;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-icosel__opt.is-on .rossa-icosel__txt { color: var(--rossa-ink); }

#contenido_admin .rossa-icosel__subir {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding-top: 10px;
  border-top: 1px solid var(--rossa-border);
}
#contenido_admin .rossa-icosel__subir label {
  font-size: 12px;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-icosel__subir label small { color: var(--rossa-muted); font-weight: 400; }

#contenido_admin .rossa-icosel__actual {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 10px;
  padding: 8px 10px;
  background: var(--rossa-surface);
  border-radius: var(--rossa-radius);
}
#contenido_admin .rossa-icosel__actual.is-hidden { display: none; }
#contenido_admin .rossa-icosel__actual-lbl { font-size: 12px; color: var(--rossa-muted); }
#contenido_admin .rossa-icosel__img {
  display: block;
  width: 28px;
  height: 28px;
  object-fit: contain;
}
#contenido_admin .rossa-icosel__quitar {
  appearance: none;
  border: 1px solid var(--rossa-border);
  background: #fff;
  color: var(--rossa-coral);
  border-radius: var(--rossa-radius);
  font: 600 11px/1 var(--rossa-font);
  padding: 6px 10px;
  cursor: pointer;
}
#contenido_admin .rossa-icosel__quitar:hover { border-color: var(--rossa-coral); }

/* Icono propio de un servicio allí donde se pinte (servicios::renderIcono) */
.rossa-servicio-ico {
  display: inline-block;
  width: 1.15em;
  height: 1.15em;
  object-fit: contain;
  vertical-align: -0.2em;
}

/*===== 53. «SELECCIONAR TODOS» — checkbox de cabecera de las tablas legacy =====*/
/* El id #seltodos y la clase `.admin_link` se mantienen: el handler de admin/js/Lydia_Script.js se engancha a ellos. */
.rossa-selall {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  vertical-align: middle;
}
.rossa-selall .rossa-selall__box {
  -webkit-appearance: checkbox;
  appearance: auto;                 /* que no se lo coma ningún reset de formularios */
  width: 16px;
  height: 16px;
  margin: 0;
  accent-color: var(--rossa-teal);
  cursor: pointer;
  flex: 0 0 auto;
}
/* .admin_link (lydia) pone negrita y azul #06C; el rótulo va como texto normal. */
.rossa-selall .rossa-selall__txt {
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 500;
  color: var(--rossa-ink);
  cursor: pointer;
  user-select: none;
}
#contenido_admin .rossa-scope-todo { display: flex; margin: 2px 0 10px; }
#contenido_admin #jerarquias_section .rossa-scope-todo { margin: 20px 0 16px; padding-left: 17px; }
#contenido_admin .rossa-panel--no-aplica > .rossa-panel__head { color: var(--rossa-muted); }
#contenido_admin .rossa-panel--no-aplica > .rossa-panel__head i { opacity: .5; }
#contenido_admin .rossa-panel--no-aplica > .rossa-panel__body { opacity: .45; filter: grayscale(1); }
#contenido_admin .rossa-panel__aviso-limpieza { margin: 0; padding: 16px 18px; font-size: 13px; line-height: 1.5; color: var(--rossa-ink); }
#contenido_admin .rossa-panel:not(.rossa-panel--collapsed) > .rossa-panel__aviso-limpieza { padding-bottom: 0; }

/*===== 54. RETIRADA DE ICONOS RASTER (PNG/GIF -> SVG del CDN) =====*/
/* Dos técnicas: `.rossa-i` como máscara teñida, y sustituir `background-image` donde el elemento ya tiene fondo (sin teñir). */

/* (A) base + modificadores -------------------------------------------------- */
.rossa-i {
  display: inline-block;
  width: 1em;
  height: 1em;
  flex: 0 0 auto;
  vertical-align: -0.125em;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;    mask-repeat: no-repeat;
  -webkit-mask-position: center;     mask-position: center;
  -webkit-mask-size: contain;        mask-size: contain;
}
.rossa-i--alerta      { -webkit-mask-image: url("https://cdn.rossa.app/icons/triangle-alert.svg");            mask-image: url("https://cdn.rossa.app/icons/triangle-alert.svg"); }
.rossa-i--ok          { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-check.svg");              mask-image: url("https://cdn.rossa.app/icons/circle-check.svg"); }
.rossa-i--valido      { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-check-big.svg");          mask-image: url("https://cdn.rossa.app/icons/circle-check-big.svg"); }
.rossa-i--invalido    { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-x.svg");                   mask-image: url("https://cdn.rossa.app/icons/circle-x.svg"); }
.rossa-i--tabla       { -webkit-mask-image: url("https://cdn.rossa.app/icons/table-properties.svg");          mask-image: url("https://cdn.rossa.app/icons/table-properties.svg"); }
.rossa-i--carpeta     { -webkit-mask-image: url("https://cdn.rossa.app/icons/Carpeta-abierta.svg");           mask-image: url("https://cdn.rossa.app/icons/Carpeta-abierta.svg"); }
.rossa-i--reserva     { -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-check.svg");            mask-image: url("https://cdn.rossa.app/icons/calendar-check.svg"); }
.rossa-i--calendario  { -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-days.svg");             mask-image: url("https://cdn.rossa.app/icons/calendar-days.svg"); }
.rossa-i--calendario-x { -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-x.svg");               mask-image: url("https://cdn.rossa.app/icons/calendar-x.svg"); }
.rossa-i--cama        { -webkit-mask-image: url("https://cdn.rossa.app/icons/bed-double.svg");                mask-image: url("https://cdn.rossa.app/icons/bed-double.svg"); }
.rossa-i--precio      { -webkit-mask-image: url("https://cdn.rossa.app/icons/Precio.svg");                    mask-image: url("https://cdn.rossa.app/icons/Precio.svg"); }
.rossa-i--huespedes   { -webkit-mask-image: url("https://cdn.rossa.app/icons/users.svg");                     mask-image: url("https://cdn.rossa.app/icons/users.svg"); }
.rossa-i--checkin-ok  { -webkit-mask-image: url("https://cdn.rossa.app/icons/user-round-check.svg");           mask-image: url("https://cdn.rossa.app/icons/user-round-check.svg"); }
.rossa-i--checkin     { -webkit-mask-image: url("https://cdn.rossa.app/icons/square-arrow-right-enter.svg");   mask-image: url("https://cdn.rossa.app/icons/square-arrow-right-enter.svg"); }
.rossa-i--asignar     { -webkit-mask-image: url("https://cdn.rossa.app/icons/bed-double.svg");                mask-image: url("https://cdn.rossa.app/icons/bed-double.svg"); }
.rossa-i--tarjeta     { -webkit-mask-image: url("https://cdn.rossa.app/icons/credit-card.svg");               mask-image: url("https://cdn.rossa.app/icons/credit-card.svg"); }
.rossa-i--puerta-ok   { -webkit-mask-image: url("https://cdn.rossa.app/icons/door-open.svg");                 mask-image: url("https://cdn.rossa.app/icons/door-open.svg"); }
.rossa-i--puerta-no   { -webkit-mask-image: url("https://cdn.rossa.app/icons/door-closed-locked.svg");        mask-image: url("https://cdn.rossa.app/icons/door-closed-locked.svg"); }
.rossa-i--reubicacion { -webkit-mask-image: url("https://cdn.rossa.app/icons/Puerta-reubicaci%C3%B3n.svg");   mask-image: url("https://cdn.rossa.app/icons/Puerta-reubicaci%C3%B3n.svg"); }
.rossa-i--info        { -webkit-mask-image: url("https://cdn.rossa.app/icons/info.svg");                      mask-image: url("https://cdn.rossa.app/icons/info.svg"); }
.rossa-i--pdf         { -webkit-mask-image: url("https://cdn.rossa.app/icons/scroll-text.svg");               mask-image: url("https://cdn.rossa.app/icons/scroll-text.svg"); }
.rossa-i--multimedia  { -webkit-mask-image: url("https://cdn.rossa.app/icons/image.svg");                     mask-image: url("https://cdn.rossa.app/icons/image.svg"); }
.rossa-i--camara      { -webkit-mask-image: url("https://cdn.rossa.app/icons/camera.svg");                    mask-image: url("https://cdn.rossa.app/icons/camera.svg"); }
.rossa-i--cancelar    { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-x.svg");                  mask-image: url("https://cdn.rossa.app/icons/circle-x.svg"); }
.rossa-i--canal-admin { -webkit-mask-image: url("https://cdn.rossa.app/icons/laptop.svg");                    mask-image: url("https://cdn.rossa.app/icons/laptop.svg"); }
.rossa-i--partes      { -webkit-mask-image: url("https://cdn.rossa.app/icons/id-card.svg");                   mask-image: url("https://cdn.rossa.app/icons/id-card.svg"); }
/* Variante "inactiva" (era Cancel-icon-grey.png). */
.rossa-i--apagado     { color: var(--rossa-muted); }
.rossa-i--aplicar     { -webkit-mask-image: url("https://cdn.rossa.app/icons/check-check.svg");               mask-image: url("https://cdn.rossa.app/icons/check-check.svg"); }
/* Ayuda de la página del huésped (class.pageBooking.php) */
.rossa-i--wifi        { -webkit-mask-image: url("https://cdn.rossa.app/icons/house-wifi.svg");                mask-image: url("https://cdn.rossa.app/icons/house-wifi.svg"); }
.rossa-i--parking     { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-parking.svg");            mask-image: url("https://cdn.rossa.app/icons/circle-parking.svg"); }
.rossa-i--codigos     { -webkit-mask-image: url("https://cdn.rossa.app/icons/Accesos%20y%20cerraduras.svg");  mask-image: url("https://cdn.rossa.app/icons/Accesos%20y%20cerraduras.svg"); }
.rossa-i--horarios    { -webkit-mask-image: url("https://cdn.rossa.app/icons/clock.svg");                     mask-image: url("https://cdn.rossa.app/icons/clock.svg"); }
.rossa-i--localizacion{ -webkit-mask-image: url("https://cdn.rossa.app/icons/map-pin.svg");                   mask-image: url("https://cdn.rossa.app/icons/map-pin.svg"); }
.rossa-i--nofumar     { -webkit-mask-image: url("https://cdn.rossa.app/icons/cigarette-off.svg");             mask-image: url("https://cdn.rossa.app/icons/cigarette-off.svg"); }
.rossa-i--documento   { -webkit-mask-image: url("https://cdn.rossa.app/icons/id-card.svg");                   mask-image: url("https://cdn.rossa.app/icons/id-card.svg"); }
.rossa-i--telefono    { -webkit-mask-image: url("https://cdn.rossa.app/icons/phone.svg");                     mask-image: url("https://cdn.rossa.app/icons/phone.svg"); }
.rossa-i--email       { -webkit-mask-image: url("https://cdn.rossa.app/icons/mail.svg");                      mask-image: url("https://cdn.rossa.app/icons/mail.svg"); }
.rossa-i--whatsapp    { -webkit-mask-image: url("https://cdn.rossa.app/icons/whatsapp.svg");                  mask-image: url("https://cdn.rossa.app/icons/whatsapp.svg"); }
.rossa-i--sms         { -webkit-mask-image: url("https://cdn.rossa.app/icons/message-square-more.svg");       mask-image: url("https://cdn.rossa.app/icons/message-square-more.svg"); }
.rossa-i--editar      { -webkit-mask-image: url("https://cdn.rossa.app/icons/square-pen.svg");                mask-image: url("https://cdn.rossa.app/icons/square-pen.svg"); }
.rossa-i--desplegar   { -webkit-mask-image: url("https://cdn.rossa.app/icons/skip-back.svg");                 mask-image: url("https://cdn.rossa.app/icons/skip-back.svg"); }
.rossa-i--guardar     { -webkit-mask-image: url("https://cdn.rossa.app/icons/check.svg");                     mask-image: url("https://cdn.rossa.app/icons/check.svg"); }
.rossa-i--cerrar      { -webkit-mask-image: url("https://cdn.rossa.app/icons/x.svg");                         mask-image: url("https://cdn.rossa.app/icons/x.svg"); }
.rossa-i--ver         { -webkit-mask-image: url("https://cdn.rossa.app/icons/eye.svg");                       mask-image: url("https://cdn.rossa.app/icons/eye.svg"); }
.rossa-i--noches      { -webkit-mask-image: url("https://cdn.rossa.app/icons/Noches.svg");                    mask-image: url("https://cdn.rossa.app/icons/Noches.svg"); }
.rossa-i--error       { -webkit-mask-image: url("https://cdn.rossa.app/icons/message-circle-x.svg");          mask-image: url("https://cdn.rossa.app/icons/message-circle-x.svg"); }

/* El <img> se dimensionaba por caja (width/height); un `.rossa-i` se dimensiona por font-size. */
.rossa-i--50 { font-size: 50px; }
.rossa-i--40 { font-size: 40px; }
.rossa-i--30 { font-size: 30px; }
.rossa-i--25 { font-size: 25px; }
.rossa-i--16 { font-size: 16px; }
/* Las clases de tamaño legacy siguen en el marcado y ahora dan el tamaño desde aquí. */
#contenido_admin .rossa-i.rossa-stay-icon,
#contenido_admin .rossa-i.rossa-reubicacion-img { font-size: 34px; width: 1em; height: 1em; }
#contenido_admin .rossa-i.btnfa { font-size: 16px; }
#contenido_admin .rossa-i.rossa-reubicacion-img { color: var(--rossa-petrol); }

/* Solo se ven con el modo tabs desactivado: `body.rossa-tabs-on` los oculta. */
.rossa-ctr__icon--client,
.rossa-ctr__icon--comunicaciones,
.rossa-ctr__icon--payment,
.rossa-ctr__icon--booking,
.rossa-ctr__icon--guests,
.rossa-ctr__icon-huesped {
  background-image: none;
  background-color: var(--rossa-teal);
  -webkit-mask-repeat: no-repeat;    mask-repeat: no-repeat;
  -webkit-mask-position: center;     mask-position: center;
  -webkit-mask-size: contain;        mask-size: contain;
}
.rossa-ctr__icon--client         { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-user.svg");     mask-image: url("https://cdn.rossa.app/icons/circle-user.svg"); }
.rossa-ctr__icon--comunicaciones { -webkit-mask-image: url("https://cdn.rossa.app/icons/mails.svg");           mask-image: url("https://cdn.rossa.app/icons/mails.svg"); }
.rossa-ctr__icon--payment        { -webkit-mask-image: url("https://cdn.rossa.app/icons/euro.svg");            mask-image: url("https://cdn.rossa.app/icons/euro.svg"); }
.rossa-ctr__icon--booking        { -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar-check.svg");   mask-image: url("https://cdn.rossa.app/icons/calendar-check.svg"); }
.rossa-ctr__icon--guests         { -webkit-mask-image: url("https://cdn.rossa.app/icons/users-round.svg");      mask-image: url("https://cdn.rossa.app/icons/users-round.svg"); }
.rossa-ctr__icon-huesped         { -webkit-mask-image: url("https://cdn.rossa.app/icons/users.svg");            mask-image: url("https://cdn.rossa.app/icons/users.svg"); }
/* Aviso de la ficha: el ::before pintaba alert.png de fondo. */
.rossa-notice-new::before {
  background-image: none;
  background-color: var(--rossa-coral);
  -webkit-mask: url("https://cdn.rossa.app/icons/triangle-alert.svg") no-repeat center / 45px;
          mask: url("https://cdn.rossa.app/icons/triangle-alert.svg") no-repeat center / 45px;
}

/* (B) sustitución de la URL de fondo ---------------------------------------- */
/* El PNG de lydia (`background: url(ocultarmenu.png)`) seguía asomando detrás del chevron de §10. */
#menu #hidemenu,
#menu.hidden #hidemenu { background-image: none; }
/* Selector de categorías (lydia): flechas de mover entre listas. */
#addcats  { background-image: url("https://cdn.rossa.app/icons/chevron-right.svg?bg"); background-size: 14px; }
#delcats  { background-image: url("https://cdn.rossa.app/icons/chevron-left.svg?bg");  background-size: 14px; }
#btnup    { background-image: url("https://cdn.rossa.app/icons/chevron-up.svg?bg");    background-size: 14px; }
#btndown  { background-image: url("https://cdn.rossa.app/icons/chevron-down.svg?bg");  background-size: 14px; }
/* Input con autocompletado y precio por habitación. */
.sugg_auto       { background-image: url("https://cdn.rossa.app/icons/search.svg?bg"); background-size: 15px; }
.precio_por_hab  { background-image: url("https://cdn.rossa.app/icons/euro.svg?bg");    background-size: 13px; }
/* Botón de check-in radix (el tamaño y la posición ya los fija §18). */
#contenido_admin a.rdx_btn { background-image: url("https://cdn.rossa.app/icons/id-card.svg?bg"); }

/* `content:""` vacía el mapa de bits del <img>; se acota por el final del src para no pillar otras imágenes. */
img[src$="/del.png"],
img[src$="/delete.png"],
img[src$="/delete_negra.png"],
img[src$="/delete_roja.png"],
img[src$="/icon-ok.png"],
img[src$="/candado.png"],
img[src$="/candado_gris.png"],
img[src$="/up.gif"],
img[src$="/down.gif"] {
  content: "";
  width: 16px;
  height: 16px;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;    mask-repeat: no-repeat;
  -webkit-mask-position: center;     mask-position: center;
  -webkit-mask-size: contain;        mask-size: contain;
}
img[src$="/del.png"],
img[src$="/delete.png"],
img[src$="/delete_negra.png"],
img[src$="/delete_roja.png"] { -webkit-mask-image: url("https://cdn.rossa.app/icons/trash-2.svg");     mask-image: url("https://cdn.rossa.app/icons/trash-2.svg"); }
img[src$="/icon-ok.png"]     { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-check.svg"); mask-image: url("https://cdn.rossa.app/icons/circle-check.svg"); }
img[src$="/candado.png"]     { -webkit-mask-image: url("https://cdn.rossa.app/icons/lock.svg");         mask-image: url("https://cdn.rossa.app/icons/lock.svg"); }
img[src$="/candado_gris.png"]{ -webkit-mask-image: url("https://cdn.rossa.app/icons/lock-open.svg");    mask-image: url("https://cdn.rossa.app/icons/lock-open.svg"); }
img[src$="/up.gif"]          { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-up.svg");   mask-image: url("https://cdn.rossa.app/icons/chevron-up.svg"); }
img[src$="/down.gif"]        { -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg"); mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg"); }
img[src$="/del.png"],
img[src$="/delete_roja.png"] { color: var(--rossa-coral); }
/*----- 60. EMAIL DE USUARIO — pantalla forzada `set_email` + estados de confirmación -----*/

/* --- pantalla forzada set_email --- */
#contenido_admin.setemail .campos label {
  display: block;
  margin-bottom: 4px;
  color: var(--rossa-ink);
  font-weight: 600;
}
#contenido_admin.setemail .campos input[type="email"] {
  max-width: 360px;
}
#contenido_admin.setemail .setemail_ayuda {
  margin-top: 18px;
  color: var(--rossa-muted);
  font-size: 13px;
}
#contenido_admin.setemail .setemail_salir {
  margin-top: 28px;
  padding-top: 14px;
  border-top: 1px solid var(--rossa-border);
  font-size: 13px;
}
#contenido_admin.setemail .setemail_salir a {
  color: var(--rossa-red);
}

/* --- estado de confirmación en el editor de usuario --- */
.rossa-email-state {
  margin: 6px 0 0;
  font-size: 13px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.rossa-email-state--ok      { color: var(--rossa-green); }
.rossa-email-state--pending { color: var(--rossa-coral); }

/* Tiene que ser un <button type="submit"> y no un <a>: va dentro del formulario. */
.rossa-btn--link {
  background: none;
  border: 0;
  padding: 0;
  margin-left: 4px;
  color: var(--rossa-cyan);
  font: inherit;
  text-decoration: underline;
  cursor: pointer;
}
.rossa-btn--link:hover { color: var(--rossa-teal); }

/* --- iconos de estado en listados y ficha --- */
.rossa-email-ok      { color: var(--rossa-green); }
.rossa-email-pending { color: var(--rossa-coral); }

/* Emails largos no deben empujar la tabla de usuarios. */
.rossa-users-email {
  display: inline-block;
  max-width: 220px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: bottom;
}

@media (max-width: 768px) {
  #contenido_admin .rossa-add-servicio-table,
  #contenido_admin .rossa-add-servicio-table tbody,
  #contenido_admin .rossa-add-servicio-table tr,
  #contenido_admin .rossa-add-servicio-table td {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin .rossa-add-servicio-table tr:not(.cab) {
    margin-bottom: 12px;
  }
  #contenido_admin .rossa-add-servicio-table tr:not(.cab) td:first-child {
    padding-bottom: 4px;
    font-weight: 600;
  }
  #contenido_admin .rossa-add-servicio-table input[type="text"],
  #contenido_admin .rossa-add-servicio-table textarea,
  #contenido_admin .rossa-add-servicio-table select {
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin .rossa-add-servicio-table:last-of-type {
    margin-bottom: 90px;
  }
}

@media (max-width: 768px) {
  #contenido_admin .rossa-saldar-table,
  #contenido_admin .rossa-saldar-table tbody,
  #contenido_admin .rossa-saldar-table tr,
  #contenido_admin .rossa-saldar-table td {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin .rossa-saldar-table tr:not(.cab) {
    margin-bottom: 12px;
  }
  #contenido_admin .rossa-saldar-table tr:not(.cab) td:first-child {
    padding-bottom: 4px;
    font-weight: 600;
  }
  #contenido_admin .rossa-saldar-table input[type="text"],
  #contenido_admin .rossa-saldar-table textarea,
  #contenido_admin .rossa-saldar-table select {
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin .rossa-saldar-table .rossa-saldar-amount {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
  }
  #contenido_admin .rossa-saldar-table:last-of-type {
    margin-bottom: 90px;
  }
}
@media (min-width: 481px) and (hover: none) and (pointer: coarse) {
  #saldar_cuenta_form .rossa-saldar-table {
    width: 100%;
  }
  #contenido_admin .rossa-saldar-table,
  #contenido_admin .rossa-saldar-table tbody,
  #contenido_admin .rossa-saldar-table tr,
  #contenido_admin .rossa-saldar-table td {
    display: revert;
    box-sizing: revert;
  }
  #contenido_admin .rossa-saldar-table tbody,
  #contenido_admin .rossa-saldar-table tr,
  #contenido_admin .rossa-saldar-table td {
    width: revert;
  }
  #contenido_admin .rossa-saldar-table tr:not(.cab) { margin-bottom: revert; }
  #contenido_admin .rossa-saldar-table tr:not(.cab) td:first-child {
    padding-bottom: revert;
    font-weight: revert;
  }
  #contenido_admin .rossa-saldar-table input[type="text"],
  #contenido_admin .rossa-saldar-table textarea,
  #contenido_admin .rossa-saldar-table select {
    width: revert;
    box-sizing: revert;
  }
  #contenido_admin .rossa-saldar-table .rossa-saldar-amount {
    display: revert;
    align-items: revert;
    justify-content: revert;
    gap: revert;
  }
  #contenido_admin .rossa-saldar-table:last-of-type { margin-bottom: revert; }
}

#saldar_cuenta_form #payment_method,
#saldar_cuenta_form #comments,
#saldar_cuenta_form .rossa-saldar-amount {
  width: 280px;
  max-width: 100%;
  box-sizing: border-box;
}
#saldar_cuenta_form .rossa-saldar-amount {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
#saldar_cuenta_form #amount {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
  box-sizing: border-box;
}

@media (max-width: 768px), (hover: none) and (pointer: coarse) and (orientation: portrait) {
  #contenido_admin .rossa-add-services-table,
  #contenido_admin .rossa-add-services-table thead,
  #contenido_admin .rossa-add-services-table tbody,
  #contenido_admin .rossa-add-services-table tr,
  #contenido_admin .rossa-add-services-table td {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin .rossa-add-services-table thead { display: none; }
  #contenido_admin .rossa-add-services-table tbody tr.other-services-row {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    column-gap: 10px;
    margin-bottom: 12px;
    padding: 12px;
    background: var(--rossa-white);
    border: 1px solid var(--rossa-border);
    border-radius: var(--rossa-radius);
  }
  #contenido_admin .rossa-add-services-table td {
    flex: 1 1 100%;
    padding: 4px 0;
    text-align: left;
  }
  #contenido_admin .rossa-add-services-table td[data-label="Total (IVA inc.)"],
  #contenido_admin .rossa-add-services-table td[data-label="IVA"] {
    flex: 1 1 calc(50% - 5px);
    min-width: 0;
  }
  #contenido_admin .rossa-add-services-table td:last-child {
    height: unset !important;
  }
  #contenido_admin .rossa-add-services-table td[data-label]::before {
    content: attr(data-label);
    display: block;
    color: var(--rossa-navy);
    text-transform: uppercase;
    letter-spacing: .04em;
    font-size: 10px;
    font-weight: 700;
    margin-bottom: 2px;
    text-align: left;
  }
  #contenido_admin .rossa-add-services-table input[type="text"],
  #contenido_admin .rossa-add-services-table input[type="number"],
  #contenido_admin .rossa-add-services-table select {
    display: block;
    width: 100%;
    margin: 0;
    box-sizing: border-box;
    text-align: left;
  }
  #contenido_admin .rossa-add-services-table td[data-label="Eliminar"] {
    text-align: center;
  }
  #contenido_admin .rossa-add-services-table td[data-label="Eliminar"]::before {
    display: none;
  }
}
#contenido_admin table.rossa-tbl.rossa-tbl.rossa-add-services-table .del-extra-line {
  width: 20px;
  height: 20px;
}
#contenido_admin .rossa-add-services-table .input-symbol-euro {
  display: flex;
  align-items: center;
  gap: 8px;
}
#contenido_admin .rossa-add-services-table .input-symbol-euro input {
  flex: 1 1 auto;
  min-width: 0;
}
@media (min-width: 769px) and (hover: hover),
       (min-width: 769px) and (pointer: fine),
       (min-width: 769px) and (orientation: landscape) {
  #contenido_admin .rossa-add-services-table thead td:nth-child(1),
  #contenido_admin .rossa-add-services-table td[data-label="Descripción"] { width: 75%; }
  #contenido_admin .rossa-add-services-table thead td:nth-child(2),
  #contenido_admin .rossa-add-services-table td[data-label="Total (IVA inc.)"] { width: 5%; }
  #contenido_admin .rossa-add-services-table .input-symbol-euro { width: fit-content; }
  #contenido_admin .rossa-add-services-table .input-symbol-euro input {
    flex: 0 0 auto;
    width: 5.5em;
  }
}
#contenido_admin .rossa-add-services-table .input-symbol-euro::after {
  position: static;
  top: auto;
  right: auto;
  transform: none;
  flex: 0 0 auto;
}

@media (max-width: 768px) {
  #contenido_admin .rossa-services-current-table,
  #contenido_admin .rossa-services-current-table thead,
  #contenido_admin .rossa-services-current-table tbody,
  #contenido_admin .rossa-services-current-table tr,
  #contenido_admin .rossa-services-current-table td {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin .rossa-services-current-table thead { display: none; }
  #contenido_admin .rossa-services-current-table tr[style*="ECF0F1"] {
    padding: 10px 12px;
    font-weight: 700;
    margin: 12px 0 8px;
    border-radius: var(--rossa-radius);
  }
  #contenido_admin .rossa-services-current-table tr[style*="ECF0F1"] td:not(:first-child) {
    display: none;
  }
  #contenido_admin .rossa-services-current-table tbody tr:not([style*="ECF0F1"]) {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    column-gap: 10px;
    margin-bottom: 12px;
    padding: 12px;
    background: var(--rossa-white);
    border: 1px solid var(--rossa-border);
    border-radius: var(--rossa-radius);
  }
  #contenido_admin .rossa-services-current-table td {
    flex: 1 1 100%;
    padding: 4px 0;
    text-align: left;
  }
  #contenido_admin .rossa-services-current-table td[data-label="Servicio"],
  #contenido_admin .rossa-services-current-table td[data-label="Precio"] {
    flex: 1 1 calc(50% - 5px);
    min-width: 0;
  }
  #contenido_admin .rossa-services-current-table td[data-label]::before {
    content: attr(data-label);
    display: block;
    color: var(--rossa-navy);
    text-transform: uppercase;
    letter-spacing: .04em;
    font-size: 10px;
    font-weight: 700;
    margin-bottom: 2px;
  }
  #contenido_admin .rossa-services-current-table input[type="number"],
  #contenido_admin .rossa-services-current-table select {
    display: block;
    width: 100%;
    margin: 0;
    box-sizing: border-box;
    text-align: left;
  }
}

/*===== 61. TIPOGRAFÍA UNIFICADA — Work Sans en todo el PMS =====*/
/* Fuera a propósito: correos, PDF (mpdf), diapositivas .theme_1…5 y los monospace intencionados. */

/* Base. Misma especificidad que lydia (0,0,1) pero carga después → gana. */
body { font-family: var(--rossa-font); }

/* Los controles no heredan `font-family` del body; `inherit` respeta cualquier declaración más específica. */
#contenido_admin input,
#contenido_admin select,
#contenido_admin textarea,
#contenido_admin button,
#menu input, #menu select, #menu button,
#toolbar input, #toolbar select, #toolbar button,
body.lologin input, body.lologin select, body.lologin textarea, body.lologin button {
  font-family: inherit;
}

/* §14 ya normaliza `.ui-widget`, pero el tema smoothness tiene otra regla para los controles de dentro. */
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button {
  font-family: var(--rossa-font);
}
/* select2: campo de búsqueda inline del multiselect. */
.select2-container .select2-search--inline .select2-search__field { font-family: inherit; }

/*----- Restos de lydia.css con fuente propia: cada selector replica la especificidad del original -----*/
.archivos,                  /* lydia.css:318   Arial */
.archivosfecha,             /* lydia.css:329   Arial */
.cuadro_estancia_lotes,     /* lydia.css:2386  'Arial' */
.cuadro_uso_lotes,          /* lydia.css:2629  'Arial' */
#addcats,                   /* lydia.css:2724  Arial */
#delcats,                   /* lydia.css:2735  Arial */
#btnup,                     /* lydia.css:2746  Arial */
#btndown,                   /* lydia.css:2757  Arial */
#portal a,                  /* lydia.css:1933  Times New Roman */
.secart h2,                 /* lydia.css:2785  Times New Roman */
.facti h2 {                 /* lydia.css:2988  Times New Roman */
  font-family: var(--rossa-font);
}

/* `.pestana_pins span` — pagina_llaves.css:165, Verdana. */
.pestana_pins span { font-family: var(--rossa-font); }

/* Las reglas `.theme_N .titulo, .desc` de lydia tienen una coma de más: ese `.desc` suelto pinta de Arial cualquier `.desc` del PMS. */
#contenido_admin .desc { font-family: var(--rossa-font); }
#contenido_admin [class*="theme_"] .desc { font-family: Arial, Helvetica, sans-serif; }
#contenido_admin .theme_2 .desc { font-family: 'Passion One'; }
/*===== 35. DISPONIBILIDAD Y PRECIOS (module=gestor_estancias) — form #avaibility / tabla .day_calendar =====*/

/* --- Tabla contenedora -------------------------------------------------- */
#contenido_admin .day_calendar {
  width: 100%;
  table-layout: fixed;   /* columnas uniformes y alineadas; la tabla = ancho del contenedor */
  border-collapse: separate;
  border-spacing: 0;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
}

#contenido_admin .day_calendar > thead {
  display: table-header-group !important;
  position: sticky;          /* la cabecera de fechas acompaña al scroll vertical */
  top: 52px;                 /* bajo la barra superior fija (#toplydia, 52px) */
  z-index: 10;
}
#contenido_admin .day_calendar > tbody { display: table-row-group !important; box-shadow: none !important; }
/* sin overflow en el form: un ancestro con overflow atraparía el sticky del thead */
#contenido_admin #avaibility { max-width: 100%; margin-top: 40px; }
#contenido_admin .day_calendar tr td,
#contenido_admin .day_calendar tr th {
  border-radius: 0;
  height: auto;
  padding: 6px 4px;
  vertical-align: middle;
}
/* columna izquierda (etiquetas de fila) */
#contenido_admin .day_calendar .headcol {
  width: 130px !important;
  color: var(--rossa-muted);
  font: 600 12px/1.3 var(--rossa-font);
  text-align: left;
  padding-left: 4px;
  background: var(--rossa-white);
}

/* --- Cabeceras de día (mes / día-semana / número): bloque rosa suave ----- */
/* mes (negro -> rosa, texto muted) */
#contenido_admin .day_calendar .cell_big {
  background-color: #fef0f4;   /* rosa sólido (no rgba) para que el header sticky sea opaco */
  color: var(--rossa-ink);     /* mes en negro */
  font: 700 13px/1.2 var(--rossa-font);   /* ligeramente mayor */
  text-transform: none;
}
/* Al cambiar de mes la cabecera alterna de color */
#contenido_admin .day_calendar .cell_big.ge-mes-impar,
#contenido_admin .day_calendar .weekname.ge-mes-impar,
#contenido_admin .day_calendar .weekday.ge-mes-impar {
  background-color: #e2f1ef;
}
#contenido_admin .day_calendar .cell_big.ge-mes-impar { color: #0b4a47; }
/* Celda de mes colapsada (una por mes, colspan)*/
#contenido_admin .day_calendar .ge-mes {
  padding: 7px 12px;
  text-align: left;
  letter-spacing: .02em;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 0;
}
/* día de la semana (gris -> rosa) */
#contenido_admin .day_calendar .weekname {
  background-color: #fef0f4;   /* rosa sólido (no rgba) para que el header sticky sea opaco */
  color: var(--rossa-muted);
  font: 600 11px/1.2 var(--rossa-font);
  font-weight: 600 !important;   /* gana a .cell_bold !important */
}
/* número de día */
#contenido_admin .day_calendar .weekday {
  background-color: #fef0f4;   /* rosa sólido (no rgba) para que el header sticky sea opaco */
  color: var(--rossa-ink);
  font: 400 13px/1.2 var(--rossa-font);
  font-weight: 400 !important;
}
/* fin de semana hotelero (viernes y sábado): anula el azul !important de lydia */
#contenido_admin .day_calendar .weekend {
  background-color: #fdf3dd !important;
  color: #8a6a1d !important;
}
/* hoy: pastilla teal sobre las filas de día y número (gana al finde) */
#contenido_admin .day_calendar .weekname.ge-hoy {
  background-color: var(--rossa-teal) !important;
  color: rgba(255, 255, 255, .8) !important;
  border-radius: 8px 8px 0 0;
}
#contenido_admin .day_calendar .weekday.ge-hoy {
  background-color: var(--rossa-teal) !important;
  color: var(--rossa-white) !important;
  font-weight: 700 !important;
  border-radius: 0 0 8px 8px;
}
/* esquina superior izquierda de las cabeceras: limpia */
#contenido_admin .day_calendar thead .headcol,
#contenido_admin .day_calendar tr:has(> .cell_big) .headcol,
#contenido_admin .day_calendar tr:has(> .weekname) .headcol,
#contenido_admin .day_calendar tr:has(> .weekday) .headcol {
  background: var(--rossa-white);
}

/* --- Barra de tipo de habitación (fila con th.headcol.cell_bold.cell_big) - */
#contenido_admin .day_calendar tr:has(> th.headcol.cell_bold.cell_big) > th,
#contenido_admin .day_calendar tr:has(> th.headcol.cell_bold.cell_big) > td {
  background: #5e8287;
  color: var(--rossa-white);
}
#contenido_admin .day_calendar th.headcol.cell_bold.cell_big {
  font: 700 13px/1.3 var(--rossa-font) !important;
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: 9px 10px;
  white-space: nowrap;
}

/* --- Cabeceras de plan (Plan conectado / Restricciones por defecto…) ----- */
#contenido_admin .day_calendar .cabgestest {
  height: auto !important;
  background: transparent;
  color: var(--rossa-teal);
  font: 700 12px/1.3 var(--rossa-font) !important;
  letter-spacing: 0;
  text-transform: none;
  border-radius: 0;
  padding: 8px 2px 4px;
}
/* mini separador bajo los sub-títulos (Est mínima y máxima / Check-in/out) */
#contenido_admin .day_calendar th.cabgestest:not(.head_gerestriction_plan):not(.head_geprice_plan) {
  border-bottom: 2px solid var(--rossa-cyan);
}

/* --- Precios de planes relativos (derivados, solo lectura) --------------- */
/* el PHP traía color:darkblue inline; ahora llevan .ge-price-rel */
#contenido_admin .day_calendar .ge-price-rel {
  color: var(--rossa-ink);
  font: 600 12px/1.4 var(--rossa-font);
  white-space: nowrap;
}

/* --- Disp. real: colores duros -> pastel ---------------------------------- */
#contenido_admin .day_calendar .green-number  { background-color: #d9efc0; color: var(--rossa-ink); }
#contenido_admin .day_calendar .yellow-number { background-color: #fdeebc; color: var(--rossa-ink); }
#contenido_admin .day_calendar .red-number    { background-color: #fbdfe5; color: var(--rossa-ink); }
#contenido_admin .day_calendar td.cont-disponibilidad {
  text-align: center;
  font-size: 12px !important;
}
/* celda Disp. real */
#contenido_admin .day_calendar td.cont-disponibilidad:not(.disp-channel) {
  border-radius: 0;
  padding: 0 12px;            /* banda de ~60px (celda 84 − 24) = ancho del select */
  background-clip: content-box;
}

/* --- Selects de disponibilidad --- */
#contenido_admin .day_calendar select {
  width: auto;
  min-width: 0;
  max-width: 60px;
  border: 1px solid currentColor;
  border-radius: 0 !important;   /* cuadrado: Chrome respeta radius 0 en select */
  background: transparent !important;
  font-family: var(--rossa-font);
  font-size: 11px;
  padding: 2px 2px;              /* compacto, pero deja ver la flecha nativa */
  cursor: pointer;
}
/* el desplegable abierto hereda la fuente del sistema si no se fija en <option> */
#contenido_admin .day_calendar select option { font-family: var(--rossa-font); }
#contenido_admin .day_calendar select.green-number  { color: var(--rossa-green); }
#contenido_admin .day_calendar select.yellow-number { color: #b8860b; }
#contenido_admin .day_calendar select.red-number    { color: var(--rossa-red); }
#contenido_admin .day_calendar select:focus { outline: none; }

/* --- Botones de la cabecera (CARGAR / Ver fechas / acciones en lote) ------ */
#contenido_admin:has(#avaibility) input[type="submit"]:not(.admin_boton) {
  background: var(--rossa-teal);
  color: var(--rossa-white);
  border: 0;
  border-radius: var(--rossa-radius);
  padding: 8px 16px;
  font: 600 13px/1 var(--rossa-font);
  cursor: pointer;
}
#contenido_admin:has(#avaibility) input[type="submit"]:not(.admin_boton):hover {
  background: var(--rossa-petrol-dark);
}

/* --- Cierre canales / web: checkbox + "Abierta" -> icono candado --------- */
/* el checkbox real se oculta (el label sigue alternándolo por for=) */
#contenido_admin .day_calendar input.chcerrada,
#contenido_admin .day_calendar input.cerrada {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  margin: 0;
  pointer-events: none;
}
#contenido_admin .day_calendar td:has(.lblcerrada) {
  text-align: center;
}
#contenido_admin .day_calendar .lblcerrada {
  display: inline-block;
  font-size: 0;
  line-height: 1;
  cursor: pointer;
  background: transparent;
  padding: 0;
}
/* No hay <i> donde aplicar §32: se replica su técnica con máscara Lucide y currentColor (caja 1em). */
#contenido_admin .day_calendar .lblcerrada::before,
#contenido_admin .day_calendar td:has(.can-checkin)::before,
#contenido_admin .day_calendar td:has(.can-checkin)::after {
  content: "";
  display: inline-block;
  width: 1em;
  height: 1em;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;    mask-repeat: no-repeat;
  -webkit-mask-position: center;     mask-position: center;
  -webkit-mask-size: contain;        mask-size: contain;
}
#contenido_admin .day_calendar .lblcerrada::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/lock-open.svg");
          mask-image: url("https://cdn.rossa.app/icons/lock-open.svg");
  font-size: 15px;
  color: var(--rossa-green);
}
/* el icono refleja el estado REAL que se guardará = checkbox :checked (cerrada). */
#contenido_admin .day_calendar input.cerrada:checked + .lblcerrada::before,
#contenido_admin .day_calendar input.chcerrada:checked + .lblcerrada::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/lock.svg");
          mask-image: url("https://cdn.rossa.app/icons/lock.svg");
  color: var(--rossa-red);
}

/* --- Est. mínima y máxima: pastillas rosa suaves (anula inline) ---------- */
#contenido_admin .day_calendar input[name^="minstay-"],
#contenido_admin .day_calendar input[name^="ignore-minstay-"],
#contenido_admin .day_calendar input[name^="maxstay-"],
#contenido_admin .day_calendar input[name^="ignore-maxstay-"] {
  background-color: #f4b6a6 !important;   /* estancia máxima: melocotón */
  color: var(--rossa-ink);
  border: 0;
  border-radius: 6px;
  width: 26px !important;
  height: auto;
  text-align: center;
  font: 600 11px/1.4 var(--rossa-font);
  padding: 3px 0;
  margin: 0 1px;
}
/* estancia mínima: rosa (distinta de la máxima, melocotón) */
#contenido_admin .day_calendar input[name^="minstay-"],
#contenido_admin .day_calendar input[name^="ignore-minstay-"] { background-color: #fcd2e0 !important; }

/* --- Check-in / out: acentos verde (in) / naranja (out) (anula inline) --- */
#contenido_admin .day_calendar input.can-checkin {
  accent-color: var(--rossa-green) !important;
}
#contenido_admin .day_calendar input.can-checkout {
  accent-color: var(--rossa-coral) !important;
}
#contenido_admin .day_calendar td:has(.can-checkin) {
  text-align: center;
}

/* --- Barra de tipo de habitación centrada ------------------------------- */
/* el th ocupa toda la fila y centra; las celdas vacías colapsan a 0 */
#contenido_admin .day_calendar tr:has(> th.headcol.cell_bold.cell_big) > .tdempty {
  width: 0 !important;
  padding: 0 !important;
  border: 0;
}
#contenido_admin .day_calendar th.headcol.cell_bold.cell_big {
  text-align: center;
  width: 100% !important;
}

/* --- Plan de precios: inputs de precio limpios con € ---------------------- */
#contenido_admin .day_calendar input[name^="price-"] {
  width: 100%;
  max-width: 58px;            /* no llena la celda -> separación entre inputs */
  -webkit-appearance: none;   /* quita el spinner nativo (su caja blanca) */
  appearance: none;
  /* Firefox: `-moz-appearance` es un ALIAS de `appearance` y tiene que ir DESPUÉS de `appearance:none`. */
  -moz-appearance: textfield;
  border: 0;
  border-radius: 0;           /* cuadrado */
  background-color: var(--rossa-surface);
  /* chevron arriba/abajo teal propio (sin fondo), a la derecha */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='16' viewBox='0 0 10 16'%3E%3Cpath d='M2 6l3-3 3 3M2 10l3 3 3-3' fill='none' stroke='%23005e66' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 3px center;
  background-size: 8px 13px;
  box-sizing: border-box;
  text-align: center;
  font: 700 13px/1.3 var(--rossa-font);
  color: var(--rossa-teal);
  padding: 4px 13px 4px 3px;  /* hueco a la derecha para el chevron */
}
#contenido_admin .day_calendar input[name^="price-"]:focus {
  outline: none;
  box-shadow: 0 0 0 1px var(--rossa-teal) inset;
}
/* ocultar del todo el spinner nativo (la caja blanca de las flechas) */
#contenido_admin .day_calendar input[name^="price-"]::-webkit-inner-spin-button,
#contenido_admin .day_calendar input[name^="price-"]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  display: none;
}

#contenido_admin .day_calendar .input-symbol-euro::after {
  content: "" !important;
}

/*----- Botón "ver timeline de precios": icono info como máscara Lucide porque §32 no mapea fa-info-circle -----*/
#contenido_admin .day_calendar td:has(> .ge-price-timeline) { white-space: nowrap; }
#contenido_admin .day_calendar td:has(> .ge-price-timeline) .input-symbol-euro {
  display: inline-block;
  width: calc(100% - 17px);
  max-width: 58px;
  vertical-align: middle;
}
/* el input de precio trae width:56px fijo: en estas celdas debe ceñirse a su hueco o pisa el icono */
#contenido_admin .day_calendar td:has(> .ge-price-timeline) input[name^="price-"],
#contenido_admin .day_calendar td:has(> .ge-price-timeline) input[name^="ignore-price-"] {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
#contenido_admin .ge-price-timeline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 15px;
  height: 15px;
  margin-left: 1px;
  vertical-align: middle;
}
#contenido_admin .ge-price-timeline i {
  display: block;
  width: 13px;
  height: 13px;
  font-size: 0;              /* anula el glifo FA */
}
#contenido_admin .ge-price-timeline i::before {
  content: "";
  display: block;
  width: 13px;
  height: 13px;
  background-color: var(--rossa-muted);
  -webkit-mask-image: url("https://cdn.rossa.app/icons/info.svg");  mask-image: url("https://cdn.rossa.app/icons/info.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}
#contenido_admin .ge-price-timeline:hover i::before { background-color: var(--rossa-teal); }

/* --- Fila "Disp. real" entera clicable (abre/cierra el detalle) ----------- */
#contenido_admin .day_calendar tr:has(> .ge-dispo-realhead) { cursor: pointer; }

/* --- Filtros: unificados con .rossa-filters/.filter-container (como gestor_pedidos) --- */
/* Sin caja propia: hereda el fondo/gap/alineación de .rossa-filters, alineados a la izquierda. */
#contenido_admin .rossa-gestor-estancias-filter-bar {
  padding: 0;
  /* gestor_pedidos separa título/contenido con un <br> tras el h1; aquí no lo hay, se repone en margin-top. */
  margin: 24px 0 16px;
  border: 0;
  background: transparent;
  justify-content: flex-start;
  text-align: left;   /* algún ancestro de esta pantalla centra el texto por defecto */
}
/* Los <form>/.fechas-calendar dejan de ser cajas: sus hijos (.filter-container, botones)
   pasan a ser flex items directos de .rossa-filters, igual que en gestor_pedidos. */
#contenido_admin .rossa-gestor-estancias-filter-bar .rossa-establecimiento-filter-form,
#contenido_admin .rossa-gestor-estancias-filter-bar .fechas-calendar,
#contenido_admin .rossa-gestor-estancias-filter-bar #fechas {
  display: contents;
}

#contenido_admin .rossa-gestor-estancias-filter-bar .rossa-establecimiento-filter-submit,
#contenido_admin .rossa-gestor-estancias-filter-bar #fechas input[type="submit"] {
  align-self: flex-end !important;
  height: 36px !important;
  margin: 0 !important;
}
/* Los rótulos se centraban dentro de su .filter-container: fuerza alineación a la izquierda. */
#contenido_admin .rossa-gestor-estancias-filter-bar .filter-container {
  align-items: flex-start !important;
}
#contenido_admin .rossa-gestor-estancias-filter-bar .filter-title {
  align-self: flex-start !important;
  width: 100%;
  text-align: left !important;
}
/* Restablecer + Realizar acciones en lote: agrupados, en su propia fila debajo de los filtros. */
#contenido_admin .rossa-gestor-estancias-filter-bar .rossa-filter-actions {
  flex: 1 0 100%;
}
@media (max-width: 700px) {
  /* en columna, flex-basis:100% del bloque de arriba pasa a ser alto, no ancho: hace falta width explícito */
  #contenido_admin .rossa-gestor-estancias-filter-bar .rossa-filter-actions {
    width: 100%;
  }
  /* CARGAR / Ver fechas: ancho completo, como el resto de filtros apilados */
  #contenido_admin .rossa-gestor-estancias-filter-bar .rossa-establecimiento-filter-submit,
  #contenido_admin .rossa-gestor-estancias-filter-bar #fechas input[type="submit"] {
    width: 100% !important;
  }
  /* Restablecer / Realizar acciones en lote: mitad y mitad en su fila */
  #contenido_admin .rossa-gestor-estancias-filter-bar .rossa-filter-actions .rossa-filter-reset-btn {
    flex: 1 1 0;
    text-align: center;
  }
}

/* --- Detalle fino (Figma): etiquetas, findes uniformes, separadores, flechas - */
/* etiquetas de fila (columna izquierda) en cyan */
#contenido_admin .day_calendar th.headcol {
  color: var(--rossa-cyan);
  font: 400 12px/1.3 var(--rossa-font);
}
/* separadores finos entre filas de datos (excluye cabeceras, barra de habitación y chips de plan) */
#contenido_admin .day_calendar tr:not(:has(.cell_big)):not(:has(.weekname)):not(:has(.weekday)):not(:has(.cabgestest)):not(:has(.head_gerestriction_plan)):not(:has(.head_geprice_plan)) > th,
#contenido_admin .day_calendar tr:not(:has(.cell_big)):not(:has(.weekname)):not(:has(.weekday)):not(:has(.cabgestest)):not(:has(.head_gerestriction_plan)):not(:has(.head_geprice_plan)) > td {
  border-bottom: 1px solid rgba(22, 41, 45, .07);
}
/* check-in / out: flechas entrada (verde) y salida (naranja) junto a las casillas */
#contenido_admin .day_calendar td:has(.can-checkin) { white-space: nowrap; }
#contenido_admin .day_calendar td:has(.can-checkin)::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/log-in.svg");
          mask-image: url("https://cdn.rossa.app/icons/log-in.svg");
  color: var(--rossa-green);
  font-size: 11px;
  margin-right: 3px;
  vertical-align: middle;
}
#contenido_admin .day_calendar td:has(.can-checkin)::after {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/log-out.svg");
          mask-image: url("https://cdn.rossa.app/icons/log-out.svg");
  color: var(--rossa-coral);
  font-size: 11px;
  margin-left: 3px;
  vertical-align: middle;
}

/* --- Cada tipo de habitación como "tarjeta": hueco arriba + barra redondeada - */
/* hueco gris entre bloques (lee como tarjetas sobre fondo claro) */
#contenido_admin .day_calendar tr:has(> th.headcol.cell_bold.cell_big) > th,
#contenido_admin .day_calendar tr:has(> th.headcol.cell_bold.cell_big) > td {
  border-top: 18px solid var(--rossa-surface);
}
/* esquinas superiores redondeadas de la barra teal */
#contenido_admin .day_calendar th.headcol.cell_bold.cell_big {
  border-radius: var(--rossa-radius) var(--rossa-radius) 0 0;
}


/*===== 35b. DISPONIBILIDAD Y PRECIOS — refinamiento fino (cargado al final, gana) =====*/

/* El filtro "Plan de tarifas", Desde/Hasta y Restablecer/Lote ya se unificaron arriba
   con .rossa-filters/.filter-container/.rossa-filter-reset-btn: no hace falta CSS propio. */
/* botón Ver fechas: teal 38px (no pedido, se deja como estaba) */
#contenido_admin:has(#avaibility) #fechas input[type="submit"] {
  height: 38px;
  box-sizing: border-box;
  margin: 0;
  background: var(--rossa-teal);
  color: var(--rossa-white);
  border: 0;
  border-radius: var(--rossa-radius);
  padding: 0 18px;
  font: 600 13px/1 var(--rossa-font);
  cursor: pointer;
}
#contenido_admin:has(#avaibility) #fechas input[type="submit"]:hover {
  background: var(--rossa-petrol-dark);
}
/* "Restablecer" y "Realizar acciones en lote" usan .rossa-filter-reset-btn (ver gestor_pedidos): sin CSS propio. */

/* ---- Botonera unificada ---- */
#contenido_admin:has(#avaibility) input[type="submit"].rossa-establecimiento-filter-submit {
  height: 38px;
  box-sizing: border-box;
  padding: 0 18px;
  border-radius: var(--rossa-radius);
  font: 600 13px/1 var(--rossa-font);
}

/* ---- Quitar la franja gris sobre la barra de habitación (hueco blanco) ---- */
#contenido_admin .day_calendar tr:has(> th.headcol.cell_bold.cell_big) > th,
#contenido_admin .day_calendar tr:has(> th.headcol.cell_bold.cell_big) > td {
  border-top: 22px solid var(--rossa-white);
}

/* ---- Separadores tipo tabla: líneas claras entre filas de datos ---------- */
#contenido_admin .day_calendar tr:not(:has(.cell_big)):not(:has(.weekname)):not(:has(.weekday)):not(:has(.cabgestest)):not(:has(.head_gerestriction_plan)):not(:has(.head_geprice_plan)) > th,
#contenido_admin .day_calendar tr:not(:has(.cell_big)):not(:has(.weekname)):not(:has(.weekday)):not(:has(.cabgestest)):not(:has(.head_gerestriction_plan)):not(:has(.head_geprice_plan)) > td {
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin .day_calendar tr:has(+ tr > .head_gerestriction_plan) > th,
#contenido_admin .day_calendar tr:has(+ tr > .head_gerestriction_plan) > td,
#contenido_admin .day_calendar tr:has(+ tr > .head_geprice_plan) > th,
#contenido_admin .day_calendar tr:has(+ tr > .head_geprice_plan) > td,
#contenido_admin .day_calendar tr:has(+ tr > .cell_big) > th,
#contenido_admin .day_calendar tr:has(+ tr > .cell_big) > td {
  border-bottom: none !important;
}

/* ---- Separación clara de secciones: barras de plan a todo el ancho -------- */
/* hueco claro antes + barra teal-tint en TODA la fila de la cabecera de plan */
#contenido_admin .day_calendar tr:has(> th.head_gerestriction_plan) > th,
#contenido_admin .day_calendar tr:has(> th.head_gerestriction_plan) > td,
#contenido_admin .day_calendar tr:has(> th.head_geprice_plan) > th,
#contenido_admin .day_calendar tr:has(> th.head_geprice_plan) > td {
  border-top: 20px solid var(--rossa-white);     /* hueco igual al de los sub-títulos */
  background: var(--rossa-surface) !important;   /* divisor de sección gris neutro */
}
#contenido_admin .day_calendar th.head_gerestriction_plan,
#contenido_admin .day_calendar th.head_geprice_plan {
  color: var(--rossa-ink) !important;
  font: 700 11px/1.3 var(--rossa-font) !important;
  letter-spacing: .04em;
  text-transform: uppercase;
  /* !important obligado: lydia.css:2216 y :2223 centran con !important y el nowrap desbordaba a la derecha. */
  text-align: left !important;
  padding: 8px 12px;
  white-space: nowrap;
  overflow: visible;
}

/* Celdas sin redondeo para que el separador inferior sea una línea recta continua. */
#contenido_admin .day_calendar td.cont-disponibilidad { border-radius: 0; }
#contenido_admin .day_calendar input[name^="minstay-"],
#contenido_admin .day_calendar input[name^="ignore-minstay-"],
#contenido_admin .day_calendar input[name^="maxstay-"],
#contenido_admin .day_calendar input[name^="ignore-maxstay-"] { border-radius: 6px !important; }
#contenido_admin .day_calendar select { border-radius: 6px; }

/*===== 35c. SIN SCROLL HORIZONTAL DE PÁGINA: el overflow se contiene en el propio form =====*/
#contenido_admin #avaibility { display: block; max-width: 100%; margin-top: 22px; }
#contenido_admin .day_calendar { border-spacing: 0 !important; }
#contenido_admin .day_calendar tr td,
#contenido_admin .day_calendar tr th { padding: 8px 2px; }
#contenido_admin .day_calendar .headcol { width: 92px !important; }
/* table-layout:fixed reparte el resto en columnas uniformes (la tabla = ancho contenedor) */
#contenido_admin .day_calendar select {
  width: 100%;
  min-width: 0;
  padding: 2px 2px;
  font-size: 11px;
}
/* La regla general de selects */
#contenido_admin .day_calendar select:not([multiple]):not([size]) {
  padding: 2px 14px 2px 4px;
  background-image: url("https://cdn.rossa.app/icons/chevron-down.svg?bg") !important;
  background-repeat: no-repeat !important;
  background-position: right 3px center !important;
  background-size: 10px 10px !important;
}
#contenido_admin .day_calendar input[name^="price-"],
#contenido_admin .day_calendar input[name^="ignore-price-"] {
  box-sizing: border-box;
  width: 56px;                /* total < celda -> centrado deja separación */
  max-width: 56px;
  padding: 4px 13px 4px 3px;
  font-size: 13px;
}
#contenido_admin .day_calendar input[name^="minstay-"],
#contenido_admin .day_calendar input[name^="ignore-minstay-"],
#contenido_admin .day_calendar input[name^="maxstay-"],
#contenido_admin .day_calendar input[name^="ignore-maxstay-"] {
  width: 21px !important;
  padding: 2px 0;
  margin: 0 1px;
  font-size: 11px;
}
/* barra de habitación: título en UNA línea, se extiende sobre la barra teal */
#contenido_admin .day_calendar th.headcol.cell_bold.cell_big {
  width: 92px !important;
  white-space: nowrap !important;
  overflow: visible;
  text-align: left;
}
/* check-in/out: flechas ENCIMA de las casillas (como el Figma), no a los lados */
#contenido_admin .day_calendar td:has(.can-checkin) {
  position: relative;
  padding: 17px 2px 4px;
  text-align: center;
  white-space: nowrap;
}
#contenido_admin .day_calendar td:has(.can-checkin)::before,
#contenido_admin .day_calendar td:has(.can-checkin)::after {
  position: absolute;
  top: 3px;
  font-size: 12px;
  margin: 0;
}
#contenido_admin .day_calendar td:has(.can-checkin)::before {
  left: 50%;
  margin-left: -16px;
  color: var(--rossa-green);
}
#contenido_admin .day_calendar td:has(.can-checkin)::after {
  left: 50%;
  margin-left: 5px;
  color: var(--rossa-coral);
}
#contenido_admin .day_calendar input.can-checkin,
#contenido_admin .day_calendar input.can-checkout {
  -webkit-appearance: none;
  appearance: none;
  width: 13px !important;
  height: 13px !important;
  margin: 0 2px !important;
  border: 1.5px solid var(--rossa-ink);
  border-radius: 3px;
  background: var(--rossa-white);
  position: relative;
  cursor: pointer;
  vertical-align: middle;
}
#contenido_admin .day_calendar input.can-checkin:checked  { border-color: var(--rossa-green); }
#contenido_admin .day_calendar input.can-checkout:checked { border-color: var(--rossa-coral); }
#contenido_admin .day_calendar input.can-checkin:checked::after,
#contenido_admin .day_calendar input.can-checkout:checked::after {
  content: "";
  position: absolute;
  left: 3.5px; top: 0.5px;
  width: 3px; height: 6px;
  border-style: solid;
  border-width: 0 1.5px 1.5px 0;
  transform: rotate(45deg);
}
#contenido_admin .day_calendar input.can-checkin:checked::after  { border-color: var(--rossa-green); }
#contenido_admin .day_calendar input.can-checkout:checked::after { border-color: var(--rossa-coral); }

/* --- Plan compacto (campos disabled): todo el estado en gris -------------- */
/* candado (abierto o cerrado) gris */
#contenido_admin .day_calendar input.cerrada:disabled + .lblcerrada::before,
#contenido_admin .day_calendar input.chcerrada:disabled + .lblcerrada::before {
  color: var(--rossa-muted);
}
#contenido_admin .day_calendar input.cerrada:disabled + .lblcerrada,
#contenido_admin .day_calendar input.chcerrada:disabled + .lblcerrada { cursor: default; }
/* flechas y casillas de check-in/out grises */
#contenido_admin .day_calendar td:has(.can-checkin:disabled)::before,
#contenido_admin .day_calendar td:has(.can-checkin:disabled)::after {
  color: var(--rossa-muted);
}
#contenido_admin .day_calendar input.can-checkin:disabled,
#contenido_admin .day_calendar input.can-checkout:disabled {
  border-color: var(--rossa-muted);
  cursor: default;
}
#contenido_admin .day_calendar input.can-checkin:disabled:checked::after,
#contenido_admin .day_calendar input.can-checkout:disabled:checked::after {
  border-color: var(--rossa-muted);
}
/* pastillas de est. mínima/máxima grises (anulan el rosa/melocotón) */
#contenido_admin .day_calendar input[name^="minstay-"]:disabled,
#contenido_admin .day_calendar input[name^="ignore-minstay-"]:disabled,
#contenido_admin .day_calendar input[name^="maxstay-"]:disabled,
#contenido_admin .day_calendar input[name^="ignore-maxstay-"]:disabled {
  background-color: var(--rossa-surface) !important;
  color: var(--rossa-muted);
}
/* aviso "?" junto al nombre del plan compacto (title -> tippy) */
#contenido_admin .day_calendar th.head_gerestriction_plan i.ge-compact-lock {
  font-size: 14px;
  color: var(--rossa-muted);
  vertical-align: -2px;
  cursor: help;
}

/* Campo inválido al guardar */
#contenido_admin .incorrect_field,
#contenido_admin .day_calendar input.incorrect_field {
  background-color: var(--rossa-red) !important;
  color: var(--rossa-white) !important;
  border: 1px solid var(--rossa-red) !important;
  font-size: inherit !important;
  font-weight: 600 !important;
}
#contenido_admin .incorrect_field:focus {
  outline: 2px solid var(--rossa-red);
  outline-offset: 1px;
}
/* No hay propiedad de color para el pseudo-elemento del spinner: se invierte el gris. */
#contenido_admin input.incorrect_field::-webkit-inner-spin-button,
#contenido_admin input.incorrect_field::-webkit-outer-spin-button {
  filter: invert(1) brightness(2);
}

/*===== 36. DISPONIBILIDAD Y PRECIOS — layout de tarjetas =====*/
#contenido_admin #avaibility {
  background: transparent;
  padding: 0;
  border-radius: 0;
}
/* Sin overflow:hidden: rompería el sticky del thead. */
#contenido_admin .ge-room {
  margin: 0 0 60px;
  background: transparent;
  border-radius: 0;
}
#contenido_admin .ge-room:last-child { margin-bottom: 0; }
/* nombre del alojamiento: titular de sección, no una barra de color */
#contenido_admin .ge-room-bar {
  margin: 0 0 6px;
  padding: 0 2px;
  background: transparent;
  color: var(--rossa-teal);
  text-align: left;
  font: 700 19px/1.3 var(--rossa-font);
  letter-spacing: .02em;
  text-transform: uppercase;
  border-radius: 0;
}
/* secciones: planas dentro del contenedor blanco (sin caja ni radio propios) */
#contenido_admin .ge-card {
  margin: 0;
  padding: 16px 16px 14px;
  background: transparent;
  border-radius: 0;
}
/* título de sección dentro de la tarjeta */
#contenido_admin .ge-card-title {
  margin: 0 0 14px;
  padding: 10px 14px;
  background: var(--rossa-tint);
  border-left: 3px solid var(--rossa-teal);
  border-radius: 0 var(--rossa-radius) var(--rossa-radius) 0;
  font: 700 13px/1.3 var(--rossa-font);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--rossa-teal);
}
#contenido_admin .ge-card:not(:first-child) .ge-card-title { margin-top: 34px; }
#contenido_admin .ge-card .day_calendar { margin: 0; }
/* el calendario cabe sin scroll horizontal de página*/
#contenido_admin:has(#avaibility) { min-width: 0; }
#contenido_admin .day_calendar td { width: auto !important; }

/* Cabecera de fechas sticky */
#contenido_admin .ge-global-header {
  position: sticky;
  top: 0;
  z-index: 30;
  padding: 10px 16px 0;
  background: var(--rossa-white);
  box-sizing: border-box;
}
#contenido_admin .ge-global-header .day_calendar { width: 100%; }
/* Scrollbar horizontal DEL CONTENEDOR (el form), no de la página */
#contenido_admin #avaibility::-webkit-scrollbar { height: 10px; width: 10px; }
#contenido_admin #avaibility::-webkit-scrollbar-track { background: var(--rossa-white); }
#contenido_admin #avaibility::-webkit-scrollbar-thumb { background: var(--rossa-teal); border-radius: 999px; }
#contenido_admin #avaibility::-webkit-scrollbar-thumb:hover { background: #00474d; }
/* Primer alojamiento: su barra y la cabecera de fechas viven FUERA de la tarjeta */
#contenido_admin .ge-room--headless {
  margin-top: 0;
  border-radius: 0 0 var(--rossa-radius) var(--rossa-radius);
}

/* Rangos largos (2+ meses). */
#contenido_admin #avaibility {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  position: relative;
}
#contenido_admin #avaibility > .ge-room-bar,
#contenido_admin #avaibility > .ge-global-header,
#contenido_admin #avaibility > .ge-room {
  min-width: var(--ge-tablewidth, 0px);
}
#contenido_admin .ge-card .day_calendar { width: 100%; }

/* ----- Móvil: calendario usable. */
@media (max-width: 700px) {
  /* El scroll horizontal vive en el CONTENEDOR también en móvil */
  #contenido_admin .ge-room-scroll { overflow: visible; }
  #contenido_admin .ge-card { overflow: visible; }
  /* table-layout:fixed + ancho = 104 + nºdías×64 vía var del printer: las 3 secciones quedan alineadas */
  #contenido_admin .ge-card .day_calendar,
  #contenido_admin .ge-global-header .day_calendar {
    table-layout: fixed !important;
    width: var(--ge-tablewidth, 1320px) !important;
    min-width: var(--ge-tablewidth, 1320px) !important;
  }
  #contenido_admin .day_calendar td,
  #contenido_admin .day_calendar th {
    width: 64px !important;
    box-sizing: border-box;
    white-space: nowrap;
  }

  #contenido_admin .day_calendar td.ge-mes { width: auto !important; }
  /* etiquetas: ancho fijo (igual en todas las secciones) */
  #contenido_admin .day_calendar .headcol {
    width: 104px !important;
    box-sizing: border-box;
    white-space: normal;
  }
  /* la barra superior en móvil mide 48px (en escritorio son 52px) */
  #contenido_admin .day_calendar > thead { top: 48px; }
  /* sticky respecto a #avaibility, cuyo borde ya está bajo la barra superior: top:0 */
  #contenido_admin .ge-global-header { top: 0; }
  /* en móvil el hueco libre es menor (barra superior de 48px) */
  #contenido_admin #avaibility { --ge-viewport-offset: 190px; }
}
#contenido_admin .day_calendar > tbody > tr:last-child > th,
#contenido_admin .day_calendar > tbody > tr:last-child > td { border-bottom: none !important; }
#contenido_admin .day_calendar > thead tr > th,
#contenido_admin .day_calendar > thead tr > td {
  padding-top: 1px;
  padding-bottom: 1px;
  line-height: 1.1;
}
/* sin separador ENCIMA de los sub-títulos */
#contenido_admin .day_calendar tr:has(+ tr > .cabgestest:not(.head_gerestriction_plan):not(.head_geprice_plan)) > th,
#contenido_admin .day_calendar tr:has(+ tr > .cabgestest:not(.head_gerestriction_plan):not(.head_geprice_plan)) > td {
  border-bottom: none !important;
}
/* un poco más de aire JUSTO ENCIMA de los sub-títulos (separa el grupo anterior). */
#contenido_admin .day_calendar tr:has(> .cabgestest:not(.head_gerestriction_plan):not(.head_geprice_plan)) > th,
#contenido_admin .day_calendar tr:has(> .cabgestest:not(.head_gerestriction_plan):not(.head_geprice_plan)) > td {
  padding-top: 20px;
}

/*----- Desplegable de ocupación: sin JS, un checkbox oculto en el <label> leído con `:has()` por tabla -----*/
#contenido_admin .day_calendar tr.ge-dispo-extra { display: none; }
#contenido_admin .day_calendar.ge-dispo-open tr.ge-dispo-extra { display: table-row; }

/* el label ocupa la celda entera: flecha + rótulo, todo clicable */
#contenido_admin .ge-dispo-toggle {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  padding: 4px 2px;
  border-radius: 4px;
  cursor: pointer;
}
#contenido_admin .ge-dispo-toggle:hover { background: var(--rossa-tint); }
#contenido_admin .ge-dispo-toggle-txt { pointer-events: auto; }
#contenido_admin .ge-dispo-toggle:has(input:focus-visible) {
  outline: none;
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .25);
}
#contenido_admin .ge-dispo-toggle-chk {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
#contenido_admin .ge-dispo-toggle-arrow {
  width: 14px;
  height: 14px;
  background-color: var(--rossa-teal);
  -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg");  mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
  transition: transform .15s ease;
}
#contenido_admin .day_calendar.ge-dispo-open .ge-dispo-toggle-arrow { transform: rotate(90deg); }
/* El hueco se hace con borde transparente + background-clip para que el verde no lo rellene. */
#contenido_admin .day_calendar tr:has(> .ge-dispo-realhead) > th,
#contenido_admin .day_calendar tr:has(> .ge-dispo-realhead) > td {
  border-top: 8px solid transparent;
  background-clip: padding-box;
}

/*----- Paginación de estancias (ge-pagination) — las clases las emite printPagination() -----*/
#contenido_admin .ge-pagination {
  margin-top: 20px;
  padding: 14px 0 4px;
  text-align: center;
}
#contenido_admin .ge-pag-info {
  margin-bottom: 10px;
  font: 600 13px/1.4 var(--rossa-font);
  color: var(--rossa-muted);
}
#contenido_admin .ge-pag-nav {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}
#contenido_admin .ge-pag-btn {
  display: inline-flex;
  align-items: center;
  height: 34px;
  padding: 0 14px;
  box-sizing: border-box;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  color: var(--rossa-ink);
  font: 600 12.5px/1 var(--rossa-font);
  text-decoration: none;
}
#contenido_admin a.ge-pag-btn:hover {
  background: var(--rossa-surface);
  color: var(--rossa-ink);
}
#contenido_admin .ge-pag-btn--mini { padding: 0 10px; font-size: 11.5px; }
#contenido_admin .ge-pag-btn--off { opacity: .45; cursor: default; }
#contenido_admin .ge-pag-current {
  padding: 0 8px;
  font: 700 13px/1 var(--rossa-font);
  color: var(--rossa-teal);
}

/*----- Aviso de acción (showNotice) -----*/
#contenido_admin .rossa-notice {
  border: 0;
  border-radius: 8px;
  box-shadow: none;
  padding: 12px 16px;
  margin: 10px 0;
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  background: #eff2f3;
  color: var(--rossa-ink);
}
#contenido_admin .rossa-notice::before { content: none; }   /* barra lateral fuera */
#contenido_admin .rossa-notice--success { background: #ebf7f3; color: var(--rossa-green-fig); }
#contenido_admin .rossa-notice--warning { background: #fdf3ec; color: var(--rossa-coral); }
/* la X de cerrar hereda el color del mensaje en vez del gris suelto */
#contenido_admin .rossa-notice .rossa-close { color: inherit; opacity: .55; font-size: 16px; }
#contenido_admin .rossa-notice .rossa-close:hover { opacity: 1; }

#contenido_admin .rossa-notice .rossa-notice__icon {
  flex: 0 0 auto;
  width: 40px;      /* como el PNG que sustituye (iba a 50px con su propio margen) */
  height: 40px;
  margin-right: 8px;
  font-size: 40px;
  line-height: 1;
  color: inherit;   /* verde en success, coral en warning (lo pone .rossa-notice--*) */
}

/*----- Barra de scroll horizontal gemela (§36): la crea y sincroniza el JS de gestor_estancias.php -----*/
#contenido_admin .ge-hscroll {
  position: sticky;
  bottom: 67px;              /* pegada al borde superior de la botonera fija (67px de alto) */
  z-index: 25;
  height: 12px;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
}
#contenido_admin .ge-hscroll > div { height: 1px; }
#contenido_admin .ge-hscroll.is-hidden { display: none; }
#contenido_admin .ge-hscroll::-webkit-scrollbar { height: 10px; }
#contenido_admin .ge-hscroll::-webkit-scrollbar-track { background: var(--rossa-white); border-radius: 999px; }
#contenido_admin .ge-hscroll::-webkit-scrollbar-thumb { background: var(--rossa-teal); border-radius: 999px; }
#contenido_admin .ge-hscroll::-webkit-scrollbar-thumb:hover { background: #00474d; }

/* modo "fijada": la conmuta el JS de gestor_estancias.php cuando el sticky no puede funcionar */
#contenido_admin .ge-global-header.is-fixed {
  position: fixed;
  z-index: 30;
  overflow: hidden;         /* recorta la tabla desplazada con translateX */
  box-sizing: border-box;
  background: var(--rossa-white);
  /* al fijarse deja de heredar el ancho total de la tabla: toma el ancho visible que le pone el JS */
  min-width: 0 !important;
}
/* El ancho exacto lo pone el JS copiándolo de la tabla de datos: `--ge-tablewidth` desvía las columnas. */
#contenido_admin .ge-global-header.is-fixed .day_calendar {
  min-width: 0;
}

/*----- 63. HUB DE COMUNICACIONES DE LA RESERVA (admin/includes/comms_hub.php, gate COMMS_HUB_ACTIVE) -----*/
/* Los números de la esquina están medidos contra #topbottom (985), el lanzador (1490) y DevTools (99990). */

/* La fuente va explícita: la lista de §61 está acotada a #contenido_admin/#menu/#toolbar y este panel cuelga de <body>. */
#rossa-comms-toggle {
  position: fixed;
  right: 16px;
  bottom: 64px;
  z-index: 1490;
  font-family: var(--rossa-font);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  padding: 0;
  border: 0;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-teal);
  color: var(--rossa-white);
  cursor: pointer;
  font-size: 20px;
  line-height: 1;
}
#rossa-comms-toggle:hover { background: var(--rossa-petrol-dark); }
#rossa-comms-toggle .fa-comments { font-size: 20px; }

/* Badge de no leídos (lo rellena S3). Mismo lenguaje que #rossa-avisos-badge. */
#rossa-comms-badge {
  position: absolute;
  top: -4px;
  right: -6px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-red);
  color: var(--rossa-white);
  font-size: 10px;
  font-weight: 700;
  line-height: 16px;
  text-align: center;
}

/* Panel: plano, como el de avisos (borde de 1px, sin sombra) — decisión del rediseño. */
.rossa-comms-hub {
  position: fixed;
  right: 78px;
  bottom: 56px;
  z-index: 1500;
  display: flex;
  flex-direction: column;
  width: 600px;
  max-width: calc(100vw - 94px);
  /* Alto DEFINIDO por `top` + `bottom`: con `max-height` la caja flex se encoge y el iframe se queda en 150px. */
  top: 8px;
  overflow: hidden;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 12px;
  box-sizing: border-box;
}
.rossa-comms-hub[hidden] { display: none; }

/*----- Cabecera: con quién hablas + cerrar -----*/
.rossa-comms-hub__head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  background: var(--rossa-strip);
}
.rossa-comms-hub__quien {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  margin-right: auto;
}
.rossa-comms-hub__nombre {
  font: 600 14px/1.2 var(--rossa-font);
  color: var(--rossa-navy);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* El origen lleva `title` con la explicacion completa, que la resuelve el descriptor. */
.rossa-comms-hub__sub {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px;
  font: 400 12px/1.3 var(--rossa-font);
  color: var(--rossa-muted);
}
.rossa-comms-hub__sep { color: var(--rossa-border); }
.rossa-comms-hub__origen {
  color: var(--rossa-petrol);
  font-weight: 500;
}
.rossa-comms-hub__nota {
  flex: none;
  margin: 0;
  padding: 8px 16px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  font: 400 12px/1.4 var(--rossa-font);
}
.rossa-comms-hub__cerrar {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 0;
  border-radius: var(--rossa-radius);
  background: transparent;
  color: var(--rossa-muted);
  cursor: pointer;
  font-family: var(--rossa-font);   /* ver la nota de #rossa-comms-toggle: la §61 no llega aquí */
  font-size: 18px;
  line-height: 1;
}
.rossa-comms-hub__cerrar:hover { background: var(--rossa-surface); color: var(--rossa-ink); }

/*----- Pestañas por canal: mismo lenguaje que el resto de pestañas del panel -----*/
.rossa-comms-hub__tabs {
  display: flex;
  gap: 4px;
  padding: 0 16px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
}
.rossa-comms-hub__tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 8px;
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: var(--rossa-muted);
  cursor: pointer;
  font: 600 12px/1 var(--rossa-font);
  text-transform: uppercase;
  letter-spacing: .02em;
}
.rossa-comms-hub__tab:hover { color: var(--rossa-ink); }
.rossa-comms-hub__tab.is-activa {
  color: var(--rossa-teal);
  border-bottom-color: var(--rossa-teal);
}

/* ---- Cuerpo: un panel por canal, solo el activo visible ---- */
.rossa-comms-hub__cuerpo {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
}
.rossa-comms-hub__panel {
  flex: 1 1 auto;
  min-height: 0;
  display: none;
}
.rossa-comms-hub__panel.is-activo { display: flex; flex-direction: column; }
.rossa-comms-hub__panel[hidden] { display: none; }

/* El cliente de chat va en iframe y ocupa todo el panel. */
.rossa-comms-hub__frame {
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  border: 0;
  border-bottom-left-radius: 12px;
  border-bottom-right-radius: 12px;
}

.rossa-comms-hub__lista {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 12px 16px;
}

.rossa-comms-hub__aviso {
  margin: 0;
  padding: 16px;
  color: var(--rossa-muted);
  font: 400 13px/1.5 var(--rossa-font);
}

/* ---- Móvil: a pantalla completa, mismo breakpoint que el resto del panel ---- */
@media (max-width: 700px) {
  .rossa-comms-hub {
    right: 0;
    bottom: 0;
    left: 0;
    top: 48px; /* el toolbar en móvil mide 48px */
    width: auto;
    max-width: none;
    max-height: none;
    border-radius: 0;
    border-left: 0;
    border-right: 0;
    border-bottom: 0;
  }
  .rossa-comms-hub__frame { border-radius: 0; }
  #rossa-comms-toggle { right: 12px; bottom: 60px; }
}

/*----- 62.b Central de comunicaciones (admin/chat.php) -----*/
/* Se salta entre conversaciones con `setPhone`, sin recargar el iframe: recargarlo regeneraría el token. */
.rossa-central {
  display: grid;
  grid-template-columns: 340px 1fr;
  gap: 16px;
  align-items: stretch;
  /* El valor es la reserva: lo que manda es el que ajusta el JS del panel. */
  height: calc(100vh - 260px);
  min-height: 420px;
}
/*---- Folio: estado AEAT VNifV2 en ficha de cliente ----*/
#contenido_admin .fv-detail .fv-aeat {
  margin-top: 10px;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid var(--rossa-border);
  background: #fff;
}
#contenido_admin .fv-detail .fv-aeat__label {
  margin: 0 0 4px;
  font-size: 13px;
  font-weight: 600;
  display: flex;
  align-items: flex-start;
  gap: 6px;
  line-height: 1.35;
}
#contenido_admin .fv-detail .fv-aeat--ok {
  background: rgba(25, 172, 138, 0.1);
  border-color: rgba(25, 172, 138, 0.45);
}
#contenido_admin .fv-detail .fv-aeat--ok .fv-aeat__label { color: var(--rossa-green); }
#contenido_admin .fv-detail .fv-aeat--ko {
  background: var(--rossa-salmon);
  border-color: rgba(234, 92, 54, 0.45);
}
#contenido_admin .fv-detail .fv-aeat--ko .fv-aeat__label { color: var(--rossa-coral); }
#contenido_admin .fv-detail .fv-aeat--warn {
  background: rgba(234, 92, 54, 0.08);
  border-color: rgba(234, 92, 54, 0.3);
}
#contenido_admin .fv-detail .fv-aeat--warn .fv-aeat__label { color: var(--rossa-coral); }
#contenido_admin .fv-detail .fv-aeat--pending,
#contenido_admin .fv-detail .fv-aeat--skip {
  background: #fafbfb;
}
#contenido_admin .fv-detail .fv-aeat--pending .fv-aeat__label,
#contenido_admin .fv-detail .fv-aeat--skip .fv-aeat__label { color: var(--rossa-muted); }
#contenido_admin .fv-detail .fv-aeat__meta,
#contenido_admin .fv-detail .fv-aeat__census {
  margin: 0;
  font-size: 12px;
  color: var(--rossa-muted);
  line-height: 1.4;
}
.rossa-central__lista {
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  padding: 4px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 12px;
  box-sizing: border-box;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
#contenido_admin .fv-detail .fv-panel__head-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
}
#contenido_admin .fv-detail #fv-aeat-check.is-blocked,
#contenido_admin .fv-detail #fv-aeat-check[aria-disabled="true"] {
  opacity: 0.55;
  cursor: help;
}

/*----- 62. ESTADO VERIFACTU (SAT) — module=mp&modpage=fcts02:verifactuVisor -----*/
#contenido_admin:has(> .rossa-fact-verifactu) > h1 {
  display: none !important;
}
.rossa-central__fila {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-areas: "quien badge" "meta badge";
  gap: 2px 8px;
  width: 100%;
  padding: 10px 12px;
  border: 0;
  border-radius: var(--rossa-radius);
  background: transparent;
  color: var(--rossa-ink);
  cursor: pointer;
  text-align: left;
  font: 400 13px/1.3 var(--rossa-font);
}
.rossa-central__fila:hover { background: var(--rossa-tint); }
.rossa-central__fila:disabled { cursor: default; opacity: .55; }
.rossa-central__fila.is-abierta { background: var(--rossa-strip); }
.rossa-central__fila.is-pendiente .rossa-central__quien { font-weight: 600; color: var(--rossa-navy); }
.rossa-central__quien {
  grid-area: quien;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rossa-central__meta {
  grid-area: meta;
  color: var(--rossa-muted);
  font-size: 11px;
}
.rossa-central__sinreserva {
  padding: 1px 6px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-surface);
  color: var(--rossa-muted);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .02em;
}
.rossa-central__badge {
  grid-area: badge;
  align-self: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-red);
  color: var(--rossa-white);
  font: 700 10px/18px var(--rossa-font);
  text-align: center;
}
.rossa-central__panel {
  display: flex;
  flex-direction: column;
  min-width: 0;
  overflow: hidden;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 12px;
  box-sizing: border-box;
}
.rossa-central__cabecera {
  flex: none;
  padding: 12px 16px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  background: var(--rossa-strip);
}
.rossa-central__abierta {
  font: 600 14px/1.2 var(--rossa-font);
  color: var(--rossa-navy);
  display: block;
}
/* Nace con `hidden` y lo enseña el JS al abrir una conversación. */
.rossa-central__sub {
  display: block;
  margin-top: 2px;
  font: 400 12px/1.3 var(--rossa-font);
  color: var(--rossa-muted);
}
.rossa-central__sub[hidden] { display: none; }
.rossa-central__frame {
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  border: 0;
}
.rossa-central__vacio {
  margin: 0;
  padding: 16px;
  color: var(--rossa-muted);
  font: 400 13px/1.5 var(--rossa-font);
}

@media (max-width: 900px) {
  .rossa-central { grid-template-columns: 1fr; height: auto; }
  .rossa-central__lista { max-height: 240px; }
  .rossa-central__panel { height: 70vh; }
}

/*----- 62.c Panel de LISTA (mensajería de la OTA) -----*/
.rossa-comms-hub__msg {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-areas: "autor fecha" "texto texto";
  gap: 2px 8px;
  padding: 8px 0;
  border-bottom: 1px solid var(--rossa-hairline-soft);
}
.rossa-comms-hub__msg:last-child { border-bottom: 0; }
.rossa-comms-hub__msg-autor {
  grid-area: autor;
  font: 500 11px/1.2 var(--rossa-font);
  color: var(--rossa-muted);
}
.rossa-comms-hub__msg.is-propio .rossa-comms-hub__msg-autor { color: var(--rossa-teal); }
.rossa-comms-hub__msg-fecha {
  grid-area: fecha;
  font: 400 11px/1.2 var(--rossa-font);
  color: var(--rossa-muted);
}
.rossa-comms-hub__msg-texto {
  grid-area: texto;
  font: 400 13px/1.45 var(--rossa-font);
  color: var(--rossa-ink);
  white-space: pre-wrap;
  overflow-wrap: break-word;
}
.rossa-comms-hub__aviso--sutil {
  padding-top: 0;
  font-size: 12px;
  font-style: italic;
}

/*===== 63. SCREEN: Gestor de agencias (admin/agencias.php) =====*/
#agencias_panel {
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
  max-width: 100%;
}
#agencias_panel h1 { margin: 0 0 6px; }
:is(#agencias_panel, #rossa-actionbar) .agencias-status {
  margin-left: 12px;
  color: var(--rossa-muted);
  font-size: 13px;
}

/* Reutiliza el componente `.rossa-modal` (§25); aquí solo el layout del formulario. */
#modal-nueva-agencia .rossa-modal__body {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
#modal-nueva-agencia .rossa-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
#modal-nueva-agencia label {
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 13px;
  color: var(--rossa-ink);
}
#modal-nueva-agencia .rossa-field input[type="text"] { width: 100%; }
#modal-nueva-agencia input[type="file"] {
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
}
#modal-nueva-agencia .agencias-logo-hint { font-weight: 400; color: var(--rossa-muted); font-size: 12px; }
#modal-nueva-agencia .rossa-modal__foot {
  justify-content: space-between;
  align-items: center;
  gap: 10px;
}
#modal-nueva-agencia .agencias-modal-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

/* Modal de sincronizacion: aqui solo la medida y el centrado; el cromo lo pone .rossa-modal (§25). */
#modal-sync-agencias .rossa-modal { max-width: 380px; }
#modal-sync-agencias .rossa-modal__body {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 28px 24px;
  text-align: center;
}
#modal-sync-agencias .rossa-modal__title { margin: 0; }
#modal-sync-agencias .fa-spinner { font-size: 26px; color: var(--rossa-teal); }
#modal-sync-agencias .agencias-sync-msg {
  margin: 0;
  color: var(--rossa-muted);
  font-size: 13px;
}
#modal-sync-agencias .rossa-modal__foot { justify-content: center; }

/* Identidad: logo de marca + nombre + #id */
#tabla-agencias .agencias-nombre {
  display: flex;
  align-items: center;
  gap: 10px;
}
#tabla-agencias .agencias-logo {
  width: 32px;
  height: 32px;
  border-radius: 6px;
  object-fit: contain;
  background: var(--rossa-white);
  flex: none;
}
#tabla-agencias .agencias-logo--ph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--rossa-surface);
  color: var(--rossa-muted);
  font-weight: 700;
  text-transform: uppercase;
}
#tabla-agencias .agencias-nombre .ag-name { font-weight: 600; color: var(--rossa-ink); }
#tabla-agencias td.agencias-id { color: var(--rossa-muted); font-size: 12px; font-weight: 400; }


/* Blacklist: chips de correo + alta inline */
#tabla-agencias .agencias-emails {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
#tabla-agencias .agencias-emails:empty { display: none; }
#tabla-agencias .agencias-emails li {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--rossa-surface);
  border-radius: var(--rossa-radius-pill);
  padding: 4px 6px 4px 12px;
  font-size: 13px;
}
#tabla-agencias .agencias-emails .del-email {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  color: var(--rossa-muted);
  text-decoration: none;
  font-weight: 700;
  line-height: 1;
}
#tabla-agencias .agencias-emails .del-email:hover { background: var(--rossa-salmon); color: var(--rossa-red); }
#tabla-agencias .agencias-addemail {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-top: 8px;
}
#tabla-agencias .agencias-emails:empty + .agencias-addemail { margin-top: 0; }
#tabla-agencias .agencias-addemail .new-email {
  width: 190px;
  max-width: 100%;
  box-sizing: border-box;
  height: auto;
  padding: 7px 10px;
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-ink);
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
}
#tabla-agencias .agencias-addemail .new-email::placeholder { color: var(--rossa-muted); opacity: 1; }
#tabla-agencias .agencias-addemail .new-email:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .18);
}
#tabla-agencias .agencias-addemail .add-email { flex: none; white-space: nowrap; }
/* Tag ESTÁTICO (excludePaymentReminders), no un interruptor: por eso no reutiliza `.rossa-toggle`. */
#tabla-agencias .ag-flag { cursor: default; }
#tabla-agencias .ag-flag--on {
  background-color: rgba(234, 92, 54, .12);
  border-color: rgba(234, 92, 54, .30);
  color: var(--rossa-coral);
}
/* El estado contrario se dice con palabra apagada, no con otra pastilla: la pastilla es la excepcion. */
#tabla-agencias .agencias-pago-off { color: var(--rossa-muted); }

/* Nº y borrar se ajustan al contenido con el truco de .acciones_res (65.4); la blacklist es la que estira. */
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th.agencias-id,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.agencias-id {
  width: 1%;
  white-space: nowrap;
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.agencias-blacklist { min-width: 240px; }
#tabla-agencias .agencias-addemail .new-email {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
}

/* El bloque del reset no trae margen propio (la 57 lo usa dentro de #rossa-filters): aqui va suelto y pega con la tabla. */
#agencias_panel .rossa-filter-actions { margin-bottom: 18px; }

/* Cada filtro al ancho de su contenido: con un flex-basis fijo el aire quedaba DENTRO del contenedor. */
#agencias_panel .rossa-filters { gap: 12px 14px; }
#agencias_panel .rossa-filters .filter-container {
  flex: 0 1 auto;
  min-width: 0;
}
#agencias_panel .rossa-filters select.rossa-input { width: auto; }
#agencias_panel .rossa-filters .filter-container--ag-buscar { flex: 0 1 220px; }
/* Buscador del filtro: la lupa va de fondo, como el calendario de la 71.2. */
#contenido_admin .rossa-filters input#ag-f-nombre {
  padding-right: 30px;
  background-image: url("https://cdn.rossa.app/icons/search.svg?bg");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 14px 14px;
}
#contenido_admin .rossa-filters input#ag-f-nombre::-webkit-search-cancel-button { display: none; }

/* La celda de la blacklist crece con los chips: el alto fijo de la 65.3 la dejaria apretada. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.agencias-blacklist {
  height: auto;
  padding-top: 14px;
  padding-bottom: 14px;
}

/* Reglas separadas a propósito: un pseudo-elemento desconocido invalidaría todo el grupo. */
#modal-nueva-agencia input[type="file"] { width: 100%; box-sizing: border-box; }
#modal-nueva-agencia input[type="file"]::file-selector-button {
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 13px;
  color: var(--rossa-teal);
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 8px 14px;
  margin-right: 12px;
  cursor: pointer;
  transition: border-color .15s ease, background-color .15s ease;
}
#modal-nueva-agencia input[type="file"]::file-selector-button:hover {
  background: var(--rossa-surface);
  border-color: var(--rossa-teal);
}
#modal-nueva-agencia input[type="file"]::-webkit-file-upload-button {
  font-family: var(--rossa-font);
  font-weight: 700;
  font-size: 13px;
  color: var(--rossa-teal);
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  padding: 8px 14px;
  margin-right: 12px;
  cursor: pointer;
  transition: border-color .15s ease, background-color .15s ease;
}
#modal-nueva-agencia input[type="file"]::-webkit-file-upload-button:hover {
  background: var(--rossa-surface);
  border-color: var(--rossa-teal);
}


/*----- 63.9 Movil (<=700px): 8 columnas no caben, cada fila pasa a ficha -----
  Mismo patron que #tabla_stay_closed_periods. El prefijo lleva id + clase dos
  veces porque la base de la 65.3 es (1,3,4) y hay que vencerla.               */
@media (max-width: 700px) {
  /* Acotado a esta pantalla: la barra envuelve para que el paginador, hermano flex de la botonera, no se salga del ancho.
     Sin `body:has()` esto tocaria tambien a gestor_clientes, cuya barra lleva TRES botones y no he podido ver. */
  body:has(#agencias_panel) #rossa-actionbar {
    flex-wrap: wrap;
    row-gap: 10px;
    padding: 12px 16px;
  }
  body:has(#agencias_panel) #rossa-actionbar .rossa-page-toolbar { flex: 1 1 100%; }
  body:has(#agencias_panel) #rossa-actionbar .rossa-page-toolbar__actions {
    align-items: stretch;
    gap: 8px;
  }
  body:has(#agencias_panel) #rossa-actionbar .rossa-actionbar-btn {
    flex: 1 1 0;
    width: auto;
    min-width: 0;
    height: auto;
    min-height: 30px;
    padding: 4px 10px;
    white-space: normal;
    line-height: 1.2;
  }
  body:has(#agencias_panel) #rossa-actionbar .rossa-pager {
    flex: 1 1 100%;
    justify-content: center;
  }
  #agencias_panel .rossa-filter-actions { display: block; }
  #agencias_panel .rossa-filter-actions .rossa-filter-reset-btn { width: 100%; }
  /* En columna los controles vuelven a ancho completo: el `width: auto` de arriba es solo para la fila. */
  #agencias_panel .rossa-filters select.rossa-input,
  #agencias_panel .rossa-filters input.rossa-input { width: 100%; }
  #agencias_panel .rossa-filters .filter-container--ag-buscar { flex: 1 1 auto; }
  /* Hueco al final del listado: la barra fija mide ~96px aqui (24 relleno + 30 botones + 10 + 32 paginador) y el
     bloque movil de la 3367 fuerza `body { padding-bottom: 0 !important }`, asi que el hueco no puede ir en el body. */
  #agencias_panel .rossa-table-scroll { margin-bottom: 110px; }

  #contenido_admin table.rossa-tbl#tabla-agencias > thead { display: none; }
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody,
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr,
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td {
    display: block;
    width: auto;
    box-sizing: border-box;
  }
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr {
    position: relative;
    margin-bottom: 10px;
    padding: 12px 48px 12px 14px;   /* hueco derecho para la papelera */
    background: var(--rossa-white);
    border: 1px solid var(--rossa-border);
    border-radius: var(--rossa-radius);
  }
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td {
    height: auto;
    min-width: 0;
    padding: 3px 0;
    text-align: left;
    border: 0;
  }
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td.agencias-id {
    width: auto;
  }
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td.acciones_res {
    position: absolute;
    top: 8px;
    right: 8px;
    width: auto;
    padding: 0;
  }

  /* Sin cabecera, cada dato necesita su rotulo. Va por nth-child y no por
     data-label para no tocar el marcado: si cambia el orden de columnas, aqui. */
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(4),
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(5),
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(6) {
    display: flex;
    align-items: center;
    gap: 10px;
  }
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(4)::before,
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(5)::before,
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(6)::before,
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(7)::before {
    color: var(--rossa-muted);
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
  }
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(4)::before,
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(5)::before,
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(6)::before { flex: 0 0 122px; }
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(4)::before { content: "Prepago"; }
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(5)::before { content: "Comunicaciones"; }
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(6)::before { content: "Recordatorios"; }
  /* La blacklist crece: el rotulo va encima, no al lado. */
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(7) { padding-top: 8px; }
  #contenido_admin table.rossa-tbl#tabla-agencias > tbody > tr > td:nth-child(7)::before {
    content: "Blacklist de correos";
    display: block;
    margin-bottom: 6px;
  }
  #tabla-agencias .agencias-addemail { flex-wrap: wrap; }
  #tabla-agencias .agencias-addemail .new-email { flex: 1 1 100%; }
}
/*===== 62. ADD_RESERVA — CABECERA FIJA DE RESULTADOS (table.reservas_boards thead) =====*/
/* lydia.css la ancla con `top:30px`, la medida de la barra antigua: aquí se reancla al alto real. */
#contenido_admin .reservas_boards thead.theadfixed {
  top: 72px;                          /* alto de #toolbar */
  z-index: 150;                       /* por debajo de #menu (200) y #toplydia (250) */
  background-color: var(--rossa-white);
  /* add_reserva_funcs.js fija el ancho que mide jQuery, sin el border-spacing: el relleno estira la banda al ancho real. */
  padding-left: 16px;
  padding-right: 16px;
  margin-left: -16px;
}
html.rossa-rail #contenido_admin .reservas_boards thead.theadfixed {
  top: 0;
}
/* Las filas del thead son transparentes: sin fondo propio asoma el contenido que scrollea por debajo. */
#contenido_admin .reservas_boards thead.theadfixed tr.cab,
#contenido_admin .reservas_boards thead.theadfixed tr.cab > td {
  background-color: var(--rossa-white);
}
/* El !important iguala al de la regla base de `tr.cab td`. */
#contenido_admin .reservas_boards thead.theadfixed tr.cab > td {
  border-top: 0 !important;
  border-bottom: 0 !important;
}

@media (max-width: 700px) {
  /* §21 baja la barra a 48px */
  #contenido_admin .reservas_boards thead.theadfixed { top: 48px; }
}
html.rossa-drawer-embed #contenido_admin .reservas_boards thead.theadfixed {
  top: 0;
}

/*===== 63. EDITOR DE CÓDIGOS DE DESCUENTO (module=add_codigo) =====*/
/* lydia flota el botón de guardar a la derecha; aquí va centrado bajo las tablas */
#contenido_admin form#codes #guardamodof {
  float: none;
  display: block;
  margin: 0 auto;
}
/*----- 61. AEAT NIF (módulo facturación) — pestaña module_config #aeatIdentificacion -----*/
#contenido_admin #aeatIdentificacion .rossa-aeat-ident {
  max-width: 760px;
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__title {
  margin: 0 0 8px;
  font-size: 20px;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__lead,
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__hint {
  margin: 0 0 16px;
  color: var(--rossa-muted);
  font-size: 13px;
  line-height: 1.5;
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__card {
  margin: 0 0 20px;
  padding: 18px 0 4px;
  border: 0;
  border-top: 1px solid var(--rossa-border);
  background: var(--rossa-white);
  box-shadow: none;
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__card h3 {
  margin: 0 0 10px;
  font-size: 15px;
  font-weight: 600;
  color: var(--rossa-teal);
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__status {
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 13px;
  line-height: 1.7;
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__on { color: var(--rossa-green); }
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__off { color: var(--rossa-coral); }
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__msg {
  margin: 0 0 16px;
  padding: 10px 12px;
  border-radius: var(--rossa-radius);
  font-size: 13px;
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__msg--ok {
  background: #e8f8f4;
  color: var(--rossa-green);
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__msg--err {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__form {
  display: grid;
  gap: 12px;
  max-width: 480px;
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__form label {
  display: grid;
  gap: 4px;
  font-size: 12px;
  font-weight: 600;
  color: var(--rossa-muted);
  text-transform: uppercase;
  letter-spacing: .04em;
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__form input[type="text"],
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__form input[type="password"],
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__form select {
  width: 100%;
  box-sizing: border-box;
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__actions {
  display: flex;
  gap: 8px;
  margin-top: 4px;
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__form--inline {
  margin-top: 12px;
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__result {
  margin-top: 16px;
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__result h4 {
  margin: 0 0 8px;
  font-size: 13px;
  color: var(--rossa-teal);
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__result dl {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 6px 12px;
  margin: 0;
  font-size: 13px;
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__result dt {
  color: var(--rossa-muted);
}
#contenido_admin #aeatIdentificacion .rossa-aeat-ident__result dd {
  margin: 0;
}

/*---- Folio: estado AEAT VNifV2 en ficha de cliente ----*/
#contenido_admin .fv-detail .fv-aeat {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--rossa-border);
}
#contenido_admin .fv-detail .fv-aeat__label {
  margin: 0 0 4px;
  font-size: 12px;
  font-weight: 600;
}
#contenido_admin .fv-detail .fv-aeat--ok .fv-aeat__label { color: var(--rossa-green); }
#contenido_admin .fv-detail .fv-aeat--ko .fv-aeat__label { color: var(--rossa-coral); }
#contenido_admin .fv-detail .fv-aeat--warn .fv-aeat__label { color: var(--rossa-coral); }
#contenido_admin .fv-detail .fv-aeat--pending .fv-aeat__label,
#contenido_admin .fv-detail .fv-aeat--skip .fv-aeat__label { color: var(--rossa-muted); }
#contenido_admin .fv-detail .fv-aeat__meta,
#contenido_admin .fv-detail .fv-aeat__census {
  margin: 0;
  font-size: 12px;
  color: var(--rossa-muted);
  line-height: 1.4;
}
#contenido_admin .fv-detail .fv-aeat__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}

/*----- 62. ESTADO VERIFACTU (SAT) — module=mp&modpage=fcts02:verifactuVisor -----*/
#contenido_admin:has(> .rossa-fact-verifactu) > h1 {
  display: none !important;
}
#contenido_admin .rossa-fact-verifactu {
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
}
#contenido_admin .rossa-fact-verifactu .vf-panel__empty {
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-verifactu .vf-table {
  background: var(--rossa-white);
  box-shadow: none;
}
#contenido_admin .rossa-fact-verifactu .vf-filter {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-verifactu .vf-filter.is-active {
  color: var(--rossa-teal);
  border-color: var(--rossa-teal);
  background: var(--rossa-white);
}
#contenido_admin .rossa-fact-verifactu .vf-table thead th {
  background: var(--rossa-white);
  color: var(--rossa-muted);
  border-bottom-color: var(--rossa-border);
}
#contenido_admin .rossa-fact-verifactu .vf-row--error td {
  background: var(--rossa-salmon);
}
#contenido_admin .rossa-fact-verifactu .vf-error {
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-verifactu .admin_link {
  color: var(--rossa-cyan);
}
#contenido_admin .rossa-fact-verifactu .vf-flash--ok {
  background: #e8f8f4;
  color: var(--rossa-green);
}
#contenido_admin .rossa-fact-verifactu .vf-flash--error {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-verifactu .vf-cancel-btn {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  box-shadow: none;
}
#contenido_admin .fv-banner__detail {
  margin-top: 8px;
  font-size: 13px;
  color: var(--rossa-muted);
  word-break: break-word;
}

/*===== 64. GESTOR DE PAGOS — modal «Seleccionar tipo de método de pago» =====*/

#modal-create-payment-method-selector .rossa-modal {
  max-width: 460px !important;
  min-height: 232px !important;
  transition: min-height .16s ease;
}
#modal-create-payment-method-selector .rossa-modal:has(.select2-container--open) {
  min-height: min(428px, 80vh) !important;
}
/* Sin :has() se reserva la altura siempre: preferible a recortar el desplegable. */
@supports not selector(:has(*)) {
  #modal-create-payment-method-selector .rossa-modal {
    min-height: min(428px, 80vh) !important;
  }
}
/* Recolocarse al crecer mueve el campo bajo el cursor */
#modal-create-payment-method-selector .select2-results__option {
  animation: rossa-pm-drop-armed .26s step-end;
}
@keyframes rossa-pm-drop-armed {
  from { pointer-events: none; }
  to   { pointer-events: auto; }
}
/* Sin esto el desplegable aparece entero de golpe y se ve recortado hasta que la caja crece. */
#modal-create-payment-method-selector .select2-dropdown {
  animation: rossa-pm-drop-in .16s ease both;
}
@keyframes rossa-pm-drop-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
#modal-create-payment-method-selector .rossa-modal__body {
  display: flex !important;
  flex-direction: column !important;
}
#contenido_admin.rossa-wc-edit .rossa-pm-typesel {
  padding: 20px 20px 4px;
  margin: 0;
}
#contenido_admin.rossa-wc-edit .rossa-pm-typesel__label {
  display: block;
  margin-bottom: 6px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
#contenido_admin.rossa-wc-edit .rossa-pm-typesel__hint {
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 1.45;
  color: var(--rossa-muted);
}
/* El helper mete todo el contenido en el __body, pie incluido. */
#contenido_admin.rossa-wc-edit .rossa-pm-typesel__foot {
  gap: 10px;
  margin-top: auto;
}
/* Control a ancho completo del campo. */
#modal-create-payment-method-selector .select2-container { width: 100% !important; }
#modal-create-payment-method-selector .select2-results > .select2-results__options {
  max-height: min(190px, calc(80vh - 192px));
  overflow-y: auto;
}

/*----- 64.1 Móvil (≤700px, el breakpoint del chrome legacy) -----------------*/
@media (max-width: 700px) {
  /* Anclado arriba: en pantallas bajas, centrar deja el modal debajo del teclado virtual. */
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay {
    padding: 12px !important;
    align-items: flex-start !important;
  }
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-modal {
    max-width: 100% !important;
    max-height: calc(100vh - 24px) !important;
    margin: 0 auto !important;
  }
  /* Mismo mecanismo, acotado a la pantalla (pantallas bajas / horizontal). */
  #modal-create-payment-method-selector .rossa-modal:has(.select2-container--open) {
    min-height: min(428px, calc(100vh - 24px)) !important;
  }
  #modal-create-payment-method-selector .select2-results > .select2-results__options {
    max-height: min(190px, calc(100vh - 216px));
  }
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-modal__head {
    padding: 12px 14px !important;
  }
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-modal__title {
    font-size: 15px !important;
    line-height: 1.3 !important;
  }
  #contenido_admin.rossa-wc-edit .rossa-pm-typesel { padding: 14px 14px 4px !important; }
  /* `column-reverse` invierte el orden del DOM, donde «Siguiente» va último. */
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-modal__foot {
    flex-direction: column-reverse !important;
    gap: 8px !important;
    padding: 12px 14px !important;
  }
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-modal__foot .admin_boton {
    width: 100% !important;
    margin: 0 !important;
    text-align: center !important;
  }
  /* El padding de 24px va en línea en el <form>, de ahí el !important. */
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay form {
    padding: 14px !important;
    gap: 12px !important;
  }
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row input,
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row select {
    max-width: 100% !important;
    width: 100% !important;
  }
}

/*----- 64.2 Cards de métodos y políticas (grid de .rossa-box-payment-methods) --                 */
#contenido_admin.rossa-wc-edit .rossa-box-payment-methods { align-items: stretch; }
#contenido_admin.rossa-wc-edit .rossa-box-payment-methods .rossa-wc-card {
  height: 100% !important;
  margin-bottom: 0 !important;
}
#contenido_admin.rossa-wc-edit .rossa-box-payment-methods .rossa-wc-card__body {
  flex-direction: column !important;
  align-items: stretch !important;
  justify-content: flex-start !important;
  gap: 12px !important;
  /* sangría izquierda = ancho del punto de estado + su gap, para alinear con el título */
  padding: 0 16px 14px 32px !important;
}
#contenido_admin.rossa-wc-edit .rossa-box-payment-methods .rossa-wc-card__body > p {
  flex: 0 0 auto !important;
  align-self: stretch !important;
  line-height: 1.45 !important;
  overflow-wrap: anywhere;
}
/* `margin-top: auto` las empuja al fondo para que queden alineadas entre cards de la misma fila. */
#contenido_admin.rossa-wc-edit .rossa-box-payment-methods .rossa-wc-card__actions {
  margin-top: auto !important;
  align-self: stretch !important;
  justify-content: flex-end !important;
  flex-wrap: wrap;
}
#contenido_admin.rossa-wc-edit .rossa-box-payment-methods .rossa-wc-card__name {
  line-height: 1.4 !important;
  overflow-wrap: anywhere;
}
#contenido_admin.rossa-wc-edit .rossa-box-payment-methods .rossa-wc-card__name .rossa-wc-tag {
  display: table !important;
  margin: 6px 0 0 !important;
}
#contenido_admin.rossa-wc-edit .rossa-box-payment-methods .rossa-wc-card__top {
  padding-top: 14px;
}

/*----- 64.3 Formularios de los modales y botones de asignaciones -----*/
#contenido_admin.rossa-wc-edit .rossa-form-row input[type="number"] {
  width: 100%;
  padding: 8px 14px;
  box-sizing: border-box;
}
#contenido_admin.rossa-wc-edit .rossa-form-row > div > input[type="number"] {
  flex: 1 1 auto;
  min-width: 90px;
}
#contenido_admin.rossa-wc-edit .rossa-form-row > div > input[type="number"] + .select2-container,
#contenido_admin.rossa-wc-edit .rossa-form-row > div > input[type="number"] + select {
  flex: 0 0 auto !important;
  width: 158px !important;
}
/* Mismo ancho que el texto más largo ("Desactivar") para que no baile al cambiar de estado. */
#contenido_admin.rossa-wc-edit .toggle-policy-assignment,
#contenido_admin.rossa-wc-edit form:has(input[value="update_assignment_status"]) > button {
  min-width: 106px;
  justify-content: center;
  text-align: center;
}

/*----- 64.4 Modales del gestor de pagos en móvil (≤700px) ---------------------- */
@media (max-width: 700px) {
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row {
    align-items: stretch !important;
    padding: 2px 0 !important;
    gap: 6px !important;
  }
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row > div {
    width: 100% !important;
    max-width: none !important;
  }
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row input,
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row textarea,
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row select,
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row .select2-container {
    max-width: none !important;
  }
  /* basis auto para que el `flex:1` en línea no lo deje en su mínimo */
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row > div > input[type="number"] + .select2-container,
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row > div > input[type="number"] + select {
    flex: 0 0 auto !important;
    width: 140px !important;
  }
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row > div > input[type="number"] {
    flex: 1 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
  }
  /* switch + texto de ayuda: la ayuda pasa debajo en vez de estrujarse al lado */
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row > div:has(> small) {
    flex-wrap: wrap !important;
    gap: 6px 12px !important;
  }
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-form-row > div > small {
    flex: 1 0 100%;
    line-height: 1.4;
  }
  /* el helper usa __footer (clase inexistente en el tema) y el selector nuevo __foot: se cubren las dos */
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-modal__footer,
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay form .rossa-modal__foot {
    flex-direction: column-reverse !important;
    gap: 8px !important;
    /* auto y no una medida fija: el pie tiene que quedarse pegado al fondo o el desplegable abierto lo tapa. */
    margin-top: auto !important;
  }
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-modal__footer .admin_boton,
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay form .rossa-modal__foot .admin_boton {
    width: 100% !important;
    margin: 0 !important;
    text-align: center !important;
  }
}

/*----- 64.5 Modales de asignación: mismo comportamiento que el selector de tipo -- */
#modal-assignment-add .rossa-modal,
#modal-policy-assignment .rossa-modal {
  max-width: 520px !important;
  min-height: 232px !important;
  transition: min-height .16s ease;
}
/* Crece al abrir el desplegable y vuelve al cerrarlo, proporcional al número de opciones */
#modal-assignment-add .rossa-modal:has(.select2-container--open),
#modal-policy-assignment .rossa-modal:has(.select2-container--open) {
  min-height: min(475px, 80vh) !important;
}
#modal-assignment-add .rossa-modal:has(.select2-container--open):has(.select2-results__option:first-child:nth-last-child(5)),
#modal-policy-assignment .rossa-modal:has(.select2-container--open):has(.select2-results__option:first-child:nth-last-child(5)) {
  min-height: min(450px, 80vh) !important;
}
#modal-assignment-add .rossa-modal:has(.select2-container--open):has(.select2-results__option:first-child:nth-last-child(4)),
#modal-policy-assignment .rossa-modal:has(.select2-container--open):has(.select2-results__option:first-child:nth-last-child(4)) {
  min-height: min(420px, 80vh) !important;
}
#modal-assignment-add .rossa-modal:has(.select2-container--open):has(.select2-results__option:first-child:nth-last-child(-n+3)),
#modal-policy-assignment .rossa-modal:has(.select2-container--open):has(.select2-results__option:first-child:nth-last-child(-n+3)) {
  min-height: min(350px, 80vh) !important;   /* apenas crece: el desplegable ya cabe */
}
@supports not selector(:has(*)) {
  #modal-assignment-add .rossa-modal,
  #modal-policy-assignment .rossa-modal { min-height: min(475px, 80vh) !important; }
}
#modal-assignment-add .select2-results__option,
#modal-policy-assignment .select2-results__option {
  animation: rossa-pm-drop-armed .26s step-end;
}
#modal-assignment-add .select2-dropdown,
#modal-policy-assignment .select2-dropdown {
  animation: rossa-pm-drop-in .16s ease both;
}
#modal-assignment-add .rossa-modal__body,
#modal-policy-assignment .rossa-modal__body {
  display: flex !important;
  flex-direction: column !important;
}
#modal-assignment-add .rossa-modal__body > form,
#modal-policy-assignment .rossa-modal__body > form {
  flex: 1 1 auto !important;
}
#modal-assignment-add .rossa-modal__footer,
#modal-policy-assignment .rossa-modal__footer {
  margin-top: auto !important;
}
#modal-assignment-add .select2-results > .select2-results__options,
#modal-policy-assignment .select2-results > .select2-results__options {
  max-height: min(160px, calc(80vh - 220px));
  overflow-y: auto;
}

/*----- 64.6 Móvil: dos ajustes de espacio en la pantalla de pagos -------------- */
@media (max-width: 700px) {
  #contenido_admin.rossa-wc-edit .rossa-modal-overlay .rossa-modal { padding: 0 !important; }

  #contenido_admin.rossa-wc-edit .rossa-wc-list .rossa-wc-card__body {
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 10px !important;
    padding: 0 14px 12px 30px !important;
  }
  #contenido_admin.rossa-wc-edit .rossa-wc-list .rossa-wc-card__body > p {
    flex: 0 0 auto !important;
    line-height: 1.45 !important;
  }
  #contenido_admin.rossa-wc-edit .rossa-wc-list .rossa-wc-card__actions {
    margin-left: 0 !important;
    justify-content: flex-end !important;
    flex-wrap: wrap;
  }
  #contenido_admin.rossa-wc-edit .rossa-wc-list .rossa-wc-card__top { padding: 12px 14px 0 !important; }
}

/*===== 65. TARJETA DE DATOS ESTÁNDAR (.rossa-datacard) =====*/

/*----- 65.1 Rejilla ---------------------------------------------------------- */
/* Las columnas se declaran por tramos y no con `auto-fill`: con auto-fill se colaba una 5ª columna. */
.rossa-datacard-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 28px 24px;
}
@media (min-width: 1024px) {
  .rossa-datacard-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 1300px) {
  .rossa-datacard-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/*----- 65.2 La tarjeta ------------------------------------------------------- */
.rossa-datacard {
  display: flex;
  flex-direction: column;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  box-shadow: none;
  overflow: hidden;
  font-family: var(--rossa-font);
  color: var(--rossa-navy);
}

.rossa-datacard--off { background: var(--rossa-strip); }

/* `relative` porque el __badge se ancla a la esquina superior derecha. */
.rossa-datacard__head {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 7px 10px;
  padding: 20px 24px 18px;
}
.rossa-datacard__head > .rossa-datacard__label { flex: 1 1 100%; }
.rossa-datacard__title {
  flex: 0 1 auto;            /* 0 de crecimiento: lo que vaya detrás del título no lo empuja a la derecha */
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  color: var(--rossa-navy);
  overflow-wrap: anywhere;
}

.rossa-datacard__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
  border-top: 1px solid var(--rossa-stroke);
  margin: 0 12px;
}
.rossa-datacard__row--single { grid-template-columns: minmax(0, 1fr); }
.rossa-datacard__cell {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 14px 12px 15px;
}
.rossa-datacard__cell + .rossa-datacard__cell { border-left: 1px solid var(--rossa-stroke); }

.rossa-datacard__label {
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
.rossa-datacard__value {
  font-size: 14px;
  line-height: 16px;
  font-weight: 400;
  font-style: normal;              /* varias clases legacy traen cursiva heredada */
  color: var(--rossa-navy);
  overflow-wrap: anywhere;
}
.rossa-datacard__value--em {                /* p. ej. el nombre de la plantilla */
  font-style: italic;
  color: var(--rossa-petrol-dark);
}
.rossa-datacard__value--muted { color: var(--rossa-muted); }

.rossa-datacard__sub {
  display: block;
  margin-top: 7px;
}
.rossa-datacard__sub-label {
  display: block;
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-coral);
}
.rossa-datacard__sub-value {
  display: block;
  margin-top: 2px;
  font-size: 13px;
  line-height: 16px;
  color: var(--rossa-navy);
  overflow-wrap: anywhere;
}

/* Banderas de condición: una por línea, con el punto medio del Figma. */
.rossa-datacard__flags { display: flex; flex-direction: column; gap: 3px; }
.rossa-datacard__flag {
  font-size: 10px;
  line-height: 14px;
  font-weight: 700;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
.rossa-datacard__flag::before { content: "\00B7\00A0"; }
.rossa-datacard__flag--ok      { color: var(--rossa-pag); }
.rossa-datacard__flag--warn    { color: var(--rossa-coral); }
.rossa-datacard__flag--info    { color: var(--rossa-db-400); }
.rossa-datacard__flag--neutral { color: var(--rossa-muted); }

.rossa-datacard__hint {
  display: inline-block;
  width: 15px;
  height: 15px;
  margin-left: 6px;
  vertical-align: -0.2em;
  background-color: var(--rossa-stroke);
  cursor: help;
  -webkit-mask-image: url("https://cdn.rossa.app/icons/eye.svg");
          mask-image: url("https://cdn.rossa.app/icons/eye.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}

.rossa-datacard__badge {
  position: absolute;
  top: 8px;
  right: 20px;
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  text-align: center;
  text-transform: uppercase;
  color: var(--rossa-red-800);
}

/*----- 65.3 Pie de acciones (solo iconos) — el texto se oculta con font-size:0 porque hay scripts que reescriben el textContent -----*/
.rossa-datacard__foot {
  margin: auto 0 0;                /* `auto` arriba pega el pie al fondo; los 0 laterales anulan el `margin-left:auto` legacy */
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;                       /* 28 + 16 = los 44px de paso del Figma */
  box-sizing: border-box;          /* si no, el min-height es solo el contenido y la barra crece con el padding */
  padding: 5px 16px;
  min-height: 40px;
  background: var(--rossa-strip-soft);
}
.rossa-datacard__foot > button,
.rossa-datacard__foot > a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 28px;
  height: 28px;
  flex: 0 0 auto;
  padding: 0;
  margin: 0;
  border: none;
  border-radius: var(--rossa-radius);
  background: transparent;
  box-shadow: none;
  font-size: 0;
  color: var(--rossa-stroke);
  cursor: pointer;
  text-decoration: none !important;
  transition: background-color .15s ease, color .15s ease;
}
.rossa-datacard__foot > button:hover,
.rossa-datacard__foot > a:hover { background: rgba(32, 92, 104, .10); }
.rossa-datacard__foot > button:focus-visible,
.rossa-datacard__foot > a:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .25);
}
.rossa-datacard__foot > button::before,
.rossa-datacard__foot > a::before {
  content: "";
  display: block;
  width: 18px;
  height: 18px;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}
/* Iconos: todos existen ya en el bucket del CDN (comprobado con curl, §32). */
.rossa-datacard__act--edit::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/square-pen.svg");
          mask-image: url("https://cdn.rossa.app/icons/square-pen.svg");
}
.rossa-datacard__act--copy::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/Copiar-Clonar.svg");
          mask-image: url("https://cdn.rossa.app/icons/Copiar-Clonar.svg");
}
.rossa-datacard__act--ok::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-check-big.svg");
          mask-image: url("https://cdn.rossa.app/icons/circle-check-big.svg");
}
.rossa-datacard__act--off::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-x.svg");
          mask-image: url("https://cdn.rossa.app/icons/circle-x.svg");
}
.rossa-datacard__act--del::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/trash-2.svg");
          mask-image: url("https://cdn.rossa.app/icons/trash-2.svg");
}
.rossa-datacard__act--view::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/eye.svg");
          mask-image: url("https://cdn.rossa.app/icons/eye.svg");
}
/* Se escriben desde el pie (0,2,1) para ganar al `color` de la regla base (0,1,1). */
.rossa-datacard__foot > .rossa-datacard__act--ok  { color: var(--rossa-pag); }
.rossa-datacard__foot > .rossa-datacard__act--off { color: var(--rossa-muted); }
.rossa-datacard__foot > .rossa-datacard__act--del { color: var(--rossa-red); }
.rossa-datacard__foot > .rossa-datacard__act--del:hover { background: var(--rossa-salmon); }

/* Specificity buster: `.cbtn-outline` (0,2,0) del <style> en línea de Comunicaciones ganaba a la regla base (0,1,1). */
.rossa-datacard__foot > button.cbtn,
.rossa-datacard__foot > a.cbtn {
  background: transparent;
  border: none;
  border-radius: var(--rossa-radius);
  box-shadow: none;
  color: var(--rossa-stroke);
}
.rossa-datacard__foot > button.cbtn:hover,
.rossa-datacard__foot > a.cbtn:hover {
  background: rgba(32, 92, 104, .10);
  border: none;
  color: var(--rossa-petrol);
}

/*----- 65.4 Móvil: una tarjeta por fila, campos apilados -------------------- */
@media (max-width: 700px) {
  .rossa-datacard-grid { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .rossa-datacard__row { grid-template-columns: minmax(0, 1fr); }
  .rossa-datacard__cell + .rossa-datacard__cell {
    border-left: none;
    border-top: 1px solid var(--rossa-hairline-soft);
  }
}

/*===== 65.5 Comunicaciones · Reglas de envío (module=gestor_template_triggers) =====*/
/* La especificidad está calculada para ganar al <style> en línea de comunicaciones/index.php. */
#contenido_admin .crule.rossa-datacard,
#contenido_admin .crule.rossa-datacard:hover {
  margin-bottom: 0;
  border: 1px solid var(--rossa-stroke);
  box-shadow: none;
  opacity: 1;
}
/* El JS del panel mueve `.on`/`.off` al pulsar, así que esto se actualiza sin recargar. */
#contenido_admin .crule.rossa-datacard.on .rossa-datacard__badge { display: none; }
#contenido_admin .crule.rossa-datacard.off { background: var(--rossa-strip); }

/* El JS le reescribe className y textContent: el icono se cuelga de las clases que sobreviven. */
.rossa-datacard__foot > .cbtn-toggle-on { color: var(--rossa-pag); }
.rossa-datacard__foot > .cbtn-toggle-on::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-check-big.svg");
          mask-image: url("https://cdn.rossa.app/icons/circle-check-big.svg");
}
.rossa-datacard__foot > .cbtn-toggle-off { color: var(--rossa-muted); }
.rossa-datacard__foot > .cbtn-toggle-off::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-x.svg");
          mask-image: url("https://cdn.rossa.app/icons/circle-x.svg");
}
/* Los hover de colores de index.php son (0,2,0): se neutralizan desde el pie (0,2,1). */
.rossa-datacard__foot > .cbtn-outline:hover,
.rossa-datacard__foot > .cbtn-toggle-on:hover,
.rossa-datacard__foot > .cbtn-toggle-off:hover {
  background: rgba(32, 92, 104, .10);
  border-color: transparent;
}
.rossa-datacard__foot > .cbtn-outline:hover { color: var(--rossa-petrol); }
.rossa-datacard__foot > .cbtn-toggle-on:hover  { color: var(--rossa-pag); }
.rossa-datacard__foot > .cbtn-toggle-off:hover { color: var(--rossa-petrol); }

/*===== 66. PANTALLA: Comunicaciones — cromo de la página (module=gestor_template_triggers) =====*/

/*----- 66.1 Título + selector de establecimiento en la barra (el selector lo pinta footer.php desde $rossa_toolbar_slot) -----*/
#contenido_admin h1.comm-title {
  display: flex;
  align-items: center;
  margin: 0 0 16px;
  font-family: var(--rossa-font);
  font-size: 20px;
  line-height: 20px;
  font-weight: 700;
  color: var(--rossa-navy);
}

/* `order: 2` lo deja primero del grupo de la derecha: #portal lleva `margin-right:auto`. */
#toolbar #rossa-toolbar-slot {
  order: 2;
  display: flex;
  align-items: center;
  flex: 0 1 auto;
  min-width: 0;
}
/* La barra pierde el panel (caja blanca con borde y sombra) y queda en una línea. */
#toolbar .comm-estab-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 0;
  background: none;
  border: none;
  border-radius: 0;
  box-shadow: none;
}
#toolbar .comm-estab-lead {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  font-weight: 500;
  color: var(--rossa-petrol);
  white-space: nowrap;
}
/* El <label> viene del include global filter_jerarquia.php: se oculta SOLO aquí. */
#toolbar .comm-estab-bar .rossa-establecimiento-filter-field label { display: none; }

/* Se pinta el <select> nativo Y el control de select2 (el auto-init global lo sustituye). */
#toolbar .comm-estab-bar select.rossa-establecimiento-filter {
  box-sizing: border-box;
  height: 30px;
  min-width: 290px;
  padding: 0 12px;
  border: 1.5px solid var(--rossa-navy);
  border-radius: 5px;
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-navy);
  text-align: center;
}
#toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container { min-width: 290px; }
#toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single {
  height: 30px;
  /* !important obligado: §33 pinta `border: ... !important` sobre este mismo selector. */
  border: 1.5px solid var(--rossa-navy) !important;
  border-radius: 5px;
}
#toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single .select2-selection__rendered {
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-navy);
  text-align: center;
  padding-left: 14px;
  padding-right: 34px;
}
/* La flecha de select2 es un triángulo hecho con `border` en un <b>: se apaga y la caja pasa a ser la máscara. */
#toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single .select2-selection__arrow b { display: none; }
#toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single .select2-selection__arrow {
  top: 0;
  right: 4px;
  width: 22px;
  height: 28px;
  background-color: var(--rossa-navy);
  -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg");
          mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: 22px 22px;    mask-size: 22px 22px;
}

/*----- 66.2 Pestañas del panel ---------------------------------------------- */
/* El Figma NO lleva raíl continuo: cada pestaña trae su propio subrayado. */
#contenido_admin #tabs_comunicaciones {
  border: none;
  gap: 15px;
  margin-bottom: 20px;
}
#contenido_admin #tabs_comunicaciones .pest a {
  padding: 7px 12px;
  font-size: 14px;
  font-weight: 400;
  color: var(--rossa-navy);
  border-bottom: 1px solid var(--rossa-navy);
  margin-bottom: 0;
  letter-spacing: 0;
}
#contenido_admin #tabs_comunicaciones .pest a:hover { color: var(--rossa-petrol); }
#contenido_admin #tabs_comunicaciones .pest.current a {
  font-weight: 600;
  /* !important obligado: §22 fija `.pest.current a { color: var(--rossa-teal) !important }` para el resto del PMS. */
  color: var(--rossa-petrol) !important;
  border-bottom-color: var(--rossa-petrol);
}

/*----- 66.3 Filtro «Mostrar reglas inactivas» ------------------------------- */
#contenido_admin .cfilterbar { margin-bottom: 20px; }
#contenido_admin .cfilterbar label {
  gap: 10px;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  font-weight: 400;
  color: var(--rossa-stroke);
}
#contenido_admin .cfilterbar input[type="checkbox"] {
  -webkit-appearance: none;
          appearance: none;
  box-sizing: border-box;
  width: 30px;
  height: 30px;
  margin: 0;
  flex: 0 0 auto;
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background: var(--rossa-white);
  cursor: pointer;
}
/* El SVG va como `background-image`, no como máscara: la casilla conserva su fondo blanco. */
#contenido_admin .cfilterbar input[type="checkbox"]:checked {
  background-image: url("https://cdn.rossa.app/icons/check.svg?bg");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 20px 20px;
}
#contenido_admin .cfilterbar input[type="checkbox"]:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .25);
}

/*----- 66.4 Botón de alta de la barra fija — se apunta a los ids para ganar a `.cbtn-primary:hover` -----*/
#contenido_admin .comm-actionbar #btn_nueva_regla,
#contenido_admin .comm-actionbar #btn_nueva_plantilla,
#contenido_admin .comm-actionbar #btn_subir_adjunto {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-width: 180px;
  height: 30px;
  padding: 0 16px;
  border: 1.5px solid var(--rossa-petrol);
  border-radius: 5px;
  background: var(--rossa-white);
  box-shadow: none;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  text-align: center;
  color: var(--rossa-petrol);
  transition: background-color .15s ease, color .15s ease;
}
#contenido_admin .comm-actionbar #btn_nueva_regla:hover,
#contenido_admin .comm-actionbar #btn_nueva_plantilla:hover,
#contenido_admin .comm-actionbar #btn_subir_adjunto:hover {
  background: var(--rossa-petrol);
  color: var(--rossa-white);
}
/* El icono es solo para móvil (icon-only): en escritorio se queda el texto, sin icono al lado. */
#contenido_admin .comm-actionbar #btn_nueva_regla > i,
#contenido_admin .comm-actionbar #btn_nueva_plantilla > i,
#contenido_admin .comm-actionbar #btn_subir_adjunto > i { display: none; }

/*----- 66.5 Móvil ----------------------------------------------------------- */
@media (max-width: 700px) {
  #toolbar .comm-estab-lead { display: none; }
  #toolbar #rossa-toolbar-slot { min-width: 0; }
  #toolbar .comm-estab-bar select.rossa-establecimiento-filter,
  #toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container {
    min-width: 0;
    width: auto;
    max-width: none;
    flex: 0 1 auto;
  }
  #toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single {
    width: 38px;
    height: 36px;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  #toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single .select2-selection__rendered,
  #toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single .select2-selection__arrow {
    display: none;
  }
  #toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single::after {
    content: "";
    display: block;
    width: 20px;
    height: 20px;
    margin: 0;
    background-color: var(--rossa-navy);
    -webkit-mask-image: url("https://cdn.rossa.app/icons/establecimiento.svg");
            mask-image: url("https://cdn.rossa.app/icons/establecimiento.svg");
    -webkit-mask-repeat: no-repeat;   mask-repeat: no-repeat;
    -webkit-mask-position: center;    mask-position: center;
    -webkit-mask-size: contain;       mask-size: contain;
  }
  .select2-dropdown:has(#select2-rossa_establecimiento_filter-results) {
    width: auto !important;
    min-width: 220px;
  }
  #contenido_admin #tabs_comunicaciones { flex-wrap: wrap; gap: 8px 12px; }
  #toolbar:has(#rossa-toolbar-slot) #btn-crear-reserva { margin-left: 4px; }
}

@media (min-width: 701px) and (hover: none) and (pointer: coarse) {
  body:is(:has(#contenido_admin.rossa-ocupacion-page), :has(#contenido_admin.rossa-template-triggers-page), :has(#rossa-inicio), :has(#contenido_admin.rossa-gestor-estancias-page), :has(#contenido_admin.rossa-gestor-estancias-lotes-page), :has(#contenido_admin.rossa-ical-page)) #toolbar .comm-estab-bar select.rossa-establecimiento-filter,
  body:is(:has(#contenido_admin.rossa-ocupacion-page), :has(#contenido_admin.rossa-template-triggers-page), :has(#rossa-inicio), :has(#contenido_admin.rossa-gestor-estancias-page), :has(#contenido_admin.rossa-gestor-estancias-lotes-page), :has(#contenido_admin.rossa-ical-page)) #toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container {
    min-width: 150px;
    width: 150px !important;
  }
  body:is(:has(#contenido_admin.rossa-ocupacion-page), :has(#contenido_admin.rossa-template-triggers-page), :has(#rossa-inicio), :has(#contenido_admin.rossa-gestor-estancias-page), :has(#contenido_admin.rossa-gestor-estancias-lotes-page), :has(#contenido_admin.rossa-ical-page)) .select2-dropdown:has(#select2-rossa_establecimiento_filter-results) {
    min-width: 290px;
    width: 290px !important;
  }
  body:is(:has(#contenido_admin.rossa-ocupacion-page), :has(#contenido_admin.rossa-template-triggers-page), :has(#rossa-inicio), :has(#contenido_admin.rossa-gestor-estancias-page), :has(#contenido_admin.rossa-gestor-estancias-lotes-page), :has(#contenido_admin.rossa-ical-page)) #toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single {
    height: 36px;
  }
  body:is(:has(#contenido_admin.rossa-ocupacion-page), :has(#contenido_admin.rossa-template-triggers-page), :has(#rossa-inicio), :has(#contenido_admin.rossa-gestor-estancias-page), :has(#contenido_admin.rossa-gestor-estancias-lotes-page), :has(#contenido_admin.rossa-ical-page)) #toolbar:has(#rossa-toolbar-slot) #btn-crear-reserva {
    margin-left: 4px;
  }
  body:is(:has(#contenido_admin.rossa-ocupacion-page), :has(#contenido_admin.rossa-template-triggers-page), :has(#rossa-inicio), :has(#contenido_admin.rossa-gestor-estancias-page), :has(#contenido_admin.rossa-gestor-estancias-lotes-page), :has(#contenido_admin.rossa-ical-page)) #toolbar .comm-estab-bar select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single .select2-selection__arrow {
    top: 0;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
}

/*===== 67. MENÚ LATERAL: raíl de iconos que se despliega al pasar el ratón =====*/
/* El interruptor es `html.rossa-rail`, puesto por un script del <head> antes del primer pintado; no vale `body.showhidemenu` porque ahí no existe aún el <body>. */
html.rossa-rail #menu {
  width: 64px;
  padding-left: 0;
  top: 56px;                       /* bajo la barra superior (§68, 56px) */
  /* El panel llega hasta abajo y reserva los últimos 200px con padding: ahí vive el bloque fijo de acciones (§68.1). */
  height: calc(100vh - 56px);
  padding-bottom: 200px;
}
html.rossa-rail #menu #hidemenu { display: none; }

/* Desplegado. */
html.rossa-rail #menu:hover,
html.rossa-rail.rossa-rail-open #menu { width: 260px; }

/* Iconos anclados a 18px: centrados en el raíl y sin salto al desplegarse. */
html.rossa-rail #menu .panel_admin > li > a {
  justify-content: flex-start;
  padding-left: 18px;
  padding-right: 0;
}
/* Letra muerta en el raíl: §68.15 (b) redeclara este mismo selector con `margin: 0` y una casilla de 63px. */
html.rossa-rail #menu .panel_admin > li > a i { margin: 0 10px 0 0; }

/* `.txtmenu` mide 164px fijos (lydia): hay que soltarle el ancho o el raíl se lleva scroll horizontal. */
html.rossa-rail #menu .panel_admin > li > a .txtmenu {
  opacity: 0;
  width: auto;
  white-space: nowrap;
  transition: opacity .12s ease;
}
html.rossa-rail #menu:hover .panel_admin > li > a .txtmenu,
html.rossa-rail.rossa-rail-open #menu .panel_admin > li > a .txtmenu { opacity: 1; width: 164px; }

/* El indicador +/- de los grupos, solo cuando hay etiqueta a la que referirse. */
html.rossa-rail #menu .panel_admin > li > a.menugroup::after { display: none; }
html.rossa-rail #menu:hover .panel_admin > li > a.menugroup::after,
html.rossa-rail.rossa-rail-open #menu .panel_admin > li > a.menugroup::after { display: block; }

/* Buscador: en el raíl se queda en su caja de 24px con solo la lupa. */
html.rossa-rail #menu .rossa-menusearch { padding: 10px 0 6px 18px; }
html.rossa-rail #menu .rossa-menusearch__box { width: 24px; transition: width .18s ease; }
html.rossa-rail #menu:hover .rossa-menusearch__box,
html.rossa-rail.rossa-rail-open #menu .rossa-menusearch__box { width: 212px; }
html.rossa-rail #menu .rossa-menusearch__input { padding-left: 26px; padding-right: 8px; }
html.rossa-rail #menu .rossa-menusearch__ico { left: 6px; }

/* El contenido deja sitio al raíl (no al menú desplegado: se superpone). */
html.rossa-rail #contenido_admin { padding-left: 84px; }

/* Se limita por ANCHO (la marca es apaisada) y la altura va sola. */
html.rossa-rail #footer {
  display: flex;
  width: 64px;
  padding: 8px 6px;
  gap: 0;
}
html.rossa-rail #footer #footer-logo img {
  height: auto;
  width: auto;
  max-width: 44px;
  max-height: 14px;
}

/*===== 68. BARRA SUPERIOR: solo «Está gestionando» + salir =====*/
/* Los tres controles que bajan al raíl no se mueven en el HTML: se recolocan con `position: fixed` para no romper el panel de avisos ni sus enlaces. */
html.rossa-rail #toolbar {
  min-height: 56px;
  padding: 5px 24px 5px 76px;
  border-bottom: 0;
  gap: 16px;
}
html.rossa-rail #contenedor_absoluto { padding-top: 60px !important; }

/* Lo que desaparece de la barra. */
html.rossa-rail #toolbar #portal,
html.rossa-rail #toolbar #fechahora { display: none; }

/* Rótulo + selector, apilados y a la derecha (ahora sí, con 56px de barra). */
html.rossa-rail #toolbar #rossa-toolbar-slot { margin-left: auto; }
html.rossa-rail #toolbar .comm-estab-bar {
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
}

/* El texto «Desconectar» sigue en el DOM (font-size:0) para lectores de pantalla. */
html.rossa-rail #toolbar #descon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 40px;
  height: 40px;
  flex: 0 0 auto;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--rossa-red);
  color: var(--rossa-white);
  font-size: 0;
  overflow: hidden;
}
html.rossa-rail #toolbar #descon:hover { background: var(--rossa-red-dark); }
html.rossa-rail #toolbar #descon::before {
  content: "";
  display: block;
  width: 22px;
  height: 22px;
  background-color: currentColor;
  -webkit-mask-image: url("https://cdn.rossa.app/icons/square-arrow-right-exit.svg");
          mask-image: url("https://cdn.rossa.app/icons/square-arrow-right-exit.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}

/*----- 68.1 Bloque de acciones al fondo del raíl ---------------------------- */
/* `position: fixed` los saca del flujo de #toolbar; z-index por encima de #menu (200) y del pie (990). */
html.rossa-rail #toolbar #btn-crear-reserva,
html.rossa-rail #toolbar #rossa-avisos-bell,
html.rossa-rail #toolbar #nombreuser {
  position: fixed;
  left: 0;
  width: 64px;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  margin: 0;
  padding: 0;
  z-index: 995;
}

/* Nueva reserva: cuadrado verde de 35px con el «+» y el rótulo debajo. */
html.rossa-rail #toolbar #btn-crear-reserva {
  bottom: 132px;
  border: 0;
  background: none;
  text-decoration: none;
}
html.rossa-rail #toolbar #btn-crear-reserva i {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 35px;
  height: 35px;
  margin: 0;
  border-radius: 6px;
  background: var(--rossa-green-fig);
  color: var(--rossa-white);
  font-size: 20px;
  line-height: 1;
  transform: none;
}
html.rossa-rail #toolbar #btn-crear-reserva .rossa-tb-label {
  display: block;
  max-width: 60px;
  font-size: 10px;
  line-height: 12px;
  font-weight: 700;
  text-align: center;
  text-transform: uppercase;
  color: var(--rossa-green-fig);
}
html.rossa-rail #toolbar #btn-crear-reserva:hover i { background: var(--rossa-green-dark); }

/* Avisos: campana con su chapa roja arriba a la derecha. */
html.rossa-rail #toolbar #rossa-avisos-bell {
  bottom: 92px;
  height: 32px;
  border: 0;
  background: none;
  color: var(--rossa-stroke);
  font-size: 22px;
}
html.rossa-rail #toolbar #rossa-avisos-bell:hover { color: var(--rossa-petrol); }
/* `right: auto` NO es decorativo: con los dos lados fijados y `width` automático la chapa se estira de un anclaje al otro. */
html.rossa-rail #toolbar #rossa-avisos-bell #rossa-avisos-badge {
  position: absolute;
  top: -2px;
  left: 34px;
  right: auto;
  width: auto;
  min-width: 16px;
  height: 16px;
  padding: 0 5px;
  box-sizing: border-box;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-red);
  color: var(--rossa-white);
  font-size: 10px;
  font-weight: 700;
  line-height: 16px;
  text-align: center;
}

/* El «Hola: nombre» y la palabra «Panel» siguen en el DOM (los pinta footer.php). */
html.rossa-rail #toolbar #nombreuser { bottom: 44px; }
html.rossa-rail #toolbar #nombreuser > strong,
html.rossa-rail #toolbar #nombreuser > span,
html.rossa-rail #toolbar #nombreuser .rossa-tb-panel-txt { display: none; }
html.rossa-rail #toolbar #nombreuser #panel_user,
html.rossa-rail #contenido_admin #panel_user {
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 3px solid var(--rossa-navy);
  border-radius: 50%;
  background: var(--rossa-white);
  color: var(--rossa-navy);
  text-decoration: none;
}
html.rossa-rail #toolbar #nombreuser #panel_user:hover {
  border-color: var(--rossa-petrol);
  color: var(--rossa-petrol);
}
html.rossa-rail #toolbar .rossa-tb-initials {
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: .01em;
}

/*----- 68.2 Ajustes de lo que seguia el viejo estado "colapsado" ------------- */
/* En escritorio ya no se pone `body.showhidemenu`: el rail lo marca `html.rossa-rail` (§67). */
html.rossa-rail .rossa-form-actions { left: 64px; }
/* Logo: la barra pasa de 72 a 56px, el disco de 46 se centra un poco mas arriba. */
html.rossa-rail #toolbar #toolbarlogo { top: 10px; }

/*----- 68.3 Correcciones medidas en pantalla -------------------------------- */
/* La barra alineaba a la derecha con el `margin-right:auto` de #portal, que ya no se pinta. */
html.rossa-rail #toolbar { justify-content: flex-end; }

/* El <a> traia `height:32px` de la barra y aplastaba el cuadrado verde. */
html.rossa-rail #toolbar #btn-crear-reserva {
  height: auto;
  min-height: 0;
  white-space: normal;
}
html.rossa-rail #toolbar #btn-crear-reserva .rossa-tb-label {
  width: 56px;
  max-width: 56px;
  white-space: normal;
  overflow-wrap: break-word;
  letter-spacing: .01em;
}

/* Reparto vertical del bloque del rail, contando ya las dos lineas del rotulo. */
html.rossa-rail #toolbar #nombreuser        { bottom: 44px; }
html.rossa-rail #toolbar #rossa-avisos-bell { bottom: 96px; }
html.rossa-rail #toolbar #btn-crear-reserva { bottom: 140px; }

.rossa-tb-initials { display: none; }
html.rossa-rail #toolbar .rossa-tb-initials { display: inline-block; }

/*----- 68.4 Lo que acompaña al raíl cuando se despliega — los botones NO se mueven: se escapaban del ratón -----*/
html.rossa-rail-open #footer {
  width: 260px;
  align-items: flex-start;
  padding-left: 10px;
}
/* Lleva las DOS clases a propósito: §68.5 fija `left: 7px` con la misma especificidad y va más abajo. */
html.rossa-rail.rossa-rail-open #toolbar #toolbarlogo { left: 105px; }   /* (260-50)/2 */

/* lydia le pone al menú `transition-duration: .7s`: al abrirse por hover se arrastraba. */
html.rossa-rail #menu { transition: width .18s ease; }
html.rossa-rail #footer { transition: width .18s ease; }
html.rossa-rail #toolbar #toolbarlogo { transition: left .18s ease; }

/*----- 68.5 Que nada parta el borde del raíl -----*/
html.rossa-rail #toolbar #toolbarlogo {
  top: 3px;
  left: 7px;
  padding: 0;
}
html.rossa-rail #toolbar #logo_lidia { width: 50px; height: 50px; }

html.rossa-rail #footer { border-right: 1px solid var(--rossa-border); }

/*----- 68.6 El raíl es una columna de altura COMPLETA -----*/
html.rossa-rail #menu {
  top: 0;
  height: 100vh;
  padding-top: 62px;               /* hueco del logo (acaba en y=53) */
}
html.rossa-rail #toolbar {
  margin-left: 64px;
  width: auto;
  padding-left: 24px;              /* ya no hay que reservar sitio para el logo */
}

/*===== 68.7 Segunda pasada del cromo =====*/

/*----- Aire arriba: barra 64px, logo y selector más abajo ------------------- */
html.rossa-rail #toolbar {
  min-height: 64px;
  padding: 14px 24px 6px;
}
html.rossa-rail #contenedor_absoluto { padding-top: 68px !important; }
html.rossa-rail #toolbar #toolbarlogo { top: 8px; }
/* El hueco del logo en el raíl crece con él (el disco acaba en y=58). */
html.rossa-rail #menu { padding-top: 68px; }

/*----- Buscador: lupa centrada en la caja y la ✕ despegada del borde -------- */
/* El glifo no siempre mide lo mismo: se centra por caja, no con un `left` fijo. */
html.rossa-rail #menu .rossa-menusearch__ico {
  left: 50%;
  transform: translate(-50%, -50%);
}
/* Desplegada, la lupa vuelve al borde izquierdo, delante del texto. */
html.rossa-rail #menu:hover .rossa-menusearch__ico,
html.rossa-rail.rossa-rail-open #menu .rossa-menusearch__ico {
  left: 10px;
  transform: translate(0, -50%);
}
.rossa-menusearch__clear { right: 8px; padding: 5px 7px; }

/*----- Pie: a lo ancho, centrado y fijo abajo; sin el logo de Ultus --------- */
html.rossa-rail #footer,
html.rossa-rail.rossa-rail-open #footer {
  left: 0;
  right: 0;
  width: auto;
  align-items: center;
  padding: 9px 24px;
  border-right: 0;
  border-top: 1px solid var(--rossa-border);
}
/* §10 escondía el crédito de Rossa porque el pie solo llevaba el logo. */
html.rossa-rail #footer #footer-logo { display: none; }
html.rossa-rail #footer #footer-text {
  display: block;
  font-size: 12px;
  color: var(--rossa-muted);
}
html.rossa-rail #footer #footer-text a,
html.rossa-rail #footer #footer-text #poralt { color: var(--rossa-muted); }
/* Hueco al final de la página para que el pie fijo no tape el último panel. */
html.rossa-rail body:not(.lologin):has(#footer) { padding-bottom: 44px; }

/*----- El usuario sale del raíl y se va a la barra, junto a Salir ----------- */
html.rossa-rail #toolbar #nombreuser {
  position: static;
  left: auto;
  bottom: auto;
  width: auto;
  order: 4;
  flex-direction: row;
  gap: 0;
}
html.rossa-rail #toolbar #rossa-avisos-bell { bottom: 56px; }
html.rossa-rail #toolbar #btn-crear-reserva { bottom: 104px; }
html.rossa-rail #toolbar #btn-crear-reserva { visibility: hidden; opacity: 0; transition: opacity .15s ease; }
html.rossa-rail.rossa-rail-open #toolbar #btn-crear-reserva { visibility: visible; opacity: 1; }
/* Desplegado hay sitio para el rótulo en una línea, al lado del cuadrado. */
html.rossa-rail.rossa-rail-open #toolbar #btn-crear-reserva {
  left: 0;
  width: 260px;
  flex-direction: row;
  justify-content: flex-start;
  /* Sangría 15px + cuadrado de 35 → el rótulo cae en la columna común del texto (§1). */
  gap: calc(var(--rossa-rail-text) - 15px - 35px);
  padding-left: 18px;
}
html.rossa-rail.rossa-rail-open #toolbar #btn-crear-reserva .rossa-tb-label {
  width: auto;
  max-width: none;
  text-align: left;
}
/* La lista del raíl ya no tiene que reservar los 200px del pie. */
html.rossa-rail #menu { padding-bottom: 150px; }

/* Un solo establecimiento: rótulo con el nombre, sin desplegable (§68.7). */
html.rossa-rail #toolbar .comm-estab-bar--fijo {
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
}
html.rossa-rail #toolbar .comm-estab-unico {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  font-weight: 700;
  color: var(--rossa-navy);
  white-space: nowrap;
}

/* 66.6 (retirada): la paginacion de las reglas paso a la barra fija del pie -> ver 66.7. */

/*===== 68.8 El bloque del raíl, con rótulos al desplegar =====*/

/*----- Barra superior: más aire ---------------------------------------------- */
html.rossa-rail #toolbar {
  min-height: 72px;
  padding: 20px 24px 8px;
}
html.rossa-rail #contenedor_absoluto { padding-top: 76px !important; }
html.rossa-rail #toolbar #toolbarlogo { top: 11px; }
html.rossa-rail #menu { padding-top: 76px; }

/*----- El usuario vuelve al raíl -------------------------------------------- */
html.rossa-rail #toolbar #nombreuser {
  position: fixed;
  left: 0;
  bottom: 44px;
  width: 64px;
  order: 0;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  /* 12 de sangría + avatar de 40 → el nombre cae en la columna común (§1). */
  gap: calc(var(--rossa-rail-text) - 12px - 40px);
  padding-left: 12px;   /* 12 + 40/2 = 32 = centro del raíl: el avatar no salta */
}
/* Reparto vertical (el pie ya no vive en la esquina: es una barra a lo ancho). */
html.rossa-rail #toolbar #rossa-avisos-bell { bottom: 96px; }
html.rossa-rail #toolbar #btn-crear-reserva { bottom: 144px; }
html.rossa-rail #menu { padding-bottom: 200px; }

/*----- Rótulos: fuera en el raíl, dentro al desplegar ----------------------- */
/* «Hola:» y «Panel» no se enseñan nunca (el avatar ya lleva al panel). */
html.rossa-rail #toolbar #nombreuser > strong,
html.rossa-rail #toolbar #nombreuser .rossa-tb-panel-txt { display: none; }
/* El nombre y el rótulo de avisos: solo con el raíl desplegado. */
html.rossa-rail #toolbar #nombreuser > span.notranslate,
html.rossa-rail #toolbar #rossa-avisos-bell .rossa-tb-label { display: none; }
html.rossa-rail.rossa-rail-open #toolbar #nombreuser > span.notranslate,
html.rossa-rail.rossa-rail-open #toolbar #rossa-avisos-bell .rossa-tb-label {
  display: block;
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.2;
  color: var(--rossa-ink);
  white-space: nowrap;
}
/* Desplegado los tres ocupan el ancho del panel y van en fila. */
html.rossa-rail.rossa-rail-open #toolbar #nombreuser,
html.rossa-rail.rossa-rail-open #toolbar #rossa-avisos-bell { width: 260px; }
html.rossa-rail.rossa-rail-open #toolbar #rossa-avisos-bell {
  flex-direction: row;
  justify-content: flex-start;
  /* Sangría 20px + caja de campana de 24 → el rótulo cae en la columna común del texto (§1). */
  gap: calc(var(--rossa-rail-text) - 20px - 24px);
  padding-left: 18px;   /* 18 + 24/2 = 30 ≈ centro del raíl */
}
/* El rótulo de avisos hereda el color del icono si no se fija (el <a> lo tiñe). */
html.rossa-rail.rossa-rail-open #toolbar #rossa-avisos-bell .rossa-tb-label { color: var(--rossa-ink); }

/* La chapa del contador se queda pegada al icono, no al borde del panel. */
html.rossa-rail #toolbar #rossa-avisos-bell #rossa-avisos-badge { left: 34px; }
html.rossa-rail.rossa-rail-open #toolbar #rossa-avisos-bell #rossa-avisos-badge { left: 40px; }

/*----- 68.9 Que los tres iconos del raíl NO se muevan al desplegar -----*/
/* El nombre del usuario va ANTES del avatar en el HTML: se corrige con `order`, sin tocar el marcado. */
html.rossa-rail.rossa-rail-open #toolbar #nombreuser #panel_user { order: -1; }
html.rossa-rail.rossa-rail-open #toolbar #nombreuser        { padding-left: 12px; }
html.rossa-rail.rossa-rail-open #toolbar #btn-crear-reserva { padding-left: 15px; }
html.rossa-rail.rossa-rail-open #toolbar #rossa-avisos-bell { padding-left: 20px; }
/* Caja fija para el glifo de la campana: FontAwesome no mide siempre igual. */
html.rossa-rail #toolbar #rossa-avisos-bell i {
  width: 24px;
  text-align: center;
  flex: 0 0 auto;
}

/*===== 66.7 Barra de acciones FIJA al pie + paginación (Reglas y Plantillas) =====*/
#contenido_admin .comm-actionbar {
  position: fixed;
  left: 64px;                     /* a la derecha del raíl */
  right: 0;
  bottom: 33px;                   /* justo encima de la tira del crédito */
  z-index: 300;
  display: flex;
  align-items: center;
  gap: 16px;
  box-sizing: border-box;
  padding: 10px 24px;
  background: var(--rossa-white);
  border-top: 1px solid var(--rossa-border);
  font-family: var(--rossa-font);
}
/* El botón se saca del flujo (capa absoluta) para centrarlo de verdad; `pointer-events` deja pasar los clics de debajo. */
#contenido_admin .comm-actionbar__centro {
  position: absolute;
  left: 0;
  right: 0;
  display: flex;
  justify-content: center;
  pointer-events: none;
}
#contenido_admin .comm-actionbar__centro > * { pointer-events: auto; }
#contenido_admin .comm-actionbar .comm-pager {
  margin-left: auto;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 10px;
}
/* El contenido de la pestaña reserva sitio para la barra fija. */
#contenido_admin .secciones_tabs .cont { padding-bottom: 96px; }

/*----- Paginación: números redondos, actual en teal relleno ----------------- */
#contenido_admin .comm-pager__paginas { display: flex; align-items: center; gap: 2px; }
#contenido_admin .comm-pager__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-width: 26px;
  height: 26px;
  padding: 0 6px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  color: var(--rossa-petrol);
  cursor: pointer;
  transition: background-color .15s ease, color .15s ease;
}
#contenido_admin .comm-pager__btn:hover:not(:disabled):not(.es-actual) { background: var(--rossa-tint); }
#contenido_admin .comm-pager__btn.es-actual {
  background: var(--rossa-petrol);
  color: var(--rossa-white);
}
#contenido_admin .comm-pager__btn--salto { color: var(--rossa-stroke); font-weight: 400; }
#contenido_admin .comm-pager__btn:disabled { color: var(--rossa-border); cursor: default; }
#contenido_admin .comm-pager__tam {
  box-sizing: border-box;
  width: auto;
  min-width: 62px;
  height: 26px;
  margin: 0;
  padding: 0 6px;
  border: 1px solid var(--rossa-border);
  border-radius: 5px;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 600;
  color: var(--rossa-stroke);
}

@media (max-width: 700px) {
  #contenido_admin .comm-actionbar {
    left: 0;
    flex-wrap: wrap;
    justify-content: center;
    padding: 8px 12px;
    gap: 8px;
  }
  #contenido_admin .comm-actionbar::before { display: none; }
  #contenido_admin .comm-actionbar__centro { flex: 0 0 100%; }
  /* Deja de ser una capa absoluta superpuesta: pasa a compartir fila con .comm-pager
     y crece para ocupar el hueco libre hasta la paginación. */
  #contenido_admin .comm-actionbar__centro:has(#btn_nueva_regla),
  #contenido_admin .comm-actionbar__centro:has(#btn_nueva_plantilla) {
    position: static;
    flex: 1 1 auto;
    justify-content: flex-start;
  }
  #contenido_admin .secciones_tabs .cont { padding-bottom: 130px; }
  #contenido_admin .comm-actionbar #btn_nueva_regla .rossa-tb-label,
  #contenido_admin .comm-actionbar #btn_nueva_plantilla .rossa-tb-label,
  #contenido_admin .comm-actionbar #btn_subir_adjunto .rossa-tb-label { display: none; }
  #contenido_admin .comm-actionbar #btn_nueva_regla > i,
  #contenido_admin .comm-actionbar #btn_nueva_plantilla > i,
  #contenido_admin .comm-actionbar #btn_subir_adjunto > i { display: inline-block; }
  #contenido_admin .comm-actionbar #btn_nueva_regla,
  #contenido_admin .comm-actionbar #btn_nueva_plantilla,
  #contenido_admin .comm-actionbar #btn_subir_adjunto {
    flex: 1 1 auto;
    width: auto;
    min-width: 0;
    max-width: 180px;
    padding: 0 10px;
  }
  /* gestor_template_triggers: mismo recorte que el paginador compartido (§75), pero aquí
     window.commPaginador pinta TODOS los números sin "…", así que no hace falta ocultarlos. */
  #contenido_admin .comm-pager__paginas > .comm-pager__btn:first-child,
  #contenido_admin .comm-pager__paginas > .comm-pager__btn:last-child {
    display: none;
  }
  #contenido_admin .comm-pager__paginas .comm-pager__btn:not(.comm-pager__btn--salto):not(.es-actual):not(:nth-child(3)):not(:nth-last-child(3)) {
    display: none;
  }
}

/*===== 66.8 Plantillas con el diseño nuevo (pestaña «Plantillas») =====*/
/*----- Pastillas de canal ---------------------------------------------------- */
#contenido_admin .comm-chan-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 20px;
}
#contenido_admin .comm-chan-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  box-sizing: border-box;
  height: 28px;
  padding: 0 14px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-stroke);
  cursor: pointer;
  transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
#contenido_admin .comm-chan-pill:hover { border-color: var(--rossa-petrol); color: var(--rossa-petrol); }
#contenido_admin .comm-chan-pill.es-actual {
  background: var(--rossa-petrol);
  border-color: var(--rossa-petrol);
  color: var(--rossa-white);
}
#contenido_admin .comm-chan-pill__n { font-weight: 400; opacity: .75; }

/*----- Rejilla compacta: 5 columnas (tarjetas de un solo campo) ------------- */
.rossa-datacard-grid--compacto { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 1024px) {
  .rossa-datacard-grid--compacto { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (min-width: 1300px) {
  .rossa-datacard-grid--compacto { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  .rossa-datacard-grid--compacto { grid-template-columns: minmax(0, 1fr); }
}

/*----- La tarjeta de plantilla ---------------------------------------------- */
#contenido_admin .ptpl.rossa-datacard,
#contenido_admin .ptpl.rossa-datacard:hover {
  margin: 0;
  padding: 0;
  border: 1px solid var(--rossa-stroke);
  border-left: 1px solid var(--rossa-stroke);
  box-shadow: none;
  opacity: 1;
  display: flex;
  /* `.ptpl` es una fila y su `align-items: center` sobrevive al cambio a columna. */
  flex-direction: column;
  align-items: stretch;
  gap: 0;
}
/* Parada: mismo tinte que una regla parada. */
#contenido_admin .ptpl.rossa-datacard.ptpl-off { background: var(--rossa-strip); }
#contenido_admin .ptpl.rossa-datacard .rossa-datacard__head { padding: 16px 18px 14px; }
#contenido_admin .ptpl.rossa-datacard .rossa-datacard__cell { padding: 12px 12px 13px; }

/* Los dos valores son interruptores: se ven como texto pero se pulsan. */
#contenido_admin .ptpl.rossa-datacard .ptpl-tog {
  align-self: flex-start;
  padding: 0;
  border: 0;
  background: none;
  text-align: left;
  cursor: pointer;
  border-bottom: 1px dashed transparent;
}
#contenido_admin .ptpl.rossa-datacard .ptpl-tog:hover { border-bottom-color: var(--rossa-stroke); }
#contenido_admin .ptpl.rossa-datacard .ptpl-tog.active  { color: var(--rossa-green-fig); font-weight: 700; }
#contenido_admin .ptpl.rossa-datacard .ptpl-tog.inactive { color: var(--rossa-muted); }
#contenido_admin .ptpl.rossa-datacard .ptpl-tog.manual  { color: var(--rossa-green-fig); font-weight: 700; }
#contenido_admin .ptpl.rossa-datacard .ptpl-tog.auto    { color: var(--rossa-navy); }
/* Plantilla que no puede editar el gestor: aviso en el pie, sin icono. */
#contenido_admin .ptpl.rossa-datacard .ptpl-bloqueada {
  font-family: var(--rossa-font);
  font-size: 11px;
  color: var(--rossa-muted);
  text-align: center;
}
#contenido_admin .ptpl-empty {
  padding: 40px 20px;
  text-align: center;
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-muted);
}
#contenido_admin .ptpl-empty[hidden] { display: none; }

/*===== 68.10 Tres remates del raíl =====*/
html.rossa-rail #menu { z-index: 995; }
/* #toplydia es un contexto de apilado: subir el z-index de los hijos no los saca por encima del menú. */
html.rossa-rail #toplydia { z-index: 996; }
html.rossa-rail #toolbar #btn-crear-reserva,
html.rossa-rail #toolbar #rossa-avisos-bell,
html.rossa-rail #toolbar #nombreuser { z-index: 997; }

/* lydia le pone `width: 33px` al icono de navegación: cualquier sangría calculada a mano se descuadra. */
html.rossa-rail #menu .panel_admin > li > a { padding-left: 0; }
html.rossa-rail #menu .panel_admin > li > a i {
  flex: 0 0 auto;
  /* Casilla de 64 para que el icono caiga en x=32; el margen negativo devuelve el píxel que sobra y no asoma barra horizontal. */
  width: 64px;
  margin: 0 -1px 0 0;
  text-align: center;
}
/* El buscador sí es una caja de 24: con 20px de sangría cae en 20..44, centro 32. */
html.rossa-rail #menu .rossa-menusearch { padding-left: 20px; }

/* (c) */
html.rossa-rail #menu .panel_admin > li > a { padding-right: 16px; }
html.rossa-rail #menu:not(:hover) .panel_admin > li > a { padding-right: 0; }
html.rossa-rail.rossa-rail-open #menu .panel_admin > li > a { padding-right: 16px; }
/* Un poco más de ancho al desplegar, para que etiqueta y «+» no se aprieten. */
html.rossa-rail #menu:hover,
html.rossa-rail.rossa-rail-open #menu { width: 272px; }
/* Anula el `width` que traía de cuando el pie vivía dentro del raíl. */
html.rossa-rail.rossa-rail-open #footer { width: auto; }
html.rossa-rail.rossa-rail-open #toolbar #toolbarlogo { left: 111px; }   /* (272-50)/2 */
html.rossa-rail.rossa-rail-open #toolbar #nombreuser,
html.rossa-rail.rossa-rail-open #toolbar #rossa-avisos-bell,
html.rossa-rail.rossa-rail-open #toolbar #btn-crear-reserva { width: 272px; }

/*===== 68.11 Remates: salir alineado, logo quieto y lupa a la anchura de los iconos =====*/
/* La barra centra por defecto y el bloque rótulo+selector es más alto que el círculo de 40. */
html.rossa-rail #toolbar #descon { align-self: flex-end; }

/* El logo de Rossa se queda quieto al desplegar el raíl: se anula el paso al centro del panel. */
html.rossa-rail.rossa-rail-open #toolbar #toolbarlogo { left: 7px; }
html.rossa-rail #toolbar #toolbarlogo { transition: none; }

/* El buscador, a la misma anchura que los iconos del menú (33px) y centrado en la casilla del raíl. */
html.rossa-rail #menu .rossa-menusearch { padding: 10px 0 6px; }
/* Sin `margin: 0 auto`: el contenedor mide 63 y el centro caería en 31,5, medio píxel fuera del eje del raíl (32). */
html.rossa-rail #menu .rossa-menusearch__box {
  width: 34px;
  margin: 0 0 0 15px;
}
/* Desplegado: el campo arranca donde arrancan las etiquetas y llega al borde. */
html.rossa-rail.rossa-rail-open #menu .rossa-menusearch { padding: 10px 16px 6px 15px; }
html.rossa-rail.rossa-rail-open #menu .rossa-menusearch__box {
  width: auto;
  margin: 0;
}

/*----- 68.12 La barra crece para que el selector quepa de verdad (20 + 51 + 9 = 80) -----*/
html.rossa-rail #toolbar {
  min-height: 80px;
  padding: 20px 24px 9px;
}
html.rossa-rail #contenedor_absoluto { padding-top: 84px !important; }
html.rossa-rail #menu { padding-top: 84px; }
/* Disco de 50 centrado en los 80 de la barra. */
html.rossa-rail #toolbar #toolbarlogo,
html.rossa-rail.rossa-rail-open #toolbar #toolbarlogo { top: 15px; }

/*===== 68.13 La barra deja de reservar una banda a lo ancho =====*/
/* El logo pasa a `position: fixed` (contra la ventana): posicionado contra #toplydia se iría con la barra ceñida. */
html.rossa-rail #toplydia {
  left: auto;
  right: 0;
  width: auto;
}
html.rossa-rail #toolbar {
  margin-left: 0;
  width: auto;
  border-bottom-left-radius: 10px;
}
/* El logo, contra la VENTANA: #toplydia ya no llega hasta la izquierda. */
html.rossa-rail #toolbar #toolbarlogo,
html.rossa-rail.rossa-rail-open #toolbar #toolbarlogo {
  position: fixed;
  left: 7px;
  top: 15px;
}
/* El contenido ya no cae 84px: arranca arriba. */
html.rossa-rail #contenedor_absoluto { padding-top: 10px !important; }
/* En el raíl basta con dejar libre el disco del logo (acaba en y=65). */
html.rossa-rail #menu { padding-top: 72px; }

/*===== 68.14 Se retira el crédito del pie =====*/
html.rossa-rail #footer { display: none; }
html.rossa-rail body:not(.lologin):has(#footer) { padding-bottom: 0; }
#contenido_admin .comm-actionbar { bottom: 0; }

/*----- 68.15 «Crear reserva»: plegado, solo el cuadrado verde -----*/
html.rossa-rail #toolbar #btn-crear-reserva { visibility: visible; opacity: 1; }
html.rossa-rail #toolbar #btn-crear-reserva .rossa-tb-label { display: none; }
html.rossa-rail.rossa-rail-open #toolbar #btn-crear-reserva .rossa-tb-label {
  display: block;
  width: auto;
  max-width: none;
  text-align: left;
}

/*===== 69. CROMO v5.5: sin barra superior, menú de usuario y pie estándar =====*/

/*----- 69.1 La barra superior se retira -----*/
html.rossa-rail #toolbar {
  min-height: 0;
  height: auto;
  padding: 0;
  background: transparent;
  border: 0;
  border-bottom-left-radius: 0;
  box-shadow: none;
}
/* Se oculta, no se borra: el <a> sigue en el DOM. */
html.rossa-rail #toolbar #descon { display: none; }
@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  #toolbar #descon { display: none; }
}

html.rossa-rail #contenedor_absoluto { padding-top: 16px !important; }

/*----- 69.2 Menú del usuario — lo abre y cierra el script aditivo de admin/includes/footer.php -----*/
.rossa-usermenu {
  position: fixed;
  left: 72px;
  bottom: 34px;
  z-index: 998;
  min-width: 196px;
  box-sizing: border-box;
  padding: 6px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0, 48, 60, .16);
  font-family: var(--rossa-font);
}
.rossa-usermenu[hidden] { display: none; }
.rossa-usermenu__quien {
  display: block;
  padding: 6px 10px 8px;
  margin-bottom: 4px;
  border-bottom: 1px solid var(--rossa-border);
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-navy);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.rossa-usermenu__item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border-radius: 7px;
  font-size: 14px;
  line-height: 1.2;
  color: var(--rossa-ink);
  text-decoration: none;
}
.rossa-usermenu__item:hover {
  background: var(--rossa-tint);
  color: var(--rossa-petrol);
  text-decoration: none;
}
.rossa-usermenu__item::before {
  content: "";
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}
.rossa-usermenu__item--config::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/settings.svg");
          mask-image: url("https://cdn.rossa.app/icons/settings.svg");
}
.rossa-usermenu__item--salir::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/square-arrow-right-exit.svg");
          mask-image: url("https://cdn.rossa.app/icons/square-arrow-right-exit.svg");
}
.rossa-usermenu__item--salir { color: var(--rossa-red); }
.rossa-usermenu__item--salir:hover {
  background: var(--rossa-salmon);
  color: var(--rossa-red-dark);
}
/* El avatar ahora abre un menú: el cursor lo dice. */
html.rossa-rail #toolbar #nombreuser #panel_user { cursor: pointer; }

/*----- 69.3 Pie estándar: la barra de acciones va SIEMPRE — comparte bloque con .comm-actionbar: si las medidas se separan, la vacía asoma -----*/
#rossa-actionbar,
#contenido_admin .comm-actionbar {
  position: fixed;
  left: 64px;                     /* a la derecha del raíl */
  right: 0;
  bottom: 0;
  box-sizing: border-box;
  min-height: 58px;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 24px;
  background: var(--rossa-strip-soft);
  border-top: 1px solid var(--rossa-border);
  font-family: var(--rossa-font);
}
#rossa-actionbar { z-index: 295; }
body:has(#contenido_admin.isiframe) #rossa-actionbar {
  left: 0;
}
#contenido_admin .comm-actionbar { z-index: 300; }
/* En popup/drawer no hay pie de página debajo que haga de hueco para la barra fija. */
body:has(#rossa-actionbar:not(.rossa-actionbar--vacia)) #contenido_admin.isiframe {
  margin-bottom: 84px;
}
@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  body:has(#rossa-actionbar:not(.rossa-actionbar--vacia)) #contenido_admin {
    margin-bottom: 84px;
  }
}

/* Botón secundario compartido dentro de #rossa-actionbar (blanco + borde petrol):
   "Generar datos de INE" (surveys_filters), "Reservar/Cerrar seleccionadas" y
   "Mostrar días pasados" (ocupacion). !important vence al repintado global de
   .rossa-btn--default (§23) cuando el botón también lleva esa clase. */
:is(#rossa-actionbar, #relocation-control-panel, .rossa-profile-config__actions) .rossa-actionbar-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-width: 180px;
  height: 30px;
  margin: 0;
  padding: 0 16px;
  border: 1.5px solid var(--rossa-petrol) !important;
  border-radius: 5px !important;
  background: var(--rossa-white) !important;
  box-shadow: none;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  text-align: center;
  color: var(--rossa-petrol) !important;
  cursor: pointer;
  white-space: nowrap;
  text-decoration: none;
  transition: background-color .15s ease, color .15s ease;
}
:is(#rossa-actionbar, #relocation-control-panel, .rossa-profile-config__actions) .rossa-actionbar-btn:hover:not(:disabled) {
  background: var(--rossa-petrol) !important;
  color: var(--rossa-white) !important;
}

@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  #rossa-actionbar:has(#btn_add_cliente) .rossa-actionbar-btn {
    min-width: 0;
    flex: 1 1 auto;
    padding: 0 10px;
  }
}
#rossa-actionbar:has(#xls-open-editor) {
  justify-content: center;
  align-items: center;
}

/* edit_user: Cancelar + Guardar usuario, únicos botones de su barra. */
#rossa-actionbar:has(#guardar) {
  justify-content: center;
  align-items: center;
}
#rossa-actionbar:has(#guardar) .admin_boton--ghost { font-weight: 400; }
#rossa-actionbar #guardar.rossa-actionbar-btn { border-width: 2.5px !important; }
/* El icono es solo para móvil (icon-only): en escritorio se queda el texto, sin icono al lado. */
#rossa-actionbar:has(#guardar) .rossa-actionbar-btn > i { display: none; }
@media (max-width: 700px) {
  #rossa-actionbar:has(#guardar) .rossa-tb-label { display: none; }
  /* !important: gana a #rossa-actionbar i[class*="fa-"] (§79.16), pensada solo para facturación pero sin scope. */
  #rossa-actionbar:has(#guardar) .rossa-actionbar-btn > i { display: inline-block !important; }
  #rossa-actionbar:has(#guardar) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #form_adduser {
    margin-bottom: 90px;
  }
}

#rossa-actionbar:has(#submit-extras) {
  justify-content: center;
}
@media (max-width: 700px) {
  #rossa-actionbar:has(#submit-extras) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
}

#rossa-actionbar:has(a[href*="module=gestor_huespedes"]) {
  justify-content: center;
}
@media (max-width: 700px) {
  #rossa-actionbar:has(a[href*="module=gestor_huespedes"]) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
}
#rossa-actionbar.rossa-actionbar:has(.rossa-huespedes-acciones) { justify-content: flex-start; }
@media (min-width: 986px) {
  #rossa-actionbar:has(.rossa-huespedes-acciones) .rossa-page-toolbar--compact {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}
@media (max-width: 1024px) {
  #rossa-actionbar:has(.rossa-huespedes-acciones) .rossa-actionbar__pager { margin-left: auto; flex-wrap: wrap; gap: 8px; }
}
@media (max-width: 985px) {
  #rossa-actionbar:has(.rossa-huespedes-acciones) .rossa-actionbar-btn[data-rossa-exportar-abrir] { flex: none; width: 40px; min-width: 40px; height: 40px; padding: 0; }
  #rossa-actionbar:has(.rossa-huespedes-acciones) [data-rossa-exportar-abrir] .rossa-tb-label { display: none; }
  #rossa-actionbar:has(.rossa-huespedes-acciones) [data-rossa-exportar-abrir] > i { display: inline-block !important; }
}
body:has(#contenido_admin.isiframe) #rossa-actionbar:has(a[href*="module=gestor_huespedes"]) a[href*="module=ver_reserva"] {
  display: none;
}

#rossa-actionbar:has(#realizar_pago) {
  justify-content: center;
}
@media (max-width: 700px) {
  #rossa-actionbar:has(#realizar_pago):has(.fa-arrow-left) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
}

/* Anula el `padding-bottom: 0` de §68.14 (mismo selector, más abajo). */
html.rossa-rail body:not(.lologin):has(#footer) { padding-bottom: 70px; }

@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  #rossa-actionbar,
  #contenido_admin .comm-actionbar { left: 0; }
  /* Una barra vacía en móvil solo come pantalla: ahí no se pinta. */
  #rossa-actionbar.rossa-actionbar--vacia { display: none; }
  .rossa-usermenu {
    left: auto;
    right: 8px;
    top: 52px;
    bottom: auto;
  }
}

/*----- 69.4 Paginación apagada + aire -----*/
#contenido_admin .comm-pager__paginas { gap: 4px; }
#contenido_admin .comm-pager__btn {
  min-width: 24px;
  height: 24px;
  font-weight: 500;
  color: var(--rossa-pager-ink);
}
#contenido_admin .comm-pager__btn:hover:not(:disabled):not(.es-actual) {
  background: var(--rossa-pager-tint);
  color: var(--rossa-stroke);
}
#contenido_admin .comm-pager__btn.es-actual {
  background: var(--rossa-pager-tint);
  color: var(--rossa-pager-ink);
  font-weight: 600;
}
#contenido_admin .comm-pager__btn--salto { color: var(--rossa-pager-ink); }
#contenido_admin .comm-pager__btn:disabled { color: var(--rossa-pager-off); }
#contenido_admin .comm-pager__tam {
  height: 28px;
  border-color: var(--rossa-strip);
  color: var(--rossa-pager-ink);
  font-weight: 500;
}

.paginacion { color: var(--rossa-pager-ink); }
.paginacion a { color: var(--rossa-pager-ink); font-weight: 500; }
.paginacion a:hover {
  background: var(--rossa-pager-tint);
  color: var(--rossa-stroke);
}
.paginacion span { color: var(--rossa-pager-ink); font-weight: 600; }
.paginacion .pactiva {
  display: inline-block;
  padding: 3px 8px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-pager-tint);
}
#contenido_admin.rossa-clientes-page .rossa-clientes-pag__links .pactiva {
  color: var(--rossa-pager-ink);
  font-weight: 600;
}

/*===== 69.5 El selector de alojamiento se mete DENTRO del menú =====*/
/* El hueco se reserva también con el raíl plegado: si el `padding-top` de #menu creciera al abrir, la lista saltaría 48px. */
html.rossa-rail #menu { padding-top: 124px; }
/* Mismo truco de `:has` que en §69.1 — suma un id y gana en especificidad. */
html.rossa-rail body:not(:has(#rossa-toolbar-slot)) #menu { padding-top: 76px; }

html.rossa-rail #toolbar #rossa-toolbar-slot {
  position: fixed;
  left: 0;
  top: 74px;
  width: 272px;                    /* el ancho del panel desplegado (§68.10) */
  box-sizing: border-box;
  padding: 0 16px;
  margin: 0;
  z-index: 997;                    /* como el resto del bloque del raíl (§68.10) */
  /* El panel se abre con el `pointerenter` de #menu, del que este bloque NO es descendiente: si capturara el ratón, no abriría. */
  pointer-events: none;
}
html.rossa-rail.rossa-rail-open #toolbar #rossa-toolbar-slot { pointer-events: auto; }
/* Se filtra por lo que NO es la chapa para que cualquier otro control colgado del hueco siga escondiéndose. */
html.rossa-rail #toolbar #rossa-toolbar-slot > *:not(.rossa-estab-chip) {
  visibility: hidden;
  opacity: 0;
  transition: opacity .15s ease;
}
html.rossa-rail.rossa-rail-open #toolbar #rossa-toolbar-slot > *:not(.rossa-estab-chip) {
  visibility: visible;
  opacity: 1;
}
/* El control ocupa el ancho del panel. */
html.rossa-rail #toolbar .comm-estab-bar,
html.rossa-rail #toolbar .comm-estab-bar--fijo {
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  margin: 0;
  width: 100%;
}
/* §34 pone `min-width: 240px` al <select> y al contenedor de select2: sin esto la caja desborda el menú. */
html.rossa-rail #toolbar .rossa-establecimiento-filter-field { width: 100%; min-width: 0; }
/* `!important` a propósito: select2 escribe al contenedor un `style="width:NNNpx"` EN LÍNEA. */
html.rossa-rail #toolbar select.rossa-establecimiento-filter,
html.rossa-rail #toolbar select.rossa-establecimiento-filter + .select2-container {
  display: block;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100%;
  box-sizing: border-box;
}
/* El nombre largo se corta con puntos suspensivos en vez de ensanchar la caja. */
html.rossa-rail #toolbar select.rossa-establecimiento-filter + .select2-container--default .select2-selection--single .select2-selection__rendered {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* Con un solo alojamiento no hay desplegable: solo el nombre, como rótulo. */
html.rossa-rail #toolbar .comm-estab-unico {
  display: block;
  padding: 8px 2px;
  font-size: 14px;
  line-height: 18px;
  white-space: normal;
}

/* Chapa del selector de alojamiento en el raíl plegado: la emite filter_jerarquia.php siempre que hay desplegable. */
.rossa-estab-chip { display: none; }
html.rossa-rail #toolbar #rossa-toolbar-slot .rossa-estab-chip {
  /* 16px de sangría del hueco + 32/2 = 32 = centro exacto del raíl de 64. */
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  /* NO ENCOGER: el <form> del selector sigue ocupando su sitio y le robaba 3,8px a la chapa. */
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  /* La caja de 32 se queda (es la que centra el icono en el raíl), solo pierde el fondo. */
  background: none;
}
html.rossa-rail #toolbar #rossa-toolbar-slot .rossa-estab-chip::before {
  content: "";
  /* 22px: la misma medida que los iconos de navegación (§32). */
  width: 22px;
  height: 22px;
  background-color: var(--rossa-stroke);
  /* Nombre en minúscula: `Establecimiento.svg` da 404 en el CDN (los nombres distinguen mayúsculas). */
  -webkit-mask-image: url("https://cdn.rossa.app/icons/establecimiento.svg");
          mask-image: url("https://cdn.rossa.app/icons/establecimiento.svg");
  -webkit-mask-repeat: no-repeat;   mask-repeat: no-repeat;
  -webkit-mask-position: center;    mask-position: center;
  -webkit-mask-size: contain;       mask-size: contain;
}
/* `display:none` y no `visibility`: si no, el selector no sube a su sitio y salta al abrir. */
html.rossa-rail.rossa-rail-open #toolbar #rossa-toolbar-slot .rossa-estab-chip { display: none; }

/*===== 69.6 Móvil/tablet sin ratón: la campana es un botón, sin rótulo =====*/
@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  #toolbar #rossa-avisos-bell .rossa-tb-label { display: none; }
  #toolbar #rossa-avisos-bell {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 38px;
    height: 34px;
    padding: 0;
    gap: 0;
    border: 1px solid var(--rossa-teal);
    border-radius: var(--rossa-radius);
    background: var(--rossa-white);
    color: var(--rossa-teal);
    font-size: 18px;
  }
  #toolbar #rossa-avisos-bell i { width: auto; }
  #toolbar #rossa-avisos-bell #rossa-avisos-badge { top: -6px; left: auto; right: -6px; }
}

/*===== 69.7 Comunicaciones · Encabezado y pie — fichas del Figma =====*/
#contenido_admin .hf-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  margin: 0 0 24px;
}
@media (max-width: 700px) {
  #contenido_admin .hf-grid { grid-template-columns: minmax(0, 1fr); }
}
#contenido_admin .hf-card.rossa-datacard {
  width: auto;
  min-height: 0;
  box-sizing: border-box;
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  box-shadow: none;
}
/* El pie pegado abajo aunque una descripción sea más corta: si no, las franjas quedan a distinta altura. */
#contenido_admin .hf-card .rossa-datacard__head { flex: 1 1 auto; }
#contenido_admin .hf-card .rossa-datacard__head {
  display: block;
  padding: 24px 21px 0 24px;
}
#contenido_admin .hf-card .rossa-datacard__title {
  display: block;
  margin: 0 0 10px;
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  color: var(--rossa-navy);
}
#contenido_admin .hf-card__desc {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 400;
  color: var(--rossa-navy);
}
/* El interruptor va en absoluto: en el flujo empujaría los iconos y los descentraría. */
#contenido_admin .hf-card .rossa-datacard__foot {
  position: relative;
  justify-content: center;
  gap: 11px;
  padding: 6px 20px;
  min-height: 39px;
  background: var(--rossa-strip-soft);
}
#contenido_admin .hf-card .rossa-datacard__foot > button { width: 24px; height: 24px; }
#contenido_admin .hf-card .rossa-datacard__foot > button::before { width: 20px; height: 20px; }
/* Ficha con su editor abierto: se marca para que se vea de cuál es. */
#contenido_admin .hf-card--editando.rossa-datacard { border-color: var(--rossa-petrol); }
#contenido_admin .hf-card--editando .rossa-datacard__act--edit { color: var(--rossa-petrol); }

/* El JS lo enseña con display en línea; en reposo no ocupa. */
#contenido_admin .hf-card .hf_estado { display: none; align-items: center; }

/*----- El interruptor (Figma «Rectangle 166/167») --------------------------- */
#contenido_admin .hf-card .rossa-datacard__foot .tog {
  position: absolute;
  right: 20px;
  top: 50%;
  transform: translateY(-50%);
  display: block;
  width: 56px;
  height: 26px;
  margin: 0;
  cursor: pointer;
}
#contenido_admin .hf-card .rossa-datacard__foot .tog input {
  position: absolute;
  opacity: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  cursor: pointer;
}
#contenido_admin .hf-card .rossa-datacard__foot .tog-track {
  display: block;
  width: 56px;
  height: 26px;
  border: 0;
  border-radius: 35px;
  background: #d9d9d9;
  transition: background-color .15s ease;
}
/* La bolita va en `::after`, el pseudo que ya usa el interruptor legacy: con `::before` saldrían dos. */
#contenido_admin .hf-card .rossa-datacard__foot .tog-track::after {
  content: "";
  position: absolute;
  left: 3px;
  top: 3px;
  right: auto;
  width: 19px;
  height: 19px;
  border-radius: 50%;
  background: var(--rossa-white);
  box-shadow: none;
  transition: transform .15s ease;
}
#contenido_admin .hf-card .rossa-datacard__foot .tog input:checked + .tog-track {
  background: var(--rossa-green-fig);
}
#contenido_admin .hf-card .rossa-datacard__foot .tog input:checked + .tog-track::after {
  transform: translateX(31px);          /* 56 - 19 - 3 - 3 */
}
#contenido_admin .hf-card .rossa-datacard__foot .tog input:focus-visible + .tog-track {
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .25);
}

/*----- El editor, debajo de la rejilla -------------------------------------- */
#contenido_admin .hf-editor {
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  background: var(--rossa-white);
  padding: 16px 20px 18px;
  margin: 0 0 18px;
}
#contenido_admin .hf-editor[hidden] { display: none; }
#contenido_admin .hf-editor__head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 12px;
}
#contenido_admin .hf-editor__head h3 {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  color: var(--rossa-navy);
}
#contenido_admin .hf-editor__head .hf_cerrar { margin-left: auto; }
#contenido_admin .hf-editor__acts {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 12px;
}

/*===== 69.8 Comunicaciones · Historial de envíos =====*/
#contenido_admin .comm-log-table tbody tr { border-bottom: 0; }
#contenido_admin table.rossa-tbl.comm-log-table.comm-log-table > tbody > tr:not(.cab) > td { padding-top: 12px; padding-bottom: 12px; }
#contenido_admin .comm-log-table__fecha { white-space: nowrap; }
#contenido_admin .comm-log-table__asunto {
  display: block;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin .comm-log-table__detalle {
  display: block;
  margin-top: 2px;
  color: var(--rossa-tbl-muted);
}
#contenido_admin .comm-log-table__dest { margin: 2px 0; font-weight: 400; }
#contenido_admin .comm-log-table__vacio { color: var(--rossa-muted); }
#contenido_admin .comm-log-table__estado { font-weight: 700; }
#contenido_admin .comm-log-table__acc { text-align: center; }

/* El texto «Ver» sigue en el DOM (font-size:0) para lectores de pantalla. */
#contenido_admin .comm-log-table .comm-log-table__ver.cbtn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 24px;
  height: 24px;
  padding: 0;
  border: 0;
  border-radius: var(--rossa-radius);
  background: transparent;
  box-shadow: none;
  font-size: 0;
  color: var(--rossa-stroke);
  cursor: pointer;
}
#contenido_admin .comm-log-table .comm-log-table__ver.cbtn:hover {
  background: rgba(32, 92, 104, .10);
  color: var(--rossa-petrol);
}
#contenido_admin .comm-log-table .comm-log-table__ver.cbtn::before {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  background-color: currentColor;
  -webkit-mask-image: url("https://cdn.rossa.app/icons/eye.svg");
          mask-image: url("https://cdn.rossa.app/icons/eye.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}

/*----- El filtro del historial ----------------------------------------------- */
#contenido_admin .clogfilter {
  background: transparent;
  border: 0;
  box-shadow: none;
  padding: 4px 0 14px;
  gap: 24px;
  align-items: flex-end;
}
#contenido_admin .clogfilter-hint {
  font-family: var(--rossa-font);
  font-size: 12px;
  color: var(--rossa-muted);
  padding-bottom: 9px;
}

/*===== 69.9 Comunicaciones · Ajustes, Paquetes e Importar/Exportar =====*/
#contenido_admin .cbeh {
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  box-shadow: none;
  background: var(--rossa-white);
}
#contenido_admin .cbeh-head {
  background: var(--rossa-white);
  color: var(--rossa-navy);
  padding: 16px 20px;
  border-bottom: 1px solid var(--rossa-stroke);
}
/* Plegada no hay cuerpo debajo: la línea sobraría. */
#contenido_admin .cbeh.ccol-closed .cbeh-head { border-bottom: 0; }
#contenido_admin .cbeh-head h3 {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  color: var(--rossa-navy);
}
#contenido_admin .cbeh-head p {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 400;
  opacity: 1;
  color: var(--rossa-navy);
  margin-top: 4px;
}
#contenido_admin .ccol-chev { color: var(--rossa-stroke); }
#contenido_admin .cbeh-foot {
  background: var(--rossa-strip-soft);
  border-top: 1px solid var(--rossa-stroke);
}
#contenido_admin .cbeh-info strong {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  color: var(--rossa-navy);
}
#contenido_admin .cbeh-info span {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  color: var(--rossa-navy);
}
#contenido_admin .csec {
  font-family: var(--rossa-font);
  color: var(--rossa-stroke);
  border-top-color: var(--rossa-border);
}

/*----- Paquetes: la ficha, con el borde de las demás ------------------------ */
/* `:not(.rossa-datacard)` deja fuera las reglas de envío, que ya son tarjeta (§65.5). */
#contenido_admin .crule:not(.rossa-datacard),
#contenido_admin .crule:not(.rossa-datacard):hover {
  border: 1px solid var(--rossa-stroke);
  border-left: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  box-shadow: none;
  opacity: 1;
}
#contenido_admin .crule:not(.rossa-datacard) .crule-name {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  color: var(--rossa-navy);
}
#contenido_admin .crule:not(.rossa-datacard) .crule-meta {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  color: var(--rossa-navy);
}

/*----- Importar / Exportar: los dos paneles de listas ----------------------- */
#contenido_admin .io-panel {
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
}
#contenido_admin .io-panel-head {
  background: var(--rossa-strip-soft);
  border-bottom: 1px solid var(--rossa-stroke);
}
#contenido_admin .io-todas strong,
#contenido_admin .io-item-name {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  color: var(--rossa-navy);
}
#contenido_admin .io-item-sub {
  font-family: var(--rossa-font);
  font-size: 12px;
  line-height: 15px;
  color: var(--rossa-muted);
}
#contenido_admin .io-nota,
#contenido_admin .io-foot { border-top-color: var(--rossa-border); }

/*===== 69.11 Repaso de Ajustes · Paquetes · Importar/Exportar (2ª pasada) =====*/

/*----- Pastillas -------------------------------------------------------------*/
#contenido_admin .cpill {
  font-family: var(--rossa-font);
  font-weight: 700;
  border: 1px solid transparent;
}
#contenido_admin .cpill-green  { background: rgba(0, 168, 134, .14);  color: #04604b; border-color: rgba(0, 168, 134, .35); }
#contenido_admin .cpill-teal   { background: rgba(32, 92, 104, .10);  color: var(--rossa-petrol); border-color: rgba(32, 92, 104, .30); }
#contenido_admin .cpill-blue   { background: rgba(0, 108, 135, .12);  color: var(--rossa-db-400); border-color: rgba(0, 108, 135, .30); }
#contenido_admin .cpill-red    { background: var(--rossa-salmon);     color: var(--rossa-red-dark); border-color: rgba(231, 0, 76, .25); }
#contenido_admin .cpill-yellow { background: rgba(184, 153, 11, .14); color: #7a6407; border-color: rgba(184, 153, 11, .35); }
#contenido_admin .cpill-grey   { background: var(--rossa-strip);      color: var(--rossa-stroke); border-color: var(--rossa-border); }

/*----- Canal: la pastilla de Ajustes es un RÓTULO, no un filtro --------------*/
#contenido_admin .comm-chan-pill--fijo,
#contenido_admin .comm-chan-pill--fijo:hover {
  cursor: default;
  border-color: var(--rossa-border);
  color: var(--rossa-stroke);
}

/*----- Cuentas de envío (filas) ----------------------------------------------*/
#contenido_admin .cred-group-hd { border-bottom: 1px solid var(--rossa-border); }
#contenido_admin .cred-row,
#contenido_admin .cred-row:hover {
  border: 1px solid var(--rossa-border);
  border-left: 1px solid var(--rossa-border);   /* fuera la barra de color */
  border-radius: 6px;
  box-shadow: none;
}
#contenido_admin .cred-row.cred-php { background: var(--rossa-strip-soft); }
#contenido_admin .cred-name {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  color: var(--rossa-navy);
}
#contenido_admin .cred-data,
#contenido_admin .cred-php-tag {
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-muted);
}
/* Activa / Inactiva: pastilla con los tonos de marca. */
#contenido_admin .cred-tog {
  font-family: var(--rossa-font);
  font-size: 11px;
  border: 1px solid transparent;
}
#contenido_admin .cred-tog.on  { background: rgba(0, 168, 134, .14); color: #04604b; border-color: rgba(0, 168, 134, .35); }
#contenido_admin .cred-tog.off { background: var(--rossa-strip); color: var(--rossa-stroke); border-color: var(--rossa-border); }
/* Candado de «la gestiona el equipo técnico» (máscara del CDN, §32). */
#contenido_admin .cred-lock {
  display: inline-block;
  width: 15px;
  height: 15px;
  background-color: var(--rossa-stroke);
  cursor: help;
  -webkit-mask-image: url("https://cdn.rossa.app/icons/lock.svg");
          mask-image: url("https://cdn.rossa.app/icons/lock.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}

/*----- Contadores (0 configuradas · 4 del sistema · …) -----------------------*/
#contenido_admin .cstats {
  border: 1px solid var(--rossa-border);
  border-radius: 6px;
  background: var(--rossa-white);
}
#contenido_admin .cstat { border-color: var(--rossa-border); }
#contenido_admin .cstat strong {
  font-family: var(--rossa-font);
  color: var(--rossa-petrol);
}
#contenido_admin .cstat span {
  font-family: var(--rossa-font);
  color: var(--rossa-stroke);
}

/*----- Campos de las tres pestañas -------------------------------------------*/
/* `input.` y no solo `.`: la regla base de §12 pesa (1,1,1) y con la clase sola esto perdía. */
#contenido_admin input.cbeh-input,
#contenido_admin .cfield input,
#contenido_admin .cfield select,
#contenido_admin .cfield textarea,
#contenido_admin input.io-filtro {
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-navy);
}
#contenido_admin input.cbeh-input:focus,
#contenido_admin .cfield input:focus,
#contenido_admin .cfield select:focus,
#contenido_admin .cfield textarea:focus,
#contenido_admin input.io-filtro:focus {
  border-color: var(--rossa-petrol);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}
#contenido_admin input.io-filtro {
  border: 0;
  border-bottom: 1px solid var(--rossa-border);
  border-radius: 0;
}
#contenido_admin .io-count {
  font-family: var(--rossa-font);
  background: var(--rossa-petrol);
  color: var(--rossa-white);
}

/*----- El interruptor, uno solo en todo el panel — la bolita va en `::after` (ver §69.7) -----*/
#contenido_admin .cbeh-row .tog { width: 56px; height: 26px; }
#contenido_admin .cbeh-row .tog-track {
  display: block;
  width: 56px;
  height: 26px;
  border: 0;
  border-radius: 35px;
  background: #d9d9d9;
  transition: background-color .15s ease;
}
#contenido_admin .cbeh-row .tog-track::after {
  content: "";
  position: absolute;
  left: 3px;
  top: 3px;
  right: auto;
  width: 19px;
  height: 19px;
  border-radius: 50%;
  background: var(--rossa-white);
  box-shadow: none;
  transition: transform .15s ease;
}
#contenido_admin .cbeh-row .tog input:checked + .tog-track { background: var(--rossa-green-fig); }
#contenido_admin .cbeh-row .tog input:checked + .tog-track::after { transform: translateX(31px); }

/*===== 69.12 Comunicaciones · Adjuntos =====*/
#contenido_admin .cadj-vacio {
  text-align: center;
  padding: 48px 20px;
  margin-top: 14px;
  border: 1px dashed var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  color: var(--rossa-muted);
  font-size: 13px;
}
#contenido_admin .cadj-vacio__titulo {
  margin-bottom: 6px;
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-navy);
}
#contenido_admin table.rossa-tbl.cadj-tabla.cadj-tabla > tbody > tr.cadj-off > td,
#contenido_admin .cadj-tabla tr.cadj-off .comm-log-table__asunto { color: var(--rossa-muted); }
#contenido_admin .cadj-tabla .cadj-regla-off { color: var(--rossa-muted); }
#contenido_admin .cadj-tabla .cadj-acciones { white-space: nowrap; }
#contenido_admin .cadj-tabla .rossa-iconbtn.rossa-iconbtn {
  width: 32px;
  height: 32px;
  margin: 0 2px;
  padding: 0;
  gap: 0;
  border: 1px solid transparent;
  background: transparent;
  box-shadow: none;
  font-size: var(--rossa-tbl-ico-size);
  color: var(--rossa-tbl-ico);
}
#contenido_admin .cadj-tabla .rossa-iconbtn.rossa-iconbtn:hover { background: rgba(32, 92, 104, .10); color: var(--rossa-petrol); }
#contenido_admin .cadj-tabla .rossa-iconbtn.rossa-iconbtn--danger { color: var(--rossa-red); }
#contenido_admin .cadj-tabla .rossa-iconbtn.rossa-iconbtn--danger:hover { background: var(--rossa-salmon); color: var(--rossa-red); }
#contenido_admin table.rossa-tbl.cadj-tabla .rossa-iconbtn i { margin: 0; }
#contenido_admin .cadj-tabla .rossa-iconbtn.rossa-iconbtn.cbtn-toggle-on,
#contenido_admin .cadj-tabla .rossa-iconbtn.rossa-iconbtn.cbtn-toggle-on:hover { color: var(--rossa-pag); }
#contenido_admin .cadj-tabla .rossa-iconbtn.rossa-iconbtn.cbtn-toggle-off { color: var(--rossa-muted); }

/*===== 69.10 El buscador del menú, dentro del raíl =====*/
/* Sangría propia, con la especificidad de §68.10 para poder ganarle. */
html.rossa-rail #menu .rossa-menusearch__results a.rossa-menusearch__hit {
  padding-left: 16px;
  padding-right: 14px;
}

/* (b) Lista más apretada: etiqueta a 14px y menos aire arriba y abajo. */
#menu .rossa-menusearch__results a.rossa-menusearch__hit {
  padding-top: 7px;
  padding-bottom: 7px;
  font-size: 14px;
  line-height: 17px;
}
#menu .rossa-menusearch__results .rossa-menusearch__body .txtmenu {
  font-size: 14px;
  line-height: 17px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* El camino heredaba los 17px de interlineado de la fila con una letra de 10. */
#menu .rossa-menusearch__results .rossa-menusearch__ctx {
  margin-top: 1px;
  line-height: 12px;
}

/* Va en #toplydia porque su contexto de apilado (996) ya está por delante del menú (995) y los botones (997) por delante de la franja. */
html.rossa-rail #toplydia::before {
  content: "";
  position: fixed;
  left: 0;
  bottom: 0;
  box-sizing: border-box;
  width: 64px;
  height: 200px;                   /* el bloque llega hasta 191 (§68.8) */
  background: var(--rossa-white);
  border-right: 1px solid var(--rossa-border);
  pointer-events: none;
  transition: width .18s ease;
}
html.rossa-rail.rossa-rail-open #toplydia::before { width: 272px; }
/* Igual arriba: el logo y la chapa de alojamiento flotan sobre el menu y, sin franja, la lista se ve pasar por debajo al hacer scroll. */
html.rossa-rail #toplydia::after {
  content: "";
  position: fixed;
  left: 0;
  top: 0;
  box-sizing: border-box;
  width: 64px;
  height: 124px;                   /* el padding-top de #menu (§69.5) */
  background: var(--rossa-white);
  border-right: 1px solid var(--rossa-border);
  pointer-events: none;
  z-index: -1;
  transition: width .18s ease;
}
html.rossa-rail body:not(:has(#rossa-toolbar-slot)) #toplydia::after { height: 76px; }
html.rossa-rail.rossa-rail-open #toplydia::after { width: 272px; }
/* Solo si la lista no cabe (clase de admin/includes/footer.php): el bloque baja 28px, el hueco que dejo el pie retirado (§68.14). */
html.rossa-rail.rossa-rail-justo #toolbar #nombreuser        { bottom: 16px; }
html.rossa-rail.rossa-rail-justo #toolbar #rossa-avisos-bell { bottom: 68px; }
html.rossa-rail.rossa-rail-justo #toolbar #btn-crear-reserva { bottom: 116px; }
html.rossa-rail.rossa-rail-justo #menu { padding-bottom: 172px; }
html.rossa-rail.rossa-rail-justo #toplydia::before { height: 172px; }

html.rossa-rail #menu {
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  scrollbar-color: var(--rossa-border) transparent;
}
html.rossa-rail #menu::-webkit-scrollbar { width: 8px; }
html.rossa-rail #menu::-webkit-scrollbar-track { background-color: transparent; }
html.rossa-rail #menu::-webkit-scrollbar-thumb {
  background-color: var(--rossa-border);
  border-radius: 999px;
}
html.rossa-rail #menu::-webkit-scrollbar-thumb:hover { background-color: var(--rossa-stroke); }
html.rossa-rail:not(.rossa-rail-open) #menu:not(:hover) { scrollbar-width: none; scrollbar-gutter: auto; }
html.rossa-rail:not(.rossa-rail-open) #menu:not(:hover)::-webkit-scrollbar { display: none; }

/*===== 70. CROMO ÚNICO DE VENTANA MODAL: se unifica el ASPECTO, no el mecanismo =====*/

/*----- 70.1 lydia_popup: solo el radio, para que cuadre con el canon -------- */
/* El resto del cromo lo pone admin/css/lydia_popup.css. */
#lydia_popup { border-radius: 10px; }

/*----- 70.2 Comunicaciones (.comm-overlay / .comm-mbox) --------------------- */
.comm-overlay { background: rgba(22, 41, 45, .42); }
.comm-mbox {
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  box-shadow: 0 12px 40px rgba(20, 40, 60, .16);
}
.comm-mhd {
  background: var(--rossa-surface-2);
  color: var(--rossa-navy);
  min-height: 44px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--rossa-border);
  box-sizing: border-box;
}
.comm-mhd h3 {
  font-family: var(--rossa-font);
  font-size: 15px;
  line-height: 1.3;
  font-weight: 600;
  color: var(--rossa-navy);
}
/* Confirmación destructiva: lo que avisa es el TÍTULO, no un fondo rojo. */
.comm-mhd--danger h3 { color: var(--rossa-red); }
.comm-mhd-close {
  width: 32px;
  height: 32px;
  border-radius: var(--rossa-radius);
  background: transparent;
  color: var(--rossa-muted);
  font-size: 16px;
}
@media (max-width: 700px) {
  #trig_resumen.cresumen-live { flex-direction: column; }
  .cgrid2 { grid-template-columns: 1fr; }
  .cfield:has(#trig_cond_pagado),
  .cfield:has(#trig_cond_checkin) {
    width: 100%;
  }
  .comm-mft:has(#btn_guardar_regla) { justify-content: center; }
}

@media (max-width: 1000px) {
  .rossa-tpl-row {
    flex-direction: column;
    align-items: stretch !important;
  }
  .rossa-tpl-vars {
    width: 100% !important;
  }
}

#hf_lang { padding-right: 30px !important; }

@media (max-width: 700px) {
  .cbeh-row {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
  }
  .cbeh-ctrl { width: 100%; }
  .cbeh-input {
    width: 100% !important;
    max-width: none;
    box-sizing: border-box;
  }
  .cred-row {
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
  }
  .cred-data { white-space: normal; overflow: visible; text-overflow: clip; }
  .cred-acts { flex-wrap: wrap; }
}
.comm-mhd-close:hover {
  background: rgba(32, 92, 104, .10);
  color: var(--rossa-petrol);
}
.comm-mbd { padding: 20px 24px; }
.comm-mft {
  padding: 14px 24px;
  background: var(--rossa-strip-soft);
  border-top: 1px solid var(--rossa-border);
}

/* `.comm-modal` hoy no se incluye (tab_credenciales.php); se deja alineada por si vuelve. */
.comm-modal-bg { background: rgba(22, 41, 45, .42); }
.comm-modal {
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  box-shadow: 0 12px 40px rgba(20, 40, 60, .16);
}
.comm-modal h3 {
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 600;
  color: var(--rossa-navy);
}
.comm-modal-close { color: var(--rossa-muted); }
.comm-modal-close:hover { color: var(--rossa-petrol); }

/*----- 70.3 SweetAlert2 — v11 expone sus propias custom properties: basta redefinirlas -----*/
:root {
  --swal2-backdrop: rgba(22, 41, 45, .42);
  --swal2-background: var(--rossa-white);
  --swal2-color: var(--rossa-ink);
  --swal2-border: 1px solid var(--rossa-border);
  --swal2-border-radius: 10px;
  --swal2-width: 34em;
  --swal2-confirm-button-background-color: var(--rossa-teal);
  --swal2-cancel-button-background-color: var(--rossa-surface);
  --swal2-deny-button-background-color: var(--rossa-red);
  --swal2-close-button-color: var(--rossa-muted);
  --swal2-outline: 0 0 0 3px rgba(0, 94, 102, .25);
}
.swal2-popup {
  font-family: var(--rossa-font);
  box-shadow: 0 12px 40px rgba(20, 40, 60, .16);
}
.swal2-title {
  font-family: var(--rossa-font);
  font-size: 17px;
  font-weight: 700;
  color: var(--rossa-navy);
}
.swal2-html-container {
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
}
.swal2-actions .swal2-styled {
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  border-radius: var(--rossa-radius);
  box-shadow: none;
}
.swal2-actions .swal2-styled.swal2-cancel { color: var(--rossa-ink); }

/*----- 70.4 jQuery UI dialog -----*/
.ui-widget-overlay {
  background: rgba(22, 41, 45, .42);
  opacity: 1;
}
.ui-dialog { box-shadow: 0 12px 40px rgba(20, 40, 60, .16); }
.ui-dialog .ui-dialog-titlebar {
  background: var(--rossa-surface-2);
  min-height: 44px;
  padding: 10px 16px;
  box-sizing: border-box;
}
.ui-dialog .ui-dialog-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--rossa-navy);
}
.ui-dialog .ui-dialog-content { padding: 20px 24px; }
.ui-dialog .ui-dialog-buttonpane {
  padding: 14px 24px;
  background: var(--rossa-strip-soft);
}

/*===== 71. CAMPOS DE FILTRO Y FECHAS (.rossa-field + todo input de fecha del admin) =====*/
/* Cada regla de fecha va con su gemelo `type="datepicker"`; se toca borde, radio, tipografía e icono, nunca ancho/display/padding. */

/*----- 71.1 Bloque rótulo + campo ------------------------------------------- */
/* lydia.css:2260 subraya a trazos los rotulos con ayuda; el texto ya va en el tippy. */
#contenido_admin .rossa-filters label.ayuda { border-bottom: 0; cursor: default; }
.rossa-field {
  position: relative;
  display: inline-flex;
  flex-direction: column;
  gap: 5px;
  font-family: var(--rossa-font);
}
.rossa-field__label {
  font-size: 14px;
  line-height: 20px;
  font-weight: 500;
  color: var(--rossa-petrol);
}

/*----- 71.2 Fechas en TODO el admin ------------------------------------------ */
#contenido_admin input[type="date"],
#contenido_admin input[type="datetime-local"],
#contenido_admin input[type="datepicker"] {
  box-sizing: border-box;
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  color: var(--rossa-navy);
}
#contenido_admin input[type="date"]:focus,
#contenido_admin input[type="datetime-local"]:focus,
#contenido_admin input[type="datepicker"]:focus {
  outline: none;
  border-color: var(--rossa-petrol);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}
/* Se repinta el icono nativo, no se tapa: así sigue abriendo el desplegable del navegador. */
#contenido_admin input[type="date"]::-webkit-calendar-picker-indicator,
#contenido_admin input[type="datetime-local"]::-webkit-calendar-picker-indicator {
  width: 15px;
  height: 15px;
  opacity: 1;
  cursor: pointer;
  background-color: var(--rossa-stroke);
  background-image: none;
  -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar.svg");
          mask-image: url("https://cdn.rossa.app/icons/calendar.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}
/* Los campos de jQuery UI no traen icono propio: se les pinta uno de fondo. */
#contenido_admin input[type="datepicker"] {
  background-image: url("https://cdn.rossa.app/icons/calendar.svg?bg");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 15px 15px;
}
/* La pista «aaaa-mm-dd» la pone el unificador de admin/includes/footer.php. */
#contenido_admin input[type="date"]::placeholder,
#contenido_admin input[type="datetime-local"]::placeholder,
#contenido_admin input[type="datepicker"]::placeholder {
  color: var(--rossa-stroke);
  opacity: 1;   /* Firefox le baja la opacidad por su cuenta */
}

/*----- 71.3 Campo de fichero — solo color y forma: ni ancho ni display, que el control es del navegador -----*/
#contenido_admin input[type="file"],
.comm-overlay input[type="file"] {
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-navy);
}
#contenido_admin input[type="file"]::file-selector-button,
.comm-overlay input[type="file"]::file-selector-button {
  margin-right: 10px;
  padding: 6px 12px;
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 700;
  color: var(--rossa-petrol);
  cursor: pointer;
}
#contenido_admin input[type="file"]::file-selector-button:hover,
.comm-overlay input[type="file"]::file-selector-button:hover {
  background: rgba(32, 92, 104, .08);
  border-color: var(--rossa-petrol);
}

/*===== 72. SELECTOR DE RANGO DE FECHAS (.rossa-daterange, js/rossa/rango_fechas.js) =====*/
/* Las reglas del calendario llevan dos selectores (`.rossa-daterange__cal` y `#ui-datepicker-div`, §73): lo que se toque aquí cambia los dos. */
.rossa-daterange { position: relative; }

/*----- El campo -------------------------------------------------------------- */
.rossa-daterange__field {
  position: relative;
  display: flex;
  align-items: center;
  box-sizing: border-box;
  min-width: 200px;
  width: auto;
  height: 35px;
  padding: 0 32px 0 12px;
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  font-weight: 400;
  color: var(--rossa-navy);
  text-align: left;
  cursor: pointer;
}
.rossa-daterange__field.is-vacio { color: var(--rossa-stroke); }
.rossa-daterange__field:hover { border-color: var(--rossa-petrol); }
.rossa-daterange.is-abierto .rossa-daterange__field {
  border-color: var(--rossa-petrol);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}
.rossa-daterange__txt {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
/* El calendario de 15px, pegado al borde derecho del campo. */
.rossa-daterange__field::after {
  content: "";
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  width: 15px;
  height: 15px;
  background-color: var(--rossa-stroke);
  -webkit-mask-image: url("https://cdn.rossa.app/icons/calendar.svg");
          mask-image: url("https://cdn.rossa.app/icons/calendar.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
  pointer-events: none;
}

/*----- El desplegable -------------------------------------------------------- */
.rossa-daterange__pop {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  /* La misma capa que el desplegable global (§73) y select2: con 1200 perdía contra un modal (2000). */
  z-index: 10050;
  box-sizing: border-box;
  padding: 14px 16px 12px;
  background: var(--rossa-white);
  border: 0;
  border-radius: 6px;
  box-shadow: 0 0 0 1px rgba(92, 124, 132, .2), 0 4px 4px rgba(0, 0, 0, .25);
}
.rossa-daterange__pop[hidden] { display: none; }
.rossa-daterange__acts {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 10px;
}
.rossa-daterange__reset,
.rossa-daterange__ok {
  box-sizing: border-box;
  height: 27px;
  padding: 0 12px;
  border-radius: 5px;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  cursor: pointer;
}
.rossa-daterange__reset {
  border: 1px solid var(--rossa-petrol);
  background: var(--rossa-white);
  color: var(--rossa-petrol);
}
.rossa-daterange__reset:hover { background: rgba(32, 92, 104, .08); }
.rossa-daterange__ok {
  border: 1px solid var(--rossa-petrol);
  background: var(--rossa-petrol);
  color: var(--rossa-white);
}
.rossa-daterange__ok:hover { background: var(--rossa-petrol-dark); border-color: var(--rossa-petrol-dark); }
.rossa-daterange__ok:disabled {
  background: var(--rossa-surface);
  border-color: var(--rossa-border);
  color: var(--rossa-muted);
  cursor: default;
}

/*----- El calendario de jQuery UI, revestido --------------------------------- */
/* Los 450px del Figma menos las sangrías del desplegable. */
.rossa-daterange__cal { width: 418px; }
/* `!important`: jQuery UI escribe al calendario múltiple un `style="width:NNem"` EN LÍNEA. */
.rossa-daterange__cal .ui-datepicker {
  width: 100% !important;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  font-family: var(--rossa-font);
}
.rossa-daterange__cal .ui-datepicker-group {
  box-sizing: border-box;
  width: 50%;
  padding: 0 10px;
  float: left;
}
/* Separador vertical entre los dos meses (Figma: línea de 0,5px). */
#ui-datepicker-div .ui-datepicker-group-last,
.rossa-daterange__cal .ui-datepicker-group-last { border-left: 1px solid var(--rossa-stroke); }
/* `!important`: el tema escribe un `width:NNem` EN LÍNEA al calendario múltiple. */
#ui-datepicker-div.ui-datepicker-multi-2 { width: 450px !important; }
/* Cabecera en línea: la flecha ocupa una columna de día y el mes se centra en lo que queda. */
#ui-datepicker-div .ui-datepicker-header,
.rossa-daterange__cal .ui-datepicker-header {
  position: relative;
  display: flex;
  align-items: center;
  padding: 0 0 12px;
  border: 0;
  background: transparent;
}
#ui-datepicker-div .ui-datepicker-title,
.rossa-daterange__cal .ui-datepicker-title {
  order: 1;
  flex: 0 1 auto;
  min-width: 0;
  margin: 0 auto;
  font-size: 14px;
  line-height: 20px;
  font-weight: 500;
  color: var(--rossa-petrol);
  text-align: center;
}
/* Cada grupo enseña una sola flecha: el hueco del otro lado lo pone un pseudoelemento o el mes no saldría centrado. */
#ui-datepicker-div .ui-datepicker-group-first .ui-datepicker-header::after,
.rossa-daterange__cal .ui-datepicker-group-first .ui-datepicker-header::after {
  content: "";
  order: 2;
  flex: 0 0 14.2857%;
}
#ui-datepicker-div .ui-datepicker-group-last .ui-datepicker-header::before,
.rossa-daterange__cal .ui-datepicker-group-last .ui-datepicker-header::before {
  content: "";
  order: 0;
  flex: 0 0 14.2857%;
}
/* Flechas de mes: iconos del CDN, sin el sprite del tema smoothness. */
#ui-datepicker-div .ui-datepicker-prev,
.rossa-daterange__cal .ui-datepicker-prev,
#ui-datepicker-div .ui-datepicker-next,
.rossa-daterange__cal .ui-datepicker-next {
  position: static;
  display: flex;
  align-items: center;
  justify-content: center;
  /* Un séptimo: la flecha cae sobre la L y sobre el D, como las columnas de debajo. */
  flex: 0 0 14.2857%;
  /* 20 y no 22 de alto: la cabecera mide lo que el título y el filete de §83 cuadra con ella. */
  height: 20px;
  border: 0;
  background: transparent;
  cursor: pointer;
}
#ui-datepicker-div .ui-datepicker-prev,
.rossa-daterange__cal .ui-datepicker-prev { order: 0; }
#ui-datepicker-div .ui-datepicker-next,
.rossa-daterange__cal .ui-datepicker-next { order: 2; }
#ui-datepicker-div .ui-datepicker-prev span,
.rossa-daterange__cal .ui-datepicker-prev span,
#ui-datepicker-div .ui-datepicker-next span,
.rossa-daterange__cal .ui-datepicker-next span {
  position: static;
  display: block;
  width: 16px;
  height: 16px;
  margin: 0;
  top: auto;
  left: auto;
  background-color: var(--rossa-stroke);
  background-image: none;
  text-indent: 0;
  overflow: hidden;
  color: transparent;
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}
#ui-datepicker-div .ui-datepicker-prev span,
.rossa-daterange__cal .ui-datepicker-prev span {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-left.svg");
          mask-image: url("https://cdn.rossa.app/icons/chevron-left.svg");
}
#ui-datepicker-div .ui-datepicker-next span,
.rossa-daterange__cal .ui-datepicker-next span {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg");
          mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg");
}
/* El tercer selector iguala al `.ui-datepicker-multi .ui-datepicker-group table` del tema, que encoge la tabla al 95%. */
#ui-datepicker-div .ui-datepicker-calendar,
.rossa-daterange__cal .ui-datepicker-calendar,
.rossa-daterange__cal .ui-datepicker-group .ui-datepicker-calendar {
  width: 100%;
  margin: 0;
  border-collapse: collapse;
  font-size: 14px;
}
/* Filete sobre las iniciales de los días (Figma: «Line 24»). */
#ui-datepicker-div .ui-datepicker-calendar thead,
.rossa-daterange__cal .ui-datepicker-calendar thead { border-top: 1px solid var(--rossa-stroke); }
#ui-datepicker-div .ui-datepicker-calendar th,
.rossa-daterange__cal .ui-datepicker-calendar th {
  padding: 10px 0 8px;
  border: 0;
  background: transparent;
  font-size: 14px;
  line-height: 20px;
  font-weight: 500;
  color: var(--rossa-petrol);
  text-align: center;
}
#ui-datepicker-div .ui-datepicker-calendar td,
.rossa-daterange__cal .ui-datepicker-calendar td {
  padding: 3px 1px;
  border: 0;
  background: transparent;
  text-align: center;
}
/* Blindaje: montado dentro de una .rossa-table heredaba zebra, barra cian y padding de celda. */
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar tr,
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar td,
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar th,
#contenido_admin #ui-datepicker-div table.ui-datepicker-calendar tr,
#contenido_admin #ui-datepicker-div table.ui-datepicker-calendar td,
#contenido_admin #ui-datepicker-div table.ui-datepicker-calendar th {
  background-color: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar td,
#contenido_admin #ui-datepicker-div table.ui-datepicker-calendar td {
  display: table-cell;
  padding: 3px 1px;
  width: auto;
  min-width: 0;
  white-space: normal;
  vertical-align: middle;
}
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar th,
#contenido_admin #ui-datepicker-div table.ui-datepicker-calendar th { padding: 10px 0 8px; }
/* La cabecera de .rossa-tbl subraya cada th con un ::after de 2px: bajo L M X… no pinta nada. */
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar th::after,
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar th::before,
#contenido_admin #ui-datepicker-div table.ui-datepicker-calendar th::after,
#contenido_admin #ui-datepicker-div table.ui-datepicker-calendar th::before { content: none; }
/* El color de los dias tambien: `.rossa-table a` los teñia de #00a8d2. Mismos estados que arriba, con la especificidad del blindaje. */
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar td a,
#contenido_admin #ui-datepicker-div table.ui-datepicker-calendar td a { color: var(--rossa-petrol); text-decoration: none; }
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar td.rossa-dr-dentro a,
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar td.rossa-dr-previo a { color: var(--rossa-db-400); }
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar td.rossa-dr-extremo a,
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar td.rossa-dr-previo-fin a,
#contenido_admin #ui-datepicker-div table.ui-datepicker-calendar td a.ui-state-active { color: var(--rossa-white); }
#contenido_admin .rossa-daterange__cal table.ui-datepicker-calendar td.ui-datepicker-other-month a,
#contenido_admin #ui-datepicker-div table.ui-datepicker-calendar td.ui-datepicker-other-month a { color: var(--rossa-stroke); }
/* `a` y `span` porque jQuery UI usa <span> para los días no seleccionables. */
#ui-datepicker-div .ui-datepicker-calendar td a,
.rossa-daterange__cal .ui-datepicker-calendar td a,
#ui-datepicker-div .ui-datepicker-calendar td span,
.rossa-daterange__cal .ui-datepicker-calendar td span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 20px;
  height: 20px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  font-size: 14px;
  line-height: 20px;
  font-weight: 400;
  color: var(--rossa-petrol);
  text-align: center;
}
/* Los estados van con el `td` calificado (0,3,2): sin él pierden contra la regla del día de arriba. */
/* Días de los meses vecinos: más claros y en peso fino, como en el Figma. */
#ui-datepicker-div .ui-datepicker-calendar td.ui-datepicker-other-month a,
.rossa-daterange__cal .ui-datepicker-calendar td.ui-datepicker-other-month a,
#ui-datepicker-div .ui-datepicker-calendar td.ui-datepicker-other-month span,
.rossa-daterange__cal .ui-datepicker-calendar td.ui-datepicker-other-month span {
  font-weight: 300;
  color: var(--rossa-stroke);
}
#ui-datepicker-div .ui-datepicker-calendar td a:hover,
.rossa-daterange__cal .ui-datepicker-calendar td a:hover { background: rgba(0, 108, 135, .10); }
/* Dentro del rango: relleno al 15 %. Extremos: relleno pleno. Las clases --previo son la vista previa bajo el cursor tras el primer clic. */
.rossa-daterange__cal .ui-datepicker-calendar td.rossa-dr-dentro a,
.rossa-daterange__cal .ui-datepicker-calendar td.rossa-dr-dentro span,
.rossa-daterange__cal .ui-datepicker-calendar td.rossa-dr-previo a {
  background: rgba(0, 108, 135, .15);
  color: var(--rossa-db-400);
}
.rossa-daterange__cal .ui-datepicker-calendar td.rossa-dr-extremo a,
.rossa-daterange__cal .ui-datepicker-calendar td.rossa-dr-extremo span,
.rossa-daterange__cal .ui-datepicker-calendar td.rossa-dr-previo-fin a {
  background: var(--rossa-db-400);
  color: var(--rossa-white);
}
/* «Hoy» no debe competir con la marca del rango. */
#ui-datepicker-div .ui-datepicker-calendar td.ui-datepicker-today a,
.rossa-daterange__cal .ui-datepicker-calendar td.ui-datepicker-today a {
  box-shadow: inset 0 0 0 1px var(--rossa-stroke);
}
.rossa-daterange__cal .ui-datepicker-calendar td.ui-datepicker-today.rossa-dr-extremo a { box-shadow: none; }

@media (max-width: 700px) {
  /* Movil: el campo ocupa la fila y el desplegable pasa a hoja fija centrada (anclado al campo se salia por la izquierda). */
  .rossa-daterange--campos,
  .rossa-daterange--campos .rossa-daterange__field,
  #contenido_admin .rossa-filters .rossa-daterange__field { display: flex; width: 100%; }
  #contenido_admin .rossa-filters .filter-container:has(.rossa-daterange--campos) { flex: 1 1 100%; }
  .rossa-daterange__pop {
    position: fixed;
    top: 50%;
    left: 50%;
    right: auto;
    width: min(450px, 100vw - 24px);
    transform: translate(-50%, -50%);
    max-height: calc(100vh - 24px);
    overflow-y: auto;
  }
  .rossa-daterange__cal { width: auto; }
}
#rossa-add-reserva-rango .rossa-daterange__pop {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: auto;
  transform: none;
  width: min(450px, calc(100vw - 24px));
  max-height: none;
  overflow-y: visible;
}
@media (max-width: 479px) {
  /* Un mes por línea: dos no caben. */
  #ui-datepicker-div { width: min(280px, calc(100vw - 60px)) !important; }
  #ui-datepicker-div .ui-datepicker-group,
  .rossa-daterange__cal .ui-datepicker-group { float: none; width: 100%; }
  #ui-datepicker-div .ui-datepicker-group-last,
  .rossa-daterange__cal .ui-datepicker-group-last { border-left: 0; padding-top: 22px; }
}

/*----- Rango montado sobre dos inputs (data-rossa-rango): la caja se crea junto al primero ----- */
.rossa-daterange--campos { display: inline-block; vertical-align: middle; }
/* Nada que aparte el rango usa `display:none`: el JS necesita ver si es la pantalla quien los esconde. */
#contenido_admin [data-rossa-rango-fuera],
#contenido_admin [data-rossa-rango-vacio="1"] {
  position: absolute !important;
  width: 0 !important;
  height: 0 !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  overflow: hidden !important;
  opacity: 0 !important;
  pointer-events: none;
}
#contenido_admin .rossa-filters .rossa-daterange__field,
#contenido_admin .filter-box-dates .rossa-daterange__field,
#contenido_admin #panel_principal_lotes .rossa-daterange__field { height: 36px; border-radius: var(--rossa-radius); }
#contenido_admin .fx-exports .rossa-daterange__field { height: 36px; border-radius: var(--fx-radius); }
/* En las fichas de `table.estandar` los campos miden 38: el rango no puede quedarse corto al lado. */
#contenido_admin table.estandar .rossa-daterange__field { height: 38px; border-radius: var(--rossa-radius); }
/* Tasas: todo el formulario a la altura de los Select2 unificados. */
#contenido_admin .ttax-page .rossa-form-row input[type="text"],
#contenido_admin .ttax-page .rossa-form-row input[type="number"],
#contenido_admin .ttax-page .rossa-form-row .rossa-daterange__field { min-height: 36px; height: 36px; }
#contenido_admin .rossa-filters .filter-container:has(.rossa-daterange--campos) { flex: 0 1 auto; }

/*===== 73. EL CALENDARIO DE jQuery UI, IGUAL EN TODO EL ADMIN (#ui-datepicker-div) =====*/
/* Ni ancho ni posición: los escribe jQuery UI en línea. Y no se puede acotar a #contenido_admin: el <div> es hijo de <body>. */

/* jQuery UI escribe el `z-index` EN LÍNEA (nace en 1): contra un estilo en línea solo gana el !important. */
#ui-datepicker-div {
  z-index: 10050 !important;
  box-sizing: border-box;
  --rossa-dp-sangria: 14px 16px 12px;
  /* Medidas del rango: el tema dimensiona en `em` y cada pantalla salía de un ancho distinto. */
  width: 241px;
  max-width: calc(100vw - 16px);
  padding: var(--rossa-dp-sangria);
  background: var(--rossa-white);
  border: 0;
  border-radius: 6px;
  box-shadow: 0 0 0 1px rgba(92, 124, 132, .2), 0 4px 4px rgba(0, 0, 0, .25);
  font-family: var(--rossa-font);
  font-size: 14px;
}

/* El ANCHO no se fija (lo da `.ui-datepicker-multi-2` del tema): con 50% a pelo, tres meses saldrían rotos. */
#ui-datepicker-div .ui-datepicker-group {
  box-sizing: border-box;
  padding: 0 10px;
}

/* La regla compartida del día gana al `.ui-state-active` del tema: sin esto el día elegido no tiene relleno. */
#ui-datepicker-div .ui-datepicker-calendar td a.ui-state-active {
  background: var(--rossa-db-400);
  color: var(--rossa-white);
}

#ui-datepicker-div .ui-datepicker-buttonpane {
  margin: 10px 0 0;
  padding: 10px 0 0;
  border: 0;
  border-top: 1px solid var(--rossa-border);
  background: transparent;
}
#ui-datepicker-div .ui-datepicker-buttonpane button {
  box-sizing: border-box;
  height: 27px;
  margin: 0;
  padding: 0 12px;
  border: 1px solid var(--rossa-petrol);
  border-radius: 5px;
  background: var(--rossa-white);
  color: var(--rossa-petrol);
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  cursor: pointer;
}
#ui-datepicker-div .ui-datepicker-buttonpane button:hover { background: rgba(32, 92, 104, .08); }
/* «Cerrar» es la acción de cierre, como «Aplicar»: va rellena y a la derecha. */
#ui-datepicker-div .ui-datepicker-buttonpane button.ui-datepicker-close {
  background: var(--rossa-petrol);
  color: var(--rossa-white);
}
#ui-datepicker-div .ui-datepicker-buttonpane button.ui-datepicker-close:hover {
  background: var(--rossa-petrol-dark);
  border-color: var(--rossa-petrol-dark);
}


/*----- 65. TABLAS — BASE UNIFICADA. OPT-IN: solo actua con la clase `rossa-tbl` en el <table> -----*/
:root {
  --rossa-tbl-font:    13px;                    /* misma medida para dato y cabecera */
  --rossa-tbl-row-h:   78px;                    /* alto fijo, con 1 o 2 lineas */
  --rossa-tbl-pad-x:   12px;
  --rossa-tbl-zebra:   rgba(32, 92, 104, .02);  /* rinde #fbfcfc */
  --rossa-tbl-muted:   #708c93;                 /* 2a linea de celda (email) */
  --rossa-tbl-ico:     #5c7c84;                 /* iconos de accion, un solo gris petrol */
  --rossa-tbl-ico-size: 20px;                   /* mismo glifo que las acciones de las tarjetas de Comunicaciones */
}

/*----- 65.1 Caja --------------------------------------------------------------*/
#contenido_admin table.rossa-tbl.rossa-tbl {
  border-collapse: collapse;
  border-spacing: 0;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  width: 100%;
  padding: 0;
  border-radius: 0;
}

/*----- 65.2 Cabecera — !important obligado: lydia.css:1065 pone `border: 0 !important` en `tr.cab td` -----*/
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab > td,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab > th,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > td {
  background: var(--rossa-white);
  color: var(--rossa-navy);
  font-family: var(--rossa-font);
  font-size: var(--rossa-tbl-font);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .4px;
  line-height: 1.25;
  padding: 13px var(--rossa-tbl-pad-x);
  border: 0;
  border-top: 1px solid var(--rossa-hairline-soft) !important;
  border-bottom: 1px solid var(--rossa-hairline-soft) !important;
  border-radius: 0;
  vertical-align: middle;
}

/* Se excluyen las cabeceras ordenables: DataTables dibuja ahi su indicador. */
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th:not(.sorting):not(.sorting_asc):not(.sorting_desc)::after,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th:not(.sorting):not(.sorting_asc):not(.sorting_desc)::before,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab > td::after,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab > th::after,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab > th::before {
  content: none;
  display: none;
}

/*----- 65.3 Cuerpo ------------------------------------------------------------*/
/* `border: 0` mata los cuatro bordes #999 de `table.estandar tr td`. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td {
  background-color: transparent;
  color: var(--rossa-petrol);
  font-size: var(--rossa-tbl-font);
  font-weight: 400;
  line-height: 1.5;
  height: var(--rossa-tbl-row-h);
  padding: 0 var(--rossa-tbl-pad-x);
  border: 0;
  border-radius: 0;
  vertical-align: middle;
}

#contenido_admin:has(.rossa-mark-archivos-xls) h1 {
  margin-bottom: 40px;
}
/* archivos_xls/factExports: celda de filtros con varios widgets, mucho mas alta que --rossa-tbl-row-h; sin relleno propio las filas se pegan entre si. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.xls-filters-cell,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.fx-filters-cell {
  padding-top: 14px;
  padding-bottom: 14px;
}
/* El editor de plantillas es un flex: el margin:auto de lydia separaría los botones. */
#contenido_admin .xls-editor-actions .admin_boton {
  margin-left: 0;
  margin-right: 0;
}

/* El fondo va en la fila: en la celda romperia los colores de estado. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) { background-color: var(--rossa-white); }
/* !important obligado: §23 pone `tr[style*="ECF0F1"]` con !important. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab)[style] { background-color: var(--rossa-white) !important; }
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr[style]:nth-child(even of :not(.cab):has(> td, > th)) { background-color: var(--rossa-tbl-zebra) !important; }
/* `of :not(.cab)` cuenta solo filas de datos: sin eso el zebra sale invertido. */
/* `:has(> td, > th)` excluye los <tr> vacios (admin/codigos.php:87). */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:nth-child(even of :not(.cab):has(> td, > th)) { background-color: var(--rossa-tbl-zebra); }

/* El atributo HTML align es una presentational hint: pierde sin !important. */
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > td,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab > td,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab > th,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td[align],
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td[align="right"],
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td[align="left"] {
  text-align: center;
}

/* Columna "etiqueta": la de clientes se reconoce por el email de la 2a linea. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:has(.gestclimail),
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab > td.rossa-tbl-th--izq,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th.rossa-tbl-th--izq,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.rossa-tbl-td--izq {
  text-align: left;
}

/*----- 65.4 Contenido de celda ------------------------------------------------*/
/* :not(.ui-state-default): los dias de un calendario jQuery UI montado dentro de la tabla no son enlaces de la tabla. */
/* :not(.rossa-sorting): el de ordenar es una cabecera, no contenido de celda, y va del color del resto de cabeceras. */
#contenido_admin table.rossa-tbl.rossa-tbl a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton):not(.ui-state-default):not(.rossa-sorting):not(.unpin):not(.unpermiso) {
  color: var(--rossa-cyan-fig);
  font-weight: 400;
  text-decoration: none;
}
#contenido_admin table.rossa-tbl.rossa-tbl a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton):not(.ui-state-default):not(.unpin):not(.unpermiso):hover {
  text-decoration: underline;
}

/* Repite la cadena de `:not()` a proposito: cada uno suma especificidad y sin ella gana la regla de arriba. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton),
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton),
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr th a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton) {
  color: var(--rossa-navy);
  font-weight: 600;
  text-decoration: none;
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton):hover,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr a:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton):hover {
  color: var(--rossa-teal);
  text-decoration: none;
}
#contenido_admin table.estandar tr.cab a.rossa-sorting {
  color: var(--rossa-navy);
  font-weight: 600;
  text-decoration: none;
}
#contenido_admin table.estandar tr.cab a.rossa-sorting:hover {
  color: var(--rossa-teal);
}

/* (a) .rossa-sorting: el par ▲▼ atenuado marca "se puede ordenar". */
#contenido_admin table.rossa-tbl.rossa-tbl .rossa-sorting::before,
#contenido_admin table.rossa-tbl.rossa-tbl .rossa-sorting::after { opacity: .25; }

#contenido_admin table.rossa-tbl.rossa-tbl .rossa-sorting--asc::after,
#contenido_admin table.rossa-tbl.rossa-tbl .rossa-sorting--desc::before { content: none; }
#contenido_admin table.rossa-tbl.rossa-tbl .rossa-sorting--asc::before,
#contenido_admin table.rossa-tbl.rossa-tbl .rossa-sorting--desc::after {
  opacity: 1;
  top: 50%;
  bottom: auto;
  transform: translateY(-50%);
}

/* DataTables dibuja su propio par ▲▼ en el <th> con otras opacidades (.125 y .8). */
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th.sorting::before,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th.sorting::after,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th.sorting_asc::after,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th.sorting_desc::before { opacity: .25; }
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th.sorting_asc::before,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th.sorting_desc::after { opacity: 1; }

/* DataTables deja `sorting_asc` junto a `sorting_disabled`: una columna no clicable no ensena flecha. */
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th.sorting_disabled::before,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th.sorting_disabled::after { content: none; }

/* inline-block, no inline: con etiqueta de dos lineas las flechas caen debajo del texto. */
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr a.rossa-sorting,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr th > .rossa-sorting,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab a.rossa-sorting,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab > td > .rossa-sorting {
  display: inline-block;
  vertical-align: middle;
  text-align: inherit;
  color: inherit;
}

/* (b) .order_link (lydia.css:5283): triangulos de borde, en navy sobre blanco. */
#contenido_admin table.rossa-tbl.rossa-tbl .order_link { padding-right: 14px; }
#contenido_admin table.rossa-tbl.rossa-tbl .order_link::before,
#contenido_admin table.rossa-tbl.rossa-tbl .order_link::after {
  border-left-width: 3.5px;
  border-right-width: 3.5px;
  right: 0;
}
#contenido_admin table.rossa-tbl.rossa-tbl .order_link::before {
  border-bottom: 7px solid var(--rossa-navy);
  bottom: calc(50% + 1px);
}
#contenido_admin table.rossa-tbl.rossa-tbl .order_link::after {
  border-top: 7px solid var(--rossa-navy);
  top: calc(50% + 1px);
}

/* Segunda linea de celda (el email bajo el nombre, notas) */
#contenido_admin table.rossa-tbl.rossa-tbl .gestclimail,
#contenido_admin table.rossa-tbl.rossa-tbl .rossa-users-muted,
#contenido_admin table.rossa-tbl.rossa-tbl .rossa-tbl__sub {
  color: var(--rossa-tbl-muted);
  font-size: var(--rossa-tbl-font);
}

/* Fuera los de estado (--on/--off): comunican activo/inactivo. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .rossa-ico:not(.rossa-ico--on):not(.rossa-ico--off):not(.rossa-ico--del) {
  color: var(--rossa-tbl-ico);
  font-size: var(--rossa-tbl-ico-size);
}

#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .rossa-ico--on,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .rossa-ico--off { font-size: var(--rossa-tbl-ico-size); }

/* La clase va tres veces para superar el (1,5,5) de `td .admin_boton i[class*="fa-"]`. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td i.rossa-ico--del.rossa-ico--del.rossa-ico--del {
  color: var(--rossa-red);
  font-size: var(--rossa-tbl-ico-size);
}

#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td .rossa-i--multimedia {
  width: var(--rossa-tbl-ico-size);
  height: var(--rossa-tbl-ico-size);
  background-color: var(--rossa-tbl-ico);
  vertical-align: -0.15em;
}

/* Sin esto los iconos sin `.rossa-ico` heredan el cian del <a> que los envuelve. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td i[class*="fa-"]:not(.rossa-ico):not(.rossa-trash):not(.fa-trash):not(.fa-trash-alt):not([class*="rossa-tag"]):not([class*="rossa-ico--"]) {
  color: var(--rossa-tbl-ico);
  font-size: var(--rossa-tbl-ico-size);
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td .admin_boton i[class*="fa-"],
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td .rossa-btn i[class*="fa-"],
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td button i[class*="fa-"] {
  color: inherit;
  font-size: inherit;
}

#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .rossa-ico--del,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .fa-trash,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .fa-trash-alt,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .rossa-trash {
  color: var(--rossa-red);
  background: none;
  background-color: transparent;
  border-radius: 0;
  padding: 0;
  width: auto;
  float: none;
  font-size: var(--rossa-tbl-ico-size);
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .rossa-trash--disabled {
  color: var(--rossa-tbl-ico);
  background: none;
  background-color: transparent;
  border-radius: 0;
  padding: 0;
  width: auto;
  font-size: var(--rossa-tbl-ico-size);
  opacity: .55;
}
/* `thead > tr > td` no es un descuido: hay tablas que ponen la cabecera con <td>, y `tbody > tr.cab` cubre las que no traen <thead>. */
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th .fa-trash,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th .fa-trash-alt,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > td .fa-trash,
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > td .fa-trash-alt,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab .fa-trash,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab .fa-trash-alt {
  color: var(--rossa-navy);
  background: none;
  background-color: transparent;
  border-radius: 0;
  padding: 0;
  font-size: var(--rossa-tbl-ico-size);
}

/* Eliminar va separado del resto de acciones para que no se pulse por error. */

#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:last-child:has(.rossa-trash, .rossa-ico--del, .fa-trash, .fa-trash-alt),
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab > td:last-child:has(.fa-trash, .fa-trash-alt),
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th:last-child:has(.fa-trash, .fa-trash-alt),
#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > td:last-child:has(.fa-trash, .fa-trash-alt) {
  padding-left: 22px;
  padding-right: 22px;
  width: 1%;
  white-space: nowrap;
}

/*----- La «X» roja de las lineas extra, a papelera: se reescribe SOLO dentro de una `rossa-tbl` -----*/
#contenido_admin table.rossa-tbl.rossa-tbl .del-extra-line {
  width: 16px;
  height: 16px;
  background: var(--rossa-red);
  -webkit-mask: url("https://cdn.rossa.app/icons/trash-2.svg") no-repeat center;
          mask: url("https://cdn.rossa.app/icons/trash-2.svg") no-repeat center;
  -webkit-mask-size: contain;
          mask-size: contain;
  display: inline-block;
  vertical-align: middle;
}
/* La «X» sobraba: el glifo lo pinta ahora la mascara. */
#contenido_admin table.rossa-tbl.rossa-tbl .del-extra-line::after { content: none; }

#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:has(.rossa-ico) .rossa-trash,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:has(.rossa-ico:not(.rossa-ico--del)) .rossa-ico--del,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:has(.rossa-ico:not(.rossa-ico--del)) .fa-trash,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:has(.rossa-ico:not(.rossa-ico--del)) .fa-trash-alt {
  margin-left: 24px;
}

/* Lo que separa los iconos es el salto de linea del PHP: se anula con font-size:0 y se fija el hueco. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:has(> a > .rossa-ico):has(> a:nth-of-type(2) > .rossa-ico) {
  font-size: 0;
  white-space: nowrap;
}
/* Solo el texto desnudo queda a 0: un texto suelto en esta celda hay que envolverlo o no se vera. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:has(> a > .rossa-ico):has(> a:nth-of-type(2) > .rossa-ico) > * {
  font-size: var(--rossa-tbl-font);
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:has(> a > .rossa-ico):has(> a:nth-of-type(2) > .rossa-ico) > a + a {
  margin-left: 6px;
}

#contenido_admin table.rossa-tbl.rossa-tbl > thead > tr > th.acciones_res,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.acciones_res {
  width: 1%;
  white-space: nowrap;
}
/* Mezcla glifo de FontAwesome y mascara: sus lineas base no coinciden (2,4px), se alinea por caja. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.acciones_res > a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  vertical-align: middle;
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.acciones_res > a > i {
  vertical-align: 0;
}

/*----- 65.4b Componentes dentro de la celda -----------------------------------*/

/* Caja de bloque con ancho propio: el text-align de la celda no la centra, el margen si. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > .rossa-card-tag {
  margin-left: auto;
  margin-right: auto;
}

/* `:has()` lo limita a la celda que de verdad lleva botones. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:has(> a.rossa-btn) {
  white-space: nowrap;
  padding: 0 6px;
}
/* `.admin_boton` toma la pastilla de la fila; fuera de la tabla no le entra. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > .rossa-btn,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.rossa-btn,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.admin_boton,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > input.admin_boton,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > button.admin_boton,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > form > input.admin_boton,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > form > button.admin_boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 54px;
  height: 21px;
  padding: 0 6px;
  margin: 0 3px 0 0;
  font-size: 11px;
  font-weight: 500;
  line-height: 1;
  border-radius: 4px;
  white-space: nowrap;
  vertical-align: middle;
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.rossa-btn:last-child { margin-right: 0; }

/* archivos_xls: "Generar Excel" + "Generar Excel (debug)" son texto largo, el margen de 3px de arriba los deja pegados. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > input.generateXLS.admin_boton {
  margin: 5px;
}

/* La celda es transparente por defecto, de ahi la clase repetida. */
#contenido_admin table.rossa-tbl.rossa-tbl td.rossa-envio.rossa-envio {
  font-weight: 600;
}
#contenido_admin table.rossa-tbl.rossa-tbl td.rossa-envio--ok.rossa-envio--ok {
  background-color: rgba(25, 172, 138, .12);
  color: var(--rossa-green-dark);
}
#contenido_admin table.rossa-tbl.rossa-tbl td.rossa-envio--error.rossa-envio--error {
  background-color: var(--rossa-salmon);
  color: var(--rossa-coral);
}
#contenido_admin table.rossa-tbl.rossa-tbl td.rossa-envio--pendiente.rossa-envio--pendiente {
  background-color: var(--rossa-surface);
  color: var(--rossa-muted);
}

/* La clase va tres veces para pasar del zebra: su `:nth-child(... of S)` suma la especificidad de S. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.encuesta-ok.encuesta-ok.encuesta-ok {
  background-color: rgba(25, 172, 138, .08);
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.encuesta-error.encuesta-error.encuesta-error {
  background-color: var(--rossa-salmon);
}

#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab a.admin_boton.plans-btn-inline i.rossa-ico--edit { color: var(--rossa-white); }
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.cab a.admin_boton.plans-btn-inline i.rossa-ico--del  { color: var(--rossa-red); }

/* !important obligado: la linea 3564 fuerza `.rossa-btn--default` a teal relleno con !important. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.admin_boton.rossa-btn--default,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.rossa-btn.rossa-btn--default {
  background: var(--rossa-white) !important;
  border: 1px solid var(--rossa-petrol) !important;
  color: var(--rossa-petrol) !important;
  /* la 3564 tambien fuerza el radio de 8px; en fila son 4px */
  border-radius: 4px !important;
  font-weight: 500;
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.admin_boton.rossa-btn--default:hover,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.rossa-btn.rossa-btn--default:hover {
  background: var(--rossa-surface) !important;
  border-color: var(--rossa-petrol) !important;
  color: var(--rossa-petrol) !important;
}

/* Si va detras de otra accion, se separa para no leerse como un par. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a + a.rossa-btn--default {
  margin-left: 16px;
}

#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.admin_boton:has(> i:only-child),
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.rossa-btn:has(> i:only-child) {
  min-width: 0;
  height: auto;
  padding: 0;
  margin: 0;
  /* !important obligado: lydia.css:1196 pinta `.boton_rojo` con !important. */
  background: none !important;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  color: var(--rossa-tbl-ico);
}

/* En la tabla el solido va en petrol; fuera `.admin_boton` conserva su teal. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.admin_boton,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > input.admin_boton,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > button.admin_boton,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > form > input.admin_boton,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > form > button.admin_boton {
  background: var(--rossa-petrol);
  border-color: var(--rossa-petrol);
  color: var(--rossa-white);
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.admin_boton:hover,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > input.admin_boton:hover,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > button.admin_boton:hover {
  background: var(--rossa-petrol-dark);
  border-color: var(--rossa-petrol-dark);
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.admin_boton.admin_boton--secondary,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > button.admin_boton.admin_boton--secondary,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.admin_boton.admin_boton--ghost {
  background: var(--rossa-white);
  border-color: var(--rossa-petrol);
  color: var(--rossa-petrol);
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.admin_boton.admin_boton--secondary:hover,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > button.admin_boton.admin_boton--secondary:hover,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.admin_boton.admin_boton--ghost:hover {
  background: var(--rossa-surface);
  border-color: var(--rossa-petrol);
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > button.admin_boton.admin_boton--danger,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.admin_boton.admin_boton--danger {
  background: var(--rossa-salmon);
  border-color: var(--rossa-coral);
  color: var(--rossa-coral);
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > button.admin_boton.admin_boton--danger:hover,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.admin_boton.admin_boton--danger:hover {
  background: #fbe0d8;
  border-color: var(--rossa-coral);
}

/* !important obligado: §23 declara estos modificadores con !important. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.rossa-btn--border {
  background: var(--rossa-petrol) !important;
  border: 1px solid var(--rossa-petrol) !important;
  color: var(--rossa-white) !important;
  border-radius: 4px !important;
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.rossa-btn--border:hover {
  background: var(--rossa-petrol-dark) !important;
  border-color: var(--rossa-petrol-dark) !important;
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.rossa-btn--negative {
  background: var(--rossa-white) !important;
  border: 1px solid var(--rossa-petrol) !important;
  color: var(--rossa-petrol) !important;
  border-radius: 4px !important;
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td > a.rossa-btn--negative:hover {
  background: var(--rossa-tint) !important;
  border-color: var(--rossa-petrol) !important;
  color: var(--rossa-petrol) !important;
}

#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .rossa-stays-tag {
  background: none;
  background-color: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  color: var(--rossa-petrol);
  font-size: var(--rossa-tbl-font);
  font-weight: 400;
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .rossa-box-habs {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}
/* Huéspedes registrados / esperados: verde cuando están todos, como en la tarjeta de reserva. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .rossa-tbl-huespedes {
  font-family: var(--rossa-font);
  font-size: 16px;
  font-weight: 700;
  line-height: normal;
  color: var(--rossa-petrol);
  white-space: nowrap;
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .rossa-tbl-huespedes--completos { color: var(--rossa-pag); }

#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .nomfactura_res > a.rossa-btn {
  background: none !important;
  background-color: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  padding: 0 !important;
  min-width: 0;
  height: auto;
  font-size: 16px !important;
  color: var(--rossa-green) !important;          /* facturado */
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) .nomfactura_res > a.rossa-btn[style*="677074"] {
  color: var(--rossa-tbl-ico) !important;        /* sin facturar */
}

#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) img[src*="cdn.rossa.app/icons/"] {
  width: 28px;
  height: 28px;
}

/* Las marcas de origen llegan a 42px por atributo y de cuatro sitios distintos. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.origen_res img {
  width: 32px;
  height: 32px;
  object-fit: contain;
}

#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td .rossa-reubicacion-img {
  font-size: 25px;
  line-height: 1;
  color: var(--rossa-red);
}

/* El control nativo hereda del navegador si no se fija la medida. */
#contenido_admin table.rossa-tbl.rossa-tbl input[type="checkbox"] {
  width: 18px;
  height: 18px;
  border-radius: 4px;
  accent-color: var(--rossa-petrol);
  vertical-align: middle;
  cursor: pointer;
}

/*----- 65.5 Variantes ---------------------------------------------------------*/
#contenido_admin table.rossa-tbl.rossa-tbl--plain > tbody > tr:nth-child(even of :not(.cab):has(> td, > th)) { background-color: var(--rossa-white); }

#contenido_admin .rossa-tbl-scroll { overflow-x: auto; }

/*----- 65.6 Movil (<=700px, el breakpoint del chrome legacy) -------------------*/
@media screen and (max-width: 700px) {
  #contenido_admin table.rossa-tbl > tbody > tr:not(.cab) > td {
    height: auto;
    padding: 10px var(--rossa-tbl-pad-x);
  }
}


/* La casilla queda oculta pero operativa: el icono lo ensena su label. */
#contenido_admin .rossa-usoact__box {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}
#contenido_admin .rossa-usoact { cursor: pointer; }
#contenido_admin .rossa-usoact .rossa-ico--on  { display: none; }
#contenido_admin .rossa-usoact .rossa-ico--off { display: inline-block; }
#contenido_admin .rossa-usoact__box:checked + .rossa-usoact .rossa-ico--on  { display: inline-block; }
#contenido_admin .rossa-usoact__box:checked + .rossa-usoact .rossa-ico--off { display: none; }

/* lydia.css:6875 aun pinta la pastilla cian de "Ver detalles". */
#contenido_admin .btn-ver-detalles,
#contenido_admin .btn-ver-detalles:hover {
  background: none;
  padding: 0;
}

/*----- 66. SCREEN: Importaciones de reservas (module=gest_imports_bookings) -----*/

/* Tarjetas de dato: borde de token en vez del gris de fondo. */
#contenido_admin .import-detail-container h2,
#contenido_admin .reservas-detail h3,
#contenido_admin .import-summary h3 { color: var(--rossa-ink); }
#contenido_admin .import-detail-container .info-card {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
}
#contenido_admin .import-detail-container .info-card h3 { color: var(--rossa-muted); font-weight: 600; }
#contenido_admin .import-detail-container .info-card > div { color: var(--rossa-ink); }

/* Pastilla de estado: mismas parejas que el registro de envios de partes. */
#contenido_admin .rossa-imp-st {
  display: inline-block;
  padding: 4px 10px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius-pill);
  font: 600 12px/1.3 var(--rossa-font);
}
#contenido_admin .rossa-imp-st--ok   { background: rgba(25, 172, 138, .12); color: var(--rossa-green-dark); }
#contenido_admin .rossa-imp-st--err  { background: var(--rossa-salmon); color: var(--rossa-coral); }
#contenido_admin .rossa-imp-st--warn { background: var(--rossa-white); border-color: var(--rossa-coral); color: var(--rossa-coral); }
#contenido_admin .rossa-imp-st--info { background: var(--rossa-white); border-color: var(--rossa-cyan); color: var(--rossa-cyan); }
#contenido_admin .rossa-imp-st--off  { background: var(--rossa-surface); color: var(--rossa-muted); }

/* Resumen: cifras grandes con los mismos pares de estado. */
#contenido_admin .import-summary .stat-card { border: 1px solid var(--rossa-border); border-radius: var(--rossa-radius); }
#contenido_admin .rossa-imp-num { font-size: 32px; font-weight: 700; }
#contenido_admin .rossa-imp-num--ok   { color: var(--rossa-green-dark); }
#contenido_admin .rossa-imp-num--err  { color: var(--rossa-coral); }
#contenido_admin .rossa-imp-num--warn { color: var(--rossa-coral); }
#contenido_admin .rossa-imp-num--info { color: var(--rossa-cyan); }
#contenido_admin .rossa-imp-cap { color: var(--rossa-muted); font-size: 13px; }

/* Pestanas Exitosas/Con Error: texto, como las del resto de la app. */
#contenido_admin .reservas-detail .tab-btn {
  background: none;
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  padding: 6px 2px;
  margin-right: 18px;
  color: var(--rossa-muted);
  font: 600 13px var(--rossa-font);
  cursor: pointer;
  opacity: 1;
}
#contenido_admin .reservas-detail .tab-btn:hover,
#contenido_admin .reservas-detail .tab-btn.active { color: var(--rossa-teal); opacity: 1; }
#contenido_admin .reservas-detail .tab-btn.active { border-bottom-color: var(--rossa-teal); }
#contenido_admin .reservas-detail .tab-content > p { color: var(--rossa-muted); }

/* El <style> local de la pantalla pinta .tabla_admin con sombra y rejilla. */
#contenido_admin table.tabla_admin.rossa-tbl { box-shadow: none; }
#contenido_admin table.tabla_admin.rossa-tbl th,
#contenido_admin table.tabla_admin.rossa-tbl td { border: 0; }

/* El envoltorio es flex: el centrado de la celda no le llega a sus hijos. */
#contenido_admin .import-list-container .action-buttons { justify-content: center; }
#contenido_admin .import-list-container .action-buttons a {
  background: none;
  border: 0;
  padding: 0;
}
#contenido_admin .import-list-container .action-buttons .fa-exclamation-triangle { color: var(--rossa-coral); }

/* Rollback del detalle: destructivo solido y variante de contorno. */
#contenido_admin .rollback-actions a.admin_ko {
  background: var(--rossa-salmon);
  border: 1px solid var(--rossa-salmon);
  color: var(--rossa-coral);
}
#contenido_admin .rollback-actions a.admin_warning {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-coral);
  color: var(--rossa-coral);
}

/*===== 74. FECHAS: EL NODO QUE GUARDA EL ISO NO SE VE =====*/
/* !important necesario: varias pantallas traen su propio `style="display:..."` en el input. */
input[data-rossa-oculto="1"] { display: none !important; }

/*===== 75. PAGINADOR ÚNICO (.rossa-pager) — un solo aspecto para los tres motores =====*/
/* El ámbito incluye `#rossa-actionbar` porque el paginador acaba movido a la barra del pie, fuera del contenido. */

/*----- 75.1 Estructura y piezas --------------------------------------------- */
:is(#contenido_admin, #rossa-actionbar) .rossa-pager,
:is(#contenido_admin, #rossa-actionbar) .comm-pager,
:is(#contenido_admin, #rossa-actionbar) .rossa-pag,
:is(#contenido_admin, #rossa-actionbar) .paginacion,
:is(#contenido_admin, #rossa-actionbar) .rrx-pagination,
:is(#contenido_admin, #rossa-actionbar) .fact-pagination {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
:is(#contenido_admin, #rossa-actionbar) .rossa-pager__paginas,
:is(#contenido_admin, #rossa-actionbar) .comm-pager__paginas,
:is(#contenido_admin, #rossa-actionbar) .rrx-pagination__pages,
:is(#contenido_admin, #rossa-actionbar) .fact-pagination-buttons {
  display: flex;
  align-items: center;
  gap: 4px;
}
:is(#contenido_admin, #rossa-actionbar) .rossa-pager__btn,
:is(#contenido_admin, #rossa-actionbar) .comm-pager__btn,
:is(#contenido_admin, #rossa-actionbar) .rossa-pag__btn,
:is(#contenido_admin, #rossa-actionbar) .paginacion a,
:is(#contenido_admin, #rossa-actionbar) .paginacion .pactiva,
:is(#contenido_admin, #rossa-actionbar) .rossa-clientes-pag__links a,
:is(#contenido_admin, #rossa-actionbar) .rrx-pagination__btn,
:is(#contenido_admin, #rossa-actionbar) .rrx-pagination__current,
:is(#contenido_admin, #rossa-actionbar) .fact-pagination-buttons a,
:is(#contenido_admin, #rossa-actionbar) .fact-pagination-buttons button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-width: 24px;
  height: 24px;
  margin: 0;
  padding: 0 6px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 500;
  color: var(--rossa-pager-ink);
  text-decoration: none;
  cursor: pointer;
}
:is(#contenido_admin, #rossa-actionbar) .rossa-pager__btn:hover:not(.es-actual):not([aria-disabled]),
:is(#contenido_admin, #rossa-actionbar) .comm-pager__btn:hover:not(:disabled):not(.es-actual),
:is(#contenido_admin, #rossa-actionbar) .rossa-pag__btn:hover,
:is(#contenido_admin, #rossa-actionbar) .paginacion a:hover,
:is(#contenido_admin, #rossa-actionbar) .rossa-clientes-pag__links a:hover,
:is(#contenido_admin, #rossa-actionbar) .rrx-pagination__btn:hover,
:is(#contenido_admin, #rossa-actionbar) .fact-pagination-buttons a:hover {
  background: var(--rossa-pager-tint);
  color: var(--rossa-stroke);
  text-decoration: none;
}
:is(#contenido_admin, #rossa-actionbar) .rossa-pager__btn.es-actual,
:is(#contenido_admin, #rossa-actionbar) .comm-pager__btn.es-actual,
:is(#contenido_admin, #rossa-actionbar) .rossa-pag__btn--active,
:is(#contenido_admin, #rossa-actionbar) .paginacion .pactiva,
:is(#contenido_admin, #rossa-actionbar) .rrx-pagination__current,
:is(#contenido_admin, #rossa-actionbar) .fact-pagination-buttons .fact-pagination-current {
  background: var(--rossa-pager-tint);
  color: var(--rossa-pager-ink);
  font-weight: 600;
  cursor: default;
}
:is(#contenido_admin, #rossa-actionbar) .rossa-pager__btn[aria-disabled],
:is(#contenido_admin, #rossa-actionbar) .rossa-pager__btn:disabled,
:is(#contenido_admin, #rossa-actionbar) .comm-pager__btn:disabled,
:is(#contenido_admin, #rossa-actionbar) .rrx-pagination__btn:disabled,
:is(#contenido_admin, #rossa-actionbar) .fact-pagination-buttons button:disabled {
  color: var(--rossa-pager-off);
  cursor: default;
}
:is(#contenido_admin, #rossa-actionbar) .rossa-pager__puntos,
:is(#contenido_admin, #rossa-actionbar) .comm-pager__btn--salto,
:is(#contenido_admin, #rossa-actionbar) .rossa-pag__points,
:is(#contenido_admin, #rossa-actionbar) .rrx-pagination__ellipsis {
  color: var(--rossa-pager-off);
  font-weight: 400;
}
/* El desplegable de tamaño. */
:is(#contenido_admin, #rossa-actionbar) .rossa-pager__tam,
:is(#contenido_admin, #rossa-actionbar) .comm-pager__tam {
  box-sizing: border-box;
  width: auto;
  min-width: 62px;
  height: 28px;
  margin: 0;
  padding: 0 6px;
  border: 1px solid var(--rossa-strip);
  border-radius: 5px;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 500;
  color: var(--rossa-pager-ink);
}
:is(#contenido_admin, #rossa-actionbar) .rossa-pager__resumen,
:is(#contenido_admin, #rossa-actionbar) .rossa-clientes-pag__summary,
:is(#contenido_admin, #rossa-actionbar) .rrx-pagination__info,
:is(#contenido_admin, #rossa-actionbar) .fact-pagination-info,
:is(#contenido_admin, #rossa-actionbar) .paginacion > span:first-child {
  margin: 0;
  font-size: 12px;
  font-weight: 400;
  color: var(--rossa-muted);
}

/*----- 75.2 Variante barra (dentro del pie) — solo colocación; la geometría la pone §69.3 -----*/
:is(#contenido_admin, #rossa-actionbar) .rossa-pager--barra {
  margin-left: auto;
  flex: 0 0 auto;
}

/*----- 75.3 Variante en el flujo -------------------------------------------- */
:is(#contenido_admin, #rossa-actionbar) .rossa-pager--linea {
  justify-content: flex-end;
  margin: 12px 0;
}

/*----- 75.4 Reciclado: matar el rojo de Ver reservas — el border-bottom de gestion_reservas.css hay que anularlo a mano -----*/
:is(#contenido_admin, #rossa-actionbar) .rossa-pag__btn,
:is(#contenido_admin, #rossa-actionbar) .rossa-pag__btn--active,
:is(#contenido_admin, #rossa-actionbar) .rossa-pag__points {
  border-bottom: 0;
  font-size: 13px;
  margin: 0;
}

/*----- 75.5 Reciclado: disponibilidad y precios — sus botones llevan `.btn` de Bootstrap encima -----*/
:is(#contenido_admin, #rossa-actionbar) .ge-pag-btn.btn,
:is(#contenido_admin, #rossa-actionbar) .ge-pag-btn.btn-primary,
:is(#contenido_admin, #rossa-actionbar) .ge-pag-btn.btn-secondary {
  background: transparent;
  border: 0;
  box-shadow: none;
  border-radius: var(--rossa-radius-pill);
  padding: 0 10px;
  height: 24px;
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 500;
  color: var(--rossa-pager-ink);
  text-decoration: none;
}
:is(#contenido_admin, #rossa-actionbar) .ge-pag-btn.btn:hover {
  background: var(--rossa-pager-tint);
  color: var(--rossa-stroke);
}
:is(#contenido_admin, #rossa-actionbar) .ge-pag-btn--off.btn {
  color: var(--rossa-pager-off);
  cursor: default;
}
:is(#contenido_admin, #rossa-actionbar) .ge-pag-current {
  font-family: var(--rossa-font);
  font-size: 12px;
  color: var(--rossa-muted);
}
:is(#contenido_admin, #rossa-actionbar) .ge-pag-nav {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-wrap: wrap;
}

/*----- 75.6 Reciclado: DataTables — los !important son obligados: el CSS del CDN trae `color: inherit !important` -----*/
:is(#contenido_admin, #rossa-actionbar) .dataTables_paginate .paginate_button {
  box-sizing: border-box;
  min-width: 24px;
  height: 24px;
  padding: 0 6px;
  border: 0 !important;
  border-radius: 50% !important;
  background: transparent !important;
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 500;
  color: var(--rossa-pager-ink) !important;
}
:is(#contenido_admin, #rossa-actionbar) .dataTables_paginate .paginate_button.current {
  background: var(--rossa-pager-tint) !important;
  color: var(--rossa-pager-ink) !important;
  font-weight: 600;
}
:is(#contenido_admin, #rossa-actionbar) .dataTables_paginate .paginate_button.disabled {
  color: var(--rossa-pager-off) !important;
  cursor: default;
}
:is(#contenido_admin, #rossa-actionbar) .dataTables_paginate .paginate_button:hover:not(.current):not(.disabled) {
  background: var(--rossa-pager-tint) !important;
  color: var(--rossa-stroke) !important;
}
:is(#contenido_admin, #rossa-actionbar) .dataTables_length select {
  box-sizing: border-box;
  min-width: 62px;
  height: 28px;
  padding: 0 6px;
  border: 1px solid var(--rossa-strip);
  border-radius: 5px;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 12px;
  color: var(--rossa-pager-ink);
}

/*----- 75.7 Ver reservas: «Reservas por página» -----*/
:is(#contenido_admin, #rossa-actionbar) .filter-box-perpage select.rossa-pager__tam {
  height: 28px;
  text-transform: none;
  letter-spacing: 0;
  font-size: 12px;
  font-weight: 500;
  color: var(--rossa-pager-ink);
}
:is(#contenido_admin, #rossa-actionbar) .filter-box-perpage {
  margin: 0;
  gap: 0;
}

/* gestor_estancias: sin paginación en el actionbar, "Guardar cambios" centrado (id #avail, único de esta página). */
#rossa-actionbar:has(#avail) { justify-content: center; }
/* #rossa-actionbar:has(#avail) .rossa-actionbar__pager { display: none; } */
/* Con filtro de establecimiento sí pagina: el paginador va a la derecha fuera del flujo para que «Guardar cambios» siga centrado. */
#rossa-actionbar:has(#avail) .rossa-actionbar__pager {
  position: absolute;
  top: 50%;
  right: 24px;
  margin: 0;
  transform: translateY(-50%);
}
@media (max-width: 700px) {
  #rossa-actionbar:has(#avail) { flex-wrap: wrap; row-gap: 8px; }
  #rossa-actionbar:has(#avail) .rossa-actionbar__pager {
    position: static;
    order: -1;
    width: 100%;
    justify-content: center;
    transform: none;
  }
}
/* El icono es solo para móvil (icon-only): en escritorio se queda el texto, sin icono al lado. El ancho no cambia, solo el contenido. */
#rossa-actionbar #avail.rossa-actionbar-btn > i { display: none; }
@media (max-width: 700px) {
  #rossa-actionbar #avail.rossa-actionbar-btn .rossa-tb-label { display: none; }
  /* !important: gana a #rossa-actionbar i[class*="fa-"] (§79.16), pensada solo para facturación pero sin scope. */
  #rossa-actionbar #avail.rossa-actionbar-btn > i { display: inline-block !important; }
}

/* Patrón icon-only en móvil, reusable en cualquier botón del actionbar (surveys_filters, llaves_api...), ancho sin cambios. */
:is(#rossa-actionbar, #relocation-control-panel, .rossa-profile-config__actions) .rossa-actionbar-btn--icon-mobile > i { display: none; }
@media (max-width: 700px) {
  :is(#rossa-actionbar, #relocation-control-panel, .rossa-profile-config__actions) .rossa-actionbar-btn--icon-mobile .rossa-tb-label { display: none; }
  :is(#rossa-actionbar, #relocation-control-panel, .rossa-profile-config__actions) .rossa-actionbar-btn--icon-mobile > i { display: inline-block !important; }
}

@media (max-width: 1024px) {
  #rossa-actionbar:has(#btn_vc_fusionar) .rossa-actionbar-btn--icon-mobile .rossa-tb-label { display: none; }
  #rossa-actionbar:has(#btn_vc_fusionar) .rossa-actionbar-btn--icon-mobile > i { display: inline-block !important; }
  #rossa-actionbar:has(#btn_vc_fusionar) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
}

/* module=help_page: Volver + Crear boton de ayuda, centrados; icon-only solo en movil, tablet vuelve a texto. */
#rossa-actionbar:has(#btn_help_page_volver) {
  justify-content: center;
}
/* Movil: se reparten el ancho disponible entre los dos, respetando el gap y el padding del actionbar. */
@media (max-width: 700px) {
  #rossa-actionbar:has(#btn_help_page_volver) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
}
/* Tablet: sin override de ancho, hereda el min-width:180px de la base (el mismo que en escritorio). */
@media (max-width: 1024px), (hover: none) and (pointer: coarse) {
  body:has(#rossa-actionbar:has(#btn_help_page_volver)) #contenido_admin {
    margin-bottom: 100px;
  }
}

/* module=help_videos: Volver (+ Anadir video si hay id_paso), centrados; mismo tratamiento que help_page. */
#rossa-actionbar:has(#btn_help_videos_volver) {
  justify-content: center;
}
@media (max-width: 700px) {
  #rossa-actionbar:has(#btn_help_videos_volver):has(#btn_help_videos_add) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
}
@media (max-width: 1024px), (hover: none) and (pointer: coarse) {
  body:has(#rossa-actionbar:has(#btn_help_videos_volver)) #contenido_admin {
    margin-bottom: 100px;
  }
}

/* module=preguntas_frecuentes: Volver (+ Anadir respuesta si hay id_paso), centrados; mismo tratamiento que help_page/help_videos. */
#rossa-actionbar:has(#btn_preguntas_volver) {
  justify-content: center;
}
@media (max-width: 700px) {
  #rossa-actionbar:has(#btn_preguntas_volver):has(#btn_preguntas_add) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
}
@media (max-width: 1024px), (hover: none) and (pointer: coarse) {
  body:has(#rossa-actionbar:has(#btn_preguntas_volver)) #contenido_admin {
    margin-bottom: 100px;
  }
}

/* module=mp (dashboard facturación): Folios/Facturas/Incidencias, icon-only en móvil, en una sola fila. */
#rossa-actionbar .fd-dash__actions .fd-btn > i { display: none; }
@media (max-width: 700px) {
  #rossa-actionbar .fd-dash__actions .fd-btn .rossa-tb-label { display: none; }
  /* !important: gana a las reglas §79.16/79.15 que ocultan iconos de facturación sin excepción para móvil. */
  #rossa-actionbar .fd-dash__actions .fd-btn > i { display: inline-block !important; }
  /* flex-wrap de §79.12 tiene la misma especificidad y sale más abajo en el archivo: hace falta !important. */
  #contenido_admin #rossa-actionbar .fd-dash__actions { flex-wrap: nowrap !important; gap: 8px; }
  /* min-width:180px (§79.12) x3 no cabe en una fila móvil: aquí sí gana por especificidad (clase extra), sin !important. */
  #contenido_admin #rossa-actionbar .fd-dash__actions .fd-btn { flex: 1 1 0; min-width: 0; padding: 0; }
}

/* module=mp fcts02:factVisor: selección masiva ("Descargar ZIP" / "Cancelar"), icon-only en móvil sin desbordar la barra. */
@media (max-width: 700px) {
  #contenido_admin #rossa-actionbar .fact-bulk-buttons .rossa-tb-label { display: none; }
  /* !important: gana a #rossa-actionbar i[class*="fa-"] (§79.16), pensada solo para facturación pero sin scope. */
  #contenido_admin #rossa-actionbar .fact-bulk-buttons .rossa-button > i { display: inline-block !important; }
  #contenido_admin #rossa-actionbar .fact-bulk-buttons { flex-wrap: nowrap; width: 100%; gap: 8px; }
  /* !important: misma especificidad que §79.12 (min-width:180px) pero esa regla sale más abajo en el archivo. */
  #contenido_admin #rossa-actionbar .fact-bulk-buttons .rossa-button {
    flex: 1 1 0 !important;
    min-width: 0 !important;
    padding: 0 !important;
  }
}

/* module=mp fcts02:factProfiles pie: Nuevo perfil / Asociación de perfiles / Ver eliminados / Reparar perfiles, icon-only en móvil en una sola fila. */
@media (max-width: 700px) {
  #contenido_admin #rossa-actionbar .rossa-profiles-toolbar {
    flex-direction: row;
    flex-wrap: nowrap !important;
    gap: 8px;
  }
  #contenido_admin #rossa-actionbar .rossa-profiles-toolbar > a.admin_boton,
  #contenido_admin #rossa-actionbar .rossa-profiles-toolbar > button.admin_boton {
    flex: 1 1 0;
    min-width: 0;
    padding: 0;
  }
  #contenido_admin #rossa-actionbar .rossa-profiles-toolbar__form {
    flex: 1 1 0;
    min-width: 0;
  }
  #contenido_admin #rossa-actionbar .rossa-profiles-toolbar__form .admin_boton {
    flex: 1 1 auto;
    min-width: 0;
    padding: 0;
  }
}

/*----- 75.8 El hueco de la barra del pie — sin position: la geometría fija la pone §69.3 -----*/
#rossa-actionbar .rossa-actionbar__pager {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-left: auto;
  flex: 0 0 auto;
}
/* Dentro de la barra el paginador ya no necesita sus márgenes de «en el flujo». */
#rossa-actionbar .rossa-pager--linea,
#rossa-actionbar .rossa-pag,
#rossa-actionbar .paginacion,
#rossa-actionbar .rrx-pagination,
#rossa-actionbar .fact-pagination,
#rossa-actionbar .dataTables_paginate,
#rossa-actionbar .dataTables_length {
  margin: 0;
  padding: 0;
}
/* DataTables envuelve el select en un <label> con texto; en la barra solo cabe el select (el select fija su propio font-size). */
#rossa-actionbar .dataTables_length label { font-size: 0; line-height: 0; }
@media (max-width: 700px) {
  #rossa-actionbar .rossa-actionbar__pager {
    margin-left: 0;
    flex-wrap: wrap;
    gap: 8px;
  }
  #rossa-actionbar:has(#rossa_pager_pedidos) {
    justify-content: center;
  }
  #rossa-actionbar:has(#rossa_pager_pedidos) .rossa-actionbar__pager {
    justify-content: center;
  }
  /* .rossa-actionbar__pager es flex:0 0 auto (ver base): sin ancho propio, margin-left:auto no tiene hueco que empujar.
     Reacciona a [data-rossa-fam="filter-box-perpage"] en vez de a #rossa_pager_pedidos: ese pager solo existe con >1 página. */
  #rossa-actionbar .rossa-actionbar__pager:has([data-rossa-fam="filter-box-perpage"]) {
    flex: 1 1 auto;
    justify-content: flex-end !important;
  }
}
@media (max-width: 1024px) {
  #rossa-actionbar:has(#rossa_pager_clientes) .rossa-actionbar__pager {
    margin-left: auto;
    flex-wrap: wrap;
    gap: 8px;
  }

  #rossa-actionbar .rossa-pager__paginas > .rossa-pager__btn:first-child,
  #rossa-actionbar .rossa-pager__paginas > .rossa-pager__btn:last-child {
    display: none;
  }
  #rossa-actionbar .rossa-pager__paginas .rossa-pager__puntos { display: none; }
  /* Solo quedan visibles ‹/›, la página inicial, la actual y la última (1er número = 3er hijo;
     último número = 3º desde el final, ya que ‹ ›/« » siguen contando aunque estén ocultos). */
  #rossa-actionbar .rossa-pager__paginas .rossa-pager__btn:not(.rossa-pager__btn--salto):not(.es-actual):not(:nth-child(3)):not(:nth-last-child(3)) {
    display: none;
  }
}

/*----- 75.8b Remates de la migración ----------------------------------------- */
body:has(#rossa-actionbar) #contenido_admin .rossa-pager {
  opacity: 0;
  pointer-events: none;
}
#rossa-actionbar .rossa-pager {
  opacity: 1;
  pointer-events: auto;
}
/* En paginas servidas por admin/mp.php (factVisor, folioVisor...) #rossa-actionbar queda anidado
   DENTRO de #contenido_admin (a diferencia del resto del admin, donde es hermano): la regla de
   arriba tiene 2 ids (body + #contenido_admin, contando el de #rossa-actionbar dentro del :has())
   y le gana a la de una sola id de justo encima. Se iguala la especificidad (misma cuenta de
   ids/clases/elementos) y, al ir despues en el archivo, esta gana el empate. */
body:has(#rossa-actionbar) #rossa-actionbar .rossa-pager {
  opacity: 1;
  pointer-events: auto;
}
/* El alias `.rossa-pag` arrastra `justify-content: center` de admin/css/gestion_reservas.css:239. */
:is(#contenido_admin, #rossa-actionbar) .rossa-pag.rossa-pager {
  justify-content: flex-end;
}
/* Los puntos suspensivos de DataTables NO llevan `.paginate_button`. */
:is(#contenido_admin, #rossa-actionbar) .dataTables_paginate .ellipsis {
  padding: 0 4px;
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-pager-off);
}
/* El envoltorio `.fv-pagination` vacío seguía reservando su margen. */
#contenido_admin .fv-pagination:empty,
#contenido_admin .fact-pagination:empty {
  margin: 0;
  padding: 0;
}

/*----- 75.9 Móvil -----*/
@media (max-width: 700px) {
  #contenido_admin .rossa-pager--barra { margin-left: 0; }
  #contenido_admin .rossa-pager,
  #contenido_admin .rossa-pager__paginas { justify-content: center; }
  #rossa-actionbar .rossa-pager {
    margin-left: auto;
  }
  #rossa-actionbar .rossa-pager,
  #rossa-actionbar .rossa-pager__paginas {
    justify-content: flex-end;
  }
}

/*===== 76. PASTILLAS DE CÓDIGO (PIN) — `.unpin` / `.unpermiso` =====*/

/*----- 76.1 Color (global, cualquier pantalla) ------------------------------*/
#contenido_admin .unpin,
#contenido_admin .unpermiso {
  color: var(--rossa-white);
  border-color: transparent;
  font-variant-numeric: tabular-nums;
}
#contenido_admin .unpermiso { margin: 0 4px 1px 0; }
#contenido_admin .unpin.pinrojo,
#contenido_admin .unpermiso.pinrojo        { background-color: var(--rossa-red); }
#contenido_admin .unpin.pingris,
#contenido_admin .unpermiso.pingris        { background-color: var(--rossa-muted); }
#contenido_admin .unpin.pinverde,
#contenido_admin .unpermiso.pinverde       { background-color: var(--rossa-green-dark); }
/* El coral pelado va ANTES a proposito: sin `color-mix` manda el `color: var(--rossa-ink)` de la regla siguiente. */
#contenido_admin .unpin.pinnaranja,
#contenido_admin .unpermiso.pinnaranja {
  background-color: var(--rossa-coral);
  background-color: color-mix(in srgb, var(--rossa-coral) 70%, var(--rossa-ink));
  color: var(--rossa-ink);
}
@supports (background-color: color-mix(in srgb, red 70%, blue)) {
  #contenido_admin .unpin.pinnaranja,
  #contenido_admin .unpermiso.pinnaranja { color: var(--rossa-white); }
}
#contenido_admin .unpin.pinazul,
#contenido_admin .unpermiso.pinazul        { background-color: var(--rossa-cyan); }
#contenido_admin .unpin.pindesconocido,
#contenido_admin .unpermiso.pindesconocido { background-color: var(--rossa-db-400); }
#contenido_admin .unpin.pinnegro,
#contenido_admin .unpermiso.pinnegro       { background-color: var(--rossa-ink); }
/* La inversa: fondo blanco con borde y texto verdes (código ya fuera de uso). */
#contenido_admin .unpin.pinverde_out,
#contenido_admin .unpermiso.pinverde_out {
  background-color: var(--rossa-white);
  border-color: var(--rossa-green-dark);
  color: var(--rossa-green-dark);
}

/*----- 76.2 Rompe-especificidad contra §65.4: copia su cadena de `:not()`; si allí cambia, aquí también -----*/
#contenido_admin table.rossa-tbl.rossa-tbl a.unpin:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton),
#contenido_admin table.rossa-tbl.rossa-tbl a.unpermiso:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton) {
  color: var(--rossa-white);
  text-decoration: none;
}
/* El naranja: tinta si el navegador no oscurecio el fondo, blanco si si (§76.1). */
#contenido_admin table.rossa-tbl.rossa-tbl a.unpin.pinnaranja:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton),
#contenido_admin table.rossa-tbl.rossa-tbl a.unpermiso.pinnaranja:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton) {
  color: var(--rossa-ink);
}
@supports (background-color: color-mix(in srgb, red 70%, blue)) {
  #contenido_admin table.rossa-tbl.rossa-tbl a.unpin.pinnaranja:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton),
  #contenido_admin table.rossa-tbl.rossa-tbl a.unpermiso.pinnaranja:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton) {
    color: var(--rossa-white);
  }
}
#contenido_admin table.rossa-tbl.rossa-tbl a.unpin.pinverde_out:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton),
#contenido_admin table.rossa-tbl.rossa-tbl a.unpermiso.pinverde_out:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton) {
  color: var(--rossa-green-dark);
}
/* El subrayado de :hover de §65.4 tampoco pinta nada en una pastilla. */
#contenido_admin table.rossa-tbl.rossa-tbl a.unpin:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton):hover,
#contenido_admin table.rossa-tbl.rossa-tbl a.unpermiso:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton):hover {
  text-decoration: none;
}

/*----- 76.3 Caja, SOLO dentro de rossa-tbl ---------------------------------*/
#contenido_admin table.rossa-tbl.rossa-tbl .unpin,
#contenido_admin table.rossa-tbl.rossa-tbl .unpermiso {
  box-sizing: border-box;
  width: auto;
  min-width: 62px;
  height: auto;
  padding: 4px 10px;
  border-width: 1px;
  border-radius: var(--rossa-radius-pill);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: .04em;
  vertical-align: middle;
}
#contenido_admin table.rossa-tbl.rossa-tbl .unpermiso { min-width: 102px; }
/* La inversa lleva 2px de borde: se le descuentan del relleno para que mida lo mismo que sus hermanas. */
#contenido_admin table.rossa-tbl.rossa-tbl .unpin.pinverde_out,
#contenido_admin table.rossa-tbl.rossa-tbl .unpermiso.pinverde_out {
  border-width: 2px;
  padding: 3px 9px;
}
/* El `padding-top` de pagina_llaves.css (<=610px) lleva !important: hay que declarar el relleno entero. */
@media (max-width: 610px) {
  #contenido_admin table.rossa-tbl.rossa-tbl .unpin,
  #contenido_admin table.rossa-tbl.rossa-tbl .unpermiso {
    min-width: 80px;
    padding: 5px 10px;
    font-size: 14px;
  }
  #contenido_admin table.rossa-tbl.rossa-tbl .unpermiso { min-width: 125px; }
  #contenido_admin table.rossa-tbl.rossa-tbl .unpin.pinverde_out,
  #contenido_admin table.rossa-tbl.rossa-tbl .unpermiso.pinverde_out { padding: 4px 9px; }
}

/*==============================================================================
  77. MODULO FACTURACION: los dos listados con el lenguaje del PMS
==============================================================================*/

/*----- 77.1 Contenedor sin auto-centrado ni rail de color -------------------- */
#contenido_admin .fv-page,
#contenido_admin .rossa-fact-visor .fact-bills-container.fact-bills-container {
  max-width: none;
  margin: 0;
  padding: 0 0 24px;
}
#contenido_admin .fv-list--folios,
#contenido_admin .fact-bills-container--bills.fact-bills-container--bills {
  border-left: 0;
  padding-left: 0;
  margin-left: 0;
}

/*----- 77.2 Un solo título ---------------------------------------------------
  Los !important repiten el selector de factBillsList.css:38, que esconde el h1
  con ocho.                                                                   */
#contenido_admin:has(> .rossa-fact-visor) > h1,
#contenido_admin:has(> .rossa-fact-bill-visor) > h1 {
  display: block !important;
  position: static !important;
  height: auto !important;
  overflow: visible !important;
  clip: auto !important;
  border: 0 !important;
  margin: 0 0 6px !important;
  padding: 0 !important;
}
#contenido_admin .fact-doc-identity .fact-doc-identity__icon,
#contenido_admin .fact-doc-identity .fact-doc-identity__pill { display: none; }
#contenido_admin .fact-doc-identity {
  display: block;
  gap: 0;
  margin: 0 0 14px;
  padding: 0;
  background: none;
  border: 0;
}
#contenido_admin .fact-doc-identity .fact-doc-identity__title {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 16px;
  font-weight: 500;
  color: var(--rossa-petrol);
}
#contenido_admin .fact-doc-identity .fact-doc-identity__hint {
  margin: 2px 0 0;
  font-size: 13px;
  font-weight: 400;
  color: var(--rossa-muted);
}
/* En el popup el h1 lo esconde §37, así que ahí este h2 ES el título. */
#contenido_admin.isiframe .fact-doc-identity .fact-doc-identity__title {
  font-size: 23px;
  font-weight: 600;
  color: var(--rossa-navy);
}

/*----- 77.3 Filtros de estado: pestañas ------------------------------------- */
#contenido_admin .fv-filters {
  gap: 18px;
  margin: 0 0 14px;
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin .fv-filters .fv-filter {
  padding: 8px 0;
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  background: none;
  font-size: 13px;
  font-weight: 600;
  color: var(--rossa-muted);
}
#contenido_admin .fv-filters .fv-filter:hover,
#contenido_admin .fv-filters .fv-filter:focus {
  background: none;
  border-color: transparent;
  color: var(--rossa-teal);
}
#contenido_admin .fv-filters .fv-filter--active,
#contenido_admin .fv-filters .fv-filter--active:hover,
#contenido_admin .fv-filters .fv-filter--active:focus {
  background: none;
  border-bottom-color: var(--rossa-teal);
  color: var(--rossa-teal);
}

/*----- 77.4 Buscador -------------------------------------------------------- */
#contenido_admin .fv-search__input,
#contenido_admin .fact-search-input-wrapper input#fact_search {
  box-sizing: border-box;
  min-height: 36px;
  height: auto;
  padding: 6px 10px 6px 34px;
  font-family: var(--rossa-font);
  font-size: 13px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  color: var(--rossa-navy);
}
#contenido_admin .fv-search__input:focus,
#contenido_admin .fact-search-input-wrapper input#fact_search:focus {
  outline: none;
  border-color: var(--rossa-petrol);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}
#contenido_admin .rossa-fact-visor .fact-bills-search-box.fact-bills-search-box {
  background: none;
  border: 0;
  border-radius: 0;
  padding: 0;
  box-shadow: none;
}

/*----- 77.5 Cajas planas ---------------------------------------------------- */
#contenido_admin .fv-table-wrap,
#contenido_admin .fv-empty,
#contenido_admin .fact-filters-panel,
#contenido_admin .rossa-fact-visor .rossa-fact-list.rossa-fact-list,
#contenido_admin .rossa-fact-visor .fact-bills-empty.fact-bills-empty {
  border: 0;
  border-radius: 0;
  box-shadow: none;
  background: var(--rossa-white);
}
#contenido_admin .fv-empty__icon i { color: var(--rossa-muted); opacity: 1; }
#contenido_admin .fv-empty p { color: var(--rossa-muted); font-size: 14px; }
/* Reservas sin folio: filtros, vacío y tabla sin caja, como el resto de visores de facturación. */
#contenido_admin .mbf-page .mbf-filters,
#contenido_admin .mbf-page .mbf-empty,
#contenido_admin .mbf-page .mbf-table-wrap {
  border: 0;
  border-radius: 0;
  box-shadow: none;
  background: var(--rossa-white);
}
#contenido_admin .mbf-page .mbf-filters { padding: 0; }
#contenido_admin .mbf-page .mbf-empty { color: var(--rossa-muted); font-size: 14px; }
#contenido_admin .mbf-page .mbf-filters .rossa-filter-actions { flex: 1 0 100%; display: flex; align-items: center; gap: 12px; margin: 4px 0 0; }
#contenido_admin .mbf-page .mbf-filters .rossa-filter-actions .admin_boton { height: 30px; min-height: 30px; padding-top: 0; padding-bottom: 0; }

/*----- 77.6 La tabla, desnuda ----------------------------------------------- */
#contenido_admin .fv-table-wrap { overflow-x: auto; overflow-y: visible; }
#contenido_admin .rossa-fact-visor .fact-bills-table.rossa-fact-bills-table.rossa-fact-bills-table { min-width: 0; }
#contenido_admin table.fv-table.rossa-tbl,
#contenido_admin table.fact-bills-table.rossa-tbl {
  margin: 0;
  border: 0;
  border-radius: 0;
}

/*----- 77.7 Contenido de celda ---------------------------------------------- */
#contenido_admin .fv-cell-folio {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}
#contenido_admin .fv-cell-folio__client {
  display: block;
  font-size: var(--rossa-tbl-font);
  font-weight: 400;
  color: var(--rossa-petrol);
}
#contenido_admin .fv-cell-folio__date,
#contenido_admin .fv-cell-folio__client--empty,
#contenido_admin .fv-cell-empty,
#contenido_admin .fact-booking-more.fact-booking-more {
  font-size: var(--rossa-tbl-font);
  font-weight: 400;
  font-style: normal;
  letter-spacing: 0;
  color: var(--rossa-tbl-muted);
}
#contenido_admin .fv-cell-amount,
#contenido_admin .fact-bill-total.fact-bill-total {
  color: var(--rossa-green);
  font-size: var(--rossa-tbl-font);
  font-weight: 700;
}
#contenido_admin .fv-cell-bookings .fv-booking-link,
#contenido_admin .fact-booking-badge.fact-booking-badge {
  padding: 0;
  margin: 0;
  background: none;
  border: 0;
  border-radius: 0;
  font-size: var(--rossa-tbl-font);
  font-weight: 400;
  box-shadow: none;
  transform: none;
}
#contenido_admin .fv-cell-bookings { justify-content: center; gap: 8px; }

/*----- 77.8 Acciones de fila: iconos desnudos ------------------------------- */
#contenido_admin .fv-row-actions {
  display: inline-flex;
  gap: 6px;
  justify-content: center;
}
#contenido_admin .fv-icon-btn {
  width: auto;
  height: auto;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  color: var(--rossa-tbl-ico);
}
#contenido_admin .fv-icon-btn:hover,
#contenido_admin .fv-icon-btn--edit:hover {
  background: none;
  border-color: transparent;
  color: var(--rossa-tbl-ico);
}
/* Los !important empatan los de §38 sobre a.fact-action-btn. */
#contenido_admin .fact-action-btn.fact-action-btn,
#contenido_admin a.fact-action-btn.fact-action-btn,
#contenido_admin button.fact-action-btn.fact-action-btn,
#contenido_admin span.fact-action-btn.fact-action-btn {
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: none !important;
  box-shadow: none !important;
  color: var(--rossa-tbl-ico) !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
#contenido_admin .fact-action-btn.fact-action-btn i[class*="fa-"] { font-size: 16px; }
#contenido_admin .fact-action-btn.fact-action-btn-disabled.fact-action-btn-disabled {
  background: none !important;
  border: 0 !important;
  color: var(--rossa-tbl-ico) !important;
  opacity: .45 !important;
}
#contenido_admin .fact-bill-actions.fact-bill-actions {
  display: inline-flex;
  gap: 6px;
  justify-content: center;
  align-items: center;
  min-width: 0;
}
/* Mata el hueco de texto entre un <a> y un <button> hermanos. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.acciones_res.fact-bill-actions { white-space: nowrap; font-size: 0; }
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.acciones_res.fact-bill-actions > * { font-size: var(--rossa-tbl-font); }

/*----- 77.9 Pastillas: una sola escala -------------------------------------- */
#contenido_admin .fv-badge.fv-badge,
#contenido_admin .fact-badge.fact-badge,
#contenido_admin .fd-badge.fd-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  padding: 6px 12px;
  margin: 0;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius-pill);
  letter-spacing: 0;
  text-transform: none;
  box-shadow: none;
}
#contenido_admin .fv-badge--abierto.fv-badge--abierto,
#contenido_admin .fv-badge--reabierto.fv-badge--reabierto,
#contenido_admin .fact-badge-status-success.fact-badge-status-success,
#contenido_admin .fact-badge-emission-confirmed.fact-badge-emission-confirmed,
#contenido_admin .fd-badge--abierto.fd-badge--abierto,
#contenido_admin .fd-badge--reabierto.fd-badge--reabierto {
  background: rgba(25, 172, 138, .12);
  color: var(--rossa-green);
  border-color: rgba(25, 172, 138, .30);
}
#contenido_admin .fv-badge--cerrado.fv-badge--cerrado,
#contenido_admin .fv-badge--rel-mirror.fv-badge--rel-mirror,
#contenido_admin .fv-badge--rel-mirror-multi.fv-badge--rel-mirror-multi,
#contenido_admin .fact-badge-status-sent.fact-badge-status-sent,
#contenido_admin .fact-badge-type-default.fact-badge-type-default,
#contenido_admin .fact-badge-type-normal.fact-badge-type-normal,
#contenido_admin .fd-badge--cerrado.fd-badge--cerrado {
  background: rgba(0, 94, 102, .09);
  color: var(--rossa-teal);
  border-color: rgba(0, 94, 102, .22);
}
#contenido_admin .fv-badge--rel-full.fv-badge--rel-full,
#contenido_admin .fv-badge--rel-full-multi.fv-badge--rel-full-multi {
  background: rgba(23, 121, 155, .12);
  color: var(--rossa-cyan);
  border-color: var(--rossa-border);
}
#contenido_admin .fv-badge--anulado.fv-badge--anulado,
#contenido_admin .fact-badge-status-error.fact-badge-status-error,
#contenido_admin .fact-badge-type-rectificative.fact-badge-type-rectificative,
#contenido_admin .fd-badge--anulado.fd-badge--anulado {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  border-color: rgba(234, 92, 54, .30);
}
#contenido_admin .fv-badge--no-auto.fv-badge--no-auto,
#contenido_admin .fv-badge--rel-manual.fv-badge--rel-manual,
#contenido_admin .fv-badge--rel-none.fv-badge--rel-none,
#contenido_admin .fact-badge-obsolete.fact-badge-obsolete,
#contenido_admin .fact-badge-status-not_required.fact-badge-status-not_required,
#contenido_admin .fact-badge-status-cancelled.fact-badge-status-cancelled,
#contenido_admin .fact-badge-status-aborted.fact-badge-status-aborted,
#contenido_admin .fact-badge-type-legacy.fact-badge-type-legacy,
#contenido_admin .fact-badge-type-simplified.fact-badge-type-simplified {
  background: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}
#contenido_admin .fv-badge.fv-badge > i[class*="fa-"],
#contenido_admin .fact-badge.fact-badge > i[class*="fa-"] { font-size: 12px; color: currentColor; }

/*----- 77.10 Menús y paneles flotantes -------------------------------------- */
#contenido_admin .fact-filters-panel {
  box-shadow: none;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#contenido_admin .fv-bulk-count {
  background: var(--rossa-tint);
  color: var(--rossa-teal);
  font-size: 12px;
  font-weight: 700;
  border-radius: var(--rossa-radius-pill);
  padding: 3px 10px;
}

/*----- 77.11 El botón de alta es el primario del PMS ------------------------ */
#contenido_admin .fv-btn.admin_boton {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

/*----- 77.11b "Crear folio" (SAT) -----------*/
#rossa-actionbar .fv-list-create-actionbar {
  flex: 0 0 auto;
  display: flex;
}
@media (max-width: 700px) {
  #rossa-actionbar .fv-list-create-actionbar {
    flex: 1 1 0;
    min-width: 0;
  }
  #rossa-actionbar .fv-list-create-actionbar .rossa-actionbar-btn {
    width: 100%;
    min-width: 0;
    padding: 0 10px;
  }
}

/*----- 77.11d Listado de folios: select de acciones.  -----*/
@media (min-width: 701px) {
  #contenido_admin .fv-bulk-compact { display: none; }
}
#contenido_admin .fv-bulk-select-desktop-wrap {
  margin-bottom: 12px;
  width: 210px;
}
@media (max-width: 700px) {
  #contenido_admin .fv-bulk-select-desktop-wrap {
    width: 100%;
    box-sizing: border-box;
    padding: 0 14px;
    margin-top: 32px;
  }
}
#contenido_admin .fv-bulk-select-desktop-wrap .select2-container {
  width: 100% !important;
}
.fv-bulk-select-dropdown .select2-results__option:not([aria-disabled="true"]) {
  font-weight: 600;
  color: var(--rossa-ink);
}
.fv-bulk-select-dropdown .select2-results__option[aria-disabled="true"] {
  font-weight: 500;
  color: var(--rossa-muted);
  cursor: not-allowed;
}
.fv-bulk-select-dropdown .select2-results__option--highlighted.select2-results__option--selectable {
  color: var(--rossa-white) !important;
}
.fv-bulk-select-dropdown .fv-bulk-select-opt {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.fv-bulk-select-dropdown .fv-bulk-select-opt__hint {
  font-size: 12px;
  font-weight: 400;
  color: var(--fv-coral, #ea5c36);
}
.select2-container--open .fv-bulk-select-dropdown {
  z-index: 190 !important;
}

/*----- 77.12 Móvil: un solo corte, a 700px --------------------------------- */
@media (min-width: 701px) and (max-width: 768px) {
  #contenido_admin .fv-table-wrap { display: block; }
  #contenido_admin .fv-cards { display: none; }
}
@media (max-width: 700px) {
  #contenido_admin .fv-cards .fv-card:last-child {
    margin-bottom: 90px;
  }
}
@media (min-width: 701px) and (max-width: 900px) {
  #contenido_admin .fv-table thead { display: table-header-group; }
  #contenido_admin .fv-table tbody tr {
    display: table-row;
    padding: 0;
    margin: 0;
    border: 0;
    border-radius: 0;
  }
  #contenido_admin .fv-table tbody td { display: table-cell; }
  #contenido_admin .fv-table tbody td::before { content: none; }
}

/*----- 77.13 El icono del vacío del popup de folios ------------------------- */
#contenido_admin .fv-empty__icon i.fa-inbox.fact-icon-folio { display: inline-block; }

/*==============================================================================
  78. MODULO FACTURACION: fichas, asistente, modales, dashboard y configuracion
==============================================================================*/
/*----- 78.1 Ficha de folio: un solo titulo --------------------------------- */
#contenido_admin .fv-detail .fv-breadcrumb { display: none; }

#contenido_admin .fv-detail__header { margin: 0 0 16px; }

#contenido_admin .fv-detail__title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 4px 14px;
  margin: 0 0 12px;
}
#contenido_admin .fv-detail__title-block { gap: 10px; margin: 0; }
#contenido_admin .fv-detail__title {
  font-family: var(--rossa-font);
  font-size: 16px;
  line-height: 20px;
  font-weight: 500;
  color: var(--rossa-petrol);
}
#contenido_admin .fv-detail__title-client {
  font-weight: 400;
  color: var(--rossa-muted);
  margin-left: .35em;
}
#contenido_admin .fv-detail__date {
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 400;
  color: var(--rossa-muted);
}
#contenido_admin .fv-detail__date i { margin-right: 6px; color: var(--rossa-stroke); }

/*----- 78.2 Botonera de la ficha: la escala de .admin_boton ---------------- */
#contenido_admin .fv-detail__actions {
  gap: 8px;
  row-gap: 10px;
  align-items: center;
}
#contenido_admin .fv-detail .fv-btn:not(.fv-btn--sm) {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 1.25;
  font-weight: 700;
  gap: 8px;
  padding: 9px 16px;
  border-radius: var(--rossa-radius);
}
#contenido_admin .fv-detail .fv-btn:not(.fv-btn--sm) i[class*="fa-"] { font-size: 15px; }

#contenido_admin .fv-detail .fv-btn--secondary {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
#contenido_admin .fv-detail .fv-btn--secondary:hover {
  background: var(--rossa-surface);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}

#contenido_admin .fv-detail .fv-btn--ghost {
  border-color: transparent;
  color: var(--rossa-muted);
}
#contenido_admin .fv-detail .fv-btn--ghost:hover {
  background: var(--rossa-tint);
  color: var(--rossa-teal);
}

#contenido_admin .fv-detail .fv-btn.fv-btn--disabled,
#contenido_admin .fv-detail .fv-btn:disabled {
  opacity: 1;
  background: var(--rossa-surface-2);
  border-color: var(--rossa-border);
  color: var(--rossa-muted);
}
/* El title explica por que esta bloqueado: sin punteros el navegador no lo pinta. */
#contenido_admin .fv-detail .fv-btn.fv-btn--disabled[disabled] { pointer-events: auto; }

#contenido_admin .fv-detail .fv-btn-combo { gap: 8px; }
#contenido_admin .fv-detail .fv-btn-combo .fv-btn--preview {
  padding: 9px 16px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  color: var(--rossa-ink);
}
#contenido_admin .fv-detail .fv-btn-combo .fv-btn--preview:hover:not(:disabled):not(.fv-btn--disabled) {
  background: var(--rossa-surface);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
#contenido_admin .fv-detail .fv-btn-combo .fv-btn--primary { border-radius: var(--rossa-radius); }
#contenido_admin .fv-detail .fv-btn-combo .fv-btn--preview.fv-btn--disabled,
#contenido_admin .fv-detail .fv-btn-combo .fv-btn--primary.fv-btn--disabled { opacity: 1; }

/*----- 78.4 Avisos: el patron .rossa-alert del PMS ------------------------- */
#contenido_admin .fv-detail .fv-banner {
  font-weight: 400;
  margin: 0 0 12px;
}
#contenido_admin .fv-detail .fv-banner strong { font-weight: 700; }
#contenido_admin .fv-detail .fv-banner > i { margin-top: 1px; font-size: 15px; }
#contenido_admin .fv-detail .fv-banner__detail {
  font-size: 13px;
  font-weight: 400;
  color: var(--rossa-muted);
}
#contenido_admin .fv-detail .fv-banner .admin_link {
  font-weight: 400;
  color: var(--rossa-cyan-fig);
  text-decoration: none;
}
#contenido_admin .fv-detail .fv-banner .admin_link:hover { text-decoration: underline; }
#contenido_admin .fv-detail .fv-banner__action {
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 700;
  padding: 6px 12px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  color: var(--rossa-ink);
}
#contenido_admin .fv-detail .fv-banner__action:hover {
  background: var(--rossa-surface);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}

/*----- 78.5 Barra de resumen: la tarjeta estandar -------------------------- */
#contenido_admin .fv-hero {
  align-items: stretch;
  gap: 0;
  margin: 0 0 16px;
  padding: 0;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
}

#contenido_admin .fv-hero__profile,
#contenido_admin .fv-hero__profile--abbr {
  align-items: center;
  gap: 10px;
  min-width: 200px;
  padding: 14px 18px;
}
#contenido_admin .fv-hero__profile-text { gap: 3px; }
#contenido_admin .fv-hero__profile-hint {
  font-size: 13px;
  line-height: 16px;
  color: var(--rossa-navy);
}
#contenido_admin .fv-hero__empresa-sm {
  font-size: 12px;
  color: var(--rossa-muted);
}
#contenido_admin .fv-hero .rossa-fact-abbr--lg {
  width: 2.1rem;
  height: 2.1rem;
  min-width: 2.1rem;
  font-size: .68rem;
}
#contenido_admin .fv-hero .rossa-fact-abbr--lg.rossa-fact-abbr--len3 { font-size: .58rem; }

#contenido_admin .fv-hero__metrics {
  flex: 1 1 auto;
  gap: 0;
  align-items: stretch;
  border-left: 1px solid var(--rossa-stroke);
}
#contenido_admin .fv-hero__metrics .fv-metric {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  flex: 1 1 0;
  min-width: 0;
  padding: 14px 18px;
}
#contenido_admin .fv-hero__metrics .fv-metric + .fv-metric { border-left: 1px solid var(--rossa-stroke); }
#contenido_admin .fv-hero .fv-metric__label {
  margin: 0;
  font-size: 10px;
  line-height: 12px;
  font-weight: 700;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
#contenido_admin .fv-hero .fv-metric__value {
  font-size: 14px;
  line-height: 18px;
  font-weight: 400;
  color: var(--rossa-navy);
}
#contenido_admin .fv-hero .fv-metric__value--total {
  font-size: 20px;
  line-height: 22px;
  font-weight: 700;
  color: var(--rossa-green);
}
#contenido_admin .fv-hero .fv-metric__value--text {
  font-size: 14px;
  font-weight: 400;
}

#contenido_admin .fv-hero__quick {
  gap: 6px;
  margin: 0;
  padding: 0 18px 14px;
}
#contenido_admin .fv-hero .fv-hero__chip {
  gap: 4px;
  padding: 6px 12px;
  background: var(--rossa-surface-2);
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
  color: var(--rossa-muted);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
}
#contenido_admin .fv-hero .fv-hero__chip.is-on {
  background: rgba(0, 94, 102, .09);
  border-color: rgba(0, 94, 102, .22);
  color: var(--rossa-teal);
}
#contenido_admin .fv-hero .fv-hero__chip--muted { font-weight: 400; }
#contenido_admin .fv-hero .fv-hero__chip > i { font-size: 12px; color: currentColor; }

/*----- 78.6 El aviso de emision bloqueada se queda sin icono -------------- */
#contenido_admin .fv-detail .fv-banner > i.fa-hourglass-half::before {
  content: "";
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;
  background-color: currentColor;
  -webkit-mask-image: url("https://cdn.rossa.app/icons/hourglass.svg");
          mask-image: url("https://cdn.rossa.app/icons/hourglass.svg");
  -webkit-mask-repeat: no-repeat;   mask-repeat: no-repeat;
  -webkit-mask-position: center;    mask-position: center;
  -webkit-mask-size: contain;       mask-size: contain;
}

/*----- 78.9 Movil: repetir las medias del modulo a la especificidad nueva -- */
@media (max-width: 768px) {
  #contenido_admin .fv-detail__title { font-size: 15px; }
  #contenido_admin .fv-detail__actions { align-items: stretch; }

  #contenido_admin .fv-hero {
    flex-direction: column;
    gap: 0;
    padding: 0;
    margin: 0 0 16px;
  }
  #contenido_admin .fv-hero__profile,
  #contenido_admin .fv-hero__profile--abbr {
    width: 100%;
    min-width: 0;
    padding: 12px 14px;
  }
  #contenido_admin .fv-hero__metrics {
    width: 100%;
    gap: 0;
    border-left: 0;
    border-top: 1px solid var(--rossa-stroke);
  }
  #contenido_admin .fv-hero__metrics .fv-metric { padding: 12px 14px; }
  #contenido_admin .fv-hero__quick { padding: 0 14px 12px; }
}

@media (max-width: 640px) {
  #contenido_admin .fv-lifecycle__step--final { flex: 0 0 148px; }
  #contenido_admin .fv-lifecycle__label { font-size: 12px; }
  #contenido_admin .fv-lifecycle__date,
  #contenido_admin .fv-lifecycle__detail { font-size: 11px; }
}

@media (max-width: 480px) {
  #contenido_admin .fv-hero__metrics { grid-template-columns: minmax(0, 1fr); }
  #contenido_admin .fv-hero__metrics .fv-metric + .fv-metric {
    border-left: 0;
    border-top: 1px solid var(--rossa-stroke);
  }
}

/*----- 78.10 Los paneles de la ficha son la tarjeta estándar (§65) */
#contenido_admin .fv-page .fv-panel,
#contenido_admin .fv-page .fv-billing-card,
#contenido_admin .fv-page .fv-detail__history-foot {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  box-shadow: none;
}

#contenido_admin .fv-page .fv-panel__head,
#contenido_admin .fv-page .fv-billing-card__head {
  padding: 16px 20px 15px;
  background: none;
  border-bottom: 1px solid var(--rossa-stroke);
}

#contenido_admin .fv-page .fv-panel__head h3,
#contenido_admin .fv-page .fv-billing-card__title {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  color: var(--rossa-navy);
}

#contenido_admin .fv-page .fv-panel__head h3 i[class*="fa-"],
#contenido_admin .fv-page .fv-billing-card__title > i[class*="fa-"] {
  margin-right: 8px;
  font-size: 15px;
  color: var(--rossa-teal);
}

#contenido_admin .fv-page .fv-panel__count {
  min-width: 0;
  height: auto;
  margin-left: 8px;
  padding: 4px 10px;
  border: 1px solid rgba(0, 94, 102, .22);
  border-radius: var(--rossa-radius-pill);
  background: rgba(0, 94, 102, .09);
  color: var(--rossa-teal);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
}

#contenido_admin .fv-page .fv-billing-manual-badge {
  gap: 4px;
  margin-left: 8px;
  padding: 4px 10px;
  border: 1px solid rgba(234, 92, 54, .30);
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
  text-transform: none;
}
#contenido_admin .fv-page .fv-billing-manual-badge > i[class*="fa-"] {
  font-size: 12px;
  color: currentColor;
}

#contenido_admin .fv-page .fv-panel__body:not(.fv-panel__body--flush):not(.fv-comments-body) {
  padding: 14px 20px 16px;
}
#contenido_admin .fv-page .fv-billing-card__body {
  padding: 0;
  gap: 0;
}

#contenido_admin .fv-page .fv-panel__empty:not(.fv-panel__empty--historical) {
  margin: 0;
  padding: 0;
  font-size: 13px;
  line-height: 16px;
  color: var(--rossa-muted);
  text-align: left;
}

/*----- 78.11 Facturación: las cajas anidadas pasan a filas y celdas de tarjeta */
#contenido_admin .fv-page .fv-billing-detail { gap: 0; }

#contenido_admin .fv-page .fv-billing-status,
#contenido_admin .fv-page .fv-billing-dates,
#contenido_admin .fv-page .fv-billing-flags,
#contenido_admin .fv-page .fv-billing-plantilla {
  margin: 0 12px;
  gap: 0;
  border-top: 1px solid var(--rossa-stroke);
}
#contenido_admin .fv-page .fv-billing-detail > :first-child { border-top: 0; }

#contenido_admin .fv-page .fv-billing-status { flex-wrap: nowrap; }
#contenido_admin .fv-page .fv-billing-mode { flex: 1 1 auto; }

#contenido_admin .fv-page .fv-billing-status > * + *,
#contenido_admin .fv-page .fv-billing-dates > * + *,
#contenido_admin .fv-page .fv-billing-flags > * + * {
  border-left: 1px solid var(--rossa-stroke);
}

#contenido_admin .fv-page .fv-billing-mode,
#contenido_admin .fv-page .fv-billing-schedule-chip,
#contenido_admin .fv-page .fv-billing-date,
#contenido_admin .fv-page .fv-billing-flag {
  padding: 14px 12px 15px;
  border: 0;
  border-radius: 0;
  background: none;
  opacity: 1;
}
#contenido_admin .fv-page .fv-billing-plantilla {
  padding: 14px 12px 15px;
  font-family: var(--rossa-font);
}

#contenido_admin .fv-page .fv-billing-mode > i[class*="fa-"],
#contenido_admin .fv-page .fv-billing-date__icon,
#contenido_admin .fv-page .fv-billing-schedule-chip > i[class*="fa-"],
#contenido_admin .fv-page .fv-billing-plantilla > i[class*="fa-"] {
  width: auto;
  height: auto;
  border-radius: 0;
  background: none;
  font-size: 15px;
  color: var(--rossa-stroke);
}

#contenido_admin .fv-page .fv-billing-date__label,
#contenido_admin .fv-page .fv-billing-flag__label {
  font-family: var(--rossa-font);
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}

#contenido_admin .fv-page .fv-billing-date__value,
#contenido_admin .fv-page .fv-billing-mode__text strong,
#contenido_admin .fv-page .fv-billing-schedule-chip {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 400;
  color: var(--rossa-navy);
}

#contenido_admin .fv-page .fv-billing-date__meta,
#contenido_admin .fv-page .fv-billing-mode__text span,
#contenido_admin .fv-page .fv-billing-plantilla {
  font-size: 13px;
  line-height: 16px;
  font-weight: 400;
  color: var(--rossa-muted);
}

#contenido_admin .fv-page .fv-billing-date__label em {
  font-weight: 700;
  color: var(--rossa-green);
}
#contenido_admin .fv-page .fv-billing-date.is-off .fv-billing-date__label em { color: var(--rossa-muted); }
#contenido_admin .fv-page .fv-billing-date.is-off .fv-billing-date__value,
#contenido_admin .fv-page .fv-billing-date.is-muted:not(.is-done) .fv-billing-date__value { color: var(--rossa-muted); }

/*----- 78.12 Facturación: las banderas Email / Agrupado / Verifactu, con el lenguaje de §65 __flag */
#contenido_admin .fv-page .fv-billing-flag {
  flex-direction: column;
  align-items: flex-start;
  gap: 5px;
  color: var(--rossa-muted);
}
#contenido_admin .fv-page .fv-billing-flag > i[class*="fa-"] {
  margin-bottom: 1px;
  font-size: 15px;
  color: var(--rossa-stroke);
}
#contenido_admin .fv-page .fv-billing-flag.is-on .fv-billing-flag__label,
#contenido_admin .fv-page .fv-billing-flag.is-on > i[class*="fa-"] {
  color: var(--rossa-pag);
}
#contenido_admin .fv-page .fv-billing-flag__hint {
  max-width: 100%;
  font-size: 13px;
  line-height: 16px;
  font-weight: 400;
  color: var(--rossa-muted);
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  overflow-wrap: anywhere;
}

/*----- 78.13 Líneas del folio: la tabla ya es .rossa-tbl — alineación, líneas hijas y pie de totales */
#contenido_admin .fv-page .fv-lines-table-wrap {
  overflow-x: auto;
  overflow-y: visible;
}
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl {
  margin: 0;
  border: 0;
  border-radius: 0;
  font-size: var(--rossa-tbl-font);
}

#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > thead > tr > th:nth-child(-n+2),
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:nth-child(-n+2) {
  text-align: left;
}
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:nth-child(2) {
  white-space: normal;
  line-height: 1.45;
  color: var(--rossa-petrol);
}

#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:nth-child(5) {
  font-weight: 700;
  color: var(--rossa-navy);
}
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td:nth-child(5) strong {
  font-weight: inherit;
  color: inherit;
}
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.fv-amt--pos { color: var(--rossa-green); }
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.fv-amt--neg { color: var(--rossa-coral); }
#contenido_admin .fv-page .fv-line-iva-amt {
  font-size: var(--rossa-tbl-font);
  color: var(--rossa-tbl-muted);
}

#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tbody > tr.fv-line--adjustment > td {
  height: 52px;
  opacity: 1;
}
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tbody > tr.fv-line--adjustment > td.fv-line-ref-cell {
  padding-left: 40px;
}
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tbody > tr.fv-line--adjustment-done > td {
  color: var(--rossa-muted);
}
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tbody > tr.fv-line--adjustment-pending {
  background-color: var(--rossa-salmon);
}

#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tfoot {
  border-top: 1px solid var(--rossa-stroke);
}
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tfoot > tr > td {
  height: 56px;
  padding: 0 var(--rossa-tbl-pad-x);
  border: 0;
  background: var(--rossa-tint);
  font-family: var(--rossa-font);
  font-size: var(--rossa-tbl-font);
  font-weight: 700;
  color: var(--rossa-navy);
  text-align: center;
  vertical-align: middle;
}
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tfoot > tr > td[colspan] {
  text-align: right;
}
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tfoot > tr:not(:first-child) > td {
  border-top: 1px solid var(--rossa-hairline-soft);
}
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tfoot > tr.fv-lines-subtotal > td {
  height: 40px;
  background: none;
  font-weight: 400;
  color: var(--rossa-muted);
}
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tfoot > tr.fv-lines-subtotal > td.fv-amt--pos { color: var(--rossa-green); }
#contenido_admin table.fv-lines-table.rossa-tbl.rossa-tbl > tfoot > tr.fv-lines-subtotal > td.fv-amt--neg { color: var(--rossa-coral); }

/*----- 78.14 Pastillas de la celda ORIGEN con la escala única de §77.9 */
#contenido_admin .fv-page .line-ref-row {
  gap: 6px;
  margin: 0;
}
#contenido_admin .fv-page .folio-line-ref {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin: 0;
  padding: 6px 12px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius-pill);
  background: none;
  box-shadow: none;
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
  text-transform: none;
  text-decoration: none;
  white-space: nowrap;
}
#contenido_admin .fv-page .folio-line-ref > i[class*="fa-"] {
  font-size: 12px;
  color: currentColor;
  opacity: 1;
}

#contenido_admin .fv-page .folio-line-ref--reserva {
  background: rgba(0, 94, 102, .09);
  border-color: rgba(0, 94, 102, .22);
  color: var(--rossa-teal);
}
#contenido_admin .fv-page .folio-line-ref--linea,
#contenido_admin .fv-page .folio-line-ref--bill {
  background: rgba(23, 121, 155, .12);
  border-color: var(--rossa-border);
  color: var(--rossa-cyan);
}
#contenido_admin .fv-page .folio-line-ref--share,
#contenido_admin .fv-page .folio-line-ref--manual {
  background: var(--rossa-surface-2);
  border-color: var(--rossa-border);
  color: var(--rossa-muted);
}
#contenido_admin .fv-page .folio-line-ref--adjustment {
  background: var(--rossa-salmon);
  border-color: rgba(234, 92, 54, .30);
  color: var(--rossa-coral);
}

#contenido_admin table.fv-lines-table.rossa-tbl a.folio-line-ref--reserva:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton) {
  color: var(--rossa-teal);
  text-decoration: none;
}
#contenido_admin table.fv-lines-table.rossa-tbl a.folio-line-ref--bill:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton) {
  color: var(--rossa-cyan);
  text-decoration: none;
}
#contenido_admin table.fv-lines-table.rossa-tbl a.folio-line-ref:not(.admin_boton):not(.rossa-btn):not(.rossa-btn-negative):not(.back_button):not(.lydia_boton):hover {
  background: rgba(0, 94, 102, .16);
  text-decoration: none;
}

/*----- 78.15 Columna lateral: tarjetas Emisor y Cliente */
#contenido_admin .fv-page .fv-profile-card-row {
  align-items: center;
  gap: 12px;
}
#contenido_admin .fv-page .fv-client-name,
#contenido_admin .fv-page .fv-profile-card-text .fv-client-name {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 18px;
  font-weight: 700;
  color: var(--rossa-navy);
  overflow-wrap: anywhere;
}
#contenido_admin .fv-page .fv-client-doc,
#contenido_admin .fv-page .fv-client-meta {
  margin: 5px 0 0;
  font-size: 13px;
  line-height: 16px;
  font-weight: 400;
  color: var(--rossa-muted);
  overflow-wrap: anywhere;
}
#contenido_admin .fv-page .fv-client-doc > i[class*="fa-"],
#contenido_admin .fv-page .fv-client-meta > i[class*="fa-"] {
  width: 16px;
  margin-right: 4px;
  font-size: 14px;
  color: var(--rossa-stroke);
}

#contenido_admin .fv-page .fv-aside-meta {
  margin: 14px 0 0;
  padding: 13px 0 0;
  border-top: 1px solid var(--rossa-hairline-soft);
}
#contenido_admin .fv-page .fv-aside-meta__label {
  margin: 0 0 5px;
  font-family: var(--rossa-font);
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}

#contenido_admin .fv-page .fv-panel__head--split > .fv-btn.fv-btn--ghost,
#contenido_admin .fv-page .fv-billing-card__head > .fv-btn,
#contenido_admin .fv-page .fv-aeat__actions > .fv-btn,
#contenido_admin .fv-page .fv-history__toolbar > .fv-btn {
  min-height: 32px;
  padding: 6px 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  color: var(--rossa-ink);
}
#contenido_admin .fv-page .fv-panel__head--split > .fv-btn.fv-btn--ghost:hover,
#contenido_admin .fv-page .fv-billing-card__head > .fv-btn:hover,
#contenido_admin .fv-page .fv-aeat__actions > .fv-btn:hover,
#contenido_admin .fv-page .fv-history__toolbar > .fv-btn:hover {
  border-color: var(--rossa-petrol);
  background: var(--rossa-white);
  color: var(--rossa-petrol);
}
#contenido_admin .fv-page .fv-panel__head--split > .fv-btn > i[class*="fa-"],
#contenido_admin .fv-page .fv-billing-card__head > .fv-btn > i[class*="fa-"],
#contenido_admin .fv-page .fv-aeat__actions > .fv-btn > i[class*="fa-"],
#contenido_admin .fv-page .fv-history__toolbar > .fv-btn > i[class*="fa-"] {
  font-size: 14px;
  color: var(--rossa-teal);
}

/*----- 78.16 Columna lateral: el bloque AEAT deja de ser una caja */
#contenido_admin .fv-page .fv-aeat {
  margin: 14px 0 0;
  padding: 13px 0 0;
  border: 0;
  border-top: 1px solid var(--rossa-hairline-soft);
  border-radius: 0;
  background: none;
}
#contenido_admin .fv-page .fv-aeat__label {
  margin: 0;
  align-items: center;
  gap: 6px;
  font-family: var(--rossa-font);
  font-size: 13px;
  line-height: 16px;
  font-weight: 600;
}
#contenido_admin .fv-page .fv-aeat__label > i[class*="fa-"] {
  margin-top: 0;
  font-size: 14px;
  color: currentColor;
}
#contenido_admin .fv-page .fv-aeat__meta,
#contenido_admin .fv-page .fv-aeat__census {
  margin: 5px 0 0;
  font-size: 13px;
  line-height: 16px;
  color: var(--rossa-muted);
}
#contenido_admin .fv-page .fv-aeat__actions {
  gap: 8px;
  margin-top: 10px;
}

/*----- 78.17 Columna lateral: Comentarios, dos filas de tarjeta */
#contenido_admin .fv-page .fv-comments-body {
  padding: 0;
  gap: 0;
}
#contenido_admin .fv-page .fv-comments-view { gap: 0; }

#contenido_admin .fv-page .fv-comment-slot {
  gap: 5px;
  min-height: 0;
  margin: 0 12px;
  padding: 14px 12px 15px;
  border: 0;
  border-top: 1px solid var(--rossa-stroke);
  border-radius: 0;
  background: none;
  opacity: 1;
}
#contenido_admin .fv-page .fv-comments-view > .fv-comment-slot:first-child { border-top: 0; }

#contenido_admin .fv-page .fv-comment-slot__head {
  gap: 6px;
  align-items: center;
}
#contenido_admin .fv-page .fv-comment-slot__icon {
  width: auto;
  height: auto;
  border-radius: 0;
  background: none;
  font-size: 14px;
  color: var(--rossa-stroke);
}
#contenido_admin .fv-page .fv-comment-slot__title {
  font-family: var(--rossa-font);
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
#contenido_admin .fv-page .fv-comment-slot__hint {
  font-size: 12px;
  line-height: 14px;
  font-weight: 400;
  color: var(--rossa-muted);
}
#contenido_admin .fv-page .fv-comment-slot__body {
  margin: 2px 0 0;
  font-size: 13px;
  line-height: 16px;
  font-weight: 400;
  font-style: normal;
  color: var(--rossa-navy);
}
#contenido_admin .fv-page .fv-comment-slot__body.is-empty {
  font-style: normal;
  font-weight: 400;
  color: var(--rossa-muted);
}

#contenido_admin .fv-page .fv-comment-slot__edit.fv-btn {
  box-sizing: border-box;
  width: 28px;
  height: 28px;
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: var(--rossa-radius);
  background: none;
  box-shadow: none;
  color: var(--rossa-stroke);
  font-size: 0;
}
#contenido_admin .fv-page .fv-comment-slot__edit.fv-btn:hover {
  background: rgba(32, 92, 104, .10);
  color: var(--rossa-petrol);
}
#contenido_admin .fv-page .fv-comment-slot__edit.fv-btn > i[class*="fa-"],
#contenido_admin .fv-page .fv-comment-slot__edit.fv-btn .fa {
  margin: 0;
  font-size: 15px;
}

/*----- 78.18 Historial del folio: el pie desplegable, con el cromo de la tarjeta */
#contenido_admin .fv-page .fv-detail__history-foot {
  margin-top: 16px;
  background: var(--rossa-white);
}
#contenido_admin .fv-page .fv-detail__history-foot .fv-history__toggle {
  padding: 16px 20px 15px;
  background: none;
  border-bottom: 0;
  font-size: 14px;
}
#contenido_admin .fv-page .fv-detail__history-foot .fv-history[open] > .fv-history__toggle {
  background: none;
  border-bottom: 1px solid var(--rossa-stroke);
}
#contenido_admin .fv-page .fv-history__toggle-main > i[class*="fa-"] {
  font-size: 15px;
  color: var(--rossa-teal);
}
#contenido_admin .fv-page .fv-history__toggle-title {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  color: var(--rossa-navy);
}
#contenido_admin .fv-page .fv-history__toggle-meta {
  font-size: 13px;
  line-height: 16px;
  font-weight: 400;
  color: var(--rossa-muted);
  opacity: 1;
}
#contenido_admin .fv-page .fv-history__chevron {
  font-size: 14px;
  color: var(--rossa-stroke);
}
#contenido_admin .fv-page .fv-history__content {
  padding: 14px 20px 18px;
  background: var(--rossa-white);
}
#contenido_admin .fv-page .fv-history__archive {
  margin-top: 16px;
  padding-top: 13px;
  border-top: 1px solid var(--rossa-hairline-soft);
}
#contenido_admin .fv-page .fv-history__archive-toggle {
  gap: 8px;
  padding: 6px 0;
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  color: var(--rossa-muted);
}

/*----- 78.19 Móvil: un solo corte, a 700px, como §77.12 */
@media (min-width: 701px) and (max-width: 768px) {
  #contenido_admin .fv-page .fv-lines-table-wrap { display: block; }
  #contenido_admin .fv-page .fv-line-cards { display: none; }
  #contenido_admin .fv-page .fv-billing-flag__hint { display: block; }
}

@media (max-width: 700px) {
  #contenido_admin .fv-page .fv-billing-status { flex-wrap: wrap; }
  #contenido_admin .fv-page .fv-billing-dates,
  #contenido_admin .fv-page .fv-billing-flags {
    grid-template-columns: minmax(0, 1fr);
  }
  #contenido_admin .fv-page .fv-billing-status > * + *,
  #contenido_admin .fv-page .fv-billing-dates > * + *,
  #contenido_admin .fv-page .fv-billing-flags > * + * {
    border-left: 0;
    border-top: 1px solid var(--rossa-hairline-soft);
  }
  #contenido_admin .fv-page .fv-comment-slot,
  #contenido_admin .fv-page .fv-billing-status,
  #contenido_admin .fv-page .fv-billing-dates,
  #contenido_admin .fv-page .fv-billing-flags,
  #contenido_admin .fv-page .fv-billing-plantilla {
    margin: 0;
  }
  #contenido_admin .fv-page .fv-panel__head,
  #contenido_admin .fv-page .fv-billing-card__head,
  #contenido_admin .fv-page .fv-history__content { padding-left: 14px; padding-right: 14px; }
  #contenido_admin .fv-page .fv-panel__body:not(.fv-panel__body--flush):not(.fv-comments-body) { padding-left: 14px; padding-right: 14px; }
  #contenido_admin .fv-page .fv-comment-slot,
  #contenido_admin .fv-page .fv-billing-status,
  #contenido_admin .fv-page .fv-billing-dates,
  #contenido_admin .fv-page .fv-billing-flags,
  #contenido_admin .fv-page .fv-billing-plantilla { padding-left: 14px; padding-right: 14px; }
}

/*----- 78.20 Ficha de factura: contenedor y titulo */
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) {
  --rossa-tbl-row-h: 46px;
  max-width: none;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-container {
  max-width: none;
  margin: 0;
  padding: 0 0 24px;
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-header {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px 16px;
  margin: 0 0 18px;
  padding: 0;
  background: none;
  border: 0;
  border-radius: 0;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-title {
  align-items: baseline;
  gap: 6px 10px;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-title h2 {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 16px;
  font-weight: 500;
  line-height: 20px;
  color: var(--rossa-petrol);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-title h2 i { display: none; }
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-id-badge {
  min-height: 0;
  padding: 0;
  background: none;
  border-radius: 0;
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-folio-link {
  font-size: 13px;
  font-weight: 400;
  color: var(--rossa-cyan-fig);
}
#contenido_admin.isiframe .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-title h2 {
  font-size: 23px;
  font-weight: 600;
  color: var(--rossa-navy);
}
/* El cromo del popup ya pinta .lptitle: la 77.2 reenseña el h1 y salen dos titulos. */
#contenido_admin.isiframe:has(> .rossa-fact-bill-visor:not(.fv-page)) > h1:first-of-type { display: none !important; }

/*----- 78.21 Ficha de factura: secciones planas */
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-sections {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 28px 24px;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-section {
  padding: 0;
  background: var(--rossa-white);
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-section-title {
  gap: 0;
  margin: 0 0 14px;
  padding: 0 0 8px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: .4px;
  text-transform: uppercase;
  color: var(--rossa-navy);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-section-title i { display: none; }
@media (max-width: 900px) {
  #contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-sections { grid-template-columns: minmax(0, 1fr); }
}

/*----- 78.22 Ficha de factura: escala de campo de la tarjeta estandar */
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-info-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px 20px;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-info-item { gap: 5px; }
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-info-label {
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-info-value {
  font-size: 14px;
  line-height: 16px;
  font-weight: 400;
  font-style: normal;
  color: var(--rossa-navy);
  overflow-wrap: anywhere;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-info-value .empty,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-info-value span.empty {
  font-style: normal;
  font-weight: 400;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-info-value--total {
  font-size: 16px;
  font-weight: 700;
  color: var(--rossa-green);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-status-icon--yes { color: var(--rossa-pag); }
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-status-icon--no  { color: var(--rossa-coral); }
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-info-value a.admin_link,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-client-reference-btn {
  font-weight: 400;
  color: var(--rossa-cyan-fig);
  text-decoration: none;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-info-value a.admin_link:hover,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-client-reference-btn:hover {
  color: var(--rossa-cyan-fig);
  text-decoration: underline;
}

/*----- 78.23 Ficha de factura: pastillas .fact-bill-badge con la escala unica de la 77.9 */
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-height: 0;
  padding: 6px 12px;
  margin: 0;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius-pill);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
  text-transform: none;
  box-shadow: none;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-status-SUCCESS,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-emission-CONFIRMED {
  background: rgba(25, 172, 138, .12);
  color: var(--rossa-green);
  border-color: rgba(25, 172, 138, .30);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-type-DEFAULT,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-type-default,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-status-SENT,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-verifactu-f1,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-verifactu-f2,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-verifactu-f3 {
  background: rgba(0, 94, 102, .09);
  color: var(--rossa-teal);
  border-color: rgba(0, 94, 102, .22);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-type-RECTIFICATIVE,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-type-rectificative,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-status-ERROR,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-status-PENDING,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-emission-DRAFT,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-verifactu-r1,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-verifactu-r5 {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  border-color: rgba(234, 92, 54, .30);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-type-SIMPLIFIED,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-type-simplified,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-type-simplified-nominal,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-type-LEGACY,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-type-legacy,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-status-CANCELLED,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-status-ABORTED,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-status-NOT_REQUIRED,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-emission-LEGACY,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge-emission-PROVISIONAL {
  background: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-badge > i[class*="fa-"] { font-size: 12px; color: currentColor; }

/*----- 78.24 Ficha de factura: tabla de lineas y fila de total */
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) table.fact-bill-lines-table.rossa-tbl {
  margin: 0;
  border: 0;
  border-radius: 0;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) table.fact-bill-lines-table.rossa-tbl > thead > tr > th:first-child,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) table.fact-bill-lines-table.rossa-tbl > tbody > tr:not(.cab) > td:first-child {
  text-align: left;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) table.fact-bill-lines-table.rossa-tbl > tbody > tr.fact-bill-total-row > td {
  height: auto;
  padding: 14px var(--rossa-tbl-pad-x);
  border-top: 1px solid var(--rossa-hairline);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-total-row td[colspan] strong {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .4px;
  text-transform: uppercase;
  color: var(--rossa-muted);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-total-row td.text-right strong {
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
  color: var(--rossa-green);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-booking-link {
  padding: 0;
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  transform: none;
  font-size: var(--rossa-tbl-font);
  font-weight: 400;
  color: var(--rossa-cyan-fig);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-booking-link:hover {
  background: none;
  box-shadow: none;
  transform: none;
  color: var(--rossa-cyan-fig);
  text-decoration: underline;
}

/*----- 78.25 Ficha de factura: comentarios, botones de cabecera y aviso de error */
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-comments {
  padding: 0;
  min-height: 0;
  background: none;
  border: 0;
  border-radius: 0;
  font-size: 14px;
  line-height: 1.55;
  color: var(--rossa-navy);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-actions { gap: 8px; }
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn {
  height: 34px;
  padding: 0 16px;
  gap: 8px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  transform: none;
  box-shadow: none;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn:hover {
  transform: none;
  box-shadow: none;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn-primary {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn-primary:hover:not(:disabled):not(.fact-bill-view-btn-disabled) {
  background: var(--rossa-petrol-dark);
  border-color: var(--rossa-petrol-dark);
  color: var(--rossa-white);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn-success,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn-warning {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn-success:hover:not(:disabled):not(.fact-bill-view-btn-disabled),
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn-warning:hover:not(:disabled):not(.fact-bill-view-btn-disabled) {
  background: var(--rossa-white);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
}
/* !important obligado: factBillView.css:111-184 pinta el estado deshabilitado con !important. */
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn:disabled,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn-disabled,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn:disabled:hover,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn-disabled:hover {
  opacity: 1 !important;
  background-color: var(--rossa-surface) !important;
  border: 1px solid var(--rossa-border) !important;
  color: var(--rossa-muted) !important;
  transform: none !important;
  box-shadow: none !important;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-error-message {
  gap: 10px;
  margin: 0;
  padding: 12px 14px;
  border: 0;
  border-radius: var(--rossa-radius);
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  font-size: 13px;
  line-height: 1.45;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-error-message i {
  margin: 0;
  font-size: 14px;
  color: var(--rossa-coral);
}

/*----- 78.26 Panel de la reserva: contenedor y titulo */
#contenido_admin .fact-booking-panel {
  --rossa-tbl-row-h: 46px;
  max-width: none;
  margin: 0;
  padding: 0 0 24px;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__header {
  align-items: baseline;
  gap: 8px 16px;
  margin: 0 0 18px;
  padding: 0;
  border-bottom: 0;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__title h2 {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 16px;
  font-weight: 500;
  line-height: 20px;
  color: var(--rossa-petrol);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__title h2 i { display: none; }
/* El h1 de la pagina ya dice «Facturacion de la reserva #N»: fuera del popup el h2 lo repite. */
#contenido_admin:not(.isiframe) .fact-booking-panel .fact-booking-panel__title h2 { display: none; }
#contenido_admin.isiframe .fact-booking-panel .fact-booking-panel__title h2 {
  font-size: 23px;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__subtitle {
  margin: 0;
  font-size: 13px;
  font-weight: 400;
  color: var(--rossa-muted);
}
/* !important obligado: la 23 (rossa.css:3333) fuerza .rossa-btn--default a teal relleno con !important. */
#contenido_admin .fact-booking-panel .fact-booking-panel__actions .rossa-btn.rossa-btn--default {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--rossa-white) !important;
  border: 1px solid var(--rossa-border) !important;
  border-radius: var(--rossa-radius) !important;
  color: var(--rossa-ink) !important;
  font-weight: 600;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__actions .rossa-btn.rossa-btn--default:hover {
  background: var(--rossa-white) !important;
  border-color: var(--rossa-teal) !important;
  color: var(--rossa-teal) !important;
}

/*----- 78.27 Panel de la reserva: generacion rapida */
#contenido_admin .fact-booking-panel .fact-booking-panel__quick {
  margin: 0 0 24px;
  padding: 0 0 20px;
  background: var(--rossa-white);
  border: 0;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  border-radius: 0;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__quick-head h3 {
  margin: 0 0 2px;
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: .4px;
  text-transform: uppercase;
  color: var(--rossa-navy);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__quick-head h3 i { display: none; }
#contenido_admin .fact-booking-panel .fact-booking-panel__quick-head p {
  margin: 0 0 14px;
  font-size: 13px;
  color: var(--rossa-muted);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__quick-btns {
  gap: 10px;
  align-items: flex-start;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__quick-form,
#contenido_admin .fact-booking-panel .fact-booking-panel__quick-form--primary,
#contenido_admin .fact-booking-panel .fact-booking-panel__quick-form--secondary {
  flex: 0 0 auto;
  max-width: none;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__gen-btn {
  width: auto;
  min-height: 0;
  gap: 1px;
  padding: 8px 16px;
  border-radius: var(--rossa-radius);
  font-size: 13px;
  box-shadow: none;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__gen-btn-row {
  gap: 8px;
  font-size: 13px;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__gen-btn-row i { font-size: 14px; }
#contenido_admin .fact-booking-panel .fact-booking-panel__gen-btn-hint {
  font-size: 11px;
  line-height: 14px;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__gen-btn--final {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__gen-btn--final:hover {
  background: var(--rossa-petrol-dark);
  border-color: var(--rossa-petrol-dark);
  color: var(--rossa-white);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__gen-btn--draft {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__gen-btn--draft:hover {
  background: var(--rossa-white);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__wizard-links {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--rossa-hairline-soft);
  font-size: 13px;
  color: var(--rossa-muted);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__wizard-links a { color: var(--rossa-cyan-fig); }

/*----- 78.28 Panel de la reserva: tarjetas de estado, pastillas y formularios */
#contenido_admin .fact-booking-panel .fact-booking-panel__grid {
  gap: 28px 24px;
  margin: 0 0 24px;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__card {
  padding: 0;
  background: var(--rossa-white);
  border: 0;
  border-radius: 0;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__card h3,
#contenido_admin .fact-booking-panel .fact-booking-panel__section > h3,
#contenido_admin .fact-booking-panel .fact-booking-panel__section-header h3 {
  margin: 0 0 12px;
  padding: 0 0 8px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: .4px;
  text-transform: uppercase;
  color: var(--rossa-navy);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__card h3 i,
#contenido_admin .fact-booking-panel .fact-booking-panel__section > h3 i,
#contenido_admin .fact-booking-panel .fact-booking-panel__section-header h3 i { display: none; }
#contenido_admin .fact-booking-panel .fact-booking-panel__section-header {
  display: block;
  margin: 0;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__stat-row {
  align-items: center;
  padding: 9px 0;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  font-size: 14px;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__stat-label {
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__stat-value,
#contenido_admin .fact-booking-panel .fact-booking-panel__stat-value strong {
  font-size: 14px;
  line-height: 16px;
  font-weight: 400;
  color: var(--rossa-navy);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__badge {
  display: inline-flex;
  align-items: center;
  padding: 6px 12px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius-pill);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__badge--confirmed {
  background: rgba(25, 172, 138, .12);
  color: var(--rossa-green);
  border-color: rgba(25, 172, 138, .30);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__badge--draft,
#contenido_admin .fact-booking-panel .fact-badge.fact-badge-emission-draft,
#contenido_admin .fact-booking-panel .fact-badge.fact-badge-status-pending {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  border-color: rgba(234, 92, 54, .30);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__badge--none {
  background: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__form-row label {
  margin-bottom: 6px;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  font-weight: 500;
  color: var(--rossa-petrol);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__textarea {
  border: 1px solid var(--rossa-border);
  border-radius: 6px;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 13px;
  line-height: 1.5;
  color: var(--rossa-navy);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__textarea:focus {
  outline: none;
  border-color: var(--rossa-petrol);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}

/*----- 78.29 Panel de la reserva: avisos, incidencias y estado vacio */
#contenido_admin .fact-booking-panel .fact-booking-panel__notice {
  margin: 0 0 14px;
  padding: 10px 14px;
  border: 0;
  border-radius: var(--rossa-radius);
  font-size: 13px;
  line-height: 1.45;
}
#contenido_admin .fact-booking-panel .fact-booking-panel__notice--success {
  background: rgba(25, 172, 138, .12);
  color: var(--rossa-green-dark);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__notice--warning {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__notice a { color: var(--rossa-cyan-fig); }
#contenido_admin .fact-booking-panel .fact-booking-panel__issues {
  margin: 0 0 24px;
  padding: 12px 14px;
  background: var(--rossa-salmon);
  border: 0;
  border-radius: var(--rossa-radius);
  font-size: 13px;
  line-height: 1.5;
  color: var(--rossa-ink);
}
#contenido_admin .fact-booking-panel .fact-booking-panel__issues > strong { color: var(--rossa-coral); }
#contenido_admin .fact-booking-panel .fact-booking-panel__issues > strong i { display: none; }
#contenido_admin .fact-booking-panel .fact-booking-panel__issues a { color: var(--rossa-cyan-fig); }
#contenido_admin .fact-booking-panel .fact-booking-bills-empty {
  padding: 24px 12px;
  font-size: 13px;
  color: var(--rossa-muted);
}
#contenido_admin .fact-booking-panel .fact-booking-bills-empty i {
  margin: 0 0 8px;
  font-size: 24px;
  opacity: 1;
  color: var(--rossa-stroke);
}
#contenido_admin .fact-booking-panel .fact-booking-bills-empty p { margin: 0; }
/* Gemelo de la 77.13: la 32 (rossa.css:5599) esconde fa-inbox porque no tiene mascara. */
#contenido_admin .fact-booking-panel .fact-booking-bills-empty i.fa-inbox.fa-file-invoice { display: inline-block; }
#contenido_admin .fact-booking-panel .fact-bills-table--compact { margin-top: 4px; }

/*----- 78.30 Las variables del modulo apuntan a los tokens del PMS --------- */
:root {
  --wizard-primary:         var(--rossa-teal);
  --wizard-primary-light:   var(--rossa-tint);
  --wizard-secondary:       var(--rossa-green);
  --wizard-secondary-light: var(--rossa-tint);
  --wizard-success:         var(--rossa-green);
  --wizard-success-light:   rgba(25, 172, 138, .12);
  --wizard-danger:          var(--rossa-red);
  --wizard-danger-light:    var(--rossa-salmon);
  --wizard-warning:         var(--rossa-coral);
  --wizard-warning-light:   var(--rossa-salmon);
  --wizard-gray:            var(--rossa-muted);
  --wizard-gray-light:      var(--rossa-strip-soft);
  --wizard-light:           var(--rossa-border);
  --wizard-dark:            var(--rossa-navy);
  --wizard-white:           var(--rossa-white);
  --wizard-border:          var(--rossa-border);
  --wizard-muted:           var(--rossa-muted);
  --wizard-shadow:          none;
}

/*----- 78.31 Riel de pasos: misma pieza en el asistente y en la ficha (.wizard-progress + .fv-lifecycle); si la pieza de la ficha lo reescribe, borrar el duplicado -----*/
#contenido_admin .wizard-progress {
  margin: 0 0 22px;
  padding: 0 0 16px;
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin .wizard-progress::before { display: none; }

#contenido_admin .fv-lifecycle,
#contenido_admin .fv-lifecycle--complete,
#contenido_admin .fv-lifecycle--problem {
  --fv-lifecycle-node: 28px;
  margin: 0 0 22px;
  padding: 0 0 16px;
  border-radius: 0;
  background: var(--rossa-white);
  border-bottom: 1px solid var(--rossa-border);
}

#contenido_admin .step-number,
#contenido_admin .fv-lifecycle__node {
  box-sizing: border-box;
  border: 1px solid var(--rossa-stroke);
  background: var(--rossa-white);
  color: var(--rossa-stroke);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  box-shadow: none;
}
#contenido_admin .step-number { width: 28px; height: 28px; margin-bottom: 8px; }
#contenido_admin .fv-lifecycle__step--final .fv-lifecycle__node {
  width: 28px;
  height: 28px;
  border-width: 1px;
  box-shadow: none;
}

#contenido_admin .wizard-step.active .step-number,
#contenido_admin .fv-lifecycle__step--current .fv-lifecycle__node {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}
#contenido_admin .wizard-step.completed .step-number,
#contenido_admin .fv-lifecycle__step--done .fv-lifecycle__node {
  background: var(--rossa-white);
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
}
/* En px y no en em: el modulo deja `font-size: 0` en el paso cumplido. */
#contenido_admin .wizard-step.completed .step-number::after {
  content: "";
  display: block;
  width: 14px;
  height: 14px;
  background-color: var(--rossa-teal);
  -webkit-mask-image: url("https://cdn.rossa.app/icons/check.svg");
          mask-image: url("https://cdn.rossa.app/icons/check.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}

#contenido_admin .wizard-step:not(:last-child)::after {
  content: "";
  position: absolute;
  top: 14px;
  left: calc(50% + 19px);
  right: calc(-50% + 19px);
  height: 1px;
  background: var(--rossa-hairline-soft);
}

#contenido_admin .step-label,
#contenido_admin .fv-lifecycle__label {
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0;
  color: var(--rossa-muted);
}
#contenido_admin .wizard-step.active .step-label,
#contenido_admin .fv-lifecycle__step--current .fv-lifecycle__label { color: var(--rossa-teal); }
#contenido_admin .wizard-step.completed .step-label,
#contenido_admin .fv-lifecycle__step--done .fv-lifecycle__label { color: var(--rossa-petrol); }
#contenido_admin .fv-lifecycle__connector-line { height: 1px; background: var(--rossa-hairline-soft); }

/*----- 78.32 Lienzo del asistente: contenedor, paneles y titulos ----------- */
#contenido_admin .bill-wizard-container:not(.folio-editor-container) {
  max-width: none;
  margin: 0;
  padding: 0 0 24px;
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
#contenido_admin .wizard-content { min-height: 0; margin-bottom: 24px; }
#contenido_admin .wizard-panel h2 {
  margin: 0 0 4px;
  gap: 8px;
  font-family: var(--rossa-font);
  font-size: 16px;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin .wizard-panel h2 i {
  font-size: 15px;
  color: var(--rossa-teal);
}
#contenido_admin .wizard-description {
  margin: 0 0 18px;
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-muted);
}
#contenido_admin .wizard-section {
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
}
#contenido_admin .section-summary {
  width: 100%;
  box-sizing: border-box;
}
#contenido_admin .main-toolbar {
  margin-bottom: 12px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
}

/*----- 78.33 Campos: rotulos, cajas, desplegable y error ------------------- */
#contenido_admin .form-group label {
  margin-bottom: 6px;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0;
  color: var(--rossa-petrol);
}
#contenido_admin .price-field label {
  font-family: var(--rossa-font);
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
#contenido_admin .bill-wizard-container .wizard-input,
#contenido_admin .wizard-modal .wizard-input {
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  color: var(--rossa-navy);
}
#contenido_admin .bill-wizard-container .wizard-input:focus,
#contenido_admin .wizard-modal .wizard-input:focus {
  outline: none;
  border-color: var(--rossa-petrol);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}
#contenido_admin .bill-wizard-container .wizard-input::placeholder,
#contenido_admin .wizard-modal .wizard-input::placeholder {
  color: var(--rossa-stroke);
  opacity: 1;
}
#contenido_admin .bill-wizard-container .wizard-input:disabled,
#contenido_admin .wizard-modal .wizard-input:disabled {
  background: var(--rossa-surface);
  color: var(--rossa-muted);
}
#contenido_admin .bill-wizard-container select.wizard-input,
#contenido_admin .wizard-modal select.wizard-input {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  padding-right: 30px;
  background-image: url("https://cdn.rossa.app/icons/chevron-down.svg?bg");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 14px 14px;
}
#contenido_admin .bill-wizard-container textarea.wizard-input,
#contenido_admin .wizard-modal textarea.wizard-input { resize: vertical; }
/* La ficha marca sus campos validados con estas dos: se conservan con token. */
#contenido_admin .fcc-field.is-highlighted .wizard-input { border-color: var(--rossa-coral); }
#contenido_admin .fcc-field.is-valid .wizard-input { border-color: var(--rossa-green); }
#contenido_admin .form-error {
  margin-top: 6px;
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-red);
}
#contenido_admin .bill-wizard-container input[type="checkbox"],
#contenido_admin .bill-wizard-container input[type="radio"],
#contenido_admin .wizard-modal input[type="checkbox"] {
  width: 16px;
  height: 16px;
  accent-color: var(--rossa-teal);
}
#contenido_admin .checkbox-label,
#contenido_admin .radio-label {
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-ink);
}

/*----- 78.34 Botones del asistente y navegacion en la barra del pie -------- */
#contenido_admin .wizard-btn {
  box-sizing: border-box;
  min-height: 36px;
  gap: 8px;
  padding: 8px 16px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.25;
  text-decoration: none;
}
#contenido_admin .wizard-btn i[class*="fa-"] { font-size: 14px; }
#contenido_admin .wizard-btn-primary,
#contenido_admin .wizard-btn-success {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}
#contenido_admin .wizard-btn-primary:hover:not(:disabled),
#contenido_admin .wizard-btn-success:hover:not(:disabled) {
  background: var(--rossa-petrol-dark);
  border-color: var(--rossa-petrol-dark);
  color: var(--rossa-white);
}
#contenido_admin .wizard-btn-secondary,
#contenido_admin .wizard-btn:not(.wizard-btn-primary):not(.wizard-btn-secondary):not(.wizard-btn-success) {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
#contenido_admin .wizard-btn-secondary:hover:not(:disabled),
#contenido_admin .wizard-btn:not(.wizard-btn-primary):not(.wizard-btn-secondary):not(.wizard-btn-success):hover:not(:disabled) {
  background: var(--rossa-tint);
  border-color: var(--rossa-petrol);
  color: var(--rossa-petrol);
}
#contenido_admin .wizard-btn-sm {
  min-height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  border-radius: 6px;
}

#contenido_admin .wizard-navigation {
  position: fixed;
  left: 64px;
  right: 0;
  bottom: 0;
  z-index: 295;
  box-sizing: border-box;
  min-height: 58px;
  align-items: center;
  gap: 16px;
  padding: 12px 24px;
  background: var(--rossa-white);
  border-top: 1px solid var(--rossa-border);
  font-family: var(--rossa-font);
}
/* La barra vacia del pie sobra cuando el asistente trae la suya. */
body:has(.bill-wizard-container) #rossa-actionbar.rossa-actionbar--vacia { display: none; }

/*----- 78.35 Tarjetas de seleccion: perfil, cliente y reserva -------------- */
#contenido_admin .profile-preview {
  margin-top: 16px;
  padding: 16px 20px;
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background: var(--rossa-white);
}
#contenido_admin .profile-preview h4 {
  margin: 0 0 12px;
  font-family: var(--rossa-font);
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
#contenido_admin .detail-item { gap: 5px; }
#contenido_admin .detail-item strong {
  font-family: var(--rossa-font);
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
#contenido_admin .detail-item span {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 400;
  font-style: normal;
  color: var(--rossa-navy);
}

#contenido_admin .client-results {
  margin-top: 6px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  box-shadow: none;
}
#contenido_admin .client-item {
  padding: 10px 12px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  font-family: var(--rossa-font);
}
#contenido_admin .client-item:hover { background: var(--rossa-tint); }
#contenido_admin .client-item.selected {
  background: var(--rossa-tint);
  border-left: 3px solid var(--rossa-teal);
}
#contenido_admin .client-item-name {
  margin-bottom: 2px;
  font-size: 14px;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin .client-item-document {
  font-size: 13px;
  color: var(--rossa-tbl-muted);
}

#contenido_admin .booking-item {
  margin-bottom: 8px;
  padding: 12px 14px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
}
#contenido_admin .booking-item:hover {
  border-color: var(--rossa-petrol);
  background: var(--rossa-tint);
}
#contenido_admin .booking-id {
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-teal);
}
#contenido_admin .booking-amount {
  font-family: var(--rossa-font);
  font-variant-numeric: tabular-nums;
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-green);
}
#contenido_admin .booking-client {
  margin-bottom: 3px;
  font-size: 14px;
  font-weight: 400;
  color: var(--rossa-navy);
}
#contenido_admin .booking-dates {
  font-size: 13px;
  color: var(--rossa-tbl-muted);
}

/*----- 78.36 Lineas del folio: caja, fila, importes, acciones y pastillas -- */
#contenido_admin .items-container {
  max-height: none;
  border: 1px solid var(--rossa-border);
  border-style: solid;
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#contenido_admin .line-item,
#contenido_admin .payment-item {
  gap: 12px;
  padding: 12px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 13px;
}
#contenido_admin .line-item:hover,
#contenido_admin .payment-item:hover { background: var(--rossa-tbl-zebra); }
#contenido_admin .line-item.from-booking,
#contenido_admin .payment-item.from-booking { border-left: 3px solid var(--rossa-cyan); }
#contenido_admin .line-item.custom,
#contenido_admin .payment-item.custom { border-left: 3px solid var(--rossa-border); }
#contenido_admin .item-description {
  font-size: 13px;
  color: var(--rossa-petrol);
}
#contenido_admin .item-meta {
  margin-top: 4px;
  font-size: 12px;
  color: var(--rossa-tbl-muted);
}
#contenido_admin .line-text-editable {
  padding: 5px 8px;
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-petrol);
}
#contenido_admin .line-text-editable:hover { background: var(--rossa-tint); }
#contenido_admin .line-text-editable:focus {
  outline: none;
  border-color: var(--rossa-petrol);
  background: var(--rossa-white);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}
#contenido_admin .item-input,
#contenido_admin .item-input-price {
  box-sizing: border-box;
  padding: 5px 8px;
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-variant-numeric: tabular-nums;
  font-weight: 400;
  color: var(--rossa-navy);
}
/* Los dos !important empatan los de billWizard.css:737 y :739. */
#contenido_admin .item-input-price {
  width: 86px !important;
  font-size: 13px !important;
}
#contenido_admin .item-input { font-size: 13px; }
#contenido_admin .item-input:focus,
#contenido_admin .item-input-price:focus {
  outline: none;
  border-color: var(--rossa-petrol);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}
#contenido_admin .item-amount {
  font-family: var(--rossa-font);
  font-variant-numeric: tabular-nums;
  font-size: 13px;
  font-weight: 700;
  color: var(--rossa-navy);
}
#contenido_admin .item-amount.positive { color: var(--rossa-green); }
#contenido_admin .item-actions { gap: 4px; }
#contenido_admin .item-action-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 0;
  border-radius: var(--rossa-radius);
  background: transparent;
  color: var(--rossa-tbl-ico);
}
#contenido_admin .item-action-btn i[class*="fa-"] { font-size: 16px; }
#contenido_admin .item-action-btn:hover {
  background: rgba(32, 92, 104, .10);
  color: var(--rossa-petrol);
}
#contenido_admin .item-action-btn.delete:hover {
  background: var(--rossa-salmon);
  color: var(--rossa-red);
}
#contenido_admin .item-action-btn.delete i.fa-times::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/trash-2.svg");
          mask-image: url("https://cdn.rossa.app/icons/trash-2.svg");
}

#contenido_admin .folio-line-ref {
  gap: 4px;
  padding: 6px 12px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius-pill);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
}
#contenido_admin .folio-line-ref > i[class*="fa-"] {
  font-size: 12px;
  color: currentColor;
  opacity: 1;
}
#contenido_admin .folio-line-ref--reserva,
#contenido_admin a.folio-line-ref--reserva:hover {
  background: rgba(0, 94, 102, .09);
  color: var(--rossa-teal);
  border-color: rgba(0, 94, 102, .22);
  text-decoration: none;
}
#contenido_admin .folio-line-ref--linea {
  background: rgba(23, 121, 155, .12);
  color: var(--rossa-cyan);
  border-color: var(--rossa-border);
}
#contenido_admin .folio-line-ref--manual,
#contenido_admin .folio-line-ref--share {
  background: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}
#contenido_admin .line-ref-row { gap: 6px; margin-bottom: 8px; }

#contenido_admin .empty-state {
  gap: 6px;
  padding: 28px 16px;
  font-family: var(--rossa-font);
  color: var(--rossa-muted);
}
#contenido_admin .empty-state i {
  margin: 0 0 2px;
  font-size: 20px;
  opacity: 1;
  color: var(--rossa-muted);
}
#contenido_admin .empty-state p { margin: 0; font-size: 14px; }
#contenido_admin .empty-state .text-muted {
  font-size: 13px;
  opacity: 1;
  color: var(--rossa-tbl-muted);
}
/* §32 apaga i.fa-inbox (no hay inbox.svg): aqui es el unico icono del vacio. */
#contenido_admin .items-container .empty-state i.fa-inbox { display: block; }
#contenido_admin .items-container .empty-state i.fa-inbox::before {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  background-color: currentColor;
  -webkit-mask-image: url("https://cdn.rossa.app/icons/Folio.svg");
          mask-image: url("https://cdn.rossa.app/icons/Folio.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}

/*----- 78.37 Resumenes: pie de totales y tarjetas de confirmacion ---------- */
#contenido_admin .section-summary {
  max-width: 320px;
  margin: 16px 0 0 auto;
  padding-top: 0;
  border-top: 0;
}
#contenido_admin .section-summary .summary-row {
  padding: 7px 0;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  font-family: var(--rossa-font);
  font-size: 13px;
}
#contenido_admin .section-summary .summary-row span:first-child { color: var(--rossa-muted); }
#contenido_admin .section-summary .summary-row span:last-child {
  font-family: var(--rossa-font);
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin .section-summary .summary-row.total {
  margin: 0;
  padding: 12px 0 0;
  border-top: 1px solid var(--rossa-border);
  border-bottom: 0;
  border-radius: 0;
  background: none;
  font-size: 14px;
}
/* Los !important empatan el `color: white !important` de billWizard.css:654. */
#contenido_admin .section-summary .summary-row.total span {
  font-weight: 700;
  color: var(--rossa-navy) !important;
}
#contenido_admin .section-summary .summary-row.total span:last-child { color: var(--rossa-green) !important; }

#contenido_admin .final-summary { gap: 16px; }
#contenido_admin .summary-section {
  padding: 16px 20px;
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background: var(--rossa-white);
  overflow: visible;
}
#contenido_admin .summary-section::before { display: none; }
#contenido_admin .summary-section h3 {
  margin: 0 0 12px;
  gap: 8px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-navy);
}
#contenido_admin .summary-section h3 i {
  font-size: 14px;
  color: var(--rossa-teal);
}
#contenido_admin .summary-table tr { border-bottom: 1px solid var(--rossa-hairline-soft); }
#contenido_admin .summary-table td {
  padding: 8px 0;
  font-family: var(--rossa-font);
  font-size: 13px;
}
#contenido_admin .summary-table td:first-child {
  font-weight: 400;
  color: var(--rossa-muted);
}
#contenido_admin .summary-table td:last-child {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin .summary-table td em {
  font-style: normal;
  color: var(--rossa-tbl-muted);
}

/*----- 78.38 Cromo de las ventanas del asistente — el canon de §70 --------- */
#contenido_admin .wizard-modal { background: rgba(22, 41, 45, .42); }
#contenido_admin .wizard-modal .modal-content {
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  background: var(--rossa-white);
  box-shadow: 0 12px 40px rgba(20, 40, 60, .16);
}
#contenido_admin .wizard-modal .modal-header {
  box-sizing: border-box;
  min-height: 44px;
  padding: 10px 16px;
  background: var(--rossa-surface-2);
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin .wizard-modal .modal-header h3 {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 15px;
  line-height: 1.3;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin .wizard-modal .modal-close {
  width: 32px;
  height: 32px;
  border-radius: var(--rossa-radius);
  background: transparent;
  font-size: 16px;
  color: var(--rossa-muted);
}
#contenido_admin .wizard-modal .modal-close:hover {
  background: rgba(32, 92, 104, .10);
  color: var(--rossa-petrol);
}
#contenido_admin .wizard-modal .modal-body { padding: 20px 24px; }
#contenido_admin .wizard-modal .modal-footer {
  padding: 14px 24px;
  background: var(--rossa-strip-soft);
  border-top: 1px solid var(--rossa-border);
}
/* !important obligado: el gris #6c757d va en un style= de billWizard.php:189. */
#contenido_admin .wizard-modal .modal-body small {
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-muted) !important;
}

/*----- 78.39 Movil: la barra fija manda por encima del corte del modulo ---- */
@media (max-width: 768px) {
  #contenido_admin .wizard-navigation { flex-direction: row; gap: 10px; }
  #contenido_admin .wizard-navigation .wizard-btn { width: auto; }
  #contenido_admin .wizard-navigation #btn-prev { order: 0; margin-right: auto; }
  #contenido_admin .main-toolbar { flex-direction: row; flex-wrap: wrap; }
  #contenido_admin .wizard-step:not(:last-child)::after { display: none; }
}
@media (max-width: 700px) {
  #contenido_admin .wizard-navigation {
    left: 0;
    padding: 10px 12px;
    gap: 8px;
  }
  #contenido_admin .wizard-progress { gap: 12px; }
  #contenido_admin .step-label { font-size: 12px; }
  #contenido_admin .final-summary { grid-template-columns: minmax(0, 1fr); }
  #contenido_admin .item-prices { gap: 8px; }
  #contenido_admin .item-input-price { width: 76px !important; }
  #contenido_admin .line-item.custom {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin .line-item.custom .item-prices {
    width: 100%;
  }
  #contenido_admin .client-form {
    margin-bottom: 90px;
  }
}

/*===== 83. SALTO DE MES/AÑO EN LOS CALENDARIOS (.rossa-dpsalto) =====*/
/* El título del calendario abre esta rejilla; el JS vive en js/rossa/salto_calendario.js. */
/* La rejilla se coloca sobre el mes pulsado, y el inline no trae posicionamiento propio. */
.rossa-daterange__cal .ui-datepicker,
#ui-datepicker-div .ui-datepicker-group,
.rossa-daterange__cal .ui-datepicker-group { position: relative; }
/* Las flechas de mes van en absoluto sobre la cabecera: el titulo se apana para no meterse debajo. */
#ui-datepicker-div .ui-datepicker-title,
.rossa-daterange__cal .ui-datepicker-title { cursor: pointer; border-radius: 6px; padding: 0 8px; }
#ui-datepicker-div .ui-datepicker-title:hover,
.rossa-daterange__cal .ui-datepicker-title:hover { background: rgba(0, 108, 135, .10); }

.rossa-dpsalto {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  /* Mismas sangrías que el mes que tapa: 10px del grupo + 4px de la tabla. */
  padding: 0 14px 10px;
  /* El fondo es opaco desde el primer fotograma: lo que se anima es el contenido, no el panel, o se verían los días de debajo. */
  background: var(--rossa-white);
}
.rossa-dpsalto__cab,
.rossa-dpsalto__rejilla { animation: rossa-dpsalto-entra .16s ease-out; }
/* El tema de jQuery UI marca con `ui-state-hover` cualquier <button> del calendario: borde y negrita que descuadran la rejilla. */
.rossa-dpsalto .ui-state-hover,
.rossa-dpsalto .ui-state-focus,
.rossa-dpsalto .ui-state-active,
.rossa-dpsalto .ui-state-default {
  border: 0;
  background: none;
  font-weight: inherit;
  color: inherit;
}
.rossa-dpsalto.is-saliendo { animation: rossa-dpsalto-sale .12s ease-in forwards; }
@keyframes rossa-dpsalto-entra {
  from { opacity: 0; transform: scale(.96); }
  to   { opacity: 1; transform: scale(1); }
}
@keyframes rossa-dpsalto-sale {
  from { opacity: 1; transform: scale(1); }
  to   { opacity: 0; transform: scale(1.04); }
}
@media (prefers-reduced-motion: reduce) {
  .rossa-dpsalto__cab,
  .rossa-dpsalto__rejilla,
  .rossa-dpsalto.is-saliendo { animation: none; }
}

/* Sobre el desplegable simple no hay grupo: las sangrías son las del panel, no las de §83. */
#ui-datepicker-div > .rossa-dpsalto { padding: var(--rossa-dp-sangria); border-radius: inherit; }
#ui-datepicker-div > .rossa-dpsalto .rossa-dpsalto__cab { margin: 0; }
.rossa-dpsalto__cab {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  box-sizing: border-box;
  /* 20 del título más el aire de la cabecera: el filete cae justo donde el del calendario. */
  height: 34px;
  padding-bottom: 12px;
  margin: 0 -4px;
  border-bottom: 1px solid var(--rossa-stroke);
}
.rossa-dpsalto .rossa-dpsalto__tit {
  flex: 1 1 auto;
  min-width: 0;
  height: 20px;
  padding: 0 8px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  font-weight: 500;
  color: var(--rossa-petrol);
  white-space: nowrap;
  cursor: pointer;
}
.rossa-dpsalto .rossa-dpsalto__tit:hover:not(:disabled) { background: rgba(0, 108, 135, .10); }
.rossa-dpsalto .rossa-dpsalto__tit:disabled { cursor: default; }
/* `.ui-widget button` del tema (0,1,1) pisa el tamaño: la clase va dos veces para ganarle. */
.rossa-dpsalto .rossa-dpsalto__nav {
  flex: 0 0 14.2857%;
  height: 20px;
  padding: 0;
  border: 0;
  background-color: var(--rossa-stroke);
  cursor: pointer;
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: 16px 16px;    mask-size: 16px 16px;
}
.rossa-dpsalto .rossa-dpsalto__nav:hover:not(:disabled) { background-color: var(--rossa-petrol); }
.rossa-dpsalto .rossa-dpsalto__nav:disabled { opacity: .35; cursor: default; }
.rossa-dpsalto .rossa-dpsalto__nav--prev {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-left.svg");
          mask-image: url("https://cdn.rossa.app/icons/chevron-left.svg");
}
.rossa-dpsalto .rossa-dpsalto__nav--sig {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg");
          mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg");
}

.rossa-dpsalto__rejilla {
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  /* Reparto uniforme: el hueco que deja el mes tapado cambia de alto según la pantalla. */
  align-content: space-evenly;
  justify-items: stretch;
  gap: 6px 4px;
}
.rossa-dpsalto .rossa-dpsalto__op {
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 100%;
  height: 32px;
  padding: 0 2px;
  border: 0;
  border-radius: var(--rossa-radius);
  background: transparent;
  font-family: var(--rossa-font);
  font-size: 12px;
  line-height: 1;
  font-weight: 400;
  color: var(--rossa-petrol);
  white-space: nowrap;
  cursor: pointer;
  transition: background-color .12s ease, color .12s ease;
}
.rossa-dpsalto .rossa-dpsalto__op:hover:not(:disabled) { background: rgba(0, 108, 135, .10); }
.rossa-dpsalto .rossa-dpsalto__op.is-hoy { box-shadow: inset 0 0 0 1px var(--rossa-stroke); }
.rossa-dpsalto .rossa-dpsalto__op.is-vista {
  background: var(--rossa-db-400);
  color: var(--rossa-white);
  box-shadow: none;
}
.rossa-dpsalto .rossa-dpsalto__op:disabled { color: var(--rossa-stroke); cursor: default; }

/*===== 78. MODULO FACTURACION: EL RESTO DE LA FICHA =====*/

/*----- 78.40 Los dos sistemas de modal: velo, caja y entrada (canon §70) ----*/
.fact-modal-overlay,
.fact-custom-modal-overlay {
  background: rgba(22, 41, 45, .42);
  -webkit-backdrop-filter: none;
          backdrop-filter: none;
}
.fact-modal-overlay .fact-modal,
.fact-custom-modal .fact-custom-modal-content {
  box-sizing: border-box;
  max-width: 500px;
  width: calc(100% - 32px);
  margin: 0;
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  background: var(--rossa-white);
  box-shadow: 0 12px 40px rgba(20, 40, 60, .16);
  font-family: var(--rossa-font);
}
/* El transform va a un solo nombre de clase a proposito: si sube a dos, se come el estado `show` del modulo. */
.fact-modal,
.fact-custom-modal-content {
  transform: scale(.98);
  transition: transform .18s ease;
}
.fact-custom-modal.fact-custom-modal-hide .fact-custom-modal-content { transform: scale(.98); }

/*----- 78.41 factModal: cabecera de banda, como .comm-mhd (§70.2) ----------*/
.fact-modal-overlay .fact-modal-header {
  box-sizing: border-box;
  min-height: 44px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--rossa-border);
  border-radius: 10px 10px 0 0;
  background: var(--rossa-surface-2);
}
.fact-modal .fact-modal-title {
  gap: 8px;
  font-family: var(--rossa-font);
  font-size: 15px;
  line-height: 1.3;
  font-weight: 600;
  color: var(--rossa-navy);
}
.fact-modal .fact-modal-title i {
  font-size: 16px;
  color: var(--rossa-petrol);
}
/* La senal de tipo pasa del fondo al icono; en el error, tambien al titulo (§70.2). */
.fact-modal-header.success .fact-modal-title i { color: var(--rossa-green); }
.fact-modal-header.warning .fact-modal-title i { color: var(--rossa-coral); }
.fact-modal-header.error   .fact-modal-title i { color: var(--rossa-red); }
.fact-modal-header.error   .fact-modal-title   { color: var(--rossa-red); }
.fact-modal .fact-modal-close {
  width: 32px;
  height: 32px;
  border-radius: var(--rossa-radius);
  background: transparent;
  color: var(--rossa-muted);
  font-size: 16px;
}
.fact-modal .fact-modal-close:hover {
  background: rgba(32, 92, 104, .10);
  color: var(--rossa-petrol);
  transform: none;
}

/*----- 78.42 factModal: cuerpo y barra de pie (calco de .comm-mbd/.comm-mft) */
.fact-modal .fact-modal-body {
  padding: 20px 24px;
  color: var(--rossa-ink);
  font-size: 14px;
  line-height: 1.5;
}
.fact-modal .fact-modal-footer {
  padding: 14px 24px;
  gap: 10px;
  border-top: 1px solid var(--rossa-border);
  border-radius: 0 0 10px 10px;
  background: var(--rossa-strip-soft);
}

/*----- 78.43 factModal: botones al canon de la §3 ---------------------------*/
.fact-modal .fact-modal-btn {
  min-width: 0;
  padding: 9px 16px;
  gap: 8px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.25;
  box-shadow: none;
}
.fact-modal .fact-modal-btn:hover {
  transform: none;
  box-shadow: none;
}
.fact-modal .fact-modal-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .25);
}
.fact-modal .fact-modal-btn-primary,
.fact-modal .fact-modal-btn-success {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}
.fact-modal .fact-modal-btn-primary:hover,
.fact-modal .fact-modal-btn-success:hover {
  background: #00474d;
  border-color: #00474d;
}
.fact-modal .fact-modal-btn-danger {
  background: var(--rossa-salmon);
  border-color: var(--rossa-coral);
  color: var(--rossa-coral);
}
.fact-modal .fact-modal-btn-danger:hover {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
}
.fact-modal .fact-modal-btn-cancel,
.fact-modal .fact-modal-btn-secondary {
  background: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
}
.fact-modal .fact-modal-btn-cancel:hover,
.fact-modal .fact-modal-btn-secondary:hover {
  background: var(--rossa-surface);
  border-color: var(--rossa-stroke);
}

/*----- 78.44 factModals: sin titulo en el DOM, se alinea a la rama SweetAlert (§70.3) */
.fact-custom-modal .fact-custom-modal-header {
  padding: 24px 24px 0;
  border-bottom: 0;
}
.fact-custom-modal .fact-custom-modal-header i {
  font-size: 32px;
  line-height: 1;
  color: var(--rossa-petrol);
  animation: none;
}
.fact-custom-modal.fact-custom-modal-success .fact-custom-modal-header i { color: var(--rossa-green); }
.fact-custom-modal.fact-custom-modal-warning .fact-custom-modal-header i { color: var(--rossa-coral); }
.fact-custom-modal.fact-custom-modal-error   .fact-custom-modal-header i { color: var(--rossa-red); }
.fact-custom-modal .fact-custom-modal-prompt__title {
  font-family: var(--rossa-font);
  font-size: 15px;
  line-height: 1.3;
  font-weight: 600;
  color: var(--rossa-navy);
}
.fact-custom-modal .fact-custom-modal-body { padding: 16px 24px 0; }
.fact-custom-modal .fact-custom-modal-body p {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 1.5;
  font-weight: 500;
  color: var(--rossa-ink);
}
/* El rotulo de ayuda del prompt multilinea se rescata: la regla de arriba lo pisaria. */
.fact-custom-modal.fact-custom-modal-prompt--multiline .fact-custom-modal-body p {
  font-size: 13px;
  font-weight: 400;
  color: var(--rossa-muted);
}
.fact-custom-modal .fact-custom-modal-footer {
  padding: 20px 24px 24px;
  gap: 10px;
}

/*----- 78.45 factModals: botones al canon de la §3 -------------------------*/
.fact-custom-modal .fact-custom-btn {
  min-width: 0;
  padding: 9px 16px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.25;
  box-shadow: none;
}
.fact-custom-modal .fact-custom-btn:hover { box-shadow: none; }
.fact-custom-modal .fact-custom-btn:focus {
  outline: none;
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .25);
}
.fact-custom-modal .fact-custom-btn-primary {
  background-color: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}
.fact-custom-modal .fact-custom-btn-primary:hover {
  background-color: #00474d;
  border-color: #00474d;
}
.fact-custom-modal .fact-custom-btn-secondary {
  background-color: var(--rossa-white);
  border: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
}
.fact-custom-modal .fact-custom-btn-secondary:hover {
  background-color: var(--rossa-surface);
  border-color: var(--rossa-stroke);
}

/*----- 78.46 Campos de texto de los dos modales (§4 + §71.2) ---------------*/
.fact-modal .fact-modal-input,
.fact-custom-modal .fact-custom-input {
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  color: var(--rossa-navy);
}
.fact-modal .fact-modal-input:hover,
.fact-custom-modal .fact-custom-input:hover { border-color: var(--rossa-petrol); }
.fact-modal .fact-modal-input:focus,
.fact-custom-modal .fact-custom-input:focus {
  outline: none;
  border-color: var(--rossa-petrol);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}

/*----- 78.47 factModals: detalle tecnico y barra de desplazamiento ---------*/
.fact-custom-modal .fact-custom-modal-admin {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-surface-2);
}
.fact-custom-modal .fact-custom-modal-admin__summary {
  background: var(--rossa-strip);
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
}
.fact-custom-modal .fact-custom-modal-admin__summary i { color: var(--rossa-petrol); }
.fact-custom-modal .fact-custom-modal-admin__summary em { color: var(--rossa-muted); }
.fact-custom-modal .fact-custom-modal-admin__body {
  color: var(--rossa-muted);
  background: var(--rossa-white);
}
.fact-custom-modal .fact-custom-modal-content {
  scrollbar-width: thin;
  scrollbar-color: var(--rossa-border) transparent;
}
.fact-custom-modal .fact-custom-modal-content::-webkit-scrollbar-track { background: transparent; }
.fact-custom-modal .fact-custom-modal-content::-webkit-scrollbar-thumb { background: var(--rossa-border); }
.fact-custom-modal .fact-custom-modal-content::-webkit-scrollbar-thumb:hover { background: var(--rossa-stroke); }

/* Los !important repiten los ocho de factDashboard.css:6, que esconde el h1. */
#contenido_admin:has(> .rossa-fact-dashboard) > h1 {
  display: block !important;
  position: static !important;
  height: auto !important;
  overflow: visible !important;
  clip: auto !important;
  border: 0 !important;
  margin: 0 0 4px !important;
  padding: 0 !important;
}
#contenido_admin:has(> .rossa-fact-dashboard) { padding-top: 15px; }
#contenido_admin .rossa-fact-dashboard { padding-bottom: 24px; }
#contenido_admin .fd-dash { padding-bottom: 0; }
#contenido_admin .fd-dash__title { display: none; }
#contenido_admin .fd-dash__header {
  align-items: center;
  gap: 12px 18px;
  margin: 0 0 22px;
}
#contenido_admin .fd-dash__subtitle {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 16px;
  font-weight: 500;
  color: var(--rossa-petrol);
}

/*----- 78.51 Accesos rapidos: el secundario del PMS -----*/
#contenido_admin .fd-dash__actions { gap: 10px; }
#contenido_admin .fd-dash__actions .fd-btn {
  min-height: 36px;
  padding: 7px 14px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  color: var(--rossa-ink);
}
#contenido_admin .fd-dash__actions .fd-btn i[class*="fa-"] {
  font-size: 14px;
  color: var(--rossa-teal);
}
#contenido_admin .fd-dash__actions .fd-btn:hover,
#contenido_admin .fd-dash__actions .fd-btn:focus {
  border-color: var(--rossa-petrol);
  color: var(--rossa-petrol);
}
#contenido_admin .fd-dash__actions .fd-btn:hover i[class*="fa-"],
#contenido_admin .fd-dash__actions .fd-btn:focus i[class*="fa-"] { color: var(--rossa-petrol); }

/*----- 78.53 Paneles: la banda de seccion de Inicio -----*/
#contenido_admin .fd-panels,
#contenido_admin .fd-bottom,
#contenido_admin .fd-charts { gap: 24px; margin-bottom: 28px; }
#contenido_admin .fd-panel {
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: var(--rossa-white);
  box-shadow: none;
}
#contenido_admin .fd-panel__head {
  align-items: center;
  gap: 10px;
  margin: 0 0 14px;
  padding: 8px 4px;
  border-bottom: 1px solid var(--rossa-green-fig);
}
#contenido_admin .fd-panel .fd-panel__title {
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--rossa-green-fig);
}
#contenido_admin .fd-panel .fd-panel__title i[class*="fa-"] {
  font-size: 15px;
  color: var(--rossa-green-fig);
}
#contenido_admin .fd-panel--issues .fd-panel__title i[class*="fa-"] { color: var(--rossa-coral); }
#contenido_admin .fd-panel .fd-panel__link {
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 500;
  color: var(--rossa-cyan-fig);
}
#contenido_admin .fd-panel .fd-panel__meta {
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-muted);
}
#contenido_admin .fd-panel .fd-panel__more {
  margin: 10px 0 0;
  padding: 0 4px;
  text-align: left;
  font-size: 12px;
  color: var(--rossa-muted);
}
#contenido_admin .fd-today__col-head {
  align-items: center;
  margin: 0 0 4px;
  padding: 0 4px 8px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
}
#contenido_admin .fd-today__col-title {
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .4px;
  text-transform: uppercase;
  color: var(--rossa-navy);
}
#contenido_admin .fd-today__col-title i[class*="fa-"] {
  font-size: 13px;
  color: var(--rossa-tbl-ico);
}
#contenido_admin .fd-today__col-title--done i[class*="fa-"] { color: var(--rossa-green); }
#contenido_admin .fd-today--both,
#contenido_admin .fd-recent--both { gap: 0 24px; }
#contenido_admin .fd-today--both .fd-today__col + .fd-today__col,
#contenido_admin .fd-recent--both .fd-recent__col + .fd-recent__col {
  border-left: 1px solid var(--rossa-hairline-soft);
  padding-left: 24px;
}

/*----- 78.54 Listas compactas: filete y colores del listado -----*/
#contenido_admin .fd-list__item { border-bottom: 1px solid var(--rossa-hairline-soft); }
#contenido_admin .fd-list__link {
  gap: 12px;
  padding: 10px 4px;
  border-radius: 0;
  font-family: var(--rossa-font);
}
#contenido_admin .fd-list__link:hover { background: var(--rossa-tint); }
#contenido_admin .fd-list__id {
  min-width: 58px;
  font-size: var(--rossa-tbl-font);
  font-weight: 400;
  color: var(--rossa-cyan-fig);
}
#contenido_admin .fd-list__client {
  font-size: var(--rossa-tbl-font);
  font-weight: 400;
  color: var(--rossa-petrol);
}
#contenido_admin .fd-list__sub {
  font-size: 12px;
  font-weight: 400;
  color: var(--rossa-tbl-muted);
}
#contenido_admin .fd-list__amount {
  font-size: var(--rossa-tbl-font);
  font-weight: 700;
  color: var(--rossa-green);
}
#contenido_admin .fd-list__item--due .fd-list__sub,
#contenido_admin .fd-list__item--issue .fd-list__sub {
  color: var(--rossa-coral);
  font-weight: 600;
}

/*----- 78.55 Ultimos folios: la tabla del PMS, en paso corto -----*/
#contenido_admin .rossa-fact-dashboard { --rossa-tbl-row-h: 44px; }
#contenido_admin .fd-table-wrap { overflow-x: auto; overflow-y: visible; }
#contenido_admin table.fd-table.rossa-tbl { margin: 0; border: 0; border-radius: 0; }
#contenido_admin table.fd-table.rossa-tbl > tbody > tr:not(.cab) > td.fd-table__num {
  color: var(--rossa-green);
  font-weight: 700;
  white-space: nowrap;
}

/*----- 78.56 Pastillas del dia: la escala de 77.9 -----*/
#contenido_admin .fd-today__head-meta { gap: 8px; }
#contenido_admin .fd-today__chip {
  gap: 4px;
  padding: 6px 12px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius-pill);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
  text-transform: none;
}
#contenido_admin .fd-today__chip--pending {
  background: rgba(0, 94, 102, .09);
  color: var(--rossa-teal);
  border-color: rgba(0, 94, 102, .22);
}
#contenido_admin .fd-today__chip--done {
  background: rgba(25, 172, 138, .12);
  color: var(--rossa-green);
  border-color: rgba(25, 172, 138, .30);
}
#contenido_admin .fd-today__chip.is-empty {
  background: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
  font-weight: 700;
}

/*----- 78.57 Graficas de la semana: dos colores y una linea base -----*/
#contenido_admin .fd-chart__bars {
  gap: 0;
  height: 150px;
  padding-top: 22px;
}
#contenido_admin .fd-chart__day { padding: 0 5px; }
#contenido_admin .fd-chart__track { border-bottom: 1px solid var(--rossa-hairline-soft); }
#contenido_admin .fd-chart__bar { max-width: 26px; }
#contenido_admin .fd-chart__tip {
  top: -17px;
  font-family: var(--rossa-font);
  font-size: 11px;
  font-weight: 700;
}
#contenido_admin .fd-chart__bar--count { background: var(--rossa-petrol); }
#contenido_admin .fd-chart__bar--amount { background: var(--rossa-green); }
#contenido_admin .fd-chart--count .fd-chart__tip { color: var(--rossa-petrol); }
#contenido_admin .fd-chart--amount .fd-chart__tip { color: var(--rossa-green); }
#contenido_admin .fd-chart__label { margin-top: 10px; }
#contenido_admin .fd-chart__weekday {
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin .fd-chart__date {
  font-family: var(--rossa-font);
  font-size: 11px;
  color: var(--rossa-tbl-muted);
}

/*----- 78.58 Vacios y aviso de permisos -----*/
#contenido_admin .fd-empty {
  margin: 16px 0;
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-muted);
}
#contenido_admin .fd-empty--ok { color: var(--rossa-green); }
#contenido_admin .fd-empty--ok i[class*="fa-"] { color: var(--rossa-green); }
#contenido_admin .rossa-fact-dashboard .fact-error-message {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 12px 0 0;
  padding: 12px 14px;
  border: 1px solid rgba(234, 92, 54, .30);
  border-radius: var(--rossa-radius);
  background: var(--rossa-salmon);
  font-family: var(--rossa-font);
  font-size: 14px;
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-dashboard .fact-error-message i[class*="fa-"] {
  font-size: 16px;
  color: var(--rossa-coral);
}

/*----- 78.59 Movil: se repiten los cortes del modulo, que ahora pierden -----*/
@media (max-width: 1024px) {
  #contenido_admin .fd-today--both,
  #contenido_admin .fd-recent--both { gap: 16px; }
  #contenido_admin .fd-today--both .fd-today__col + .fd-today__col,
  #contenido_admin .fd-recent--both .fd-recent__col + .fd-recent__col {
    border-left: 0;
    padding-left: 0;
    border-top: 1px solid var(--rossa-hairline-soft);
    padding-top: 16px;
  }
}
@media (max-width: 720px) {
  #contenido_admin .fd-dash__header { align-items: flex-start; }
  #contenido_admin .fd-panel__head { align-items: flex-start; }
  #contenido_admin .fd-panels,
  #contenido_admin .fd-charts { gap: 16px; margin-bottom: 20px; }
  #contenido_admin .fd-chart__bars { height: 130px; }
}

/* El titulo ya no es una fila de la tabla (lo decide PHP): esto solo cubre restos de la fila-titulo dentro del tbody, nunca el thead. */
#contenido_admin > .rossa-profiles #perfiles_fact tbody > tr.cab:first-child { display: none; }
#contenido_admin > .rossa-profiles { margin-top: 8px; }

/* Titulo de seccion dentro de un pest de module_config: misma medida que .rossa-profile-config__title (§36). */
#contenido_admin .verifactu-log-title { margin: 0 0 14px; }
#contenido_admin .verifactu-log-title h2 {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 18px;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin .verifactu-log-title h2 i {
  font-size: 16px;
  color: var(--rossa-stroke);
  margin-right: 8px;
}
/* list.svg comprobado 200. El mapa global de fa-file-alt es Folio.svg (§32 l.5543) y ahi no es un folio, es un log: se repunta SOLO en este h2. */
#contenido_admin .verifactu-log-title h2 i.fa-file-alt::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/list.svg");
          mask-image: url("https://cdn.rossa.app/icons/list.svg");
}

/*----- 78.61 Pestanas de filtro: las mismas medidas que §77.3 -----*/
#contenido_admin .rossa-fact-issues .rossa-fact-issues-view,
#contenido_admin .rossa-fact-verifactu .vf-panel__filters,
#contenido_admin .verifactu-log-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 18px;
  margin: 0 0 14px;
  padding: 0;
  border: 0;
  border-bottom: 1px solid var(--rossa-border);
  border-radius: 0;
  background: none;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-view__btn,
#contenido_admin .rossa-fact-verifactu .vf-filter,
#contenido_admin .verifactu-log-filters .verifactu-filter-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 0;
  margin: 0 0 -1px;
  padding: 8px 0;
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  background: none;
  box-shadow: none;
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.25;
  color: var(--rossa-muted);
  text-decoration: none;
  cursor: pointer;
  transition: color .15s ease, border-color .15s ease;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-view__btn:hover,
#contenido_admin .rossa-fact-verifactu .vf-filter:hover,
#contenido_admin .verifactu-log-filters .verifactu-filter-btn:hover {
  border-color: transparent;
  background: none;
  color: var(--rossa-teal);
  text-decoration: none;
}
/* `:has(.active)` NO es adorno: pest/verifactuPanel.php:401 hace event.target.classList.add('active') y al pulsar el icono la clase cae en el <i>. */
#contenido_admin .rossa-fact-issues .rossa-fact-issues-view__btn.is-active,
#contenido_admin .rossa-fact-issues .rossa-fact-issues-view__btn.is-active:hover,
#contenido_admin .rossa-fact-verifactu .vf-filter.is-active,
#contenido_admin .rossa-fact-verifactu .vf-filter.is-active:hover,
#contenido_admin .verifactu-log-filters .verifactu-filter-btn.active,
#contenido_admin .verifactu-log-filters .verifactu-filter-btn.active:hover,
#contenido_admin .verifactu-log-filters .verifactu-filter-btn:has(.active),
#contenido_admin .verifactu-log-filters .verifactu-filter-btn:has(.active):hover {
  border-bottom-color: var(--rossa-teal);
  background: none;
  color: var(--rossa-teal);
  font-weight: 600;
}
#contenido_admin .rossa-fact-verifactu .vf-filter .vf-filter__count,
#contenido_admin .verifactu-log-filters .verifactu-filter-btn i {
  font-variant-numeric: tabular-nums;
  font-size: 12px;
  font-weight: 400;
  color: var(--rossa-stroke);
}
#contenido_admin .rossa-fact-verifactu .vf-filter.is-active .vf-filter__count,
#contenido_admin .verifactu-log-filters .verifactu-filter-btn.active i,
#contenido_admin .verifactu-log-filters .verifactu-filter-btn:has(.active) i { color: var(--rossa-teal); }

/* El contador de incidencias deja de ser una caja con borde: es un dato al lado de las pestanas. */
#contenido_admin .rossa-fact-issues .rossa-fact-issues-summary__chip {
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-summary__chip i,
#contenido_admin .rossa-fact-issues .rossa-fact-issues-summary__chip--pending i {
  font-size: 12px;
  opacity: 1;
  color: var(--rossa-coral);
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-toolbar {
  align-items: flex-end;
  margin-bottom: 14px;
}

/*----- 78.62 Estado vacio, uno solo -----*/
#contenido_admin .rossa-fact-issues .fact-issues-empty,
#contenido_admin .rossa-fact-verifactu .vf-panel__empty,
#contenido_admin .verifactu-log-empty {
  margin: 0;
  padding: 48px 20px;
  text-align: center;
  border: 0;
  border-radius: 0;
  background: var(--rossa-white);
  box-shadow: none;
}
#contenido_admin .rossa-fact-issues .fact-issues-empty__icon,
#contenido_admin .rossa-fact-issues .fact-issues-empty__icon i,
#contenido_admin .verifactu-log-empty i {
  margin: 0 0 12px;
  font-size: 32px;
  line-height: 1;
  color: var(--rossa-stroke);
  opacity: 1;
}
#contenido_admin .rossa-fact-issues .fact-issues-empty h3,
#contenido_admin .verifactu-log-empty h3 {
  margin: 0 0 6px;
  font-family: var(--rossa-font);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.35;
  color: var(--rossa-navy);
}
#contenido_admin .rossa-fact-issues .fact-issues-empty p,
#contenido_admin .rossa-fact-verifactu .vf-panel__empty p,
#contenido_admin .verifactu-log-empty p,
#contenido_admin .fx-exports .fx-profiles__empty {
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 13px;
  line-height: 1.5;
  color: var(--rossa-muted);
}
#contenido_admin .verifactu-log-empty code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 12px;
  color: var(--rossa-stroke);
  word-break: break-all;
}

/*----- 78.63 Pastillas: se extiende la escala de §77.9, no se inventa otra -----*/
#contenido_admin .rossa-fact-verifactu .vf-badge.vf-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin: 0;
  padding: 6px 12px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
  text-transform: none;
  box-shadow: none;
  white-space: nowrap;
}
/* Verde: los mismos tres valores de §77.9. */
#contenido_admin .rossa-fact-verifactu .vf-badge--correct.vf-badge--correct,
#contenido_admin .rossa-fact-verifactu .vf-badge--accepted_with_errors.vf-badge--accepted_with_errors,
#contenido_admin .rossa-fact-verifactu .vf-badge--bill-success.vf-badge--bill-success {
  background: rgba(25, 172, 138, .12);
  color: var(--rossa-green);
  border-color: rgba(25, 172, 138, .30);
}
/* Teal: en proceso, y la factura completa (F1) y el recibo (F3). */
#contenido_admin .rossa-fact-verifactu .vf-badge--pending.vf-badge--pending,
#contenido_admin .rossa-fact-verifactu .vf-badge--uncertain.vf-badge--uncertain,
#contenido_admin .rossa-fact-verifactu .vf-badge--bill-sent.vf-badge--bill-sent,
#contenido_admin .rossa-fact-verifactu .vf-badge--bill-pending.vf-badge--bill-pending,
#contenido_admin .rossa-fact-verifactu .vf-badge--tipo-f1.vf-badge--tipo-f1,
#contenido_admin .rossa-fact-verifactu .vf-badge--tipo-f3.vf-badge--tipo-f3 {
  background: rgba(0, 94, 102, .09);
  color: var(--rossa-teal);
  border-color: rgba(0, 94, 102, .22);
}
/* Salmon: rechazo, y la rectificativa (R1/R5), igual que fact-badge-type-rectificative en §77.9. */
#contenido_admin .rossa-fact-verifactu .vf-badge--incorrect.vf-badge--incorrect,
#contenido_admin .rossa-fact-verifactu .vf-badge--duplicate.vf-badge--duplicate,
#contenido_admin .rossa-fact-verifactu .vf-badge--not_registered.vf-badge--not_registered,
#contenido_admin .rossa-fact-verifactu .vf-badge--invoice_not_found.vf-badge--invoice_not_found,
#contenido_admin .rossa-fact-verifactu .vf-badge--bill-error.vf-badge--bill-error,
#contenido_admin .rossa-fact-verifactu .vf-badge--tipo-r1.vf-badge--tipo-r1,
#contenido_admin .rossa-fact-verifactu .vf-badge--tipo-r5.vf-badge--tipo-r5 {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  border-color: rgba(234, 92, 54, .30);
}
/* Neutro: la simplificada (F2) no es ni buena ni mala, es otro tipo de documento. */
#contenido_admin .rossa-fact-verifactu .vf-badge--tipo-f2.vf-badge--tipo-f2,
#contenido_admin .rossa-fact-verifactu .vf-badge--unknown.vf-badge--unknown {
  background: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}

/* Incidencias: §39 las dejo todas en gris outline y con eso la pantalla perdio la senal. El motivo de una incidencia ES un error. */
#contenido_admin .rossa-fact-issues .fact-badge.fact-badge {
  padding: 6px 12px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius-pill);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
  text-transform: none;
}
#contenido_admin .rossa-fact-issues .fact-badge-error-validation.fact-badge-error-validation,
#contenido_admin .rossa-fact-issues .fact-badge-error-client.fact-badge-error-client,
#contenido_admin .rossa-fact-issues .fact-badge-error-calculation.fact-badge-error-calculation,
#contenido_admin .rossa-fact-issues .fact-badge-error-duplicate.fact-badge-error-duplicate,
#contenido_admin .rossa-fact-issues .fact-badge-error-other.fact-badge-error-other {
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  border-color: rgba(234, 92, 54, .30);
}
#contenido_admin .rossa-fact-issues .fact-badge-emission-draft.fact-badge-emission-draft {
  background: var(--rossa-surface-2);
  color: var(--rossa-muted);
  border-color: var(--rossa-border);
}
#contenido_admin .rossa-fact-issues .fact-badge-emission-provisional.fact-badge-emission-provisional {
  background: rgba(0, 94, 102, .09);
  color: var(--rossa-teal);
  border-color: rgba(0, 94, 102, .22);
}

/* Se reescribe §36 con SU mismo selector: sus dos ids (2,2,3) ganarian a §65 (1,3,3), asi que anadir `rossa-tbl` al <table> no serviria de nada. */
#contenido_admin .rossa-profiles-table-wrap {
  border: 0;
  border-radius: 0;
  background: var(--rossa-white);
}
#contenido_admin .rossa-profiles #perfiles_fact.rossa-profiles-table {
  min-width: 0;
  background: var(--rossa-white);
}

/* Cabecera: el thead de §65 (navy, mayusculas, dos filetes). */
#contenido_admin .rossa-profiles #perfiles_fact tr.rossa-profiles-table__head td,
#contenido_admin .rossa-profiles #perfiles_fact tr.cab.rossa-profiles-table__head td {
  padding: 13px var(--rossa-tbl-pad-x);
  background: var(--rossa-white);
  color: var(--rossa-navy);
  font-family: var(--rossa-font);
  font-size: var(--rossa-tbl-font);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: .4px;
  text-transform: uppercase;
  text-align: center;
  vertical-align: middle;
  border: 0;
  border-top: 1px solid var(--rossa-hairline-soft) !important;
  border-bottom: 1px solid var(--rossa-hairline-soft) !important;
}
#contenido_admin .rossa-profiles #perfiles_fact tr.rossa-profiles-table__head td:first-child,
#contenido_admin .rossa-profiles #perfiles_fact tr.cab.rossa-profiles-table__head td:first-child { text-align: left; }

/* Cuerpo: alto fijo, zebra y el color de dato de §65. */
#contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab) td {
  height: var(--rossa-tbl-row-h);
  padding: 0 var(--rossa-tbl-pad-x);
  border: 0;
  background-color: transparent;
  color: var(--rossa-petrol);
  font-family: var(--rossa-font);
  font-size: var(--rossa-tbl-font);
  font-weight: 400;
  line-height: 1.5;
  vertical-align: middle;
}
#contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab) { background-color: var(--rossa-white); }
#contenido_admin .rossa-profiles #perfiles_fact tbody > tr:nth-child(even of :not(.cab):has(> td, > th)) { background-color: var(--rossa-tbl-zebra); }
#contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab) td:not(.rossa-profiles-table__name):not(.rossa-profiles-ops) {
  color: var(--rossa-tbl-muted);
  font-size: var(--rossa-tbl-font);
  text-align: center;
}
#contenido_admin .rossa-profiles #perfiles_fact .rossa-profiles-table__name {
  color: var(--rossa-petrol);
  font-weight: 400;
  text-align: left;
}
#contenido_admin .rossa-profiles #perfiles_fact tbody > tr:not(.cab):hover td { background-color: var(--rossa-tint); }
/* El perfil eliminado esta archivado, no roto: rotulo apagado en vez de salmon pleno. */
#contenido_admin .rossa-profiles #perfiles_fact tr.warni td {
  background: transparent !important;
  color: var(--rossa-muted);
  font-weight: 400;
  font-style: normal;
}
#contenido_admin .rossa-profiles #perfiles_fact tr.warni:hover td { background: var(--rossa-tint) !important; }
#contenido_admin .rossa-profiles #perfiles_fact tr.warni .rossa-profiles-table__name { color: var(--rossa-muted); }

/* Acciones de fila = iconos desnudos de 16px en --rossa-tbl-ico, el canon de §65. */
#contenido_admin .rossa-profiles #perfiles_fact td.rossa-profiles-ops {
  width: 1%;
  padding: 0 var(--rossa-tbl-pad-x);
  white-space: nowrap;
  vertical-align: middle;
}
#contenido_admin .rossa-profiles-ops__grid {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  width: auto;
  min-width: 0;
  max-width: none;
  margin: 0;
  padding: 0;
}
#contenido_admin .rossa-profiles-ops__form { display: contents; }
#contenido_admin .rossa-profiles-ops__btn,
#contenido_admin .rossa-profiles-ops .admin_boton,
#contenido_admin .rossa-profiles-ops button.admin_boton,
#contenido_admin .rossa-profiles-ops a.admin_boton.admin_boton--ghost,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="fromProfile"],
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="modpage="],
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="module=module_config"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  min-width: 0;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: var(--rossa-radius);
  background: transparent;
  background-color: transparent;
  box-shadow: none;
  font-size: 0;
  line-height: 1;
  color: var(--rossa-tbl-ico);
  cursor: pointer;
  text-decoration: none;
  transition: background-color .15s ease, color .15s ease;
}
#contenido_admin .rossa-profiles-ops__btn:hover,
#contenido_admin .rossa-profiles-ops .admin_boton:hover,
#contenido_admin .rossa-profiles-ops button.admin_boton:hover,
#contenido_admin .rossa-profiles-ops a.admin_boton.admin_boton--ghost:hover,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="fromProfile"]:hover,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="modpage="]:hover,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="module=module_config"]:hover {
  border: 0;
  background-color: rgba(32, 92, 104, .10);
  color: var(--rossa-petrol);
}
#contenido_admin .rossa-profiles-ops__btn:focus-visible,
#contenido_admin .rossa-profiles-ops .admin_boton:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .25);
}
#contenido_admin .rossa-profiles-ops__btn span,
#contenido_admin .rossa-profiles-ops .admin_boton span { display: none; }
#contenido_admin .rossa-profiles-ops__btn i,
#contenido_admin .rossa-profiles-ops .admin_boton i,
#contenido_admin .rossa-profiles-ops a.admin_boton.admin_boton--ghost:hover i,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="fromProfile"]:hover i,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="modpage="]:hover i,
#contenido_admin .rossa-profiles-ops a.admin_boton[href*="module=module_config"]:hover i {
  flex: 0 0 auto;
  width: 1em;
  height: 1em;
  margin: 0;
  font-size: 16px;
  line-height: 1;
  color: inherit;
  opacity: 1;
}
/* Eliminar en rojo y apartada, como en §65: no se pulsa por error. */
#contenido_admin .rossa-profiles-ops .admin_boton--danger,
#contenido_admin .rossa-profiles-ops__btn--delete {
  margin-left: 10px;
  border: 0;
  background-color: transparent;
  color: var(--rossa-red);
}
#contenido_admin .rossa-profiles-ops .admin_boton--danger:hover,
#contenido_admin .rossa-profiles-ops__btn--delete:hover {
  border: 0;
  background-color: var(--rossa-salmon);
  color: var(--rossa-red-dark);
}
#contenido_admin .rossa-profiles-ops .admin_boton:disabled,
#contenido_admin .rossa-profiles-ops .admin_boton[disabled] {
  background-color: transparent;
  color: var(--rossa-tbl-ico);
  opacity: .40;
  cursor: not-allowed;
}

/* Eliminar ya va en su columna: el margen que la apartaba dentro de acciones sobra. */
#contenido_admin .rossa-profiles #perfiles_fact td.rossa-profiles-del {
  text-align: center;
  padding-left: 22px;
  padding-right: 22px;
}
#contenido_admin .rossa-profiles-del .admin_boton--danger,
#contenido_admin .rossa-profiles-del .rossa-profiles-ops__btn--delete,
#contenido_admin .rossa-profiles-del .rossa-profiles-ops__btn--restore {
  margin-left: 0;
}
/* El 9.5rem de §36 se escribio cuando la ultima celda era la de acciones. */
#contenido_admin .rossa-profiles #perfiles_fact tr.cab > td:last-child {
  min-width: 0;
}
#contenido_admin .rossa-profiles #perfiles_fact tr.cab > td:last-child i[class*="fa-"] {
  font-size: 16px;
}
#contenido_admin .rossa-profiles #perfiles_fact td.rossa-profiles-del .rossa-profiles-ops__btn--delete {
  color: var(--rossa-red);
}
#contenido_admin .rossa-profiles #perfiles_fact td.rossa-profiles-del .rossa-profiles-ops__btn--delete:disabled {
  color: var(--rossa-tbl-ico);
}

/* Barra inferior: el alta es el primario del PMS y el resto secundarios; sin filete que la separe de la tabla. */
#contenido_admin .rossa-profiles-toolbar {
  gap: 10px;
  margin-top: 16px;
  padding-top: 0;
  border-top: 0;
}
#contenido_admin .rossa-profiles-toolbar__form--toggle .admin_boton { color: var(--rossa-ink); }

/*----- 78.65 Formulario de perfil: tarjeta plana, campos de §71 -----*/
#contenido_admin .rossa-profile-config {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: var(--rossa-white);
  box-shadow: none;
}
#contenido_admin .rossa-profile-config__title {
  margin: 0 0 18px;
  padding: 0 0 12px;
  border-bottom: 1px solid var(--rossa-border);
  font-family: var(--rossa-font);
  font-size: 23px;
  font-weight: 600;
  line-height: 1.3;
  color: var(--rossa-navy);
}
/* Rotulo de seccion = la etiqueta de la tarjeta estandar (§65.2 .rossa-datacard__label). */
#contenido_admin .rossa-profile-config__section-title {
  margin: 0 0 12px;
  font-family: var(--rossa-font);
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
#contenido_admin .rossa-profile-config__section + .rossa-profile-config__section {
  margin-top: 10px;
  padding-top: 22px;
  border-top: 1px solid var(--rossa-hairline-soft);
}
/* Etiqueta de campo = §71.1 .rossa-field__label, no 13px/700 ink. */
#contenido_admin .rossa-profile-config .form-group label,
#contenido_admin .rossa-profile-config__cell > label,
#contenido_admin .rossa-profile-config__field--geo .rossa-profile-config__cell > label {
  margin-bottom: 6px;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  font-weight: 500;
  color: var(--rossa-petrol);
}
#contenido_admin .rossa-profile-config__hint {
  font-size: 12px;
  line-height: 1.45;
  color: var(--rossa-muted);
}
/* Mismo trazo, radio, tipografia y foco que §71.2: el campo de texto y el de fecha del formulario dejan de ser dos campos distintos. */
#contenido_admin .rossa-profile-config .form-group .campo_texto,
#contenido_admin .rossa-profile-config .form-group select.campo_texto,
#contenido_admin .rossa-profile-config .form-group input[type="text"],
#contenido_admin .rossa-profile-config .form-group input[type="number"],
#contenido_admin .rossa-profile-config .form-group input[type="email"],
#contenido_admin .rossa-profile-config .form-group input[type="password"],
#contenido_admin .rossa-profile-config .form-group input[type="date"],
#contenido_admin .rossa-profile-config .form-group input[type="datepicker"],
#contenido_admin .rossa-profile-config .form-group select,
#contenido_admin .rossa-profile-config .form-group textarea {
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background-color: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  color: var(--rossa-navy);
}
#contenido_admin .rossa-profile-config .form-group input:focus,
#contenido_admin .rossa-profile-config .form-group select:focus,
#contenido_admin .rossa-profile-config .form-group textarea:focus,
#contenido_admin .rossa-profile-config .form-group .campo_texto:focus {
  outline: none;
  border-color: var(--rossa-petrol);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}
#contenido_admin .rossa-profile-config .form-group:has(> input[type="checkbox"]) {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
#contenido_admin .rossa-profile-config .form-group:has(> input[type="checkbox"]) label {
  margin: 0;
  font-weight: 500;
  color: var(--rossa-navy);
}
#contenido_admin .rossa-profile-config__field--nomenclatura {
  padding: 16px;
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background: var(--rossa-white);
}
#contenido_admin .rossa-profile-config__nomenclatura-compose,
#contenido_admin .rossa-profile-config__next-serial-field {
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background: var(--rossa-white);
}
#contenido_admin .rossa-profile-config__next-serial {
  border-top: 1px solid var(--rossa-hairline-soft);
}
#contenido_admin .rossa-profile-config__next-serial-title {
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
#contenido_admin .rossa-profile-config__actions {
  margin-top: 24px;
  padding-top: 18px;
  border-top: 1px solid var(--rossa-border);
}

/*----- 78.66 Exportaciones: se reescriben las variables locales de la hoja (el truco de §70.3 con --swal2-*) -----*/
#contenido_admin .fx-exports {
  --fx-teal: var(--rossa-petrol);
  --fx-ink: var(--rossa-navy);
  --fx-muted: var(--rossa-muted);
  --fx-border: var(--rossa-stroke);
  --fx-cyan: var(--rossa-cyan-fig);
  --fx-radius: 6px;
  --fx-font: var(--rossa-font);
  padding: 6px 0 24px;
}
/* Separa visualmente cada plantilla: filas altas de varios widgets, pegadas se leen como una sola. */
#contenido_admin .fx-exports table.rossa-tbl.rossa-tbl {
  border-collapse: separate;
  border-spacing: 0 10px;
}
/* Titulo de plantilla: 14px/700 navy, como .rossa-datacard__title. */
#contenido_admin .fx-exports .fx-row__title {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  color: var(--rossa-navy);
}
#contenido_admin .fx-exports .fx-row__desc {
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 1.45;
  color: var(--rossa-muted);
}
/* Etiqueta de campo: 10px/600 mayusculas --rossa-stroke, como .rossa-datacard__label. */
#contenido_admin .fx-exports .fx-field label,
#contenido_admin .fx-exports .fx-profiles__head strong {
  font-family: var(--rossa-font);
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
#contenido_admin .fx-exports .fx-profiles__hint {
  font-size: 12px;
  font-weight: 400;
  color: var(--rossa-muted);
}
/* El <select>, el buscador y las dos fechas de la fila: un solo campo. Borde y radio ya vienen de --fx-border/--fx-radius. */
#contenido_admin .fx-exports .fx-control {
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 20px;
  color: var(--rossa-navy);
  background-color: var(--rossa-white);
}
#contenido_admin .fx-exports .fx-control:focus {
  outline: none;
  border-color: var(--rossa-petrol);
  box-shadow: 0 0 0 3px rgba(32, 92, 104, .12);
}
#contenido_admin .fx-exports .fx-chip-btn {
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-ink);
}
#contenido_admin .fx-exports .fx-chip-btn:hover {
  border-color: #c7cfcf;
  background: var(--rossa-surface);
  color: var(--rossa-ink);
}
/* Pastilla de perfil: la escala de §77.9, y seleccionada con el tinte teal en vez de relleno pleno. */
#contenido_admin .fx-exports .fx-profile-item {
  padding: 6px 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  color: var(--rossa-muted);
}
#contenido_admin .fx-exports .fx-profile-item:hover {
  border-color: rgba(0, 94, 102, .22);
  color: var(--rossa-petrol);
}
#contenido_admin .fx-exports .fx-profile-item:has(.fx-profile-cb:checked) {
  background: rgba(0, 94, 102, .09);
  border-color: rgba(0, 94, 102, .22);
  color: var(--rossa-teal);
}
#contenido_admin .fx-exports .fx-profile-list::-webkit-scrollbar-thumb { background: var(--rossa-stroke); }
/* Replica la maquetacion de archivos_xls: table.rossa-tbl + columna de filtros ancha. */
#contenido_admin .fx-exports table.rossa-tbl .fx-filters-col { width: 48%; min-width: 360px; }
#contenido_admin .fx-exports table.rossa-tbl td.fx-filters-cell { text-align: left; vertical-align: top; }

/*----- 78.67 Incidencias y panel SAT: §65 les centra y recorta la celda larga -----*/
#contenido_admin .rossa-fact-issues .rossa-fact-issues-list,
#contenido_admin .rossa-fact-verifactu .vf-panel__table-wrap {
  border: 0;
  border-radius: 0;
  background: var(--rossa-white);
  box-shadow: none;
  overflow: visible;
}
#contenido_admin .rossa-fact-issues .rossa-fact-issues-list__scroll,
#contenido_admin .rossa-fact-verifactu .vf-panel__table-wrap {
  overflow-x: auto;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
}
#contenido_admin .rossa-fact-issues .fact-issues-table.rossa-fact-issues-table { min-width: 0; }
#contenido_admin .rossa-fact-verifactu .vf-table.rossa-tbl { min-width: 0; }
@media (max-width: 700px) {
  #contenido_admin .rossa-fact-issues .rossa-fact-issues-list {
    margin-bottom: 90px;
  }
}

/* Cabecera: el register de §65. Los !important empatan los de §39 rossa.css:10406, que si los usa. */
#contenido_admin .rossa-fact-issues table.rossa-tbl.rossa-tbl > thead > tr > th,
#contenido_admin .rossa-fact-verifactu table.rossa-tbl.rossa-tbl > thead > tr > th {
  padding: 13px var(--rossa-tbl-pad-x) !important;
  background: var(--rossa-white) !important;
  color: var(--rossa-navy);
  font-family: var(--rossa-font);
  font-size: var(--rossa-tbl-font);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: .4px;
  text-transform: uppercase;
  text-align: center;
  vertical-align: middle;
  border: 0;
  border-top: 1px solid var(--rossa-hairline-soft) !important;
  border-bottom: 1px solid var(--rossa-hairline-soft) !important;
}
#contenido_admin .rossa-fact-issues table.rossa-tbl.rossa-tbl > thead > tr > th.rossa-tbl-th--izq,
#contenido_admin .rossa-fact-verifactu table.rossa-tbl.rossa-tbl > thead > tr > th.rossa-tbl-th--izq { text-align: left; }

/* §65 fija 78px de alto y `vertical-align: middle`: aqui la celda es un parrafo, un motivo y un boton. */
#contenido_admin .rossa-fact-issues table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td,
#contenido_admin .rossa-fact-verifactu table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td {
  height: auto;
  min-height: 0;
  padding: 14px var(--rossa-tbl-pad-x);
  line-height: 1.45;
  vertical-align: top;
}
#contenido_admin .rossa-fact-issues table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.fact-issue-message,
#contenido_admin .rossa-fact-issues table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.fact-issue-client,
#contenido_admin .rossa-fact-issues table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.rossa-tbl-td--izq,
#contenido_admin .rossa-fact-verifactu table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.rossa-tbl-td--izq {
  text-align: left;
}
#contenido_admin .rossa-fact-issues .fact-issue-message {
  max-width: 420px;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
  color: var(--rossa-petrol);
}
#contenido_admin .rossa-fact-verifactu .vf-error {
  display: inline-block;
  max-width: 360px;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}
/* La reserva es un enlace de celda, no una pastilla: el canon de §65.4 y de §77.7. */
#contenido_admin .rossa-fact-issues .fact-booking-badge {
  padding: 0;
  margin: 0;
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
  transform: none;
  font-size: var(--rossa-tbl-font);
  font-weight: 400;
  color: var(--rossa-cyan-fig);
}
#contenido_admin .rossa-fact-issues .fact-booking-badge:hover {
  background: none;
  border-color: transparent;
  color: var(--rossa-cyan-fig);
  text-decoration: underline;
}

#contenido_admin .rossa-fact-verifactu .vf-cancel-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 30px;
  padding: 0 12px;
  border: 1px solid rgba(234, 92, 54, .30);
  border-radius: var(--rossa-radius);
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  box-shadow: none;
  white-space: nowrap;
  cursor: pointer;
}
#contenido_admin .rossa-fact-verifactu .vf-cancel-btn:hover { background: #fbe0d8; }

/*----- 78.68 Log del cron (pest/verifactuPanel.php, <style> en linea l.73-299) -----*/
#contenido_admin .verifactu-log-container {
  margin: 8px 0 0;
  font-family: var(--rossa-font);
  color: var(--rossa-ink);
}
#contenido_admin .verifactu-log-header {
  margin: 0 0 18px;
  padding: 0 0 16px;
  border-radius: 0;
  border-bottom: 1px solid var(--rossa-border);
  background: var(--rossa-white);
  box-shadow: none;
}
#contenido_admin .verifactu-log-actions { gap: 10px; }
/* Los tres botones pastilla se vuelven la botonera de §3: primario teal, secundarios blancos con borde. */
#contenido_admin .verifactu-log-actions .verifactu-btn {
  min-height: 36px;
  padding: 9px 16px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  color: var(--rossa-ink);
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.25;
  box-shadow: none;
  transform: none;
  transition: background-color .15s ease, border-color .15s ease;
}
#contenido_admin .verifactu-log-actions .verifactu-btn:hover {
  background: var(--rossa-surface);
  border-color: #c7cfcf;
  color: var(--rossa-ink);
  transform: none;
  box-shadow: none;
}
#contenido_admin .verifactu-log-actions .verifactu-btn i { font-size: 15px; color: var(--rossa-stroke); }
#contenido_admin .verifactu-log-actions .verifactu-btn-secondary,
#contenido_admin .verifactu-log-actions .verifactu-btn-secondary:hover {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}
#contenido_admin .verifactu-log-actions .verifactu-btn-secondary:hover {
  background: #00474d;
  border-color: #00474d;
}
#contenido_admin .verifactu-log-actions .verifactu-btn-secondary i { color: currentColor; }
/* "Crear Tablas" toca el esquema: destructivo, no verde de exito. */
#contenido_admin .verifactu-log-actions .verifactu-btn-success,
#contenido_admin .verifactu-log-actions .verifactu-btn-primary {
  background: var(--rossa-white);
  border-color: var(--rossa-border);
  color: var(--rossa-ink);
}
#contenido_admin .verifactu-log-actions .verifactu-btn-success {
  border-color: rgba(234, 92, 54, .30);
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
}
#contenido_admin .verifactu-log-actions .verifactu-btn-success:hover {
  background: #fbe0d8;
  border-color: rgba(234, 92, 54, .30);
  color: var(--rossa-coral);
}
#contenido_admin .verifactu-log-actions .verifactu-btn-success i { color: currentColor; }
#contenido_admin .verifactu-log-info {
  gap: 18px;
  font-family: var(--rossa-font);
  font-size: 12px;
  color: var(--rossa-muted);
}
#contenido_admin .verifactu-log-info i { font-size: 12px; color: var(--rossa-stroke); }
/* Las tarjetas de contador estan comentadas en el PHP (l.337-357); se dejan alineadas por si vuelven. */
#contenido_admin .verifactu-log-stats { gap: 12px; margin-bottom: 16px; }
#contenido_admin .verifactu-stat-card {
  padding: 12px 14px;
  border: 0;
  border-left: 0;
  border-radius: 0;
  background: var(--rossa-tint);
  box-shadow: none;
}
#contenido_admin .verifactu-stat-label {
  margin-bottom: 4px;
  font-family: var(--rossa-font);
  font-size: 10px;
  line-height: 12px;
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
#contenido_admin .verifactu-stat-value {
  font-family: var(--rossa-font);
  font-size: 22px;
  font-weight: 700;
  line-height: 1.1;
  color: var(--rossa-navy);
}
#contenido_admin .verifactu-stat-card.info .verifactu-stat-value    { color: var(--rossa-cyan); }
#contenido_admin .verifactu-stat-card.debug .verifactu-stat-value   { color: var(--rossa-muted); }
#contenido_admin .verifactu-stat-card.error .verifactu-stat-value   { color: var(--rossa-coral); }
#contenido_admin .verifactu-stat-card.total .verifactu-stat-value   { color: var(--rossa-navy); }
/* La consola pasa a clara: no hay token oscuro y no hay ninguna otra caja negra en el PMS. */
#contenido_admin .verifactu-log-box {
  padding: 14px 16px;
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  background: var(--rossa-white);
  box-shadow: none;
  max-height: 600px;
}
#contenido_admin .verifactu-log-content {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 13px;
  line-height: 1.6;
  color: var(--rossa-ink);
}
#contenido_admin .verifactu-log-box::-webkit-scrollbar { width: 10px; height: 10px; }
#contenido_admin .verifactu-log-box::-webkit-scrollbar-track { background: var(--rossa-surface-2); border-radius: 0; }
#contenido_admin .verifactu-log-box::-webkit-scrollbar-thumb { background: var(--rossa-stroke); border-radius: 0; }
#contenido_admin .verifactu-log-box::-webkit-scrollbar-thumb:hover { background: var(--rossa-petrol); }
#contenido_admin .verifactu-log-box { scrollbar-color: var(--rossa-stroke) var(--rossa-surface-2); }

/*=============================================================================
  79. MODULO FACTURACION: colocacion (pie de acciones, fichas fusionadas, filtros)
=============================================================================*/

/*----- 79.1 Ficha de folio: riel + resumen en una sola tarjeta plana --------*/
#contenido_admin .fv-summary.rossa-datacard {
  overflow: visible;
  gap: 0;
  margin: 0 0 18px;
  padding: 14px 16px 0;
  border: 1px solid var(--rossa-stroke);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#contenido_admin .fv-summary .fv-lifecycle,
#contenido_admin .fv-summary .fv-lifecycle--complete,
#contenido_admin .fv-summary .fv-lifecycle--problem {
  margin: 0;
  padding: 0 0 14px;
  border-bottom: 1px solid var(--rossa-hairline-soft);
}
#contenido_admin .fv-summary .fv-hero {
  margin: 0;
  padding: 14px 0 0;
  border: 0;
  border-radius: 0;
  background: none;
}
#contenido_admin .fv-summary .fv-hero__quick { padding-bottom: 14px; }

/*----- 79.2 Ficha de folio: botonera en el pie y su menu Acciones en movil --*/
#rossa-actionbar .fv-detail__actions {
  flex: 0 1 auto;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  justify-content: center;
}
#rossa-actionbar:has(.fv-detail__actions) { justify-content: center; }
#rossa-actionbar .fv-actions-toolbar {
  flex: 0 1 auto;
  justify-content: center;
}
#rossa-actionbar .fv-btn-combo { gap: 8px; }
#contenido_admin #rossa-actionbar .fv-detail__actions .fv-btn {
  min-width: 0;
}
#contenido_admin #rossa-actionbar .fv-detail__actions,
#contenido_admin #rossa-actionbar .fv-actions-toolbar {
  flex-wrap: nowrap !important;
}
@media (max-width: 768px) {
  #rossa-actionbar .fv-actions-more__panel {
    position: fixed !important;
    top: auto;
    bottom: 76px;
    left: 12px;
    right: 12px;
    width: auto;
    min-width: 0;
    max-width: none;
  }

  #contenido_admin #rossa-actionbar .fv-detail__actions {
    flex-wrap: nowrap !important;
  }
  #rossa-actionbar .fv-detail__actions > .fv-actions__back {
    flex: 0 0 calc(50% - 4px) !important;
    min-width: 0 !important;
  }
  #rossa-actionbar .fv-actions-toolbar {
    flex: 0 0 calc(50% - 4px) !important;
    min-width: 0 !important;
  }
  #rossa-actionbar .fv-actions-toolbar:has(.fv-actions-more__combo) .fv-actions-group--primary {
    display: none !important;
  }
  #rossa-actionbar .fv-actions-toolbar .fv-actions-more {
    flex: 1 1 auto !important;
    width: 100% !important;
    margin-left: 0 !important;
  }
  #rossa-actionbar .fv-actions-more__toggle {
    width: 100% !important;
    min-width: 0 !important;
    justify-content: center;
  }
  #rossa-actionbar .fv-actions__back .fv-btn__label,
  #rossa-actionbar .fv-actions-more__toggle .fv-btn__label {
    display: none;
  }
  #rossa-actionbar .fv-actions__back > i[class*="fa-"],
  #rossa-actionbar .fv-actions-more__toggle > i[class*="fa-"] {
    display: inline-block !important;
  }
  #rossa-actionbar .fv-btn-combo .fv-btn--preview .fv-btn__label,
  #rossa-actionbar .fv-btn-combo .fv-btn--primary .fv-btn__label,
  #rossa-actionbar .fv-btn:has(> .fa-rossa-draft) .fv-btn__label {
    display: none;
  }
  #rossa-actionbar .fv-btn-combo .fv-btn--preview > i[class*="fa-"],
  #rossa-actionbar .fv-btn-combo .fv-btn--primary > i[class*="fa-"],
  #rossa-actionbar .fa-rossa-draft {
    display: inline-block !important;
  }
  #rossa-actionbar .fv-btn-combo .fv-btn--preview,
  #rossa-actionbar .fv-btn-combo .fv-btn--primary {
    flex: 1 1 0;
    min-width: 0 !important;
  }
  #rossa-actionbar .fv-btn:has(> .fa-edit) .fv-btn__label,
  #rossa-actionbar .fv-btn:has(> .fa-object-group) .fv-btn__label,
  #rossa-actionbar .fv-btn:has(> .rossa-icon-unlink-2) .fv-btn__label,
  #rossa-actionbar .fv-btn:has(> .fa-file-invoice-dollar) .fv-btn__label,
  #rossa-actionbar .fv-btn:has(> .fa-link) .fv-btn__label,
  #rossa-actionbar #btn-anulate-folio .fv-btn__label {
    display: none;
  }
  #rossa-actionbar .fa-edit,
  #rossa-actionbar .fa-object-group,
  #rossa-actionbar .rossa-icon-unlink-2,
  #rossa-actionbar .fa-file-invoice-dollar,
  #rossa-actionbar .fa-link,
  #rossa-actionbar #btn-anulate-folio > i {
    display: inline-block !important;
  }
  #rossa-actionbar .fv-btn:has(> .fa-edit),
  #rossa-actionbar .fv-btn:has(> .fa-object-group),
  #rossa-actionbar .fv-btn:has(> .rossa-icon-unlink-2),
  #rossa-actionbar .fv-btn:has(> .fa-file-invoice-dollar),
  #rossa-actionbar .fv-btn:has(> .fa-link) {
    min-width: 0 !important;
  }
  #rossa-actionbar .fv-actions-more__panel {
    flex-direction: row;
    flex-wrap: wrap;
  }
  #rossa-actionbar .fv-actions-more__panel > .fv-actions-more__combo,
  #rossa-actionbar .fv-actions-more__panel > .fv-actions-more__sep {
    flex: 1 1 100%;
  }
  #rossa-actionbar .fv-actions-more__panel > .fv-actions-more__combo {
    margin-bottom: 0;
  }
  #rossa-actionbar .fv-actions-more__panel .fv-btn-combo {
    gap: 6px;
  }
  #rossa-actionbar .fv-actions-more__panel > .fv-btn {
    flex: 1 1 calc(50% - 3px);
    min-width: 0 !important;
  }
  #rossa-actionbar .fv-actions-more__panel > .fv-btn:nth-last-child(1 of .fv-btn):nth-child(odd of .fv-btn) {
    flex: 1 1 100%;
  }
  #contenido_admin .fv-panel--comments,
  #contenido_admin .fv-detail__history-foot {
    margin-bottom: 90px;
  }
  #contenido_admin .fv-detail:has(> .fv-detail__history-foot) .fv-panel--comments {
    margin-bottom: 0;
  }
}

#contenido_admin .fv-detail__aside > .fv-panel--comments,
#contenido_admin .fv-comments-body,
#contenido_admin .fv-comments-view {
  flex: 0 0 auto;
  min-height: 0;
  height: auto;
  overflow: visible;
}
#contenido_admin .fv-comment-slot {
  flex: 0 0 auto;
  height: auto;
  overflow: visible;
}
#contenido_admin .fv-comment-slot__body {
  overflow: visible;
}

/*----- 79.3 Ficha de factura: anchos de columna, totales y pie -------------*/
#contenido_admin .fact-bill-col--reserva    { width: 80px; }
#contenido_admin .fact-bill-col--cantidad   { width: 150px; }
#contenido_admin .fact-bill-col--fecha      { width: 120px; }
#contenido_admin .fact-bill-col--referencia { width: 100px; }
#contenido_admin .fact-bill-col--descarga   { width: 60px; }
#contenido_admin .fact-bill-total-label { text-align: right; }
#contenido_admin .fact-bill-info-item--full { grid-column: 1 / -1; }
#rossa-actionbar .fact-actionbar-acciones {
  flex: 1 1 auto;
  min-width: 0;
  gap: 8px;
  justify-content: flex-start;
}
#rossa-actionbar .fact-bill-view-actions.fact-actionbar-acciones {
  justify-content: center;
}
#rossa-actionbar .fact-bill-view-btn {
  height: 34px;
  padding: 0 16px;
  gap: 8px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  color: var(--rossa-ink);
  transform: none;
  box-shadow: none;
}
#rossa-actionbar .fact-bill-view-btn-primary {
  background: var(--rossa-teal);
  border-color: var(--rossa-teal);
  color: var(--rossa-white);
}
#rossa-actionbar .fact-bill-view-btn:hover {
  transform: none;
  box-shadow: none;
}
#rossa-actionbar .fact-bill-view-btn-primary:hover:not(:disabled) {
  background: var(--rossa-petrol-dark);
  border-color: var(--rossa-petrol-dark);
}
#rossa-actionbar .fact-bill-view-btn-success:hover:not(:disabled):not(.fact-bill-view-btn-disabled) {
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
}
#rossa-actionbar .fact-bill-view-btn:disabled,
#rossa-actionbar .fact-bill-view-btn:disabled:hover,
#rossa-actionbar .fact-bill-view-btn-disabled,
#rossa-actionbar .fact-bill-view-btn-disabled:hover {
  opacity: 1 !important;
  background-color: var(--rossa-surface) !important;
  border: 1px solid var(--rossa-border) !important;
  color: var(--rossa-muted) !important;
  transform: none !important;
  box-shadow: none !important;
}
@media (max-width: 700px) {
  #rossa-actionbar .fact-bill-view-btn .rossa-tb-label { display: none; }
  #rossa-actionbar .fact-bill-view-btn > i { display: inline-block !important; }
  #rossa-actionbar .fact-bill-view-actions { flex-wrap: nowrap !important; }
  #rossa-actionbar .fact-bill-view-btn {
    flex: 1 1 0;
    min-width: 0 !important;
    padding: 0;
    box-sizing: border-box;
  }
  #contenido_admin .fact-bill-sections {
    margin-bottom: 90px;
  }
}

/*----- 79.4 Asistente: el riel de la ficha, sin folioVisor.css en la pagina */
#contenido_admin .wizard-progress.fv-lifecycle { display: block; }
#contenido_admin .wizard-progress .fv-lifecycle__track {
  display: flex;
  align-items: flex-start;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}
#contenido_admin .wizard-progress .fv-lifecycle__step {
  position: relative;
  display: flex;
  flex: 0 0 auto;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
  margin: 0;
  padding: 0;
}
#contenido_admin .wizard-progress .fv-lifecycle__rail {
  display: flex;
  align-items: center;
  gap: 8px;
}
#contenido_admin .wizard-progress .fv-lifecycle__node {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  margin: 0;
  border-radius: var(--rossa-radius-pill);
}
#contenido_admin .wizard-progress .fv-lifecycle__connector {
  display: flex;
  flex: 0 0 56px;
  align-items: center;
  gap: 4px;
  min-width: 24px;
}
#contenido_admin .wizard-progress .fv-lifecycle__connector-line { flex: 1 1 auto; }
#contenido_admin .wizard-progress .fv-lifecycle__connector-arrow {
  flex: 0 0 auto;
  width: 12px;
  height: 12px;
  background-color: var(--rossa-hairline-soft);
  -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg");
          mask-image: url("https://cdn.rossa.app/icons/chevron-right.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}
#contenido_admin .wizard-progress .fv-lifecycle__body {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
#contenido_admin .wizard-progress .fv-lifecycle__label { display: block; }
/* Acotado a .wizard-progress: .wizard-step tambien la usa Registro N2 (48). */
#contenido_admin .wizard-progress .wizard-step:not(:last-child)::after {
  content: none;
  display: none;
}
@media (max-width: 700px) {
  #contenido_admin .wizard-progress .fv-lifecycle__connector { min-width: 12px; }
  #contenido_admin .wizard-progress .fv-lifecycle__label { font-size: 12px; }
  #contenido_admin .wizard-progress .fv-lifecycle__track { justify-content: center; }
}

/*----- 79.4b Asistente: Anterior/Siguiente en fila en el actionbar movil ----- */
@media (max-width: 768px) {
  #rossa-actionbar .wizard-navigation {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 10px;
  }
  #rossa-actionbar .wizard-navigation .wizard-btn {
    flex: 1 1 0;
    min-width: 0;
    width: auto;
  }
  #rossa-actionbar .wizard-navigation #btn-prev {
    order: 0;
  }
}

/*----- 79.5 Asistente: pastillas de modo de cliente -----------------------*/
#contenido_admin .client-mode {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 14px;
}
#contenido_admin .client-mode-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.4;
  color: var(--rossa-muted);
}
#contenido_admin .client-mode-badge::before {
  content: "";
  flex: 0 0 auto;
  width: 13px;
  height: 13px;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}
#contenido_admin .client-mode-badge--nuevo {
  border-color: var(--rossa-teal);
  color: var(--rossa-teal);
}
#contenido_admin .client-mode-badge--nuevo::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/user-plus.svg");
          mask-image: url("https://cdn.rossa.app/icons/user-plus.svg");
}
#contenido_admin .client-mode-badge--existente {
  border-color: var(--rossa-green);
  color: var(--rossa-green);
}
#contenido_admin .client-mode-badge--existente::before {
  -webkit-mask-image: url("https://cdn.rossa.app/icons/user-check.svg");
          mask-image: url("https://cdn.rossa.app/icons/user-check.svg");
}

/*----- 79.6 Asistente: la navegacion deja de ser una barra fija propia -----*/
#rossa-actionbar .wizard-navigation {
  position: static;
  left: auto;
  right: auto;
  bottom: auto;
  z-index: auto;
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  margin: 0;
  padding: 0;
  background: none;
  border-top: 0;
}
#contenido_admin .wizard-navigation--enlinea {
  position: static;
  left: auto;
  right: auto;
  bottom: auto;
  z-index: auto;
  min-height: 0;
  margin: 18px 0 0;
  padding: 12px 0 0;
  background: none;
  border-top: 1px solid var(--rossa-border);
}
@media (max-width: 700px) {
  #rossa-actionbar .wizard-navigation { padding: 0; }
  #contenido_admin .wizard-navigation--enlinea { padding: 10px 0 0; }
}

/*----- 79.7 factModals: cabecera con titulo y cierre, y boton destructivo --*/
.fact-custom-modal .fact-custom-modal-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 20px 20px 0;
  text-align: left;
}
.fact-custom-modal .fact-custom-modal-title {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  font-family: var(--rossa-font);
  font-size: 16px;
  line-height: 1.3;
  font-weight: 700;
  color: var(--rossa-navy);
}
.fact-custom-modal .fact-custom-modal-title i {
  font-size: 18px;
  line-height: 1;
  animation: none;
}
.fact-custom-modal .fact-custom-modal-header--danger .fact-custom-modal-title,
.fact-custom-modal .fact-custom-modal-header--danger .fact-custom-modal-title i {
  color: var(--rossa-red);
}
.fact-custom-modal .fact-custom-modal-close {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  margin: -4px -4px 0 0;
  padding: 0;
  border: 0;
  border-radius: var(--rossa-radius);
  background: none;
  color: var(--rossa-muted);
  cursor: pointer;
}
.fact-custom-modal .fact-custom-modal-close:hover {
  background: var(--rossa-surface-2);
  color: var(--rossa-ink);
}
.fact-custom-modal .fact-custom-modal-close i {
  font-size: 15px;
  line-height: 1;
  color: currentColor;
  animation: none;
}
.fact-custom-modal .fact-custom-btn-primary.fact-custom-btn-danger {
  background-color: var(--rossa-salmon);
  border-color: var(--rossa-salmon);
  color: var(--rossa-coral);
}
.fact-custom-modal .fact-custom-btn-primary.fact-custom-btn-danger:hover {
  background-color: var(--rossa-coral);
  border-color: var(--rossa-coral);
  color: var(--rossa-white);
}

/*----- 79.8 Dashboard: un panel con las dos graficas y accesos en el pie ---*/
#contenido_admin .fd-charts { grid-template-columns: minmax(0, 1fr); }
#contenido_admin .fd-charts__cols {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 24px;
}
#contenido_admin .fd-charts__col { min-width: 0; }
#contenido_admin .fd-charts__col + .fd-charts__col {
  padding-left: 24px;
  border-left: 1px solid var(--rossa-hairline-soft);
}
#rossa-actionbar .fd-dash__actions {
  gap: 10px;
  margin: 0;
}
@media (max-width: 720px) {
  #contenido_admin .fd-charts__cols {
    grid-template-columns: minmax(0, 1fr);
    gap: 16px;
  }
  #contenido_admin .fd-charts__col + .fd-charts__col {
    padding-top: 16px;
    padding-left: 0;
    border-top: 1px solid var(--rossa-hairline-soft);
    border-left: 0;
  }
  #contenido_admin .fd-charts__col[aria-label="Importe facturado"] {
    margin-bottom: 90px;
  }
}

/*----- 79.9 Perfiles de configuracion: titulo del listado y toolbar al pie -*/
#contenido_admin .rossa-profiles__titulo {
  margin: 0 0 10px;
  font-family: var(--rossa-font);
  font-size: 15px;
  font-weight: 600;
  color: var(--rossa-teal);
}
#rossa-actionbar .rossa-profiles-toolbar-pie {
  flex: 1 1 auto;
  min-width: 0;
}
#rossa-actionbar .rossa-profiles-toolbar {
  gap: 10px;
  margin: 0;
  padding: 0;
  border-top: 0;
}
#rossa-actionbar .rossa-profiles-toolbar__form { margin: 0; }
#contenido_admin .rossa-fact-abbr,
#contenido_admin .fv-profile-abbr { cursor: help; }
#contenido_admin:has(.rossa-mark-fact-automation-profiles) > h1,
#contenido_admin:has(.rossa-mark-fact-bill-templates) > h1,
#contenido_admin:has(.rossa-mark-fact-profiles) > h1 {
  margin-bottom: 40px;
}

/*----- 79.11 fa-hourglass-half: le faltaba el par (a)+(b) de la 32 --------*/
i.fa-hourglass-half::before,
i.fa-hourglass::before {
  content: "";
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;
  background-color: currentColor;
  -webkit-mask-image: url("https://cdn.rossa.app/icons/hourglass.svg");
          mask-image: url("https://cdn.rossa.app/icons/hourglass.svg");
  -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
  -webkit-mask-position: center;   mask-position: center;
  -webkit-mask-size: contain;      mask-size: contain;
}

/*----- 79.12 Acciones del pie: el boton de la barra del PMS ------------------
  Mismos valores que el alta de Comunicaciones (§66.4): blanco, trazo petrol de
  1,5px, radio 5, 30px de alto y texto petrol en negrita. El grupo se centra
  como .comm-actionbar__centro, con la paginacion pinada a la derecha.        */
#contenido_admin #rossa-actionbar .fd-dash__actions,
#contenido_admin #rossa-actionbar .rossa-profiles-toolbar,
#contenido_admin #rossa-actionbar .vf-panel__actions,
#contenido_admin #rossa-actionbar .fv-detail__actions,
#contenido_admin #rossa-actionbar .fact-bill-view-actions,
#contenido_admin #rossa-actionbar .fact-bulk-actions,
#contenido_admin #rossa-actionbar .fv-list-actionbar-actions,
#contenido_admin #rossa-actionbar .wizard-navigation {
  /* En flujo, NO absolute: fuera de flujo el grupo no cuenta para la altura de
     la barra y los botones salían recortados por abajo. */
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 0;
}
@media (min-width: 701px) {
  #rossa-actionbar:has(.fact-bulk-actions) .fact-bulk-actions,
  #rossa-actionbar:has(.fv-list-actionbar-actions) .fv-list-actionbar-actions,
  #rossa-actionbar:has(.vf-panel__actions) .vf-panel__actions {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}
#contenido_admin #rossa-actionbar .fd-btn,
#contenido_admin #rossa-actionbar .fv-btn,
#contenido_admin #rossa-actionbar .fact-bill-view-btn,
#contenido_admin #rossa-actionbar .admin_boton,
#contenido_admin #rossa-actionbar .rossa-profiles-toolbar button,
#contenido_admin #rossa-actionbar .rossa-profiles-toolbar a,
#contenido_admin #rossa-actionbar .fact-bulk-buttons .rossa-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  box-sizing: border-box;
  min-width: 180px;
  height: 30px;
  margin: 0;
  padding: 0 16px;
  border: 1.5px solid var(--rossa-petrol);
  border-radius: 5px;
  background: var(--rossa-white);
  box-shadow: none;
  font-family: var(--rossa-font);
  font-size: 14px;
  line-height: 16px;
  font-weight: 700;
  text-align: center;
  text-decoration: none;
  color: var(--rossa-petrol);
  transition: background-color .15s ease, color .15s ease;
}
#contenido_admin #rossa-actionbar .fd-btn:hover,
#contenido_admin #rossa-actionbar .fv-btn:hover,
#contenido_admin #rossa-actionbar .fact-bill-view-btn:hover,
#contenido_admin #rossa-actionbar .admin_boton:hover,
#contenido_admin #rossa-actionbar .rossa-profiles-toolbar button:hover,
#contenido_admin #rossa-actionbar .rossa-profiles-toolbar a:hover,
#contenido_admin #rossa-actionbar .fact-bulk-buttons .rossa-button:hover {
  background: var(--rossa-petrol);
  color: var(--rossa-white);
}
#contenido_admin #rossa-actionbar .fv-actions-more__toggle {
  display: none;
}
@media (max-width: 768px) {
  #contenido_admin #rossa-actionbar .fv-actions-more__toggle {
    display: inline-flex;
  }
}
/* Sin background-color: §32 pinta el icono como máscara SOBRE el fondo, así que
   donde la máscara no resuelve el color rellenaba la caja y salía un cuadrado. */
#contenido_admin #rossa-actionbar .fd-btn i[class*="fa-"],
#contenido_admin #rossa-actionbar .fv-btn i[class*="fa-"],
#contenido_admin #rossa-actionbar .fact-bill-view-btn i[class*="fa-"] {
  font-size: 14px;
}
/* Deshabilitado: el trazo se apaga, sin relleno. */
#contenido_admin #rossa-actionbar .fv-btn[disabled],
#contenido_admin #rossa-actionbar .fv-btn.fv-btn--disabled,
#contenido_admin #rossa-actionbar .fact-bill-view-btn[disabled],
#contenido_admin #rossa-actionbar .wizard-navigation button[disabled] {
  border-color: var(--rossa-border);
  background: var(--rossa-white);
  color: var(--rossa-pager-off);
  cursor: default;
}

/*----- 79.13 Dashboard: los paneles sin caja -------------------------------- */
#contenido_admin .fd-panel,
#contenido_admin .fd-today,
#contenido_admin .fd-charts {
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

/*----- 79.14 Sin icono antes que un icono ajeno ------------------------------
  De los 109 glifos que emite el modulo, 104 tienen mascara del CDN. Los que no
  la tienen se quedaban con el dibujo de FontAwesome, que no es de Rossa: se
  ocultan. Los cargadores (fa-spin / fa-spinner / fa-circle) se quedan a
  proposito: son animacion, no iconografia.                                   */
#contenido_admin .fv-list i.fa-save,
#contenido_admin .fv-detail i.fa-save,
#contenido_admin .rossa-fact-visor i.fa-save,
#contenido_admin .rossa-fact-bill-visor i.fa-save,
#contenido_admin .fact-booking-panel i.fa-save,
#contenido_admin .fd-dash i.fa-save { display: none; }


/*----- 79.15 Fuera los iconos decorativos del modulo -------------------------
  Manda el texto. Solo se conserva el icono cuando ES el contenido del control
  (un boton sin rotulo) o cuando sustituye a una palabra en una celda de tabla;
  donde acompana a un texto, se quita. Los que salian como un cuadrado macizo
  eran los que no resuelven su mascara: sin icono antes que eso.              */
#contenido_admin .fv-detail .fv-btn > i[class*="fa-"]:not(:only-child),
#contenido_admin #rossa-actionbar .fv-btn > i[class*="fa-"]:not(:only-child),
#contenido_admin #rossa-actionbar .fd-btn > i[class*="fa-"]:not(:only-child),
#contenido_admin #rossa-actionbar .fact-bill-view-btn > i[class*="fa-"]:not(:only-child),
#contenido_admin #rossa-actionbar .admin_boton > i[class*="fa-"]:not(:only-child),
#contenido_admin .fv-breadcrumb i[class*="fa-"],
#contenido_admin .fv-detail__date > i[class*="fa-"],
#contenido_admin .fv-panel__head h3 > i[class*="fa-"],
#contenido_admin .fv-panel__title > i[class*="fa-"],
#contenido_admin .fv-billing-card__title > i[class*="fa-"],
#contenido_admin .fv-billing-card__body i[class*="fa-"],
#contenido_admin .fv-billing-manual-badge > i[class*="fa-"],
#contenido_admin .fv-history__toolbar .fv-btn > i[class*="fa-"],
#contenido_admin .fd-panel__head > i[class*="fa-"],
#contenido_admin .fd-today__head > i[class*="fa-"] { display: none; }

/* El hueco que dejaban. */
#contenido_admin .fv-breadcrumb a,
#contenido_admin .fv-detail__date,
#contenido_admin .fv-billing-card__title { gap: 0; }


/*----- 79.16 Modulo facturacion sin iconos, en las 9 pantallas ---------------
  Manda la palabra. Los contenedores son los envoltorios raiz de cada pantalla
  mas los dos sistemas de modal y los botones que viven en la barra del pie.  */
#contenido_admin .rossa-fact-dashboard i[class*="fa-"],
#contenido_admin .rossa-fact-bill-visor i[class*="fa-"],
#contenido_admin .fv-page i[class*="fa-"],
#contenido_admin .rossa-fact-visor i[class*="fa-"],
#contenido_admin .rossa-fact-issues i[class*="fa-"],
#contenido_admin .rossa-fact-verifactu i[class*="fa-"],
#contenido_admin .fx-exports i[class*="fa-"],
#contenido_admin .bill-wizard-container i[class*="fa-"],
#contenido_admin .fact-booking-panel i[class*="fa-"],
#contenido_admin #perfiles_fact i[class*="fa-"],
#contenido_admin #rossa-actionbar i[class*="fa-"],
.fact-modal i[class*="fa-"],
.fact-custom-modal i[class*="fa-"] { display: none; }

/* Los cargadores no son iconografia: siguen girando. */
#contenido_admin .rossa-fact-dashboard i.fa-spinner,
#contenido_admin .rossa-fact-bill-visor i.fa-spinner,
#contenido_admin .fv-page i.fa-spinner,
#contenido_admin .rossa-fact-visor i.fa-spinner,
#contenido_admin .bill-wizard-container i.fa-spinner,
.fact-modal i.fa-spinner,
.fact-custom-modal i.fa-spinner { display: inline-block; }

/*----- 79.17 Donde el icono ERA el boton, va su palabra ---------------------
  Estos controles no llevan rotulo: el texto sale de su propio title, que ya
  existe («Ver folio», «Editar», «Ver», «Ver PDF», «Descargar factura»). Sin
  esto quedarian botones vacios, que es perder el control, no el adorno.     */
#contenido_admin .fv-icon-btn::after,
#contenido_admin .fact-action-btn:not(.fact-action-btn-disabled)::after {
  content: attr(title);
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  color: var(--rossa-cyan);
  white-space: nowrap;
}
#contenido_admin .fv-icon-btn,
#contenido_admin .fact-action-btn:not(.fact-action-btn-disabled) {
  width: auto;
  min-width: 0;
  padding: 0 6px;
}
/* Deshabilitado: no es accionable y su title es una frase entera. */
#contenido_admin .fact-action-btn-disabled { display: none; }


/*----- 79.18 Acciones de fila y Operaciones: vuelve el icono -----------------
  Estas columnas son estrechas y van en nowrap, asi que la palabra se cortaba y
  no se veia que habia. Aqui el icono si gana su sitio: es lo unico que cabe.
  Los que no tienen mascara del CDN salen con su glifo antiguo, y es preferible
  a un boton ilegible. Anula lo que 79.16 y 79.17 hacen SOLO en estos nodos.  */
#contenido_admin .fv-icon-btn i[class*="fa-"],
#contenido_admin .fact-action-btn i[class*="fa-"],
#contenido_admin .fv-row-actions i[class*="fa-"],
#contenido_admin .fact-bill-actions i[class*="fa-"],
#contenido_admin td.acciones_res i[class*="fa-"],
#contenido_admin .fact-issue-cta i[class*="fa-"],
#contenido_admin #perfiles_fact .rossa-profiles-ops i[class*="fa-"],
#contenido_admin #perfiles_fact .rossa-profiles-ops__btn i[class*="fa-"],
#contenido_admin #perfiles_fact tr.cab > td:last-child i[class*="fa-"],
#contenido_admin .fx-exports .rossa-profiles-ops i[class*="fa-"] {
  display: inline-block;
}
#contenido_admin .fv-icon-btn::after,
#contenido_admin .fact-action-btn::after,
#contenido_admin .fact-action-btn:not(.fact-action-btn-disabled)::after { content: none; }
#contenido_admin .fv-icon-btn,
#contenido_admin .fact-action-btn:not(.fact-action-btn-disabled) { padding: 0; }
#contenido_admin .fact-action-btn-disabled { display: inline-flex; }

/*----- 79.19 Listados del modulo: la barra de la 57 y el pie del PMS --------
  Los cinco listados (folios, facturas, incidencias, Verifactu y los perfiles)
  emiten ya el marcado compartido `.rossa-filters` + `.rossa-filter-actions`,
  asi que aqui solo queda quitarle al <form> su margen y vestir la seleccion
  masiva cuando cuelga de #rossa-actionbar.                                   */
#contenido_admin .rossa-filtros-form {
  margin: 0;
  padding: 0;
}
#contenido_admin .rossa-filtros-form .rossa-filter-actions {
  margin-bottom: 16px;
}
@media (max-width: 700px) {
  #contenido_admin .rossa-filtros-form .rossa-filter-actions {
    width: 100%;
    padding: 0 14px;
    box-sizing: border-box;
  }
  #contenido_admin .rossa-filtros-form .rossa-filter-reset-btn {
    width: 100%;
    box-sizing: border-box;
    text-align: center;
  }
}

/* Seleccion masiva: dentro de la barra pierde su caja azul y su animacion. */
#contenido_admin #rossa-actionbar .fact-bulk-actions {
  margin: 0;
  padding: 0;
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  animation: none;
}
#contenido_admin #rossa-actionbar .fact-bulk-content {
  flex: 1 1 auto;
  min-width: 0;
  justify-content: center;
  gap: 12px;
}
#contenido_admin #rossa-actionbar .fact-bulk-info {
  font-size: 13px;
  font-weight: 700;
  color: var(--rossa-petrol);
}
#contenido_admin #rossa-actionbar .fact-bulk-buttons .rossa-button:hover {
  border-color: var(--rossa-petrol);
  box-shadow: none;
  transform: none;
}

/*----- 79.20 Acciones de fila: la celda no puede ser caja flex Y medir 1% ----
  `td.acciones_res` lleva `width: 1%` (§65.4), el truco de tabla para encoger la
  columna. Con `display: inline-flex` la celda sale del modelo de tabla, ese 1%
  pasa a medir la CAJA (~1px) y los tres iconos, que ademas heredaban
  `flex-wrap: wrap`, caian uno debajo de otro.                                */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.acciones_res.fact-bill-actions {
  width: auto;
  flex-wrap: nowrap;
}

/*=============================================================================
  80. Pestanas de enlace (.rossa-pestanas) — las de Ver reservas, pero navegan
  Las clases .rossa-tabs, .pest y .rossa-slider__tab las capturan scripts
  globales (inicio_functions.js, Lydia_Script.js, gestor_pedidos.js) que anulan
  el clic del enlace: un filtro que cambia de URL necesita clase propia.
=============================================================================*/

#contenido_admin .rossa-pestanas {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  margin: 0 0 18px;
}
#contenido_admin .rossa-pestanas .rossa-pestana {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
  padding: 8px 6px;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--rossa-muted);
  border-radius: 0;
  color: var(--rossa-muted);
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 400;
  text-decoration: none;
  white-space: nowrap;
  transition: color .15s ease, border-color .15s ease;
}
#contenido_admin .rossa-pestanas .rossa-pestana:first-child { padding-left: 0; }
#contenido_admin .rossa-pestanas .rossa-pestana:hover {
  border-bottom-color: var(--rossa-muted);
  color: var(--rossa-ink);
}
#contenido_admin .rossa-pestanas .rossa-pestana--activa,
#contenido_admin .rossa-pestanas .rossa-pestana--activa:hover {
  border-bottom: 2px solid var(--rossa-teal);
  color: var(--rossa-teal);
  font-weight: 700;
  cursor: default;
}
#contenido_admin .rossa-pestanas .rossa-pestana__n {
  min-width: 20px;
  padding: 1px 6px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-tint);
  color: var(--rossa-muted);
  font-size: 11px;
  font-weight: 700;
  text-align: center;
}
#contenido_admin .rossa-pestanas .rossa-pestana--activa .rossa-pestana__n {
  background: var(--rossa-pager-tint);
  color: var(--rossa-teal);
}
/*---------------------------------------------------- 77. Códigos de descuento */
/*----------------------------------- 81. Control de accesos (module=llaves_api) */
/* Mismo aspecto de select que los desplegables de surveys_filters (.surveys-checkdrop__toggle). */
#btn_toggle_global_pin_panel {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 220px;
  min-height: 36px;
  box-sizing: border-box;
  padding: 6px 10px;
  background: var(--rossa-white);
  color: var(--rossa-ink);
  border: 1px solid var(--rossa-stroke);
  border-radius: var(--rossa-radius);
  font-family: var(--rossa-font);
  font-weight: 600;
  font-size: 13px;
  text-align: left;
  cursor: pointer;
}
#btn_toggle_global_pin_panel:focus {
  outline: none;
  border-color: var(--rossa-teal);
  box-shadow: 0 0 0 3px rgba(0, 94, 102, .15);
}
#btn_toggle_global_pin_panel::after {
  content: '';
  flex-shrink: 0;
  width: 7px;
  height: 7px;
  border-right: 1px solid var(--rossa-muted);
  border-bottom: 1px solid var(--rossa-muted);
  transform: rotate(45deg) translateY(-2px);
  transition: transform .15s ease;
}
#btn_toggle_global_pin_panel[aria-expanded="true"]::after {
  transform: rotate(225deg) translateY(2px);
}
@media (max-width: 700px) {
  /* El actionbar fijo (min-height 58px + padding) tapaba el final del contenido. */
  #cont-config:has(#btn_toggle_global_pin_panel) {
    margin-bottom: 90px;
  }
  #contenido_admin #btn_toggle_global_pin_panel {
    display: flex;
    width: 100%;
  }
  #contenido_admin .rossa-llaves-quick-actions {
    display: flex;
    gap: 8px;
  }
  #contenido_admin .rossa-llaves-quick-actions__btn {
    flex: 1 1 0;
    min-width: 0;
  }
}
@media (max-width: 610px) {
  #contenido_admin .row-keys {
    align-items: center;
  }
  #contenido_admin .phone_permissions_container {
    width: 99% !important;
  }
}
#rossa-actionbar:has(form[name="actualizar_llaves_0000"]) {
  justify-content: center;
  align-items: center;
}
#rossa-actionbar:has(#btn_add_door) {
  justify-content: center;
  align-items: center;
}
#rossa-actionbar:has(#btn_board_save, #btn_board_create, #btn_pp_save, #btn_rp_save, #btn_fee_save, #btn_cxpol_new, #btn_cxpol_create, #btn_cxpol_save, #btn_cxpol_rules_save, #btn_uso_cancel, #btn_origen_cancel, #btn_apiuser_cancel, #btn_pp_police_save, #btn_establecimiento_cancel, #btn_agrupacion_cancel, #btn_agr_new, #btn_temporada_cancel, #btn_image_res_save, #btn_asig_police_save, #btn_multimedia_add) {
  justify-content: center;
  align-items: center;
}
/* edit_apiusers: «Generar Client Secret» alineado con los campos; la regla general de table.estandar lo centra. */
#add_apiuser table.estandar td button.admin_boton[type="button"] { margin: 0; }
@media (max-width: 700px) {
  #rossa-actionbar:has(#btn_board_save, #btn_board_create, #btn_pp_save, #btn_rp_save, #btn_fee_save, #btn_cxpol_new, #btn_cxpol_create, #btn_cxpol_save, #btn_cxpol_rules_save, #btn_uso_cancel, #btn_origen_cancel, #btn_apiuser_cancel, #btn_pp_police_save, #btn_establecimiento_cancel, #btn_agrupacion_cancel, #btn_agr_new, #btn_temporada_cancel, #btn_image_res_save, #btn_asig_police_save, #btn_multimedia_add) { gap: 8px; }
  #rossa-actionbar:has(#btn_board_save, #btn_board_create, #btn_pp_save, #btn_rp_save, #btn_fee_save, #btn_cxpol_new, #btn_cxpol_create, #btn_cxpol_save, #btn_cxpol_rules_save, #btn_uso_cancel, #btn_origen_cancel, #btn_apiuser_cancel, #btn_pp_police_save, #btn_establecimiento_cancel, #btn_agrupacion_cancel, #btn_agr_new, #btn_temporada_cancel, #btn_image_res_save, #btn_asig_police_save, #btn_multimedia_add) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
}
@media (max-width: 700px) {
  #rossa-actionbar:has(#btn_add_door) {
    gap: 8px;
  }
  #rossa-actionbar:has(#btn_add_door) .rossa-actionbar-btn {
    flex: 1 1 0;
    min-width: 0;
    padding: 0;
  }
}
#rossa-actionbar:has(.rossa-sms-back-btn),
#rossa-actionbar:has(.rossa-billmail-back-btn) { justify-content: center; align-items: center; gap: 10px; }
body:has(#contenido_admin.isiframe) .rossa-sms-back-btn { display: none; }
#rossa-actionbar:has(#btn_vc_reservas) { justify-content: center; align-items: center; gap: 10px; }
#rossa-actionbar:has(.rossa-codigos-nuevo-btn) { justify-content: center; align-items: center; }
#rossa-actionbar:has(.rossa-vercodigo-back-btn) { justify-content: center; align-items: center; gap: 10px; }
#contenido_admin .rossa-vercodigo-form-actions {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  margin-top: 14px;
}
#contenido_admin .rossa-vercodigo-form-actions .admin_boton {
  margin: 0;
  width: auto;
}
#rossa-actionbar:has(.rossa-genera-codigo-back-btn) { justify-content: center; align-items: center; gap: 10px; }
#rossa-actionbar:has(.rossa-add-codigo-back-btn) { justify-content: center; align-items: center; gap: 10px; }
#rossa-actionbar:has(.rossa-wc-pf-back-btn) { justify-content: center; align-items: center; gap: 10px; }
#rossa-actionbar:has(.rossa-add-pregunta-back-btn) { justify-content: center; align-items: center; gap: 10px; }
#rossa-actionbar:has(.rossa-wc-hv-back-btn) { justify-content: center; align-items: center; gap: 10px; }
#rossa-actionbar:has(.rossa-add-video-back-btn) { justify-content: center; align-items: center; gap: 10px; }
#rossa-actionbar:has(.rossa-add-help-back-btn) { justify-content: center; align-items: center; gap: 10px; }
#rossa-actionbar:has(.rossa-hss-back-btn) { justify-content: center; align-items: center; gap: 10px; }
#rossa-actionbar:has(#btn_dsa_back) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#btn_dap_back) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#btn_ac_back) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#ttax-new-btn) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#ttax-form-cancel-btn) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#ttax-mapping-back-btn) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#btn_pc_back) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#btn_devgroups_back) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#btn_devgroup_form_back) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#btn_servicios_add) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#btn_add_servicio_back) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#btn_cerraduras_config_back) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#btn_asig_planes_back) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#btn_wb_profconfig_back) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#btn_channel_asig_back) { justify-content: center; align-items: center; }
#rossa-actionbar:has(#asigna_cliente_submit) .rossa-page-toolbar__actions,
#rossa-actionbar:has(#fusiona_cliente_submit) .rossa-page-toolbar__actions {
  flex: 1 1 auto;
  min-width: 0;
  justify-content: center;
}
@media (min-width: 701px) {
  #rossa-actionbar:has(#asigna_cliente_submit) .rossa-page-toolbar__actions,
  #rossa-actionbar:has(#fusiona_cliente_submit) .rossa-page-toolbar__actions {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}
/* Las pestañas de web_content se cambian con JS sin recargar (lidia_tabs.js hace display:none/block
   inline): si "Preguntas frecuentes" no es la visible, el actionbar (fijado en el primer render del
   servidor) se oculta entero para no dejar "Volver"/"Añadir respuesta" sueltos sobre otra pestaña. */
body:has(#wc_preguntas_frecuentes[style*="display: none"]) #rossa-actionbar:has(.rossa-wc-pf-back-btn) {
  display: none;
}
body:has(#wc_help_videos[style*="display: none"]) #rossa-actionbar:has(.rossa-wc-hv-back-btn) {
  display: none;
}
#contenido_admin form#codes_action { overflow: auto; }

/* Cinco interruptores no piden 1320px: el alto ya lo ajusta `profilepop--compact` al contenido. */
#lydia_popup.profilepop--compact:has(iframe[src*="module=config_descuentos"]) {
  width: min(880px, calc(100vw - 32px));
  max-width: min(880px, calc(100vw - 32px));
}
@media (max-width: 700px) {
  #contenido_admin #form_config_descuentos .cfg-desc__acciones .admin_boton {
    width: 100%;
  }
}

/* Una pestaña sola no informa de nada: se esconde la tira, no el contenido (el JS de pestañas sigue viéndola). */
#contenido_admin .tabs:has(.pest):not(:has(.pest ~ .pest)) { display: none; }

/* Acciones en lote de los listados: desplegable con las acciones y Aplicar al lado. */
#contenido_admin .rossa-bulk {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 14px;
}
#contenido_admin .rossa-bulk__select {
  min-width: 264px;
  margin: 0;
}
#contenido_admin .rossa-bulk .select2-container { min-width: 264px; margin: 0; }
#contenido_admin .rossa-bulk__apply { margin: 0; }
#rossa-actionbar:has(.rossa-users-add-btn) { justify-content: center; align-items: center; }
#rossa-actionbar:has(.rossa-wc-help-create-btn) { justify-content: center; align-items: center; gap: 10px; }
/* Se oculta entero si la pestaña "Botones de ayuda" no es la visible (ver comentario junto a wc_preguntas_frecuentes). */
body:has(#wc_help_page[style*="display: none"]) #rossa-actionbar:has(.rossa-wc-help-create-btn) {
  display: none;
}
#contenido_admin .rossa-sms-message-table tr:has(select[name="manual_credentials"]) td {
  text-align: left;
}

@media (max-width: 700px) {
  #rossa-actionbar:has(.rossa-vercodigo-back-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
  #contenido_admin .rossa-vercodigo-form-actions .admin_boton { flex: 1 1 0; min-width: 0; width: auto; }
  #contenido_admin .rossa-bulk {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin .rossa-bulk__select,
  #contenido_admin .rossa-bulk__apply { width: 100%; min-width: 0; }
  /* Select2 fija el ancho en el style del contenedor al montarse. */
  #contenido_admin .rossa-bulk .select2-container { width: 100% !important; min-width: 0; }
  body:not(:has(#contenido_admin.isiframe)) #rossa-actionbar:has(.rossa-sms-back-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #rossa-actionbar:has(#btn_vc_reservas) { gap: 8px; }
  #rossa-actionbar:has(#btn_vc_reservas) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #contenido_admin.rossa-ver-cliente-page { margin-bottom: 90px; }
  #rossa-actionbar:has(.rossa-genera-codigo-back-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #rossa-actionbar:has(.rossa-add-codigo-back-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
  #rossa-actionbar:has(.rossa-wc-pf-back-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
  #rossa-actionbar:has(.rossa-add-pregunta-back-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
  #rossa-actionbar:has(.rossa-wc-hv-back-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
  #rossa-actionbar:has(.rossa-add-video-back-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
  #contenido_admin.rossa-wc-edit #create_video_v2 {
    margin-bottom: 90px;
  }
  #rossa-actionbar:has(.rossa-add-help-back-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
  #rossa-actionbar:has(.rossa-hss-back-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
  #rossa-actionbar:has(.rossa-codigos-nuevo-btn) { gap: 8px; }
  #rossa-actionbar:has(.rossa-codigos-nuevo-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #rossa-actionbar:has(#btn_dsa_back) { gap: 8px; }
  #rossa-actionbar:has(#btn_dsa_back) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #rossa-actionbar:has(#btn_dap_back) { gap: 8px; }
  #rossa-actionbar:has(#btn_dap_back) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #rossa-actionbar:has(#btn_ac_back) { gap: 8px; }
  #rossa-actionbar:has(#btn_ac_back) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #rossa-actionbar:has(#btn_devgroups_back) { gap: 8px; }
  #rossa-actionbar:has(#btn_devgroups_back) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #rossa-actionbar:has(#btn_devgroup_form_back) { gap: 8px; }
  #rossa-actionbar:has(#btn_devgroup_form_back) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #rossa-actionbar:has(#btn_add_servicio_back) { gap: 8px; }
  #rossa-actionbar:has(#btn_add_servicio_back) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #rossa-actionbar:has(#btn_cerraduras_config_back) { gap: 8px; }
  #rossa-actionbar:has(#btn_cerraduras_config_back) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #rossa-actionbar:has(#btn_asig_planes_back) { gap: 8px; }
  #rossa-actionbar:has(#btn_asig_planes_back) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #rossa-actionbar:has(#btn_wb_profconfig_back) { gap: 8px; }
  #rossa-actionbar:has(#btn_wb_profconfig_back) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #contenido_admin:has(#btn_wb_profconfig_back) { margin-bottom: 90px; }
  #rossa-actionbar:has(#btn_pc_back) { gap: 8px; }
  #rossa-actionbar:has(#btn_pc_back) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #contenido_admin:has(#btn_pc_back) { margin-bottom: 90px; }
  #rossa-actionbar:has(#btn_channel_asig_back) { gap: 8px; }
  #rossa-actionbar:has(#btn_channel_asig_back) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #contenido_admin:has(#btn_channel_asig_back) { margin-bottom: 90px; }
  #contenido_admin:has(#btn_asig_planes_back) { margin-bottom: 90px; }
  #rossa-actionbar:has(#ttax-new-btn) { gap: 8px; }
  #rossa-actionbar:has(#ttax-new-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #rossa-actionbar:has(#ttax-form-cancel-btn) { gap: 8px; }
  #rossa-actionbar:has(#ttax-form-cancel-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; padding: 0; }
  #ttax-pattern-add, #ttax-authority-add { width: 100%; }
  .ttax-page { margin-bottom: 90px; }
  #ttax-form input[type="date"],
  #ttax-form input[type="datepicker"],
  #ttax-form select { width: 100%; height: 33px; box-sizing: border-box; }
  #ttax-add-block { width: 100%; height: 33px; box-sizing: border-box; }
  #ttax-dup-modal #ttax-dup-date,
  #ttax-dup-modal #ttax-dup-date__vista { width: 100%; height: 40px; box-sizing: border-box; }
  #contenido_admin.rossa-clientes-page #edicli { margin-bottom: 90px; }
  #contenido_admin.rossa-clientes-page #edicli table#edit tr:not(.cab) { display: flex; flex-direction: column; }
  #contenido_admin.rossa-clientes-page #edicli table#edit tr:not(.cab) > td { display: block; width: 100%; box-sizing: border-box; }
  #contenido_admin .rossa-tel__default.rossa-container-phone { justify-content: flex-start; }
  .rossa-sms-precarga-table,
  .rossa-sms-precarga-table tbody,
  .rossa-sms-precarga-table tr,
  .rossa-sms-precarga-table td { display: block; width: 100%; box-sizing: border-box; }
  #contenido_admin .rossa-sms-precarga-table td form { display: flex; flex-direction: column; gap: 8px; }
  #contenido_admin .rossa-sms-precarga-table td input[type="submit"].admin_boton { display: block; width: 100%; margin: 0; }
  .rossa-sms-precarga-table select { width: 100%; box-sizing: border-box; }
  .rossa-sms-message-table,
  .rossa-sms-message-table thead,
  .rossa-sms-message-table tbody,
  .rossa-sms-message-table tr,
  .rossa-sms-message-table td { display: block; width: 100%; box-sizing: border-box; }
  .rossa-sms-message-table select { width: 100%; box-sizing: border-box; }
  .tarea-programada-form input,
  .tarea-programada-form textarea,
  .tarea-programada-form select { width: 100%; box-sizing: border-box; }
  #add_door table.estandar,
  #add_door table.estandar tbody,
  #add_door table.estandar tr,
  #add_door table.estandar td { display: block; width: 100%; box-sizing: border-box; }
  #rossa-actionbar:has(.rossa-wc-help-back-btn) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
  #contenido_admin.rossa-hss #help_step_services_form {
    margin-bottom: 90px;
  }
  #contenido_admin.rossa-wc-edit #create_new_template {
    margin-bottom: 90px;
  }
  /* El actionbar fijo al pie tapaba el final del formulario; margen algo mayor que su alto. */
  #contenido_admin.rossa-wc-edit #create_pregunta_v2 {
    margin-bottom: 90px;
  }
  /* Buscadores de canal/estancia a todo el ancho; !important vence al style="width:250px" en línea del de canal. */
  #contenido_admin.rossa-wc-edit .rossa-estcards-search {
    width: 100% !important;
  }
  /* "Marcar internos/externos/todos" (canales): en columna, a todo el ancho del padre. */
  #contenido_admin.rossa-wc-edit .rossa-canales__bar {
    flex-direction: column;
    align-items: stretch;
  }
  #contenido_admin.rossa-wc-edit .rossa-canales__bar button {
    width: 100%;
    justify-content: center;
  }
  /* "Marcar Todos" (estancias): también a todo el ancho del padre. */
  #contenido_admin.rossa-wc-edit .rossa-estcards-head__tools button {
    width: 100%;
    justify-content: center;
  }
  /* Tablas de Pregunta/Respuesta (español/inglés): etiqueta encima, textarea debajo. */
  #contenido_admin.rossa-wc-edit table.estandar,
  #contenido_admin.rossa-wc-edit table.estandar tbody,
  #contenido_admin.rossa-wc-edit table.estandar tr:not(.rossa-lang-row),
  #contenido_admin.rossa-wc-edit table.estandar tr:not(.rossa-lang-row) > td {
    display: block;
    width: auto;
  }
  #contenido_admin.rossa-wc-edit table.estandar tr.rossa-lang-row,
  #contenido_admin.rossa-wc-edit table.estandar tr.rossa-lang-row > td {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin.rossa-wc-edit table.estandar tr:not(.rossa-lang-row) > td[width="15%"] {
    padding-bottom: 4px;
  }
  #contenido_admin.rossa-wc-edit table.estandar tr:not(.rossa-lang-row) > td > textarea {
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin .rossa-genera-codigo-form table.estandar {
    padding: 0;
  }
  #contenido_admin .rossa-genera-codigo-form table.estandar,
  #contenido_admin .rossa-genera-codigo-form table.estandar tbody,
  #contenido_admin .rossa-genera-codigo-form table.estandar tr:not(.cab),
  #contenido_admin .rossa-genera-codigo-form table.estandar tr:not(.cab) > td {
    display: block;
    width: auto;
  }
  #contenido_admin .rossa-genera-codigo-form table.estandar tr:not(.cab) > td:first-child {
    padding-bottom: 4px;
    font-weight: 600;
  }
  #contenido_admin .rossa-genera-codigo-form table.estandar tr:not(.cab) > td:last-child {
    padding-top: 8px;
    margin-bottom: 12px;
  }
  #contenido_admin .rossa-genera-codigo-form table.estandar tr:not(.cab) > td:last-child > input,
  #contenido_admin .rossa-genera-codigo-form table.estandar tr:not(.cab) > td:last-child > select,
  #contenido_admin .rossa-genera-codigo-form table.estandar tr:not(.cab) > td:last-child > textarea {
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin .rossa-genera-codigo-form table.estandar tr.cab,
  #contenido_admin .rossa-genera-codigo-form table.estandar tr.cab > td {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin .rossa-genera-codigo-form {
    margin-bottom: 90px;
  }
  #contenido_admin .rossa-add-codigo-form table.estandar,
  #contenido_admin .rossa-add-codigo-form table.estandar tbody,
  #contenido_admin .rossa-add-codigo-form table.estandar tr:not(.cab),
  #contenido_admin .rossa-add-codigo-form table.estandar tr:not(.cab) > td {
    display: block;
    width: auto;
  }
  #contenido_admin .rossa-add-codigo-form table.estandar tr:not(.cab) > td:first-child {
    padding-bottom: 4px;
    font-weight: 600;
  }
  #contenido_admin .rossa-add-codigo-form table.estandar tr:not(.cab) > td:last-child {
    padding-top: 8px;
    margin-bottom: 12px;
  }
  #contenido_admin .rossa-add-codigo-form table.estandar tr:not(.cab) > td:last-child > input,
  #contenido_admin .rossa-add-codigo-form table.estandar tr:not(.cab) > td:last-child > select,
  #contenido_admin .rossa-add-codigo-form table.estandar tr:not(.cab) > td:last-child > textarea {
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin .rossa-add-codigo-form table.estandar tr.cab,
  #contenido_admin .rossa-add-codigo-form table.estandar tr.cab > td {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin .rossa-add-codigo-form {
    margin-bottom: 90px;
  }
}
@media (min-width: 481px) and (hover: none) and (pointer: coarse) {
  #contenido_admin .rossa-sms-precarga-table td input[type="submit"].admin_boton {
    display: inline-block;
    width: auto;
  }
}
@media (max-width: 700px) {
  /* El actionbar fijo al pie tapaba el final del listado; margen algo mayor que su alto. */
  #contenido_admin .rossa-gestor-usuarios-content {
    margin-bottom: 90px;
  }
}
#rossa-actionbar:has(#guardar_asig_door),
#rossa-actionbar:has(#guarda_puerta) {
  justify-content: center;
  align-items: center;
}
@media (max-width: 700px) {
  #rossa-actionbar:has(#guardar_asig_door),
  #rossa-actionbar:has(#guarda_puerta) {
    gap: 8px;
  }
  #rossa-actionbar:has(#guardar_asig_door) .rossa-actionbar-btn,
  #rossa-actionbar:has(#guarda_puerta) .rossa-actionbar-btn {
    flex: 1 1 0;
    min-width: 0;
    padding: 0;
  }
}
#check_pin_uses_form { text-align: left; }
/* !important: gana a "#contenido_admin form > .admin_boton" (mismo id+clases, un elemento menos). */
#check_pin_uses_form > input[type="submit"].admin_boton {
  display: inline-block !important;
  margin: 0 !important;
}
@media (max-width: 700px) {
  #check_pin_uses_form > input[type="submit"].admin_boton {
    display: block !important;
    width: 100%;
  }
  #check_pin_uses_form .rossa-filters .rossa-field {
    flex: 1 1 100%;
    width: 100%;
  }
  #check_pin_uses_form .rossa-filters .rossa-field input[type="date"] {
    width: 100%;
  }
}
/* llaves_api: vista de una cerradura (?action=manage_pins&id_room=...), marcada por #idstay. */
#contenido_admin:has(#idstay) .rossa-llaves-quick-actions,
#contenido_admin:has(#idstay) .rossa-llaves-emergency-count {
  display: none;
}
/* Se oculta el <form> entero, no solo el botón: si no, el <form> vacío sigue
   siendo un flex-item del actionbar y el gap deja un hueco extra.
   !important: el propio <form> lleva style="display:inline-block" inline. */
body:has(#idstay) form[name="actualizar_llaves_0000"] {
  display: none !important;
}

body:has(#idstay) #rossa-actionbar {
  justify-content: center;
  align-items: center;
}
#rossa-actionbar:has(#realizar_cambios_lotes) {
  justify-content: center;
  align-items: center;
}
#rossa-actionbar:has(#btn_add_establecimiento) {
  justify-content: center;
  align-items: center;
}
@media (max-width: 700px) {
  #rossa-actionbar:has(#btn_add_establecimiento) .rossa-actionbar-btn { flex: 1 1 0; min-width: 0; }
  #rossa-actionbar #btn_mostrar_inactivos.rossa-actionbar-btn { max-width: 180px; }
  #rossa-actionbar #btn_add_establecimiento.rossa-actionbar-btn { max-width: 195px; }
}
@media (max-width: 700px) {
  .rossa-estab-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
  }
  .rossa-estab-toolbar #btn_servicios,
  .rossa-estab-toolbar #btn_puertas {
    flex: 1 1 0;
    min-width: 0;
  }
  .rossa-estab-toolbar #btn_gestor_habs,
  .rossa-estab-toolbar #btn_agrupaciones {
    flex: 1 1 100%;
    width: 100%;
  }
}
@media (max-width: 700px) {
  body:has(#idstay) #rossa-actionbar {
    gap: 8px;
  }
  body:has(#idstay) #rossa-actionbar .rossa-actionbar-btn {
    flex: 1 1 0;
    min-width: 0;
    padding: 0;
  }
}
.rossa-lock-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
}
.rossa-lock-actions .rossa-lock-actions__btn { margin: 0; }
@media (max-width: 700px) {
  .rossa-lock-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .rossa-lock-actions .rossa-lock-actions__btn {
    width: 100%;
    box-sizing: border-box;
    text-align: center;
  }
}
/* Bloques de cerradura: la mano solo donde hay clic (fila de la puerta con destino y códigos). */
#contenido_admin .lockdevice-box {
  cursor: default;
}
#contenido_admin .lockdevice-box .row-device-door {
  cursor: pointer;
}
#contenido_admin .lockdevice-box .row-device-door[onclick="window.location.href=''"] {
  cursor: default;
}
/* Leyenda del modal de ayuda: el modal cuelga del body, fuera del alcance de §76.1. */
.rossa-help-doc .rossa-llaves-leyenda {
  list-style: none;
  margin: 0 0 6px;
  padding: 0;
}
.rossa-help-doc .rossa-llaves-leyenda li {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 6px 0;
  color: var(--rossa-muted);
}
.rossa-help-doc .rossa-llaves-leyenda__pin {
  flex: 0 0 auto;
  box-sizing: border-box;
  min-width: 62px;
  padding: 3px 10px;
  border: 1px solid transparent;
  border-radius: var(--rossa-radius-pill);
  color: var(--rossa-white);
  font-size: 12px;
  font-weight: 600;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.rossa-help-doc .rossa-llaves-leyenda__pin.pinverde { background-color: var(--rossa-green-dark); }
.rossa-help-doc .rossa-llaves-leyenda__pin.pinrojo { background-color: var(--rossa-red); }
.rossa-help-doc .rossa-llaves-leyenda__pin.pingris { background-color: var(--rossa-muted); }
.rossa-help-doc .rossa-llaves-leyenda__pin.pindesconocido { background-color: var(--rossa-db-400); }
.rossa-help-doc .rossa-llaves-leyenda__pin.pinverde_out {
  padding: 2px 9px;
  border: 2px solid var(--rossa-green-dark);
  background-color: var(--rossa-white);
  color: var(--rossa-green-dark);
}
.rossa-help-doc .rossa-llaves-leyenda__lock {
  flex: 0 0 auto;
  box-sizing: border-box;
  width: 62px;
  height: 22px;
  border-radius: var(--rossa-radius);
  /* !important: los .bt_pin* de pagina_llaves.css fijan el borde a 3px con !important. */
  border-width: 1px !important;
}

/*===== 82. IMPORTACION DE RESERVAS DE ROOMDOO (module=roomdoo_reservas) =====*/
/* Los filtros usan el canon compartido de la 57 (.rossa-filters) y el listado el de la 65 (.rossa-tbl): aqui solo va lo propio de la pantalla. */

/*----- 82.0 Se desactiva lo que roomdoo_reservas.css daba a los nodos que ahora son tabla -----
  Ese archivo sigue enlazado (rule 3) y sus reglas caen sobre <tr> y <td>: un
  display:flex en una fila desmonta la tabla entera.                          */
.rrx-search-card {
  background: none;
  border: 0;
  padding: 0;
}
.rrx-list {
  border: 0;
  border-radius: 0;
  overflow: visible;
}
.rrx-list-item { border-bottom: 0; }
.rrx-list-item__header {
  display: table-row;
  padding: 0;
}
.rrx-list-item__summary {
  display: table-cell;
  gap: 0;
}
.rrx-list-item__detail { border-top: 0; }

/*----- 82.1 Titulos ---------------------------------------------------------*/
.rrx-container h1 { color: var(--rossa-navy); }
.rrx-results__title {
  font-size: 17px;
  font-weight: 700;
  color: var(--rossa-deep);
  margin: 24px 0 12px;
}

/*----- 82.2 Fila del folio: es la cabecera del acordeon ---------------------*/
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.rrx-list-item__header > td { cursor: pointer; }
#contenido_admin table.rossa-tbl.rossa-tbl > tbody.rrx-list-item:hover > tr.rrx-list-item__header > td,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody.rrx-list-item--open > tr.rrx-list-item__header > td {
  background-color: var(--rossa-tint);
}
/* La zebra del canon cuenta por <tbody> y aqui hay uno por folio, asi que el separador de fila va explicito. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.rrx-list-item__header > td {
  border-bottom: 1px solid var(--rossa-border);
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr > td.rrx-list-item__id {
  color: var(--rossa-navy);
  font-weight: 700;
}
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr > td.rrx-list-item__name { color: var(--rossa-ink); }
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr > td.rrx-list-item__partner { color: var(--rossa-stroke); }
.rrx-list-item__cta { color: var(--rossa-cyan-fig); }
.rrx-list-item__chevron i { color: var(--rossa-stroke); }
.rrx-list-item--open .rrx-list-item__chevron i { transform: rotate(180deg); }

/*----- 82.3 Celda del detalle desplegado ------------------------------------*/
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr > td.rrx-list-item__detail {
  height: auto;
  padding: 0 var(--rossa-tbl-pad-x) 16px;
  text-align: left;
  background-color: var(--rossa-white);
}
/* El JS solo oculta la celda: sin esto la fila vacia sigue dejando una linea. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:has(> td.rrx-list-item__detail[style*="none"]) { display: none; }
.rrx-detail-loading { color: var(--rossa-muted); }

/*----- 82.4 Pastillas de estado y de accion ---------------------------------*/
.rrx-badge,
.rrx-folio-state {
  display: inline-block;
  padding: 4px 12px;
  border-radius: var(--rossa-radius-pill);
  font-size: 11px;
  font-weight: 700;
}
.rrx-badge--insert,
.rrx-folio-state--new {
  background: rgba(0, 168, 134, .12);
  color: var(--rossa-green-fig);
}
.rrx-badge--update,
.rrx-folio-state--partial {
  background: rgba(184, 153, 11, .14);
  color: var(--rossa-per);
}
.rrx-badge--cancel {
  background: var(--rossa-salmon);
  color: var(--rossa-red);
}
.rrx-badge--skip,
.rrx-folio-state--existing {
  background: var(--rossa-surface);
  color: var(--rossa-muted);
}
.rrx-badge--processed {
  background: var(--rossa-pag);
  color: var(--rossa-white);
}

/*----- 82.5 Ficha del folio y de cada reserva, con el canon de .rossa-datacard -----*/
.rrx-folio,
.rrx-card {
  border: 1px solid var(--rossa-stroke);
  border-radius: 6px;
  box-shadow: none;
}
.rrx-folio { padding: 20px; }
.rrx-card { padding: 16px; }
.rrx-folio__header {
  border-bottom: 1px solid var(--rossa-border);
  padding-bottom: 16px;
  margin-bottom: 16px;
}
.rrx-folio__id {
  background: var(--rossa-navy);
  color: var(--rossa-white);
  padding: 5px 12px;
  border-radius: var(--rossa-radius);
  font-weight: 700;
}
.rrx-folio__name { color: var(--rossa-ink); }
.rrx-folio__partner { color: var(--rossa-muted); }
.rrx-single-detail .rrx-folio { border-color: var(--rossa-petrol); }
.rrx-card--insert { border-left: 4px solid var(--rossa-green-fig); }
.rrx-card--update { border-left: 4px solid var(--rossa-per); }
.rrx-card--cancel { border-left: 4px solid var(--rossa-red); }
.rrx-card--skip   { border-left: 4px solid var(--rossa-border); }
.rrx-card--processed {
  border-left-color: var(--rossa-pag);
  background: rgba(118, 188, 33, .08);
}
.rrx-card__room { color: var(--rossa-ink); }
.rrx-card__dates { color: var(--rossa-muted); }
.rrx-field__label { color: var(--rossa-stroke); }
.rrx-field__value { color: var(--rossa-ink); }
.rrx-field__sub { color: var(--rossa-muted); }
.rrx-card__spinner {
  border-radius: 6px;
  color: var(--rossa-petrol);
}

/*----- 82.6 Diff de UPDATE --------------------------------------------------*/
.rrx-card__diff,
.rrx-card__actions,
.rrx-skip-toggle { border-top: 1px solid var(--rossa-border); }
.rrx-card__diff-title { color: var(--rossa-per); }
.rrx-card__diff-empty,
.rrx-skip-note,
.rrx-skip-toggle { color: var(--rossa-muted); }
.rrx-diff li { color: var(--rossa-ink); }
.rrx-diff__label { color: var(--rossa-stroke); }
.rrx-diff__old {
  background: var(--rossa-salmon);
  color: var(--rossa-red);
}
.rrx-diff__new {
  background: rgba(0, 168, 134, .12);
  color: var(--rossa-green-fig);
}

/*----- 82.7 Botones del detalle y del modal ---------------------------------*/
.rrx-btn {
  padding: 9px 16px;
  border-radius: var(--rossa-radius);
  font-size: 14px;
  font-weight: 700;
  line-height: 20px;
}
/* Mismos valores que .admin_boton (seccion 3): el primario del PMS es teal, y el hover #00474d es el suyo. */
.rrx-btn--primary {
  background: var(--rossa-teal);
  color: var(--rossa-white);
  border-color: var(--rossa-teal);
}
.rrx-btn--primary:hover {
  background: #00474d;
  border-color: #00474d;
}
.rrx-btn--primary:disabled {
  background: var(--rossa-surface);
  border-color: var(--rossa-border);
  color: var(--rossa-muted);
}
.rrx-btn--ghost {
  background: var(--rossa-white);
  color: var(--rossa-ink);
  border-color: var(--rossa-border);
}
.rrx-btn--ghost:hover { background: var(--rossa-surface); }
.rrx-card__actions .rrx-btn,
.rrx-modal__footer .rrx-btn { margin-top: 0; }

/*----- 82.8 Fuera los iconos decorativos: manda la palabra -------------------
  Se conservan solo dos: el galon del acordeon, que ES el control, y los
  fa-spinner, que no son iconografia sino el estado de carga en movimiento. */
.rrx-btn > i[class*="fa-"]:not(.fa-spinner),
.rrx-link > i[class*="fa-"],
.rrx-banner > i[class*="fa-"],
.rrx-badge > i[class*="fa-"],
.rrx-modal__header > i[class*="fa-"],
.rrx-error-block__title > i[class*="fa-"],
.rrx-card__cancel-note > i[class*="fa-"],
.rrx-card__room > i[class*="fa-"],
.rrx-card__dates > i[class*="fa-"],
.rrx-folio__partner > i[class*="fa-"],
.rrx-field__sub > i[class*="fa-"] { display: none; }

/*----- 82.9 Avisos, vacios y errores ----------------------------------------*/
.rrx-banner {
  padding: 14px 16px;
  border-radius: var(--rossa-radius);
}
.rrx-banner--error,
.rrx-error-block,
.rrx-card__cancel-note {
  background: var(--rossa-salmon);
  border: 0;
  border-radius: var(--rossa-radius);
  color: var(--rossa-red);
}
.rrx-error-block__title { font-weight: 700; }
.rrx-empty {
  background: var(--rossa-tint);
  border: 0;
  border-radius: var(--rossa-radius);
  padding: 24px;
  color: var(--rossa-muted);
}
.rrx-link { color: var(--rossa-cyan-fig); }

/*----- 82.10 Modal, mismas medidas que el canon de la 70 --------------------*/
.rrx-modal__backdrop { background: rgba(22, 41, 45, .42); }
.rrx-modal__dialog {
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  box-shadow: 0 12px 40px rgba(20, 40, 60, .16);
}
.rrx-modal__header {
  min-height: 44px;
  padding: 10px 16px;
  box-sizing: border-box;
  background: var(--rossa-surface-2);
  border-bottom: 1px solid var(--rossa-border);
  font-size: 15px;
  font-weight: 600;
  color: var(--rossa-navy);
}
.rrx-modal__body {
  padding: 20px 24px;
  color: var(--rossa-ink);
}
.rrx-modal__footer {
  padding: 14px 24px;
  background: var(--rossa-strip-soft);
  border-top: 1px solid var(--rossa-border);
}

/*----- 82.11 Capa de carga --------------------------------------------------*/
.rrx-loading-overlay { background: rgba(255, 255, 255, .88); }
.rrx-loading-overlay__box {
  border: 1px solid var(--rossa-border);
  border-radius: 10px;
  box-shadow: 0 12px 40px rgba(20, 40, 60, .16);
  color: var(--rossa-ink);
}
.rrx-loading-overlay__box i { color: var(--rossa-petrol); }

/*----- 82.12 Movil (<=700px): la tabla de folios pasa a fichas --------------*/
@media (max-width: 700px) {
  /* El bloque compartido mete 14px de sangria para el acordeon; aqui no hay acordeon. */
  #contenido_admin .rrx-container .rossa-filters { padding: 0; }
  #contenido_admin .rrx-container .rossa-filter-actions { display: block; }
  #contenido_admin .rrx-container .rossa-filter-actions .admin_boton { width: 100%; }
  #contenido_admin .rrx-results__title { margin-top: 18px; }

  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > thead { display: none; }
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody,
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody > tr,
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody > tr > td {
    display: block;
    width: auto;
    box-sizing: border-box;
  }
  /* La ficha es el <tbody>: dentro caben la fila resumen y la del detalle. */
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody.rrx-list-item {
    margin-bottom: 10px;
    background: var(--rossa-white);
    border: 1px solid var(--rossa-border);
    border-radius: var(--rossa-radius);
  }
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody > tr > td {
    height: auto;
    padding: 2px 14px;
    text-align: left;
    border: 0;
  }
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody > tr.rrx-list-item__header > td { border-bottom: 0; }
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody > tr.rrx-list-item__header > td.rrx-list-item__id {
    padding-top: 12px;
    padding-bottom: 6px;
    font-size: 15px;
  }
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody > tr.rrx-list-item__header > td:nth-child(4) {
    padding-top: 8px;
    padding-bottom: 4px;
  }
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody > tr > td.rrx-list-item__name::before,
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody > tr > td.rrx-list-item__partner::before {
    display: block;
    color: var(--rossa-muted);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
  }
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody > tr > td.rrx-list-item__name::before { content: 'Nombre'; }
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody > tr > td.rrx-list-item__partner::before { content: 'Cliente'; }
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody > tr > td.rrx-list-item__summary {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 8px;
    padding: 9px 14px 11px;
    border-top: 1px solid var(--rossa-border);
  }
  #contenido_admin table.rossa-tbl.rossa-tbl.rrx-list > tbody > tr > td.rrx-list-item__detail { padding: 0 12px 12px; }

  .rrx-folio { padding: 14px; }
  .rrx-card { padding: 12px; }
  /* El modal cuelga fuera de #contenido_admin: aqui el ambito es la clase rrx-. */
  .rrx-modal__footer { flex-wrap: wrap; }
  .rrx-diff li { overflow-wrap: anywhere; }
  /* El pie fijo tapa la ultima ficha; solo hace hueco cuando el paginador esta dentro. */
  body:has(#rossa-actionbar .rossa-pager) #contenido_admin .rrx-results { margin-bottom: 100px; }
}

/*=============================================================================
  84. Inicio por widgets (módulo inic01)
=============================================================================*/
:root {
  --rossa-canal-booking: #003580;
  --rossa-canal-airbnb:  #ff5a5f;
  --rossa-canal-expedia: #f8cd06;
  --rossa-leyenda-ink:   #54555a;
  --rossa-panel-soft:    #f9f9f9;
}

.rossa-i--mas    { -webkit-mask-image: url("https://cdn.rossa.app/icons/plus.svg");  mask-image: url("https://cdn.rossa.app/icons/plus.svg"); }
.rossa-i--cerrar { -webkit-mask-image: url("https://cdn.rossa.app/icons/x.svg");     mask-image: url("https://cdn.rossa.app/icons/x.svg"); }
.rossa-i--ayuda  { -webkit-mask-image: url("https://cdn.rossa.app/icons/circle-question-mark.svg"); mask-image: url("https://cdn.rossa.app/icons/circle-question-mark.svg"); }

#contenido_admin:has(> #rossa-inicio) > h1 {
  color: var(--rossa-red);
  font-family: var(--rossa-font);
  font-size: 24px;
  font-weight: 700;
  line-height: 20px;
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 40px;
}
#contenido_admin > h1 > .rossa-inicio__personalizar {
  margin-left: auto;
  padding: 8px 16px;
  background: var(--rossa-white);
  font-size: 13px;
  line-height: 16px;
  cursor: pointer;
}
#contenido_admin > h1 > .rossa-inicio__personalizar[aria-pressed="true"] { background: var(--rossa-strip); }

.rossa-inicio { font-family: var(--rossa-font); color: var(--rossa-navy); }
.rossa-inicio__bandeja .rossa-btn-negative { padding: 8px 16px; background: var(--rossa-white); font-size: 13px; line-height: 16px; cursor: pointer; }
.rossa-inicio__bandeja .rossa-btn-negative:hover { background: var(--rossa-strip); }
.rossa-inicio__bandeja-acciones .admin_boton { padding: 8px 16px; font-size: 13px; line-height: 16px; }

.rossa-inicio__rejilla {
  container: inicio-rejilla / inline-size;
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 40px 48px;
  align-items: start;
}
.rossa-widget { position: relative; grid-column: span 12; min-width: 0; }
.rossa-widget--tercio { grid-column: span 4; }
/* Cada contador ocupa dos filas, la tarjeta y su lista: así las tarjetas de una fila miden lo mismo y abrir una lista solo crece por debajo. */
.rossa-widget--tercio { display: grid; grid-row: span 2; grid-template-rows: subgrid; row-gap: 0; }
.rossa-widget--tercio > .rossa-contador__lista { align-self: start; }
.rossa-widget--mitad  { grid-column: span 6; }
/* Cuatro contadores (los únicos widgets de un tercio) van en una fila cuando la rejilla da para que cada uno quepa entero. */
@container inicio-rejilla (min-width: 1240px) {
  .rossa-inicio__rejilla:has(> .rossa-widget--tercio ~ .rossa-widget--tercio ~ .rossa-widget--tercio ~ .rossa-widget--tercio) > .rossa-widget--tercio { grid-column: span 3; }
  .rossa-inicio__rejilla:has(> .rossa-widget--tercio ~ .rossa-widget--tercio ~ .rossa-widget--tercio ~ .rossa-widget--tercio) .rossa-contador { gap: 12px; padding: 16px 12px 16px 20px; }
  .rossa-inicio__rejilla:has(> .rossa-widget--tercio ~ .rossa-widget--tercio ~ .rossa-widget--tercio ~ .rossa-widget--tercio) .rossa-contador__cifra { min-width: 56px; }
  #contenido_admin .rossa-inicio__rejilla:has(> .rossa-widget--tercio ~ .rossa-widget--tercio ~ .rossa-widget--tercio ~ .rossa-widget--tercio) .rossa-contador__titulo { font-size: 16px; line-height: 18px; }
}
#contenido_admin .rossa-widget__titulo {
  margin: 0;
  padding: 0;
  border: 0;
  font-family: var(--rossa-font);
  font-size: 20px;
  font-weight: 700;
  line-height: 20px;
  color: var(--rossa-navy);
}
.rossa-widget__periodo { margin-left: 8px; font-size: 13px; font-weight: 400; color: var(--rossa-stroke); }
.rossa-widget__vacio,
.rossa-inicio__vacio { margin: 0; color: var(--rossa-stroke); font-size: 13px; }
.rossa-inicio__vacio { padding: 40px 0; text-align: center; }
.rossa-inicio__vacio[hidden] { display: none; }

/* --- Contadores (Reubicaciones / Check-Ins / Check-Outs / En curso) ------- */
.rossa-contador {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  box-sizing: border-box;
  min-height: 90px;
  padding: 16px 30px 16px clamp(16px, 11%, 58px);
  background: var(--rossa-white);
  border: 1px solid var(--rossa-db-500);
  border-radius: 20px;
}
.rossa-contador__cifra { display: flex; flex-direction: column; align-items: center; min-width: 90px; }
.rossa-contador__numero { font-size: 40px; font-weight: 700; line-height: 40px; color: var(--rossa-navy); }
.rossa-contador__completados { font-size: 10px; line-height: 13px; color: var(--rossa-stroke); white-space: nowrap; }
.rossa-contador__texto { flex: 1 1 auto; min-width: 0; }
#contenido_admin .rossa-contador__titulo {
  margin: 0 0 4px;
  padding: 0;
  border: 0;
  font-family: var(--rossa-font);
  font-size: 18px;
  font-weight: 700;
  line-height: 18px;
}
#contenido_admin .rossa-contador--checkins  .rossa-contador__titulo { color: var(--rossa-pag); }
#contenido_admin .rossa-contador--checkouts .rossa-contador__titulo { color: var(--rossa-red-700); }
#contenido_admin .rossa-contador--en_curso  .rossa-contador__titulo { color: var(--rossa-db-400); }
/* El SVG pinta el borde «No pagado» con la caja al 35%: sobre blanco es esa mezcla. */
.rossa-contador--reubicaciones { border-color: color-mix(in srgb, var(--rossa-no-pagado) 35%, var(--rossa-white)); }
#contenido_admin .rossa-contador--reubicaciones .rossa-contador__titulo { color: var(--rossa-no-pagado); }
.rossa-contador__desc { margin: 0; max-width: 150px; font-size: 13px; line-height: 13px; color: var(--rossa-petrol-dark); }
.rossa-contador__abrir {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  padding: 0;
  border: 0;
  border-radius: var(--rossa-radius-pill);
  background: transparent;
  color: var(--rossa-stroke);
  font-size: 20px;
  cursor: pointer;
  transition: transform .2s, background-color .2s;
}
.rossa-contador { cursor: pointer; transition: border-color .2s; }
.rossa-contador:hover { border-color: var(--rossa-stroke); }
.rossa-inicio--editando .rossa-contador { cursor: move; }
.rossa-contador:hover .rossa-contador__abrir { background: var(--rossa-strip); }
.rossa-contador__abrir:focus-visible { outline: 2px solid var(--rossa-teal); outline-offset: 2px; }
.rossa-widget--abierto .rossa-contador__abrir { transform: rotate(45deg); }

/* Figma 534:2280: panel de 292 bajo un contador de 400, metido 37px bajo su borde. */
#contenido_admin .rossa-contador__lista {
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  align-items: stretch;
  gap: 14px;
  box-sizing: border-box;
  width: auto;
  margin: -37px 4% 0;
  padding: 62px 16px 32px;
  background: var(--rossa-panel-soft);
  border: 1px solid var(--rossa-db-500);
  border-radius: 0 0 20px 20px;
}
#contenido_admin .rossa-contador__lista[hidden] { display: none; }
#contenido_admin .rossa-contador__lista .rossa-card { width: 100%; max-width: 383px; margin: 0 auto; }
#contenido_admin .rossa-contador__lista .rossa-card.rossa-filter-card .rossa-card-header { font-size: 12px; }
#contenido_admin .rossa-contador__lista .rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-id { width: auto; flex: 0 0 auto; padding: 0 6px 0 8px; }
#contenido_admin .rossa-contador__lista .rossa-card.rossa-filter-card .rossa-card-header > .rossa-card-dates { padding-left: 4px; padding-right: 2px; overflow: hidden; }
#contenido_admin .rossa-contador__lista .rossa-card.rossa-filter-card:has(> .rossa-card-observation) .rossa-card-header > .rossa-card-nights { padding-left: 2px; padding-right: 32px; }
.rossa-contador__vacio { margin: 0; text-align: center; font-size: 13px; color: var(--rossa-stroke); }

/* --- Sus estadísticas (Figma 534:2280, sección de 1306.93 × 235.89) --- */
.rossa-stats {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  box-sizing: border-box;
  min-height: 235.89px;
  padding: 0 24.55px 15.58px 41.5px;
  border: 1px solid var(--rossa-db-500);
  border-radius: 4.71px;
  background: color-mix(in srgb, var(--rossa-strip) 20%, var(--rossa-white));
}
#contenido_admin .rossa-stats > .rossa-widget__titulo {
  display: flex;
  align-items: center;
  height: 16.31px;
  margin: 12.02px 0 0 -18.77px;
  font-size: 15.06px;
}
.rossa-stats::before,
.rossa-stats::after {
  content: "";
  position: absolute;
  z-index: -1;
  background: center / 100% 100% no-repeat;
  pointer-events: none;
}
.rossa-stats::before {
  left: calc(25.2% - 222.25px);
  top: calc(272.5px - 272.25px);
  width: 444.5px;
  height: 544.5px;
  background-image: url("img/inicio-topo-rosa.svg");
  transform: rotate(-143.3deg) skewX(-16.61deg);
}
.rossa-stats::after {
  left: calc(70.37% - 283.05px);
  top: calc(201px - 315.25px);
  width: 566.1px;
  height: 630.5px;
  background-image: url("img/inicio-topo-cian.svg");
  transform: rotate(27.83deg) skewX(-15.72deg);
}
.rossa-stats__fila {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 300px)) 437.94px;
  justify-content: space-between;
  column-gap: 16.47px;
  row-gap: 16px;
  margin-top: 11.43px;
}
.rossa-stats__kpi,
.rossa-stats__canales {
  box-sizing: border-box;
  height: 178.51px;
  border: 1px solid color-mix(in srgb, var(--rossa-db-500) 70%, transparent);
  border-radius: 4.71px;
  background: color-mix(in srgb, var(--rossa-white) 70%, transparent);
}
.rossa-stats__kpi { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; padding: 37.09px 12px 0 35.73px; }
.rossa-stats__disco {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 23.52px;
  height: 23.52px;
  border-radius: 50%;
  background: var(--rossa-stroke);
  color: var(--rossa-white);
  font-size: 13px;
}
.rossa-stats__cifra {
  display: flex;
  align-items: center;
  height: 40.98px;
  margin-top: 10.73px;
  font-size: 58.82px;
  font-weight: 700;
  line-height: 18px;
  color: var(--rossa-navy);
  white-space: nowrap;
}
.rossa-stats__nombre {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 16.31px;
  margin-top: 9.55px;
  font-size: 15px;
  font-weight: 600;
  line-height: 18px;
  color: var(--rossa-navy);
  white-space: nowrap;
}
.rossa-stats__nombre .rossa-i--ayuda { font-size: 14px; color: var(--rossa-stroke); opacity: .5; cursor: help; }
.rossa-stats__nombre .rossa-i--ayuda:hover,
.rossa-stats__nombre .rossa-i--ayuda:focus-visible { opacity: 1; outline: none; }

.rossa-stats__canales { display: flex; flex-direction: column; align-items: flex-start; height: auto; min-height: 178.51px; margin-left: 39.13px; padding-top: 25.57px; overflow: hidden; }
.rossa-stats__leyenda {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px 20px;
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: 0 12px;
  list-style: none;
  font-size: 9.41px;
  line-height: 11.06px;
  color: var(--rossa-leyenda-ink);
  white-space: nowrap;
}
.rossa-stats__leyenda li { display: inline-flex; align-items: center; gap: 5px; font-size: inherit; }
.rossa-stats__leyenda li::before { content: ""; flex: 0 0 auto; width: 10.7px; height: 10.7px; border-radius: 50%; background: var(--rossa-canal); }
.rossa-stats__dona { display: block; flex: 0 0 auto; width: 246px; height: 123px; margin: auto 0 0 91px; }
.rossa-stats__sin-datos { align-self: center; margin: auto 0; font-size: 13px; color: var(--rossa-stroke); }
.rossa-stats__sin-datos[hidden] { display: none; }

.rossa-stats__canal--interno { --rossa-canal: var(--rossa-red-800); }
.rossa-stats__canal--web     { --rossa-canal: var(--rossa-teal); }
.rossa-stats__canal--booking { --rossa-canal: var(--rossa-canal-booking); }
.rossa-stats__canal--airbnb  { --rossa-canal: var(--rossa-canal-airbnb); }
.rossa-stats__canal--expedia { --rossa-canal: var(--rossa-canal-expedia); }
.rossa-stats__canal--a       { --rossa-canal: var(--rossa-teal); }
.rossa-stats__canal--b       { --rossa-canal: var(--rossa-cyan-fig); }
.rossa-stats__canal--c       { --rossa-canal: var(--rossa-green-fig); }
.rossa-stats__canal--d       { --rossa-canal: var(--rossa-coral); }
.rossa-stats__canal--e       { --rossa-canal: var(--rossa-petrol); }
.rossa-stats__canal--f       { --rossa-canal: var(--rossa-ink); }
.rossa-stats__canal--g       { --rossa-canal: var(--rossa-muted); }
.rossa-stats__canal--otros   { --rossa-canal: var(--rossa-border); }
.rossa-stats__dona path { fill: var(--rossa-canal); }

/* --- Evolución ----------------------------------------------------------- */
.rossa-evolucion {
  box-sizing: border-box;
  padding: 30px 26px 20px;
  border: 1px solid var(--rossa-db-500);
  border-radius: 20px;
  background: var(--rossa-white);
}
.rossa-evolucion__cabeza { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 16px; }
.rossa-evolucion__vista { display: inline-flex; align-items: center; gap: 8px; margin: 12px 0 0; font-size: 13px; color: var(--rossa-stroke); }
.rossa-evolucion__vista .rossa-i--ayuda { font-size: 12px; cursor: help; }
.rossa-evolucion__selector {
  display: inline-flex;
  padding: 3px;
  border: 1px solid var(--rossa-db-500);
  border-radius: var(--rossa-radius);
  background: var(--rossa-panel-soft);
}
.rossa-evolucion__selector button {
  padding: 7px 14px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  font-family: var(--rossa-font);
  font-size: 13px;
  line-height: 16px;
  color: var(--rossa-stroke);
  cursor: pointer;
}
.rossa-evolucion__selector button:hover { color: var(--rossa-navy); }
.rossa-evolucion__selector button[aria-pressed="true"] {
  background: var(--rossa-white);
  color: var(--rossa-navy);
  font-weight: 600;
  box-shadow: 0 0 0 1px var(--rossa-db-500);
}
.rossa-evolucion__selector button:focus-visible { outline: 2px solid var(--rossa-teal); outline-offset: 1px; }

.rossa-evolucion__leyenda { display: flex; gap: 18px; margin: 22px 0 10px; padding: 0; list-style: none; font-size: 13px; color: var(--rossa-stroke); }
.rossa-evolucion__leyenda li { display: inline-flex; align-items: center; gap: 8px; }
.rossa-evolucion__leyenda li::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--rossa-serie); }
.rossa-evolucion__serie--ocupacion   { --rossa-serie: var(--rossa-red); }
.rossa-evolucion__serie--facturacion { --rossa-serie: var(--rossa-teal); }
.rossa-evolucion[data-vista="ocupacion"]   .rossa-evolucion__leyenda .rossa-evolucion__serie--facturacion,
.rossa-evolucion[data-vista="facturacion"] .rossa-evolucion__leyenda .rossa-evolucion__serie--ocupacion { display: none; }

.rossa-evolucion__lienzo { position: relative; min-height: 300px; }
.rossa-evolucion__svg { display: block; width: 100%; height: auto; overflow: visible; }
.rossa-evolucion__estado { display: flex; align-items: center; justify-content: center; min-height: 300px; margin: 0; font-size: 13px; color: var(--rossa-stroke); }
.rossa-evolucion__rejilla { stroke: var(--rossa-db-500); stroke-dasharray: 3 4; }
.rossa-evolucion__eje { font-family: var(--rossa-font); font-size: 11px; fill: var(--rossa-stroke); }
.rossa-evolucion__eje--x { fill: var(--rossa-red); fill-opacity: .6; }
.rossa-evolucion__hoy { stroke: var(--rossa-stroke); stroke-opacity: .4; stroke-dasharray: 2 3; }
.rossa-evolucion__linea { fill: none; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.rossa-evolucion__linea--ocupacion   { stroke: var(--rossa-red); }
.rossa-evolucion__linea--facturacion { stroke: var(--rossa-teal); }
.rossa-evolucion__guia { stroke: var(--rossa-stroke); stroke-opacity: .35; }
.rossa-evolucion__punto { stroke: var(--rossa-white); stroke-width: 2; }
.rossa-evolucion__punto--ocupacion   { fill: var(--rossa-red); }
.rossa-evolucion__punto--facturacion { fill: var(--rossa-teal); }
.rossa-evolucion__ficha {
  position: absolute;
  top: 8px;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 8px 12px;
  border: 1px solid var(--rossa-db-500);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  font-size: 12px;
  color: var(--rossa-navy);
  pointer-events: none;
  white-space: nowrap;
}
.rossa-evolucion__ficha[hidden] { display: none; }
.rossa-evolucion__ficha span { display: inline-flex; align-items: center; gap: 6px; }
.rossa-evolucion__ficha span::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--rossa-serie); }

/* --- Modo personalizar --------------------------------------------------- */
.rossa-widget__quitar {
  position: absolute;
  top: -12px;
  right: -12px;
  z-index: 3;
  display: none;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-white);
  color: var(--rossa-coral);
  font-size: 14px;
  cursor: pointer;
}
.rossa-widget__quitar:hover { background: var(--rossa-salmon); }
.rossa-inicio--editando .rossa-widget__quitar { display: inline-flex; }
.rossa-inicio--editando .rossa-widget {
  cursor: move;
  outline: 1px dashed var(--rossa-stroke);
  outline-offset: 8px;
  border-radius: 20px;
}
.rossa-widget.ui-sortable-helper { opacity: .85; }
.rossa-widget--hueco {
  box-sizing: border-box;
  border: 2px dashed var(--rossa-db-500);
  border-radius: 20px;
  background: var(--rossa-tint);
  visibility: visible !important;
}

.rossa-inicio__bandeja {
  margin: 0 0 40px;
  padding: 20px 24px;
  border-radius: 10px;
  background: var(--rossa-tint);
}
.rossa-inicio__bandeja[hidden] { display: none; }
.rossa-inicio__bandeja-cabeza {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.rossa-inicio__bandeja-ayuda { margin: 0; font-size: 13px; color: var(--rossa-petrol-dark); }
.rossa-inicio__bandeja-acciones { display: flex; gap: 8px; }
#contenido_admin .rossa-inicio__bandeja-titulo {
  margin: 20px 0 12px;
  font-family: var(--rossa-font);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
.rossa-inicio__disponibles {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.rossa-inicio__disponible {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  border: 1px solid var(--rossa-db-500);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
.rossa-inicio__disponible[hidden] { display: none; }
.rossa-inicio__disponible-texto { display: flex; flex-direction: column; gap: 2px; min-width: 0; font-size: 12px; color: var(--rossa-stroke); }
.rossa-inicio__disponible-texto strong { font-size: 14px; color: var(--rossa-navy); }
.rossa-inicio__sin-disponibles { margin: 0; font-size: 13px; color: var(--rossa-stroke); }
.rossa-inicio__sin-disponibles[hidden] { display: none; }

@media (max-width: 1280px) {
  .rossa-inicio__rejilla { gap: 32px 24px; }
  .rossa-contador { padding-right: 16px; }
  .rossa-contador__cifra { min-width: 64px; }
}
@media (max-width: 1100px) {
  .rossa-widget--tercio { grid-column: span 6; }
  .rossa-stats { padding-left: 24.55px; }
  #contenido_admin .rossa-stats > .rossa-widget__titulo { margin-left: -1.82px; }
  .rossa-stats__fila { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .rossa-stats__canales { grid-column: 1 / -1; justify-self: center; width: 398.81px; max-width: 100%; margin-left: 0; }
}
@media (max-width: 760px) {
  .rossa-widget--tercio,
  .rossa-widget--mitad { grid-column: span 12; }
  #contenido_admin .rossa-contador__lista { margin-left: 16px; margin-right: 16px; }
  #contenido_admin:has(> #rossa-inicio) > h1 { flex-wrap: wrap; }
  .rossa-stats { min-height: 0; padding: 0 12px 12px; }
  #contenido_admin .rossa-stats > .rossa-widget__titulo { margin: 14px 0 0 4px; }
  .rossa-stats__fila { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 12px; }
  .rossa-stats__kpi { height: auto; padding: 14px 12px; }
  .rossa-stats__disco { width: 20px; height: 20px; font-size: 11px; }
  .rossa-stats__cifra { height: auto; margin-top: 8px; font-size: 32px; line-height: 1; }
  .rossa-stats__nombre { gap: 4px; height: auto; margin-top: 6px; font-size: 12px; line-height: 16px; }
  .rossa-stats__nombre .rossa-i--ayuda { font-size: 12px; }
  .rossa-stats__canales { width: 100%; height: auto; align-items: center; padding: 16px 12px 0; }
  .rossa-stats__leyenda { flex-wrap: wrap; justify-content: center; gap: 8px 16px; height: auto; padding: 0; font-size: 11px; line-height: 14px; }
  .rossa-stats__dona { width: 100%; max-width: 246px; height: auto; margin: 16px auto 0; }
  .rossa-evolucion { padding: 20px 16px 16px; }
}
@media (max-width: 520px) {
  .rossa-stats__fila { grid-template-columns: minmax(0, 1fr); }
  .rossa-stats__kpi { flex-direction: row; align-items: center; gap: 10px; padding: 12px 16px; }
  .rossa-stats__disco { width: 28px; height: 28px; font-size: 14px; }
  .rossa-stats__nombre { order: 1; margin: 0; font-size: 14px; }
  .rossa-stats__cifra { order: 2; margin: 0 0 0 auto; font-size: 28px; }
}
/*==============================================================================
  85. VER RESERVA: ficha fija + pestañas + raíl de acciones
==============================================================================*/
#contenido_admin .rv-page {
  position: relative;
  display: flex;
  align-items: stretch;
  background: #fff;
  border-radius: 12px;
  min-height: 620px;
}
#contenido_admin .rv-page.rv-preinit .rv-panel { display: none; }

#contenido_admin .rv-sr {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
#contenido_admin .rv-empty { color: var(--rossa-stroke); }

/* `<dialog>` nativo: el navegador ya lo oculta y lo centra, solo hay que vestirlo. */
#contenido_admin .rv-dialog {
  max-width: 460px;
  padding: 26px 28px;
  border: 0;
  border-radius: 12px;
  box-shadow: 0 10px 40px rgba(0, 0, 0, .25);
  font-family: var(--rossa-font);
  font-size: 13px;
  line-height: 1.5;
  color: var(--rossa-navy);
}
#contenido_admin .rv-dialog::backdrop { background: rgba(0, 0, 0, .35); }
#contenido_admin .rv-dialog__title {
  margin: 0 0 14px;
  /* El hueco del aspa de cerrar. */
  padding-right: 32px;
  font-size: 16px;
  font-weight: 600;
  color: var(--rossa-navy);
}
#contenido_admin .rv-dialog__close {
  position: absolute;
  top: 14px;
  right: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border: 0;
  border-radius: var(--rossa-radius);
  background: transparent;
  color: var(--rossa-stroke);
  cursor: pointer;
}
#contenido_admin .rv-dialog__close:hover { background: var(--rossa-strip); color: var(--rossa-navy); }
#contenido_admin .rv-dialog__close:focus { outline: none; }
#contenido_admin .rv-dialog__close:focus-visible { outline: 2px solid var(--rossa-petrol); outline-offset: 1px; }
#contenido_admin .rv-dialog__close .rossa-i { font-size: 20px; }
#contenido_admin .rv-send-dialog .rv-send-dialog__head { padding-right: 60px; }
#contenido_admin .rv-dialog p { margin: 0 0 12px; }
#contenido_admin .rv-dialog ul { margin: 0 0 16px; padding-left: 18px; }
#contenido_admin .rv-dialog li { margin-bottom: 5px; }
#contenido_admin .rv-dialog__check {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-bottom: 20px;
}
#contenido_admin .rv-dialog__actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}
#contenido_admin dialog[data-dialog="codigos"] .rv-dialog__actions,
#contenido_admin dialog[data-dialog="tarjeta"] .rv-dialog__actions,
#contenido_admin dialog[data-dialog="iva"] .rv-dialog__actions,
#contenido_admin dialog[data-dialog="medio-pago"] .rv-dialog__actions {
  justify-content: center;
}
#contenido_admin dialog[data-dialog="tarjeta"] .rv-dialog__actions:not(:has(.admin_boton--danger)) {
  flex-wrap: nowrap;
}
#contenido_admin dialog[data-dialog="tarjeta"] .rv-dialog__actions:not(:has(.admin_boton--danger)) .admin_boton {
  flex: 1 1 auto;
  min-width: 0;
}
#contenido_admin .rv-dialog--wide { max-width: 600px; }
#contenido_admin .rv-dialog__select { width: 100%; margin-bottom: 20px; }

/* Tabla del diálogo de códigos: la base del proyecto, condensada para un modal. */
#contenido_admin .rv-table--codes { --rossa-tbl-row-h: 46px; }
#contenido_admin .rv-table--codes th:nth-child(1),
#contenido_admin .rv-table--codes td:nth-child(1) { width: 40%; }
#contenido_admin .rv-table--codes th:nth-child(2),
#contenido_admin .rv-table--codes td:nth-child(2) { width: 24%; }
#contenido_admin .rv-table--codes th:nth-child(3),
#contenido_admin .rv-table--codes td:nth-child(3) { width: 36%; }
#contenido_admin .rv-codes__select { width: 100%; }
#contenido_admin .rv-dialog .rv-table-wrap { margin-bottom: 22px; }
@media (max-width: 768px) {
  #contenido_admin .rv-table--codes,
  #contenido_admin .rv-table--codes thead,
  #contenido_admin .rv-table--codes tbody,
  #contenido_admin .rv-table--codes tr,
  #contenido_admin .rv-table--codes td {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }
  #contenido_admin .rv-table--codes thead { display: none; }
  #contenido_admin .rv-table--codes th:nth-child(1),
  #contenido_admin .rv-table--codes td:nth-child(1),
  #contenido_admin .rv-table--codes th:nth-child(2),
  #contenido_admin .rv-table--codes td:nth-child(2),
  #contenido_admin .rv-table--codes th:nth-child(3),
  #contenido_admin .rv-table--codes td:nth-child(3) {
    width: 100%;
  }
  #contenido_admin .rv-table--codes tbody tr {
    margin-bottom: 12px;
    padding: 12px;
    background: var(--rossa-white);
    border: 1px solid var(--rossa-border);
    border-radius: var(--rossa-radius);
  }
  #contenido_admin .rv-table--codes td {
    height: auto;
    padding: 4px 0;
  }
  /* Gana a .rossa-tbl-td--izq (§65): en la ficha móvil las 3 columnas van centradas igual. */
  #contenido_admin table.rossa-tbl.rossa-tbl.rv-table--codes > tbody > tr:not(.cab) > td.rossa-tbl-td--izq {
    text-align: center;
  }
  #contenido_admin .rv-table--codes td[data-label]::before {
    content: attr(data-label);
    display: block;
    color: var(--rossa-navy);
    text-transform: uppercase;
    letter-spacing: .04em;
    font-size: 10px;
    font-weight: 700;
    margin-bottom: 2px;
  }
}
/*----- 85.9 Pestaña Pagos -----*/
#contenido_admin .rv-pay__head {
  display: flex;
  align-items: flex-start;
  /* Separación medida en el Figma; con `space-between` quedaban de extremo a extremo. */
  gap: 95px;
  margin-bottom: 30px;
}
#contenido_admin .rv-pay__status { display: flex; align-items: flex-start; gap: 22px; }
#contenido_admin .rv-pay__status-name {
  margin: 0 0 10px;
  font-size: 24px;
  font-weight: 700;
  line-height: 1;
}
#contenido_admin .rv-pay__amounts { display: grid; row-gap: 6px; margin: 0; font-size: 10px; }
#contenido_admin .rv-pay__amounts > div {
  display: grid;
  grid-template-columns: 130px auto;
  align-items: center;
  gap: 10px;
}
#contenido_admin .rv-pay__amounts dt { margin: 0; text-transform: uppercase; letter-spacing: .04em; color: var(--rossa-navy); }
#contenido_admin .rv-pay__amounts dd { margin: 0; font-weight: 700; color: var(--rossa-navy); }
#contenido_admin .rv-pay__amounts-due dt,
#contenido_admin .rv-pay__amounts-due dd { color: var(--rossa-red-dark); font-weight: 700; }

#contenido_admin .rv-pay__label,
#contenido_admin .rv-label {
  margin: 0 0 8px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--rossa-navy);
}
#contenido_admin .rv-pay__marks-list { display: flex; gap: 10px; }
#contenido_admin .rv-pay__section {
  margin: 30px 0 12px;
  font-size: 14px;
  font-weight: 600;
  text-transform: uppercase;
  color: var(--rossa-navy);
}
/* Rejilla y no flex: así la segunda columna cae en la misma x en todas las filas. */
#contenido_admin .rv-pay__row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  gap: 46px;
}
#contenido_admin .rv-pay__field { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
/* IVA y Facturación llevan la etiqueta al lado del control, no encima. */
#contenido_admin .rv-pay__row--inline { align-items: center; }
#contenido_admin .rv-pay__row--inline .rv-pay__field { flex-direction: row; align-items: center; gap: 16px; }
#contenido_admin .rv-pay__field-label {
  font-size: 14px;
  font-weight: 600;
  text-transform: uppercase;
  color: var(--rossa-navy);
}
#contenido_admin .rv-pay__card-cta { margin-bottom: 18px; }
#contenido_admin .rv-disabled { opacity: .45; cursor: not-allowed; }

/* `factFolioUIHelper` devuelve `.rossa-btn--default` (primario relleno): en esta pestaña
   todos los botones son el perfilado petrol, así que se reviste como `.rossa-btn-negative`. */
#contenido_admin .rv-pay .rossa-btn {
  /* Solo el color: el tamaño lo da `.rossa-btn`, que es el que usan los demás botones. */
  /* §33 fuerza el relleno teal con !important; sin empatarlo no hay override posible. */
  background: transparent !important;
  color: var(--rossa-petrol) !important;
  border: 1px solid var(--rossa-petrol) !important;
  border-radius: 5px !important;
}
#contenido_admin .rv-pay .rossa-btn:hover {
  background: var(--rossa-strip) !important;
  border-color: var(--rossa-petrol) !important;
  color: var(--rossa-petrol) !important;
}
/* Un icono junto a una etiqueta es ruido (regla 8 de CLAUDE.md). */
#contenido_admin .rv-pay .rossa-btn > i { display: none; }

/* `.admin_boton` es block con `margin: 14px auto`, que lo centra en cuanto tiene sitio. */
#contenido_admin .rv-pay .admin_boton,
#contenido_admin .rv-dialog .admin_boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  margin: 0;
}

/* Insignia redonda de estado de pago: la misma pieza en grande y en pequeño. */
#contenido_admin .rv-money-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--rossa-stroke);
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-white);
  cursor: pointer;
}
#contenido_admin .rv-money-badge--lg { width: 76px; height: 76px; font-size: 24px; cursor: default; }
#contenido_admin .rv-money-badge--pag { background: var(--rossa-pag); }
#contenido_admin .rv-money-badge--np  { background: var(--rossa-no-pagado); }
#contenido_admin .rv-money-badge--pen { background: var(--rossa-pendiente); }
#contenido_admin .rv-money-badge--per { background: var(--rossa-per); }
#contenido_admin .rv-money-badge--fc  { background: var(--rossa-pendiente); }
#contenido_admin .rv-money-badge--off { background: var(--rossa-hairline); }
#contenido_admin button.rv-money-badge--off:hover { background: var(--rossa-stroke); }
#contenido_admin .rv-pay__status-name--pag { color: var(--rossa-pag); }
#contenido_admin .rv-pay__status-name--np  { color: var(--rossa-no-pagado); }
#contenido_admin .rv-pay__status-name--pen { color: var(--rossa-pendiente); }
#contenido_admin .rv-pay__status-name--per { color: var(--rossa-per); }
#contenido_admin .rv-pay__status-name--fc  { color: var(--rossa-pendiente); }

/* Desglose de pagos: la tabla base de §65, con el pie de totales del Figma. */
#contenido_admin .rv-table--pagos { table-layout: fixed; --rossa-tbl-row-h: 68px; }
#contenido_admin .rv-pay .rv-table-wrap { margin-bottom: 34px; }
#contenido_admin .rv-table--pagos > thead > tr > th:nth-child(1) { width: 9%; }
#contenido_admin .rv-table--pagos > thead > tr > th:nth-child(2) { width: 26%; }
#contenido_admin .rv-table--pagos > thead > tr > th:nth-child(3) { width: 34%; }
#contenido_admin .rv-table--pagos > thead > tr > th:nth-child(4) { width: 16%; }
#contenido_admin .rv-table--pagos > thead > tr > th:nth-child(5) { width: 15%; }
#contenido_admin .rv-pay__td-kind { text-transform: uppercase; }
/* §65.3 fija peso y color de toda celda con (1,3,3): sin empatarlo no hay override. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr:not(.cab) > td.rv-pay__td-amount { font-weight: 700; color: var(--rossa-navy); }
#contenido_admin .rv-pay__td-amount small {
  display: block;
  font-size: 10px;
  font-weight: 600;
  color: var(--rossa-red-dark);
}
/* Se tiñe el icono, no el enlace: §65.4 colorea todo <a> de celda y gana con (1,7,2). */
#contenido_admin .rv-pay__edit { line-height: 0; }
#contenido_admin .rv-pay__edit .rossa-i { font-size: 20px; background-color: var(--rossa-tbl-ico); }
#contenido_admin .rv-pay__edit:hover .rossa-i { background-color: var(--rossa-petrol); }
/* El fallido no suma al total: se lee apagado y solo el tipo va en naranja. */
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.rv-pay__row--failed > td,
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.rv-pay__row--failed > td.rv-pay__td-amount { color: var(--rossa-stroke); }
#contenido_admin table.rossa-tbl.rossa-tbl > tbody > tr.rv-pay__row--failed > td.rv-pay__td-kind { color: var(--rossa-no-pagado); }

/* El filete de la cabecera legacy llega al pie: §65.2 solo lo apaga en <thead> y en tr.cab. */
#contenido_admin .rv-pay__totals > tr > th::after { content: none; display: none; }
#contenido_admin .rv-pay__totals > tr > th,
#contenido_admin .rv-pay__totals > tr > td {
  height: 21px;
  padding: 0 var(--rossa-tbl-pad-x);
  border: 0;
  background: transparent;
  vertical-align: middle;
}
#contenido_admin .rv-pay__totals > tr > th {
  text-align: center;
  font-size: 12px;
  font-weight: 400;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-navy);
}
#contenido_admin .rv-pay__totals > tr > td {
  text-align: center;
  font-size: 14px;
  font-weight: 700;
  color: var(--rossa-navy);
}
/* Un <tfoot> no admite borde propio: el filete de cierre va en su primera fila. */
#contenido_admin .rv-pay__totals > tr:first-child > th,
#contenido_admin .rv-pay__totals > tr:first-child > td {
  border-top: 2px solid var(--rossa-hairline);
  padding-top: 28px;
}
#contenido_admin .rv-pay__totals > tr:nth-child(2) > th,
#contenido_admin .rv-pay__totals > tr:nth-child(2) > td { padding-bottom: 16px; }
#contenido_admin .rv-pay__totals > tr.rv-pay__totals-due > th,
#contenido_admin .rv-pay__totals > tr.rv-pay__totals-due > td {
  height: 36px;
  background: var(--rossa-tint-red);
  color: var(--rossa-red-dark);
  font-weight: 700;
}

/* Las dos caras de la tarjeta: cajas con posición, sin ilustración importada. */
#contenido_admin .rv-pay__card {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-bottom: 34px;
}
#contenido_admin .rv-credit {
  position: relative;
  box-sizing: border-box;
  flex: 0 0 auto;
  width: 208px;
  height: 121px;
  border-radius: 10px;
  background: var(--rossa-pink);
  font-family: var(--rossa-font);
  color: var(--rossa-strip);
}
#contenido_admin .rv-pay__card--empty .rv-credit { background: var(--rossa-stroke); opacity: .45; }
#contenido_admin .rv-credit__stripe {
  position: absolute;
  top: 19px;
  left: 14px;
  width: 97px;
  height: 10px;
  border-radius: 999px;
  background: var(--rossa-white);
}
#contenido_admin .rv-credit__chip {
  position: absolute;
  top: 43px;
  left: 30px;
  width: 26px;
  height: 20px;
  border-radius: 4px;
  background: var(--rossa-chip);
}
#contenido_admin .rv-pay__card--empty .rv-credit__chip { background: var(--rossa-white); opacity: .5; }
#contenido_admin .rv-credit__number {
  position: absolute;
  top: 71px;
  left: 0;
  width: 100%;
  font-size: 14px;
  font-weight: 600;
  text-align: center;
}
#contenido_admin .rv-credit__expiry {
  position: absolute;
  top: 90px;
  left: 0;
  width: 100%;
  font-size: 10px;
  font-weight: 600;
  text-align: center;
}
#contenido_admin .rv-credit__holder {
  position: absolute;
  top: 102px;
  left: 14px;
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
}

#contenido_admin .rv-pay__card-field {
  display: grid;
  grid-template-columns: 1fr 18px;
  align-items: center;
  gap: 0px 10px;
  margin: 0;
  padding: 7px 0 0px;
  border-bottom: 1px solid var(--rossa-hairline);
}
#contenido_admin .rv-pay__card-label {
  grid-column: 1;
  font-size: 10px;
  line-height: 1.2;
  color: var(--rossa-stroke);
}
/* La fila vacía del estado sin tarjeta: reserva el alto del valor que no hay. */
#contenido_admin .rv-pay__card-value {
  grid-column: 1;
  min-height: 15px;
}
/* Sin modificador no hay máscara que resolver, y el color llenaría el cuadro entero. */
#contenido_admin .rv-pay__card-mark {
  grid-column: 2;
  grid-row: 1 / span 2;
  display: none;
  font-size: 18px;
  color: var(--rossa-pag);
}
#contenido_admin .rv-pay__card-mark.rossa-i--valido,
#contenido_admin .rv-pay__card-mark.rossa-i--invalido { display: inline-block; }
#contenido_admin .rv-pay__card-mark--bad { color: var(--rossa-no-pagado); }
/* El campo se lee como el dato que sustituye: sin caja, solo el filete de la fila.
   Lleva `input.` para empatar a `#contenido_admin input[type="text"]` de §12. */
#contenido_admin input.rv-pay__card-input {
  grid-column: 1;
  box-sizing: border-box;
  width: 100%;
  min-height: 15px;
  padding: 3px;
  border: 0;
  background: transparent;
  font-family: var(--rossa-font);
  /* Un punto más grande y en navy: así se distingue del rótulo, que va en 10px gris. */
  font-size: 12px;
  font-weight: 500;
  color: var(--rossa-navy);
}
#contenido_admin input.rv-pay__card-input::placeholder { color: var(--rossa-stroke); }
#contenido_admin input.rv-pay__card-input[data-card-field="nombre"] { text-transform: uppercase; }
/* §12 le pone un halo al foco de cualquier input; aquí el acuse es el filete de la fila. */
#contenido_admin input.rv-pay__card-input:focus { outline: none; box-shadow: none; }
#contenido_admin .rv-pay__card-field:focus-within { border-bottom-color: var(--rossa-petrol); }
#contenido_admin .rv-pay__card-form { flex: 0 0 193px; }
#contenido_admin .rv-dialog--tarjeta .rv-pay__card { margin: 0 0 22px; }

/*----- 85.10 Pestaña Timeline (SAT técnica, gestor amigable) y timeline general (module=timeline, .rossa-rtl) -----*/
/* El visor de notificaciones y `showRTL()` se reutilizan tal cual: aquí solo cambia el aspecto. */
#contenido_admin :is(.rv-timeline__block, .rossa-rtl__block) { margin-bottom: 34px; }

/* La sección ya pone su rótulo; el del bloque heredado y su icono suelto sobran. */
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rossa-ctr__icon--timeline,
#contenido_admin .rv-timeline #bloque-timeline > h1 { display: none; }

/* Cajas heredadas sin fondo ni sangrado: el panel ya los pone. */
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rossa-ctr-booking,
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rossa-ctr-block,
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rossa-ctr {
  width: auto;
  max-width: 100%;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}
/* Era un flex que centraba: la tabla, más ancha que el panel, se salía por los dos lados. */
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rossa-ctr-booking { display: block; }
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtltable { max-width: 100%; overflow-x: auto; }
/* Que crezca con su contenido y ruede dentro del bloque, en vez de estrujar columnas. */
#contenido_admin .rv-timeline .rtltable > table { width: max-content; min-width: 100%; }
#contenido_admin .rossa-rtl .rtltable > table { width: 100%; }
#contenido_admin .rossa-rtl .rtltable > table.rossa-tbl { --rossa-tbl-pad-x: 8px; }
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtltable > table.rossa-tbl { --rossa-tbl-row-h: 48px; }
/* El texto suelto del visor cuando la reserva no tiene notificaciones. */
#contenido_admin :is(.rv-timeline__block, .rossa-rtl__block) { font-size: 13px; color: var(--rossa-stroke); }
#contenido_admin .rtltable thead th a.rossa-sorting {
  color: inherit;
  text-decoration: none;
}

/* Barra de filtros: el mismo lenguaje que `.rossa-filters` (§57). */
#contenido_admin :is(.rv-timeline, .rossa-rtl) .contrtlfilter {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 16px;
  width: auto;
  margin: 0 0 22px;
}
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfilter,
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfilterlimit {
  display: flex;
  flex: 0 0 auto;
  width: auto;
  margin: 0;
  padding: 0;
}
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfilter { flex-direction: column; gap: 5px; }
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfilterlimit { flex-wrap: wrap; align-items: flex-start; gap: 16px; }
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfiltertit {
  padding: 0;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  line-height: 1.2;
  text-transform: capitalize;
  color: var(--rossa-teal);
}
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfiltercont {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  height: auto;
  min-height: 36px;
}
/* Los campos vienen sin clase: aquí se les da el aspecto de `.rossa-input`. Los dos tipos de
   fecha, porque el unificador del pie convierte `date` en `datepicker` (regla 7). */
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfiltercont input[type="date"],
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfiltercont input[type="datepicker"],
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfiltercont input[type="number"],
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfiltercont input[type="text"] {
  box-sizing: border-box;
  min-height: 36px;
  padding: 6px 10px;
  border: 1px solid var(--rossa-stroke);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-navy);
}
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfiltercont input::placeholder { color: var(--rossa-stroke); }
#contenido_admin :is(.rv-timeline, .rossa-rtl) #ft_limit { width: 90px; }
#contenido_admin :is(.rv-timeline, .rossa-rtl) #ft_id_reserva { width: 130px; }

/* Conmutadores de vista: forma de botón (radio 6) y no de etiqueta, porque se pulsan.
   Activo = tinte teal, que es el "activo" del proyecto; la roja chocaba con la regla de
   pestañas, que prohíbe el rojo como estado activo. */
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfil {
  display: inline-flex;
  align-items: center;
  box-sizing: border-box;
  height: 30px;
  padding: 0 12px;
  border: 1px solid var(--rossa-petrol);
  border-radius: 6px;
  background: var(--rossa-pager-tint);
  font-family: var(--rossa-font);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--rossa-petrol);
  white-space: nowrap;
  transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfil:hover { background: var(--rossa-strip); }
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfil.disabled {
  border-color: var(--rossa-border);
  background: var(--rossa-white);
  color: var(--rossa-muted);
}
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfil.disabled:hover {
  border-color: var(--rossa-petrol);
  color: var(--rossa-petrol);
}
/* `.hidden` es el tipo que no aplica; sin esto la regla de arriba lo devolvía a la vista. */
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfil.hidden { display: none; }

/* Filtrar es el primario; reiniciar es secundario, no destructivo. */
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfiltercont input[type="submit"].admin_boton,
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfiltercont a.admin_boton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: auto;
  height: 36px;
  /* `.admin_boton` trae su propia altura: sin el mínimo se quedaba 2px por debajo del campo. */
  min-height: 36px;
  margin: 0;
  padding: 0 18px;
  border-radius: var(--rossa-radius);
  font-size: 13px;
  line-height: 1;
}
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfiltercont a.admin_boton.admin_ko {
  padding: 0 12px;
  border: 1px solid var(--rossa-petrol) !important;
  background: transparent !important;
  color: var(--rossa-petrol) !important;
}
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtlfiltercont a.admin_boton.admin_ko:hover { background: var(--rossa-strip) !important; }

/* La franja del día separa, no es una fila de datos. */
/* El fondo va en la fila: la banda solo abarca seis columnas y el resto quedaba en blanco. */
#contenido_admin :is(.rv-timeline, .rossa-rtl) table.rossa-tbl.rossa-tbl > tbody > tr.tlday { background: var(--rossa-tint); }
#contenido_admin :is(.rv-timeline, .rossa-rtl) table.rossa-tbl.rossa-tbl > tbody > tr.tlday > td {
  height: 30px;
  background: transparent;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .06em;
  text-align: left;
  color: var(--rossa-navy);
}
/* El nivel ya no pinta la fila: en la tabla canónica las filas son neutras y el color va en
   pastilla (el patrón del calendario mensual). La columna de la barra se retira entera. */
#contenido_admin :is(.rv-timeline, .rossa-rtl) table.rossa-tbl.rossa-tbl > thead > tr > th:first-child,
#contenido_admin :is(.rv-timeline, .rossa-rtl) table.rossa-tbl.rossa-tbl > tbody > tr > td.rossa-ctr__vertical-border { display: none; }
/* `printRTLcss()` redondea la fila y, en móvil, le pone un borde izquierdo de 8px por nivel. */
#contenido_admin :is(.rv-timeline, .rossa-rtl) table.rossa-tbl.rossa-tbl > tbody > tr.rtl_line {
  border: 0;
  border-radius: 0;
  padding: 0;
}
/* Nivel: el color va en fondo, filete y punto; el texto en navy porque el amarillo no aguanta texto encima. */
#contenido_admin :is(.rv-timeline, .rossa-rtl) table.rossa-tbl.rossa-tbl > tbody > tr > td.rv-tl-level { white-space: nowrap; }
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rv-tl-badge {
  --rv-level: var(--rossa-stroke);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  box-sizing: border-box;
  height: 24px;
  padding: 0 10px 0 8px;
  border: 1px solid var(--rossa-border);
  border: 1px solid color-mix(in srgb, var(--rv-level) 45%, var(--rossa-white));
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-strip);
  background: color-mix(in srgb, var(--rv-level) 14%, var(--rossa-white));
  font-size: 11px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-navy);
}
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rv-tl-badge::before {
  content: "";
  flex: 0 0 auto;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--rv-level);
}
#contenido_admin :is(.rv-timeline, .rossa-rtl) tr.trl_nivel_1 .rv-tl-badge { --rv-level: var(--rossa-db-400); }
#contenido_admin :is(.rv-timeline, .rossa-rtl) tr.trl_nivel_2 .rv-tl-badge { --rv-level: var(--rossa-pendiente); }
#contenido_admin :is(.rv-timeline, .rossa-rtl) tr.trl_nivel_3 .rv-tl-badge { --rv-level: var(--rossa-no-pagado); }
#contenido_admin :is(.rv-timeline, .rossa-rtl) tr.trl_nivel_4 .rv-tl-badge { --rv-level: var(--rossa-red-800); }
#contenido_admin :is(.rv-timeline, .rossa-rtl) tr.trl_nivel_5 .rv-tl-badge { --rv-level: var(--rossa-pag); }
#contenido_admin :is(.rv-timeline, .rossa-rtl) table.rossa-tbl.rossa-tbl > tbody > tr > td.tddescrip,
#contenido_admin :is(.rv-timeline, .rossa-rtl) table.rossa-tbl.rossa-tbl > tbody > tr > td.tddestino { text-align: left; }
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtltable table tr td { border: 0; }
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rossa-ctr__timeline-data { font-size: 12px; }
/* json_incial, json_final y trace: el secundario pequeño del proyecto. */
#contenido_admin :is(.rv-timeline, .rossa-rtl) .ver_big_text {
  display: inline-flex;
  align-items: center;
  box-sizing: border-box;
  height: 26px;
  margin: 4px 6px 0 0;
  padding: 0 11px;
  border: 1px solid var(--rossa-petrol);
  border-radius: 5px;
  background: transparent;
  font-family: var(--rossa-font);
  font-size: 11px;
  font-weight: 600;
  line-height: 1;
  color: var(--rossa-petrol);
  cursor: pointer;
}
#contenido_admin :is(.rv-timeline, .rossa-rtl) .ver_big_text:hover { background: var(--rossa-strip); }

/* El visor de json y trace: la misma caja que los diálogos de la pantalla (`.rv-dialog`). */
#contenido_admin #bigtextcontainer {
  z-index: 10050;
  padding: 24px;
  background: rgba(0, 0, 0, .35);
}
#contenido_admin #bigtext {
  box-sizing: border-box;
  width: min(760px, 100%);
  height: auto;
  max-height: 80vh;
  padding: 26px 28px;
  border: 0;
  border-radius: 12px;
  box-shadow: 0 10px 40px rgba(0, 0, 0, .25);
  background: var(--rossa-white);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 12px;
  line-height: 1.6;
  color: var(--rossa-navy);
  white-space: pre-wrap;
  word-break: break-word;
  overflow: auto;
  display: block;
  /* Mismo hilo fino que los submenús del lateral, un punto más ancho por ser lectura larga. */
  scrollbar-width: thin;
  scrollbar-color: var(--rossa-border) transparent;
  scrollbar-gutter: stable;
}
#contenido_admin #bigtext::-webkit-scrollbar { width: 8px; height: 8px; }
#contenido_admin #bigtext::-webkit-scrollbar-track { background: transparent; }
#contenido_admin #bigtext::-webkit-scrollbar-thumb {
  border: 2px solid var(--rossa-white);
  border-radius: 999px;
  background: var(--rossa-border);
  background-clip: padding-box;
}
#contenido_admin #bigtext::-webkit-scrollbar-thumb:hover { background: var(--rossa-stroke); background-clip: padding-box; }
#contenido_admin :is(.rv-timeline, .rossa-rtl) .rtltype {
  display: inline-block;
  padding: 2px 9px;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-tint);
  font-size: 10px;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-petrol);
}
/* El único glyph de FontAwesome que queda aquí; se pinta como máscara, igual que §32. */
#contenido_admin :is(.rv-timeline, .rossa-rtl) .admin_ko .fa-undo-alt::before { content: none; }
#contenido_admin :is(.rv-timeline, .rossa-rtl) .admin_ko .fa-undo-alt {
  display: inline-block;
  width: 1em;
  height: 1em;
  background-color: currentColor;
  -webkit-mask: url("https://cdn.rossa.app/icons/rotate-ccw.svg") no-repeat center / contain;
          mask: url("https://cdn.rossa.app/icons/rotate-ccw.svg") no-repeat center / contain;
}
/* `.admin_boton` es block con `margin: 14px auto`, que lo centra en cuanto tiene sitio. */
/* «Ver todo el RTL» lleva al timeline completo: secundario, como «Editar destinatarios», y a la izquierda. */
#contenido_admin .rv-timeline #bloque-timeline > a.admin_boton.admin_ok {
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: fit-content;
  height: 36px;
  min-height: 36px;
  /* `#bloque-timeline` centra a sus hijos: `align-self` y el margen derecho lo devuelven al inicio. */
  align-self: flex-start;
  margin: 18px auto 0 0;
  padding: 0 18px;
  border: 1px solid var(--rossa-petrol);
  border-radius: var(--rossa-radius);
  background: transparent;
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  color: var(--rossa-petrol);
  text-decoration: none;
}
#contenido_admin .rv-timeline #bloque-timeline > a.admin_boton.admin_ok:hover {
  background: var(--rossa-strip);
  color: var(--rossa-petrol);
}
#contenido_admin .rv-timeline #bloque-timeline:has(tr.gestor) { width: 100%; align-items: stretch; }
#contenido_admin .rv-timeline .rtltable > table:has(tr.gestor) { width: 100%; }
#contenido_admin .rv-timeline tr.gestor td.tddescrip { font-size: 13px; color: var(--rossa-navy); }
#contenido_admin .rv-timeline tr.gestor td.tdsuceso { white-space: nowrap; }

/*----- 85.11 Pestaña Comunicaciones -----*/
#contenido_admin .rv-comms {
  display: flex;
  align-items: flex-start;
  gap: 32px;
}
#contenido_admin .rv-chat {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  height: 614px;
  border: 1px solid var(--rossa-db-500);
  border-radius: 5px;
  overflow: hidden;
}
#contenido_admin .rv-chat__head {
  flex: 0 0 auto;
  padding: 5px 16px;
  border-bottom: 1px solid var(--rossa-db-500);
  background: var(--rossa-chat-head);
}
#contenido_admin .rv-chat__name {
  margin: 0;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.3;
  color: var(--rossa-navy);
}
#contenido_admin .rv-chat__sub {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 2px 0 0;
  font-size: 11px;
  color: var(--rossa-stroke);
}
#contenido_admin .rv-chat__origin { color: var(--rossa-navy); }
#contenido_admin .rv-chat__frame {
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  border: 0;
}
#contenido_admin .rv-chat__notice {
  margin: 0;
  padding: 18px 16px;
  font-size: 13px;
  color: var(--rossa-stroke);
}

#contenido_admin .rv-sends {
  flex: 0 0 247px;
  align-self: stretch;
  padding-left: 17px;
  border-left: 2px solid var(--rossa-db-500);
}
#contenido_admin .rv-comms--sin-chat .rv-sends {
  flex: 1 1 auto;
  padding-left: 0;
  border-left: 0;
}
#contenido_admin .rv-comms--sin-chat .rv-sends__list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(247px, 1fr));
}
#contenido_admin .rv-sends__title {
  margin: 0 0 10px;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.2;
  color: var(--rossa-navy);
}
#contenido_admin .rv-sends__empty { margin: 0; font-size: 13px; color: var(--rossa-stroke); }
#contenido_admin .rv-sends__list {
  display: flex;
  flex-direction: column;
  gap: 11px;
  margin: 0;
  padding: 0;
  list-style: none;
}
#contenido_admin .rv-send {
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  min-height: 146px;
  padding: 8px 14px 0;
  border: 1px solid var(--rossa-db-500);
  border-radius: 6px;
  overflow: hidden;
}
#contenido_admin .rv-send__when {
  margin: 0 0 5px;
  font-size: 11px;
  line-height: 1.2;
  color: var(--rossa-red-800);
}
#contenido_admin .rv-send__title {
  margin: 0;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.2;
  color: var(--rossa-navy);
}
#contenido_admin .rv-send__subject {
  margin: 1px 0 0;
  font-size: 14px;
  line-height: 16px;
  color: var(--rossa-navy);
}
#contenido_admin .rv-send__meta {
  display: inline-flex;
  align-self: flex-start;
  box-sizing: border-box;
  height: 27px;
  margin: 5px 0 10px;
  border: 1px solid var(--rossa-db-500);
  border-radius: 6px;
  font-size: 14px;
  line-height: 1;
}
#contenido_admin .rv-send__channel,
#contenido_admin .rv-send__state {
  display: flex;
  align-items: center;
  padding: 0 12px;
}
#contenido_admin .rv-send__channel { color: var(--rossa-navy); }
#contenido_admin .rv-send__state {
  border-left: 1px solid var(--rossa-db-500);
  font-weight: 700;
}
/* A sangre: el margen negativo anula el padding lateral de la tarjeta. */
#contenido_admin .rv-send__view {
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: calc(100% + 28px);
  height: 26px;
  margin: auto -14px 0;
  padding: 0;
  border: 0;
  background: var(--rossa-strip);
  color: var(--rossa-stroke);
  cursor: pointer;
}
#contenido_admin .rv-send__view .rossa-i { font-size: 20px; }
#contenido_admin .rv-send__view:hover { color: var(--rossa-petrol); }
#contenido_admin .rv-sends__pager {
  justify-content: center;
  margin-top: 16px;
}
#contenido_admin .rv-comms[data-fit] {
  align-items: stretch;
  height: var(--rv-comms-height);
}
#contenido_admin .rv-comms[data-fit] .rv-chat { height: auto; }
#contenido_admin .rv-comms[data-fit] .rv-sends {
  display: flex;
  flex-direction: column;
  min-height: 0;
}
#contenido_admin .rv-comms[data-fit] .rv-sends__list {
  flex: 1 1 auto;
  min-height: 0;
  align-content: start;
  overflow: hidden;
}
#contenido_admin .rv-comms[data-fit] .rv-sends__pager { flex: 0 0 auto; }
/* Sin esto la columna encoge las tarjetas para meterlas todas en vez de pasarlas de página. */
#contenido_admin .rv-comms[data-fit] .rv-send { flex: 0 0 auto; }

/* Colores de estado de `_logEstado()` (tab_log.php), que allí van en línea. */
#contenido_admin .rv-log--ok       { color: var(--rossa-green-fig); }
#contenido_admin .rv-log--pending  { color: var(--rossa-per); }
#contenido_admin .rv-log--progress { color: var(--rossa-db-400); }
#contenido_admin .rv-log--fail     { color: var(--rossa-red); }
#contenido_admin .rv-log--muted    { color: var(--rossa-stroke); }

/* Cabecera y botones fijos; lo que falta de alto lo cede el mensaje, que rueda por dentro. */
#contenido_admin .rv-send-dialog {
  box-sizing: border-box;
  width: 680px;
  max-width: calc(100vw - 32px);
  max-height: calc(100vh - 32px);
  padding: 0;
  overflow: hidden;
}
#contenido_admin .rv-send-dialog[open] {
  display: flex;
  flex-direction: column;
}
#contenido_admin .rv-send-dialog > form {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  min-height: 0;
}
#contenido_admin .rv-send-dialog__head {
  flex: 0 0 auto;
  padding: 22px 28px 16px;
  border-bottom: 1px solid var(--rossa-db-500);
}
#contenido_admin .rv-send-dialog .rv-dialog__title { margin: 0 0 10px; }
#contenido_admin .rv-send-dialog__id { font-weight: 400; color: var(--rossa-stroke); }
#contenido_admin .rv-send-dialog__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 14px;
  font-size: 12px;
}
#contenido_admin .rv-send-dialog__meta p { margin: 0; }
#contenido_admin .rv-send-dialog p.rv-send__meta { margin: 0; }
#contenido_admin .rv-send-dialog__when { color: var(--rossa-red-800); }
#contenido_admin .rv-send-dialog__rule { color: var(--rossa-stroke); }
#contenido_admin .rv-send-dialog__body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 18px;
  min-height: 0;
  padding: 18px 28px 20px;
  overflow-y: auto;
}
#contenido_admin .rv-send-dialog__facts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px 24px;
  flex: 0 0 auto;
}
#contenido_admin .rv-send-dialog p.rv-send-dialog__subject {
  margin: 0;
  font-size: 14px;
  line-height: 1.4;
  color: var(--rossa-navy);
}
/* Con muchos destinatarios rueda la lista, no el diálogo: caben tres filas. */
#contenido_admin .rv-send-dialog ul.rv-send-dialog__recipients {
  max-height: 134px;
  margin: 0;
  padding: 0;
  overflow-y: auto;
  list-style: none;
  border: 1px solid var(--rossa-db-500);
  border-radius: 6px;
  scrollbar-width: thin;
}
#contenido_admin .rv-send-dialog li.rv-send-dialog__recipient {
  display: flex;
  align-items: center;
  gap: 12px;
  box-sizing: border-box;
  min-height: 44px;
  margin: 0;
  padding: 6px 14px;
  font-size: 13px;
  color: var(--rossa-navy);
}
#contenido_admin .rv-send-dialog li.rv-send-dialog__recipient + li.rv-send-dialog__recipient { border-top: 1px solid var(--rossa-db-500); }
#contenido_admin .rv-send-dialog__address {
  flex: 1 1 auto;
  min-width: 0;
  overflow-wrap: anywhere;
}
#contenido_admin .rv-send-dialog__recipient-state {
  flex: 0 0 auto;
  font-weight: 700;
  white-space: nowrap;
}
#contenido_admin input.rv-send-dialog__input {
  flex: 1 1 auto;
  box-sizing: border-box;
  min-width: 0;
  height: 32px;
  padding: 4px 10px;
  border: 1px solid var(--rossa-stroke);
  border-radius: var(--rossa-radius);
  font-size: 13px;
}
#contenido_admin .rv-send-dialog__message {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  min-height: 0;
}
#contenido_admin .rv-send-dialog__frame,
#contenido_admin .rv-send-dialog__text {
  display: block;
  box-sizing: border-box;
  width: 100%;
  margin: 0;
  border: 1px solid var(--rossa-db-500);
  border-radius: 6px;
}
/* Correo y texto, la misma caja: miden lo que su contenido y encogen si el diálogo no da más de sí. */
#contenido_admin .rv-send-dialog__frame,
#contenido_admin .rv-send-dialog__text {
  flex: 0 1 auto;
  min-height: 96px;
  border-color: var(--rossa-strip);
  background: var(--rossa-strip);
}
#contenido_admin .rv-send-dialog__frame { height: 320px; }
#contenido_admin .rv-send-dialog__text {
  padding: 14px 16px;
  overflow: auto;
  font-size: 13px;
  line-height: 1.55;
  white-space: pre-wrap;
  color: var(--rossa-navy);
}
#contenido_admin .rv-send-dialog__foot {
  display: flex;
  flex: 0 0 auto;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  padding: 14px 28px;
  border-top: 1px solid var(--rossa-db-500);
}
#contenido_admin .rv-send-dialog__foot .rv-pill { padding: 0 16px; }
/* `.rv-dialog .admin_boton` pone margin: 0 con más peso; el de cerrar se queda solo a la izquierda. */
#contenido_admin .rv-send-dialog .rv-send-dialog__dismiss { margin-right: auto; }
/* El display de autor gana al [hidden] del navegador: las piezas que el JS esconde. */
#contenido_admin .rv-send[hidden],
#contenido_admin .rv-sends__pager[hidden],
#contenido_admin .rv-send-dialog [hidden] { display: none; }

/* El display de autor gana al [hidden] del navegador, que no tiene especificidad. */
#contenido_admin .rv-panel[hidden],
#contenido_admin .rv-stay-card__edit-row[hidden] { display: none; }

/* --- Ficha izquierda ------------------------------------------------------- */
#contenido_admin .rv-summary {
  flex: 0 0 334px;
  max-width: 334px;
  /* 46px a la derecha: el mismo respiro que `.rv-main` deja al otro lado del delimitador. */
  padding: 37px 46px 28px 0px;
  border-right: 2px solid var(--rossa-db-500);
}
#contenido_admin .rv-summary__ref {
  margin: 0 0 14px;
  text-align: center;
  font-size: 13px;
  color: var(--rossa-db-400);
}
#contenido_admin .rv-summary__ref-sep { opacity: .6; }
#contenido_admin .rv-summary__head {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 13px;
  margin: 0 0 40px;
}
#contenido_admin .rv-summary__name {
  flex: 0 1 auto;
  min-width: 0;
  margin: 0;
  padding: 0;
  text-align: center;
  font-size: 16px;
  line-height: 1.35;
  font-weight: 600;
  overflow-wrap: anywhere;
  color: var(--rossa-navy);
}
/* lydia_popup le quita el href al enlace: sin esto pierde la mano del cursor. */
#contenido_admin .rv-summary__client-edit {
  flex: 0 0 auto;
  line-height: 0;
  color: var(--rossa-tbl-ico);
  cursor: pointer;
}
#contenido_admin .rv-summary__client-edit:hover { color: var(--rossa-petrol); }
#contenido_admin .rv-summary__client-edit .rossa-i { font-size: 16px; }

/* Comentarios y observaciones: la banda del Figma bajo el nombre, una por caja de la ficha antigua. */
#contenido_admin .rv-summary__head:has(+ .rv-notes) { margin-bottom: 16px; }
/* Arranca donde los iconos de contacto, como en el Figma. */
#contenido_admin .rv-notes {
  display: grid;
  /* Sin el tope, la columna crecería hasta el ancho del texto y no habría puntos suspensivos. */
  grid-template-columns: minmax(0, 1fr);
  gap: 6px;
  margin: 0 0 32px 18px;
}
#contenido_admin .rv-note {
  display: flex;
  align-items: center;
  gap: 10px;
  box-sizing: border-box;
  min-height: 24px;
  padding: 4px 8px 4px 15px;
  border-radius: 4px;
  background: var(--rossa-note-booking);
  font-size: 10px;
  line-height: 1.4;
  color: var(--rossa-navy);
}
#contenido_admin .rv-note[data-dialog-open] { cursor: pointer; }
#contenido_admin .rv-note--limpieza { background: var(--rossa-note-cleaning); }
#contenido_admin .rv-note--pago { background: var(--rossa-note-payment); }
/* lydia.css pone 12px a todo <p>: el cuerpo de la banda es el suyo, el de 10px del Figma. */
#contenido_admin .rv-note__body {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  overflow: hidden;
  font-size: inherit;
  white-space: nowrap;
  text-overflow: ellipsis;
}
#contenido_admin .rv-note__label { margin-right: 4px; font-weight: 700; }
#contenido_admin .rv-note__label::after { content: ":"; }
#contenido_admin .rv-note__view,
#contenido_admin .rv-note__edit {
  flex: 0 0 auto;
  padding: 0;
  border: 0;
  background: none;
  line-height: 0;
  color: var(--rossa-petrol);
  cursor: pointer;
}
#contenido_admin .rv-note__view:hover,
#contenido_admin .rv-note__edit:hover { color: var(--rossa-petrol-dark); }
#contenido_admin .rv-note__view .rossa-i,
#contenido_admin .rv-note__edit .rossa-i { font-size: 16px; }
#contenido_admin .rv-note-view {
  max-height: 50vh;
  margin: 0 0 20px;
  padding: 10px 12px;
  overflow-y: auto;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  font-size: 13px;
  line-height: 1.5;
  white-space: pre-line;
  overflow-wrap: anywhere;
  color: var(--rossa-navy);
}
#contenido_admin .rv-dialog--note { width: 460px; }
#contenido_admin textarea.rv-dialog__textarea {
  display: block;
  box-sizing: border-box;
  width: 100%;
  height: auto;
  min-height: 140px;
  margin: 0 0 20px;
  padding: 10px 12px;
  resize: vertical;
  font-size: 13px;
  line-height: 1.5;
}
#contenido_admin .rv-summary__contact {
  list-style: none;
  margin: 0 0 32px;
  padding: 0 22px 0 18px;
  display: grid;
  gap: 13px;
}
#contenido_admin .rv-summary__contact li {
  display: flex;
  align-items: center;
  gap: 11px;
  font-size: 13px;
  color: var(--rossa-db-400);
  overflow-wrap: anywhere;
}
#contenido_admin .rv-summary__contact .rossa-i {
  font-size: 15px;
  color: var(--rossa-petrol-dark);
}
#contenido_admin .rv-summary__contact a { color: var(--rossa-db-400); }
/* lydia_popup les quita el href: sin cursor no se leen como pulsables. */
#contenido_admin .rv-summary__mail { cursor: pointer; }
#contenido_admin .rv-summary__channels {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
#contenido_admin .rv-summary__channel {
  display: inline-flex;
  line-height: 0;
  color: var(--rossa-petrol);
  text-decoration: none;
  cursor: pointer;
}
#contenido_admin .rv-summary__channel:hover { color: var(--rossa-cyan); }
/* Más específica que el color de los iconos de contacto, que si no se le aplica. */
#contenido_admin .rv-summary__contact .rv-summary__channel .rossa-i { font-size: 16px; color: var(--rossa-cyan-fig); }
#contenido_admin .rv-summary__contact .rv-summary__channel:hover .rossa-i { color: var(--rossa-cyan); }
#contenido_admin .rv-summary__contact a.rv-summary__mail { color: var(--rossa-cyan-fig); }
#contenido_admin .rv-summary__contact a.rv-summary__mail:hover { color: var(--rossa-cyan); }

/* La banda de estado sangra hasta el borde del panel: el Figma la dibuja de 377 a 580. */
#contenido_admin .rv-summary__status {
  display: grid;
  grid-template-columns: 1fr 131px;
  align-items: stretch;
  gap: 18px;
  margin-bottom: 32px;
}
/* Una sola caja con los dos estados dentro; el filete de en medio los separa. */
#contenido_admin .rv-status {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-top: 1px solid var(--rossa-hairline);
  border-right: 1px solid var(--rossa-hairline);
  border-bottom: 1px solid var(--rossa-hairline);
}
#contenido_admin .rv-status__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: 16px 6px;
  text-align: center;
}
#contenido_admin .rv-status__item--pay { border-left: 1px solid var(--rossa-hairline); }
#contenido_admin .rv-status__label {
  font-size: 13px;
  color: var(--rossa-navy);
}
#contenido_admin .rv-status .booking-status::before { width: 40px; height: 40px; }
#contenido_admin .rv-status__item--pay .rossa-card-tag { margin: 0; }
#contenido_admin .rv-summary__nights { font-weight: 600; }
/* Sin padding abajo: los contadores cierran a la misma altura que la caja de la izquierda. */
#contenido_admin .rv-summary__side {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 6px;
  padding: 0 0 0;
}
#contenido_admin .rv-summary__origin {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
}
#contenido_admin .rv-summary__side-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-navy);
}
#contenido_admin .rv-origin-img {
  width: 26px;
  height: 26px;
  object-fit: contain;
}
#contenido_admin .rv-summary__guests-title {
  margin: 0 0 5px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-navy);
}

/* --- Tarjetas de check-in / check-out -------------------------------------- */
#contenido_admin .rv-summary__stay { margin-left: 18px; }
#contenido_admin .rv-stay-card {
  box-sizing: border-box;
  position: relative;
  margin: 0 0 23px;
  padding: 6px 19px 9px 29px;
  min-height: 66px;
}
/* Barra de acento con el fondo tintado al 5%: tarjetas de estancia y avisos. */
#contenido_admin .rv-accent::before,
#contenido_admin .rv-accent::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  background: currentColor;
}
#contenido_admin .rv-accent::before { left: 0; right: 0; opacity: .05; background: var(--rv-tint, currentColor); }
#contenido_admin .rv-accent::after { left: 0; width: 4px; background: var(--rv-bar, currentColor); }
#contenido_admin .rv-accent > * { position: relative; }
#contenido_admin .rv-stay-card--in  { --rv-bar: var(--rossa-pag);       --rv-tint: var(--rossa-pag); }
#contenido_admin .rv-stay-card--out { --rv-bar: var(--rossa-red-dark);  --rv-tint: var(--rossa-pink); }
/* Rejilla de 2x2: rótulos arriba, valores abajo. `center` alinea la hora con la fecha
   aunque esta ocupe dos líneas. */
#contenido_admin .rv-stay-card {
  display: grid;
  /* Ancho fijo: con `auto` cada tarjeta lo ajusta a su rótulo y las horas se desalinean. */
  grid-template-columns: 1fr 114px;
  align-items: center;
  column-gap: 10px;
  row-gap: 5px;
}
#contenido_admin .rv-stay-card__label--hour,
#contenido_admin .rv-stay-card__hourline { justify-self: center; }
#contenido_admin .rv-stay-card__hourline {
  display: flex;
  align-items: center;
  gap: 6px;
}
#contenido_admin .rv-stay-card__label {
  font-size: 12px;
  font-weight: 700;
  color: var(--rossa-db-400);
}
#contenido_admin .rv-stay-card__date,
#contenido_admin .rv-stay-card__hour {
  font-size: 12px;
  color: var(--rossa-navy);
}
#contenido_admin .rv-stay-card__hour { text-align: center; }
#contenido_admin .rv-stay-card__flag {
  position: relative;
  grid-column: 1 / -1;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .04em;
  color: var(--rossa-coral);
}
#contenido_admin .rv-stay-card__edit {
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  color: var(--rossa-tbl-ico);
  line-height: 0;
}
#contenido_admin .rv-stay-card__edit .rossa-i { font-size: 20px; }
#contenido_admin .rv-stay-card__edit-row {
  position: relative;
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 9px;
  padding-top: 9px;
  border-top: 1px solid var(--rossa-hairline);
}
#contenido_admin .rv-stay-card__edit-row .rv-hour-input { width: 108px; }


/* --- Columna derecha ------------------------------------------------------- */
#contenido_admin .rv-main {
  flex: 1 1 auto;
  min-width: 0;
  /* 46px a la izquierda: la distancia del delimitador al contenido en el Figma. */
  padding: 17px 42px 28px 46px;
}
#contenido_admin .rv-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 30px;
  margin-bottom: 26px;
}
/* Cada pestaña lleva su propio subrayado: el Figma no dibuja un borde continuo. */
#contenido_admin .rv-tab {
  background: none;
  border: 0;
  border-bottom: 1px solid var(--rossa-navy);
  padding: 4px 0 6px;
  cursor: pointer;
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 500;
  color: var(--rossa-navy);
}
#contenido_admin .rv-tab:hover { color: var(--rossa-petrol); }
#contenido_admin .rv-tab--active {
  color: var(--rossa-petrol);
  font-weight: 600;
  border-bottom: 2px solid var(--rossa-petrol);
}
#contenido_admin .rv-table-wrap { overflow-x: auto; }
#contenido_admin .rv-table { width: 100%; }
#contenido_admin .rv-table__th--left,
#contenido_admin .rv-table__td--left { text-align: left; }
#contenido_admin .rv-table--guests th:nth-child(1),
#contenido_admin .rv-table--guests td:nth-child(1) { width: 32%; padding-left: 18px; }
#contenido_admin .rv-table--guests th:nth-child(2),
#contenido_admin .rv-table--guests td:nth-child(2) { width: 26%; }
#contenido_admin .rv-table--guests th:nth-child(3),
#contenido_admin .rv-table--guests td:nth-child(3) { width: 25%; }
#contenido_admin .rv-table--guests th:nth-child(4),
#contenido_admin .rv-table--guests td:nth-child(4) { width: 17%; }
#contenido_admin .rv-minor { color: var(--rossa-coral); }
#contenido_admin .rv-guest-view { line-height: 0; }
/* Se tiñe el icono, no el enlace: §65.4 colorea todo <a> de celda y gana con (1,7,2). */
#contenido_admin .rv-guest-view .rossa-i { font-size: 20px; background-color: var(--rossa-tbl-ico); }

/* Los cuatro datos van apilados cuando la pestaña solo tiene una columna. */
#contenido_admin .rv-facts--stack {
  grid-auto-flow: row;
  grid-template-rows: none;
  gap: 22px;
}
#contenido_admin .rv-facts__icons {
  display: flex;
  align-items: center;
  gap: 10px;
}
#contenido_admin .rv-service { line-height: 0; color: var(--rossa-stroke); }
#contenido_admin .rv-service--text { line-height: 1.3; font-size: 13px; color: var(--rossa-navy); }
#contenido_admin .rv-service .rossa-i,
#contenido_admin .rv-service > i { font-size: 22px; }
#contenido_admin .rv-service .rv-service-ico { width: 22px; height: 22px; object-fit: contain; }

/* Los enlaces de la tabla usan el cian del Figma. */
#contenido_admin .rv-table a { color: var(--rossa-cyan-fig); font-weight: 600; }
#contenido_admin .rv-table__bail-status { display: block; color: var(--rossa-no-pagado); font-weight: 700; }
#contenido_admin table.rossa-tbl.rv-table--stay > tbody > tr.rv-table__row--bail > td:first-child {
  border-left: 3px solid var(--rossa-no-pagado);
}
#contenido_admin table.rossa-tbl.rossa-tbl.rv-table--stay > tbody > tr.rv-table__row--bail {
  background-color: rgba(235, 93, 55, .02);
}
#contenido_admin .rv-table--stay th:nth-child(1),
#contenido_admin .rv-table--stay td:nth-child(1) { width: 8%; }
#contenido_admin .rv-table--stay th:nth-child(2),
#contenido_admin .rv-table--stay td:nth-child(2) { width: 46%; text-align: left; }
#contenido_admin .rv-table--stay th:nth-child(3),
#contenido_admin .rv-table--stay td:nth-child(3) { width: 18%; }
#contenido_admin .rv-table--stay th:nth-child(4),
#contenido_admin .rv-table--stay td:nth-child(4) { width: 13%; }
#contenido_admin .rv-table--stay th:nth-child(5),
#contenido_admin .rv-table--stay td:nth-child(5) { width: 15%; }
#contenido_admin .rv-table--stay th:nth-child(n+3) { text-align: right; }
/* .rossa-tbl centra sus celdas con (1,3,4); hay que igualar para alinearlas. */
#contenido_admin table.rossa-tbl.rv-table--stay > tbody > tr:not(.cab) > td:nth-child(2) { text-align: left; }
#contenido_admin table.rossa-tbl.rv-table--stay > tbody > tr:not(.cab) > td:nth-child(n+3) { text-align: right; }
#contenido_admin .rv-table--stay th.rv-table__key,
#contenido_admin table.rossa-tbl.rv-table--stay > tbody > tr:not(.cab) > td.rv-table__key { text-align: center; }
#contenido_admin table.rossa-tbl.rv-table--stay .unpin { min-width: 64px; padding: 4px 12px; background-color: transparent; border: 1px solid currentColor; font-size: 13px; font-weight: 400; }
#contenido_admin table.rossa-tbl.rv-table--stay .unpin.rv-key--ok { color: var(--rossa-green-fig); }
#contenido_admin table.rossa-tbl.rv-table--stay .unpin.rv-key--error { color: var(--rossa-wine); }
#contenido_admin table.rossa-tbl.rv-table--stay .unpin.rv-key--pending { color: var(--rossa-stroke); }
#contenido_admin table.rossa-tbl.rv-table--stay .unpin.rv-key--none { color: var(--rossa-no-pagado); border-style: dashed; }
#contenido_admin table.rossa-tbl.rv-table--guests > tbody > tr:not(.cab) > td:nth-child(1) { text-align: left; }

#contenido_admin .rv-panel > .rv-facts--stack { margin-bottom: 28px; }
#contenido_admin .rv-facts__icons { gap: 12px; margin-top: 2px; }


/* --- Avisos ---------------------------------------------------------------- */
#contenido_admin .rv-notice {
  box-sizing: border-box;
  position: relative;
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 34px;
  padding: 7px 14px 7px 18px;
  font-size: 13px;
  color: var(--rossa-coral);
}
#contenido_admin .rv-notices {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 22px;
}
#contenido_admin .rv-notice--ok { color: var(--rossa-pag); }
#contenido_admin .rv-notice--info { color: var(--rossa-db-400); }
#contenido_admin .rv-notice--error { color: var(--rossa-red-dark); }

/* --- Fecha de creación (pestaña Reserva) ------------------------------------ */
#contenido_admin .rv-created { margin: 0 0 28px; }
#contenido_admin .rv-created dt {
  margin: 0 0 14px;
  font-size: 12px;
  font-weight: 700;
  line-height: 1.2;
  color: var(--rossa-db-400);
}
#contenido_admin .rv-created dd {
  margin: 0;
  font-size: 14px;
  line-height: 1.3;
  color: var(--rossa-navy);
}

/* --- Pestaña Desarrollo (solo SAT) ------------------------------------------- */
#contenido_admin .rv-dev__title {
  margin: 0 0 8px;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.2;
  color: var(--rossa-navy);
}
#contenido_admin .rv-dev__meta { margin: 0 0 24px; font-size: 13px; color: var(--rossa-navy); }
#contenido_admin .rv-dev__meta a { color: var(--rossa-cyan-fig); font-weight: 600; }
#contenido_admin .rv-dev__block + .rv-dev__block { margin-top: 30px; }
#contenido_admin .rv-dev__subtitle {
  margin: 0 0 12px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--rossa-navy);
}
#contenido_admin .rv-dev__empty { margin: 0; font-size: 13px; color: var(--rossa-stroke); }
#contenido_admin .rv-dialog__code pre {
  margin: 0;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 12px;
  line-height: 1.5;
  color: var(--rossa-navy);
  white-space: pre-wrap;
  word-break: break-all;
}
/* Posicionado: si no, los `.rv-sr` (absolute) de los botones escapan del scroll y ensanchan el drawer. */
#contenido_admin .rv-dev__scroll { position: relative; max-width: 100%; overflow-x: auto; }
#contenido_admin .rv-table--wubook { width: max-content; min-width: 100%; }
#contenido_admin .rv-table--wubook th,
#contenido_admin .rv-table--wubook td { white-space: nowrap; }
#contenido_admin .rv-table--wubook td.rv-table--wubook__message { min-width: 200px; max-width: 320px; white-space: normal; }
#contenido_admin .rv-table--wubook th > button.rossa-sorting {
  padding: 0 26px 0 0;
  border: 0;
  background: none;
  font: inherit;
  color: inherit;
  cursor: pointer;
}
#contenido_admin .rv-dev__status { font-weight: 600; color: var(--rossa-pag); }
#contenido_admin .rv-dev__status--error { color: var(--rossa-red-dark); }
#contenido_admin .rv-dev__file {
  display: inline-flex;
  padding: 0;
  border: 0;
  background: none;
  line-height: 0;
  cursor: pointer;
}
#contenido_admin .rv-dev__file .rossa-i { font-size: 20px; background-color: var(--rossa-tbl-ico); }
#contenido_admin .rv-dev__file:hover .rossa-i { background-color: var(--rossa-petrol); }
#contenido_admin .rv-dev__file:disabled { cursor: default; opacity: .35; }
#contenido_admin .rv-dev__file:disabled .rossa-i { background-color: var(--rossa-tbl-ico); }
#contenido_admin .rv-table--wubook th:nth-last-child(-n+2),
#contenido_admin table.rossa-tbl.rv-table--wubook > tbody > tr > td:nth-last-child(-n+2) { text-align: center; }
#contenido_admin .rv-dialog--code { width: min(1100px, calc(100vw - 32px)); max-width: none; }
#contenido_admin .rv-dialog__code { max-height: 70vh; overflow: auto; }

/* Dos contadores dentro de una sola caja partida por un divisor.
   La ficha usa la variante pequeña; la pestaña Huéspedes, la grande con desglose. */
#contenido_admin .rv-counters {
  display: flex;
  border: 1px solid var(--rossa-petrol);
  border-radius: 10px;
  overflow: hidden;
}
#contenido_admin .rv-counters > * + * { border-left: 1px solid var(--rossa-petrol); }
#contenido_admin .rv-counter {
  box-sizing: border-box;
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-width: 176px;
  min-height: 128px;
  padding: 14px 16px;
}
@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  #contenido_admin .rv-counters { width: 100%; }
  #contenido_admin .rv-counter {
    flex: 0 0 50%;
    width: 50%;
    max-width: 50%;
    min-width: 0;
    overflow: hidden;
    padding: 14px 10px;
  }
  #contenido_admin .rv-counter__detail {
    font-size: 11px;
    white-space: nowrap;
  }
}
@media (min-width: 481px) and (hover: none) and (pointer: coarse) and (orientation: portrait) {
  #contenido_admin .rv-counter__detail { font-size: 9px; }
}
#contenido_admin .rv-counter__label { font-size: 14px; color: var(--rossa-petrol); }
#contenido_admin .rv-counter__value {
  font-size: 46px;
  font-weight: 500;
  line-height: 1;
  color: var(--rossa-navy);
}
#contenido_admin .rv-counter__detail { font-size: 13px; color: var(--rossa-petrol); }

#contenido_admin .rv-counters--sm { border-radius: 7px; }
/* El rótulo va arriba, no centrado con la cifra: el Figma lo pega al borde superior. */
#contenido_admin .rv-counters--sm .rv-counter {
  justify-content: space-between;
  gap: 1px;
  min-width: 0;
  min-height: 51px;
  padding: 5px 3px 4px;
}
#contenido_admin .rv-counters--sm .rv-counter__label { font-size: 8px; line-height: 1.2; color: var(--rossa-navy); }
#contenido_admin .rv-counters--sm .rv-counter__value { font-size: 25px; font-weight: 400; line-height: 1.2; }

/* Cuando los registrados alcanzan a los esperados, caja y cifras pasan a verde. */
#contenido_admin .rv-counters--full,
#contenido_admin .rv-counters--full > * + * { border-color: var(--rossa-pag); }
#contenido_admin .rv-counters--full .rv-counter__value { color: var(--rossa-pag); }

/* --- Pestaña Huéspedes ----------------------------------------------------- */
#contenido_admin .rv-guests-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 26px 32px;
  margin-bottom: 30px;
}
#contenido_admin .rv-facts {
  display: grid;
  grid-template-rows: auto auto;
  grid-auto-flow: column;
  gap: 31px 46px;
  margin: 0;
  flex: 1 1 300px;
}
#contenido_admin .rv-facts__item { margin: 0; }
#contenido_admin .rv-facts dt {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--rossa-navy);
  margin-bottom: 5px;
}
#contenido_admin .rv-facts dd {
  margin: 0;
  font-size: 13px;
  color: var(--rossa-navy);
}

/* --- Raíl de acciones ------------------------------------------------------ */
/* El panel sigue ocupando alto aunque no se vea: la tira plegada mide lo mismo. */
#contenido_admin .rv-rail {
  position: fixed;
  top: 34.1vh;
  right: 0;
  z-index: 30;
  width: 15px;
  background: var(--rossa-strip);
  border-radius: 16px 0 0 16px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, .12);
}
#contenido_admin .rv-rail__clip {
  width: 15px;
  max-height: calc(65.9vh - 16px);
  overflow: hidden;
}
#contenido_admin .rv-rail--open .rv-rail__clip {
  width: 239px;
  overflow-y: auto;
  scrollbar-width: thin;
}
#contenido_admin .rv-rail__toggle {
  position: absolute;
  top: 33px;
  left: -20px;
  width: 33px;
  height: 33px;
  border-radius: 5px;
  border: 0;
  background: var(--rossa-db-400);
  color: #fff;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
#contenido_admin .rv-rail__toggle .rossa-i { font-size: 18px; }
#contenido_admin .rv-rail--open .rv-rail__toggle .rossa-i { transform: rotate(180deg); }
#contenido_admin .rv-rail__panel {
  box-sizing: border-box;
  width: 239px;
  padding: 24px 20px 24px 39px;
  visibility: hidden;
}
#contenido_admin .rv-rail--open {
  width: 239px;
  border-radius: 17px 0 0 17px;
}
#contenido_admin .rv-rail--open .rv-rail__panel { visibility: visible; }

/* La clase la pone el JS tras el primer pintado: si no, el raíl se abriría solo al restaurar su estado. */
#contenido_admin .rv-rail--animated,
#contenido_admin .rv-rail--animated .rv-rail__clip { transition: width .7s ease; }
#contenido_admin .rv-rail--animated .rv-rail__toggle .rossa-i { transition: transform .7s ease; }
/* El panel aparece al abrir, pero aguanta visible hasta que el raíl termina de cerrarse. */
#contenido_admin .rv-rail--animated .rv-rail__panel { transition: visibility 0s linear .7s; }
#contenido_admin .rv-rail--animated.rv-rail--open .rv-rail__panel { transition-delay: 0s; }

@media (prefers-reduced-motion: reduce) {
  #contenido_admin .rv-rail--animated,
  #contenido_admin .rv-rail--animated .rv-rail__clip,
  #contenido_admin .rv-rail--animated .rv-rail__toggle .rossa-i,
  #contenido_admin .rv-rail--animated .rv-rail__panel { transition: none; }
}
#contenido_admin .rv-rail__title {
  margin: 0 0 22px;
  text-align: center;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--rossa-navy);
}
#contenido_admin .rv-rail__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 13px;
}
/* Pastilla con borde, sin relleno: es el botón que dibuja el Figma (180x29, r4.5). */
/* Pastilla de acción: la usan el raíl y los botones de hora. Solo cambia el tamaño. */
#contenido_admin .rv-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  height: 36px;
  padding: 0 10px;
  border: 1px solid var(--rossa-petrol);
  border-radius: 6px;
  background: transparent;
  font-family: var(--rossa-font);
  font-size: 13px;
  color: var(--rossa-petrol);
  text-align: center;
  text-decoration: none;
  cursor: pointer;
}
#contenido_admin a.rv-pill:hover,
#contenido_admin button.rv-pill:hover {
  background: var(--rossa-petrol);
  color: #fff;
  text-decoration: none;
}
#contenido_admin .rv-pill--icon {
  width: 29px;
  height: 29px;
  padding: 0;
  border-radius: 4.5px;
}
#contenido_admin .rv-pill--icon .rossa-i { font-size: 16px; }
#contenido_admin .rv-pill--muted { border-color: var(--rossa-stroke); color: var(--rossa-stroke); }
#contenido_admin a.rv-pill--muted:hover,
#contenido_admin button.rv-pill--muted:hover { background: var(--rossa-stroke); }
#contenido_admin .rv-pill--danger { border-color: var(--rossa-wine); color: var(--rossa-wine); }
#contenido_admin a.rv-pill--danger:hover,
#contenido_admin button.rv-pill--danger:hover { background: var(--rossa-wine); }
#contenido_admin .rv-pill--disabled { opacity: .45; cursor: not-allowed; }
#contenido_admin .rv-pill:focus { outline: none; }
#contenido_admin .rv-pill:focus-visible { outline: 2px solid var(--rossa-petrol); outline-offset: 2px; }
#contenido_admin .rv-pill--primary {
  border-color: var(--rossa-petrol);
  background: var(--rossa-petrol);
  color: #fff;
}
#contenido_admin a.rv-pill--primary:hover,
#contenido_admin button.rv-pill--primary:hover {
  border-color: var(--rossa-petrol-dark);
  background: var(--rossa-petrol-dark);
}

/* En el raíl la pastilla ocupa todo el ancho de su fila, sea <a>, <button> o <span>. */
#contenido_admin .rv-rail__item { display: flex; width: 100%; }

/* Móvil: tipografía y piezas del Figma de 402px (nodo 660:678), con el espacio repartido a los dos lados. */
@media (max-width: 700px) {
  #contenido_admin .rv-page {
    flex-direction: column;
    min-height: 0;
  }
  #contenido_admin .rv-summary {
    flex: 1 1 auto;
    max-width: none;
    padding: 16px 16px 0;
    border-right: 0;
  }
  #contenido_admin .rv-summary__ref { font-size: 14px; }
  /* El cuerpo de 20px lo pone §21 a todo h1 móvil; responsive.css le añade un filete. */
  #contenido_admin .rv-summary__name { line-height: 1; border-bottom: 0; }
  #contenido_admin .rv-summary__contact {
    margin-bottom: 16px;
    padding: 0;
  }
  #contenido_admin .rv-notes { margin-left: 0; }
  #contenido_admin .rv-summary__contact li { font-size: 12px; }
  #contenido_admin .rv-summary__status {
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    gap: 16px;
    margin-bottom: 20px;
  }
  /* En escritorio sangra hasta el borde del panel; aquí va dentro del margen y necesita su lado izquierdo. */
  #contenido_admin .rv-status { border-left: 1px solid var(--rossa-hairline); }
  #contenido_admin .rv-status__item { padding: 20px 6px; }
  #contenido_admin .rv-status__label { font-size: 12px; }
  #contenido_admin .rv-summary__stay {
    margin-left: 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 16px;
  }
  #contenido_admin .rv-stay-card {
    grid-template-columns: minmax(0, 1fr);
    align-content: start;
    margin: 0;
    padding: 13px 6px 14px 29px;
  }
  #contenido_admin .rv-stay-card__label { grid-row: 1; }
  #contenido_admin .rv-stay-card__date { grid-row: 2; }
  #contenido_admin .rv-stay-card__label--hour { grid-row: 3; margin-top: 5px; }
  #contenido_admin .rv-stay-card__hourline { grid-row: 4; }
  #contenido_admin .rv-stay-card__label--hour,
  #contenido_admin .rv-stay-card__hourline { justify-self: start; }
  #contenido_admin .rv-stay-card__hourline { gap: 12px; }
  #contenido_admin .rv-stay-card__date,
  #contenido_admin .rv-stay-card__hour { font-size: 14px; }
  #contenido_admin .rv-stay-card__edit-row { justify-content: flex-start; }
  #contenido_admin .rv-stay-card__edit-row .rv-hour-input { width: 100%; }

  #contenido_admin .rv-main { padding: 24px 16px 16px; }
  #contenido_admin .rv-tabs {
    flex-wrap: nowrap;
    gap: 15px;
    margin: 0 0 16px;
    overflow-x: auto;
    scrollbar-width: none;
  }
  #contenido_admin .rv-tabs::-webkit-scrollbar { display: none; }
  #contenido_admin .rv-tab { flex: 0 0 auto; font-size: 12px; }
  /* Las tablas empiezan y acaban en el margen de 16px: sin relleno lateral en la primera y la última columna. */
  #contenido_admin .rv-main table.rv-table:is(.rv-table--stay, .rv-table--guests, .rv-table--pagos) > :is(thead, tbody) > tr > :first-child { padding-left: 0; text-align: left; }
  #contenido_admin .rv-main table.rv-table:is(.rv-table--stay, .rv-table--guests, .rv-table--pagos) > :is(thead, tbody) > tr > :last-child { padding-right: 0; }
  /* ver_reserva.css le da 10px de margen a toda .rossa-table: el Figma la pega a 16px de las pestañas. */
  #contenido_admin .rv-table--stay { min-width: 640px; margin-top: 0; }
  #contenido_admin table.rossa-tbl.rv-table--stay > thead > tr > th:nth-child(2) { text-align: left; }
  /* Rodando, las cantidades de pagos quedarían fuera de la pantalla. */
  #contenido_admin .rv-table--pagos { --rossa-tbl-pad-x: 8px; }
  #contenido_admin .rv-table--pagos > thead > tr > th:nth-child(1) { width: 10%; }
  #contenido_admin .rv-table--pagos > thead > tr > th:nth-child(2) { width: 26%; }
  #contenido_admin .rv-table--pagos > thead > tr > th:nth-child(3) { width: 24%; }
  #contenido_admin .rv-table--pagos > thead > tr > th:nth-child(4) { width: 27%; }
  #contenido_admin .rv-table--pagos > thead > tr > th:nth-child(5) { width: 13%; }
  /* El rótulo del total crece sobre las celdas vacías de su izquierda: en rtl es hacia ahí adonde desborda. */
  #contenido_admin .rv-pay__totals > tr > th { white-space: nowrap; text-align: right; direction: rtl; }
  #contenido_admin .rv-facts { grid-template-columns: 1fr; }
  #contenido_admin .rv-pay__head { flex-wrap: wrap; gap: 20px 32px; }
  /* Apilados, el alto a la medida de la ventana (data-fit) no da para los dos: cada uno lleva el suyo y el historial pagina. */
  #contenido_admin .rv-comms { flex-direction: column; align-items: stretch; gap: 24px; }
  #contenido_admin .rv-comms[data-fit] { height: auto; }
  #contenido_admin .rv-comms[data-fit] .rv-chat { height: 520px; }
  #contenido_admin .rv-comms[data-fit] .rv-sends__list { max-height: min(560px, 70vh); }
  #contenido_admin .rv-sends {
    flex: 0 0 auto;
    padding-left: 0;
    border-left: 0;
  }

  /* Anclado al panel y no a la ventana: fijo, el final de una lista larga quedaría fuera de alcance. */
  #contenido_admin .rv-panel { position: relative; }
  #contenido_admin .rv-rail {
    position: absolute;
    top: 3px;
    right: -16px;
  }
  #contenido_admin .rv-rail__clip { max-height: none; }

  #contenido_admin .rv-dialog { box-sizing: border-box; max-width: calc(100vw - 32px); }
  #contenido_admin .rv-dialog__actions { flex-wrap: wrap; }
  #contenido_admin .rv-pay__card { flex-direction: column; align-items: stretch; }
  #contenido_admin .rv-credit { align-self: center; }
  #contenido_admin .rv-pay__card-form { flex: 0 0 auto; }
}
@media (hover: none) and (pointer: coarse) {
  #contenido_admin .rv-pay__head { flex-wrap: wrap; gap: 20px 32px; }
}
/* Las habitaciones bajan en columnas de cuatro, no en una lista separada por comas. */
#contenido_admin .rv-rooms {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-rows: repeat(4, auto);
  grid-auto-flow: column;
  justify-content: start;
  gap: 9px 46px;
}
#contenido_admin .rv-rooms li { font-size: 13px; color: var(--rossa-navy); }
#contenido_admin .rv-rooms a { color: var(--rossa-petrol); font-weight: 500; }

/*----- 85.x Cancelar reserva (module=cancelar_reserva, popup del raíl de Ver reserva) -----*/
#contenido_admin #cont-config-cancel.cancel-reservation .cancel-header {
  text-align: left;
}
#contenido_admin #cont-config-cancel.cancel-reservation {
  padding: 0;
}
#contenido_admin .cancel-reservation .warning-text strong {
  display: none;
}
#contenido_admin .cancel-reservation .warning-text {
  width: fit-content;
}
#contenido_admin .cancel-reservation .op {
  border: 0;
  padding: 0;
}
#contenido_admin .cancel-reservation .op .admin_link {
  display: none;
}
#rossa-actionbar:has(#cancelar_reserva_submit) {
  justify-content: center;
}
@media (max-width: 700px) {
  #rossa-actionbar:has(#cancelar_reserva_submit) .rossa-actionbar-btn {
    flex: 1 1 0;
    min-width: 0;
  }
}
@media (max-width: 700px), (hover: none) and (pointer: coarse) {
  #contenido_admin .cancel-reservation .warning-text {
    width: auto;
    text-align: center;
  }
}

/*----- 86. Aviso flotante (.rossa-toast) -----*/
/* Sin #contenido_admin: toast.js lo cuelga de <body> para que ningún contenedor lo recorte. */
.rossa-toast {
  --rossa-toast-ink: var(--rossa-pag);
  position: fixed;
  top: 0;
  left: 50%;
  z-index: 100000;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 13px;
  box-sizing: border-box;
  width: min(700px, calc(100vw - 32px));
  min-height: 54px;
  margin: 0;
  padding: 10px 24px;
  border: 1px solid var(--rossa-toast-ink);
  border-radius: 0 0 12px 12px;
  background: color-mix(in srgb, var(--rossa-toast-ink) 10%, var(--rossa-white));
  font-family: var(--rossa-font);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.3;
  color: var(--rossa-toast-ink);
  cursor: pointer;
  transform: translateX(-50%);
  animation: rossa-toast-in .22s ease-out;
}
.rossa-toast--error   { --rossa-toast-ink: var(--rossa-red-dark); }
.rossa-toast--warning { --rossa-toast-ink: var(--rossa-coral); }
.rossa-toast--info    { --rossa-toast-ink: var(--rossa-db-400); }
.rossa-toast__icon { font-size: 20px; }
.rossa-toast__text {
  margin: 0;
  font: inherit;
  color: inherit;
  text-align: left;
}
.rossa-toast.is-leaving { animation: rossa-toast-out .18s ease-in forwards; }
@keyframes rossa-toast-in { from { opacity: 0; transform: translate(-50%, -100%); } }
@keyframes rossa-toast-out { to { opacity: 0; transform: translate(-50%, -100%); } }
@media (prefers-reduced-motion: reduce) {
  .rossa-toast,
  .rossa-toast.is-leaving { animation: none; }
}

/*----- 87. Pantalla de error (.rossa-error-screen) -----*/
dialog.rossa-error-screen {
  position: fixed;
  inset: 0;
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 32px 16px;
  border: 0;
  overflow: auto;
  background: var(--rossa-white);
  font-family: var(--rossa-font);
  text-align: center;
  color: var(--rossa-wine);
}
dialog.rossa-error-screen[open] {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  animation: rossa-error-screen-in .2s ease-out;
}
dialog.rossa-error-screen::backdrop { background: var(--rossa-white); }
dialog.rossa-error-screen:focus { outline: none; }
.rossa-error-screen__icon {
  margin-bottom: 36px;
  font-size: 106px;
}
.rossa-error-screen__title {
  margin: 0;
  padding: 0;
  font-family: var(--rossa-font);
  font-size: 24px;
  font-weight: 700;
  line-height: 1.2;
  text-transform: uppercase;
  color: var(--rossa-wine);
}
.rossa-error-screen__message {
  max-width: 460px;
  margin: 14px auto 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--rossa-navy);
}
.rossa-error-screen__notice {
  margin: 16px 0 0;
  font-size: 13px;
  line-height: 1.4;
  color: var(--rossa-stroke);
}
.rossa-error-screen__more {
  box-sizing: border-box;
  width: min(560px, 100%);
  margin-top: 20px;
  text-align: left;
  font-size: 12px;
  color: var(--rossa-stroke);
}
.rossa-error-screen__more summary {
  border-radius: var(--rossa-radius);
  text-align: center;
  cursor: pointer;
}
.rossa-error-screen__more summary:focus { outline: none; }
.rossa-error-screen__more summary:focus-visible { outline: 2px solid var(--rossa-teal); outline-offset: 2px; }
.rossa-error-screen__more pre {
  max-height: 30vh;
  margin: 10px 0 0;
  padding: 12px 14px;
  overflow: auto;
  border-radius: var(--rossa-radius);
  background: var(--rossa-strip);
  font-size: 12px;
  line-height: 1.5;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  color: var(--rossa-navy);
}
.rossa-error-screen__actions > :focus-visible { outline: 2px solid var(--rossa-teal); outline-offset: 2px; }
.rossa-error-screen__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin-top: 24px;
}
@keyframes rossa-error-screen-in { from { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  dialog.rossa-error-screen[open] { animation: none; }
}

/*----- 88. Popups: la página de debajo no rueda (js/rossa/dialog_lock.js) -----*/
/* !important: lydia_popup.js deja `overflow` en línea en el <html> de las páginas que abre. */
html.rossa-dialog-lock { overflow: hidden !important; }
html.rossa-dialog-lock body { padding-right: var(--dialog-sbw, 0px); }

/*----- 89. Páginas dentro del drawer (html.rossa-drawer-embed, la pone admin/includes/header.php) -----*/
/* Cada pantalla conserva el margen del modo embebido; la que se maqueta a sangre lo declara con `.rossa-full-bleed` en #contenido_admin. */
html.rossa-drawer-embed #contenedor_absoluto:has(> #contenido_admin.rossa-full-bleed) { padding: 0 !important; }
/* `margin-top: -20px` es de `.isiframe` en lydia.css, pensado para el popup antiguo: aquí subiría la página. */
html.rossa-drawer-embed #contenido_admin.rossa-full-bleed { padding: 0 !important; margin-top: 0; }
/* lydia_popup.js oculta en línea el primer <h1> para su cabecera; el drawer no se queda con el título. */
html.rossa-drawer-embed h1[style*="display: none"] { display: block !important; }
/* El #loading de lydia (ENABLE_TOP_LYDIA) se va en el load o 2 s después del ready y el drawer ya destapa en el ready; !important porque .show() lo pone en línea. */
html.rossa-drawer-embed #loading { display: none !important; }
/* Móvil, drawer a pantalla completa: 16px a los cuatro lados en cualquier pantalla; !important porque lydia_popup.css y §1 lo fijan con él. */
@media (max-width: 700px) {
  html.rossa-drawer-embed #contenedor_absoluto:has(#contenido_admin.isiframe:not(.rossa-full-bleed)) { padding-top: 16px !important; }
  html.rossa-drawer-embed #contenido_admin.isiframe:not(.rossa-full-bleed) { padding: 0 16px 16px !important; }
  html.rossa-drawer-embed #contenido_admin.isiframe:not(.rossa-full-bleed) h1:first-of-type { margin-top: 0; }
  /* La reserva de abajo es para la barra fija; sin barra, el final lo marca el relleno de 16px. */
  html.rossa-drawer-embed body:not(:has(#rossa-actionbar:not(.rossa-actionbar--vacia), .comm-actionbar)) #contenido_admin.isiframe { margin-bottom: 0 !important; }
  html.rossa-drawer-embed :is(#rossa-actionbar, #contenido_admin .comm-actionbar) { padding-left: 16px; padding-right: 16px; }
}

/*===== 90. SELECTOR DE ESTABLECIMIENTOS (#rossa_estab_form.rossa-estab-picker) =====*/
/* Sale del menú (§69.5): footer.php lo mueve a <body> para que se desplace con la página, arriba a la derecha. */
html.rossa-rail body:has(#rossa-toolbar-slot) #menu { padding-top: 76px; }
html.rossa-rail body:has(#rossa-toolbar-slot) #toplydia::after { height: 76px; }
html.rossa-rail body > #rossa-toolbar-slot {
  position: absolute;
  right: 20px;
  top: 40px;
  z-index: 990;
}
/* Abierto, por encima del botón DevTools (z-index 99990, class.errorVysor.php). */
html.rossa-rail body > #rossa-toolbar-slot:has(.rossa-estab-picker--abierto) { z-index: 99995; }
html.rossa-rail #rossa-toolbar-slot .rossa-estab-chip { display: none; }
/* Sin la tarjeta que le pone Comunicaciones (.comm-estab-bar en su index.php). */
html.rossa-rail #rossa-toolbar-slot .comm-estab-bar--fijo { display: block; width: auto; margin: 0; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
html.rossa-rail #rossa-toolbar-slot .comm-estab-bar--fijo .comm-estab-unico {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 36px;
  padding: 0 16px;
  box-sizing: border-box;
  border: 1px solid var(--rossa-petrol);
  border-radius: 5px;
  color: var(--rossa-petrol);
  font: 600 13px/1 var(--rossa-font);
  white-space: nowrap;
}
html.rossa-rail #rossa-toolbar-slot .comm-estab-bar--fijo .comm-estab-unico::before {
  content: "";
  width: 16px;
  height: 16px;
  background-color: currentColor;
  -webkit-mask: url("https://cdn.rossa.app/icons/establecimiento.svg") center / contain no-repeat;
          mask: url("https://cdn.rossa.app/icons/establecimiento.svg") center / contain no-repeat;
}

.rossa-estab-picker { position: relative; margin: 0; font-family: var(--rossa-font); }
/* --rossa-estab-ancho lo escribe footer.php con el ancho real del botón. */
/* html.rossa-rail body:has(#rossa_estab_form) #contenido_admin > h1 > .rossa-inicio__personalizar { margin-right: calc(var(--rossa-estab-ancho, 180px) + 12px); } */
/* En el Inicio, alineado con «Personalizar inicio» (top 49px, alto 34px). */
/* html.rossa-rail body:has(#rossa-inicio) > #rossa-toolbar-slot { top: 49px; } */
/* Delante del engranaje de «Personalizar inicio»: 22px de margen + 34px del botón + 12px de aire. */
html.rossa-rail body:has(#rossa-inicio) > #rossa-toolbar-slot { top: 49px; right: 68px; }
html.rossa-rail body:has(#rossa-inicio) > #rossa-toolbar-slot :is(.rossa-estab-picker__boton, .comm-estab-unico) { height: 34px; }
.rossa-estab-picker__boton {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 36px;
  padding: 0 16px;
  background: var(--rossa-white);
  border: 1px solid var(--rossa-petrol);
  border-radius: 5px;
  color: var(--rossa-petrol);
  font: 600 13px/1 var(--rossa-font);
  cursor: pointer;
  white-space: nowrap;
}
.rossa-estab-picker__boton:hover,
.rossa-estab-picker--abierto .rossa-estab-picker__boton { background: var(--rossa-strip); }
.rossa-estab-picker__rotulo { max-width: 220px; overflow: hidden; text-overflow: ellipsis; }
.rossa-estab-picker__icono,
.rossa-estab-picker__flecha {
  flex: 0 0 auto;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;   mask-repeat: no-repeat;
  -webkit-mask-position: center;    mask-position: center;
  -webkit-mask-size: contain;       mask-size: contain;
}
.rossa-estab-picker__icono {
  width: 16px;
  height: 16px;
  -webkit-mask-image: url("https://cdn.rossa.app/icons/establecimiento.svg");
          mask-image: url("https://cdn.rossa.app/icons/establecimiento.svg");
}
.rossa-estab-picker__flecha {
  width: 14px;
  height: 14px;
  -webkit-mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg");
          mask-image: url("https://cdn.rossa.app/icons/chevron-down.svg");
  transition: transform .15s ease;
}
.rossa-estab-picker--abierto .rossa-estab-picker__flecha { transform: rotate(180deg); }
html.rossa-rail .rossa-estab-picker__icono { display: none; }
html.rossa-rail #rossa-toolbar-slot .comm-estab-bar--fijo .comm-estab-unico::before { display: none; }
/* Un solo establecimiento: informativo, en gris para que no parezca un botón. */
html.rossa-rail #rossa-toolbar-slot .comm-estab-bar--fijo .comm-estab-unico {
  border-color: var(--rossa-border);
  background: var(--rossa-strip-soft);
  color: var(--rossa-muted);
  cursor: default;
  user-select: none;
}
.rossa-estab-picker__panel {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  width: 260px;
  max-width: calc(100vw - 32px);
  box-sizing: border-box;
  padding: 8px;
  background: #fff;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  box-shadow: 0 8px 24px rgba(22, 41, 45, .12);
  text-align: left;
}
.rossa-estab-picker__panel[hidden] { display: none; }
.rossa-estab-picker__buscar {
  display: block;
  width: 100%;
  box-sizing: border-box;
  height: 36px;
  padding: 0 10px;
  border: 1px solid var(--rossa-teal);
  border-radius: var(--rossa-radius);
  font: 400 13px var(--rossa-font);
  color: var(--rossa-ink);
  outline: none;
}
.rossa-estab-picker__acciones { display: flex; justify-content: space-between; gap: 12px; padding: 10px 4px 4px; }
.rossa-estab-picker__acciones button {
  padding: 0;
  background: none;
  border: 0;
  color: var(--rossa-teal);
  font: 600 12px var(--rossa-font);
  cursor: pointer;
  white-space: nowrap;
}
.rossa-estab-picker__acciones button:hover { text-decoration: underline; }
.rossa-estab-picker__cuenta { padding: 10px 4px 4px; color: var(--rossa-muted); font-size: 12px; }
.rossa-estab-picker--vacio .rossa-estab-picker__cuenta { color: var(--rossa-coral); }
.rossa-estab-picker__todas {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
  padding: 6px 4px 10px;
  border-bottom: 1px solid var(--rossa-border);
  color: var(--rossa-ink);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}
.rossa-estab-picker__todas input[type="checkbox"] { width: 16px; height: 16px; margin: 0; accent-color: var(--rossa-teal); }
.rossa-estab-picker__lista { max-height: 320px; margin: 0; padding: 0; overflow-y: auto; list-style: none; }
.rossa-estab-picker__lista li[hidden] { display: none; }
.rossa-estab-picker__lista label {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 4px;
  border-radius: 6px;
  color: var(--rossa-ink);
  font-size: 13px;
  cursor: pointer;
}
.rossa-estab-picker__lista label:hover { background: var(--rossa-strip-soft); }
.rossa-estab-picker__lista input[type="checkbox"] { width: 16px; height: 16px; margin: 0; accent-color: var(--rossa-teal); }

/* «Personalizar inicio» solo con el engranaje; el texto queda en el tooltip y en aria-label. */
#contenido_admin > h1 > .rossa-inicio__personalizar {
  display: inline-grid;
  place-items: center;
  flex: 0 0 34px;
  width: 34px;
  height: 34px;
  padding: 0;
  overflow: hidden;
  line-height: 0;
}
#contenido_admin > h1 > .rossa-inicio__personalizar .rossa-inicio__personalizar-texto { display: none; }
#contenido_admin > h1 > .rossa-inicio__personalizar::before {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  background-color: var(--rossa-petrol);
  -webkit-mask: url("https://cdn.rossa.app/icons/settings.svg") center / contain no-repeat;
          mask: url("https://cdn.rossa.app/icons/settings.svg") center / contain no-repeat;
}

/* Sin raíl (táctil) sigue fijo en la barra como el selector anterior (§66.5): mismas medidas, el panel cae bajo el botón. */
html:not(.rossa-rail) #toolbar .rossa-estab-picker__panel { left: 0; right: auto; width: 290px; }
@media (max-width: 700px) {
  html:not(.rossa-rail) #toolbar .rossa-estab-picker__boton {
    justify-content: center;
    width: 38px;
    height: 36px;
    padding: 0;
    border-color: var(--rossa-navy);
    border-radius: 5px;
    color: var(--rossa-navy);
  }
  html:not(.rossa-rail) #toolbar .rossa-estab-picker__rotulo,
  html:not(.rossa-rail) #toolbar .rossa-estab-picker__flecha { display: none; }
  html:not(.rossa-rail) #toolbar .rossa-estab-picker__icono { width: 20px; height: 20px; }
  html:not(.rossa-rail) #toolbar .rossa-estab-picker__panel { width: 260px; max-width: calc(100vw - 76px); }
  /* Un solo establecimiento: el nombre se parte antes del logo centrado (60px de inicio + 19px de medio logo + 12px de aire). */
  html:not(.rossa-rail) #toolbar .comm-estab-bar--fijo .comm-estab-unico { max-width: calc(50vw - 91px); line-height: 1.2; }
  /* El hueco llega hasta pasado el logo (+19px de medio logo y 12px de aire) para que «+» quede a su derecha. */
  html:not(.rossa-rail) #toolbar #rossa-toolbar-slot:has(.comm-estab-bar--fijo) { flex: 0 1 calc(50vw - 29px); min-width: 0; }
}
@media (min-width: 701px) and (hover: none) and (pointer: coarse) {
  html:not(.rossa-rail) #toolbar .rossa-estab-picker__boton { width: 150px; }
  html:not(.rossa-rail) #toolbar .rossa-estab-picker__rotulo { flex: 1 1 auto; min-width: 0; }
}

/*===== 91. FICHA DE PUERTA (module=edit_door) =====*/
#puerta_establecimientos + .select2-container { max-width: 560px; }
#puerta_establecimientos ~ small { display: block; margin-top: 6px; color: var(--rossa-muted); }
#puerta_establecimientos + .select2-container .select2-selection--multiple {
  min-height: 38px;
  padding: 3px 6px;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
}
#puerta_establecimientos + .select2-container.select2-container--focus .select2-selection--multiple { border-color: var(--rossa-teal); }
/* El buscador de Select2 es un <textarea>: sin esto hereda el alto mínimo y el borde de los textareas del admin. */
#puerta_establecimientos + .select2-container .select2-search__field {
  min-height: 0;
  height: 26px;
  margin: 2px 0 0;
  padding: 0 4px;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  resize: none;
  font: 400 13px/26px var(--rossa-font);
}
#puerta_establecimientos + .select2-container .select2-selection__choice {
  margin: 2px 4px 2px 0;
  padding: 2px 8px 2px 22px;
  border: 0;
  border-radius: var(--rossa-radius-pill);
  background: var(--rossa-strip);
  color: var(--rossa-ink);
  font-size: 13px;
}
#puerta_establecimientos + .select2-container .select2-selection__choice__remove {
  top: 50%;
  left: 6px;
  border: 0;
  transform: translateY(-50%);
  color: var(--rossa-muted);
}

/*----- 92. Enviar factura por email ----------------------------------------*/
#lydia_popup.billmailpop {
  width: min(760px, calc(100vw - 32px));
  max-width: min(760px, calc(100vw - 32px));
  height: min(900px, calc(100dvh - 32px));
  max-height: min(900px, calc(100dvh - 32px));
}
#contenido_admin .rossa-billmail {
  max-width: 720px;
  margin: 4px auto 72px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
#contenido_admin.isiframe .rossa-billmail {
  max-width: none;
  margin: 4px 0 0;
}
body:has(#rossa-actionbar):has(.rossa-billmail) #contenido_admin.isiframe {
  margin-bottom: 68px;
}
#contenido_admin .rossa-billmail__form {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
#contenido_admin .rossa-billmail .rossa-field {
  display: flex;
  width: 100%;
  gap: 6px;
}
#contenido_admin .rossa-billmail input[type="hidden"] { display: none; }
#contenido_admin .rossa-billmail .rossa-field > input,
#contenido_admin .rossa-billmail .rossa-field > select,
#contenido_admin .rossa-billmail .rossa-field > .select2-container {
  width: 100% !important;
  max-width: none;
  height: 36px;
  margin: 0;
  box-sizing: border-box;
  font-size: 14px;
}
#contenido_admin .rossa-billmail .rossa-field > input {
  padding: 6px 12px;
}
#contenido_admin .rossa-billmail__note,
#contenido_admin .rossa-billmail__hint {
  margin: 0;
  color: var(--rossa-muted);
  font-size: 13px;
  line-height: 1.35;
}
#contenido_admin .rossa-billmail-folio {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: 36px;
  margin: 0;
  padding: 6px 12px;
  box-sizing: border-box;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-strip);
  color: var(--rossa-ink);
  font-size: 14px;
  line-height: 1.3;
}
#contenido_admin .rossa-billmail-files {
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 100%;
}
#contenido_admin .rossa-billmail-file {
  display: flex;
  align-items: center;
  gap: 4px;
  width: 100%;
  min-height: 36px;
  margin: 0;
  padding: 6px 6px 6px 12px;
  box-sizing: border-box;
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
  background: var(--rossa-white);
  color: var(--rossa-ink);
  font-size: 14px;
  line-height: 1.3;
}
#contenido_admin .rossa-billmail-file__main {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
  flex: 1 1 auto;
  color: inherit;
  text-decoration: none;
}
#contenido_admin a.rossa-billmail-file__main:hover {
  color: var(--rossa-ink);
  text-decoration: none;
}
#contenido_admin .rossa-billmail-file__remove {
  flex: 0 0 28px;
  width: 28px;
  height: 28px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--rossa-muted);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
#contenido_admin .rossa-billmail-file__remove:hover {
  color: var(--rossa-coral);
  background: var(--rossa-salmon);
}
#contenido_admin .rossa-billmail-file__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  flex: 0 0 28px;
  border-radius: 6px;
  background: var(--rossa-salmon);
  color: var(--rossa-coral);
}
#contenido_admin .rossa-billmail-file__badge i { font-size: 15px; }
#contenido_admin .rossa-billmail-file__name {
  min-width: 0;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#contenido_admin .rossa-billmail-file__size {
  margin-left: auto;
  color: var(--rossa-muted);
  font-size: 12px;
  font-weight: 500;
  flex: 0 0 auto;
}
#contenido_admin .rossa-billmail-file--missing {
  background: var(--rossa-strip);
  color: var(--rossa-muted);
}
#contenido_admin .rossa-billmail-file--missing a {
  margin-left: auto;
  color: var(--rossa-cyan);
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}
#contenido_admin .rossa-billmail .tox-tinymce {
  width: 100% !important;
  border-color: var(--rossa-border);
  border-radius: var(--rossa-radius);
  overflow: hidden;
}
@media (max-width: 768px) {
  #lydia_popup.billmailpop {
    width: 100vw !important;
    max-width: none !important;
    height: 100dvh !important;
    max-height: none !important;
    margin: 0 !important;
    border: 0;
    border-radius: 0;
    box-shadow: none;
  }
}
#rossa-actionbar .rossa-billmail-send-btn:disabled,
#rossa-actionbar .rossa-billmail-send-btn:disabled:hover {
  opacity: .45 !important;
  background: var(--rossa-surface) !important;
  border-color: var(--rossa-border) !important;
  color: var(--rossa-muted) !important;
  cursor: not-allowed;
}
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn-disabled.fact-bill-mail-off,
#contenido_admin .rossa-fact-bill-visor:not(.fv-page) .fact-bill-view-btn-disabled.fact-bill-mail-off:hover,
#rossa-actionbar .fact-bill-view-btn-disabled.fact-bill-mail-off,
#rossa-actionbar .fact-bill-view-btn-disabled.fact-bill-mail-off:hover {
  opacity: .45 !important;
  cursor: not-allowed;
}

/*===== 93. ENVÍO MANUAL DE EMAIL, SMS Y WHATSAPP (.rossa-manual-send) =====*/
/* Las tablas y el formulario se aplanan (display: contents) para colocar cada rótulo y campo en la rejilla del modal de plantillas. */
#contenido_admin.rossa-manual-send {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  grid-auto-flow: row dense;
  column-gap: 14px;
  align-content: start;
}
#contenido_admin.rossa-manual-send > * { grid-column: 1 / -1; }
#contenido_admin.rossa-manual-send > br,
#contenido_admin.rossa-manual-send .rossa-sms-message-table > thead { display: none; }
#contenido_admin.rossa-manual-send > form,
#contenido_admin.rossa-manual-send :is(.rossa-sms-precarga-table, .rossa-sms-message-table),
#contenido_admin.rossa-manual-send :is(.rossa-sms-precarga-table, .rossa-sms-message-table) > tbody,
#contenido_admin.rossa-manual-send :is(.rossa-sms-precarga-table, .rossa-sms-message-table) > tbody > tr { display: contents; }
#contenido_admin.rossa-manual-send :is(.rossa-sms-precarga-table, .rossa-sms-message-table) > tbody > tr > td {
  grid-column: 1 / -1;
  display: block;
  width: auto;
  padding: 0;
  border: 0;
  background-color: transparent;
  text-align: left;
}
#contenido_admin.rossa-manual-send .rossa-sms-precarga-table > tbody > tr > td[colspan] {
  margin: 0 0 18px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--rossa-muted);
}
#contenido_admin.rossa-manual-send .rossa-sms-precarga-table > tbody > tr > td[colspan] strong { color: var(--rossa-ink); }
#contenido_admin.rossa-manual-send .rossa-sms-precarga-table > tbody > tr > td[colspan]:has(> b) {
  padding: 12px 16px;
  border: 1px solid var(--rossa-border);
  border-left: 4px solid var(--rossa-coral);
  border-radius: var(--rossa-radius);
  background-color: #fdf3e7;
  color: var(--rossa-ink);
}
#contenido_admin.rossa-manual-send :is(.rossa-sms-precarga-table, .rossa-sms-message-table) > tbody > tr:not(:has(> td[colspan])) > td:first-child {
  margin: 0 0 5px;
  font-size: 11px;
  font-weight: 700;
  line-height: normal;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rossa-stroke);
}
#contenido_admin.rossa-manual-send :is(.rossa-sms-precarga-table, .rossa-sms-message-table) > tbody > tr:not(:has(> td[colspan])) > td:last-child { margin: 0 0 14px; }
#contenido_admin.rossa-manual-send .rossa-sms-precarga-table > tbody > tr:not(:has(> td[colspan])) > td { grid-column: 1; }
#contenido_admin.rossa-manual-send .rossa-sms-message-table > tbody > tr:has(select[name="manual_credentials"]) > td { grid-column: 2; }
#contenido_admin.rossa-manual-send .rossa-sms-message-table > tbody > tr > td[colspan] { text-align: center; }
#contenido_admin.rossa-manual-send .rossa-sms-precarga-table td form select {
  flex: 1 1 auto;
  min-width: 0;
  max-width: none;
}
#contenido_admin.rossa-manual-send .rossa-sms-precarga-table td form .admin_boton { flex: 0 0 auto; }
#contenido_admin.rossa-manual-send .rossa-sms-message-table td :is(select, input.full-input, textarea.full-textarea) {
  width: 100%;
  max-width: none;
}
#contenido_admin.rossa-manual-send .rossa-sms-message-table .tox-tinymce {
  border: 1px solid var(--rossa-border);
  border-radius: var(--rossa-radius);
}
@media (max-width: 700px) {
  #contenido_admin.rossa-manual-send { grid-template-columns: minmax(0, 1fr); }
  #contenido_admin.rossa-manual-send :is(.rossa-sms-precarga-table, .rossa-sms-message-table) > tbody > tr > td,
  #contenido_admin.rossa-manual-send .rossa-sms-precarga-table > tbody > tr:not(:has(> td[colspan])) > td,
  #contenido_admin.rossa-manual-send .rossa-sms-message-table > tbody > tr:has(select[name="manual_credentials"]) > td { grid-column: 1; }
  #contenido_admin.rossa-manual-send .rossa-sms-precarga-table td form .admin_boton { width: 100%; }
}

/*=====  EXPORTAR DE LAS TABLAS: modal que abre «Exportar» de la barra de acciones (js/rossa/exportar.js) =====*/
.rossa-exportar-modal .rossa-modal { max-width: 480px; }
.rossa-exportar-modal .rossa-modal__body { display: flex; flex-direction: column; gap: 16px; }
.rossa-exportar-modal .rossa-modal__foot { gap: 8px; }
.rossa-exportar-modal [hidden] { display: none !important; }
.rossa-exportar-modal .rossa-field { display: flex; }
.rossa-exportar-grupo { margin: 0; padding: 0; border: 0; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.rossa-exportar-grupo legend { padding: 0; }
.rossa-exportar-opciones { display: flex; flex-wrap: wrap; gap: 8px 18px; }
.rossa-exportar-opciones label {
  display: inline-flex; align-items: center; gap: 7px; cursor: pointer;
  font-family: var(--rossa-font); font-size: 13px; font-weight: 700; color: var(--rossa-ink);
}
.rossa-exportar-opciones input[type="radio"] { margin: 0; accent-color: var(--rossa-teal); }
.rossa-exportar-nombre { display: flex; align-items: center; gap: 8px; }
.rossa-exportar-nombre input[type="text"] { flex: 1 1 auto; min-width: 0; }
.rossa-exportar-ext { font-size: 13px; color: var(--rossa-muted); }
.rossa-exportar-nota,
.rossa-exportar-estado { margin: 0; font-size: 13px; color: var(--rossa-muted); }
.rossa-exportar-estado:empty { display: none; }
.rossa-exportar-estado.es-error { color: var(--rossa-red); }
