/* Comportamiento del vivo, bloque D: programación, lista de miembros, finanzas, panel, coaches y componentes compartidos.
   Solo lo escribe el agente de este bloque (TAREA-1-interaccion-d.md).

   Método: transcribir, no interpretar. Cada regla cita el archivo:línea del vivo
   (rush-ride-studio-prod-0758ff2/src) de donde sale el valor. Mejora progresiva:
   sin librerías, y con `prefers-reduced-motion` todo se queda quieto.

   Equivalencias de Tailwind v4 que usa el vivo:
     transition-colors → color, background-color, border-color, text-decoration-color, fill, stroke · 150 ms · cubic-bezier(.4,0,.2,1)
     transition-all    → all · 150 ms · cubic-bezier(.4,0,.2,1)       (duration-200 → 200 ms, duration-300 → 300 ms)
     animate-pulse     → pulse 2s cubic-bezier(.4,0,.6,1) infinite    (a 50 %: opacity .5)
     animate-spin      → spin 1s linear infinite
   Equivalencias de framer-motion 12 (valores por defecto cuando el vivo no los pone):
     opacity / height / width → tween 300 ms cubic-bezier(.25,.1,.35,1)
     y                        → resorte rigidez 500 · amortiguación 25
     scale                    → resorte rigidez 550 · amortiguación 30
   Los resortes se simularon con scripts/resortes_motion.py y se pasan a CSS con linear().
   Los selectores llevan `html ` delante para ganarle a los <style> de cada pantalla, que cargan después. */

:root {
    --d-ease: cubic-bezier(.4, 0, .2, 1);
    --d-tween: cubic-bezier(.25, .1, .35, 1);
    --d-texto: #E8E8E8;            /* dark-text */
    --d-muted: #666666;            /* dark-muted */
    --d-muted-50: rgba(102, 102, 102, .5);
    --d-sup-30: rgba(12, 12, 12, .3);   /* dark-surface/30 */
    --d-sup-50: rgba(12, 12, 12, .5);   /* dark-surface/50 */
    --d-sup-60: rgba(12, 12, 12, .6);
    --d-sup-80: rgba(12, 12, 12, .8);
    --d-sup: #0C0C0C;
    --d-rush-300: #FFB366;
    --d-rush-400: #FF9933;
    --d-rush-500: #FF6B00;
    --d-rush-600: #E65F00;
    --d-borde-rush-30: rgba(255, 107, 0, .3);
    --d-borde-rush-40: rgba(255, 107, 0, .4);
    --d-rojo-400: #F87171;
    --d-borde: #1A1A1A;              /* dark-border */
    /* Resortes de framer-motion simulados (rigidez/amortiguación → linear()) */
    --d-resorte-item: linear(0, 0.0152, 0.0557, 0.1147, 0.1864, 0.2659, 0.349, 0.4326, 0.5141, 0.5917, 0.6638, 0.7297, 0.7888, 0.8409, 0.886, 0.9244, 0.9565, 0.9827, 1.0035, 1.0196, 1.0316, 1.0399, 1.0453, 1.0481, 1.0489, 1.0481, 1.046, 1.0431, 1.0396, 1.0357, 1.0316, 1.0276, 1.0236, 1.0198, 1.0163, 1.0131, 1.0102, 1.0077, 1.0055, 1.0036, 1);
    --d-resorte-item-op: linear(0, 0.0124, 0.0459, 0.0955, 0.1566, 0.2254, 0.2989, 0.3742, 0.4492, 0.5221, 0.5917, 0.6569, 0.7171, 0.7718, 0.8209, 0.8643, 0.9022, 0.9347, 0.9622, 0.985, 1.0035, 1.0182, 1.0295, 1.0378, 1.0434, 1.047, 1.0486, 1.0488, 1.0478, 1.0458, 1.0431, 1.04, 1.0365, 1.0329, 1.0292, 1.0255, 1.022, 1.0187, 1.0156, 1.0128, 1);
    --d-resorte-y5: linear(0, 0.0059, 0.0227, 0.0489, 0.0831, 0.1239, 0.1702, 0.2207, 0.2743, 0.3301, 0.3872, 0.4447, 0.502, 0.5583, 0.6132, 0.6661, 0.7168, 0.7648, 0.8099, 0.852, 0.8909, 0.9265, 0.9588, 0.9877, 1.0135, 1.0361, 1.0556, 1.0722, 1.086, 1.0971, 1.1059, 1.1124, 1.1168, 1.1194, 1.1203, 1.1196, 1.1177, 1.1146, 1.1105, 1.1057, 1);
    --d-resorte-dur: linear(0, 0.0113, 0.0413, 0.085, 0.1382, 0.1976, 0.2604, 0.3245, 0.3881, 0.4501, 0.5094, 0.5654, 0.6177, 0.666, 0.7102, 0.7503, 0.7864, 0.8186, 0.8472, 0.8725, 0.8945, 0.9137, 0.9302, 0.9444, 0.9564, 0.9666, 0.9751, 0.9822, 0.988, 0.9926, 0.9964, 0.9993, 1.0016, 1.0033, 1.0046, 1.0054, 1.0059, 1.0062, 1.0063, 1.0062, 1);
    --d-resorte-escala: linear(0, 0.0018, 0.0071, 0.0155, 0.0267, 0.0407, 0.057, 0.0754, 0.0958, 0.1179, 0.1415, 0.1664, 0.1924, 0.2193, 0.247, 0.2753, 0.3041, 0.3332, 0.3625, 0.3919, 0.4213, 0.4505, 0.4795, 0.5082, 0.5364, 0.5643, 0.5916, 0.6183, 0.6443, 0.6697, 0.6944, 0.7183, 0.7414, 0.7637, 0.7852, 0.8058, 0.8256, 0.8445, 0.8626, 0.8798, 1);
    --d-resorte-barra: linear(0, 0.0176, 0.0615, 0.121, 0.1888, 0.2597, 0.3303, 0.3984, 0.4626, 0.5222, 0.5768, 0.6264, 0.671, 0.7109, 0.7465, 0.778, 0.8059, 0.8305, 0.8521, 0.871, 0.8877, 0.9022, 0.9149, 0.926, 0.9356, 0.9441, 0.9514, 0.9578, 0.9633, 0.9682, 0.9724, 0.976, 0.9792, 0.9819, 0.9843, 0.9864, 0.9882, 0.9898, 0.9911, 0.9923, 1);
    --d-resorte-barra-fin: linear(0, 0.0115, 0.0425, 0.0886, 0.1457, 0.2105, 0.2799, 0.3515, 0.4233, 0.4937, 0.5614, 0.6254, 0.6851, 0.7399, 0.7897, 0.8343, 0.8737, 0.9082, 0.9378, 0.963, 0.9841, 1.0013, 1.0151, 1.0259, 1.0339, 1.0396, 1.0434, 1.0454, 1.046, 1.0455, 1.044, 1.0419, 1.0393, 1.0363, 1.0331, 1.0298, 1.0265, 1.0233, 1.0202, 1.0172, 1);
}
/* Tema claro: el `.light` del vivo (globals.css) remapea dark-* y rush-*; aquí el naranja de texto es el
   que main.css ya eligió para el tema claro por contraste. */
