/* ============================================================
   Thème "Halloween" (Thriller Bark) : construit sur le modèle de Metronic, comme les thèmes Bleu et Noël.
   Palette noir et violet. Activé par data-bs-theme="halloween" sur <html>.
   Tout est limité à ce sélecteur : aucun autre thème n'est touché.
   ============================================================ */

[data-bs-theme="halloween"] {
    /* === Échelle de gris → palette navy === */
    --bs-gray-100: #06030c;
    --bs-gray-100-rgb: 6, 3, 12;
    --bs-gray-200: #0c0716;
    --bs-gray-200-rgb: 12, 7, 22;
    --bs-gray-300: #150d26;
    --bs-gray-300-rgb: 21, 13, 38;
    --bs-gray-400: #21143d;
    --bs-gray-400-rgb: 33, 20, 61;
    --bs-gray-500: #53399a;
    --bs-gray-500-rgb: 91, 61, 143;
    --bs-gray-600: #7459b8;
    --bs-gray-600-rgb: 123, 92, 176;
    --bs-gray-700: #d9cdea;
    --bs-gray-700-rgb: 217, 205, 234;
    --bs-gray-800: #ece4f7;
    --bs-gray-800-rgb: 236, 228, 247;
    --bs-gray-900: #ffffff;
    --bs-gray-900-rgb: 255, 255, 255;

    /* === Couleurs sémantiques === */
    --bs-white: #ffffff;
    --bs-light: #0c0716;
    --bs-primary: #9b6bff;
    --bs-success: #50cd89;
    --bs-info: #7239ea;
    --bs-warning: #ffc700;
    --bs-danger: #d23a3a;
    --bs-dark: #ffffff;
    --bs-secondary: #150d26;

    --bs-primary-active: #7e4de0;
    --bs-secondary-active: #21143d;
    --bs-light-active: #150d26;
    --bs-success-active: #47be7d;
    --bs-info-active: #5014d0;
    --bs-warning-active: #f1bc00;
    --bs-danger-active: #b02a2a;
    --bs-dark-active: white;

    --bs-primary-light: #0c0716;
    --bs-success-light: #1a1230;
    --bs-info-light: #2a2244;
    --bs-warning-light: #2e1f46;
    --bs-danger-light: #3a1a1d;
    --bs-dark-light: #0c0716;
    --bs-secondary-light: #06030c;
    --bs-red-light: #3a2424;

    --bs-primary-inverse: #ffffff;
    --bs-secondary-inverse: #d9cdea;
    --bs-light-inverse: #7459b8;
    --bs-success-inverse: #ffffff;
    --bs-info-inverse: #ffffff;
    --bs-warning-inverse: #ffffff;
    --bs-danger-inverse: #ffffff;
    --bs-dark-inverse: #06030c;

    --bs-white-rgb: 255, 255, 255;
    --bs-light-rgb: 12, 7, 22;
    --bs-primary-rgb: 155, 107, 255;
    --bs-success-rgb: 80, 205, 137;
    --bs-info-rgb: 114, 57, 234;
    --bs-warning-rgb: 255, 199, 0;
    --bs-danger-rgb: 210, 58, 58;
    --bs-dark-rgb: 255, 255, 255;
    --bs-secondary-rgb: 21, 13, 38;

    /* === Textes === */
    --bs-text-muted: #53399a;
    --bs-text-white: #ffffff;
    --bs-text-primary: #9b6bff;
    --bs-text-secondary: #150d26;
    --bs-text-light: #0c0716;
    --bs-text-success: #50cd89;
    --bs-text-info: #7239ea;
    --bs-text-warning: #ffc700;
    --bs-text-danger: #d23a3a;
    --bs-text-dark: #ffffff;
    --bs-text-purple: #812b9e;
    --bs-text-gold: #EFBF04;
    --bs-text-blue: #6ea8ff;
    --bs-text-orange: #d1714b;

    /* Échelle de texte recalibrée pour rester lisible sur body #0c0716.
       Les --bs-text-gray-N sont indépendantes des --bs-gray-N (backgrounds). */
    --bs-text-gray-100: #150d26;
    --bs-text-gray-200: #21143d;
    --bs-text-gray-300: #53399a;
    --bs-text-gray-400: #8a6cc0;
    --bs-text-gray-500: #b49ae0;
    --bs-text-gray-600: #d9cdea;
    --bs-text-gray-700: #e0d4f0;
    --bs-text-gray-800: #f5eefc;
    --bs-text-gray-900: #ffffff;

    /* === Bordures === */
    --bs-border-color: #0c0716;
    --bs-border-dashed-color: #150d26;

    /* === Composants génériques === */
    --bs-component-active-color: #ffffff;
    --bs-component-active-bg: #9b6bff;
    --bs-component-hover-color: #9b6bff;
    --bs-component-hover-bg: #06030c;
    --bs-component-checked-color: #ffffff;
    --bs-component-checked-bg: #9b6bff;

    /* === Ombres === */
    --bs-box-shadow-xs: 0 0.1rem 0.75rem 0.25rem rgba(0, 0, 0, 0.1);
    --bs-box-shadow-sm: 0 0.1rem 1rem 0.25rem rgba(0, 0, 0, 0.1);
    --bs-box-shadow: 0 0.5rem 1.5rem 0.5rem rgba(0, 0, 0, 0.15);
    --bs-box-shadow-lg: 0 1rem 2rem 1rem rgba(0, 0, 0, 0.2);

    /* === Inputs === */
    --bs-input-color: var(--bs-gray-700);
    --bs-input-bg: var(--bs-body-bg);
    --bs-input-solid-color: var(--bs-gray-700);
    --bs-input-solid-bg: var(--bs-gray-100);
    --bs-input-solid-bg-focus: var(--bs-gray-200);
    --bs-input-solid-placeholder-color: var(--bs-gray-500);

    /* === Tooltips, tables, dropdowns === */
    --bs-tooltip-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.25);
    --bs-card-box-shadow: none;
    --bs-table-striped-bg: rgba(6, 3, 12, 0.75);
    --bs-table-loading-message-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.4);
    --bs-dropdown-bg: #0a0514;
    --bs-dropdown-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.4);

    /* === Code === */
    --bs-code-bg: #0c0716;
    --bs-code-box-shadow: 0px 3px 9px rgba(0, 0, 0, 0.1);
    --bs-code-color: #d989ff;

    /* === Symbols, bullets === */
    --bs-symbol-label-color: #ece4f7;
    --bs-symbol-label-bg: #06030c;
    --bs-symbol-border-color: rgba(255, 255, 255, 0.5);
    --bs-bullet-bg-color: #21143d;

    /* === ScrollTop === */
    --bs-scrolltop-opacity: 0;
    --bs-scrolltop-opacity-on: 0.3;
    --bs-scrolltop-opacity-hover: 1;
    --bs-scrolltop-box-shadow: 0 0.5rem 1.5rem 0.5rem rgba(0, 0, 0, 0.1);
    --bs-scrolltop-bg-color: #9b6bff;
    --bs-scrolltop-bg-color-hover: #7e4de0;
    --bs-scrolltop-icon-color: #ffffff;
    --bs-scrolltop-icon-color-hover: #ffffff;

    /* === Drawers === */
    --bs-drawer-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.15);
    --bs-drawer-bg-color: #0a0514;
    --bs-drawer-overlay-bg-color: rgba(0, 0, 0, 0.5);

    /* === Menus / sidebar === */
    --bs-menu-dropdown-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.4);
    --bs-menu-dropdown-bg-color: #0a0514;
    --bs-menu-heading-color: #53399a;
    --bs-menu-link-color-hover: #9b6bff;
    --bs-menu-link-color-show: #9b6bff;
    --bs-menu-link-color-here: #9b6bff;
    --bs-menu-link-color-active: #9b6bff;
    --bs-menu-link-bg-color-hover: #06030c;
    --bs-menu-link-bg-color-show: #06030c;
    --bs-menu-link-bg-color-here: #06030c;
    --bs-menu-link-bg-color-active: #06030c;

    /* === Scrollbars, overlays === */
    --bs-scrollbar-color: #0c0716;
    --bs-scrollbar-hover-color: #150d26;
    --bs-overlay-bg: rgba(255, 255, 255, 0.05);
    --bs-blockui-overlay-bg: rgba(255, 255, 255, 0.05);

    /* === Rating, ribbon === */
    --bs-rating-color-default: #21143d;
    --bs-rating-color-active: #FFAD0F;
    --bs-ribbon-label-box-shadow: 0px -1px 5px 0px rgba(255, 255, 255, 0.1);
    --bs-ribbon-label-bg: #9b6bff;
    --bs-ribbon-label-border-color: #5b34b0;
    --bs-ribbon-clip-bg: #F9F9F9;

    /* === Engage button === */
    --bs-engage-btn-bg: #0c0716;
    --bs-engage-btn-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.4);
    --bs-engage-btn-border-color: #0c0716;
    --bs-engage-btn-color: #ece4f7;
    --bs-engage-btn-icon-color: #7459b8;
    --bs-engage-btn-color-active: #ece4f7;

    /* === Body (fond global de la page) === */
    --bs-body-bg: #0c0716;
    --bs-body-bg-rgb: 12, 7, 22;
    --bs-body-color: #d9cdea;
    --bs-body-color-rgb: 217, 205, 234;
    --bs-heading-color: #d8c4ff;

    /* === Optionnel : surfaces principales (cards, headers) ===
       Ajuste si tes cards apparaissent transparentes ou mal contrastées */
    --bs-card-bg: #1a0f33;
    --bs-card-border-color: #21143d;

    /* ============================================================
       Variables LAYOUT spécifiques à Metronic
       (sidebar, header, toolbar, footer, aside)
       ============================================================ */

    /* === Fond global de l'application === */
    --bs-app-bg-color: transparent;
    --bs-app-blank-bg-color: transparent;

    /* === Header (la barre du haut avec "Jeu", "Communauté") === */
    --bs-app-header-base-bg-color: #0a0514;
    --bs-app-header-base-box-shadow: none;
    --bs-app-header-minimize-bg-color: #0a0514;
    --bs-app-header-minimize-box-shadow: 0 0.1rem 1rem 0.25rem rgba(0, 0, 0, 0.1);
    --bs-app-header-light-separator-color: #0c0716;

    /* === Toolbar === */
    --bs-app-toolbar-base-bg-color: #0a0514;
    --bs-app-toolbar-base-box-shadow: none;
    --bs-app-toolbar-base-border-top: 1px dashed #150d26;

    /* === Aside (panneau latéral droit éventuel) === */
    --bs-app-aside-base-bg-color: #0a0514;

    /* === Footer === */
    --bs-app-footer-bg-color: transparent;
    --bs-app-footer-box-shadow: none;

    /* === Sidebar (la colonne de gauche avec OPRPG, avatar, menu) === */
    --bs-app-sidebar-base-toggle-btn-box-shadow: none;
    --bs-app-sidebar-base-toggle-btn-bg-color: #0c0716;
    --bs-app-sidebar-base-toggle-btn-border-color: none;
    --bs-app-sidebar-base-border-color: none;
    --bs-app-sidebar-light-bg-color: #0a0514;
    --bs-app-sidebar-light-box-shadow: none;
    --bs-app-sidebar-light-separator-color: #0c0716;
    --bs-app-sidebar-light-scrollbar-color-hover: #0c0716;
    --bs-app-sidebar-light-menu-heading-color: #53399a;
    --bs-app-sidebar-light-menu-link-bg-color-active: #21143d;
    --bs-app-sidebar-light-header-menu-link-bg-color-active: #21143d;
    --bs-app-sidebar-light-menu-link-color: #ece4f7;
    --bs-app-sidebar-light-menu-link-icon-color: #7459b8;

    /* === Force le fond du body en navy === */
    background-color: var(--bs-body-bg) !important;
}

