/* Estilos visuales extra del shell v2 (05/11/2026): "Rosa", "Fluent" (Windows 11) y "Apple" (macOS), ademas de Claro y Oscuro.
 *
 * Como funciona: Bootstrap 5.3 solo conoce `data-bs-theme` = light | dark. Los estilos nuevos se activan con `data-v2-estilo` en <html>
 * (lo pone el <head> del layout con TemaV2::scriptInicial y core/usuario.js al cambiar):
 *   - rosa:   claro con tonos rosa palo (data-bs-theme=light).
 *   - fluent: sigue al sistema (light | dark), o claro/oscuro fijo si el usuario lo elige (`fluent-light` / `fluent-dark`). Mica/Acrilico, esquinas de 4-8 px, linea de acento en lo activo y movimiento rapido sin rebote, al estilo de Windows 11.
 *   - apple:  sigue al sistema (light | dark), o claro/oscuro fijo (`apple-light` / `apple-dark`). Vidrio translucido con desenfoque intenso, brillo especular, fondo vivo, entradas con desplazamiento y resorte, al estilo de macOS.
 * Claro y oscuro no llevan `data-v2-estilo`, asi que nada de este archivo los afecta.
 * Solo se redefinen variables de Bootstrap/AdminLTE y se pulen componentes: sin colores fijos en las pantallas.
 */

/* ================================================================== ROSA (claro rosado) */
/* Un tema claro con tonos rosa palo: fondos crema-rosados, acento rosa empolvado con texto oscuro legible. Los colores de estado
 * (verde/amarillo/rojo) se dejan como en el tema claro para que signifiquen lo mismo en todos los temas. */
html[data-v2-estilo=rosa] {
  color-scheme: light;
  --v2-ro-acento: #a8566a; --v2-ro-acento-h: #944a5d; --v2-ro-acento-a: #843f51; --v2-ro-acento-suave: rgba(168, 86, 106, .14);
  --v2-ro-lateral: #f1dde1; --v2-ro-barra: #fbf1f3; --v2-ro-linea: #e6cfd5;
  --bs-body-bg: #f8eef0; --bs-body-bg-rgb: 248, 238, 240;
  --bs-body-color: #3b2a2f; --bs-body-color-rgb: 59, 42, 47;
  --bs-emphasis-color: #24171b; --bs-emphasis-color-rgb: 36, 23, 27;
  --bs-heading-color: #2e1f24;
  --bs-secondary-color: rgba(59, 42, 47, .68); --bs-secondary-color-rgb: 59, 42, 47; --bs-tertiary-color: rgba(59, 42, 47, .5);
  --bs-secondary-bg: #fcf6f7; --bs-secondary-bg-rgb: 252, 246, 247;
  --bs-tertiary-bg: #f6e9ec; --bs-tertiary-bg-rgb: 246, 233, 236;
  --bs-border-color: #e6cfd5; --bs-border-color-translucent: rgba(120, 60, 78, .14);
  --bs-primary: #a8566a; --bs-primary-rgb: 168, 86, 106;
  --bs-primary-text-emphasis: #6e2e40; --bs-primary-bg-subtle: #f4dde3; --bs-primary-border-subtle: #e3b9c4;
  --bs-link-color: #964a5d; --bs-link-color-rgb: 150, 74, 93; --bs-link-hover-color: #7a3a4b; --bs-link-hover-color-rgb: 122, 58, 75;
  --bs-focus-ring-color: rgba(168, 86, 106, .28);
  --bs-card-bg: #fdf8f9; --bs-card-border-color: #ebd5da; --bs-card-cap-bg: #f9edf0;
  --bs-modal-bg: #fdf8f9; --bs-modal-border-color: #e6cfd5; --bs-modal-header-border-color: #ecd8dd; --bs-modal-footer-border-color: #ecd8dd;
  --bs-dropdown-bg: #fdf8f9; --bs-dropdown-border-color: #e6cfd5; --bs-dropdown-link-hover-bg: #f6e3e7; --bs-dropdown-link-color: #3b2a2f;
  --bs-popover-bg: #fdf8f9; --bs-toast-bg: #fdf8f9; --bs-offcanvas-bg: #fdf8f9;
  --swal2-background: #fdf8f9; --swal2-color: #3b2a2f;
}
html[data-v2-estilo=rosa] ::selection { background: rgba(168, 86, 106, .28); }
html[data-v2-estilo=rosa] .app-header { background-color: var(--v2-ro-barra) !important; border-bottom: 1px solid var(--v2-ro-linea); box-shadow: none; }
html[data-v2-estilo=rosa] .app-sidebar { background-color: var(--v2-ro-lateral) !important; border-right: 1px solid var(--v2-ro-linea); box-shadow: none !important;
  --lte-sidebar-color: #4d3239; --lte-sidebar-hover-color: #2e1f24; --lte-sidebar-active-color: #2e1f24; --lte-sidebar-menu-active-color: #6e2e40;
  --lte-sidebar-hover-bg: rgba(168, 86, 106, .10); --lte-sidebar-menu-active-bg: rgba(168, 86, 106, .18); --lte-sidebar-submenu-hover-bg: rgba(168, 86, 106, .08); --lte-sidebar-submenu-active-bg: rgba(168, 86, 106, .12); }