html[data-tema="claro"] {
    --d-texto: #111827;
    --d-muted: #374151;
    --d-muted-50: rgba(55, 65, 81, .5);
    --d-sup-30: rgba(255, 255, 255, .3);
    --d-sup-50: rgba(255, 255, 255, .5);
    --d-sup-60: rgba(255, 255, 255, .6);
    --d-sup-80: rgba(255, 255, 255, .8);
    --d-sup: #FFFFFF;
    --d-borde: rgba(0, 0, 0, .22);
    --d-rush-300: #FB923C;
    --d-rush-400: var(--rr-primary-light, #C2410C);
}

/* ---------- Cuadros clave ---------- */
@keyframes d-pulse { 50% { opacity: .5; } }                                  /* globals de Tailwind: pulse */
@keyframes d-spin { to { transform: rotate(360deg); } }                      /* spin */
@keyframes d-shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } /* globals.css:366 */
@keyframes d-op { from { opacity: 0; } }
@keyframes d-y15 { from { transform: translateY(15px); } }                   /* variants item: y 15 */
@keyframes d-escala95 { from { transform: scale(.95); } }                    /* coaches.tsx:321, kpi popup */
@keyframes d-pop-y12 { from { opacity: 0; transform: translateY(12px) scale(.92); } }   /* ui/modal.tsx:48 */
@keyframes d-pop-y8 { from { opacity: 0; transform: translateY(8px) scale(.92); } }     /* miembros.tsx:615, mini-perfil */
@keyframes d-pop-rango { from { opacity: 0; transform: translateY(-8px) scale(.96); } } /* dashboard.tsx:611 */
@keyframes d-menu-pop { from { opacity: 0; transform: translateY(-5px) scale(.95); } }  /* ui/dropdown.tsx:33 */
@keyframes d-barra { from { width: 0; } }                                    /* dashboard.tsx:1955, finances.tsx:485 */
@keyframes d-altura-op { from { opacity: 0; } }

/* =========================================================================
   COMPONENTES COMPARTIDOS  (ui/*, esqueletos, modales, mini-perfil)
   ========================================================================= */

/* ui/button.tsx:41-47 [D-M6 D-C7 D-P4 D-P11]  whileHover 1.02 · whileTap .98 · transition .15 · transition-all duration-200 ·
   disabled:opacity-50 disabled:pointer-events-none · el primario crece su resplandor al apuntarlo (línea 18) */
html .btn-create, html .mb-create, html .sc-btn-new, html .mc-btn, html .btn-modal,
html .co-actions-modal button, html .sc-modal__submit, html .periodo__aplicar, html .fin-filtrar,
html .sc-btn-borrar, html .sc-confirmar__si, html .sc-confirmar__no {
    transition: transform .15s var(--d-tween), box-shadow .2s var(--d-ease), background-color .2s var(--d-ease),
                border-color .2s var(--d-ease), color .2s var(--d-ease), opacity .2s var(--d-ease);
}
@media (hover: hover) {
html .btn-create:hover:not(:disabled),
html .mb-create:hover:not(:disabled),
html .sc-btn-new:hover:not(:disabled),
html .mc-btn:hover:not(:disabled),
html .btn-modal:hover:not(:disabled),
html .co-actions-modal button:hover:not(:disabled),
html .sc-modal__submit:hover:not(:disabled),
html .periodo__aplicar:hover:not(:disabled),
html .fin-filtrar:hover:not(:disabled),
html .sc-btn-borrar:hover:not(:disabled),
html .sc-confirmar__si:hover:not(:disabled),
html .sc-confirmar__no:hover:not(:disabled) { transform: scale(1.02); }
}
html .btn-create:active:not(:disabled), html .mb-create:active:not(:disabled), html .sc-btn-new:active:not(:disabled),
html .mc-btn:active:not(:disabled), html .btn-modal:active:not(:disabled), html .co-actions-modal button:active:not(:disabled),
html .sc-modal__submit:active:not(:disabled), html .periodo__aplicar:active:not(:disabled), html .fin-filtrar:active:not(:disabled),
html .sc-btn-borrar:active:not(:disabled), html .sc-confirmar__si:active:not(:disabled), html .sc-confirmar__no:active:not(:disabled) {
    transform: scale(.98);
}
html .btn-create:disabled, html .mb-create:disabled, html .sc-btn-new:disabled, html .mc-btn:disabled,
html .btn-modal:disabled, html .co-actions-modal button:disabled, html .sc-modal__submit:disabled,
html .periodo__aplicar:disabled, html .fin-filtrar:disabled, html .sc-btn-borrar:disabled, html .sc-confirmar__si:disabled, html .sc-confirmar__no:disabled {
    opacity: .5; pointer-events: none;                                           /* button.tsx:36 */
}
/* Primario: resplandor 0 0 20px .35 + 0 0 60px .1 → al apuntar 0 0 30px .5 + 0 0 80px .15  (button.tsx:18) */
html .btn-create, html .sc-btn-new, html button.mb-create {
    box-shadow: 0 0 20px rgba(255, 107, 0, .35), 0 0 60px rgba(255, 107, 0, .1);
}
@media (hover: hover) {
html .btn-create:hover,
html .sc-btn-new:hover,
html button.mb-create:hover { box-shadow: 0 0 30px rgba(255, 107, 0, .5), 0 0 80px rgba(255, 107, 0, .15); }
}

/* ui/skeleton.tsx:9 [D-M9] · animate-shimmer (globals.css:516) y animate-pulse (Tailwind) */
.d-esqueleto { border-radius: .75rem; background-color: var(--d-sup-50); animation: d-shimmer 2.5s linear infinite;
    background-size: 200% 100%;
    background-image: linear-gradient(90deg, rgba(255,107,0,0) 0%, rgba(255,107,0,.08) 50%, rgba(255,107,0,0) 100%); }
.d-pulso { animation: d-pulse 2s cubic-bezier(.4, 0, .6, 1) infinite; }
.d-pulso > * { background-color: var(--d-sup-50); }
.d-giro { animation: d-spin 1s linear infinite; }
.d-esq-linea { background-color: var(--d-sup-50); border-radius: .25rem; animation: d-pulse 2s cubic-bezier(.4, 0, .6, 1) infinite; }
.d-esq-caja { background-color: var(--d-sup-50); border-radius: .75rem; animation: d-pulse 2s cubic-bezier(.4, 0, .6, 1) infinite; }
.d-esq-redondo { background-color: var(--d-sup-50); border-radius: 9999px; animation: d-pulse 2s cubic-bezier(.4, 0, .6, 1) infinite; }
/* "Guardado" con check (coaches/page.tsx:280-287): el check es un icono propio, no un emoji */
html .co-actions-modal button.d-guardado:disabled { opacity: 1; }
.d-guardado::before { content: ""; display: inline-block; width: 16px; height: 16px; margin-right: .4rem; vertical-align: -3px; background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / contain no-repeat; }
/* Botón "ocupado": el Loader2 del vivo (button.tsx:60, miembros.tsx:694) */
.d-ocupado { position: relative; }
.d-ocupado::before { content: ""; display: inline-block; width: 16px; height: 16px; margin-right: .4rem; flex: none;
    border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: d-spin 1s linear infinite; vertical-align: -3px; }