/* ============================================================
   Règles HORS du bloc principal — sélecteurs composés classiques.
   En thème "halloween", on a un fond sombre → on cache les éléments
   destinés au fond clair (logos light, icônes light, etc.)
   et on laisse visibles ceux destinés au fond sombre.
   ============================================================ */

[data-bs-theme="halloween"] .theme-light-show {
    display: none !important;
}

[data-bs-theme="halloween"] .theme-dark-show {
    display: inline-block !important;
}

[data-bs-theme="halloween"] .app-page,
[data-bs-theme="halloween"] .app-wrapper {
    border-top: none !important;
}

/* ============================================================
   Force le fond des cards en bleu plus clair que le body.
   Nécessaire car Metronic redéfinit --bs-card-bg directement
   sur .card (style.bundle.css ligne 3806), ce qui écrase
   la valeur héritée du thème.
   ============================================================ */

[data-bs-theme="halloween"] .card {
    --bs-card-bg: #1a0f33;
    background-color: #1a0f33;
}

/* ============================================================
   Décor de Thriller Bark (par-dessus la palette) : nuit noire et violette, lune, château, brume,
   liserés violets, créneaux sous l'en-tête, coin gothique et chauve-souris sur les grandes cartes.
   ============================================================ */

[data-bs-theme="halloween"] {
    --hw-violet-1: #d8c4ff;
    --hw-violet-2: #9b6bff;
    --hw-violet-3: #5b34b0;
    --hw-coin: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><g fill='none' stroke-linecap='round'><path d='M0 0L104.0 0.0M0 0L98.3 33.9M0 0L83.1 62.6M0 0L59.7 85.2M0 0L30.4 99.5M0 0L0.0 104.0' stroke='%23d8c4ff' stroke-width='1.3' opacity='.85'/><path d='M16.0 0.0Q12.6 2.1 15.1 5.2M15.1 5.2Q11.3 6.0 12.8 9.6M12.8 9.6Q8.9 9.2 9.2 13.1M9.2 13.1Q5.6 11.5 4.7 15.3M4.7 15.3Q1.9 12.7 0.0 16.0M32.0 0.0Q25.9 4.3 30.3 10.4M30.3 10.4Q23.2 12.3 25.6 19.3M25.6 19.3Q18.2 18.9 18.4 26.2M18.4 26.2Q11.5 23.6 9.4 30.6M9.4 30.6Q3.9 26.0 0.0 32.0M49.0 0.0Q40.6 6.8 46.3 16.0M46.3 16.0Q36.3 19.3 39.1 29.5M39.1 29.5Q28.6 29.6 28.1 40.1M28.1 40.1Q18.0 37.0 14.3 46.9M14.3 46.9Q6.1 40.7 0.0 49.0M67.0 0.0Q56.8 9.5 63.3 21.8M63.3 21.8Q50.9 27.1 53.5 40.3M53.5 40.3Q40.0 41.4 38.4 54.9M38.4 54.9Q25.3 51.8 19.6 64.1M19.6 64.1Q8.5 57.0 0.0 67.0M86.0 0.0Q74.6 12.5 81.3 28.0M81.3 28.0Q66.8 35.5 68.7 51.8M68.7 51.8Q52.6 54.4 49.3 70.4M49.3 70.4Q33.2 68.0 25.1 82.2M25.1 82.2Q11.2 74.8 0.0 86.0' stroke='%23d8c4ff' stroke-width='.9' opacity='.7'/></g><g fill='%23f3eaff' opacity='.9'><circle cx='46' cy='15.6' r='1.5'/><circle cx='20.5' cy='54' r='1.3'/><circle cx='61' cy='47' r='1.2'/></g></svg>");
    --hw-lune: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 80'><defs><radialGradient id='m' cx='38%25' cy='35%25' r='70%25'><stop offset='0' stop-color='%23fffdff'/><stop offset='.6' stop-color='%23e3d6ff'/><stop offset='1' stop-color='%23b49cef'/></radialGradient></defs><circle cx='40' cy='40' r='34' fill='url(%23m)'/><circle cx='28' cy='30' r='6' fill='%239d86d8' opacity='.35'/><circle cx='50' cy='48' r='8' fill='%239d86d8' opacity='.3'/><circle cx='46' cy='24' r='3.5' fill='%239d86d8' opacity='.3'/><circle cx='30' cy='52' r='3' fill='%239d86d8' opacity='.3'/></svg>");
    --hw-chateau-tete: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 150 80'><path d='M0 80V66H14V60H22V66H34V80Z M120 80V64H132V58H140V64H150V80Z' fill='%23080410'/><g fill='%23080410'><path d='M30 80V50H40V42L45 34L50 42V50H58V26H66L70 12L74 26H80V80Z'/><path d='M80 80V38H86V30L90 22L94 30V38H102V46H108V80Z'/><path d='M58 26V20H62V26M78 26V20H82V26' /><path d='M70 12V3' stroke='%23080410' stroke-width='2'/><path d='M45 34V26' stroke='%23080410' stroke-width='2'/><path d='M90 22V14' stroke='%23080410' stroke-width='2'/></g><g fill='%23b99bff'><rect x='67' y='34' width='5' height='9' rx='2.5'/><rect x='63' y='54' width='4' height='7' rx='2'/><rect x='73' y='54' width='4' height='7' rx='2'/><rect x='42' y='54' width='4' height='7' rx='2' opacity='.8'/><rect x='88' y='46' width='4' height='7' rx='2'/><rect x='96' y='58' width='4' height='7' rx='2' opacity='.8'/></g></svg>");
    --hw-arbre: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 90 80'><g fill='none' stroke='%23080410' stroke-linecap='round' stroke-linejoin='round'><path d='M30 80C31 62 28 50 32 38C33 28 30 18 34 8' stroke-width='5'/><path d='M31 56C22 52 14 52 6 44M32 44C40 38 50 36 58 28M33 30C26 26 22 20 16 14M34 18C42 14 46 8 52 4' stroke-width='3'/><path d='M12 48L8 54M54 32L62 34M20 18L14 20M47 10L50 16' stroke-width='1.8'/></g></svg>");
    --hw-chauve: url('/images/divers/bat_transparent.png');
    --hw-chauve-tete: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 30'><path d='M30 8C27 4 24 3 20 5C15 1 8 2 1 9C7 8 9 10 11 15C14 12 17 12 19 15C22 13 24 14 25 19C27 16 29 16 30 20C31 16 33 16 35 19C36 14 38 13 41 15C43 12 46 12 49 15C51 10 53 8 59 9C52 2 45 1 40 5C36 3 33 4 30 8Z' fill='%23080410'/></svg>");
}