html[data-v2-estilo=rosa] .card { box-shadow: 0 1px 3px rgba(120, 60, 78, .08); }
html[data-v2-estilo=rosa] .form-control, html[data-v2-estilo=rosa] .form-select, html[data-v2-estilo=rosa] .ts-control { background-color: #fffafb; border-color: #e3ccd2; }
html[data-v2-estilo=rosa] .form-control:focus, html[data-v2-estilo=rosa] .form-select:focus, html[data-v2-estilo=rosa] .ts-wrapper.focus .ts-control { border-color: var(--v2-ro-acento); box-shadow: 0 0 0 .2rem rgba(168, 86, 106, .22); }
html[data-v2-estilo=rosa] .form-check-input:checked { background-color: var(--v2-ro-acento); border-color: var(--v2-ro-acento); }
html[data-v2-estilo=rosa] .nav-tabs .nav-link.active, html[data-v2-estilo=rosa] .nav-pills .nav-link.active { color: #fff; }
html[data-v2-estilo=rosa] .nav-tabs .nav-link.active { background-color: var(--bs-card-bg); color: #6e2e40; border-color: var(--v2-ro-linea) var(--v2-ro-linea) var(--bs-card-bg); }
html[data-v2-estilo=rosa] .nav-pills .nav-link.active { background-color: var(--v2-ro-acento); }
html[data-v2-estilo=rosa] .dropdown-item.active, html[data-v2-estilo=rosa] .dropdown-item:active { background-color: var(--v2-ro-acento); color: #fff; }
html[data-v2-estilo=rosa] .page-item.active .page-link { background-color: var(--v2-ro-acento); border-color: var(--v2-ro-acento); }
html[data-v2-estilo=rosa] .table { --bs-table-striped-bg: rgba(168, 86, 106, .05); --bs-table-hover-bg: rgba(168, 86, 106, .09); --bs-table-border-color: #ecd8dd; }
html[data-v2-estilo=rosa] .tabulator { background-color: transparent; border-color: #ecd8dd; }
html[data-v2-estilo=rosa] .tabulator .tabulator-header { background-color: #f6e6ea; border-bottom-color: #e6cfd5; color: #3b2a2f; }
html[data-v2-estilo=rosa] .tabulator .tabulator-header .tabulator-col { background-color: transparent; border-right-color: #ecd8dd; }
html[data-v2-estilo=rosa] .tabulator .tabulator-row:not([class*="v2-"]) { background-color: #fdf8f9; border-bottom-color: #f0dde2; }
html[data-v2-estilo=rosa] .tabulator .tabulator-row.tabulator-row-even:not([class*="v2-"]) { background-color: #faf0f2; }
html[data-v2-estilo=rosa] .tabulator .tabulator-row:not([class*="v2-"]):hover { background-color: #f4e1e6 !important; }
html[data-v2-estilo=rosa] .tabulator .tabulator-row.tabulator-selected { background-color: rgba(168, 86, 106, .2) !important; }
html[data-v2-estilo=rosa] .tabulator .tabulator-footer { background-color: #f6e6ea; border-top-color: #e6cfd5; }
html[data-v2-estilo=rosa] .btn-primary { --bs-btn-color: #fff; --bs-btn-bg: #a8566a; --bs-btn-border-color: #a8566a; --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #944a5d; --bs-btn-hover-border-color: #8a4556; --bs-btn-active-color: #fff; --bs-btn-active-bg: #843f51; --bs-btn-active-border-color: #7a3a4b; --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: #a8566a; --bs-btn-disabled-border-color: #a8566a; --bs-btn-focus-shadow-rgb: 168, 86, 106; }
html[data-v2-estilo=rosa] .btn-outline-primary { --bs-btn-color: #964a5d; --bs-btn-border-color: #a8566a; --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #a8566a; --bs-btn-hover-border-color: #a8566a; --bs-btn-active-color: #fff; --bs-btn-active-bg: #944a5d; --bs-btn-active-border-color: #944a5d; --bs-btn-disabled-color: #a8566a; --bs-btn-disabled-border-color: #a8566a; --bs-btn-focus-shadow-rgb: 168, 86, 106; }
html[data-v2-estilo=rosa] .btn-secondary { --bs-btn-color: #4d3239; --bs-btn-bg: #ecd6db; --bs-btn-border-color: #e0c3ca; --bs-btn-hover-color: #3b2a2f; --bs-btn-hover-bg: #e4c9d0; --bs-btn-hover-border-color: #d8b6bf; --bs-btn-active-color: #3b2a2f; --bs-btn-active-bg: #dbbcc4; --bs-btn-active-border-color: #cfa9b3; --bs-btn-disabled-color: #4d3239; --bs-btn-disabled-bg: #ecd6db; --bs-btn-disabled-border-color: #e0c3ca; }
html[data-v2-estilo=rosa] .btn-outline-secondary { --bs-btn-color: #6b4a52; --bs-btn-border-color: #cfa9b3; --bs-btn-hover-color: #3b2a2f; --bs-btn-hover-bg: #ecd6db; --bs-btn-hover-border-color: #cfa9b3; --bs-btn-active-color: #3b2a2f; --bs-btn-active-bg: #e4c9d0; --bs-btn-active-border-color: #cfa9b3; --bs-btn-disabled-color: #6b4a52; --bs-btn-disabled-border-color: #cfa9b3; }
html[data-v2-estilo=rosa] .badge.text-bg-primary { background-color: #a8566a !important; }
html[data-v2-estilo=rosa] .progress-bar { background-color: var(--v2-ro-acento); }
html[data-v2-estilo=rosa] .swal2-styled.swal2-confirm { background-color: var(--v2-ro-acento) !important; }
html[data-v2-estilo=rosa] ::-webkit-scrollbar-thumb { background: #d9b6bf; border-radius: 8px; border: 3px solid transparent; background-clip: padding-box; }
html[data-v2-estilo=rosa] ::-webkit-scrollbar-track { background: transparent; }

/* ================================================================== FLUENT (Windows 11) */
/* Sigue al sistema (claro u oscuro). Material "Mica" (fondo solido ligeramente tenido), "Acrilico" solo en menus y avisos, esquinas de 4/8 px,
 * linea de acento en el elemento activo, campos con subrayado de acento al enfocar y movimiento rapido de desaceleracion (sin rebote). */
html[data-v2-estilo=fluent] {
  --v2-fl-fuente: "Segoe UI Variable Text", "Segoe UI Variable", "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", sans-serif;
  --v2-fl-decel: cubic-bezier(0, 0, 0, 1);
  --v2-fl-std: cubic-bezier(.33, 0, .67, 1);
  --v2-fl-acrilico: blur(30px) saturate(125%);
  --bs-font-sans-serif: var(--v2-fl-fuente); --bs-body-font-family: var(--v2-fl-fuente);
  --bs-border-radius: .4rem; --bs-border-radius-sm: .3rem; --bs-border-radius-lg: .55rem; --bs-border-radius-xl: .7rem; --bs-border-radius-xxl: .9rem;
  --bs-primary: var(--v2-fl-acento); --bs-primary-rgb: var(--v2-fl-acento-rgb);
  --bs-link-color: var(--v2-fl-acento-texto); --bs-link-hover-color: var(--v2-fl-acento-hover);
  --bs-focus-ring-color: color-mix(in srgb, var(--v2-fl-acento) 35%, transparent);
  --bs-card-bg: var(--v2-fl-capa); --bs-card-border-color: var(--v2-fl-linea); --bs-card-cap-bg: var(--v2-fl-capa-2); --bs-card-border-radius: .55rem; --bs-card-inner-border-radius: calc(.55rem - 1px);
  --bs-modal-bg: var(--v2-fl-capa); --bs-modal-border-color: var(--v2-fl-linea); --bs-modal-header-border-color: var(--v2-fl-linea); --bs-modal-footer-border-color: var(--v2-fl-linea);
  --bs-modal-border-radius: .75rem; --bs-modal-inner-border-radius: calc(.75rem - 1px); --bs-modal-footer-bg: var(--v2-fl-capa-2);
  --bs-dropdown-bg: var(--v2-fl-acrilico-bg); --bs-dropdown-border-color: var(--v2-fl-linea); --bs-dropdown-border-radius: .55rem; --bs-dropdown-link-hover-bg: var(--v2-fl-hover);
  --bs-popover-bg: var(--v2-fl-acrilico-bg); --bs-popover-border-color: var(--v2-fl-linea);
  --bs-toast-bg: var(--v2-fl-acrilico-bg); --bs-toast-border-color: var(--v2-fl-linea);
  --bs-offcanvas-bg: var(--v2-fl-capa);
  --swal2-background: var(--v2-fl-capa);
  --bs-box-shadow: 0 2px 4px rgba(0, 0, 0, .08); --bs-box-shadow-sm: 0 1px 2px rgba(0, 0, 0, .08); --bs-box-shadow-lg: 0 8px 16px rgba(0, 0, 0, .14);
}
html[data-v2-estilo=fluent][data-bs-theme=light] {
  color-scheme: light;
  --v2-fl-acento: #0067c0; --v2-fl-acento-rgb: 0, 103, 192; --v2-fl-acento-hover: #1975c5; --v2-fl-acento-activo: #3283ca; --v2-fl-acento-texto: #005a9e; --v2-fl-sobre-acento: #fff;
  --v2-fl-fondo: linear-gradient(160deg, #eaf1fb 0%, #f3f3f3 38%, #f6efe9 100%);
  --v2-fl-capa: #fbfbfb; --v2-fl-capa-2: #f3f3f3; --v2-fl-campo: #fdfdfd;
  --v2-fl-acrilico-bg: rgba(252, 252, 252, .82); --v2-fl-lateral: rgba(243, 243, 243, .80);
  --v2-fl-linea: rgba(0, 0, 0, .075); --v2-fl-linea-fuerte: rgba(0, 0, 0, .45); --v2-fl-hover: rgba(0, 0, 0, .045); --v2-fl-pres: rgba(0, 0, 0, .03);
  --v2-fl-sombra: 0 1px 2px rgba(0, 0, 0, .06), 0 0 0 1px rgba(0, 0, 0, .02); --v2-fl-sombra-flota: 0 8px 24px rgba(0, 0, 0, .14), 0 0 2px rgba(0, 0, 0, .12);
  --v2-fl-ok: #0f7b0f; --v2-fl-ok-h: #2b8a2b; --v2-fl-ok-a: #489948; --v2-fl-mal: #c42b1c; --v2-fl-mal-h: #cd4234; --v2-fl-mal-a: #d4584c;
  --v2-fl-aviso: #fce100; --v2-fl-aviso-h: #f5d900; --v2-fl-aviso-a: #e6cc00; --v2-fl-aviso-texto: #1a1a1a; --v2-fl-info: #005fb8; --v2-fl-info-h: #1a70c0; --v2-fl-info-a: #3481c8;
  --bs-body-bg: #f3f3f3; --bs-body-bg-rgb: 243, 243, 243; --bs-secondary-bg: #f9f9f9; --bs-secondary-bg-rgb: 249, 249, 249; --bs-tertiary-bg: #f6f6f6; --bs-tertiary-bg-rgb: 246, 246, 246;
  --bs-body-color: #1a1a1a; --bs-body-color-rgb: 26, 26, 26; --bs-emphasis-color: #000; --bs-emphasis-color-rgb: 0, 0, 0;
  --bs-secondary-color: rgba(0, 0, 0, .62); --bs-secondary-color-rgb: 0, 0, 0; --bs-tertiary-color: rgba(0, 0, 0, .45);
  --bs-border-color: rgba(0, 0, 0, .12); --bs-border-color-translucent: rgba(0, 0, 0, .075);
  --bs-success: #0f7b0f; --bs-success-rgb: 15, 123, 15; --bs-danger: #c42b1c; --bs-danger-rgb: 196, 43, 28; --bs-warning: #9d5d00; --bs-warning-rgb: 157, 93, 0; --bs-info: #005fb8; --bs-info-rgb: 0, 95, 184;
}
html[data-v2-estilo=fluent][data-bs-theme=dark] {
  color-scheme: dark;
  --v2-fl-acento: #4cc2ff; --v2-fl-acento-rgb: 76, 194, 255; --v2-fl-acento-hover: #47b1e8; --v2-fl-acento-activo: #42a1d2; --v2-fl-acento-texto: #60cdff; --v2-fl-sobre-acento: #00243a;
  --v2-fl-fondo: linear-gradient(160deg, #1b2733 0%, #202020 40%, #261f2a 100%);
  --v2-fl-capa: #2b2b2b; --v2-fl-capa-2: #323232; --v2-fl-campo: #313131;
  --v2-fl-acrilico-bg: rgba(44, 44, 44, .80); --v2-fl-lateral: rgba(32, 32, 32, .78);
  --v2-fl-linea: rgba(255, 255, 255, .075); --v2-fl-linea-fuerte: rgba(255, 255, 255, .55); --v2-fl-hover: rgba(255, 255, 255, .06); --v2-fl-pres: rgba(255, 255, 255, .04);
  --v2-fl-sombra: 0 1px 2px rgba(0, 0, 0, .3), 0 0 0 1px rgba(0, 0, 0, .12); --v2-fl-sombra-flota: 0 10px 28px rgba(0, 0, 0, .5), 0 0 2px rgba(0, 0, 0, .5);
  --v2-fl-ok: #6ccb5f; --v2-fl-ok-h: #62b857; --v2-fl-ok-a: #58a550; --v2-fl-mal: #ff99a4; --v2-fl-mal-h: #e68a94; --v2-fl-mal-a: #cc7b84;
  --v2-fl-aviso: #fce100; --v2-fl-aviso-h: #e6cf00; --v2-fl-aviso-a: #ccb800; --v2-fl-aviso-texto: #1a1a1a; --v2-fl-info: #60cdff; --v2-fl-info-h: #55b8e4; --v2-fl-info-a: #4aa3c9;
  --bs-body-bg: #202020; --bs-body-bg-rgb: 32, 32, 32; --bs-secondary-bg: #2b2b2b; --bs-secondary-bg-rgb: 43, 43, 43; --bs-tertiary-bg: #262626; --bs-tertiary-bg-rgb: 38, 38, 38;
  --bs-body-color: #fff; --bs-body-color-rgb: 255, 255, 255; --bs-emphasis-color: #fff; --bs-emphasis-color-rgb: 255, 255, 255;
  --bs-secondary-color: rgba(255, 255, 255, .78); --bs-secondary-color-rgb: 255, 255, 255; --bs-tertiary-color: rgba(255, 255, 255, .55);
  --bs-border-color: rgba(255, 255, 255, .14); --bs-border-color-translucent: rgba(255, 255, 255, .075);
  --bs-success: #6ccb5f; --bs-success-rgb: 108, 203, 95; --bs-danger: #ff99a4; --bs-danger-rgb: 255, 153, 164; --bs-warning: #fce100; --bs-warning-rgb: 252, 225, 0; --bs-info: #60cdff; --bs-info-rgb: 96, 205, 255;
  --swal2-color: #fff;
}
html[data-v2-estilo=fluent] { background: var(--v2-fl-fondo); background-attachment: fixed; min-height: 100%; }
html[data-v2-estilo=fluent] body, html[data-v2-estilo=fluent] .app-wrapper, html[data-v2-estilo=fluent] .app-main { background: transparent !important; }
html[data-v2-estilo=fluent] body { font-family: var(--v2-fl-fuente); -webkit-font-smoothing: antialiased; }
html[data-v2-estilo=fluent] h1, html[data-v2-estilo=fluent] h2, html[data-v2-estilo=fluent] h3, html[data-v2-estilo=fluent] h4, html[data-v2-estilo=fluent] h5, html[data-v2-estilo=fluent] h6 { font-weight: 600; }
html[data-v2-estilo=fluent] ::selection { background: color-mix(in srgb, var(--v2-fl-acento) 40%, transparent); }

/* Barra superior y lateral (Mica): solidas con un tinte leve, separadas por una linea de 1 px. */
html[data-v2-estilo=fluent] .app-header { background-color: var(--v2-fl-lateral) !important; -webkit-backdrop-filter: blur(24px) saturate(120%); backdrop-filter: blur(24px) saturate(120%); border-bottom: 1px solid var(--v2-fl-linea); box-shadow: none; }
html[data-v2-estilo=fluent] .app-sidebar { background-color: var(--v2-fl-lateral) !important; -webkit-backdrop-filter: blur(24px) saturate(120%); backdrop-filter: blur(24px) saturate(120%); border-right: 1px solid var(--v2-fl-linea); box-shadow: none !important; }
html[data-v2-estilo=fluent][data-bs-theme=light] .app-sidebar { --lte-sidebar-color: #1a1a1a; --lte-sidebar-hover-color: #000; --lte-sidebar-active-color: #000; --lte-sidebar-menu-active-color: #000; }
html[data-v2-estilo=fluent][data-bs-theme=dark] .app-sidebar { --lte-sidebar-color: #e6e6e6; --lte-sidebar-hover-color: #fff; --lte-sidebar-active-color: #fff; --lte-sidebar-menu-active-color: #fff; }
html[data-v2-estilo=fluent] .app-sidebar { --lte-sidebar-hover-bg: var(--v2-fl-hover); --lte-sidebar-menu-active-bg: var(--v2-fl-pres); --lte-sidebar-submenu-hover-bg: var(--v2-fl-hover); --lte-sidebar-submenu-active-bg: var(--v2-fl-pres); }
html[data-v2-estilo=fluent] .app-sidebar .nav-link { position: relative; border-radius: .4rem; transition: background-color .15s var(--v2-fl-std), color .15s var(--v2-fl-std); }
html[data-v2-estilo=fluent] .app-sidebar .nav-link.active::before {
  content: ""; position: absolute; left: 0; top: 22%; bottom: 22%; width: 3px; border-radius: 3px; background: var(--v2-fl-acento); animation: v2-fl-indicador .25s var(--v2-fl-decel);
}
html[data-v2-estilo=fluent] .app-sidebar .menu-open > .nav-treeview { animation: v2-fl-despliega .22s var(--v2-fl-decel); }

/* Capas: tarjetas planas con borde de 1 px y sombra minima; el contenido flota con una sombra mayor. */
html[data-v2-estilo=fluent] .card { border-radius: .55rem; box-shadow: var(--v2-fl-sombra); }
html[data-v2-estilo=fluent] .card-header { border-bottom-color: var(--v2-fl-linea); }
html[data-v2-estilo=fluent] .card-footer { border-top-color: var(--v2-fl-linea); background: var(--v2-fl-capa-2); }
html[data-v2-estilo=fluent] .modal-content { box-shadow: var(--v2-fl-sombra-flota); }
html[data-v2-estilo=fluent] .dropdown-menu, html[data-v2-estilo=fluent] .popover, html[data-v2-estilo=fluent] .toast {
  -webkit-backdrop-filter: var(--v2-fl-acrilico); backdrop-filter: var(--v2-fl-acrilico); box-shadow: var(--v2-fl-sombra-flota);
}
html[data-v2-estilo=fluent] .dropdown-menu { padding: .3rem; }
html[data-v2-estilo=fluent] .dropdown-item { border-radius: .3rem; transition: background-color .12s var(--v2-fl-std); }
html[data-v2-estilo=fluent] .dropdown-item:hover, html[data-v2-estilo=fluent] .dropdown-item:focus { background-color: var(--v2-fl-hover); color: inherit; }
html[data-v2-estilo=fluent] .dropdown-item.active, html[data-v2-estilo=fluent] .dropdown-item:active { background-color: var(--v2-fl-pres); color: inherit; position: relative; }
html[data-v2-estilo=fluent] .dropdown-item.active::before { content: ""; position: absolute; left: 0; top: 24%; bottom: 24%; width: 3px; border-radius: 3px; background: var(--v2-fl-acento); }
html[data-v2-estilo=fluent] .dropdown-divider { border-top-color: var(--v2-fl-linea); }

/* Controles: botones de 4 px, campos con subrayado de acento al enfocar. */
html[data-v2-estilo=fluent] .btn { border-radius: .3rem; font-weight: 400; box-shadow: none; transition: background-color .12s var(--v2-fl-std), border-color .12s var(--v2-fl-std), transform .1s var(--v2-fl-std); }
html[data-v2-estilo=fluent] .btn:active { transform: scale(.985); }
html[data-v2-estilo=fluent] .btn:focus-visible { box-shadow: 0 0 0 2px var(--bs-body-bg), 0 0 0 4px var(--v2-fl-linea-fuerte); }
html[data-v2-estilo=fluent] .form-control, html[data-v2-estilo=fluent] .form-select, html[data-v2-estilo=fluent] .ts-control, html[data-v2-estilo=fluent] .input-group-text {
  background-color: var(--v2-fl-campo); border-color: var(--v2-fl-linea); border-bottom-color: var(--v2-fl-linea-fuerte); border-radius: .3rem; transition: box-shadow .15s var(--v2-fl-decel), background-color .15s ease;
}
html[data-v2-estilo=fluent] .form-control:hover, html[data-v2-estilo=fluent] .form-select:hover { background-color: var(--v2-fl-capa-2); }
html[data-v2-estilo=fluent] .form-control:focus, html[data-v2-estilo=fluent] .form-select:focus, html[data-v2-estilo=fluent] .ts-wrapper.focus .ts-control {
  background-color: var(--v2-fl-campo); border-color: var(--v2-fl-linea); border-bottom-color: var(--v2-fl-acento); box-shadow: inset 0 -1px 0 var(--v2-fl-acento);
}
html[data-v2-estilo=fluent] .input-group > :not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
html[data-v2-estilo=fluent] .input-group > :not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; }
html[data-v2-estilo=fluent] .ts-dropdown { background: var(--v2-fl-acrilico-bg); -webkit-backdrop-filter: var(--v2-fl-acrilico); backdrop-filter: var(--v2-fl-acrilico); border: 1px solid var(--v2-fl-linea); border-radius: .5rem; box-shadow: var(--v2-fl-sombra-flota); overflow: hidden; }
html[data-v2-estilo=fluent] .ts-dropdown .active { background-color: var(--v2-fl-hover); color: inherit; }
html[data-v2-estilo=fluent] .form-check-input { border-color: var(--v2-fl-linea-fuerte); background-color: var(--v2-fl-campo); border-radius: .25rem; }
html[data-v2-estilo=fluent] .form-check-input[type=radio] { border-radius: 50%; }
html[data-v2-estilo=fluent] .form-check-input:checked { background-color: var(--v2-fl-acento); border-color: var(--v2-fl-acento); }
html[data-v2-estilo=fluent][data-bs-theme=dark] .form-check-input:checked { --bs-form-check-bg-image: none; }
html[data-v2-estilo=fluent] .form-switch .form-check-input { width: 2.5em; border-radius: 2em; transition: background-position .18s var(--v2-fl-decel), background-color .18s ease; }
html[data-v2-estilo=fluent] .nav-tabs { border-bottom-color: var(--v2-fl-linea); }
html[data-v2-estilo=fluent] .nav-tabs .nav-link { border: 0; border-radius: .4rem .4rem 0 0; color: var(--bs-secondary-color); position: relative; transition: color .15s ease, background-color .15s ease; }
html[data-v2-estilo=fluent] .nav-tabs .nav-link:hover { background: var(--v2-fl-hover); }
html[data-v2-estilo=fluent] .nav-tabs .nav-link.active { background: var(--v2-fl-capa); color: var(--bs-body-color); font-weight: 600; }
html[data-v2-estilo=fluent] .nav-tabs .nav-link.active::after { content: ""; position: absolute; left: 12px; right: 12px; bottom: 0; height: 3px; border-radius: 3px 3px 0 0; background: var(--v2-fl-acento); animation: v2-fl-subraya .25s var(--v2-fl-decel); }
html[data-v2-estilo=fluent] .nav-pills .nav-link { border-radius: .4rem; }
html[data-v2-estilo=fluent] .nav-pills .nav-link.active { background-color: var(--v2-fl-acento); color: var(--v2-fl-sobre-acento); }
html[data-v2-estilo=fluent] .badge { border-radius: .3rem; font-weight: 500; }
html[data-v2-estilo=fluent] .alert { border-radius: .5rem; }
html[data-v2-estilo=fluent] .progress { border-radius: 3px; height: .35rem; background-color: var(--v2-fl-hover); }
html[data-v2-estilo=fluent] .page-link { border-radius: .3rem; margin: 0 1px; border-color: transparent; background: transparent; }
html[data-v2-estilo=fluent] .page-item.active .page-link { background-color: var(--v2-fl-acento); color: var(--v2-fl-sobre-acento); }

/* Tablas: encabezado "Mica", filas con realce suave y barra de acento en la fila seleccionada. */
html[data-v2-estilo=fluent] .table { --bs-table-bg: transparent; --bs-table-striped-bg: var(--v2-fl-pres); --bs-table-hover-bg: var(--v2-fl-hover); --bs-table-border-color: var(--v2-fl-linea); }
html[data-v2-estilo=fluent] .tabulator { background-color: transparent; border: 1px solid var(--v2-fl-linea); border-radius: .5rem; overflow: hidden; }
html[data-v2-estilo=fluent] .tabulator .tabulator-header { background-color: var(--v2-fl-capa-2) !important; border-bottom: 1px solid var(--v2-fl-linea); }
html[data-v2-estilo=fluent] .tabulator .tabulator-header .tabulator-col { background-color: transparent !important; }
html[data-v2-estilo=fluent] .tabulator .tabulator-row:not([class*="v2-"]) { background-color: transparent !important; border-bottom-color: var(--v2-fl-linea); transition: background-color .12s ease; }
html[data-v2-estilo=fluent] .tabulator .tabulator-row.tabulator-row-even:not([class*="v2-"]) { background-color: var(--v2-fl-pres) !important; }
html[data-v2-estilo=fluent] .tabulator .tabulator-row:not([class*="v2-"]):hover { background-color: var(--v2-fl-hover) !important; }
html[data-v2-estilo=fluent] .tabulator .tabulator-row.tabulator-selected { background-color: color-mix(in srgb, var(--v2-fl-acento) 16%, transparent) !important; box-shadow: inset 3px 0 0 var(--v2-fl-acento); }
html[data-v2-estilo=fluent] .tabulator .tabulator-footer { background: var(--v2-fl-capa-2) !important; border-top-color: var(--v2-fl-linea); }

/* Movimiento Fluent: "entrada" = sube unos pixeles con desaceleracion rapida; nada de rebotes. */
html[data-v2-estilo=fluent] .fade { transition: opacity .18s linear; }
html[data-v2-estilo=fluent] .modal.fade .modal-dialog { transform: translateY(32px); opacity: 0; transition: transform .33s var(--v2-fl-decel), opacity .2s linear; }
html[data-v2-estilo=fluent] .modal.show .modal-dialog { transform: none; opacity: 1; }
html[data-v2-estilo=fluent] .modal-backdrop { --bs-backdrop-bg: #000; --bs-backdrop-opacity: .38; }
html[data-v2-estilo=fluent] .modal-backdrop.fade { transition: opacity .2s linear; }
html[data-v2-estilo=fluent] .dropdown-menu.show { animation: v2-fl-flyout .2s var(--v2-fl-decel); }
html[data-v2-estilo=fluent] .toast.showing, html[data-v2-estilo=fluent] .toast.show { animation: v2-fl-entra-lado .3s var(--v2-fl-decel); }
html[data-v2-estilo=fluent] .tab-content > .tab-pane.active { animation: v2-fl-sube .25s var(--v2-fl-decel); }
html[data-v2-estilo=fluent] .offcanvas { transition: transform .3s var(--v2-fl-decel); }
html[data-v2-estilo=fluent] .collapsing { transition: height .25s var(--v2-fl-decel); }
html[data-v2-estilo=fluent] .swal2-popup { border-radius: .75rem; border: 1px solid var(--v2-fl-linea); box-shadow: var(--v2-fl-sombra-flota); }
html[data-v2-estilo=fluent] .swal2-popup.swal2-show { animation: v2-fl-swal .3s var(--v2-fl-decel); }
html[data-v2-estilo=fluent] .swal2-container.swal2-backdrop-show { background: rgba(0, 0, 0, .38); }
html[data-v2-estilo=fluent] .swal2-styled { border-radius: .3rem !important; font-weight: 400; }
html[data-v2-estilo=fluent] .swal2-styled.swal2-confirm { background-color: var(--v2-fl-acento) !important; color: var(--v2-fl-sobre-acento) !important; }
/* Los menus desplegables los posiciona Popper con `transform` inline: animar `transform` lo pisaba (el menu saltaba a la esquina y parpadeaba). Se usan `translate` / `scale`, que se componen con el transform. */
@keyframes v2-fl-flyout { from { opacity: 0; translate: 0 -10px; } to { opacity: 1; translate: 0 0; } }
@keyframes v2-fl-sube { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes v2-fl-entra-lado { from { opacity: 0; transform: translateX(28px); } to { opacity: 1; transform: none; } }
@keyframes v2-fl-swal { from { opacity: 0; transform: translateY(24px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes v2-fl-indicador { from { transform: scaleY(0); } to { transform: scaleY(1); } }
@keyframes v2-fl-subraya { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes v2-fl-despliega { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
html[data-v2-estilo=fluent] ::-webkit-scrollbar { width: 14px; height: 14px; }
html[data-v2-estilo=fluent] ::-webkit-scrollbar-thumb { background: var(--v2-fl-linea-fuerte); border-radius: 8px; border: 5px solid transparent; background-clip: padding-box; opacity: .6; }
html[data-v2-estilo=fluent] ::-webkit-scrollbar-thumb:hover { border-width: 4px; }
html[data-v2-estilo=fluent] ::-webkit-scrollbar-track { background: transparent; }

/* Botones: relleno de acento (principal), relleno estandar (secundario) y variantes de estado con el color de cada tema. */
html[data-v2-estilo=fluent] .btn-primary { --bs-btn-color: var(--v2-fl-sobre-acento); --bs-btn-bg: var(--v2-fl-acento); --bs-btn-border-color: transparent; --bs-btn-hover-color: var(--v2-fl-sobre-acento); --bs-btn-hover-bg: var(--v2-fl-acento-hover); --bs-btn-hover-border-color: transparent; --bs-btn-active-color: var(--v2-fl-sobre-acento); --bs-btn-active-bg: var(--v2-fl-acento-activo); --bs-btn-active-border-color: transparent; --bs-btn-disabled-color: var(--v2-fl-sobre-acento); --bs-btn-disabled-bg: var(--v2-fl-acento); --bs-btn-disabled-border-color: transparent; }
html[data-v2-estilo=fluent] .btn-secondary, html[data-v2-estilo=fluent] .btn-light { --bs-btn-color: var(--bs-body-color); --bs-btn-bg: var(--v2-fl-capa); --bs-btn-border-color: var(--v2-fl-linea); --bs-btn-hover-color: var(--bs-body-color); --bs-btn-hover-bg: var(--v2-fl-capa-2); --bs-btn-hover-border-color: var(--v2-fl-linea); --bs-btn-active-color: var(--bs-body-color); --bs-btn-active-bg: var(--v2-fl-pres); --bs-btn-active-border-color: var(--v2-fl-linea); --bs-btn-disabled-color: var(--bs-secondary-color); --bs-btn-disabled-bg: var(--v2-fl-capa); --bs-btn-disabled-border-color: var(--v2-fl-linea); border-bottom-color: var(--v2-fl-linea-fuerte); }
html[data-v2-estilo=fluent] .btn-dark { --bs-btn-color: #fff; --bs-btn-bg: #2d2d2d; --bs-btn-border-color: transparent; --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #3a3a3a; --bs-btn-hover-border-color: transparent; --bs-btn-active-color: #fff; --bs-btn-active-bg: #1f1f1f; --bs-btn-active-border-color: transparent; --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: #2d2d2d; --bs-btn-disabled-border-color: transparent; }
html[data-v2-estilo=fluent] .btn-success { --bs-btn-color: #fff; --bs-btn-bg: var(--v2-fl-ok); --bs-btn-border-color: transparent; --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--v2-fl-ok-h); --bs-btn-hover-border-color: transparent; --bs-btn-active-color: #fff; --bs-btn-active-bg: var(--v2-fl-ok-a); --bs-btn-active-border-color: transparent; --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: var(--v2-fl-ok); --bs-btn-disabled-border-color: transparent; }
html[data-v2-estilo=fluent][data-bs-theme=dark] .btn-success, html[data-v2-estilo=fluent][data-bs-theme=dark] .btn-danger { --bs-btn-color: #101010; --bs-btn-hover-color: #101010; --bs-btn-active-color: #101010; --bs-btn-disabled-color: #101010; }
html[data-v2-estilo=fluent] .btn-danger { --bs-btn-color: #fff; --bs-btn-bg: var(--v2-fl-mal); --bs-btn-border-color: transparent; --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--v2-fl-mal-h); --bs-btn-hover-border-color: transparent; --bs-btn-active-color: #fff; --bs-btn-active-bg: var(--v2-fl-mal-a); --bs-btn-active-border-color: transparent; --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: var(--v2-fl-mal); --bs-btn-disabled-border-color: transparent; }
html[data-v2-estilo=fluent] .btn-warning { --bs-btn-color: var(--v2-fl-aviso-texto); --bs-btn-bg: var(--v2-fl-aviso); --bs-btn-border-color: transparent; --bs-btn-hover-color: var(--v2-fl-aviso-texto); --bs-btn-hover-bg: var(--v2-fl-aviso-h); --bs-btn-hover-border-color: transparent; --bs-btn-active-color: var(--v2-fl-aviso-texto); --bs-btn-active-bg: var(--v2-fl-aviso-a); --bs-btn-active-border-color: transparent; --bs-btn-disabled-color: var(--v2-fl-aviso-texto); --bs-btn-disabled-bg: var(--v2-fl-aviso); --bs-btn-disabled-border-color: transparent; }
html[data-v2-estilo=fluent] .btn-info { --bs-btn-color: #fff; --bs-btn-bg: var(--v2-fl-info); --bs-btn-border-color: transparent; --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--v2-fl-info-h); --bs-btn-hover-border-color: transparent; --bs-btn-active-color: #fff; --bs-btn-active-bg: var(--v2-fl-info-a); --bs-btn-active-border-color: transparent; --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: var(--v2-fl-info); --bs-btn-disabled-border-color: transparent; }
html[data-v2-estilo=fluent][data-bs-theme=dark] .btn-info { --bs-btn-color: #00243a; --bs-btn-hover-color: #00243a; --bs-btn-active-color: #00243a; --bs-btn-disabled-color: #00243a; }
html[data-v2-estilo=fluent] .btn-outline-primary { --bs-btn-color: var(--v2-fl-acento-texto); --bs-btn-border-color: color-mix(in srgb, var(--v2-fl-acento) 55%, transparent); --bs-btn-hover-color: var(--v2-fl-acento-texto); --bs-btn-hover-bg: color-mix(in srgb, var(--v2-fl-acento) 12%, transparent); --bs-btn-hover-border-color: var(--v2-fl-acento); --bs-btn-active-color: var(--v2-fl-acento-texto); --bs-btn-active-bg: color-mix(in srgb, var(--v2-fl-acento) 20%, transparent); --bs-btn-active-border-color: var(--v2-fl-acento); --bs-btn-disabled-color: var(--v2-fl-acento-texto); --bs-btn-disabled-border-color: color-mix(in srgb, var(--v2-fl-acento) 30%, transparent); }
html[data-v2-estilo=fluent] .btn-outline-secondary, html[data-v2-estilo=fluent] .btn-outline-light, html[data-v2-estilo=fluent] .btn-outline-dark { --bs-btn-color: var(--bs-body-color); --bs-btn-border-color: var(--v2-fl-linea-fuerte); --bs-btn-hover-color: var(--bs-body-color); --bs-btn-hover-bg: var(--v2-fl-hover); --bs-btn-hover-border-color: var(--v2-fl-linea-fuerte); --bs-btn-active-color: var(--bs-body-color); --bs-btn-active-bg: var(--v2-fl-pres); --bs-btn-active-border-color: var(--v2-fl-linea-fuerte); --bs-btn-disabled-color: var(--bs-secondary-color); --bs-btn-disabled-border-color: var(--v2-fl-linea); }
html[data-v2-estilo=fluent] .btn-outline-success { --bs-btn-color: var(--v2-fl-ok); --bs-btn-border-color: color-mix(in srgb, var(--v2-fl-ok) 55%, transparent); --bs-btn-hover-color: var(--v2-fl-ok); --bs-btn-hover-bg: color-mix(in srgb, var(--v2-fl-ok) 12%, transparent); --bs-btn-hover-border-color: var(--v2-fl-ok); --bs-btn-active-color: var(--v2-fl-ok); --bs-btn-active-bg: color-mix(in srgb, var(--v2-fl-ok) 20%, transparent); --bs-btn-active-border-color: var(--v2-fl-ok); --bs-btn-disabled-color: var(--v2-fl-ok); --bs-btn-disabled-border-color: color-mix(in srgb, var(--v2-fl-ok) 30%, transparent); }
html[data-v2-estilo=fluent] .btn-outline-danger { --bs-btn-color: var(--v2-fl-mal); --bs-btn-border-color: color-mix(in srgb, var(--v2-fl-mal) 55%, transparent); --bs-btn-hover-color: var(--v2-fl-mal); --bs-btn-hover-bg: color-mix(in srgb, var(--v2-fl-mal) 12%, transparent); --bs-btn-hover-border-color: var(--v2-fl-mal); --bs-btn-active-color: var(--v2-fl-mal); --bs-btn-active-bg: color-mix(in srgb, var(--v2-fl-mal) 20%, transparent); --bs-btn-active-border-color: var(--v2-fl-mal); --bs-btn-disabled-color: var(--v2-fl-mal); --bs-btn-disabled-border-color: color-mix(in srgb, var(--v2-fl-mal) 30%, transparent); }
html[data-v2-estilo=fluent] .btn-outline-warning { --bs-btn-color: var(--bs-warning); --bs-btn-border-color: color-mix(in srgb, var(--bs-warning) 55%, transparent); --bs-btn-hover-color: var(--bs-warning); --bs-btn-hover-bg: color-mix(in srgb, var(--bs-warning) 12%, transparent); --bs-btn-hover-border-color: var(--bs-warning); --bs-btn-active-color: var(--bs-warning); --bs-btn-active-bg: color-mix(in srgb, var(--bs-warning) 20%, transparent); --bs-btn-active-border-color: var(--bs-warning); --bs-btn-disabled-color: var(--bs-warning); --bs-btn-disabled-border-color: color-mix(in srgb, var(--bs-warning) 30%, transparent); }
html[data-v2-estilo=fluent] .btn-outline-info { --bs-btn-color: var(--v2-fl-info); --bs-btn-border-color: color-mix(in srgb, var(--v2-fl-info) 55%, transparent); --bs-btn-hover-color: var(--v2-fl-info); --bs-btn-hover-bg: color-mix(in srgb, var(--v2-fl-info) 12%, transparent); --bs-btn-hover-border-color: var(--v2-fl-info); --bs-btn-active-color: var(--v2-fl-info); --bs-btn-active-bg: color-mix(in srgb, var(--v2-fl-info) 20%, transparent); --bs-btn-active-border-color: var(--v2-fl-info); --bs-btn-disabled-color: var(--v2-fl-info); --bs-btn-disabled-border-color: color-mix(in srgb, var(--v2-fl-info) 30%, transparent); }

/* ================================================================== APPLE (macOS) */
html[data-v2-estilo=apple] {
  --v2-ap-fuente: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", "Segoe UI", Inter, system-ui, Roboto, sans-serif;
  --v2-ap-acento: #0a84ff;
  --v2-ap-resorte: cubic-bezier(.2, .9, .3, 1.12);
  --v2-ap-suave: cubic-bezier(.25, .8, .25, 1);
  --v2-ap-blur: blur(28px) saturate(180%);
  --bs-font-sans-serif: var(--v2-ap-fuente);
  --bs-body-font-family: var(--v2-ap-fuente);
  --bs-border-radius: .7rem; --bs-border-radius-sm: .5rem; --bs-border-radius-lg: 1rem; --bs-border-radius-xl: 1.3rem; --bs-border-radius-xxl: 1.7rem;
  --bs-primary: #0a84ff; --bs-primary-rgb: 10, 132, 255;
  --bs-link-color: #0a84ff; --bs-link-color-rgb: 10, 132, 255; --bs-link-hover-color: #0071e3; --bs-link-hover-color-rgb: 0, 113, 227;
  --bs-focus-ring-color: rgba(10, 132, 255, .30);
  --bs-card-bg: var(--v2-ap-vidrio); --bs-card-border-color: var(--v2-ap-linea); --bs-card-cap-bg: var(--v2-ap-vidrio-ligero);
  --bs-modal-bg: var(--v2-ap-vidrio-fuerte); --bs-modal-border-color: var(--v2-ap-linea); --bs-modal-header-border-color: var(--v2-ap-linea-suave); --bs-modal-footer-border-color: var(--v2-ap-linea-suave);
  --bs-modal-border-radius: 1.3rem; --bs-modal-inner-border-radius: calc(1.3rem - 1px);
  --bs-dropdown-bg: var(--v2-ap-vidrio-fuerte); --bs-dropdown-border-color: var(--v2-ap-linea); --bs-dropdown-border-radius: .9rem; --bs-dropdown-link-hover-bg: rgba(10, 132, 255, .14);
  --bs-popover-bg: var(--v2-ap-vidrio-fuerte); --bs-popover-border-color: var(--v2-ap-linea);
  --bs-toast-bg: var(--v2-ap-vidrio-fuerte); --bs-toast-border-color: var(--v2-ap-linea);
  --bs-offcanvas-bg: var(--v2-ap-vidrio-fuerte);
  --swal2-background: var(--v2-ap-vidrio-fuerte);
}
html[data-v2-estilo=apple][data-bs-theme=light] {
  color-scheme: light;
  --v2-ap-fondo: radial-gradient(1100px 720px at 6% -8%, rgba(10, 132, 255, .20), transparent 62%), radial-gradient(900px 620px at 100% 2%, rgba(191, 90, 242, .16), transparent 58%),
                 radial-gradient(1000px 700px at 55% 115%, rgba(48, 209, 88, .12), transparent 62%), #eceef4;
  --v2-ap-vidrio: rgba(255, 255, 255, .58); --v2-ap-vidrio-fuerte: rgba(255, 255, 255, .80); --v2-ap-vidrio-ligero: rgba(255, 255, 255, .35);
  --v2-ap-campo: rgba(255, 255, 255, .62);
  --v2-ap-linea: rgba(255, 255, 255, .70); --v2-ap-linea-suave: rgba(60, 60, 67, .12);
  --v2-ap-sombra: 0 10px 34px rgba(30, 40, 80, .12), 0 1px 0 rgba(255, 255, 255, .8) inset;
  --v2-ap-sombra-fuerte: 0 24px 70px rgba(20, 30, 70, .24), 0 1px 0 rgba(255, 255, 255, .85) inset;
  --v2-ap-solido: #f4f5f9;
  --bs-body-bg: #eef0f6; --bs-body-bg-rgb: 238, 240, 246; --bs-secondary-bg: rgba(255, 255, 255, .55); --bs-secondary-bg-rgb: 255, 255, 255;
  --bs-tertiary-bg: rgba(255, 255, 255, .35); --bs-tertiary-bg-rgb: 255, 255, 255;
  --bs-body-color: #1d1d1f; --bs-body-color-rgb: 29, 29, 31; --bs-emphasis-color: #000; --bs-emphasis-color-rgb: 0, 0, 0;
  --bs-secondary-color: rgba(60, 60, 67, .68); --bs-secondary-color-rgb: 60, 60, 67; --bs-tertiary-color: rgba(60, 60, 67, .48);
  --bs-border-color: rgba(60, 60, 67, .16); --bs-border-color-translucent: rgba(60, 60, 67, .10);
}
html[data-v2-estilo=apple][data-bs-theme=dark] {
  color-scheme: dark;
  --v2-ap-fondo: radial-gradient(1100px 720px at 6% -8%, rgba(10, 132, 255, .30), transparent 62%), radial-gradient(900px 620px at 100% 2%, rgba(191, 90, 242, .26), transparent 58%),
                 radial-gradient(1000px 700px at 55% 115%, rgba(48, 209, 88, .14), transparent 62%), #0c0c10;
  --v2-ap-vidrio: rgba(46, 46, 52, .52); --v2-ap-vidrio-fuerte: rgba(38, 38, 44, .78); --v2-ap-vidrio-ligero: rgba(255, 255, 255, .04);
  --v2-ap-campo: rgba(255, 255, 255, .07);
  --v2-ap-linea: rgba(255, 255, 255, .11); --v2-ap-linea-suave: rgba(255, 255, 255, .08);
  --v2-ap-sombra: 0 12px 40px rgba(0, 0, 0, .42), 0 1px 0 rgba(255, 255, 255, .07) inset;
  --v2-ap-sombra-fuerte: 0 28px 80px rgba(0, 0, 0, .6), 0 1px 0 rgba(255, 255, 255, .09) inset;
  --v2-ap-solido: #1c1c20;
  --bs-body-bg: #121216; --bs-body-bg-rgb: 18, 18, 22; --bs-secondary-bg: rgba(255, 255, 255, .06); --bs-secondary-bg-rgb: 40, 40, 46;
  --bs-tertiary-bg: rgba(255, 255, 255, .04); --bs-tertiary-bg-rgb: 30, 30, 36;
  --bs-body-color: #f5f5f7; --bs-body-color-rgb: 245, 245, 247; --bs-emphasis-color: #fff; --bs-emphasis-color-rgb: 255, 255, 255;
  --bs-secondary-color: rgba(235, 235, 245, .62); --bs-secondary-color-rgb: 235, 235, 245; --bs-tertiary-color: rgba(235, 235, 245, .42);
  --bs-border-color: rgba(255, 255, 255, .14); --bs-border-color-translucent: rgba(255, 255, 255, .08);
  --bs-link-color: #4da3ff; --bs-link-color-rgb: 77, 163, 255; --bs-link-hover-color: #7bbcff; --bs-link-hover-color-rgb: 123, 188, 255;
  --swal2-color: #f5f5f7;
}
/* Fondo tipo "wallpaper": va en <html> y el resto de las capas queda transparente. */
html[data-v2-estilo=apple] { background: var(--v2-ap-fondo); background-attachment: fixed; min-height: 100%; }
html[data-v2-estilo=apple] body, html[data-v2-estilo=apple] .app-wrapper, html[data-v2-estilo=apple] .app-main { background: transparent !important; }
html[data-v2-estilo=apple] body { font-family: var(--v2-ap-fuente); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; letter-spacing: -.003em; }
html[data-v2-estilo=apple] h1, html[data-v2-estilo=apple] h2, html[data-v2-estilo=apple] h3, html[data-v2-estilo=apple] h4, html[data-v2-estilo=apple] h5, html[data-v2-estilo=apple] h6 { letter-spacing: -.018em; font-weight: 600; }

/* Vidrio: barra superior, menu lateral, tarjetas, modales, menus y avisos. */
html[data-v2-estilo=apple] .app-header, html[data-v2-estilo=apple] .app-sidebar {
  background-color: var(--v2-ap-vidrio-fuerte) !important; -webkit-backdrop-filter: var(--v2-ap-blur); backdrop-filter: var(--v2-ap-blur);
}
html[data-v2-estilo=apple] .app-header { border-bottom: 1px solid var(--v2-ap-linea-suave); box-shadow: 0 1px 0 var(--v2-ap-linea) inset; }
html[data-v2-estilo=apple] .app-sidebar { border-right: 1px solid var(--v2-ap-linea-suave); box-shadow: none !important; }
html[data-v2-estilo=apple][data-bs-theme=light] .app-sidebar { --lte-sidebar-color: #3a3a3f; --lte-sidebar-hover-color: #000; --lte-sidebar-active-color: #000; --lte-sidebar-menu-active-color: #0a60c8; }
html[data-v2-estilo=apple][data-bs-theme=dark] .app-sidebar { --lte-sidebar-color: #d1d1d6; --lte-sidebar-menu-active-color: #fff; }
html[data-v2-estilo=apple] .app-sidebar {
  --lte-sidebar-hover-bg: rgba(120, 120, 128, .16); --lte-sidebar-menu-active-bg: rgba(10, 132, 255, .18);
  --lte-sidebar-submenu-hover-bg: rgba(120, 120, 128, .14); --lte-sidebar-submenu-active-bg: rgba(10, 132, 255, .14);
}
html[data-v2-estilo=apple] .app-sidebar .nav-link { border-radius: .65rem; transition: background-color .25s var(--v2-ap-suave), color .25s var(--v2-ap-suave); }
html[data-v2-estilo=apple] .app-sidebar .sidebar-menu > .nav-item { margin-bottom: 1px; }
html[data-v2-estilo=apple] .dropdown-menu, html[data-v2-estilo=apple] .popover, html[data-v2-estilo=apple] .toast, html[data-v2-estilo=apple] .offcanvas {
  -webkit-backdrop-filter: var(--v2-ap-blur); backdrop-filter: var(--v2-ap-blur);
}
/* Tarjetas y modales: el desenfoque va en un pseudo-elemento y NO en el elemento. Un `backdrop-filter` en el propio elemento lo vuelve el bloque contenedor de
 * sus descendientes `position: fixed`, y los menus de tres puntitos (Popper con strategy "fixed") quedaban desplazados lejos de su boton. */
html[data-v2-estilo=apple] .card, html[data-v2-estilo=apple] .modal-content { position: relative; isolation: isolate; }
html[data-v2-estilo=apple] .card::before, html[data-v2-estilo=apple] .modal-content::before {
  content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit; pointer-events: none; -webkit-backdrop-filter: var(--v2-ap-blur); backdrop-filter: var(--v2-ap-blur);
}
html[data-v2-estilo=apple] .modal-content::before { -webkit-backdrop-filter: var(--v2-ap-blur-fuerte); backdrop-filter: var(--v2-ap-blur-fuerte); }
html[data-v2-estilo=apple] .card { border-radius: 1.1rem; box-shadow: var(--v2-ap-sombra); }
html[data-v2-estilo=apple] .card-header { border-bottom-color: var(--v2-ap-linea-suave); border-top-left-radius: inherit; border-top-right-radius: inherit; }
html[data-v2-estilo=apple] .card-footer { border-top-color: var(--v2-ap-linea-suave); background: transparent; }
html[data-v2-estilo=apple] .dropdown-menu { box-shadow: var(--v2-ap-sombra-fuerte); padding: .35rem; }
html[data-v2-estilo=apple] .dropdown-item { border-radius: .5rem; transition: background-color .18s ease; }
html[data-v2-estilo=apple] .dropdown-item:hover, html[data-v2-estilo=apple] .dropdown-item:focus { background-color: var(--bs-dropdown-link-hover-bg); color: inherit; }
html[data-v2-estilo=apple] .dropdown-item.active, html[data-v2-estilo=apple] .dropdown-item:active { background-color: var(--v2-ap-acento); color: #fff; }
html[data-v2-estilo=apple] .dropdown-divider { border-top-color: var(--v2-ap-linea-suave); }
html[data-v2-estilo=apple] .modal-content { box-shadow: var(--v2-ap-sombra-fuerte); }

/* Controles: botones tipo pildora suave, campos redondeados y anillo de foco azul. */
html[data-v2-estilo=apple] .btn { font-weight: 500; border-radius: .7rem; letter-spacing: -.005em; transition: background-color .2s ease, transform .18s var(--v2-ap-resorte), box-shadow .2s ease, color .2s ease; }
html[data-v2-estilo=apple] .btn:active { transform: scale(.97); }
html[data-v2-estilo=apple] .btn-primary { box-shadow: 0 1px 2px rgba(10, 80, 200, .35), 0 4px 12px rgba(10, 132, 255, .22); }
html[data-v2-estilo=apple] .btn-sm { border-radius: .55rem; }
html[data-v2-estilo=apple] .btn-lg { border-radius: .9rem; }
html[data-v2-estilo=apple] .form-control, html[data-v2-estilo=apple] .form-select, html[data-v2-estilo=apple] .ts-control, html[data-v2-estilo=apple] .input-group-text {
  background-color: var(--v2-ap-campo); border-color: var(--v2-ap-linea-suave); border-radius: .65rem; transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
html[data-v2-estilo=apple] .input-group > .form-control, html[data-v2-estilo=apple] .input-group > .form-select { border-radius: .65rem; }
html[data-v2-estilo=apple] .input-group > :not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
html[data-v2-estilo=apple] .input-group > :not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; }
html[data-v2-estilo=apple] .form-control:focus, html[data-v2-estilo=apple] .form-select:focus, html[data-v2-estilo=apple] .ts-wrapper.focus .ts-control {
  background-color: var(--v2-ap-campo); border-color: var(--v2-ap-acento); box-shadow: 0 0 0 .22rem rgba(10, 132, 255, .28);
}
html[data-v2-estilo=apple] .ts-dropdown { background: var(--v2-ap-vidrio-fuerte); -webkit-backdrop-filter: var(--v2-ap-blur); backdrop-filter: var(--v2-ap-blur); border: 1px solid var(--v2-ap-linea); border-radius: .8rem; box-shadow: var(--v2-ap-sombra-fuerte); overflow: hidden; }
html[data-v2-estilo=apple] .ts-dropdown .active { background-color: rgba(10, 132, 255, .18); color: inherit; }
html[data-v2-estilo=apple] .form-check-input { border-color: rgba(120, 120, 128, .45); }
html[data-v2-estilo=apple] .form-check-input:checked { background-color: var(--v2-ap-acento); border-color: var(--v2-ap-acento); }
html[data-v2-estilo=apple] .form-switch .form-check-input { width: 2.6em; height: 1.4em; border-radius: 2em; transition: background-position .25s var(--v2-ap-resorte), background-color .25s ease, border-color .25s ease; }
html[data-v2-estilo=apple] .form-switch .form-check-input:checked { background-color: #30d158; border-color: #30d158; }
html[data-v2-estilo=apple] .nav-tabs { border-bottom-color: var(--v2-ap-linea-suave); }
html[data-v2-estilo=apple] .nav-tabs .nav-link { border-radius: .65rem .65rem 0 0; border: 0; color: var(--bs-secondary-color); transition: color .2s ease, background-color .2s ease; }
html[data-v2-estilo=apple] .nav-tabs .nav-link.active { background: var(--v2-ap-vidrio); color: var(--bs-body-color); box-shadow: 0 -1px 0 var(--v2-ap-linea) inset; font-weight: 600; }
html[data-v2-estilo=apple] .nav-pills .nav-link { border-radius: .65rem; }
html[data-v2-estilo=apple] .nav-pills .nav-link.active { background-color: var(--v2-ap-acento); }
html[data-v2-estilo=apple] .badge { font-weight: 600; border-radius: .5rem; }
html[data-v2-estilo=apple] .alert { border-radius: .9rem; border-color: var(--v2-ap-linea-suave); -webkit-backdrop-filter: var(--v2-ap-blur); backdrop-filter: var(--v2-ap-blur); }
html[data-v2-estilo=apple] .progress { border-radius: 1rem; background-color: rgba(120, 120, 128, .2); }
html[data-v2-estilo=apple] .page-link { border-radius: .55rem; margin: 0 2px; border-color: transparent; background: transparent; }
html[data-v2-estilo=apple] .page-item.active .page-link { background-color: var(--v2-ap-acento); }

/* Tablas: sin cuadricula pesada; las filas dejan ver el vidrio de la tarjeta. */
html[data-v2-estilo=apple] .table { --bs-table-bg: transparent; --bs-table-striped-bg: rgba(120, 120, 128, .07); --bs-table-hover-bg: rgba(10, 132, 255, .09); --bs-table-border-color: var(--v2-ap-linea-suave); }
html[data-v2-estilo=apple] .tabulator, html[data-v2-estilo=apple] .tabulator .tabulator-tableholder, html[data-v2-estilo=apple] .tabulator .tabulator-tableholder .tabulator-table,
/* Solo las filas "normales" se vuelven transparentes: las que llevan una clase v2-* (colores de estado) y sus celdas conservan su color. */
html[data-v2-estilo=apple] .tabulator .tabulator-row:not([class*="v2-"]) { background-color: transparent !important; }
html[data-v2-estilo=apple] .tabulator { border: 0; border-radius: .9rem; overflow: hidden; }
html[data-v2-estilo=apple] .tabulator .tabulator-header { background-color: var(--v2-ap-vidrio-ligero) !important; border-bottom: 1px solid var(--v2-ap-linea-suave); }
html[data-v2-estilo=apple] .tabulator .tabulator-header .tabulator-col { background-color: transparent !important; }
html[data-v2-estilo=apple] .tabulator .tabulator-row { border-bottom-color: var(--v2-ap-linea-suave); transition: background-color .15s ease; }
html[data-v2-estilo=apple] .tabulator .tabulator-row.tabulator-row-even:not([class*="v2-"]) { background-color: rgba(120, 120, 128, .06) !important; }
html[data-v2-estilo=apple] .tabulator .tabulator-row:not([class*="v2-"]):hover { background-color: rgba(10, 132, 255, .10) !important; }
html[data-v2-estilo=apple] .tabulator .tabulator-row.tabulator-selected { background-color: rgba(10, 132, 255, .22) !important; }
html[data-v2-estilo=apple] .tabulator .tabulator-footer { background: var(--v2-ap-vidrio-ligero) !important; border-top-color: var(--v2-ap-linea-suave); }

/* Movimiento: modales con resorte, fondo difuminado, menus que "brotan" y avisos suaves. */
html[data-v2-estilo=apple] .fade { transition: opacity .25s ease; }
html[data-v2-estilo=apple] .modal.fade { transition: opacity .28s ease; }
html[data-v2-estilo=apple] .modal.fade .modal-dialog {
  transform: scale(.93) translateY(12px); opacity: 0; transform-origin: 50% 40%;
  transition: transform .45s var(--v2-ap-resorte), opacity .3s ease;
}
html[data-v2-estilo=apple] .modal.show .modal-dialog { transform: none; opacity: 1; }
html[data-v2-estilo=apple] .modal-backdrop { --bs-backdrop-bg: #000; --bs-backdrop-opacity: .30; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
html[data-v2-estilo=apple] .modal-backdrop.fade { transition: opacity .35s ease; }
html[data-v2-estilo=apple] .dropdown-menu.show { animation: v2-ap-brota .26s var(--v2-ap-resorte); }
html[data-v2-estilo=apple] .toast.showing, html[data-v2-estilo=apple] .toast.show { animation: v2-ap-brota .35s var(--v2-ap-resorte); }
html[data-v2-estilo=apple] .tab-content > .tab-pane.active { animation: v2-ap-sube .3s var(--v2-ap-suave); }
html[data-v2-estilo=apple] .swal2-popup { border-radius: 1.3rem; border: 1px solid var(--v2-ap-linea); box-shadow: var(--v2-ap-sombra-fuerte); -webkit-backdrop-filter: var(--v2-ap-blur); backdrop-filter: var(--v2-ap-blur); }
html[data-v2-estilo=apple] .swal2-popup.swal2-show { animation: v2-ap-swal .4s var(--v2-ap-resorte); }
html[data-v2-estilo=apple] .swal2-container.swal2-backdrop-show { background: rgba(0, 0, 0, .28); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
html[data-v2-estilo=apple] .swal2-styled { border-radius: .7rem !important; font-weight: 500; }
html[data-v2-estilo=apple] .swal2-styled.swal2-confirm { background-color: var(--v2-ap-acento) !important; }
@keyframes v2-ap-brota { from { opacity: 0; scale: .94; translate: 0 -4px; } to { opacity: 1; scale: 1; translate: 0 0; } }
@keyframes v2-ap-sube { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes v2-ap-swal { from { opacity: 0; transform: scale(.92); } to { opacity: 1; transform: none; } }
html[data-v2-estilo=apple] ::-webkit-scrollbar { width: 12px; height: 12px; }
html[data-v2-estilo=apple] ::-webkit-scrollbar-thumb { background: rgba(120, 120, 128, .45); border-radius: 8px; border: 3px solid transparent; background-clip: padding-box; }
html[data-v2-estilo=apple] ::-webkit-scrollbar-thumb:hover { background: rgba(120, 120, 128, .7); background-clip: padding-box; border: 3px solid transparent; }
html[data-v2-estilo=apple] ::-webkit-scrollbar-track { background: transparent; }

html[data-v2-estilo=apple] .btn-primary {
  --bs-btn-color: #fff; --bs-btn-bg: #0a84ff; --bs-btn-border-color: transparent;
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #2a93ff; --bs-btn-hover-border-color: transparent;
  --bs-btn-active-color: #fff; --bs-btn-active-bg: #0071e3; --bs-btn-active-border-color: transparent;
  --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: #0a84ff; --bs-btn-disabled-border-color: transparent;
}
html[data-v2-estilo=apple] .btn-secondary {
  --bs-btn-color: var(--bs-body-color); --bs-btn-bg: rgba(120,120,128,.20); --bs-btn-border-color: transparent;
  --bs-btn-hover-color: var(--bs-body-color); --bs-btn-hover-bg: rgba(120,120,128,.30); --bs-btn-hover-border-color: transparent;
  --bs-btn-active-color: var(--bs-body-color); --bs-btn-active-bg: rgba(120,120,128,.38); --bs-btn-active-border-color: transparent;
  --bs-btn-disabled-color: var(--bs-body-color); --bs-btn-disabled-bg: rgba(120,120,128,.20); --bs-btn-disabled-border-color: transparent;
}
html[data-v2-estilo=apple] .btn-success {
  --bs-btn-color: #fff; --bs-btn-bg: #30b455; --bs-btn-border-color: transparent;
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #3cc262; --bs-btn-hover-border-color: transparent;
  --bs-btn-active-color: #fff; --bs-btn-active-bg: #28a04b; --bs-btn-active-border-color: transparent;
  --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: #30b455; --bs-btn-disabled-border-color: transparent;
}
html[data-v2-estilo=apple] .btn-danger {
  --bs-btn-color: #fff; --bs-btn-bg: #ff453a; --bs-btn-border-color: transparent;
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #ff5b51; --bs-btn-hover-border-color: transparent;
  --bs-btn-active-color: #fff; --bs-btn-active-bg: #e63b31; --bs-btn-active-border-color: transparent;
  --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: #ff453a; --bs-btn-disabled-border-color: transparent;
}
html[data-v2-estilo=apple] .btn-warning {
  --bs-btn-color: #201400; --bs-btn-bg: #ff9f0a; --bs-btn-border-color: transparent;
  --bs-btn-hover-color: #201400; --bs-btn-hover-bg: #ffab2b; --bs-btn-hover-border-color: transparent;
  --bs-btn-active-color: #201400; --bs-btn-active-bg: #e68f00; --bs-btn-active-border-color: transparent;
  --bs-btn-disabled-color: #201400; --bs-btn-disabled-bg: #ff9f0a; --bs-btn-disabled-border-color: transparent;
}
html[data-v2-estilo=apple] .btn-info {
  --bs-btn-color: #06222f; --bs-btn-bg: #5ac8fa; --bs-btn-border-color: transparent;
  --bs-btn-hover-color: #06222f; --bs-btn-hover-bg: #74d1fb; --bs-btn-hover-border-color: transparent;
  --bs-btn-active-color: #06222f; --bs-btn-active-bg: #40b9ee; --bs-btn-active-border-color: transparent;
  --bs-btn-disabled-color: #06222f; --bs-btn-disabled-bg: #5ac8fa; --bs-btn-disabled-border-color: transparent;
}
html[data-v2-estilo=apple] .btn-light {
  --bs-btn-color: #1d1d1f; --bs-btn-bg: rgba(255,255,255,.75); --bs-btn-border-color: transparent;
  --bs-btn-hover-color: #1d1d1f; --bs-btn-hover-bg: #fff; --bs-btn-hover-border-color: transparent;
  --bs-btn-active-color: #1d1d1f; --bs-btn-active-bg: rgba(255,255,255,.6); --bs-btn-active-border-color: transparent;
  --bs-btn-disabled-color: #1d1d1f; --bs-btn-disabled-bg: rgba(255,255,255,.75); --bs-btn-disabled-border-color: transparent;
}
html[data-v2-estilo=apple] .btn-dark {
  --bs-btn-color: #f5f5f7; --bs-btn-bg: #2c2c2e; --bs-btn-border-color: transparent;
  --bs-btn-hover-color: #f5f5f7; --bs-btn-hover-bg: #3a3a3c; --bs-btn-hover-border-color: transparent;
  --bs-btn-active-color: #f5f5f7; --bs-btn-active-bg: #1c1c1e; --bs-btn-active-border-color: transparent;
  --bs-btn-disabled-color: #f5f5f7; --bs-btn-disabled-bg: #2c2c2e; --bs-btn-disabled-border-color: transparent;
}
html[data-v2-estilo=apple] .btn-outline-primary {
  --bs-btn-color: #0a84ff; --bs-btn-border-color: color-mix(in srgb, #0a84ff 45%, transparent); --bs-btn-hover-color: #0a84ff; --bs-btn-hover-bg: color-mix(in srgb, #0a84ff 14%, transparent);
  --bs-btn-hover-border-color: color-mix(in srgb, #0a84ff 60%, transparent); --bs-btn-active-color: #0a84ff; --bs-btn-active-bg: color-mix(in srgb, #0a84ff 22%, transparent);
  --bs-btn-active-border-color: color-mix(in srgb, #0a84ff 60%, transparent); --bs-btn-disabled-color: #0a84ff; --bs-btn-disabled-border-color: color-mix(in srgb, #0a84ff 30%, transparent);
}
html[data-v2-estilo=apple] .btn-outline-secondary {
  --bs-btn-color: var(--bs-secondary-color); --bs-btn-border-color: color-mix(in srgb, var(--bs-secondary-color) 45%, transparent); --bs-btn-hover-color: var(--bs-secondary-color); --bs-btn-hover-bg: color-mix(in srgb, var(--bs-secondary-color) 14%, transparent);
  --bs-btn-hover-border-color: color-mix(in srgb, var(--bs-secondary-color) 60%, transparent); --bs-btn-active-color: var(--bs-secondary-color); --bs-btn-active-bg: color-mix(in srgb, var(--bs-secondary-color) 22%, transparent);
  --bs-btn-active-border-color: color-mix(in srgb, var(--bs-secondary-color) 60%, transparent); --bs-btn-disabled-color: var(--bs-secondary-color); --bs-btn-disabled-border-color: color-mix(in srgb, var(--bs-secondary-color) 30%, transparent);
}
html[data-v2-estilo=apple] .btn-outline-success {
  --bs-btn-color: #30b455; --bs-btn-border-color: color-mix(in srgb, #30b455 45%, transparent); --bs-btn-hover-color: #30b455; --bs-btn-hover-bg: color-mix(in srgb, #30b455 14%, transparent);
  --bs-btn-hover-border-color: color-mix(in srgb, #30b455 60%, transparent); --bs-btn-active-color: #30b455; --bs-btn-active-bg: color-mix(in srgb, #30b455 22%, transparent);
  --bs-btn-active-border-color: color-mix(in srgb, #30b455 60%, transparent); --bs-btn-disabled-color: #30b455; --bs-btn-disabled-border-color: color-mix(in srgb, #30b455 30%, transparent);
}
html[data-v2-estilo=apple] .btn-outline-danger {
  --bs-btn-color: #ff453a; --bs-btn-border-color: color-mix(in srgb, #ff453a 45%, transparent); --bs-btn-hover-color: #ff453a; --bs-btn-hover-bg: color-mix(in srgb, #ff453a 14%, transparent);
  --bs-btn-hover-border-color: color-mix(in srgb, #ff453a 60%, transparent); --bs-btn-active-color: #ff453a; --bs-btn-active-bg: color-mix(in srgb, #ff453a 22%, transparent);
  --bs-btn-active-border-color: color-mix(in srgb, #ff453a 60%, transparent); --bs-btn-disabled-color: #ff453a; --bs-btn-disabled-border-color: color-mix(in srgb, #ff453a 30%, transparent);
}
html[data-v2-estilo=apple] .btn-outline-warning {
  --bs-btn-color: #e68f00; --bs-btn-border-color: color-mix(in srgb, #e68f00 45%, transparent); --bs-btn-hover-color: #e68f00; --bs-btn-hover-bg: color-mix(in srgb, #e68f00 14%, transparent);
  --bs-btn-hover-border-color: color-mix(in srgb, #e68f00 60%, transparent); --bs-btn-active-color: #e68f00; --bs-btn-active-bg: color-mix(in srgb, #e68f00 22%, transparent);
  --bs-btn-active-border-color: color-mix(in srgb, #e68f00 60%, transparent); --bs-btn-disabled-color: #e68f00; --bs-btn-disabled-border-color: color-mix(in srgb, #e68f00 30%, transparent);
}
html[data-v2-estilo=apple] .btn-outline-info {
  --bs-btn-color: #2a9fd6; --bs-btn-border-color: color-mix(in srgb, #2a9fd6 45%, transparent); --bs-btn-hover-color: #2a9fd6; --bs-btn-hover-bg: color-mix(in srgb, #2a9fd6 14%, transparent);
  --bs-btn-hover-border-color: color-mix(in srgb, #2a9fd6 60%, transparent); --bs-btn-active-color: #2a9fd6; --bs-btn-active-bg: color-mix(in srgb, #2a9fd6 22%, transparent);
  --bs-btn-active-border-color: color-mix(in srgb, #2a9fd6 60%, transparent); --bs-btn-disabled-color: #2a9fd6; --bs-btn-disabled-border-color: color-mix(in srgb, #2a9fd6 30%, transparent);
}
html[data-v2-estilo=apple] .btn-outline-light {
  --bs-btn-color: var(--bs-body-color); --bs-btn-border-color: color-mix(in srgb, var(--bs-body-color) 45%, transparent); --bs-btn-hover-color: var(--bs-body-color); --bs-btn-hover-bg: color-mix(in srgb, var(--bs-body-color) 14%, transparent);
  --bs-btn-hover-border-color: color-mix(in srgb, var(--bs-body-color) 60%, transparent); --bs-btn-active-color: var(--bs-body-color); --bs-btn-active-bg: color-mix(in srgb, var(--bs-body-color) 22%, transparent);
  --bs-btn-active-border-color: color-mix(in srgb, var(--bs-body-color) 60%, transparent); --bs-btn-disabled-color: var(--bs-body-color); --bs-btn-disabled-border-color: color-mix(in srgb, var(--bs-body-color) 30%, transparent);
}
html[data-v2-estilo=apple] .btn-outline-dark {
  --bs-btn-color: var(--bs-body-color); --bs-btn-border-color: color-mix(in srgb, var(--bs-body-color) 45%, transparent); --bs-btn-hover-color: var(--bs-body-color); --bs-btn-hover-bg: color-mix(in srgb, var(--bs-body-color) 14%, transparent);
  --bs-btn-hover-border-color: color-mix(in srgb, var(--bs-body-color) 60%, transparent); --bs-btn-active-color: var(--bs-body-color); --bs-btn-active-bg: color-mix(in srgb, var(--bs-body-color) 22%, transparent);
  --bs-btn-active-border-color: color-mix(in srgb, var(--bs-body-color) 60%, transparent); --bs-btn-disabled-color: var(--bs-body-color); --bs-btn-disabled-border-color: color-mix(in srgb, var(--bs-body-color) 30%, transparent);
}

/* ---- Apple, efectos intensos (05/11/2026): mas vidrio, brillo especular, fondo con deriva lenta y entradas con desplazamiento. ---- */
html[data-v2-estilo=apple] { --v2-ap-blur: blur(40px) saturate(200%); --v2-ap-blur-fuerte: blur(60px) saturate(220%); }
html[data-v2-estilo=apple][data-bs-theme=light] {
  --v2-ap-vidrio: rgba(255, 255, 255, .42); --v2-ap-vidrio-fuerte: rgba(255, 255, 255, .62); --v2-ap-vidrio-ligero: rgba(255, 255, 255, .22);
  --v2-ap-brillo: linear-gradient(135deg, rgba(255, 255, 255, .55) 0%, rgba(255, 255, 255, .08) 38%, rgba(255, 255, 255, 0) 60%);
}
html[data-v2-estilo=apple][data-bs-theme=dark] {
  --v2-ap-vidrio: rgba(60, 60, 70, .34); --v2-ap-vidrio-fuerte: rgba(44, 44, 52, .58); --v2-ap-vidrio-ligero: rgba(255, 255, 255, .03);
  --v2-ap-brillo: linear-gradient(135deg, rgba(255, 255, 255, .16) 0%, rgba(255, 255, 255, .03) 38%, rgba(255, 255, 255, 0) 60%);
}
/* Brillo especular sobre el vidrio. */
html[data-v2-estilo=apple] .card, html[data-v2-estilo=apple] .modal-content, html[data-v2-estilo=apple] .dropdown-menu, html[data-v2-estilo=apple] .popover, html[data-v2-estilo=apple] .toast,
html[data-v2-estilo=apple] .swal2-popup { background-image: var(--v2-ap-brillo); background-repeat: no-repeat; }
html[data-v2-estilo=apple] .dropdown-menu, html[data-v2-estilo=apple] .swal2-popup { -webkit-backdrop-filter: var(--v2-ap-blur-fuerte); backdrop-filter: var(--v2-ap-blur-fuerte); }
html[data-v2-estilo=apple] .app-header, html[data-v2-estilo=apple] .app-sidebar { background-image: linear-gradient(180deg, rgba(255, 255, 255, .10), rgba(255, 255, 255, 0) 60%); }
/* Fondo vivo (en html::before, NO en body::before: AdminLTE lee el punto de quiebre del menu lateral del `content` de body::before y, pisado, el boton de las tres rayitas dejaba de abrir el menu en el telefono): manchas de color que derivan muy despacio detras del vidrio (solo transform, barato para la GPU). */
html[data-v2-estilo=apple]::before {
  content: ""; position: fixed; inset: -25%; z-index: -1; pointer-events: none;
  background: radial-gradient(38% 38% at 22% 28%, rgba(10, 132, 255, .42), transparent 70%), radial-gradient(34% 34% at 78% 22%, rgba(191, 90, 242, .36), transparent 70%),
              radial-gradient(40% 40% at 62% 80%, rgba(48, 209, 88, .22), transparent 70%), radial-gradient(30% 30% at 12% 82%, rgba(255, 159, 10, .20), transparent 70%);
  filter: blur(30px); animation: v2-ap-deriva 38s ease-in-out infinite alternate; will-change: transform;
}
html[data-v2-estilo=apple][data-bs-theme=light]::before { opacity: .55; }
@keyframes v2-ap-deriva { 0% { transform: translate3d(-4%, -3%, 0) rotate(0deg) scale(1); } 50% { transform: translate3d(5%, 4%, 0) rotate(8deg) scale(1.12); } 100% { transform: translate3d(-2%, 6%, 0) rotate(-6deg) scale(1.04); } }
/* Modales: suben desde abajo con resorte y el fondo se desenfoca mas. */
html[data-v2-estilo=apple] .modal.fade .modal-dialog { transform: translateY(46px) scale(.9); transition: transform .6s var(--v2-ap-resorte), opacity .35s ease; }
html[data-v2-estilo=apple] .modal-backdrop { --bs-backdrop-opacity: .26; -webkit-backdrop-filter: blur(16px) saturate(140%); backdrop-filter: blur(16px) saturate(140%); }
html[data-v2-estilo=apple] .modal-backdrop.fade { transition: opacity .45s ease; }
html[data-v2-estilo=apple] .dropdown-menu.show { animation: v2-ap-brota .38s var(--v2-ap-resorte); }
html[data-v2-estilo=apple] .swal2-container.swal2-backdrop-show { -webkit-backdrop-filter: blur(16px) saturate(140%); backdrop-filter: blur(16px) saturate(140%); }
/* Entradas con desplazamiento: las tarjetas suben en cascada, el menu lateral se desliza y los submenus se despliegan. */
html[data-v2-estilo=apple] .app-main .card { animation: v2-ap-sube-grande .6s var(--v2-ap-suave) backwards; }
html[data-v2-estilo=apple] .app-main .row > *:nth-child(1) .card, html[data-v2-estilo=apple] .app-main .card:nth-of-type(1) { animation-delay: .02s; }
html[data-v2-estilo=apple] .app-main .row > *:nth-child(2) .card, html[data-v2-estilo=apple] .app-main .card:nth-of-type(2) { animation-delay: .09s; }
html[data-v2-estilo=apple] .app-main .row > *:nth-child(3) .card, html[data-v2-estilo=apple] .app-main .card:nth-of-type(3) { animation-delay: .16s; }
html[data-v2-estilo=apple] .app-main .row > *:nth-child(4) .card, html[data-v2-estilo=apple] .app-main .card:nth-of-type(4) { animation-delay: .23s; }
html[data-v2-estilo=apple] .app-main .row > *:nth-child(n+5) .card { animation-delay: .30s; }
html[data-v2-estilo=apple] .app-sidebar .sidebar-menu > .nav-item { animation: v2-ap-desliza .5s var(--v2-ap-suave) backwards; }
html[data-v2-estilo=apple] .app-sidebar .sidebar-menu > .nav-item:nth-child(2) { animation-delay: .04s; }
html[data-v2-estilo=apple] .app-sidebar .sidebar-menu > .nav-item:nth-child(3) { animation-delay: .08s; }
html[data-v2-estilo=apple] .app-sidebar .sidebar-menu > .nav-item:nth-child(4) { animation-delay: .12s; }
html[data-v2-estilo=apple] .app-sidebar .sidebar-menu > .nav-item:nth-child(5) { animation-delay: .16s; }
html[data-v2-estilo=apple] .app-sidebar .sidebar-menu > .nav-item:nth-child(n+6) { animation-delay: .2s; }
html[data-v2-estilo=apple] .app-sidebar .nav-link:hover { transform: translateX(3px); }
html[data-v2-estilo=apple] .app-sidebar .nav-link { transition: background-color .25s var(--v2-ap-suave), color .25s var(--v2-ap-suave), transform .3s var(--v2-ap-resorte); }
html[data-v2-estilo=apple] .app-sidebar .menu-open > .nav-treeview { animation: v2-ap-sube .35s var(--v2-ap-resorte); }
html[data-v2-estilo=apple] .dropdown-item:hover { transform: translateX(2px); }
html[data-v2-estilo=apple] .dropdown-item { transition: background-color .18s ease, transform .22s var(--v2-ap-resorte); }
html[data-v2-estilo=apple] .btn:hover { transform: translateY(-1px); }
html[data-v2-estilo=apple] .btn:active { transform: scale(.96); }
html[data-v2-estilo=apple] .btn-primary:hover { box-shadow: 0 2px 4px rgba(10, 80, 200, .35), 0 8px 20px rgba(10, 132, 255, .35); }
html[data-v2-estilo=apple] .card { transition: box-shadow .35s var(--v2-ap-suave); }
html[data-v2-estilo=apple] .card:hover { box-shadow: var(--v2-ap-sombra-fuerte); }
html[data-v2-estilo=apple] .nav-tabs .nav-link.active { animation: v2-ap-sube .3s var(--v2-ap-resorte); }
html[data-v2-estilo=apple] .tab-content > .tab-pane.active { animation: v2-ap-sube-grande .45s var(--v2-ap-suave); }
html[data-v2-estilo=apple] .tabulator .tabulator-row { transition: background-color .15s ease, transform .2s var(--v2-ap-suave); }
@keyframes v2-ap-sube-grande { from { opacity: 0; transform: translateY(22px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes v2-ap-desliza { from { opacity: 0; transform: translateX(-18px); } to { opacity: 1; transform: none; } }

/* ================================================================== accesibilidad y respaldos */
/* Sin desenfoque (navegador viejo o "reducir transparencia" del sistema): paneles solidos y legibles. */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  html[data-v2-estilo=apple][data-bs-theme=light] { --v2-ap-vidrio: #f7f8fb; --v2-ap-vidrio-fuerte: #fbfbfd; --v2-ap-campo: #fff; }
  html[data-v2-estilo=apple][data-bs-theme=dark] { --v2-ap-vidrio: #202026; --v2-ap-vidrio-fuerte: #26262c; --v2-ap-campo: #2b2b32; }
}
@media (prefers-reduced-transparency: reduce) {
  html[data-v2-estilo=apple][data-bs-theme=light] { --v2-ap-vidrio: #f7f8fb; --v2-ap-vidrio-fuerte: #fbfbfd; --v2-ap-campo: #fff; --v2-ap-fondo: #eceef4; }
  html[data-v2-estilo=apple][data-bs-theme=dark] { --v2-ap-vidrio: #202026; --v2-ap-vidrio-fuerte: #26262c; --v2-ap-campo: #2b2b32; --v2-ap-fondo: #0c0c10; }
  html[data-v2-estilo=apple] .card::before, html[data-v2-estilo=apple] .modal-content::before, html[data-v2-estilo=apple] .dropdown-menu, html[data-v2-estilo=apple] .app-header, html[data-v2-estilo=apple] .app-sidebar,
  html[data-v2-estilo=apple] .modal-backdrop { -webkit-backdrop-filter: none; backdrop-filter: none; }
}
/* Quien pide menos movimiento no recibe animaciones de entrada: los modales aparecen sin desplazarse. */
@media (prefers-reduced-motion: reduce) {
  html[data-v2-estilo=apple]::before { animation: none; }
  html[data-v2-estilo] .card, html[data-v2-estilo] .app-main .card, html[data-v2-estilo] .app-sidebar .sidebar-menu > .nav-item, html[data-v2-estilo] .app-sidebar .menu-open > .nav-treeview, html[data-v2-estilo] .app-sidebar .nav-link.active::before, html[data-v2-estilo] .nav-link.active::after { animation-duration: .01s !important; transition-duration: .01s !important; }
  html[data-v2-estilo] .modal.fade .modal-dialog, html[data-v2-estilo] .fade, html[data-v2-estilo] .collapsing, html[data-v2-estilo] .offcanvas,
  html[data-v2-estilo] .btn, html[data-v2-estilo] .app-sidebar { transition-duration: .01s !important; transition-delay: 0s !important; }
  html[data-v2-estilo] .dropdown-menu.show, html[data-v2-estilo] .toast, html[data-v2-estilo] .tab-content > .tab-pane.active, html[data-v2-estilo] .swal2-popup { animation-duration: .01s !important; }
  html[data-v2-estilo] .modal.fade .modal-dialog { transform: none; }
  html[data-v2-estilo] .btn:active, html[data-v2-estilo] .btn:hover, html[data-v2-estilo] .dropdown-item:hover, html[data-v2-estilo] .app-sidebar .nav-link:hover { transform: none; }
}
@media (prefers-reduced-transparency: reduce) {
  html[data-v2-estilo=fluent][data-bs-theme=light] { --v2-fl-acrilico-bg: #fcfcfc; --v2-fl-lateral: #f3f3f3; }
  html[data-v2-estilo=fluent][data-bs-theme=dark] { --v2-fl-acrilico-bg: #2c2c2c; --v2-fl-lateral: #202020; }
  html[data-v2-estilo=fluent] .app-header, html[data-v2-estilo=fluent] .app-sidebar, html[data-v2-estilo=fluent] .dropdown-menu, html[data-v2-estilo=fluent] .popover, html[data-v2-estilo=fluent] .toast, html[data-v2-estilo=fluent] .ts-dropdown { -webkit-backdrop-filter: none; backdrop-filter: none; }
  html[data-v2-estilo=apple]::before { display: none; }
  html[data-v2-estilo=apple] .modal-content::before, html[data-v2-estilo=apple] .dropdown-menu, html[data-v2-estilo=apple] .swal2-popup, html[data-v2-estilo=apple] .swal2-container.swal2-backdrop-show { -webkit-backdrop-filter: none; backdrop-filter: none; }
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  html[data-v2-estilo=fluent][data-bs-theme=light] { --v2-fl-acrilico-bg: #fcfcfc; --v2-fl-lateral: #f3f3f3; }
  html[data-v2-estilo=fluent][data-bs-theme=dark] { --v2-fl-acrilico-bg: #2c2c2c; --v2-fl-lateral: #202020; }
}

/* ================================================================== colores de estado iguales en TODOS los temas */
/* Programacion semanal (Confirmado / Mantenimiento / Reservado): mismos colores en claro, oscuro, Fluent y Apple. Los estilos con `data-v2-estilo`
 * no pueden taparlos (especificidad mayor que cualquier regla de fondo de celda). */
html[data-v2-estilo] .v2-plasem-tabla .tabulator .tabulator-row .tabulator-cell.v2-plasem-est-C { background-color: rgba(3, 255, 10, .18) !important; }
html[data-v2-estilo] .v2-plasem-tabla .tabulator .tabulator-row .tabulator-cell.v2-plasem-est-M { background-color: rgba(208, 0, 0, .33) !important; }
html[data-v2-estilo] .v2-plasem-tabla .tabulator .tabulator-row .tabulator-cell.v2-plasem-est-R { background-color: rgba(255, 217, 0, .28) !important; }
html[data-v2-estilo] .v2-plasem-tit-C { background-color: rgba(3, 255, 10, .18); }
html[data-v2-estilo] .v2-plasem-tit-M { background-color: rgba(255, 102, 102, .55); }
html[data-v2-estilo] .v2-plasem-tit-R { background-color: rgba(255, 217, 0, .28); }
html[data-v2-estilo][data-bs-theme=dark] .v2-plasem-tit-C { background-color: rgba(3, 255, 10, .22); }
html[data-v2-estilo][data-bs-theme=dark] .v2-plasem-tit-M { background-color: rgba(255, 102, 102, .35); }
html[data-v2-estilo][data-bs-theme=dark] .v2-plasem-tit-R { background-color: rgba(255, 217, 0, .25); }

/* Filas de estado de Tabulator (viaticos, asignaciones, bajas...): mismo color de fondo en todos los temas, ni el rayado ni el hover de Fluent/Apple lo tapan. */
html[data-v2-estilo] .tabulator .tabulator-row.v2-fila-ok { background-color: var(--bs-success-bg-subtle) !important; }
html[data-v2-estilo] .tabulator .tabulator-row.v2-fila-alerta { background-color: var(--bs-warning-bg-subtle) !important; }
html[data-v2-estilo] .tabulator .tabulator-row.v2-fila-baja { background-color: var(--bs-danger-bg-subtle) !important; }
html[data-v2-estilo] .tabulator .tabulator-row.v2-fila-ok:hover, html[data-v2-estilo] .tabulator .tabulator-row.v2-fila-alerta:hover, html[data-v2-estilo] .tabulator .tabulator-row.v2-fila-baja:hover { filter: brightness(.96); }
html[data-v2-estilo][data-bs-theme=dark] .tabulator .tabulator-row.v2-fila-ok:hover, html[data-v2-estilo][data-bs-theme=dark] .tabulator .tabulator-row.v2-fila-alerta:hover, html[data-v2-estilo][data-bs-theme=dark] .tabulator .tabulator-row.v2-fila-baja:hover { filter: brightness(1.15); }
html[data-v2-estilo] .tabulator .tabulator-row.v2-fila-ok .tabulator-cell, html[data-v2-estilo] .tabulator .tabulator-row.v2-fila-alerta .tabulator-cell, html[data-v2-estilo] .tabulator .tabulator-row.v2-fila-baja .tabulator-cell { background-color: transparent !important; }

/* Campos editables distinguibles (v2.css, 17/10/2026): cada tema aporta su propio fondo/borde en vez del celeste del claro. */
html[data-v2-estilo=rosa] { --v2-campo-bg: #fff6f8; --v2-campo-borde: #d6b4bd; }
html[data-v2-estilo=fluent][data-bs-theme=light] { --v2-campo-bg: #fdfdfd; --v2-campo-borde: rgba(0, 0, 0, .22); }
html[data-v2-estilo=fluent][data-bs-theme=dark] { --v2-campo-bg: #313131; --v2-campo-borde: rgba(255, 255, 255, .26); }
html[data-v2-estilo=apple][data-bs-theme=light] { --v2-campo-bg: rgba(255, 255, 255, .62); --v2-campo-borde: rgba(60, 60, 67, .22); }
html[data-v2-estilo=apple][data-bs-theme=dark] { --v2-campo-bg: rgba(255, 255, 255, .07); --v2-campo-borde: rgba(255, 255, 255, .20); }

/* Selector de tema: grupos desplegables Fluent / Apple (mismo aspecto que un `.dropdown-item`; no lleva esa clase para que el menu no se cierre al desplegarlo). */
.v2-tema-grupo { display: block; width: 100%; padding: var(--bs-dropdown-item-padding-y, .25rem) var(--bs-dropdown-item-padding-x, 1rem); text-align: inherit; white-space: nowrap; color: var(--bs-dropdown-link-color, inherit); background: none; border: 0; border-radius: var(--bs-dropdown-item-border-radius, 0); }
.v2-tema-grupo:hover, .v2-tema-grupo:focus-visible { background-color: var(--bs-dropdown-link-hover-bg, rgba(0, 0, 0, .05)); color: var(--bs-dropdown-link-hover-color, inherit); }
.v2-tema-flecha { font-size: .7em; transition: transform .2s ease; }
.v2-tema-grupo.abierto .v2-tema-flecha { transform: rotate(90deg); }
@media (prefers-reduced-motion: reduce) { .v2-tema-flecha { transition: none; } }