/* ui/input.tsx:32-38 [D-M10 D-C12]  transition-all duration-200 · focus:border-rush-500/50 + ring-2 rush-500/20 · hover:border-dark-border/80 */
html .co-field input, html .co-field textarea, html .co-field select, html .mb-search input, html .sc-input[type="time"] {
    transition: all .2s var(--d-ease);
}
html .mb-search input:focus, html .co-field input:focus, html .co-field textarea:focus, html .co-field select:focus,
html .sc-input[type="time"]:focus {
    outline: none; border-color: rgba(255, 107, 0, .5); box-shadow: 0 0 0 2px rgba(255, 107, 0, .2);
}
/* Los campos de los modales de clase usan [D-P12] `inputClass` (create-class-modal.tsx:94-95):
   transition-colors · focus:border-rush-500/40 focus:outline-none focus:ring-1 focus:ring-rush-500/20 */
html .sc-input { transition: color .15s var(--d-ease), background-color .15s var(--d-ease), border-color .15s var(--d-ease); }
html .sc-input:not([type="time"]):focus { outline: none; border-color: var(--d-borde-rush-40); box-shadow: 0 0 0 1px rgba(255, 107, 0, .2); }
html .sc-input:not([type="time"])::placeholder { color: var(--d-muted); }
/* Los campos del modal "Crear miembro" y la razón de anular: focus:border-rush-500/40, sin anillo, transition-colors
   (miembros.tsx:646 [D-M8] · void-sale-modal.tsx:140) y placeholder:text-dark-muted/50 */
html .mc-field input { transition: color .15s var(--d-ease), background-color .15s var(--d-ease), border-color .15s var(--d-ease); }
html .mc-field input:focus { outline: none; border-color: var(--d-borde-rush-40); box-shadow: none; }
html .mc-field input::placeholder, html .rango-campo__caja input::placeholder, html .fin-busca input::placeholder { color: var(--d-muted-50); }   /* finances/page.tsx:591 [D-F12] */

/* ui/modal.tsx:36-82 [D-M8 D-C8 D-P7 D-D10]  telón: opacity 0→1 · caja: opacity 0, scale .92, y 12 → 1,1,0 en .3 s cubic-bezier(.22,1,.36,1)
   bg-black/70 backdrop-blur-md (12 px) */
html .co-modal-bg.show, html .sc-modal-bg.show, html .modal-overlay.active, html .mc-overlay.active {
    background: rgba(0, 0, 0, .7); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
    animation: d-op .3s var(--d-tween) backwards;
}
html .co-modal-bg.show .co-modal, html .sc-modal-bg.show .sc-modal, html .modal-overlay.active .modal-box {
    animation: d-pop-y12 .3s cubic-bezier(.22, 1, .36, 1) backwards;
}
/* miembros.tsx:615 · mini-perfil: resorte [D-M8] con rebote .15 en .35 s, desde scale .92 y 8 */
html .mc-overlay.active .mc-modal {
    animation: d-pop-y8 .35s var(--d-resorte-dur) backwards;
}
/* Ventana rápida = mini-perfil del vivo [D-M9]: telón black/65 blur-sm en .2 s (member-profile-context.tsx:48-53) */
html .qv-overlay.active {
    background: rgba(0, 0, 0, .65); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
    animation: d-op .2s var(--d-tween) backwards;
}
html .qv-overlay.active .qv-modal { animation: d-pop-y8 .35s var(--d-resorte-dur) backwards; }

/* ui/modal.tsx:70 [D-P8 D-D10]  botón de cerrar: transition-colors · hover:bg-dark-surface/50 hover:text-dark-text */
html .sc-modal__close, html .modal-box__close, html .kpi-vent__x {
    transition: color .15s var(--d-ease), background-color .15s var(--d-ease), border-color .15s var(--d-ease);
}
@media (hover: hover) {
html .sc-modal__close:hover,
html .modal-box__close:hover { background: var(--d-sup-50); color: var(--d-texto); }
}
/* KPI popup: el X solo cambia el color (dashboard.tsx:1567 · text-dark-muted hover:text-dark-text transition-colors) */
@media (hover: hover) {
html .kpi-vent__x:hover { color: var(--d-texto); background: transparent; }
}

/* ui/dropdown.tsx:63 [sin contraparte: el rebuild usa <select> nativo]  DropdownItem: transition-colors · hover:bg-dark-surface/80 (peligro: hover:bg-red-500/10) */
html .d-menu-item { transition: color .15s var(--d-ease), background-color .15s var(--d-ease); }
@media (hover: hover) {
html .d-menu-item:hover { background: var(--d-sup-80); }
}
html .d-menu { animation: d-menu-pop .15s var(--d-tween) backwards; }

/* ui/card.tsx:29-37  Card con `hover`: whileHover y -2 + scale 1.01 en .2 s · transition-all duration-200 · hover:border-rush-500/30 */
/* ui/tabs.tsx:24  transition-colors · hover:text-dark-text */