/* Fond : ciel noir et violet et étoiles (la lune et le château sont dans l'en-tête). Posé sur un calque fixe qui couvre toujours tout l'écran
   (un fond sur le body se coupe sur les pages longues, et `fixed` est ignoré sur iOS). */
[data-bs-theme="halloween"]::before {
    content: ''; position: fixed; inset: 0; z-index: -1; pointer-events: none;
    background:
        radial-gradient(1.4px 1.4px at 40px 60px, rgba(255, 255, 255, .8), transparent) 0 0 / 260px 200px,
        radial-gradient(1px 1px at 150px 130px, rgba(220, 200, 255, .7), transparent) 0 0 / 220px 180px,
        radial-gradient(1.2px 1.2px at 90px 20px, rgba(255, 255, 255, .6), transparent) 0 0 / 310px 240px,
        radial-gradient(ellipse at 50% 120%, rgba(110, 60, 200, 0.22), transparent 55%),
        linear-gradient(180deg, #04020a 0%, #0d0719 50%, #1a0f33 100%);
}
[data-bs-theme="halloween"] body { background: transparent !important; }

/* Brume violette qui dérive (CSS seul, devant le fond, derrière le contenu) */
[data-bs-theme="halloween"] body::before {
    content: ''; position: fixed; left: -25%; right: -25%; bottom: 0; height: 55vh; z-index: 0; pointer-events: none; opacity: .8;
    background:
        radial-gradient(ellipse 40% 45% at 18% 80%, rgba(140, 100, 235, .22), transparent 70%),
        radial-gradient(ellipse 35% 40% at 55% 90%, rgba(180, 150, 255, .16), transparent 70%),
        radial-gradient(ellipse 40% 45% at 88% 75%, rgba(120, 80, 220, .2), transparent 70%);
    animation: halloween-brume 40s ease-in-out infinite alternate;
}
@keyframes halloween-brume { from { transform: translateX(-6%); } to { transform: translateX(6%); } }
@media (prefers-reduced-motion: reduce) { [data-bs-theme="halloween"] body::before { animation: none; } }

/* Titres de cartes : violet clair avec une lueur */
[data-bs-theme="halloween"] .card-header h1, [data-bs-theme="halloween"] .card-header h2, [data-bs-theme="halloween"] .card-header h3, [data-bs-theme="halloween"] .card-header .card-label, [data-bs-theme="halloween"] .card .card-header .card-title, [data-bs-theme="halloween"] .card .card-header .card-title .card-label {
    color: var(--hw-violet-1);
    text-shadow: 0 2px 0 rgba(0, 0, 0, .6), 0 0 14px rgba(155, 107, 255, .45);
}

/* En-tête : une scène de nuit (lune, château, arbres morts, chauves-souris) */
[data-bs-theme="halloween"] #kt_app_header {
    /* Scène dans l'en-tête, de l'arrière vers l'avant : ciel violet, lueur de lune, lune, château, arbres morts aux deux bouts, chauves-souris.
       Chaque élément est placé en % / px : la scène reste cohérente de 375 à 1900 px de large. */
    background:
        var(--hw-chauve-tete) 36% 14px / 30px auto no-repeat,
        var(--hw-chauve-tete) 91% 30px / 22px auto no-repeat,
        var(--hw-arbre) left bottom / auto 100% no-repeat,
        var(--hw-arbre) right bottom / auto 100% no-repeat,
        var(--hw-chateau-tete) 67% bottom / auto 100% no-repeat,
        var(--hw-lune) 72% 50% / auto 78% no-repeat,
        radial-gradient(ellipse 22% 130% at 72% 50%, rgba(190, 150, 255, .50), transparent 70%),
        linear-gradient(180deg, #1b0f36, #0a0514) !important;
    border-bottom: 1px solid rgba(155, 107, 255, .6);
    box-shadow: 0 .4rem 1.4rem rgba(0, 0, 0, .65), 0 0 26px rgba(155, 107, 255, .14);
}

/* Menu latéral : liseré violet */
[data-bs-theme="halloween"] #kt_app_sidebar { border-right: 1px solid rgba(155, 107, 255, .5); box-shadow: 0 0 30px rgba(155, 107, 255, .1); }

/* Cartes : verre noir et violet, liseré violet ; toile d'araignée dans l'angle et chauve-souris (celle du mini-jeu de Thriller Bark) seulement sur les grandes cartes (classe deco-grande, src/lib/decorThemes.js) */
[data-bs-theme="halloween"] .card {
    position: relative;
    border: 1px solid rgba(155, 107, 255, .45);
    background: radial-gradient(ellipse at 100% 0, rgba(120, 70, 230, .20), transparent 55%), linear-gradient(160deg, rgba(26, 15, 51, .95), rgba(8, 4, 16, .97)) !important;
    box-shadow: 0 1rem 2.2rem rgba(0, 0, 0, .6), 0 0 28px rgba(155, 107, 255, .08), inset 0 1px 0 rgba(255, 255, 255, .07);
}
[data-bs-theme="halloween"] .card.deco-grande:not(.card-flush)::before {
    content: ''; position: absolute; left: 0; top: 0; width: 48px; height: 48px; z-index: 3; pointer-events: none; opacity: .95; border-top-left-radius: inherit;
    background: var(--hw-coin) center / contain no-repeat;
}
[data-bs-theme="halloween"] .card.deco-grande:not(.card-flush)::after {
    content: ''; position: absolute; right: 1.4rem; top: -.9rem; width: 46px; height: 23px; z-index: 3; pointer-events: none; transform-origin: 50% 70%;
    background: var(--hw-chauve) center / contain no-repeat; filter: drop-shadow(0 0 6px rgba(155, 107, 255, .5)); animation: halloween-chauve 1.1s ease-in-out infinite alternate;
}
@keyframes halloween-chauve { to { transform: scaleY(.8) translateY(2px); } }
@media (prefers-reduced-motion: reduce) { [data-bs-theme="halloween"] .card.deco-grande::after { animation: none; } }

/* Boutons principaux : violet en relief */
[data-bs-theme="halloween"] .btn.btn-primary {
    border: 1px solid var(--hw-violet-3); color: #fff;
    background: linear-gradient(180deg, #b595ff, #8553f0 55%, #6a3ad0);
    box-shadow: 0 .2rem 0 #3a1d82, 0 .5rem .8rem rgba(0, 0, 0, .55), 0 0 18px rgba(155, 107, 255, .35), inset 0 1px 0 rgba(255, 255, 255, .4);
}
[data-bs-theme="halloween"] .btn.btn-primary:hover, [data-bs-theme="halloween"] .btn.btn-primary:focus { filter: brightness(1.08); color: #fff; }
[data-bs-theme="halloween"] .btn.btn-primary:active { transform: translateY(2px); box-shadow: 0 .05rem 0 #3a1d82, 0 .3rem .6rem rgba(0, 0, 0, .55); }

/* Champs : fond noir, liseré violet discret */
[data-bs-theme="halloween"] .form-control, [data-bs-theme="halloween"] .form-select {
    background-color: rgba(4, 2, 9, .8); border: 1px solid rgba(155, 107, 255, .3); box-shadow: inset 0 2px 5px rgba(0, 0, 0, .65);
}
[data-bs-theme="halloween"] .form-control:focus, [data-bs-theme="halloween"] .form-select:focus { border-color: var(--hw-violet-2); }
[data-bs-theme="halloween"] .form-label { color: var(--hw-violet-1); font-weight: 700; }

/* Liens */
[data-bs-theme="halloween"] a:not(.btn):not(.menu-link):not(.nav-link) { color: var(--hw-violet-1); }