/* admin/member-mini-profile.tsx:134,186-202 [D-M9]  cerrar: hover:text-dark-text · WhatsApp: group-hover verde */
html .qv-btn { transition: color .15s var(--d-ease), background-color .15s var(--d-ease), border-color .15s var(--d-ease); }
@media (hover: hover) {
html .qv-btn--wa:hover { color: #34D399; }
}                                    /* emerald-400 */
@media (hover: hover) {
html .qv-btn:hover:not(.qv-btn--wa) { color: var(--d-texto); }
}
@media (hover: hover) {
html .qv-btn--wa:hover { text-decoration: underline; }
}
@media (hover: hover) {
html .qv-actions .mc-btn:not(.mc-btn--primary):hover { color: var(--d-texto); background: var(--d-sup-50); }
}

/* =========================================================================
   MIEMBROS (lista)  ·  members/page.tsx
   ========================================================================= */

/* Contenedor: motion.div initial opacity 0 → 1 [D-M1] (members/page.tsx:295). Es el valor por omisión: .3 s cubic-bezier(.25,.1,.35,1) */
/* 12/10 (auditoría): el menú lateral se incluye DENTRO de este contenedor; animar el contenedor
   lo apagaba y lo corría en cada cambio de pantalla. En el vivo el menú queda fijo: se anima
   todo menos la rama del menú. */
html [data-d="miembros"] > :where(:not(.admin-nav):not(:has(.admin-nav))),
html [data-d="miembros"] > :where(:has(.admin-nav)) > :where(:not(.admin-nav):not(:has(.admin-nav))),
html [data-d="miembros"] > :where(:has(.admin-nav)) > :where(:has(.admin-nav)) > :where(:not(.admin-nav):not(:has(.admin-nav))) { animation: d-op .3s var(--d-tween) backwards; }

/* Filtros y orden: transition-all [D-M4 D-M5] · inactivo hover:text-dark-text (members/page.tsx:323-398, 494) */
html .mb-chip, html .mb-plan-select { transition: all .15s var(--d-ease); }
@media (hover: hover) {
html .mb-chip:not(.mb-chip--active):hover { color: var(--d-texto); background: transparent; }
}
@media (hover: hover) {
html .mb-plan-select:hover { color: var(--d-texto); }
}

/* "Limpiar" / crear: [D-M6] bg-rush-500 hover:bg-rush-600 transition-colors + sombra 0 0 12px .25 (members/page.tsx:479) */
html button.mb-create { background-color: var(--d-rush-500); background-image: none; }
@media (hover: hover) {
html button.mb-create:hover { background-color: var(--d-rush-600); }
}

/* Filas: motion.div initial {opacity 0, y 5} [D-M2] → 1,0 · delay min(i,12)*.03 (members/page.tsx:526-530)
   y usa el resorte por omisión (500/25) y opacity el tween de .3 s */
html .mb-list > .mb-card {
    animation: d-op .3s var(--d-tween) backwards, d-y5v .199s var(--d-resorte-y5) backwards;
    animation-delay: calc(var(--d-i, 12) * .03s);
}
@keyframes d-y5v { from { transform: translateY(5px); } }
html .mb-list > .mb-card:nth-child(1) { --d-i: 0; }
html .mb-list > .mb-card:nth-child(2) { --d-i: 1; }
html .mb-list > .mb-card:nth-child(3) { --d-i: 2; }
html .mb-list > .mb-card:nth-child(4) { --d-i: 3; }
html .mb-list > .mb-card:nth-child(5) { --d-i: 4; }
html .mb-list > .mb-card:nth-child(6) { --d-i: 5; }
html .mb-list > .mb-card:nth-child(7) { --d-i: 6; }
html .mb-list > .mb-card:nth-child(8) { --d-i: 7; }
html .mb-list > .mb-card:nth-child(9) { --d-i: 8; }
html .mb-list > .mb-card:nth-child(10) { --d-i: 9; }
html .mb-list > .mb-card:nth-child(11) { --d-i: 10; }
html .mb-list > .mb-card:nth-child(12) { --d-i: 11; }

/* Card glass con hover (ui/card.tsx:29,37) [D-M3]: y -2 y scale 1.01 en .2 s · transition-all duration-200 · hover:border-rush-500/30 */
html .mb-card { transition: transform .2s var(--d-tween), border-color .2s var(--d-ease), background-color .2s var(--d-ease); cursor: pointer; }
@media (hover: hover) {
html .mb-card:hover { transform: translateY(-2px) scale(1.01); border-color: var(--d-borde-rush-30); }
}
/* Nombre: MemberName subrayado punteado [D-M7] rush-500/40, hover/focus rush-400 + transition-colors; el <p> hover:underline
   (members/page.tsx:541-542 · member-profile-context.tsx:100) */
html .mb-open .mb-name__t { text-decoration: underline dotted rgba(255, 107, 0, .4); text-underline-offset: 2px; cursor: pointer;
    transition: color .15s var(--d-ease), text-decoration-color .15s var(--d-ease); }
html .mb-open:focus-visible .mb-name__t { color: var(--d-rush-400); text-decoration-color: var(--d-rush-400); }
@media (hover: hover) {
html .mb-open:hover .mb-name__t { color: var(--d-rush-400); text-decoration-color: var(--d-rush-400); }
}
html .mb-open:focus-visible { outline: none; }
@media (hover: hover) {
html .mb-open:hover .mb-name__t { text-decoration-style: solid; }
}
html .mb-chev { transition: color .15s var(--d-ease); }

/* Modal "Crear miembro" (members/page.tsx:600-700) [D-M8]: el vivo usa un telón black/70 blur-md y su propia caja */
html .mc-modal {
    background: linear-gradient(145deg, rgba(20, 20, 20, .98) 0%, rgba(12, 12, 12, .99) 100%);
    box-shadow: 0 20px 80px rgba(0, 0, 0, .7), 0 0 40px rgba(255, 107, 0, .03), inset 0 1px 0 rgba(255, 255, 255, .06);
}
html[data-tema="claro"] .mc-modal { background: var(--rr-bg-card); box-shadow: 0 20px 80px rgba(0, 0, 0, .25); }
html .mc-btn { transition: all .15s var(--d-ease), transform .15s var(--d-tween); }
@media (hover: hover) {
html .mc-btn:not(.mc-btn--primary):hover { color: var(--d-texto); background: var(--d-sup-50); }
}
/* Crear: bg-rush-500/15 border-rush-500/25 text-rush-400 hover:bg-rush-500/25 transition-all disabled:opacity-50 */
html .mc-btn--primary { background: rgba(255, 107, 0, .15); background-image: none; border: 1px solid rgba(255, 107, 0, .25); color: var(--d-rush-400); font-weight: 500; }
@media (hover: hover) {
html .mc-btn--primary:hover:not(:disabled) { background: rgba(255, 107, 0, .25); }
}
html .qv-actions .mc-btn--primary { text-decoration: none; }

/* "Cargando…" de la ventana rápida [D-M9]: el esqueleto del mini-perfil (member-mini-profile.tsx:147-166) */
html .qv-esqueleto { display: block; }
html .qv-esqueleto .d-esq-linea { height: .75rem; margin-bottom: .75rem; }

/* =========================================================================
   COACHES  ·  coaches/page.tsx
   ========================================================================= */
/* 12/10 (auditoría): el menú lateral se incluye DENTRO de este contenedor; animar el contenedor
   lo apagaba y lo corría en cada cambio de pantalla. En el vivo el menú queda fijo: se anima
   todo menos la rama del menú. */
html [data-d="coaches"] > :where(:not(.admin-nav):not(:has(.admin-nav))),
html [data-d="coaches"] > :where(:has(.admin-nav)) > :where(:not(.admin-nav):not(:has(.admin-nav))),
html [data-d="coaches"] > :where(:has(.admin-nav)) > :where(:has(.admin-nav)) > :where(:not(.admin-nav):not(:has(.admin-nav))) { animation: d-op .3s var(--d-tween) backwards; }       /* page.tsx:199 [D-C1] */
/* Tarjetas: motion.div layout initial [D-C2] {opacity 0, scale .95} → 1,1 (page.tsx:321) · escala = resorte crítico 550/30 */
html .coach-grid > .coach-card {
    animation: d-op .3s var(--d-tween) backwards, d-escala95 .104s var(--d-resorte-escala) backwards;
}
html .coach-card { transition: all .2s var(--d-ease); }                          /* Card: transition-all duration-200 [D-C3] */
html .coach-vinculo { transition: color .15s var(--d-ease); }                    /* page.tsx:358 hover:text-rush-300 transition-colors [D-C4] */
@media (hover: hover) {
html .coach-vinculo:hover { color: var(--d-rush-300); text-decoration: none; }
}
html .coach-btn { transition: color .15s var(--d-ease), background-color .15s var(--d-ease), border-color .15s var(--d-ease); }
/* Editar: hover:bg-dark-surface/50 hover:text-dark-text (page.tsx:369) [D-C5] */
@media (hover: hover) {
html .coach-btn:not(.coach-btn--danger):not(.coach-btn--ok):not(.coach-btn--borrar):hover { background: var(--d-sup-50); color: var(--d-texto); }
}
/* Desactivar: hover:bg-red-500/10 [D-C6] · Activar: hover:bg-emerald-500/10 (page.tsx:376) */
@media (hover: hover) {
html .coach-btn--danger:hover { background: rgba(239, 68, 68, .1); }
}
@media (hover: hover) {
html .coach-btn--ok:hover { background: rgba(16, 185, 129, .1); }
}
/* Foto del formulario: group-hover [D-C9] del borde y de la cámara (page.tsx:241-251) */
html .zona-archivo--circulo { transition: border-color .15s var(--d-ease), color .15s var(--d-ease); }
@media (hover: hover) {
html .zona-archivo--circulo:hover { border-color: rgba(255, 107, 0, .4); color: var(--d-rush-400); }
}

/* =========================================================================
   PROGRAMACIÓN  ·  master-schedule/page.tsx + create/edit-class-modal + month-calendar-picker
   ========================================================================= */
/* Tarjeta de clase (PremiumClassCard 173-186) [D-P1 D-P2]: entra con variants {opacity 0, y 16} → resorte rebote .15 / .45 s, delay i*.05;
   hover y -2 (.2 s) + borde rush-500/25 + sombra 0 6px 24px .3 (transition-shadow duration-300); tap scale .98 */
html .sc-class-list > .sc-class-card {
    animation: d-op .3s var(--d-tween) backwards, d-y16 .45s var(--d-resorte-dur) backwards;
    animation-delay: calc(var(--d-i, 0) * .05s);
}
@keyframes d-y16 { from { transform: translateY(16px); } }
html .sc-class-list > .sc-class-card:nth-child(1) { --d-i: 0; }
html .sc-class-list > .sc-class-card:nth-child(2) { --d-i: 1; }
html .sc-class-list > .sc-class-card:nth-child(3) { --d-i: 2; }
html .sc-class-list > .sc-class-card:nth-child(4) { --d-i: 3; }
html .sc-class-list > .sc-class-card:nth-child(5) { --d-i: 4; }
html .sc-class-list > .sc-class-card:nth-child(6) { --d-i: 5; }
html .sc-class-list > .sc-class-card:nth-child(7) { --d-i: 6; }
html .sc-class-list > .sc-class-card:nth-child(8) { --d-i: 7; }
html .sc-class-list > .sc-class-card:nth-child(9) { --d-i: 8; }
html .sc-class-list > .sc-class-card:nth-child(10) { --d-i: 9; }
html .sc-class-list > .sc-class-card:nth-child(11) { --d-i: 10; }
html .sc-class-list > .sc-class-card:nth-child(12) { --d-i: 11; }
html .sc-class-list > .sc-class-card:nth-child(13) { --d-i: 12; }
html .sc-class-list > .sc-class-card:nth-child(14) { --d-i: 13; }

html .sc-class-card {
    transition: transform .2s var(--d-tween), box-shadow .3s var(--d-ease), border-color .15s var(--d-ease), background-color .2s ease;
    cursor: pointer;
}
@media (hover: hover) {
html .sc-class-card:hover { transform: translateY(-2px); border-color: rgba(255, 107, 0, .25); box-shadow: 0 6px 24px rgba(0, 0, 0, .3); background: var(--rr-glass-bg); }
}
html .sc-class-card:active { transform: scale(.98); }
/* Clase especial (page.tsx:182-184,197-199): borde ámbar, resplandor 0 0 25px → 0 0 35px al apuntar y una capa que aparece con
   group-hover:opacity-100 duration-500 transition-opacity [D-P13] */
html .sc-class-card:has(.sc-especial) { position: relative; border-color: rgba(245, 158, 11, .3); box-shadow: 0 0 25px rgba(245, 158, 11, .1); }
@media (hover: hover) {
html .sc-class-card:has(.sc-especial):hover { border-color: rgba(245, 158, 11, .3); box-shadow: 0 0 35px rgba(245, 158, 11, .18); }
}
html .sc-class-card:has(.sc-especial)::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; opacity: 0;
    background: linear-gradient(90deg, rgba(245, 158, 11, .02), transparent, rgba(245, 158, 11, .02)); transition: opacity .5s var(--d-ease); }
@media (hover: hover) {
html .sc-class-card:has(.sc-especial):hover::after { opacity: 1; }
}
/* La foto del coach crece con [D-P3] group-hover:scale-105 duration-500 transition-transform (page.tsx:214) */
html .sc-class-card__photo img { transition: transform .5s var(--d-ease); }
@media (hover: hover) {
html .sc-class-card:hover .sc-class-card__photo img { transform: scale(1.05); }
}
html .sc-class-card__photo { overflow: hidden; }
/* "+ Crear" de la columna vacía [D-P5]: transition-colors, de rush-400/40 a rush-400 (page.tsx:453) */
html .sc-col__crear { transition: color .15s var(--d-ease); text-decoration: none; }
@media (hover: hover) {
html .sc-col__crear:hover { text-decoration: none; color: var(--d-rush-400); }
}
/* Calendario del mes (month-calendar-picker.tsx [D-P6]:277,225,241,201): transition-all · hover:bg-dark-surface/60 */
html .mescal__dia, html .mescal__nav { transition: all .15s var(--d-ease); cursor: pointer; }
@media (hover: hover) {
html .mescal__dia:hover,
html .mescal__nav:hover { background: var(--d-sup-60); }
}
/* Selector de fechas del modal (date-strip-picker.tsx [D-P10]:155-248): transition-all duration-200 · hover:bg-dark-text/[.06] · tap .92 */
html .sc-date-chip { transition: all .2s var(--d-ease), transform .15s var(--d-tween); }
@media (hover: hover) {
html .sc-date-chip:hover:not(.pasado):not(.on) { background: rgba(232, 232, 232, .06); }
}
@media (hover: hover) {
html[data-tema="claro"] .sc-date-chip:hover:not(.pasado):not(.on) { background: rgba(17, 24, 39, .06); }
}
html .sc-date-chip:active:not(.pasado) { transform: scale(.92); }
html .sc-cal__flecha { transition: all .15s var(--d-ease); }
@media (hover: hover) {
html .sc-cal__flecha:hover:not(:disabled) { color: var(--d-texto); border-color: var(--rr-glass-border-hover); background: rgba(232, 232, 232, .06); }
}
/* Interruptores del modal: transition-all [D-P9] · hover:bg-dark-surface/50 (create-class-modal.tsx:606,892,1049,1115,1227) */
html .sc-toggle { transition: all .15s var(--d-ease); }
@media (hover: hover) {
html .sc-toggle:not(.on):hover { background: var(--d-sup-50); }
}
/* Cancelar clase / Eliminar (edit-class-modal.tsx:1113 · 961) [sin contraparte en pantalla: ver docs] */
/* «Cancelar Clase» / «Eliminar» es el Button `danger` (ui/button.tsx:20-21): hover:bg-red-500/[0.15] hover:border-red-500/30 [D-P14] */
@media (hover: hover) {
html .sc-btn-borrar:hover { background: rgba(239, 68, 68, .15); border-color: rgba(239, 68, 68, .3); }
}
@media (hover: hover) {
html .sc-modal__submit:hover { transform: scale(1.02); }
}

/* =========================================================================
   PANEL  ·  dashboard/page.tsx
   ========================================================================= */
/* container + item (page.tsx:114-129) [D-D1]: items {opacity 0, y 15} → 1,0 con resorte 300/24, uno cada .06 s */
/* 12/10 (auditoría): el menú lateral se incluye DENTRO de este contenedor; animar el contenedor
   lo apagaba y lo corría en cada cambio de pantalla. En el vivo el menú queda fijo: se anima
   todo menos la rama del menú. */
html [data-d="panel"] > :where(:not(.admin-nav):not(:has(.admin-nav))),
html [data-d="panel"] > :where(:has(.admin-nav)) > :where(:not(.admin-nav):not(:has(.admin-nav))),
html [data-d="panel"] > :where(:has(.admin-nav)) > :where(:has(.admin-nav)) > :where(:not(.admin-nav):not(:has(.admin-nav))) {
    animation: d-op .378s var(--d-resorte-item-op) backwards, d-y15 .42s var(--d-resorte-item) backwards;
    animation-delay: calc(var(--d-i, 0) * .06s);
}
/* Finanzas: items de finances/page.tsx:42-49 (staggerChildren .05) [D-F1] */
html [data-d="finanzas"] > :where(:not(.admin-nav):not(:has(.admin-nav))),
html [data-d="finanzas"] > :where(:has(.admin-nav)) > :where(:not(.admin-nav):not(:has(.admin-nav))),
html [data-d="finanzas"] > :where(:has(.admin-nav)) > :where(:has(.admin-nav)) > :where(:not(.admin-nav):not(:has(.admin-nav))) {
    animation: d-op .378s var(--d-resorte-item-op) backwards, d-y15 .42s var(--d-resorte-item) backwards;
    animation-delay: calc(var(--d-i, 0) * .05s);
}
html [data-d="panel"] > :nth-child(1) { --d-i: 0; }
html [data-d="panel"] > :nth-child(2) { --d-i: 1; }
html [data-d="panel"] > :nth-child(3) { --d-i: 2; }
html [data-d="panel"] > :nth-child(4) { --d-i: 3; }
html [data-d="panel"] > :nth-child(5) { --d-i: 4; }
html [data-d="panel"] > :nth-child(6) { --d-i: 5; }
html [data-d="panel"] > :nth-child(7) { --d-i: 6; }
html [data-d="panel"] > :nth-child(8) { --d-i: 7; }
html [data-d="panel"] > :nth-child(9) { --d-i: 8; }
html [data-d="panel"] > :nth-child(10) { --d-i: 9; }
html [data-d="panel"] > :nth-child(11) { --d-i: 10; }
html [data-d="panel"] > :nth-child(12) { --d-i: 11; }
html [data-d="panel"] > :nth-child(13) { --d-i: 12; }
html [data-d="panel"] > :nth-child(14) { --d-i: 13; }
html [data-d="panel"] > :nth-child(15) { --d-i: 14; }
html [data-d="panel"] > :nth-child(16) { --d-i: 15; }
html [data-d="finanzas"] > :nth-child(1) { --d-i: 0; }
html [data-d="finanzas"] > :nth-child(2) { --d-i: 1; }
html [data-d="finanzas"] > :nth-child(3) { --d-i: 2; }
html [data-d="finanzas"] > :nth-child(4) { --d-i: 3; }
html [data-d="finanzas"] > :nth-child(5) { --d-i: 4; }
html [data-d="finanzas"] > :nth-child(6) { --d-i: 5; }
html [data-d="finanzas"] > :nth-child(7) { --d-i: 6; }
html [data-d="finanzas"] > :nth-child(8) { --d-i: 7; }
html [data-d="finanzas"] > :nth-child(9) { --d-i: 8; }
html [data-d="finanzas"] > :nth-child(10) { --d-i: 9; }
html [data-d="finanzas"] > :nth-child(11) { --d-i: 10; }
html [data-d="finanzas"] > :nth-child(12) { --d-i: 11; }
html [data-d="finanzas"] > :nth-child(13) { --d-i: 12; }
html [data-d="finanzas"] > :nth-child(14) { --d-i: 13; }
html [data-d="finanzas"] > :nth-child(15) { --d-i: 14; }
html [data-d="finanzas"] > :nth-child(16) { --d-i: 15; }

/* KPIs con detalle: cursor-pointer [D-D2] · hover:border-rush-500/30 · transition-colors (page.tsx:1529) */
html .dia-card--boton { transition: color .15s var(--d-ease), background-color .15s var(--d-ease), border-color .15s var(--d-ease); cursor: pointer; }
@media (hover: hover) {
html .dia-card--boton:hover { border-color: var(--d-borde-rush-30); background: var(--rr-glass-bg); }
}
/* Selector de período (DateRangePicker 572-660) [D-D3]: transition-all · inactivo hover:text-dark-text */
html .periodo__pill { transition: all .15s var(--d-ease); }
@media (hover: hover) {
html .periodo__pill:not(.periodo__pill--on):hover { color: var(--d-texto); }
}
/* Rango personalizado: aparece con opacity 0 [D-D4], y -8, scale .96 en .15 s (page.tsx:611-616) */
html .periodo__rango--open { animation: d-pop-rango .15s var(--d-tween) backwards; }
html .rango-atajo { transition: all .15s var(--d-ease); }
@media (hover: hover) {
html .rango-atajo:not(.rango-atajo--on):hover { color: var(--d-texto); }
}
/* Ver ese período: bg-rush-500 hover:bg-rush-600 transition-all disabled:opacity-40 disabled:cursor-not-allowed (page.tsx:658) */
html .periodo__aplicar { background-color: var(--d-rush-500); background-image: none; }
@media (hover: hover) {
html .periodo__aplicar:hover:not(:disabled) { background-color: var(--d-rush-600); }
}
html .periodo__aplicar:disabled { opacity: .4; cursor: not-allowed; pointer-events: auto; }
/* Fechas del rango: focus:border-rush-500/40 focus:ring-1 rush-500/20 (page.tsx:636) */
html .rango-campo__caja { transition: all .15s var(--d-ease); }
html .rango-campo__caja:focus-within { border-color: var(--d-borde-rush-40); box-shadow: 0 0 0 1px rgba(255, 107, 0, .2); }
/* Actividad (ActivityCard 299-360) [D-D5]: cursor-pointer · hover:bg-dark-surface/50 · transition-colors; chevron duration-200;
   detalle height 0→auto + opacity en .2 s; el nombre hover:underline */
html .act-fila { transition: color .15s var(--d-ease), background-color .15s var(--d-ease); cursor: pointer; }
@media (hover: hover) {
html .act-fila:hover { background: var(--d-sup-50); }
}
html .act-chev { transition: transform .2s var(--d-ease); }
/* Cumpleaños (page.tsx:1798-1909) [D-D6] */
html .cumple-chip { transition: color .15s var(--d-ease), background-color .15s var(--d-ease), border-color .15s var(--d-ease); }
@media (hover: hover) {
html .cumple-chip:not(.cumple-chip--on):hover { color: var(--d-texto); }
}
html .cum-fila { transition: color .15s var(--d-ease), background-color .15s var(--d-ease), border-color .15s var(--d-ease); }
/* "Ver más": cumpleaños hover:text-pink-400 (1905) · vencimientos amber-400 (2134) · actividad rush-400 (2260) · top del mes amber-400 (2365) ·
   top histórico rush-400 (2446); todos hover:bg-dark-surface/50 transition-colors y un chevron que gira 180° (transition-transform) [D-D11] */
html .cum-mas { display: flex; align-items: center; justify-content: center; gap: .375rem; transition: color .15s var(--d-ease), background-color .15s var(--d-ease); }
@media (hover: hover) {
html .cum-mas:hover { background: var(--d-sup-50); }
}
@media (hover: hover) {
html #cumpleMas:hover { color: #F472B6; }
}
@media (hover: hover) {
html #vencMas:hover,
html .cum-mas[onclick*="topListaMes"]:hover { color: #FBBF24; }
}
@media (hover: hover) {
html #actividadMas:hover,
html .cum-mas[onclick*="topListaTodo"]:hover { color: var(--d-rush-400); }
}
html .cum-mas::after { content: ""; flex: none; width: 14px; height: 14px; background: currentColor; transition: transform .15s var(--d-ease);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") center / contain no-repeat; }
html .cum-mas[aria-expanded="true"]::after { transform: rotate(180deg); }
/* WhatsApp: hover:bg-emerald-500/20 [D-D6] hover:text-emerald-400 · transition-colors (page.tsx:2087) */
html .cum-wa { transition: color .15s var(--d-ease), background-color .15s var(--d-ease); }
@media (hover: hover) {
html .cum-wa:hover { background: rgba(16, 185, 129, .2); color: #34D399; }
}
/* Chip "¡Hoy!" del bloque de cumpleaños [D-D6] (page.tsx:1778): rounded-full · bg-pink-500/15 · border-pink-500/25 · text-[10px] font-bold ·
   text-pink-400 · animate-pulse (claro: bg-pink-50 border-pink-300 text-pink-600) */
html .cum-hoy { display: inline-flex; align-items: center; gap: .25rem; padding: .25rem .625rem; border-radius: 9999px;
    background: rgba(236, 72, 153, .15); border: 1px solid rgba(236, 72, 153, .25); color: #F472B6; font-size: 10px; font-weight: 700; }
html .cum-hoy svg { width: 12px; height: 12px; }
html[data-tema="claro"] .cum-hoy { background: #FDF2F8; border-color: #F9A8D4; color: #DB2777; }
/* Quitar de la lista / anular: [D-D7] hover:bg-dark-surface/70 hover:text-dark-text (2119) · hover:bg-red-500/15 (470) */
html .ven-x { transition: color .15s var(--d-ease), background-color .15s var(--d-ease); }
@media (hover: hover) {
html .ven-x:hover { background: rgba(12, 12, 12, .7); color: var(--d-texto); }
}
@media (hover: hover) {
html[data-tema="claro"] .ven-x:hover { background: rgba(255, 255, 255, .7); }
}
/* Vencimientos: filas hover:bg-dark-surface/30 [D-D8] transition-colors (page.tsx:2330,2411) */
html .ven-fila { transition: color .15s var(--d-ease), background-color .15s var(--d-ease); }
@media (hover: hover) {
html .ven-fila:hover { background: var(--d-sup-30); }
}
@media (hover: hover) {
html .ven-fila__nom:hover { text-decoration: underline; }
}
/* Top asistencia (page.tsx:2301-2348): botones del mes hover:bg-dark-surface/50 hover:text-amber-400 · disabled:opacity-20 ·
   filas hover:bg-dark-surface/30 transition-colors · nombre hover:underline [D-D12] */
html .top-meses__ir { transition: color .15s var(--d-ease), background-color .15s var(--d-ease); }
@media (hover: hover) {
html .top-meses__ir:hover { background: var(--d-sup-50); color: #FBBF24; }
}
html .top-meses__ir[aria-disabled="true"] { opacity: .2; pointer-events: none; }
html .top-fila { transition: color .15s var(--d-ease), background-color .15s var(--d-ease); }
@media (hover: hover) {
html .top-fila:hover { background: var(--d-sup-30); }
}
@media (hover: hover) {
html .top-nom:hover { text-decoration: underline; cursor: pointer; }
}
/* Detalle del KPI (page.tsx:1554-1580) [D-D10]: telón black/60 blur-sm opacity; caja opacity 0, scale .95 */
html .kpi-vent:not([hidden]) { -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); animation: d-op .3s var(--d-tween) backwards; }
html .kpi-vent:not([hidden]) .kpi-vent__caja { animation: d-op .3s var(--d-tween) backwards, d-escala95 .104s var(--d-resorte-escala) backwards; }
html .kpi-fila { transition: color .15s var(--d-ease), background-color .15s var(--d-ease); }
@media (hover: hover) {
html .kpi-fila:hover { background: var(--d-sup-30); }
}
/* Barra de ingresos: width 0 → % [D-D9] con resorte 50/15 y retraso .5 s (page.tsx:1955) */
html .ing-barra { border-radius: 9999px; }
html .ing-barra i { border-radius: 9999px; background: linear-gradient(90deg, var(--d-rush-600), var(--d-rush-400)); animation: d-barra 1.14s var(--d-resorte-barra) .5s backwards; }

/* =========================================================================
   FINANZAS  ·  finances/page.tsx
   ========================================================================= */
/* Períodos: transition-all · hover:text-dark-text (page.tsx:363-384) [D-F2] */
html .fin-pbtn { transition: all .15s var(--d-ease); }
@media (hover: hover) {
html .fin-pbtn:not(.active):hover { color: var(--d-texto); }
}
/* Panel "Personalizado": height 0→auto [D-F10] + opacity (page.tsx:400,417) lo hace d.js. Aplicar (page.tsx:424): bg-rush-500
   hover:bg-rush-600 transition-all disabled:cursor-not-allowed disabled:opacity-40 [D-F13] */
html .fin-filtrar, html .fin-custom button { background-color: var(--d-rush-500); }
@media (hover: hover) {
html .fin-filtrar:hover:not(:disabled),
html .fin-custom button:hover:not(:disabled) { background-color: var(--d-rush-600); }
}
html .fin-custom button { transition: all .15s var(--d-ease); }
html .fin-custom button:disabled { opacity: .4; cursor: not-allowed; }
/* Cabecera de transacciones (page.tsx:555): todo el encabezado es un botón · hover:bg-dark-surface/20 transition-colors [D-F14] */
html #transacciones > .fin-card-head { cursor: pointer; transition: color .15s var(--d-ease), background-color .15s var(--d-ease); }
@media (hover: hover) {
html #transacciones > .fin-card-head:hover { background: rgba(12, 12, 12, .2); }
}
@media (hover: hover) {
html[data-tema="claro"] #transacciones > .fin-card-head:hover { background: rgba(255, 255, 255, .2); }
}
/* Ícono del título: drop-shadow(0 0 8px rgba(255,107,0,.2)) (page.tsx:349) [D-F15] */
html .fin-tico { filter: drop-shadow(0 0 8px rgba(255, 107, 0, .2)); }
/* KPI-píldora (PillKPI 1073) [D-F3]: hover:bg-dark-surface hover:border-rush-500/40 cursor-pointer transition-colors */
html a.fin-chip { transition: color .15s var(--d-ease), background-color .15s var(--d-ease), border-color .15s var(--d-ease); cursor: pointer; }
@media (hover: hover) {
html a.fin-chip:hover { background: var(--d-sup); border-color: var(--d-borde-rush-40); }
}
/* Cabecera de transacciones / CSV (555,569) [D-F4 D-F7 D-F6]: transition-colors · hover:text-dark-text */
html .fin-csv, html .fin-excel, html .fin-toggle, html .fin-tab, html .fin-limpiar, html .fin-mas a {
    transition: color .15s var(--d-ease), background-color .15s var(--d-ease), border-color .15s var(--d-ease);
}
@media (hover: hover) {
html .fin-csv:hover { color: var(--d-texto); }
}
html .fin-toggle svg { transition: transform .2s var(--d-ease); }
@media (hover: hover) {
html .fin-tab:not(.active):hover { color: var(--d-texto); }
}
@media (hover: hover) {
html .fin-mas a:first-child:hover { color: var(--d-rush-300); }
}   /* "cargar más" (page.tsx:719) */
@media (hover: hover) {
html .fin-mas a:last-child:hover { color: var(--d-texto); }
}        /* "ver todas" (page.tsx:723) [D-F16] */
/* Descargas (ReportExportButton 46 [D-F5] · FullHistoryExportButton 1044): transition-all · hover:bg-rush-500/20 · hover:border-rush-500/40 hover:text-rush-400 */
html .fin-excel { transition: all .15s var(--d-ease); }
@media (hover: hover) {
html .fin-excel:not(.fin-excel--suave):hover { background: rgba(255, 107, 0, .2); }
}
@media (hover: hover) {
html .fin-excel--suave:hover { border-color: var(--d-borde-rush-40); color: var(--d-rush-400); }
}
/* Filas de tablas: hover:bg-dark-surface/30 transition-colors (page.tsx:633,805) [D-F8] */
html .fin-table tbody tr, html .fin-memtable tbody tr { transition: color .15s var(--d-ease), background-color .15s var(--d-ease); }
@media (hover: hover) {
html .fin-table tbody tr:hover td,
html .fin-memtable tbody tr:hover td { background: var(--d-sup-30); }
}
/* Nombre del cliente: hover:underline cursor-pointer (page.tsx:642) · plan: hover:decoration-rush-400 hover:text-rush-400 (812) */
@media (hover: hover) {
html .fin-table td a:hover { text-decoration: underline; }
}
/* "Ver quiénes compraron" (page.tsx:812) [D-F11]: font-semibold · subrayado punteado decoration-dark-border offset 4 · transition-colors ·
   hover:text-rush-400 hover:decoration-rush-400. El vivo no resalta la celda con fondo ni cambia el peso al apuntar. */
html .fin-cell { font-weight: 600; text-decoration: underline dotted var(--d-borde); text-underline-offset: 4px;
    transition: color .15s var(--d-ease), text-decoration-color .15s var(--d-ease); }
@media (hover: hover) {
html .fin-cell:hover { background: transparent; color: var(--d-rush-400); font-weight: 600; text-decoration-color: var(--d-rush-400); }
}
/* Barras: meta mensual width 0 [D-F9] → % (page.tsx:485) */
html .fin-goal-fill { animation: d-barra 1s var(--d-resorte-barra-fin) backwards; }

/* Alturas animadas por d.js (panel Personalizado, detalle de actividad, tabla de transacciones) */
.d-abriendo { overflow: hidden; }

/* El movimiento reducido apaga todo lo de este archivo (INFORME-0: mismo criterio que el menú) */
@media (prefers-reduced-motion: reduce) {
    html [data-d], html [data-d] > *, html .mb-list > .mb-card, html .coach-grid > .coach-card,
    html .sc-class-list > .sc-class-card, html .co-modal-bg.show, html .sc-modal-bg.show, html .modal-overlay.active,
    html .mc-overlay.active, html .qv-overlay.active, html .co-modal-bg.show .co-modal, html .sc-modal-bg.show .sc-modal,
    html .modal-overlay.active .modal-box, html .mc-overlay.active .mc-modal, html .qv-overlay.active .qv-modal,
    html .kpi-vent:not([hidden]), html .kpi-vent:not([hidden]) .kpi-vent__caja, html .periodo__rango--open,
    html .ing-barra i, html .fin-goal-fill, html .d-menu {
        animation: none !important;
    }
    html .d-esqueleto, html .d-pulso, html .d-esq-linea, html .d-esq-caja, html .d-esq-redondo,
    html .d-pulso { animation: none !important; }
    html .d-giro, html .d-ocupado::before { animation-duration: 3s !important; }
    html .btn-create, html .mb-create, html .sc-btn-new, html .mc-btn, html .btn-modal, html .co-actions-modal button,
    html .sc-modal__submit, html .periodo__aplicar, html .fin-filtrar, html .sc-btn-borrar, html .sc-confirmar__si, html .sc-confirmar__no, html .mb-card, html .sc-class-card,
    html .sc-date-chip, html .coach-card, html .sc-class-card__photo img, html .sc-class-card:has(.sc-especial)::after, html .cum-mas::after,
    html .cum-mas, html .periodo__pill, html .mb-chip {
        transition: none !important;
    }
    html .btn-create:hover, html .mb-create:hover, html .sc-btn-new:hover, html .mc-btn:hover, html .btn-modal:hover,
    html .co-actions-modal button:hover, html .sc-modal__submit:hover, html .periodo__aplicar:hover, html .fin-filtrar:hover,
    html .sc-btn-borrar:hover, html .sc-confirmar__si:hover, html .sc-confirmar__no:hover,
    html .btn-create:active, html .mb-create:active, html .sc-btn-new:active, html .mc-btn:active, html .btn-modal:active,
    html .co-actions-modal button:active, html .sc-modal__submit:active, html .periodo__aplicar:active, html .fin-filtrar:active,
    html .sc-btn-borrar:active, html .sc-confirmar__si:active, html .sc-confirmar__no:active,
    html .mb-card:hover, html .sc-class-card:hover, html .sc-class-card:active, html .sc-date-chip:active,
    html .sc-class-card:hover .sc-class-card__photo img {
        transform: none !important;
    }
}
