/*
	Theme Name: building47 Canvas
	Theme URI: https://building47.com
	Description: Custom Style Sheet
	Author: building47
	Version: 2.1
	Author URI: https://building47.com
	Template: hello-elementor
*/
/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ I. DESIGN ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* ---------------------------- COLOR VARIABLES ---------------------------- */

:root {
    /* --- Primary Scale - Violet (#8B5CF6 base) --- */
    --b47-primary-50:                            #F5F0FF;
    --b47-primary-100:                           #EDE0FE;
    --b47-primary-200:                           #DBC2FD;
    --b47-primary-300:                           #C197FA;
    --b47-primary-400:                           #A370F7;
    --b47-primary-500:                           #8B5CF6;
    --b47-primary-600:                           #7340E5;
    --b47-primary-700:                           #5B2DC4;
    --b47-primary-800:                           #4422A0;
    --b47-primary-900:                           #2E1880;
    --b47-primary-950:                           #180B50;
    --b47-primary-1000:                          #0C0628;

    /* --- Secondary Scale - Amber (#F59E0B base) --- */
    --b47-secondary-50:                          #FFFBEB;
    --b47-secondary-100:                         #FEF3C7;
    --b47-secondary-200:                         #FDE68A;
    --b47-secondary-300:                         #FCD34D;
    --b47-secondary-400:                         #FBBF24;
    --b47-secondary-500:                         #F59E0B;
    --b47-secondary-600:                         #D97706;
    --b47-secondary-700:                         #B45309;
    --b47-secondary-800:                         #92400E;
    --b47-secondary-900:                         #78350F;
    --b47-secondary-950:                         #451A03;
    --b47-secondary-1000:                        #271002;

    /* --- Tertiary Scale — Teal (#14B8A6 base) --- */
    --b47-tertiary-50:                           #F0FDFA;
    --b47-tertiary-100:                          #CCFBF1;
    --b47-tertiary-200:                          #99F6E4;
    --b47-tertiary-300:                          #5EEAD4;
    --b47-tertiary-400:                          #2DD4BF;
    --b47-tertiary-500:                          #14B8A6;
    --b47-tertiary-600:                          #0D9488;
    --b47-tertiary-700:                          #0F766E;
    --b47-tertiary-800:                          #115E59;
    --b47-tertiary-900:                          #134E4A;
    --b47-tertiary-950:                          #042F2E;
    --b47-tertiary-1000:                         #021A1A;

    /* --- Neutrals Scale --- */
    --b47-white:                                 #FFFFFF;
    --b47-gray-50:                               #FAFAFA;
    --b47-gray-100:                              #F4F4F5;
    --b47-gray-200:                              #E4E4E7;
    --b47-gray-300:                              #D4D4D8;
    --b47-gray-400:                              #9F9FA9;
    --b47-gray-500:                              #71717B;
    --b47-gray-600:                              #52525C;
    --b47-gray-700:                              #3F3F47;
    --b47-gray-800:                              #27272A;
    --b47-gray-900:                              #18181B;
    --b47-gray-950:                              #09090B;
    --b47-gray-1000:                             #030303;
    --b47-black:                                 #000000;

    /* --- Others --- */
    --b47-green-light:                           #4ADE80;
    --b47-green-dark:                            #15803D;
    --b47-orange-light:                          #FB923C;
    --b47-orange-dark:                           #B45309;
    --b47-red-light:                             #F87171;
    --b47-red-dark:                              #B91C1C;
    --b47-blue-light:                            #60A5FA;
    --b47-blue-dark:                             #1D4ED8;

    /* --- Alpha --- */
    --b47-primary-alpha-min:                     rgba(139, 92, 246, 0);
    --b47-primary-alpha-05:                      rgba(139, 92, 246, 0.05);
    --b47-primary-alpha-1:                       rgba(139, 92, 246, 0.1);
    --b47-primary-alpha-15:                      rgba(139, 92, 246, 0.15);
    --b47-primary-alpha-2:                       rgba(139, 92, 246, 0.2);
    --b47-primary-alpha-3:                       rgba(139, 92, 246, 0.3);
    --b47-primary-alpha-4:                       rgba(139, 92, 246, 0.4);
    --b47-primary-alpha-5:                       rgba(139, 92, 246, 0.5);
    --b47-primary-alpha-6:                       rgba(139, 92, 246, 0.6);
    --b47-primary-alpha-7:                       rgba(139, 92, 246, 0.7);
    --b47-primary-alpha-8:                       rgba(139, 92, 246, 0.8);
    --b47-primary-alpha-9:                       rgba(139, 92, 246, 0.9);
    --b47-primary-alpha-max:                     rgba(139, 92, 246, 1);

    --b47-primary-950-alpha-1:                   rgba(24, 11, 80, 0.1);
    --b47-primary-950-alpha-2:                   rgba(24, 11, 80, 0.2);
    --b47-primary-950-alpha-3:                   rgba(24, 11, 80, 0.3);
    --b47-primary-950-alpha-4:                   rgba(24, 11, 80, 0.4);

    --b47-secondary-alpha-min:                   rgba(245, 158, 11, 0);
    --b47-secondary-alpha-05:                    rgba(245, 158, 11, 0.05);
    --b47-secondary-alpha-1:                     rgba(245, 158, 11, 0.1);
    --b47-secondary-alpha-2:                     rgba(245, 158, 11, 0.2);
    --b47-secondary-alpha-3:                     rgba(245, 158, 11, 0.3);
    --b47-secondary-alpha-4:                     rgba(245, 158, 11, 0.4);
    --b47-secondary-alpha-5:                     rgba(245, 158, 11, 0.5);
    --b47-secondary-alpha-6:                     rgba(245, 158, 11, 0.6);
    --b47-secondary-alpha-7:                     rgba(245, 158, 11, 0.7);
    --b47-secondary-alpha-8:                     rgba(245, 158, 11, 0.8);
    --b47-secondary-alpha-9:                     rgba(245, 158, 11, 0.9);
    --b47-secondary-alpha-max:                   rgba(245, 158, 11, 1);

    --b47-secondary-950-alpha-1:                 rgba(69, 26, 3, 0.1);
    --b47-secondary-950-alpha-2:                 rgba(69, 26, 3, 0.2);
    --b47-secondary-950-alpha-3:                 rgba(69, 26, 3, 0.3);
    --b47-secondary-950-alpha-4:                 rgba(69, 26, 3, 0.4);

    --b47-white-alpha-min:                       rgba(255, 255, 255, 0);
    --b47-white-alpha-05:                        rgba(255, 255, 255, 0.05);
    --b47-white-alpha-1:                         rgba(255, 255, 255, 0.1);
    --b47-white-alpha-12:                        rgba(255, 255, 255, 0.12);
    --b47-white-alpha-2:                         rgba(255, 255, 255, 0.2);
    --b47-white-alpha-3:                         rgba(255, 255, 255, 0.3);
    --b47-white-alpha-35:                        rgba(255, 255, 255, 0.35);
    --b47-white-alpha-4:                         rgba(255, 255, 255, 0.4);
    --b47-white-alpha-5:                         rgba(255, 255, 255, 0.5);
    --b47-white-alpha-6:                         rgba(255, 255, 255, 0.6);
    --b47-white-alpha-7:                         rgba(255, 255, 255, 0.7);
    --b47-white-alpha-8:                         rgba(255, 255, 255, 0.8);
    --b47-white-alpha-9:                         rgba(255, 255, 255, 0.9);
    --b47-white-alpha-max:                       rgba(255, 255, 255, 1);
 
    --b47-black-alpha-min:                       rgba(9, 9, 11, 0);
    --b47-black-alpha-03:                        rgba(9, 9, 11, 0.03);
    --b47-black-alpha-04:                        rgba(9, 9, 11, 0.04);
    --b47-black-alpha-05:                        rgba(9, 9, 11, 0.05);
    --b47-black-alpha-06:                        rgba(9, 9, 11, 0.06);
    --b47-black-alpha-08:                        rgba(9, 9, 11, 0.08);
    --b47-black-alpha-1:                         rgba(9, 9, 11, 0.1);
    --b47-black-alpha-14:                        rgba(9, 9, 11, 0.14);
    --b47-black-alpha-18:                        rgba(9, 9, 11, 0.18);
    --b47-black-alpha-2:                         rgba(9, 9, 11, 0.2);
    --b47-black-alpha-3:                         rgba(9, 9, 11, 0.3);
    --b47-black-alpha-4:                         rgba(9, 9, 11, 0.4);
    --b47-black-alpha-5:                         rgba(9, 9, 11, 0.5);
    --b47-black-alpha-6:                         rgba(9, 9, 11, 0.6);
    --b47-black-alpha-7:                         rgba(9, 9, 11, 0.7);
    --b47-black-alpha-8:                         rgba(9, 9, 11, 0.8);
    --b47-black-alpha-9:                         rgba(9, 9, 11, 0.9);
    --b47-black-alpha-max:                       rgba(9, 9, 11, 1);

/* ------------------------- THEME COLOR VARIABLES ------------------------- */

    /* --- Brand Colors --- */
    --b47-primary-color:                         var(--b47-primary-500);
    --b47-inverse-primary-color:                 var(--b47-primary-400);          /* same as base — adjust per project if needed */
    --b47-primary-color-light:                   var(--b47-primary-400);
    --b47-inverse-primary-color-light:           var(--b47-primary-300);
    --b47-primary-color-dark:                    var(--b47-primary-700);
    --b47-inverse-primary-color-dark:            var(--b47-primary-700);
    --b47-primary-color-hover:                   var(--b47-primary-400);
    --b47-inverse-primary-color-hover:           var(--b47-primary-400);
    --b47-secondary-color:                       var(--b47-secondary-500);
    --b47-inverse-secondary-color:               var(--b47-secondary-500);
    --b47-secondary-color-light:                 var(--b47-secondary-400);
    --b47-inverse-secondary-color-light:         var(--b47-secondary-400);
    --b47-secondary-color-dark:                  var(--b47-secondary-700);
    --b47-inverse-secondary-color-dark:          var(--b47-secondary-700);
    --b47-secondary-color-hover:                 var(--b47-secondary-400);
    --b47-inverse-secondary-color-hover:         var(--b47-secondary-400);
    --b47-tertiary-color:                        var(--b47-tertiary-500);
    --b47-inverse-tertiary-color:                var(--b47-tertiary-500);
    --b47-tertiary-color-light:                  var(--b47-tertiary-400);
    --b47-inverse-tertiary-color-light:          var(--b47-tertiary-400);
    --b47-tertiary-color-dark:                   var(--b47-tertiary-700);
    --b47-inverse-tertiary-color-dark:           var(--b47-tertiary-700);
    --b47-tertiary-color-hover:                  var(--b47-tertiary-400);
    --b47-inverse-tertiary-color-hover:          var(--b47-tertiary-400);

    /* --- Brand Gradients --- */
    --b47-gradient-primary-subtle:               linear-gradient(135deg, var(--b47-primary-50),  var(--b47-primary-200));
    --b47-gradient-primary:                      linear-gradient(135deg, var(--b47-primary-400), var(--b47-primary-600));
    --b47-gradient-primary-strong:               linear-gradient(135deg, var(--b47-primary-500), var(--b47-primary-900));
    --b47-gradient-primary-duo:                  linear-gradient(135deg, var(--b47-primary-500), var(--b47-secondary-500));
    --b47-gradient-primary-swoosh:               linear-gradient(135deg, var(--b47-primary-400) 0%, var(--b47-primary-600) 25%, var(--b47-secondary-400) 50%, var(--b47-primary-500) 75%, var(--b47-secondary-500) 100%);

    /* --- Secondary Gradients --- */
    --b47-gradient-secondary-subtle:             linear-gradient(135deg, var(--b47-secondary-50),  var(--b47-secondary-200));
    --b47-gradient-secondary:                    linear-gradient(135deg, var(--b47-secondary-400), var(--b47-secondary-600));
    --b47-gradient-secondary-strong:             linear-gradient(135deg, var(--b47-secondary-500), var(--b47-secondary-900));
    --b47-gradient-secondary-duo:                linear-gradient(135deg, var(--b47-secondary-500), var(--b47-primary-500));
    --b47-gradient-secondary-swoosh:             linear-gradient(135deg, var(--b47-secondary-400) 0%, var(--b47-secondary-600) 25%, var(--b47-primary-400) 50%, var(--b47-secondary-500) 75%, var(--b47-primary-500) 100%);

    /* --- Swoosh Overlay Gradients --- */
    --b47-gradient-overlay-primary-swoosh:       linear-gradient(135deg, var(--b47-primary-alpha-8) 0%, var(--b47-primary-alpha-8) 25%, var(--b47-secondary-alpha-8) 50%, var(--b47-primary-alpha-8) 75%, var(--b47-secondary-alpha-8) 100%);
    --b47-gradient-overlay-secondary-swoosh:     linear-gradient(135deg, var(--b47-secondary-alpha-8) 0%, var(--b47-secondary-alpha-8) 25%, var(--b47-primary-alpha-8) 50%, var(--b47-secondary-alpha-8) 75%, var(--b47-primary-alpha-8) 100%);

    /* --- Background Colors --- */
    --b47-white-background-color:                var(--b47-white);
    --b47-inverse-white-background-color:        var(--b47-black);
    --b47-primary-background-color:              var(--b47-gray-50);
    --b47-inverse-primary-background-color:      var(--b47-gray-1000);
    --b47-secondary-background-color:            var(--b47-gray-100);
    --b47-inverse-secondary-background-color:    var(--b47-gray-900);
    --b47-tertiary-background-color:             var(--b47-gray-200);
    --b47-inverse-tertiary-background-color:     var(--b47-gray-800);
    --b47-black-background-color:                var(--b47-black);
    --b47-inverse-black-background-color:        var(--b47-white);
    --b47-brand-primary-background-color:        var(--b47-primary-800);
    --b47-inverse-brand-primary-background-color: var(--b47-primary-700);

    /* --- Overlays --- */
    --b47-light-overlay-subtle:                  var(--b47-white-alpha-2);
    --b47-light-overlay:                         var(--b47-white-alpha-4);
    --b47-light-overlay-strong:                  var(--b47-white-alpha-6);
    --b47-light-overlay-heavy:                   var(--b47-white-alpha-8);

    --b47-dark-overlay-subtle:                   var(--b47-black-alpha-2);
    --b47-dark-overlay:                          var(--b47-black-alpha-4);
    --b47-dark-overlay-strong:                   var(--b47-black-alpha-6);
    --b47-dark-overlay-heavy:                    var(--b47-black-alpha-8);

    /* --- Gradient Overlays --- */
    --b47-gradient-overlay-light-subtle:         linear-gradient(to bottom, transparent, var(--b47-white-alpha-2));
    --b47-gradient-overlay-light:                linear-gradient(to bottom, transparent, var(--b47-white-alpha-4));
    --b47-gradient-overlay-light-strong:         linear-gradient(to bottom, transparent, var(--b47-white-alpha-6));
    --b47-gradient-overlay-light-heavy:          linear-gradient(to bottom, transparent, var(--b47-white-alpha-8));

    --b47-gradient-overlay-dark-subtle:          linear-gradient(to bottom, transparent, var(--b47-black-alpha-2));
    --b47-gradient-overlay-dark:                 linear-gradient(to bottom, transparent, var(--b47-black-alpha-4));
    --b47-gradient-overlay-dark-strong:          linear-gradient(to bottom, transparent, var(--b47-black-alpha-6));
    --b47-gradient-overlay-dark-heavy:           linear-gradient(to bottom, transparent, var(--b47-black-alpha-8));

    --b47-gradient-overlay-primary-subtle:       linear-gradient(to bottom, transparent, var(--b47-primary-alpha-2));
    --b47-gradient-overlay-primary:              linear-gradient(to bottom, transparent, var(--b47-primary-alpha-4));
    --b47-gradient-overlay-primary-strong:       linear-gradient(to bottom, transparent, var(--b47-primary-alpha-6));
    --b47-gradient-overlay-primary-heavy:        linear-gradient(to bottom, transparent, var(--b47-primary-alpha-8));
    --b47-gradient-overlay-primary-duo:          linear-gradient(135deg, var(--b47-primary-alpha-4), var(--b47-secondary-alpha-4));
    --b47-gradient-overlay-primary-duo-strong:   linear-gradient(135deg, var(--b47-primary-alpha-9), var(--b47-secondary-alpha-9));

    --b47-gradient-overlay-secondary-subtle:     linear-gradient(to bottom, transparent, var(--b47-secondary-alpha-2));
    --b47-gradient-overlay-secondary:            linear-gradient(to bottom, transparent, var(--b47-secondary-alpha-4));
    --b47-gradient-overlay-secondary-strong:     linear-gradient(to bottom, transparent, var(--b47-secondary-alpha-6));
    --b47-gradient-overlay-secondary-heavy:      linear-gradient(to bottom, transparent, var(--b47-secondary-alpha-8));
    --b47-gradient-overlay-secondary-duo:        linear-gradient(135deg, var(--b47-secondary-alpha-4), var(--b47-primary-alpha-4));
    --b47-gradient-overlay-secondary-duo-strong: linear-gradient(135deg, var(--b47-secondary-alpha-9), var(--b47-primary-alpha-9));

    /* --- Backdrops --- */
    --b47-backdrop-light-subtle:                 var(--b47-white-alpha-1);
    --b47-backdrop-light:                        var(--b47-white-alpha-2);
    --b47-backdrop-light-strong:                 var(--b47-white-alpha-3);
    --b47-backdrop-light-heavy:                  var(--b47-white-alpha-4);

    --b47-backdrop-dark-subtle:                  var(--b47-black-alpha-1);
    --b47-backdrop-dark:                         var(--b47-black-alpha-2);
    --b47-backdrop-dark-strong:                  var(--b47-black-alpha-3);
    --b47-backdrop-dark-heavy:                   var(--b47-black-alpha-4);

    --b47-backdrop-primary-light-subtle:         var(--b47-primary-alpha-1);
    --b47-backdrop-primary-light:                var(--b47-primary-alpha-2);
    --b47-backdrop-primary-light-strong:         var(--b47-primary-alpha-3);
    --b47-backdrop-primary-light-heavy:          var(--b47-primary-alpha-4);

    --b47-backdrop-primary-dark-subtle:          var(--b47-primary-950-alpha-1);
    --b47-backdrop-primary-dark:                 var(--b47-primary-950-alpha-2);
    --b47-backdrop-primary-dark-strong:          var(--b47-primary-950-alpha-3);
    --b47-backdrop-primary-dark-heavy:           var(--b47-primary-950-alpha-4);

    --b47-backdrop-secondary-light-subtle:       var(--b47-secondary-alpha-1);
    --b47-backdrop-secondary-light:              var(--b47-secondary-alpha-2);
    --b47-backdrop-secondary-light-strong:       var(--b47-secondary-alpha-3);
    --b47-backdrop-secondary-light-heavy:        var(--b47-secondary-alpha-4);

    --b47-backdrop-secondary-dark-subtle:        var(--b47-secondary-950-alpha-1);
    --b47-backdrop-secondary-dark:               var(--b47-secondary-950-alpha-2);
    --b47-backdrop-secondary-dark-strong:        var(--b47-secondary-950-alpha-3);
    --b47-backdrop-secondary-dark-heavy:         var(--b47-secondary-950-alpha-4);

    /* --- Borders --- */
    --b47-subtle-border-color:                   var(--b47-gray-100);
    --b47-inverse-subtle-border-color:           var(--b47-gray-700);
    --b47-default-border-color:                  var(--b47-gray-200);
    --b47-inverse-default-border-color:          var(--b47-gray-600);
    --b47-strong-border-color:                   var(--b47-gray-400);
    --b47-inverse-strong-border-color:           var(--b47-gray-400);

    --b47-subtle-border:                         var(--b47-border-width) solid var(--b47-subtle-border-color);
    --b47-inverse-subtle-border:                 var(--b47-border-width) solid var(--b47-inverse-subtle-border-color);
    --b47-default-border:                        var(--b47-border-width) solid var(--b47-default-border-color);
    --b47-inverse-default-border:                var(--b47-border-width) solid var(--b47-inverse-default-border-color);
    --b47-strong-border:                         var(--b47-border-width) solid var(--b47-strong-border-color);
    --b47-inverse-strong-border:                 var(--b47-border-width) solid var(--b47-inverse-strong-border-color);
    --b47-white-border:                          var(--b47-border-width) solid var(--b47-white);
    --b47-black-border:                          var(--b47-border-width) solid var(--b47-black);
    --b47-primary-border:                        var(--b47-border-width) solid var(--b47-primary-color);
    --b47-secondary-border:                      var(--b47-border-width) solid var(--b47-secondary-color);
    --b47-tertiary-border:                       var(--b47-border-width) solid var(--b47-tertiary-color);
    --b47-gradient-border-primary:               linear-gradient(to bottom, var(--b47-white-alpha-12), var(--b47-black-alpha-min));
    --b47-gradient-border-inverse:               linear-gradient(to bottom, var(--b47-white-alpha-3), var(--b47-white-alpha-05));

    /* ── Inside Borders ── */
    --b47-subtle-inside-border:                  inset 0 0 0 var(--b47-border-width) var(--b47-subtle-border-color);
    --b47-inverse-subtle-inside-border:          inset 0 0 0 var(--b47-border-width) var(--b47-inverse-subtle-border-color);
    --b47-default-inside-border:                 inset 0 0 0 var(--b47-border-width) var(--b47-default-border-color);
    --b47-inverse-default-inside-border:         inset 0 0 0 var(--b47-border-width) var(--b47-inverse-default-border-color);
    --b47-strong-inside-border:                  inset 0 0 0 var(--b47-border-width) var(--b47-strong-border-color);
    --b47-inverse-strong-inside-border:          inset 0 0 0 var(--b47-border-width) var(--b47-inverse-strong-border-color);
    --b47-white-inside-border:                   inset 0 0 0 var(--b47-border-width) var(--b47-white);
    --b47-black-inside-border:                   inset 0 0 0 var(--b47-border-width) var(--b47-black);
    --b47-primary-inside-border:                 inset 0 0 0 var(--b47-border-width) var(--b47-primary-color);
    --b47-secondary-inside-border:               inset 0 0 0 var(--b47-border-width) var(--b47-secondary-color);
    --b47-tertiary-inside-border:                inset 0 0 0 var(--b47-border-width) var(--b47-tertiary-color);

    /* --- Links --- */
    --b47-primary-link-color:                    var(--b47-primary-600);
    --b47-inverse-primary-link-color:            var(--b47-primary-300);
    --b47-primary-link-hover-color:              var(--b47-primary-700);
    --b47-inverse-primary-link-hover-color:      var(--b47-primary-400);
    --b47-secondary-link-color:                  var(--b47-gray-600);
    --b47-inverse-secondary-link-color:          var(--b47-gray-300);
    --b47-secondary-link-hover-color:            var(--b47-gray-800);
    --b47-inverse-secondary-link-hover-color:    var(--b47-gray-100);

    /* --- Text Colors --- */
    --b47-heading-color:                         var(--b47-gray-950);
    --b47-inverse-heading-color:                 var(--b47-gray-50);
    --b47-primary-text-color:                    var(--b47-gray-700);
    --b47-inverse-primary-text-color:            var(--b47-gray-100);
    --b47-secondary-text-color:                  var(--b47-gray-600);
    --b47-inverse-secondary-text-color:          var(--b47-gray-300);
    --b47-tertiary-text-color:                   var(--b47-gray-400);
    --b47-inverse-tertiary-text-color:           var(--b47-gray-400);
    --b47-disabled-text-color:                   var(--b47-gray-300);
    --b47-inverse-disabled-text-color:           var(--b47-gray-600);
    --b47-muted-text-color:                      var(--b47-gray-400);
    --b47-inverse-muted-text-color:              var(--b47-gray-500);
    --b47-nav-color:                             var(--b47-heading-color);
    --b47-inverse-nav-color:                     var(--b47-inverse-heading-color);
    --b47-overline-color:                        var(--b47-gray-950);
    --b47-inverse-overline-color:                var(--b47-gray-50);
    --b47-black-text-color:                      var(--b47-black);
    --b47-inverse-black-text-color:              var(--b47-white);
    --b47-white-text-color:                      var(--b47-white);
    --b47-inverse-white-text-color:              var(--b47-black);
}

/* ----------------------------- COLOR CLASSES ----------------------------- */

/* --- Background Utilities --- */
.section                                                      { background-color: var(--b47-primary-background-color); }
.background-color-white                                       { background-color: var(--b47-white-background-color) !important; }
.background-color-primary                                     { background-color: var(--b47-primary-background-color) !important; }
.background-color-secondary                                   { background-color: var(--b47-secondary-background-color) !important; }
.background-color-tertiary                                    { background-color: var(--b47-tertiary-background-color) !important; }
.background-color-inverse                                     { background-color: var(--b47-inverse-primary-background-color) !important; }
.background-color-black                                       { background-color: var(--b47-black-background-color) !important; }

/* --- Brand Color Backgrounds --- */
.background-color-brand-primary                               { background-color: var(--b47-primary-color) !important; }
.background-color-brand-primary-dark                          { background-color: var(--b47-brand-primary-background-color) !important; }
.background-color-brand-secondary                             { background-color: var(--b47-secondary-color) !important; }

/* --- Primary Gradient Backgrounds --- */
.background-gradient-primary-subtle                           { background: var(--b47-gradient-primary-subtle) !important; }
.background-gradient-primary                                  { background: var(--b47-gradient-primary) !important; }
.background-gradient-primary-strong                           { background: var(--b47-gradient-primary-strong) !important; }
.background-gradient-primary-duo                              { background: var(--b47-gradient-primary-duo) !important; }
.background-gradient-primary-swoosh                           { background: var(--b47-gradient-primary-swoosh) !important; }

/* --- Secondary Gradient Backgrounds --- */
.background-gradient-secondary-subtle                         { background: var(--b47-gradient-secondary-subtle) !important; }
.background-gradient-secondary                                { background: var(--b47-gradient-secondary) !important; }
.background-gradient-secondary-strong                         { background: var(--b47-gradient-secondary-strong) !important; }
.background-gradient-secondary-duo                            { background: var(--b47-gradient-secondary-duo) !important; }
.background-gradient-secondary-swoosh                         { background: var(--b47-gradient-secondary-swoosh) !important; }

/* --- Hover Background Utilities --- */
[class*="hover-background-"]                                  { transition: background-color var(--b47-transition-fast); }
.hover-background-color-white:hover                           { background-color: var(--b47-white-background-color) !important; }
.hover-background-color-primary:hover                         { background-color: var(--b47-primary-background-color) !important; }
.hover-background-color-secondary:hover                       { background-color: var(--b47-secondary-background-color) !important; }
.hover-background-color-tertiary:hover                        { background-color: var(--b47-tertiary-background-color) !important; }
.hover-background-color-inverse:hover                         { background-color: var(--b47-inverse-primary-background-color) !important; }
.hover-background-color-black:hover                           { background-color: var(--b47-black-background-color) !important; }
.hover-background-color-brand-primary:hover                   { background-color: var(--b47-primary-color) !important; }
.hover-background-color-brand-primary-dark:hover              { background-color: var(--b47-brand-primary-background-color) !important; }
.hover-background-color-brand-secondary:hover                 { background-color: var(--b47-secondary-color) !important; }

/* --- Overlay Utilities --- */
.has-overlay                                                  { position: relative; }
.has-overlay > .e-con-inner                                   { position: relative; z-index: 1; }
.has-overlay::before                                          { content: ""; position: absolute; inset: 0; z-index: 0; background: var(--b47-dark-overlay); }

/* Flat light overlays */
.has-overlay.is-overlay-light-subtle::before                  { background: var(--b47-light-overlay-subtle); }
.has-overlay.is-overlay-light::before                         { background: var(--b47-light-overlay); }
.has-overlay.is-overlay-light-strong::before                  { background: var(--b47-light-overlay-strong); }
.has-overlay.is-overlay-light-heavy::before                   { background: var(--b47-light-overlay-heavy); }

/* Flat dark overlays */
.has-overlay.is-overlay-dark-subtle::before                   { background: var(--b47-dark-overlay-subtle); }
.has-overlay.is-overlay-dark::before                          { background: var(--b47-dark-overlay); }
.has-overlay.is-overlay-dark-strong::before                   { background: var(--b47-dark-overlay-strong); }
.has-overlay.is-overlay-dark-heavy::before                    { background: var(--b47-dark-overlay-heavy); }

/* Gradient light overlays */
.has-overlay.is-overlay-light-subtle-gradient::before         { background: var(--b47-gradient-overlay-light-subtle); }
.has-overlay.is-overlay-light-gradient::before                { background: var(--b47-gradient-overlay-light); }
.has-overlay.is-overlay-light-strong-gradient::before         { background: var(--b47-gradient-overlay-light-strong); }
.has-overlay.is-overlay-light-heavy-gradient::before          { background: var(--b47-gradient-overlay-light-heavy); }

/* Gradient dark overlays */
.has-overlay.is-overlay-dark-subtle-gradient::before          { background: var(--b47-gradient-overlay-dark-subtle); }
.has-overlay.is-overlay-dark-gradient::before                 { background: var(--b47-gradient-overlay-dark); }
.has-overlay.is-overlay-dark-strong-gradient::before          { background: var(--b47-gradient-overlay-dark-strong); }
.has-overlay.is-overlay-dark-heavy-gradient::before           { background: var(--b47-gradient-overlay-dark-heavy); }

/* Gradient primary overlays */
.has-overlay.is-overlay-primary-subtle-gradient::before       { background: var(--b47-gradient-overlay-primary-subtle); }
.has-overlay.is-overlay-primary-gradient::before              { background: var(--b47-gradient-overlay-primary); }
.has-overlay.is-overlay-primary-strong-gradient::before       { background: var(--b47-gradient-overlay-primary-strong); }
.has-overlay.is-overlay-primary-heavy-gradient::before        { background: var(--b47-gradient-overlay-primary-heavy); }
.has-overlay.is-overlay-primary-duo-gradient::before          { background: var(--b47-gradient-overlay-primary-duo); }
.has-overlay.is-overlay-primary-duo-strong-gradient::before   { background: var(--b47-gradient-overlay-primary-duo-strong); }
.has-overlay.is-overlay-primary-swoosh-gradient::before       { background: var(--b47-gradient-overlay-primary-swoosh); }

/* Gradient secondary overlays */
.has-overlay.is-overlay-secondary-subtle-gradient::before     { background: var(--b47-gradient-overlay-secondary-subtle); }
.has-overlay.is-overlay-secondary-gradient::before            { background: var(--b47-gradient-overlay-secondary); }
.has-overlay.is-overlay-secondary-strong-gradient::before     { background: var(--b47-gradient-overlay-secondary-strong); }
.has-overlay.is-overlay-secondary-heavy-gradient::before      { background: var(--b47-gradient-overlay-secondary-heavy); }
.has-overlay.is-overlay-secondary-duo-gradient::before        { background: var(--b47-gradient-overlay-secondary-duo); }
.has-overlay.is-overlay-secondary-duo-strong-gradient::before { background: var(--b47-gradient-overlay-secondary-duo-strong); }
.has-overlay.is-overlay-secondary-swoosh-gradient::before     { background: var(--b47-gradient-overlay-secondary-swoosh); }

/* --- Backdrop Utilities --- */
.has-backdrop                                                 { position: relative; }
.has-backdrop > .e-con-inner                                  { position: relative; z-index: 1; }
.has-backdrop::before                                         { content: ""; position: absolute; inset: 0; z-index: 0; backdrop-filter: var(--b47-blur-4); -webkit-backdrop-filter: var(--b47-blur-4); background: var(--b47-backdrop-light); }

/* Light variants */
.has-backdrop.is-backdrop-light-subtle::before                { backdrop-filter: var(--b47-blur-2);  -webkit-backdrop-filter: var(--b47-blur-2);  background: var(--b47-backdrop-light-subtle); }
.has-backdrop.is-backdrop-light::before                       { backdrop-filter: var(--b47-blur-4);  -webkit-backdrop-filter: var(--b47-blur-4);  background: var(--b47-backdrop-light); }
.has-backdrop.is-backdrop-light-strong::before                { backdrop-filter: var(--b47-blur-8);  -webkit-backdrop-filter: var(--b47-blur-8);  background: var(--b47-backdrop-light-strong); }
.has-backdrop.is-backdrop-light-heavy::before                 { backdrop-filter: var(--b47-blur-12); -webkit-backdrop-filter: var(--b47-blur-12); background: var(--b47-backdrop-light-heavy); }

/* Dark variants */
.has-backdrop.is-backdrop-dark-subtle::before                 { backdrop-filter: var(--b47-blur-2);  -webkit-backdrop-filter: var(--b47-blur-2);  background: var(--b47-backdrop-dark-subtle); }
.has-backdrop.is-backdrop-dark::before                        { backdrop-filter: var(--b47-blur-4);  -webkit-backdrop-filter: var(--b47-blur-4);  background: var(--b47-backdrop-dark); }
.has-backdrop.is-backdrop-dark-strong::before                 { backdrop-filter: var(--b47-blur-8);  -webkit-backdrop-filter: var(--b47-blur-8);  background: var(--b47-backdrop-dark-strong); }
.has-backdrop.is-backdrop-dark-heavy::before                  { backdrop-filter: var(--b47-blur-12); -webkit-backdrop-filter: var(--b47-blur-12); background: var(--b47-backdrop-dark-heavy); }

/* Primary light variants */
.has-backdrop.is-backdrop-primary-light-subtle::before        { backdrop-filter: var(--b47-blur-2);  -webkit-backdrop-filter: var(--b47-blur-2);  background: var(--b47-backdrop-primary-light-subtle); }
.has-backdrop.is-backdrop-primary-light::before               { backdrop-filter: var(--b47-blur-4);  -webkit-backdrop-filter: var(--b47-blur-4);  background: var(--b47-backdrop-primary-light); }
.has-backdrop.is-backdrop-primary-light-strong::before        { backdrop-filter: var(--b47-blur-8);  -webkit-backdrop-filter: var(--b47-blur-8);  background: var(--b47-backdrop-primary-light-strong); }
.has-backdrop.is-backdrop-primary-light-heavy::before         { backdrop-filter: var(--b47-blur-12); -webkit-backdrop-filter: var(--b47-blur-12); background: var(--b47-backdrop-primary-light-heavy); }

/* Primary dark variants */
.has-backdrop.is-backdrop-primary-dark-subtle::before         { backdrop-filter: var(--b47-blur-2);  -webkit-backdrop-filter: var(--b47-blur-2);  background: var(--b47-backdrop-primary-dark-subtle); }
.has-backdrop.is-backdrop-primary-dark::before                { backdrop-filter: var(--b47-blur-4);  -webkit-backdrop-filter: var(--b47-blur-4);  background: var(--b47-backdrop-primary-dark); }
.has-backdrop.is-backdrop-primary-dark-strong::before         { backdrop-filter: var(--b47-blur-8);  -webkit-backdrop-filter: var(--b47-blur-8);  background: var(--b47-backdrop-primary-dark-strong); }
.has-backdrop.is-backdrop-primary-dark-heavy::before          { backdrop-filter: var(--b47-blur-12); -webkit-backdrop-filter: var(--b47-blur-12); background: var(--b47-backdrop-primary-dark-heavy); }

/* Secondary light variants */
.has-backdrop.is-backdrop-secondary-light-subtle::before      { backdrop-filter: var(--b47-blur-2);  -webkit-backdrop-filter: var(--b47-blur-2);  background: var(--b47-backdrop-secondary-light-subtle); }
.has-backdrop.is-backdrop-secondary-light::before             { backdrop-filter: var(--b47-blur-4);  -webkit-backdrop-filter: var(--b47-blur-4);  background: var(--b47-backdrop-secondary-light); }
.has-backdrop.is-backdrop-secondary-light-strong::before      { backdrop-filter: var(--b47-blur-8);  -webkit-backdrop-filter: var(--b47-blur-8);  background: var(--b47-backdrop-secondary-light-strong); }
.has-backdrop.is-backdrop-secondary-light-heavy::before       { backdrop-filter: var(--b47-blur-12); -webkit-backdrop-filter: var(--b47-blur-12); background: var(--b47-backdrop-secondary-light-heavy); }

/* Secondary dark variants */
.has-backdrop.is-backdrop-secondary-dark-subtle::before       { backdrop-filter: var(--b47-blur-2);  -webkit-backdrop-filter: var(--b47-blur-2);  background: var(--b47-backdrop-secondary-dark-subtle); }
.has-backdrop.is-backdrop-secondary-dark::before              { backdrop-filter: var(--b47-blur-4);  -webkit-backdrop-filter: var(--b47-blur-4);  background: var(--b47-backdrop-secondary-dark); }
.has-backdrop.is-backdrop-secondary-dark-strong::before       { backdrop-filter: var(--b47-blur-8);  -webkit-backdrop-filter: var(--b47-blur-8);  background: var(--b47-backdrop-secondary-dark-strong); }
.has-backdrop.is-backdrop-secondary-dark-heavy::before        { backdrop-filter: var(--b47-blur-12); -webkit-backdrop-filter: var(--b47-blur-12); background: var(--b47-backdrop-secondary-dark-heavy); }

/* --- Border Radius Utilities --- */
.border-radius-none                                           { border-radius: var(--b47-radius-none) !important; }
.border-radius-xxsmall                                        { border-radius: var(--b47-radius-2) !important; }
.border-radius-xsmall                                         { border-radius: var(--b47-radius-4) !important; }
.border-radius-small                                          { border-radius: var(--b47-radius-6) !important; }
.border-radius-medium                                         { border-radius: var(--b47-radius-8) !important; }
.border-radius-large                                          { border-radius: var(--b47-radius-12) !important; }
.border-radius-xlarge                                         { border-radius: var(--b47-radius-16) !important; }
.border-radius-xxlarge                                        { border-radius: var(--b47-radius-20) !important; }
.border-radius-xxxlarge                                       { border-radius: var(--b47-radius-24) !important; }
.border-radius-huge                                           { border-radius: var(--b47-radius-32) !important; }
.border-radius-max                                            { border-radius: var(--b47-radius-max) !important; }

/* --- Border Utilities --- */
.border-subtle                                          { border: var(--b47-subtle-border) !important; }
.border-default                                         { border: var(--b47-default-border) !important; }
.border-strong                                          { border: var(--b47-strong-border) !important; }
.border-white                                           { border: var(--b47-white-border) !important; }
.border-black                                           { border: var(--b47-black-border) !important; }
.border-inverse-subtle                                  { border: var(--b47-inverse-subtle-border) !important; }
.border-inverse-default                                 { border: var(--b47-inverse-default-border) !important; }
.border-inverse-strong                                  { border: var(--b47-inverse-strong-border) !important; }
.border-primary                                         { border: var(--b47-primary-border) !important; }
.border-secondary                                       { border: var(--b47-secondary-border) !important; }
.border-tertiary                                        { border: var(--b47-tertiary-border) !important; }

/* --- Inside Border Utilities --- */
.inside-border-subtle                                   { box-shadow: var(--b47-subtle-inside-border) !important; }
.inside-border-default                                  { box-shadow: var(--b47-default-inside-border) !important; }
.inside-border-strong                                   { box-shadow: var(--b47-strong-inside-border) !important; }
.inside-border-white                                    { box-shadow: var(--b47-white-inside-border) !important; }
.inside-border-black                                    { box-shadow: var(--b47-black-inside-border) !important; }
.inside-border-inverse-subtle                           { box-shadow: var(--b47-inverse-subtle-inside-border) !important; }
.inside-border-inverse-default                          { box-shadow: var(--b47-inverse-default-inside-border) !important; }
.inside-border-inverse-strong                           { box-shadow: var(--b47-inverse-strong-inside-border) !important; }
.inside-border-primary                                  { box-shadow: var(--b47-primary-inside-border) !important; }
.inside-border-secondary                                { box-shadow: var(--b47-secondary-inside-border) !important; }
.inside-border-tertiary                                 { box-shadow: var(--b47-tertiary-inside-border) !important; }

/* --- Divider Color Utilities --- */
.elementor-divider-separator                                                      { border-color: var(--b47-default-border-color) !important; }
.divider-color-subtle .elementor-divider-separator                                { border-color: var(--b47-subtle-border-color) !important; }
.divider-color-strong .elementor-divider-separator                                { border-color: var(--b47-strong-border-color) !important; }
.divider-color-brand-primary .elementor-divider-separator                         { border-color: var(--b47-primary-color) !important; }
.divider-color-brand-secondary .elementor-divider-separator                       { border-color: var(--b47-secondary-color) !important; }
.divider-color-brand-tertiary .elementor-divider-separator                        { border-color: var(--b47-tertiary-color) !important; }
.divider-color-white .elementor-divider-separator                                 { border-color: var(--b47-white) !important; }
.divider-color-black .elementor-divider-separator                                 { border-color: var(--b47-black) !important; }

/* --- Divider Hover Utilities --- */
[class*="divider-hover-color-"] .elementor-divider-separator                      { transition: border-color var(--b47-transition-fast); }
.divider-hover-color-subtle:hover .elementor-divider-separator                    { border-color: var(--b47-subtle-border-color) !important; }
.divider-hover-color-strong:hover .elementor-divider-separator                    { border-color: var(--b47-strong-border-color) !important; }
.divider-hover-color-brand-primary:hover .elementor-divider-separator             { border-color: var(--b47-primary-color) !important; }
.divider-hover-color-brand-secondary:hover .elementor-divider-separator           { border-color: var(--b47-secondary-color) !important; }
.divider-hover-color-brand-tertiary:hover .elementor-divider-separator            { border-color: var(--b47-tertiary-color) !important; }
.divider-hover-color-white:hover .elementor-divider-separator                     { border-color: var(--b47-white) !important; }
.divider-hover-color-black:hover .elementor-divider-separator                     { border-color: var(--b47-black) !important; }

/* --- Link Utilities --- */
.link-color-primary a, a.link-color-primary,
.link-color-primary .elementor-widget-text-editor span,
.link-color-primary .elementor-widget-heading span,
.link-color-primary .elementor-widget-theme-post-content span,
span.link-color-primary                                                           { color: var(--b47-primary-link-color) !important; }
.link-color-primary a:hover:not(.elementor-button)                                { color: var(--b47-primary-link-hover-color) !important; }

.link-color-secondary a, a.link-color-secondary,
.link-color-secondary .elementor-widget-text-editor span,
.link-color-secondary .elementor-widget-heading span,
.link-color-secondary .elementor-widget-theme-post-content span,
span.link-color-secondary                                                         { color: var(--b47-secondary-link-color) !important; }
.link-color-secondary a:hover:not(.elementor-button)                              { color: var(--b47-secondary-link-hover-color) !important; }

/* --- Text & Icon Utilities --- */
body                                                                              { color: var(--b47-primary-text-color); }
.elementor-icon svg                                                               { fill: var(--b47-primary-text-color); }

.text-color-white .elementor-heading-title, .elementor-heading-title.text-color-white,
.text-color-white p, p.text-color-white,
.text-color-white .elementor-widget-text-editor span,
.text-color-white .elementor-widget-heading span,
.text-color-white .elementor-widget-theme-post-content span,
span.text-color-white,
.text-color-white .elementor-icon i                                               { color: var(--b47-white-text-color) !important; }
.text-color-white .elementor-icon svg                                             { fill: var(--b47-white-text-color) !important; }

.text-color-black .elementor-heading-title, .elementor-heading-title.text-color-black,
.text-color-black p, p.text-color-black,
.text-color-black .elementor-widget-text-editor span,
.text-color-black .elementor-widget-heading span,
.text-color-black .elementor-widget-theme-post-content span,
span.text-color-black,
.text-color-black .elementor-icon i                                               { color: var(--b47-black-text-color) !important; }
.text-color-black .elementor-icon svg                                             { fill: var(--b47-black-text-color) !important; }

.text-color-brand-primary .elementor-heading-title, .elementor-heading-title.text-color-brand-primary,
.text-color-brand-primary p, p.text-color-brand-primary,
.text-color-brand-primary .elementor-widget-text-editor span,
.text-color-brand-primary .elementor-widget-heading span,
.text-color-brand-primary .elementor-widget-theme-post-content span,
span.text-color-brand-primary,
.text-color-brand-primary .elementor-icon i                                       { color: var(--b47-primary-color) !important; }
.text-color-brand-primary .elementor-icon svg                                     { fill: var(--b47-primary-color) !important; }

.text-color-brand-secondary .elementor-heading-title, .elementor-heading-title.text-color-brand-secondary,
.text-color-brand-secondary p, p.text-color-brand-secondary,
.text-color-brand-secondary .elementor-widget-text-editor span,
.text-color-brand-secondary .elementor-widget-heading span,
.text-color-brand-secondary .elementor-widget-theme-post-content span,
span.text-color-brand-secondary,
.text-color-brand-secondary .elementor-icon i                                     { color: var(--b47-secondary-color) !important; }
.text-color-brand-secondary .elementor-icon svg                                   { fill: var(--b47-secondary-color) !important; }

.text-color-brand-tertiary .elementor-heading-title, .elementor-heading-title.text-color-brand-tertiary,
.text-color-brand-tertiary p, p.text-color-brand-tertiary,
.text-color-brand-tertiary .elementor-widget-text-editor span,
.text-color-brand-tertiary .elementor-widget-heading span,
.text-color-brand-tertiary .elementor-widget-theme-post-content span,
span.text-color-brand-tertiary,
.text-color-brand-tertiary .elementor-icon i                                      { color: var(--b47-tertiary-color) !important; }
.text-color-brand-tertiary .elementor-icon svg                                    { fill: var(--b47-tertiary-color) !important; }

.text-color-heading .elementor-heading-title, .elementor-heading-title.text-color-heading,
.text-color-heading p, p.text-color-heading,
.text-color-heading .elementor-widget-text-editor span,
.text-color-heading .elementor-widget-heading span,
.text-color-heading .elementor-widget-theme-post-content span,
span.text-color-heading,
.text-color-heading .elementor-icon i                                             { color: var(--b47-heading-color) !important; }
.text-color-heading .elementor-icon svg                                           { fill: var(--b47-heading-color) !important; }

.text-color-primary .elementor-heading-title, .elementor-heading-title.text-color-primary,
.text-color-primary p, p.text-color-primary,
.text-color-primary .elementor-widget-text-editor span,
.text-color-primary .elementor-widget-heading span,
.text-color-primary .elementor-widget-theme-post-content span,
span.text-color-primary,
.text-color-primary .elementor-icon i                                             { color: var(--b47-primary-text-color) !important; }
.text-color-primary .elementor-icon svg                                           { fill: var(--b47-primary-text-color) !important; }

.text-color-secondary .elementor-heading-title, .elementor-heading-title.text-color-secondary,
.text-color-secondary p, p.text-color-secondary,
.text-color-secondary .elementor-widget-text-editor span,
.text-color-secondary .elementor-widget-heading span,
.text-color-secondary .elementor-widget-theme-post-content span,
span.text-color-secondary,
.text-color-secondary .elementor-icon i                                           { color: var(--b47-secondary-text-color) !important; }
.text-color-secondary .elementor-icon svg                                         { fill: var(--b47-secondary-text-color) !important; }

.text-color-tertiary .elementor-heading-title, .elementor-heading-title.text-color-tertiary,
.text-color-tertiary p, p.text-color-tertiary,
.text-color-tertiary .elementor-widget-text-editor span,
.text-color-tertiary .elementor-widget-heading span,
.text-color-tertiary .elementor-widget-theme-post-content span,
span.text-color-tertiary,
.text-color-tertiary .elementor-icon i                                            { color: var(--b47-tertiary-text-color) !important; }
.text-color-tertiary .elementor-icon svg                                          { fill: var(--b47-tertiary-text-color) !important; }

.text-color-nav .elementor-heading-title, .elementor-heading-title.text-color-nav,
.text-color-nav p, p.text-color-nav,
.text-color-nav .elementor-widget-text-editor span,
.text-color-nav .elementor-widget-heading span,
.text-color-nav .elementor-widget-theme-post-content span,
span.text-color-nav,
.text-color-nav .elementor-icon i                                                 { color: var(--b47-nav-color) !important; }
.text-color-nav .elementor-icon svg                                               { fill: var(--b47-nav-color) !important; }

.text-color-overline .elementor-heading-title, .elementor-heading-title.text-color-overline,
.text-color-overline p, p.text-color-overline,
.text-color-overline .elementor-widget-text-editor span,
.text-color-overline .elementor-widget-heading span,
.text-color-overline .elementor-widget-theme-post-content span,
span.text-color-overline,
.text-color-overline .elementor-icon i                                            { color: var(--b47-overline-color) !important; }
.text-color-overline .elementor-icon svg                                          { fill: var(--b47-overline-color) !important; }

.text-color-muted .elementor-heading-title, .elementor-heading-title.text-color-muted,
.text-color-muted p, p.text-color-muted,
.text-color-muted .elementor-widget-text-editor span,
.text-color-muted .elementor-widget-heading span,
.text-color-muted .elementor-widget-theme-post-content span,
span.text-color-muted,
.text-color-muted .elementor-icon i                                               { color: var(--b47-muted-text-color) !important; }
.text-color-muted .elementor-icon svg                                             { fill: var(--b47-muted-text-color) !important; }

.text-color-disabled .elementor-heading-title, .elementor-heading-title.text-color-disabled,
.text-color-disabled p, p.text-color-disabled,
.text-color-disabled .elementor-widget-text-editor span,
.text-color-disabled .elementor-widget-heading span,
.text-color-disabled .elementor-widget-theme-post-content span,
span.text-color-disabled,
.text-color-disabled .elementor-icon i                                            { color: var(--b47-disabled-text-color) !important; }
.text-color-disabled .elementor-icon svg                                          { fill: var(--b47-disabled-text-color) !important; }

/* --- Hover Color Utilities — text --- */
[class*="text-hover-color-"] .elementor-heading-title,
[class*="text-hover-color-"] p,
[class*="text-hover-color-"] .elementor-widget-text-editor span,
[class*="text-hover-color-"] .elementor-widget-heading span,
[class*="text-hover-color-"] .elementor-widget-theme-post-content span            { transition: color var(--b47-transition-fast); }

.text-hover-color-brand-primary:hover .elementor-heading-title,
.text-hover-color-brand-primary:hover p,
.text-hover-color-brand-primary:hover .elementor-widget-text-editor span,
.text-hover-color-brand-primary:hover .elementor-widget-heading span,
.text-hover-color-brand-primary:hover .elementor-widget-theme-post-content span   { color: var(--b47-primary-color) !important; }

.text-hover-color-brand-secondary:hover .elementor-heading-title,
.text-hover-color-brand-secondary:hover p,
.text-hover-color-brand-secondary:hover .elementor-widget-text-editor span,
.text-hover-color-brand-secondary:hover .elementor-widget-heading span,
.text-hover-color-brand-secondary:hover .elementor-widget-theme-post-content span { color: var(--b47-secondary-color) !important; }

.text-hover-color-brand-tertiary:hover .elementor-heading-title,
.text-hover-color-brand-tertiary:hover p,
.text-hover-color-brand-tertiary:hover .elementor-widget-text-editor span,
.text-hover-color-brand-tertiary:hover .elementor-widget-heading span,
.text-hover-color-brand-tertiary:hover .elementor-widget-theme-post-content span  { color: var(--b47-tertiary-color) !important; }

.text-hover-color-muted:hover .elementor-heading-title,
.text-hover-color-muted:hover p,
.text-hover-color-muted:hover .elementor-widget-text-editor span,
.text-hover-color-muted:hover .elementor-widget-heading span,
.text-hover-color-muted:hover .elementor-widget-theme-post-content span           { color: var(--b47-muted-text-color) !important; }

.text-hover-color-inverse:hover .elementor-heading-title                          { color: var(--b47-inverse-heading-color) !important; }
.text-hover-color-inverse:hover p,
.text-hover-color-inverse:hover .elementor-widget-text-editor span,
.text-hover-color-inverse:hover .elementor-widget-heading span,
.text-hover-color-inverse:hover .elementor-widget-theme-post-content span         { color: var(--b47-inverse-primary-text-color) !important; }

.text-hover-color-white:hover .elementor-heading-title,
.text-hover-color-white:hover p,
.text-hover-color-white:hover .elementor-widget-text-editor span,
.text-hover-color-white:hover .elementor-widget-heading span,
.text-hover-color-white:hover .elementor-widget-theme-post-content span           { color: var(--b47-white-text-color) !important; }

.text-hover-color-black:hover .elementor-heading-title,
.text-hover-color-black:hover p,
.text-hover-color-black:hover .elementor-widget-text-editor span,
.text-hover-color-black:hover .elementor-widget-heading span,
.text-hover-color-black:hover .elementor-widget-theme-post-content span           { color: var(--b47-black-text-color) !important; }

/* --- Color Utilities — icons & pseudo --- */
[class*="icon-color-"] .elementor-icon svg,
[class*="icon-color-"] .elementor-icon-list-icon svg path,
[class*="icon-color-"]::before,
[class*="icon-color-"]::after                                                     { transition: fill var(--b47-transition-fast), color var(--b47-transition-fast); }

.icon-color-primary .elementor-icon svg ,
.icon-color-primary .elementor-icon-list-icon svg path                            { fill: var(--b47-primary-color) !important; }
.icon-color-primary::before,
.icon-color-primary::after                                                        { color: var(--b47-primary-color) !important; }

.icon-color-secondary .elementor-icon svg,
.icon-color-secondary .elementor-icon-list-icon svg path                          { fill: var(--b47-secondary-color) !important; }
.icon-color-secondary::before,
.icon-color-secondary::after                                                      { color: var(--b47-secondary-color) !important; }

.icon-color-tertiary .elementor-icon svg,
.icon-color-tertiary .elementor-icon-list-icon svg path                           { fill: var(--b47-tertiary-color) !important; }
.icon-color-tertiary::before,
.icon-color-tertiary::after                                                       { color: var(--b47-tertiary-color) !important; }

.icon-color-heading .elementor-icon svg,
.icon-color-heading .elementor-icon-list-icon svg path                            { fill: var(--b47-heading-color) !important; }
.icon-color-heading::before,
.icon-color-heading::after                                                        { color: var(--b47-heading-color) !important; }

.icon-text-color-primary .elementor-icon svg,
.icon-text-color-primary .elementor-icon-list-icon svg path                       { fill: var(--b47-primary-text-color) !important; }
.icon-text-color-primary::before,
.icon-text-color-primary::after                                                   { color: var(--b47-primary-text-color) !important; }

.icon-text-color-secondary .elementor-icon svg,
.icon-text-color-secondary .elementor-icon-list-icon svg path                     { fill: var(--b47-secondary-text-color) !important; }
.icon-text-color-secondary::before,
.icon-text-color-secondary::after                                                 { color: var(--b47-secondary-text-color) !important; }

.icon-text-color-tertiary .elementor-icon svg,
.icon-text-color-tertiary .elementor-icon-list-icon svg path                      { fill: var(--b47-tertiary-text-color) !important; }
.icon-text-color-tertiary::before,
.icon-text-color-tertiary::after                                                  { color: var(--b47-tertiary-text-color) !important; }

.icon-color-nav .elementor-icon svg,
.icon-color-nav .elementor-icon-list-icon svg path                                { fill: var(--b47-nav-color) !important; }
.icon-color-nav::before,
.icon-color-nav::after                                                            { color: var(--b47-nav-color) !important; }

.icon-color-overline .elementor-icon svg,
.icon-color-overline .elementor-icon-list-icon svg path                           { fill: var(--b47-overline-color) !important; }
.icon-color-overline::before,
.icon-color-overline::after                                                       { color: var(--b47-overline-color) !important; }

.icon-color-muted .elementor-icon svg,
.icon-color-muted .elementor-icon-list-icon svg path                              { fill: var(--b47-muted-text-color) !important; }
.icon-color-muted::before,
.icon-color-muted::after                                                          { color: var(--b47-muted-text-color) !important; }

.icon-color-disabled .elementor-icon svg,
.icon-color-disabled .elementor-icon-list-icon svg path                           { fill: var(--b47-disabled-text-color) !important; }
.icon-color-disabled::before,
.icon-color-disabled::after                                                       { color: var(--b47-disabled-text-color) !important; }

.icon-color-white .elementor-icon svg,
.icon-color-white .elementor-icon-list-icon svg path                              { fill: var(--b47-white-text-color) !important; }
.icon-color-white::before,
.icon-color-white::after                                                          { color: var(--b47-white-text-color) !important; }

.icon-color-black .elementor-icon svg,
.icon-color-black .elementor-icon-list-icon svg path                              { fill: var(--b47-black-text-color) !important; }
.icon-color-black::before,
.icon-color-black::after                                                          { color: var(--b47-black-text-color) !important; }

/* --- Hover Color Utilities — icons & pseudo --- */
[class*="icon-hover-color-"] .elementor-icon svg,
[class*="icon-hover-color-"] .elementor-icon-list-icon svg path,
[class*="icon-hover-color-"]::before,
[class*="icon-hover-color-"]::after                                               { transition: fill var(--b47-transition-fast), color var(--b47-transition-fast); }

.icon-hover-color-primary:hover .elementor-icon svg,
.icon-hover-color-primary:hover .elementor-icon-list-icon svg path                { fill: var(--b47-primary-color) !important; }
.icon-hover-color-primary:hover::before,
.icon-hover-color-primary:hover::after                                            { color: var(--b47-primary-color) !important; }

.icon-hover-color-secondary:hover .elementor-icon svg,
.icon-hover-color-secondary:hover .elementor-icon-list-icon svg path              { fill: var(--b47-secondary-color) !important; }
.icon-hover-color-secondary:hover::before,
.icon-hover-color-secondary:hover::after                                          { color: var(--b47-secondary-color) !important; }

.icon-hover-color-tertiary:hover .elementor-icon svg,
.icon-hover-color-tertiary:hover .elementor-icon-list-icon svg path               { fill: var(--b47-tertiary-color) !important; }
.icon-hover-color-tertiary:hover::before,
.icon-hover-color-tertiary:hover::after                                           { color: var(--b47-tertiary-color) !important; }

.icon-hover-color-heading:hover .elementor-icon svg,
.icon-hover-color-heading:hover .elementor-icon-list-icon svg path                { fill: var(--b47-heading-color) !important; }
.icon-hover-color-heading:hover::before,
.icon-hover-color-heading:hover::after                                            { color: var(--b47-heading-color) !important; }

.icon-hover-text-color-primary:hover .elementor-icon svg,
.icon-hover-text-color-primary:hover .elementor-icon-list-icon svg path           { fill: var(--b47-primary-text-color) !important; }
.icon-hover-text-color-primary:hover::before,
.icon-hover-text-color-primary:hover::after                                       { color: var(--b47-primary-text-color) !important; }

.icon-hover-text-color-secondary:hover .elementor-icon svg,
.icon-hover-text-color-secondary:hover .elementor-icon-list-icon svg path         { fill: var(--b47-secondary-text-color) !important; }
.icon-hover-text-color-secondary:hover::before,
.icon-hover-text-color-secondary:hover::after                                     { color: var(--b47-secondary-text-color) !important; }

.icon-hover-text-color-tertiary:hover .elementor-icon svg,
.icon-hover-text-color-tertiary:hover .elementor-icon-list-icon svg path          { fill: var(--b47-tertiary-text-color) !important; }
.icon-hover-text-color-tertiary:hover::before,
.icon-hover-text-color-tertiary:hover::after                                      { color: var(--b47-tertiary-text-color) !important; }

.icon-hover-color-nav:hover .elementor-icon svg,
.icon-hover-color-nav:hover .elementor-icon-list-icon svg path                    { fill: var(--b47-nav-color) !important; }
.icon-hover-color-nav:hover::before,
.icon-hover-color-nav:hover::after                                                { color: var(--b47-nav-color) !important; }

.icon-hover-color-overline:hover .elementor-icon svg,
.icon-hover-color-overline:hover .elementor-icon-list-icon svg path               { fill: var(--b47-overline-color) !important; }
.icon-hover-color-overline:hover::before,
.icon-hover-color-overline:hover::after                                           { color: var(--b47-overline-color) !important; }

.icon-hover-color-muted:hover .elementor-icon svg,
.icon-hover-color-muted:hover .elementor-icon-list-icon svg path                  { fill: var(--b47-muted-text-color) !important; }
.icon-hover-color-muted:hover::before,
.icon-hover-color-muted:hover::after                                              { color: var(--b47-muted-text-color) !important; }

.icon-hover-color-disabled:hover .elementor-icon svg,
.icon-hover-color-disabled:hover .elementor-icon-list-icon svg path               { fill: var(--b47-disabled-text-color) !important; }
.icon-hover-color-disabled:hover::before,
.icon-hover-color-disabled:hover::after                                           { color: var(--b47-disabled-text-color) !important; }

.icon-hover-color-white:hover .elementor-icon svg,
.icon-hover-color-white:hover .elementor-icon-list-icon svg path                  { fill: var(--b47-white-text-color) !important; }
.icon-hover-color-white:hover::before,
.icon-hover-color-white:hover::after                                              { color: var(--b47-white-text-color) !important; }

.icon-hover-color-black:hover .elementor-icon svg,
.icon-hover-color-black:hover .elementor-icon-list-icon svg path                  { fill: var(--b47-black-text-color) !important; }
.icon-hover-color-black:hover::before,
.icon-hover-color-black:hover::after                                              { color: var(--b47-black-text-color) !important; }

/* --- Context Color Utilities — text + icons (parent modifier) --- */
.is-color-primary .elementor-heading-title,
.is-color-primary p,
.is-color-primary .elementor-widget-text-editor span,
.is-color-primary .elementor-widget-heading span,
.is-color-primary .elementor-widget-theme-post-content span,
.is-color-primary .elementor-icon i                                               { color: var(--b47-primary-color) !important; }
.is-color-primary .elementor-icon svg,
.is-color-primary .elementor-icon-list-icon svg path                              { fill: var(--b47-primary-color) !important; }
.is-color-primary::before,
.is-color-primary::after                                                          { color: var(--b47-primary-color) !important; }

.is-color-secondary .elementor-heading-title,
.is-color-secondary p,
.is-color-secondary .elementor-widget-text-editor span,
.is-color-secondary .elementor-widget-heading span,
.is-color-secondary .elementor-widget-theme-post-content span,
.is-color-secondary .elementor-icon i                                             { color: var(--b47-secondary-color) !important; }
.is-color-secondary .elementor-icon svg,
.is-color-secondary .elementor-icon-list-icon svg path                            { fill: var(--b47-secondary-color) !important; }
.is-color-secondary::before,
.is-color-secondary::after                                                        { color: var(--b47-secondary-color) !important; }

.is-color-tertiary .elementor-heading-title,
.is-color-tertiary p,
.is-color-tertiary .elementor-widget-text-editor span,
.is-color-tertiary .elementor-widget-heading span,
.is-color-tertiary .elementor-widget-theme-post-content span,
.is-color-tertiary .elementor-icon i                                              { color: var(--b47-tertiary-color) !important; }
.is-color-tertiary .elementor-icon svg,
.is-color-tertiary .elementor-icon-list-icon svg path                             { fill: var(--b47-tertiary-color) !important; }
.is-color-tertiary::before,
.is-color-tertiary::after                                                         { color: var(--b47-tertiary-color) !important; }

.is-color-heading .elementor-heading-title,
.is-color-heading p,
.is-color-heading .elementor-widget-text-editor span,
.is-color-heading .elementor-widget-heading span,
.is-color-heading .elementor-widget-theme-post-content span,
.is-color-heading .elementor-icon i                                               { color: var(--b47-heading-color) !important; }
.is-color-heading .elementor-icon svg,
.is-color-heading .elementor-icon-list-icon svg path                              { fill: var(--b47-heading-color) !important; }
.is-color-heading::before,
.is-color-heading::after                                                          { color: var(--b47-heading-color) !important; }

.is-text-color-primary .elementor-heading-title,
.is-text-color-primary p,
.is-text-color-primary .elementor-widget-text-editor span,
.is-text-color-primary .elementor-widget-heading span,
.is-text-color-primary .elementor-widget-theme-post-content span,
.is-text-color-primary .elementor-icon i                                          { color: var(--b47-primary-text-color) !important; }
.is-text-color-primary .elementor-icon svg,
.is-text-color-primary .elementor-icon-list-icon svg path                         { fill: var(--b47-primary-text-color) !important; }
.is-text-color-primary::before,
.is-text-color-primary::after                                                     { color: var(--b47-primary-text-color) !important; }

.is-text-color-secondary .elementor-heading-title,
.is-text-color-secondary p,
.is-text-color-secondary .elementor-widget-text-editor span,
.is-text-color-secondary .elementor-widget-heading span,
.is-text-color-secondary .elementor-widget-theme-post-content span,
.is-text-color-secondary .elementor-icon i                                        { color: var(--b47-secondary-text-color) !important; }
.is-text-color-secondary .elementor-icon svg,
.is-text-color-secondary .elementor-icon-list-icon svg path                       { fill: var(--b47-secondary-text-color) !important; }
.is-text-color-secondary::before,
.is-text-color-secondary::after                                                   { color: var(--b47-secondary-text-color) !important; }

.is-text-color-tertiary .elementor-heading-title,
.is-text-color-tertiary p,
.is-text-color-tertiary .elementor-widget-text-editor span,
.is-text-color-tertiary .elementor-widget-heading span,
.is-text-color-tertiary .elementor-widget-theme-post-content span,
.is-text-color-tertiary .elementor-icon i                                         { color: var(--b47-tertiary-text-color) !important; }
.is-text-color-tertiary .elementor-icon svg,
.is-text-color-tertiary .elementor-icon-list-icon svg path                        { fill: var(--b47-tertiary-text-color) !important; }
.is-text-color-tertiary::before,
.is-text-color-tertiary::after                                                    { color: var(--b47-tertiary-text-color) !important; }

.is-color-nav .elementor-heading-title,
.is-color-nav p,
.is-color-nav .elementor-widget-text-editor span,
.is-color-nav .elementor-widget-heading span,
.is-color-nav .elementor-widget-theme-post-content span,
.is-color-nav .elementor-icon i                                                   { color: var(--b47-nav-color) !important; }
.is-color-nav .elementor-icon svg,
.is-color-nav .elementor-icon-list-icon svg path                                  { fill: var(--b47-nav-color) !important; }
.is-color-nav::before,
.is-color-nav::after                                                              { color: var(--b47-nav-color) !important; }

.is-color-overline .elementor-heading-title,
.is-color-overline p,
.is-color-overline .elementor-widget-text-editor span,
.is-color-overline .elementor-widget-heading span,
.is-color-overline .elementor-widget-theme-post-content span,
.is-color-overline .elementor-icon i                                              { color: var(--b47-overline-color) !important; }
.is-color-overline .elementor-icon svg,
.is-color-overline .elementor-icon-list-icon svg path                             { fill: var(--b47-overline-color) !important; }
.is-color-overline::before,
.is-color-overline::after                                                         { color: var(--b47-overline-color) !important; }

.is-color-muted .elementor-heading-title,
.is-color-muted p,
.is-color-muted .elementor-widget-text-editor span,
.is-color-muted .elementor-widget-heading span,
.is-color-muted .elementor-widget-theme-post-content span,
.is-color-muted .elementor-icon i                                                 { color: var(--b47-muted-text-color) !important; }
.is-color-muted .elementor-icon svg,
.is-color-muted .elementor-icon-list-icon svg path                                { fill: var(--b47-muted-text-color) !important; }
.is-color-muted::before,
.is-color-muted::after                                                            { color: var(--b47-muted-text-color) !important; }

.is-color-disabled .elementor-heading-title,
.is-color-disabled p,
.is-color-disabled .elementor-widget-text-editor span,
.is-color-disabled .elementor-widget-heading span,
.is-color-disabled .elementor-widget-theme-post-content span,
.is-color-disabled .elementor-icon i                                              { color: var(--b47-disabled-text-color) !important; }
.is-color-disabled .elementor-icon svg,
.is-color-disabled .elementor-icon-list-icon svg path                             { fill: var(--b47-disabled-text-color) !important; }
.is-color-disabled::before,
.is-color-disabled::after                                                         { color: var(--b47-disabled-text-color) !important; }

.is-color-white .elementor-heading-title,
.is-color-white p,
.is-color-white .elementor-widget-text-editor span,
.is-color-white .elementor-widget-heading span,
.is-color-white .elementor-widget-theme-post-content span,
.is-color-white .elementor-icon i                                                 { color: var(--b47-white-text-color) !important; }
.is-color-white .elementor-icon svg,
.is-color-white .elementor-icon-list-icon svg path                                { fill: var(--b47-white-text-color) !important; }
.is-color-white::before,
.is-color-white::after                                                            { color: var(--b47-white-text-color) !important; }

.is-color-black .elementor-heading-title,
.is-color-black p,
.is-color-black .elementor-widget-text-editor span,
.is-color-black .elementor-widget-heading span,
.is-color-black .elementor-widget-theme-post-content span,
.is-color-black .elementor-icon i                                                 { color: var(--b47-black-text-color) !important; }
.is-color-black .elementor-icon svg,
.is-color-black .elementor-icon-list-icon svg path                                { fill: var(--b47-black-text-color) !important; }
.is-color-black::before,
.is-color-black::after                                                            { color: var(--b47-black-text-color) !important; }

/* --- Context Hover Color Utilities — text + icons (parent modifier) --- */
[class*="is-hover-color-"] .elementor-heading-title,
[class*="is-hover-color-"] p,
[class*="is-hover-color-"] .elementor-widget-text-editor span,
[class*="is-hover-color-"] .elementor-widget-heading span,
[class*="is-hover-color-"] .elementor-widget-theme-post-content span,
[class*="is-hover-color-"] .elementor-icon svg,
[class*="is-hover-color-"] .elementor-icon-list-icon svg path,
[class*="is-hover-color-"] .elementor-icon i,
[class*="is-hover-color-"]::before,
[class*="is-hover-color-"]::after                                                 { transition: color var(--b47-transition-fast), fill var(--b47-transition-fast); }

.is-hover-color-primary:hover .elementor-heading-title,
.is-hover-color-primary:hover p,
.is-hover-color-primary:hover .elementor-widget-text-editor span,
.is-hover-color-primary:hover .elementor-widget-heading span,
.is-hover-color-primary:hover .elementor-widget-theme-post-content span,
.is-hover-color-primary:hover .elementor-icon i                                   { color: var(--b47-primary-color) !important; }
.is-hover-color-primary:hover .elementor-icon svg,
.is-hover-color-primary:hover .elementor-icon-list-icon svg path                  { fill: var(--b47-primary-color) !important; }
.is-hover-color-primary:hover::before,
.is-hover-color-primary:hover::after                                              { color: var(--b47-primary-color) !important; }

.is-hover-color-secondary:hover .elementor-heading-title,
.is-hover-color-secondary:hover p,
.is-hover-color-secondary:hover .elementor-widget-text-editor span,
.is-hover-color-secondary:hover .elementor-widget-heading span,
.is-hover-color-secondary:hover .elementor-widget-theme-post-content span,
.is-hover-color-secondary:hover .elementor-icon i                                 { color: var(--b47-secondary-color) !important; }
.is-hover-color-secondary:hover .elementor-icon svg,
.is-hover-color-secondary:hover .elementor-icon-list-icon svg path                { fill: var(--b47-secondary-color) !important; }
.is-hover-color-secondary:hover::before,
.is-hover-color-secondary:hover::after                                            { color: var(--b47-secondary-color) !important; }

.is-hover-color-tertiary:hover .elementor-heading-title,
.is-hover-color-tertiary:hover p,
.is-hover-color-tertiary:hover .elementor-widget-text-editor span,
.is-hover-color-tertiary:hover .elementor-widget-heading span,
.is-hover-color-tertiary:hover .elementor-widget-theme-post-content span,
.is-hover-color-tertiary:hover .elementor-icon i                                  { color: var(--b47-tertiary-color) !important; }
.is-hover-color-tertiary:hover .elementor-icon svg,
.is-hover-color-tertiary:hover .elementor-icon-list-icon svg path                 { fill: var(--b47-tertiary-color) !important; }
.is-hover-color-tertiary:hover::before,
.is-hover-color-tertiary:hover::after                                             { color: var(--b47-tertiary-color) !important; }

.is-hover-color-heading:hover .elementor-heading-title,
.is-hover-color-heading:hover p,
.is-hover-color-heading:hover .elementor-widget-text-editor span,
.is-hover-color-heading:hover .elementor-widget-heading span,
.is-hover-color-heading:hover .elementor-widget-theme-post-content span,
.is-hover-color-heading:hover .elementor-icon i                                   { color: var(--b47-heading-color) !important; }
.is-hover-color-heading:hover .elementor-icon svg,
.is-hover-color-heading:hover .elementor-icon-list-icon svg path                  { fill: var(--b47-heading-color) !important; }
.is-hover-color-heading:hover::before,
.is-hover-color-heading:hover::after                                              { color: var(--b47-heading-color) !important; }

.is-hover-text-color-primary:hover .elementor-heading-title,
.is-hover-text-color-primary:hover p,
.is-hover-text-color-primary:hover .elementor-widget-text-editor span,
.is-hover-text-color-primary:hover .elementor-widget-heading span,
.is-hover-text-color-primary:hover .elementor-widget-theme-post-content span,
.is-hover-text-color-primary:hover .elementor-icon i                              { color: var(--b47-primary-text-color) !important; }
.is-hover-text-color-primary:hover .elementor-icon svg,
.is-hover-text-color-primary:hover .elementor-icon-list-icon svg path             { fill: var(--b47-primary-text-color) !important; }
.is-hover-text-color-primary:hover::before,
.is-hover-text-color-primary:hover::after                                         { color: var(--b47-primary-text-color) !important; }

.is-hover-text-color-secondary:hover .elementor-heading-title,
.is-hover-text-color-secondary:hover p,
.is-hover-text-color-secondary:hover .elementor-widget-text-editor span,
.is-hover-text-color-secondary:hover .elementor-widget-heading span,
.is-hover-text-color-secondary:hover .elementor-widget-theme-post-content span,
.is-hover-text-color-secondary:hover .elementor-icon i                            { color: var(--b47-secondary-text-color) !important; }
.is-hover-text-color-secondary:hover .elementor-icon svg,
.is-hover-text-color-secondary:hover .elementor-icon-list-icon svg path           { fill: var(--b47-secondary-text-color) !important; }
.is-hover-text-color-secondary:hover::before,
.is-hover-text-color-secondary:hover::after                                       { color: var(--b47-secondary-text-color) !important; }

.is-hover-text-color-tertiary:hover .elementor-heading-title,
.is-hover-text-color-tertiary:hover p,
.is-hover-text-color-tertiary:hover .elementor-widget-text-editor span,
.is-hover-text-color-tertiary:hover .elementor-widget-heading span,
.is-hover-text-color-tertiary:hover .elementor-widget-theme-post-content span,
.is-hover-text-color-tertiary:hover .elementor-icon i                             { color: var(--b47-tertiary-text-color) !important; }
.is-hover-text-color-tertiary:hover .elementor-icon svg,
.is-hover-text-color-tertiary:hover .elementor-icon-list-icon svg path            { fill: var(--b47-tertiary-text-color) !important; }
.is-hover-text-color-tertiary:hover::before,
.is-hover-text-color-tertiary:hover::after                                        { color: var(--b47-tertiary-text-color) !important; }

.is-hover-color-nav:hover .elementor-heading-title,
.is-hover-color-nav:hover p,
.is-hover-color-nav:hover .elementor-widget-text-editor span,
.is-hover-color-nav:hover .elementor-widget-heading span,
.is-hover-color-nav:hover .elementor-widget-theme-post-content span,
.is-hover-color-nav:hover .elementor-icon i                                       { color: var(--b47-nav-color) !important; }
.is-hover-color-nav:hover .elementor-icon svg,
.is-hover-color-nav:hover .elementor-icon-list-icon svg path                      { fill: var(--b47-nav-color) !important; }
.is-hover-color-nav:hover::before,
.is-hover-color-nav:hover::after                                                  { color: var(--b47-nav-color) !important; }

.is-hover-color-overline:hover .elementor-heading-title,
.is-hover-color-overline:hover p,
.is-hover-color-overline:hover .elementor-widget-text-editor span,
.is-hover-color-overline:hover .elementor-widget-heading span,
.is-hover-color-overline:hover .elementor-widget-theme-post-content span,
.is-hover-color-overline:hover .elementor-icon i                                  { color: var(--b47-overline-color) !important; }
.is-hover-color-overline:hover .elementor-icon svg,
.is-hover-color-overline:hover .elementor-icon-list-icon svg path                 { fill: var(--b47-overline-color) !important; }
.is-hover-color-overline:hover::before,
.is-hover-color-overline:hover::after                                             { color: var(--b47-overline-color) !important; }

.is-hover-color-muted:hover .elementor-heading-title,
.is-hover-color-muted:hover p,
.is-hover-color-muted:hover .elementor-widget-text-editor span,
.is-hover-color-muted:hover .elementor-widget-heading span,
.is-hover-color-muted:hover .elementor-widget-theme-post-content span,
.is-hover-color-muted:hover .elementor-icon i                                     { color: var(--b47-muted-text-color) !important; }
.is-hover-color-muted:hover .elementor-icon svg,
.is-hover-color-muted:hover .elementor-icon-list-icon svg path                    { fill: var(--b47-muted-text-color) !important; }
.is-hover-color-muted:hover::before,
.is-hover-color-muted:hover::after                                                { color: var(--b47-muted-text-color) !important; }

.is-hover-color-disabled:hover .elementor-heading-title,
.is-hover-color-disabled:hover p,
.is-hover-color-disabled:hover .elementor-widget-text-editor span,
.is-hover-color-disabled:hover .elementor-widget-heading span,
.is-hover-color-disabled:hover .elementor-widget-theme-post-content span,
.is-hover-color-disabled:hover .elementor-icon i                                  { color: var(--b47-disabled-text-color) !important; }
.is-hover-color-disabled:hover .elementor-icon svg,
.is-hover-color-disabled:hover .elementor-icon-list-icon svg path                 { fill: var(--b47-disabled-text-color) !important; }
.is-hover-color-disabled:hover::before,
.is-hover-color-disabled:hover::after                                             { color: var(--b47-disabled-text-color) !important; }

.is-hover-color-white:hover .elementor-heading-title,
.is-hover-color-white:hover p,
.is-hover-color-white:hover .elementor-widget-text-editor span,
.is-hover-color-white:hover .elementor-widget-heading span,
.is-hover-color-white:hover .elementor-widget-theme-post-content span,
.is-hover-color-white:hover .elementor-icon i                                     { color: var(--b47-white-text-color) !important; }
.is-hover-color-white:hover .elementor-icon svg,
.is-hover-color-white:hover .elementor-icon-list-icon svg path                    { fill: var(--b47-white-text-color) !important; }
.is-hover-color-white:hover::before,
.is-hover-color-white:hover::after                                                { color: var(--b47-white-text-color) !important; }

.is-hover-color-black:hover .elementor-heading-title,
.is-hover-color-black:hover p,
.is-hover-color-black:hover .elementor-widget-text-editor span,
.is-hover-color-black:hover .elementor-widget-heading span,
.is-hover-color-black:hover .elementor-widget-theme-post-content span,
.is-hover-color-black:hover .elementor-icon i                                     { color: var(--b47-black-text-color) !important; }
.is-hover-color-black:hover .elementor-icon svg,
.is-hover-color-black:hover .elementor-icon-list-icon svg path                    { fill: var(--b47-black-text-color) !important; }
.is-hover-color-black:hover::before,
.is-hover-color-black:hover::after                                                { color: var(--b47-black-text-color) !important; }

/* --- Shadow Utilities --- */
.shadow-primary                                                                   { box-shadow: var(--b47-shadow-primary) !important; }
.shadow-inner                                                                     { box-shadow: var(--b47-shadow-inner) !important; }
.shadow-xsmall                                                                    { box-shadow: var(--b47-shadow-xsmall) !important; }
.shadow-small                                                                     { box-shadow: var(--b47-shadow-small) !important; }
.shadow-medium                                                                    { box-shadow: var(--b47-shadow-medium) !important; }
.shadow-large                                                                     { box-shadow: var(--b47-shadow-large) !important; }
.shadow-xlarge                                                                    { box-shadow: var(--b47-shadow-xlarge) !important; }
.shadow-xxlarge                                                                   { box-shadow: var(--b47-shadow-xxlarge) !important; }
.shadow-xxxlarge                                                                  { box-shadow: var(--b47-shadow-xxxlarge) !important; }

/* ----------------------------- INVERSE MODE ------------------------------ */

.inverse-mode {
    /* --- Brand Colors --- */
    --b47-primary-color:                         var(--b47-inverse-primary-color);
    --b47-primary-color-light:                   var(--b47-inverse-primary-color-light);
    --b47-primary-color-dark:                    var(--b47-inverse-primary-color-dark);
    --b47-primary-color-hover:                   var(--b47-inverse-primary-color-hover);
    --b47-secondary-color:                       var(--b47-inverse-secondary-color);
    --b47-secondary-color-light:                 var(--b47-inverse-secondary-color-light);
    --b47-secondary-color-dark:                  var(--b47-inverse-secondary-color-dark);
    --b47-secondary-color-hover:                 var(--b47-inverse-secondary-color-hover);
    --b47-tertiary-color:                        var(--b47-inverse-tertiary-color);
    --b47-tertiary-color-light:                  var(--b47-inverse-tertiary-color-light);
    --b47-tertiary-color-dark:                   var(--b47-inverse-tertiary-color-dark);
    --b47-tertiary-color-hover:                  var(--b47-inverse-tertiary-color-hover);

    /* --- Backgrounds --- */
    --b47-white-background-color:                var(--b47-inverse-white-background-color);
    --b47-primary-background-color:              var(--b47-inverse-primary-background-color);
    --b47-secondary-background-color:            var(--b47-inverse-secondary-background-color);
    --b47-tertiary-background-color:             var(--b47-inverse-tertiary-background-color);
    --b47-black-background-color:                var(--b47-inverse-black-background-color);
    --b47-brand-primary-background-color:        var(--b47-inverse-brand-primary-background-color);

    /* --- Borders (color tokens only — shortcuts cascade automatically) --- */
    --b47-subtle-border-color:                   var(--b47-inverse-subtle-border-color);
    --b47-default-border-color:                  var(--b47-inverse-default-border-color);
    --b47-strong-border-color:                   var(--b47-inverse-strong-border-color);

    /* --- Links --- */
    --b47-primary-link-color:                    var(--b47-inverse-primary-link-color);
    --b47-primary-link-hover-color:              var(--b47-inverse-primary-link-hover-color);
    --b47-secondary-link-color:                  var(--b47-inverse-secondary-link-color);
    --b47-secondary-link-hover-color:            var(--b47-inverse-secondary-link-hover-color);

    /* --- Text --- */
    --b47-heading-color:                         var(--b47-inverse-heading-color);
    --b47-primary-text-color:                    var(--b47-inverse-primary-text-color);
    --b47-secondary-text-color:                  var(--b47-inverse-secondary-text-color);
    --b47-tertiary-text-color:                   var(--b47-inverse-tertiary-text-color);
    --b47-disabled-text-color:                   var(--b47-inverse-disabled-text-color);
    --b47-muted-text-color:                      var(--b47-inverse-muted-text-color);
    --b47-nav-color:                             var(--b47-inverse-nav-color);
    --b47-overline-color:                        var(--b47-inverse-overline-color);
    --b47-black-text-color:                      var(--b47-inverse-black-text-color);
    --b47-white-text-color:                      var(--b47-inverse-white-text-color);
}

/* --- Inverse Mode — stepped text --- */
.inverse-mode .text-size-small .elementor-heading-title,
.inverse-mode .text-size-small p,
.inverse-mode .text-size-small .elementor-widget-text-editor span,
.inverse-mode .text-size-small .elementor-widget-heading span,
.inverse-mode .text-size-small .elementor-widget-theme-post-content span,
.inverse-mode .text-size-small .elementor-icon i                                  { color: var(--b47-secondary-text-color) !important; }

.inverse-mode .text-size-tiny .elementor-heading-title,
.inverse-mode .text-size-tiny p,
.inverse-mode .text-size-tiny .elementor-widget-text-editor span,
.inverse-mode .text-size-tiny .elementor-widget-heading span,
.inverse-mode .text-size-tiny .elementor-widget-theme-post-content span,
.inverse-mode .text-size-tiny .elementor-icon i                                   { color: var(--b47-tertiary-text-color) !important; }

/* ------------------------- TYPOGRAPHY VARIABLES -------------------------- */

:root {
    /* --- Font Families --- */
    --b47-font-primary:                 'Geist', sans-serif;
    --b47-font-secondary:               'Inter', sans-serif;
    --b47-font-display:                 'Playfair Display', serif;
    --b47-font-mono:                    'Geist Mono', monospace;

    /* --- Heading Sizes --- */
    --b47-heading-size-h1:              5rem;
    --b47-heading-size-h2:              3.5rem;
    --b47-heading-size-h3:              1.75rem;
    --b47-heading-size-h4:              1.5rem;
    --b47-heading-size-h5:              1.25rem;
    --b47-heading-size-h6:              1.25rem;

    /* --- Rich Text Heading Sizes — shift one level down --- */
    --b47-heading-size-h1-rt:           var(--b47-heading-size-h2);
    --b47-heading-size-h2-rt:           var(--b47-heading-size-h3);
    --b47-heading-size-h3-rt:           var(--b47-heading-size-h4);
    --b47-heading-size-h4-rt:           var(--b47-heading-size-h5);
    --b47-heading-size-h5-rt:           var(--b47-heading-size-h6);
    --b47-heading-size-h6-rt:           var(--b47-heading-size-h6);

    /* --- Font Sizes --- */
    --b47-font-size-tiny:               0.875rem;
    --b47-font-size-small:              1rem;
    --b47-font-size-regular:            1.125rem;
    --b47-font-size-medium:             1.25rem;
    --b47-font-size-large:              1.5rem;

    /* --- Font Weights --- */
    --b47-font-weight-thin:             100;
    --b47-font-weight-xlight:           200;
    --b47-font-weight-light:            300;
    --b47-font-weight-normal:           400;
    --b47-font-weight-medium:           500;
    --b47-font-weight-semibold:         600;
    --b47-font-weight-bold:             700;
    --b47-font-weight-xbold:            800;
    --b47-font-weight-black:            900;

    /* --- Line Heights --- */
    --b47-line-height-xxsmall:          0.95;
    --b47-line-height-xsmall:           1;
    --b47-line-height-small:            1.1;
    --b47-line-height-medium:           1.2;
    --b47-line-height-large:            1.4;
    --b47-line-height-xlarge:           1.5;

    /* --- Letter Spacing --- */
    --b47-letter-spacing-tighter:       -0.02em;
    --b47-letter-spacing-tight:         -0.01em;
    --b47-letter-spacing-snug:          -0.005em;
    --b47-letter-spacing-default:        0em;
    --b47-letter-spacing-wide:           0.01em;
    --b47-letter-spacing-wider:          0.02em;
    --b47-letter-spacing-widest:         0.03em;

    /* --- Text Decoration --- */
    --b47-text-decoration-none:          none;
    --b47-text-decoration-underline:     underline;
    --b47-text-decoration-line-through:  line-through;
    --b47-text-underline-offset:         2px;

    /* --- Text Transform --- */
    --b47-text-transform-none:           none;
    --b47-text-transform-uppercase:      uppercase;
    --b47-text-transform-lowercase:      lowercase;
    --b47-text-transform-capitalize:     capitalize;

    /* --- Text Box (trims the line-height space above and below the text) --- */
    --b47-text-box-normal:               normal;
    --b47-text-box-trim:                 trim-both cap alphabetic;
}

/* --- Responsive Typography --- */
@media only screen and (max-width: 1024px) {
    :root {
        /* --- Heading Sizes (Tablet) --- */
        --b47-heading-size-h1:          4rem;
        --b47-heading-size-h2:          3rem;
        --b47-heading-size-h3:          2.5rem;
        --b47-heading-size-h4:          2rem;
        --b47-heading-size-h5:          1.75rem;
        --b47-heading-size-h6:          1.375rem;

        /* --- Font Sizes (Tablet) --- */
        --b47-font-size-tiny:           0.75rem;
        --b47-font-size-small:          0.875rem;
        --b47-font-size-regular:        1rem;
        --b47-font-size-medium:         1.125rem;
        --b47-font-size-large:          1.25rem;
    }
}

@media only screen and (max-width: 599px) {
    :root {
        /* --- Heading Sizes (Mobile) --- */
        --b47-heading-size-h1:          3.5rem;
        --b47-heading-size-h2:          2.5rem;
        --b47-heading-size-h3:          1.75rem;
        --b47-heading-size-h4:          1.5rem;
        --b47-heading-size-h5:          1.25rem;
        --b47-heading-size-h6:          1.25rem;

        /* --- Font Sizes (Mobile) --- */
        --b47-font-size-tiny:           0.75rem;
        --b47-font-size-small:          0.875rem;
        --b47-font-size-regular:        1rem;
        --b47-font-size-medium:         1rem;
        --b47-font-size-large:          1.125rem;
    }
}

/* ---------------------- THEME TYPOGRAPHY VARIABLES ----------------------- */

:root {
    /* --- Font Family --- */
    --b47-heading-family:               var(--b47-font-primary);
    --b47-body-family:                  var(--b47-font-primary);

    /* --- Headings --- */
    --b47-h1-family:                    var(--b47-heading-family);
    --b47-h1-size:                      var(--b47-heading-size-h1);
    --b47-h1-weight:                    var(--b47-font-weight-medium);
    --b47-h1-line-height:               var(--b47-line-height-small);
    --b47-h1-letter-spacing:            var(--b47-letter-spacing-tighter);

    --b47-h2-family:                    var(--b47-heading-family);
    --b47-h2-size:                      var(--b47-heading-size-h2);
    --b47-h2-weight:                    var(--b47-font-weight-medium);
    --b47-h2-line-height:               var(--b47-line-height-small);
    --b47-h2-letter-spacing:            var(--b47-letter-spacing-tighter);

    --b47-h3-family:                    var(--b47-heading-family);
    --b47-h3-size:                      var(--b47-heading-size-h3);
    --b47-h3-weight:                    var(--b47-font-weight-medium);
    --b47-h3-line-height:               var(--b47-line-height-medium);
    --b47-h3-letter-spacing:            var(--b47-letter-spacing-tighter);

    --b47-h4-family:                    var(--b47-heading-family);
    --b47-h4-size:                      var(--b47-heading-size-h4);
    --b47-h4-weight:                    var(--b47-font-weight-medium);
    --b47-h4-line-height:               var(--b47-line-height-medium);
    --b47-h4-letter-spacing:            var(--b47-letter-spacing-tighter);

    --b47-h5-family:                    var(--b47-heading-family);
    --b47-h5-size:                      var(--b47-heading-size-h5);
    --b47-h5-weight:                    var(--b47-font-weight-medium);
    --b47-h5-line-height:               var(--b47-line-height-large);
    --b47-h5-letter-spacing:            var(--b47-letter-spacing-tighter);

    --b47-h6-family:                    var(--b47-heading-family);
    --b47-h6-size:                      var(--b47-heading-size-h6);
    --b47-h6-weight:                    var(--b47-font-weight-medium);
    --b47-h6-line-height:               var(--b47-line-height-large);
    --b47-h6-letter-spacing:            var(--b47-letter-spacing-tighter);

    /* --- Rich Text Headings --- */
    --b47-h1-rt-family:                 var(--b47-h1-family);
    --b47-h1-rt-size:                   var(--b47-heading-size-h1-rt);
    --b47-h1-rt-weight:                 var(--b47-h1-weight);
    --b47-h1-rt-line-height:            var(--b47-h1-line-height);
    --b47-h1-rt-letter-spacing:         var(--b47-h1-letter-spacing);

    --b47-h2-rt-family:                 var(--b47-h2-family);
    --b47-h2-rt-size:                   var(--b47-heading-size-h2-rt);
    --b47-h2-rt-weight:                 var(--b47-h2-weight);
    --b47-h2-rt-line-height:            var(--b47-h2-line-height);
    --b47-h2-rt-letter-spacing:         var(--b47-h2-letter-spacing);

    --b47-h3-rt-family:                 var(--b47-h3-family);
    --b47-h3-rt-size:                   var(--b47-heading-size-h3-rt);
    --b47-h3-rt-weight:                 var(--b47-h3-weight);
    --b47-h3-rt-line-height:            var(--b47-h3-line-height);
    --b47-h3-rt-letter-spacing:         var(--b47-h3-letter-spacing);

    --b47-h4-rt-family:                 var(--b47-h4-family);
    --b47-h4-rt-size:                   var(--b47-heading-size-h4-rt);
    --b47-h4-rt-weight:                 var(--b47-h4-weight);
    --b47-h4-rt-line-height:            var(--b47-h4-line-height);
    --b47-h4-rt-letter-spacing:         var(--b47-h4-letter-spacing);

    --b47-h5-rt-family:                 var(--b47-h5-family);
    --b47-h5-rt-size:                   var(--b47-heading-size-h5-rt);
    --b47-h5-rt-weight:                 var(--b47-h5-weight);
    --b47-h5-rt-line-height:            var(--b47-h5-line-height);
    --b47-h5-rt-letter-spacing:         var(--b47-h5-letter-spacing);

    --b47-h6-rt-family:                 var(--b47-h6-family);
    --b47-h6-rt-size:                   var(--b47-heading-size-h6-rt);
    --b47-h6-rt-weight:                 var(--b47-h6-weight);
    --b47-h6-rt-line-height:            var(--b47-h6-line-height);
    --b47-h6-rt-letter-spacing:         var(--b47-h6-letter-spacing);

    /* --- Body --- */
    --b47-body-tiny-family:             var(--b47-body-family);
    --b47-body-tiny-size:               var(--b47-font-size-tiny);
    --b47-body-tiny-weight:             var(--b47-font-weight-normal);
    --b47-body-tiny-line-height:        var(--b47-line-height-xlarge);
    --b47-body-tiny-letter-spacing:     var(--b47-letter-spacing-default);

    --b47-body-small-family:            var(--b47-body-family);
    --b47-body-small-size:              var(--b47-font-size-small);
    --b47-body-small-weight:            var(--b47-font-weight-normal);
    --b47-body-small-line-height:       var(--b47-line-height-large);
    --b47-body-small-letter-spacing:    var(--b47-letter-spacing-default);

    --b47-body-regular-family:          var(--b47-body-family);
    --b47-body-regular-size:            var(--b47-font-size-regular);
    --b47-body-regular-weight:          var(--b47-font-weight-normal);
    --b47-body-regular-line-height:     var(--b47-line-height-large);
    --b47-body-regular-letter-spacing:  var(--b47-letter-spacing-default);

    --b47-body-medium-family:           var(--b47-body-family);
    --b47-body-medium-size:             var(--b47-font-size-medium);
    --b47-body-medium-weight:           var(--b47-font-weight-normal);
    --b47-body-medium-line-height:      var(--b47-line-height-large);
    --b47-body-medium-letter-spacing:   var(--b47-letter-spacing-default);

    --b47-body-large-family:            var(--b47-body-family);
    --b47-body-large-size:              var(--b47-font-size-large);
    --b47-body-large-weight:            var(--b47-font-weight-normal);
    --b47-body-large-line-height:       var(--b47-line-height-large);
    --b47-body-large-letter-spacing:    var(--b47-letter-spacing-default);

    /* --- Nav --- */
    --b47-nav-family:                   var(--b47-body-family);
    --b47-nav-size:                     var(--b47-font-size-small);
    --b47-nav-weight:                   var(--b47-font-weight-normal);
    --b47-nav-line-height:              var(--b47-line-height-small);
    --b47-nav-letter-spacing:           var(--b47-letter-spacing-default);
    --b47-nav-transform:                var(--b47-text-transform-none);

    /* --- Overline --- */
    --b47-overline-family:              var(--b47-body-family);
    --b47-overline-size:                var(--b47-font-size-tiny);
    --b47-overline-weight:              var(--b47-font-weight-semibold);
    --b47-overline-line-height:         var(--b47-line-height-small);
    --b47-overline-letter-spacing:      var(--b47-letter-spacing-wider);
    --b47-overline-transform:           var(--b47-text-transform-uppercase);

    /* --- Rich Text Body --- */
    --b47-body-rt-family:               var(--b47-body-family);
    --b47-body-rt-size:                 var(--b47-font-size-regular);
    --b47-body-rt-weight:               var(--b47-font-weight-normal);
    --b47-body-rt-line-height:          var(--b47-line-height-large);
    --b47-body-rt-letter-spacing:       var(--b47-letter-spacing-default);
}

/* -------------------------- TYPOGRAPHY CLASSES --------------------------- */

/* --- Strong/bold --- */
.elementor-widget-text-editor strong,
.elementor-widget-text-editor b,
.elementor-widget-theme-post-content strong,
.elementor-widget-theme-post-content b {
    font-weight: var(--b47-font-weight-medium) !important;
    color:       var(--b47-heading-color);
}

/* --- Base heading color --- */
h1.elementor-heading-title,
h2.elementor-heading-title,
h3.elementor-heading-title,
h4.elementor-heading-title,
h5.elementor-heading-title,
h6.elementor-heading-title,
div.elementor-heading-title,
span.elementor-heading-title,
p.elementor-heading-title                                                         { color: var(--b47-heading-color) !important; }

/* --- Base — Heading by HTML tag --- */
.elementor-widget-heading h1.elementor-heading-title {
    font-family:    var(--b47-h1-family) !important;
    font-size:      var(--b47-h1-size) !important;
    font-weight:    var(--b47-h1-weight) !important;
    line-height:    var(--b47-h1-line-height) !important;
    letter-spacing: var(--b47-h1-letter-spacing) !important;
}
.elementor-widget-heading h2.elementor-heading-title {
    font-family:    var(--b47-h2-family) !important;
    font-size:      var(--b47-h2-size) !important;
    font-weight:    var(--b47-h2-weight) !important;
    line-height:    var(--b47-h2-line-height) !important;
    letter-spacing: var(--b47-h2-letter-spacing) !important;
}
.elementor-widget-heading h3.elementor-heading-title {
    font-family:    var(--b47-h3-family) !important;
    font-size:      var(--b47-h3-size) !important;
    font-weight:    var(--b47-h3-weight) !important;
    line-height:    var(--b47-h3-line-height) !important;
    letter-spacing: var(--b47-h3-letter-spacing) !important;
}
.elementor-widget-heading h4.elementor-heading-title {
    font-family:    var(--b47-h4-family) !important;
    font-size:      var(--b47-h4-size) !important;
    font-weight:    var(--b47-h4-weight) !important;
    line-height:    var(--b47-h4-line-height) !important;
    letter-spacing: var(--b47-h4-letter-spacing) !important;
}
.elementor-widget-heading h5.elementor-heading-title {
    font-family:    var(--b47-h5-family) !important;
    font-size:      var(--b47-h5-size) !important;
    font-weight:    var(--b47-h5-weight) !important;
    line-height:    var(--b47-h5-line-height) !important;
    letter-spacing: var(--b47-h5-letter-spacing) !important;
}
.elementor-widget-heading h6.elementor-heading-title {
    font-family:    var(--b47-h6-family) !important;
    font-size:      var(--b47-h6-size) !important;
    font-weight:    var(--b47-h6-weight) !important;
    line-height:    var(--b47-h6-line-height) !important;
    letter-spacing: var(--b47-h6-letter-spacing) !important;
}

/* --- div/span/p tag in heading widget → body style --- */
.elementor-widget-heading div.elementor-heading-title,
.elementor-widget-heading span.elementor-heading-title,
.elementor-widget-heading p.elementor-heading-title {
    font-family:    var(--b47-body-family) !important;
    font-size:      var(--b47-body-regular-size) !important;
    font-weight:    var(--b47-body-regular-weight) !important;
    line-height:    var(--b47-body-regular-line-height) !important;
    letter-spacing: var(--b47-body-regular-letter-spacing) !important;
}

/* --- Base Body --- */
.elementor-widget-text-editor p,
.elementor-widget-theme-post-content p {
    font-family:    var(--b47-body-regular-family) !important;
    font-size:      var(--b47-body-regular-size) !important;
    font-weight:    var(--b47-body-regular-weight) !important;
    line-height:    var(--b47-body-regular-line-height) !important;
    letter-spacing: var(--b47-body-regular-letter-spacing) !important;
    color:          var(--b47-primary-text-color);
}

/* --- Base Nav menu --- */
.elementor-nav-menu a,
.elementor-nav-menu .menu-item a {
    font-family:    var(--b47-nav-family) !important;
    font-size:      var(--b47-nav-size) !important;
    font-weight:    var(--b47-nav-weight) !important;
    line-height:    var(--b47-nav-line-height) !important;
    letter-spacing: var(--b47-nav-letter-spacing) !important;
}

/* --- Base Links --- */
a                                                                                 { text-decoration: var(--b47-text-decoration-none); }
.elementor-widget-text-editor a,
.elementor-widget-theme-post-content a {
    color:           var(--b47-primary-link-color);
    text-decoration: var(--b47-text-decoration-none);
}
.elementor-widget-text-editor a:hover,
.elementor-widget-theme-post-content a:hover {
    color:                 var(--b47-primary-link-hover-color);
    text-decoration:       var(--b47-text-decoration-underline);
    text-underline-offset: var(--b47-text-underline-offset);
}

/* --- Heading Style Utilities --- */
.elementor-widget-heading.heading-style-h1 .elementor-heading-title,
.heading-style-h1 .elementor-widget-heading .elementor-heading-title {
    font-family:    var(--b47-h1-family) !important;
    font-size:      var(--b47-h1-size) !important;
    font-weight:    var(--b47-h1-weight) !important;
    line-height:    var(--b47-h1-line-height) !important;
    letter-spacing: var(--b47-h1-letter-spacing) !important;
}
.elementor-widget-heading.heading-style-h2 .elementor-heading-title,
.heading-style-h2 .elementor-widget-heading .elementor-heading-title {
    font-family:    var(--b47-h2-family) !important;
    font-size:      var(--b47-h2-size) !important;
    font-weight:    var(--b47-h2-weight) !important;
    line-height:    var(--b47-h2-line-height) !important;
    letter-spacing: var(--b47-h2-letter-spacing) !important;
}
.elementor-widget-heading.heading-style-h3 .elementor-heading-title,
.heading-style-h3 .elementor-widget-heading .elementor-heading-title {
    font-family:    var(--b47-h3-family) !important;
    font-size:      var(--b47-h3-size) !important;
    font-weight:    var(--b47-h3-weight) !important;
    line-height:    var(--b47-h3-line-height) !important;
    letter-spacing: var(--b47-h3-letter-spacing) !important;
}
.elementor-widget-heading.heading-style-h4 .elementor-heading-title,
.heading-style-h4 .elementor-widget-heading .elementor-heading-title {
    font-family:    var(--b47-h4-family) !important;
    font-size:      var(--b47-h4-size) !important;
    font-weight:    var(--b47-h4-weight) !important;
    line-height:    var(--b47-h4-line-height) !important;
    letter-spacing: var(--b47-h4-letter-spacing) !important;
}
.elementor-widget-heading.heading-style-h5 .elementor-heading-title,
.heading-style-h5 .elementor-widget-heading .elementor-heading-title {
    font-family:    var(--b47-h5-family) !important;
    font-size:      var(--b47-h5-size) !important;
    font-weight:    var(--b47-h5-weight) !important;
    line-height:    var(--b47-h5-line-height) !important;
    letter-spacing: var(--b47-h5-letter-spacing) !important;
}
.elementor-widget-heading.heading-style-h6 .elementor-heading-title,
.heading-style-h6 .elementor-widget-heading .elementor-heading-title {
    font-family:    var(--b47-h6-family) !important;
    font-size:      var(--b47-h6-size) !important;
    font-weight:    var(--b47-h6-weight) !important;
    line-height:    var(--b47-h6-line-height) !important;
    letter-spacing: var(--b47-h6-letter-spacing) !important;
}

/* --- Body Size Utilities --- */
.elementor-widget-heading.text-size-large .elementor-heading-title,
.text-size-large .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-size-large p,
.text-size-large .elementor-widget-text-editor p,
span.text-size-large,
.text-size-large .elementor-widget-text-editor span,
.text-size-large .elementor-widget-heading span,
.text-size-large .elementor-widget-theme-post-content span,
div.text-size-large,
.text-size-large .elementor-widget-text-editor div,
.text-size-large .elementor-widget-heading div,
.text-size-large .elementor-widget-theme-post-content div {
    font-family:    var(--b47-body-large-family) !important;
    font-size:      var(--b47-body-large-size) !important;
    font-weight:    var(--b47-body-large-weight) !important;
    line-height:    var(--b47-body-large-line-height) !important;
    letter-spacing: var(--b47-body-large-letter-spacing) !important;
}
.elementor-widget-heading.text-size-medium .elementor-heading-title,
.text-size-medium .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-size-medium p,
.text-size-medium .elementor-widget-text-editor p,
span.text-size-medium,
.text-size-medium .elementor-widget-text-editor span,
.text-size-medium .elementor-widget-heading span,
.text-size-medium .elementor-widget-theme-post-content span,
div.text-size-medium,
.text-size-medium .elementor-widget-text-editor div,
.text-size-medium .elementor-widget-heading div,
.text-size-medium .elementor-widget-theme-post-content div {
    font-family:    var(--b47-body-medium-family) !important;
    font-size:      var(--b47-body-medium-size) !important;
    font-weight:    var(--b47-body-medium-weight) !important;
    line-height:    var(--b47-body-medium-line-height) !important;
    letter-spacing: var(--b47-body-medium-letter-spacing) !important;
}
.elementor-widget-heading.text-size-regular .elementor-heading-title,
.text-size-regular .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-size-regular p,
.text-size-regular .elementor-widget-text-editor p,
span.text-size-regular,
.text-size-regular .elementor-widget-text-editor span,
.text-size-regular .elementor-widget-heading span,
.text-size-regular .elementor-widget-theme-post-content span,
div.text-size-regular,
.text-size-regular .elementor-widget-text-editor div,
.text-size-regular .elementor-widget-heading div,
.text-size-regular .elementor-widget-theme-post-content div {
    font-family:    var(--b47-body-regular-family) !important;
    font-size:      var(--b47-body-regular-size) !important;
    font-weight:    var(--b47-body-regular-weight) !important;
    line-height:    var(--b47-body-regular-line-height) !important;
    letter-spacing: var(--b47-body-regular-letter-spacing) !important;
}
.elementor-widget-heading.text-size-small .elementor-heading-title,
.text-size-small .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-size-small p,
.text-size-small .elementor-widget-text-editor p,
span.text-size-small,
.text-size-small .elementor-widget-text-editor span,
.text-size-small .elementor-widget-heading span,
.text-size-small .elementor-widget-theme-post-content span,
div.text-size-small,
.text-size-small .elementor-widget-text-editor div,
.text-size-small .elementor-widget-heading div,
.text-size-small .elementor-widget-theme-post-content div {
    font-family:    var(--b47-body-small-family) !important;
    font-size:      var(--b47-body-small-size) !important;
    font-weight:    var(--b47-body-small-weight) !important;
    line-height:    var(--b47-body-small-line-height) !important;
    letter-spacing: var(--b47-body-small-letter-spacing) !important;
}
.elementor-widget-heading.text-size-tiny .elementor-heading-title,
.text-size-tiny .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-size-tiny p,
.text-size-tiny .elementor-widget-text-editor p,
span.text-size-tiny,
.text-size-tiny .elementor-widget-text-editor span,
.text-size-tiny .elementor-widget-heading span,
.text-size-tiny .elementor-widget-theme-post-content span,
div.text-size-tiny,
.text-size-tiny .elementor-widget-text-editor div,
.text-size-tiny .elementor-widget-heading div,
.text-size-tiny .elementor-widget-theme-post-content div {
    font-family:    var(--b47-body-tiny-family) !important;
    font-size:      var(--b47-body-tiny-size) !important;
    font-weight:    var(--b47-body-tiny-weight) !important;
    line-height:    var(--b47-body-tiny-line-height) !important;
    letter-spacing: var(--b47-body-tiny-letter-spacing) !important;
}
.text-size-inherit                                                                { font-size: inherit !important; }

/* --- Text Style Utilities --- */
.elementor-widget-heading.text-style-nav .elementor-heading-title,
.text-style-nav .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-style-nav p,
.text-style-nav .elementor-widget-text-editor p,
span.text-style-nav,
.text-style-nav .elementor-widget-text-editor span,
.text-style-nav .elementor-widget-heading span,
.text-style-nav .elementor-widget-theme-post-content span,
div.text-style-nav,
.text-style-nav .elementor-widget-text-editor div,
.text-style-nav .elementor-widget-heading div,
.text-style-nav .elementor-widget-theme-post-content div {
    font-family:    var(--b47-nav-family) !important;
    font-size:      var(--b47-nav-size) !important;
    font-weight:    var(--b47-nav-weight) !important;
    line-height:    var(--b47-nav-line-height) !important;
    letter-spacing: var(--b47-nav-letter-spacing) !important;
    text-transform: var(--b47-nav-transform) !important;
}
.elementor-widget-heading.text-style-overline .elementor-heading-title,
.text-style-overline .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-style-overline p,
.text-style-overline .elementor-widget-text-editor p,
span.text-style-overline,
.text-style-overline .elementor-widget-text-editor span,
.text-style-overline .elementor-widget-heading span,
.text-style-overline .elementor-widget-theme-post-content span,
div.text-style-overline,
.text-style-overline .elementor-widget-text-editor div,
.text-style-overline .elementor-widget-heading div,
.text-style-overline .elementor-widget-theme-post-content div {
    font-family:    var(--b47-overline-family) !important;
    font-size:      var(--b47-overline-size) !important;
    font-weight:    var(--b47-overline-weight) !important;
    line-height:    var(--b47-overline-line-height) !important;
    letter-spacing: var(--b47-overline-letter-spacing) !important;
    text-transform: var(--b47-overline-transform) !important;
}
.elementor-widget-heading.text-style-display .elementor-heading-title,
.text-style-display .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-style-display p,
.text-style-display .elementor-widget-text-editor p,
span.text-style-display,
.text-style-display .elementor-widget-text-editor span,
.text-style-display .elementor-widget-heading span,
.text-style-display .elementor-widget-theme-post-content span,
div.text-style-display,
.text-style-display .elementor-widget-text-editor div,
.text-style-display .elementor-widget-heading div,
.text-style-display .elementor-widget-theme-post-content div                      { font-family: var(--b47-font-display) !important; }

.elementor-widget-heading.text-style-mono .elementor-heading-title,
.text-style-mono .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-style-mono p,
.text-style-mono .elementor-widget-text-editor p,
span.text-style-mono,
.text-style-mono .elementor-widget-text-editor span,
.text-style-mono .elementor-widget-heading span,
.text-style-mono .elementor-widget-theme-post-content span,
div.text-style-mono,
.text-style-mono .elementor-widget-text-editor div,
.text-style-mono .elementor-widget-heading div,
.text-style-mono .elementor-widget-theme-post-content div                         { font-family: var(--b47-font-mono) !important; }

.elementor-widget-heading.text-style-italic .elementor-heading-title,
.text-style-italic .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-style-italic p,
.text-style-italic .elementor-widget-text-editor p,
span.text-style-italic,
.text-style-italic .elementor-widget-text-editor span,
.text-style-italic .elementor-widget-heading span,
.text-style-italic .elementor-widget-theme-post-content span,
div.text-style-italic,
.text-style-italic .elementor-widget-text-editor div,
.text-style-italic .elementor-widget-heading div,
.text-style-italic .elementor-widget-theme-post-content div                       { font-style: italic !important; }

/* --- Text Wrap / Alignment Utilities --- */
.text-style-balance                                                                { text-wrap: balance !important; }
.text-style-pretty                                                                 { text-wrap: pretty !important; }
.text-style-nowrap                                                                 { white-space: nowrap !important; }
.text-align-left                                                                   { text-align: left !important; }
.text-align-center                                                                 { text-align: center !important; }
.text-align-right                                                                  { text-align: right !important; }

/* --- Line Clamp Utilities --- */
.text-style-1line  { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; line-clamp: 1; text-overflow: ellipsis; }
.text-style-2lines { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-clamp: 2; text-overflow: ellipsis; }
.text-style-3lines { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; line-clamp: 3; text-overflow: ellipsis; }
.text-style-4lines { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; line-clamp: 4; text-overflow: ellipsis; }
.text-style-5lines { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 5; -webkit-box-orient: vertical; line-clamp: 5; text-overflow: ellipsis; }

/* --- Font Weight Utilities --- */
.elementor-widget-heading.text-weight-thin .elementor-heading-title,
.text-weight-thin .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-weight-thin p,
.text-weight-thin .elementor-widget-text-editor p,
span.text-weight-thin,
.text-weight-thin .elementor-widget-text-editor span,
.text-weight-thin .elementor-widget-heading span,
.text-weight-thin .elementor-widget-theme-post-content span,
div.text-weight-thin,
.text-weight-thin .elementor-widget-text-editor div,
.text-weight-thin .elementor-widget-heading div,
.text-weight-thin .elementor-widget-theme-post-content div                        { font-weight: var(--b47-font-weight-thin) !important; }

.elementor-widget-heading.text-weight-xlight .elementor-heading-title,
.text-weight-xlight .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-weight-xlight p,
.text-weight-xlight .elementor-widget-text-editor p,
span.text-weight-xlight,
.text-weight-xlight .elementor-widget-text-editor span,
.text-weight-xlight .elementor-widget-heading span,
.text-weight-xlight .elementor-widget-theme-post-content span,
div.text-weight-xlight,
.text-weight-xlight .elementor-widget-text-editor div,
.text-weight-xlight .elementor-widget-heading div,
.text-weight-xlight .elementor-widget-theme-post-content div                      { font-weight: var(--b47-font-weight-xlight) !important; }

.elementor-widget-heading.text-weight-light .elementor-heading-title,
.text-weight-light .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-weight-light p,
.text-weight-light .elementor-widget-text-editor p,
span.text-weight-light,
.text-weight-light .elementor-widget-text-editor span,
.text-weight-light .elementor-widget-heading span,
.text-weight-light .elementor-widget-theme-post-content span,
div.text-weight-light,
.text-weight-light .elementor-widget-text-editor div,
.text-weight-light .elementor-widget-heading div,
.text-weight-light .elementor-widget-theme-post-content div                       { font-weight: var(--b47-font-weight-light) !important; }

.elementor-widget-heading.text-weight-normal .elementor-heading-title,
.text-weight-normal .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-weight-normal p,
.text-weight-normal .elementor-widget-text-editor p,
span.text-weight-normal,
.text-weight-normal .elementor-widget-text-editor span,
.text-weight-normal .elementor-widget-heading span,
.text-weight-normal .elementor-widget-theme-post-content span,
div.text-weight-normal,
.text-weight-normal .elementor-widget-text-editor div,
.text-weight-normal .elementor-widget-heading div,
.text-weight-normal .elementor-widget-theme-post-content div                      { font-weight: var(--b47-font-weight-normal) !important; }

.elementor-widget-heading.text-weight-medium .elementor-heading-title,
.text-weight-medium .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-weight-medium p,
.text-weight-medium .elementor-widget-text-editor p,
span.text-weight-medium,
.text-weight-medium .elementor-widget-text-editor span,
.text-weight-medium .elementor-widget-heading span,
.text-weight-medium .elementor-widget-theme-post-content span,
div.text-weight-medium,
.text-weight-medium .elementor-widget-text-editor div,
.text-weight-medium .elementor-widget-heading div,
.text-weight-medium .elementor-widget-theme-post-content div                      { font-weight: var(--b47-font-weight-medium) !important; }

.elementor-widget-heading.text-weight-semibold .elementor-heading-title,
.text-weight-semibold .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-weight-semibold p,
.text-weight-semibold .elementor-widget-text-editor p,
span.text-weight-semibold,
.text-weight-semibold .elementor-widget-text-editor span,
.text-weight-semibold .elementor-widget-heading span,
.text-weight-semibold .elementor-widget-theme-post-content span,
div.text-weight-semibold,
.text-weight-semibold .elementor-widget-text-editor div,
.text-weight-semibold .elementor-widget-heading div,
.text-weight-semibold .elementor-widget-theme-post-content div                    { font-weight: var(--b47-font-weight-semibold) !important; }

.elementor-widget-heading.text-weight-bold .elementor-heading-title,
.text-weight-bold .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-weight-bold p,
.text-weight-bold .elementor-widget-text-editor p,
span.text-weight-bold,
.text-weight-bold .elementor-widget-text-editor span,
.text-weight-bold .elementor-widget-heading span,
.text-weight-bold .elementor-widget-theme-post-content span,
div.text-weight-bold,
.text-weight-bold .elementor-widget-text-editor div,
.text-weight-bold .elementor-widget-heading div,
.text-weight-bold .elementor-widget-theme-post-content div                        { font-weight: var(--b47-font-weight-bold) !important; }

.elementor-widget-heading.text-weight-xbold .elementor-heading-title,
.text-weight-xbold .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-weight-xbold p,
.text-weight-xbold .elementor-widget-text-editor p,
span.text-weight-xbold,
.text-weight-xbold .elementor-widget-text-editor span,
.text-weight-xbold .elementor-widget-heading span,
.text-weight-xbold .elementor-widget-theme-post-content span,
div.text-weight-xbold,
.text-weight-xbold .elementor-widget-text-editor div,
.text-weight-xbold .elementor-widget-heading div,
.text-weight-xbold .elementor-widget-theme-post-content div                       { font-weight: var(--b47-font-weight-xbold) !important; }

.elementor-widget-heading.text-weight-black .elementor-heading-title,
.text-weight-black .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-weight-black p,
.text-weight-black .elementor-widget-text-editor p,
span.text-weight-black,
.text-weight-black .elementor-widget-text-editor span,
.text-weight-black .elementor-widget-heading span,
.text-weight-black .elementor-widget-theme-post-content span,
div.text-weight-black,
.text-weight-black .elementor-widget-text-editor div,
.text-weight-black .elementor-widget-heading div,
.text-weight-black .elementor-widget-theme-post-content div                       { font-weight: var(--b47-font-weight-black) !important; }

.text-weight-inherit                                                               { font-weight: inherit !important; }

/* --- Text Decoration Utilities --- */
.elementor-widget-heading.text-decoration-none .elementor-heading-title,
.text-decoration-none .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-decoration-none p,
.text-decoration-none .elementor-widget-text-editor p,
span.text-decoration-none,
.text-decoration-none .elementor-widget-text-editor span,
.text-decoration-none .elementor-widget-heading span,
.text-decoration-none .elementor-widget-theme-post-content span,
div.text-decoration-none,
.text-decoration-none .elementor-widget-text-editor div,
.text-decoration-none .elementor-widget-heading div,
.text-decoration-none .elementor-widget-theme-post-content div                    { text-decoration: var(--b47-text-decoration-none) !important; }

.elementor-widget-heading.text-style-underline .elementor-heading-title,
.text-style-underline .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-style-underline p,
.text-style-underline .elementor-widget-text-editor p,
span.text-style-underline,
.text-style-underline .elementor-widget-text-editor span,
.text-style-underline .elementor-widget-heading span,
.text-style-underline .elementor-widget-theme-post-content span,
div.text-style-underline,
.text-style-underline .elementor-widget-text-editor div,
.text-style-underline .elementor-widget-heading div,
.text-style-underline .elementor-widget-theme-post-content div                    { text-decoration: var(--b47-text-decoration-underline) !important; text-underline-offset: var(--b47-text-underline-offset) !important; }

.elementor-widget-heading.text-style-strikethrough .elementor-heading-title,
.text-style-strikethrough .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-style-strikethrough p,
.text-style-strikethrough .elementor-widget-text-editor p,
span.text-style-strikethrough,
.text-style-strikethrough .elementor-widget-text-editor span,
.text-style-strikethrough .elementor-widget-heading span,
.text-style-strikethrough .elementor-widget-theme-post-content span,
div.text-style-strikethrough,
.text-style-strikethrough .elementor-widget-text-editor div,
.text-style-strikethrough .elementor-widget-heading div,
.text-style-strikethrough .elementor-widget-theme-post-content div                { text-decoration: var(--b47-text-decoration-line-through) !important; text-decoration-color: var(--b47-muted-text-color) !important; }

/* --- Text Transform Utilities --- */
.elementor-widget-heading.text-transform-none .elementor-heading-title,
.text-transform-none .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-transform-none p,
.text-transform-none .elementor-widget-text-editor p,
span.text-transform-none,
.text-transform-none .elementor-widget-text-editor span,
.text-transform-none .elementor-widget-heading span,
.text-transform-none .elementor-widget-theme-post-content span,
div.text-transform-none,
.text-transform-none .elementor-widget-text-editor div,
.text-transform-none .elementor-widget-heading div,
.text-transform-none .elementor-widget-theme-post-content div                     { text-transform: var(--b47-text-transform-none) !important; }

.elementor-widget-heading.text-style-allcaps .elementor-heading-title,
.text-style-allcaps .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-style-allcaps p,
.text-style-allcaps .elementor-widget-text-editor p,
span.text-style-allcaps,
.text-style-allcaps .elementor-widget-text-editor span,
.text-style-allcaps .elementor-widget-heading span,
.text-style-allcaps .elementor-widget-theme-post-content span,
div.text-style-allcaps,
.text-style-allcaps .elementor-widget-text-editor div,
.text-style-allcaps .elementor-widget-heading div,
.text-style-allcaps .elementor-widget-theme-post-content div                      { text-transform: var(--b47-text-transform-uppercase) !important; }

.elementor-widget-heading.text-style-lowercase .elementor-heading-title,
.text-style-lowercase .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-style-lowercase p,
.text-style-lowercase .elementor-widget-text-editor p,
span.text-style-lowercase,
.text-style-lowercase .elementor-widget-text-editor span,
.text-style-lowercase .elementor-widget-heading span,
.text-style-lowercase .elementor-widget-theme-post-content span,
div.text-style-lowercase,
.text-style-lowercase .elementor-widget-text-editor div,
.text-style-lowercase .elementor-widget-heading div,
.text-style-lowercase .elementor-widget-theme-post-content div                    { text-transform: var(--b47-text-transform-lowercase) !important; }

.elementor-widget-heading.text-style-capitalize .elementor-heading-title,
.text-style-capitalize .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-style-capitalize p,
.text-style-capitalize .elementor-widget-text-editor p,
span.text-style-capitalize,
.text-style-capitalize .elementor-widget-text-editor span,
.text-style-capitalize .elementor-widget-heading span,
.text-style-capitalize .elementor-widget-theme-post-content span,
div.text-style-capitalize,
.text-style-capitalize .elementor-widget-text-editor div,
.text-style-capitalize .elementor-widget-heading div,
.text-style-capitalize .elementor-widget-theme-post-content div                   { text-transform: var(--b47-text-transform-capitalize) !important; }

/* --- Text Box Utilities --- */
.elementor-widget-heading.text-style-trim .elementor-heading-title,
.text-style-trim .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-style-trim p,
.text-style-trim .elementor-widget-text-editor p,
span.text-style-trim,
.text-style-trim .elementor-widget-text-editor span,
.text-style-trim .elementor-widget-heading span,
.text-style-trim .elementor-widget-theme-post-content span,
div.text-style-trim,
.text-style-trim .elementor-widget-text-editor div,
.text-style-trim .elementor-widget-heading div,
.text-style-trim .elementor-widget-theme-post-content div                         { text-box: var(--b47-text-box-trim) !important; }

.elementor-widget-heading.text-style-trim-none .elementor-heading-title,
.text-style-trim-none .elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor.text-style-trim-none p,
.text-style-trim-none .elementor-widget-text-editor p,
span.text-style-trim-none,
.text-style-trim-none .elementor-widget-text-editor span,
.text-style-trim-none .elementor-widget-heading span,
.text-style-trim-none .elementor-widget-theme-post-content span,
div.text-style-trim-none,
.text-style-trim-none .elementor-widget-text-editor div,
.text-style-trim-none .elementor-widget-heading div,
.text-style-trim-none .elementor-widget-theme-post-content div                    { text-box: var(--b47-text-box-normal) !important; }

/* --- Hyphens & Justify Utilities --- */
.hyphens-justify p                                                                { hyphens: auto !important; text-align: justify !important; }
.hyphens-justify-tablet p                                                         { hyphens: none !important; text-align: left !important; }
@media only screen and (max-width: 1024px) {
    .hyphens-justify-tablet p                                                     { hyphens: auto !important; text-align: justify !important; }
}
.hyphens-justify-mobile p                                                         { hyphens: none !important; text-align: left !important; }
@media only screen and (max-width: 599px) {
    .hyphens-justify-mobile p                                                     { hyphens: auto !important; text-align: justify !important; }
}

/* --- Lists — scoped to content only --- */
.elementor-widget-text-editor ul,
.elementor-widget-theme-post-content ul                                           { list-style: disc; padding-left: var(--b47-spacing-16); }
.elementor-widget-text-editor ol,
.elementor-widget-theme-post-content ol                                           { list-style: decimal; padding-left: var(--b47-spacing-16); }
.elementor-widget-text-editor li,
.elementor-widget-theme-post-content li {
    color:       var(--b47-primary-text-color);
    line-height: var(--b47-line-height-xlarge);
}

/* --- Rich Text --- */
.rich-text h1,
.elementor-widget-theme-post-content h1 {
    font-family:    var(--b47-h1-rt-family) !important;
    font-size:      var(--b47-h1-rt-size) !important;
    font-weight:    var(--b47-h1-rt-weight) !important;
    line-height:    var(--b47-h1-rt-line-height) !important;
    letter-spacing: var(--b47-h1-rt-letter-spacing) !important;
    color:          var(--b47-heading-color) !important;
}
.rich-text h2,
.elementor-widget-theme-post-content h2 {
    font-family:    var(--b47-h2-rt-family) !important;
    font-size:      var(--b47-h2-rt-size) !important;
    font-weight:    var(--b47-h2-rt-weight) !important;
    line-height:    var(--b47-h2-rt-line-height) !important;
    letter-spacing: var(--b47-h2-rt-letter-spacing) !important;
    color:          var(--b47-heading-color) !important;
}
.rich-text h3,
.elementor-widget-theme-post-content h3 {
    font-family:    var(--b47-h3-rt-family) !important;
    font-size:      var(--b47-h3-rt-size) !important;
    font-weight:    var(--b47-h3-rt-weight) !important;
    line-height:    var(--b47-h3-rt-line-height) !important;
    letter-spacing: var(--b47-h3-rt-letter-spacing) !important;
    color:          var(--b47-heading-color) !important;
}
.rich-text h4,
.elementor-widget-theme-post-content h4 {
    font-family:    var(--b47-h4-rt-family) !important;
    font-size:      var(--b47-h4-rt-size) !important;
    font-weight:    var(--b47-h4-rt-weight) !important;
    line-height:    var(--b47-h4-rt-line-height) !important;
    letter-spacing: var(--b47-h4-rt-letter-spacing) !important;
    color:          var(--b47-heading-color) !important;
}
.rich-text h5,
.elementor-widget-theme-post-content h5 {
    font-family:    var(--b47-h5-rt-family) !important;
    font-size:      var(--b47-h5-rt-size) !important;
    font-weight:    var(--b47-h5-rt-weight) !important;
    line-height:    var(--b47-h5-rt-line-height) !important;
    letter-spacing: var(--b47-h5-rt-letter-spacing) !important;
    color:          var(--b47-heading-color) !important;
}
.rich-text h6,
.elementor-widget-theme-post-content h6 {
    font-family:    var(--b47-h6-rt-family) !important;
    font-size:      var(--b47-h6-rt-size) !important;
    font-weight:    var(--b47-h6-rt-weight) !important;
    line-height:    var(--b47-h6-rt-line-height) !important;
    letter-spacing: var(--b47-h6-rt-letter-spacing) !important;
    color:          var(--b47-heading-color) !important;
}
.rich-text p,
.elementor-widget-theme-post-content p {
    font-family:    var(--b47-body-rt-family) !important;
    font-size:      var(--b47-body-rt-size) !important;
    font-weight:    var(--b47-body-rt-weight) !important;
    line-height:    var(--b47-body-rt-line-height) !important;
    letter-spacing: var(--b47-body-rt-letter-spacing) !important;
    color:          var(--b47-primary-text-color) !important;
}

/* ----------------------- LAYOUT & SIZES VARIABLES ----------------------- */

:root {
    /* --- Container Width --- */
    --b47-container-small:          48rem;   /* 768px */
    --b47-container-medium:         64rem;   /* 1024px */
    --b47-container-large:          73rem;   /* 1168px */

    /* --- Max Width --- */
    --b47-max-width-xxsmall:           12rem;   /* 192px */
    --b47-max-width-xsmall:            16rem;   /* 256px */
    --b47-max-width-small:             20rem;   /* 320px */
    --b47-max-width-medium:            32rem;   /* 512px */
    --b47-max-width-large:             48rem;   /* 768px */
    --b47-max-width-xlarge:            64rem;   /* 1024px */
    --b47-max-width-xxlarge:           80rem;   /* 1280px */

    /* --- Min Height --- */
    --b47-min-height-xsmall:           12.5rem;  /* 200px */
    --b47-min-height-small:            18.75rem; /* 300px */
    --b47-min-height-medium:           25rem;    /* 400px — ribbon/banner sections */
    --b47-min-height-large:            31.25rem; /* 500px */
    --b47-min-height-xlarge:           37.5rem;  /* 600px */
    --b47-min-height-xxlarge:          80vh;
    --b47-min-height-max:              100vh;
    
    /* --- Section Vertical Padding --- */
    --b47-padding-section-small:       2.5rem;   /* 40px */
    --b47-padding-section-medium:      5rem;     /* 80px */
    --b47-padding-section-large:       7.5rem;   /* 120px */
    --b47-padding-section-xlarge:      10rem;    /* 160px */

    /* --- Global Horizontal Padding --- */
    --b47-padding-global:              2.5rem;

    /* --- Sticky — gap below the header, step between stacked cards --- */
    --b47-sticky-gap:                  1rem;     /* 16px */
    --b47-sticky-step:                 1rem;     /* 16px */

    /* --- Spacing Scale --- */
    --b47-spacing-none:                0rem;     /* 0px */
    --b47-spacing-2:                   0.125rem; /* 2px */
    --b47-spacing-4:                   0.25rem;  /* 4px */
    --b47-spacing-6:                   0.375rem; /* 6px */
    --b47-spacing-8:                   0.5rem;   /* 8px */
    --b47-spacing-10:                  0.625rem; /* 10px */
    --b47-spacing-12:                  0.75rem;  /* 12px */
    --b47-spacing-14:                  0.875rem; /* 14px */
    --b47-spacing-16:                  1rem;     /* 16px */
    --b47-spacing-18:                  1.125rem; /* 18px */
    --b47-spacing-20:                  1.25rem;  /* 20px */
    --b47-spacing-22:                  1.375rem; /* 22px */
    --b47-spacing-24:                  1.5rem;   /* 24px */
    --b47-spacing-28:                  1.75rem;  /* 28px */
    --b47-spacing-32:                  2rem;     /* 32px */
    --b47-spacing-40:                  2.5rem;   /* 40px */
    --b47-spacing-48:                  3rem;     /* 48px */
    --b47-spacing-56:                  3.5rem;   /* 56px */
    --b47-spacing-64:                  4rem;     /* 64px */
    --b47-spacing-80:                  5rem;     /* 80px */
    --b47-spacing-96:                  6rem;     /* 96px */
    --b47-spacing-128:                 8rem;     /* 128px */
    --b47-spacing-160:                 10rem;    /* 160px */

    /* --- Border Width --- */
    --b47-border-width-xsmall:         0.5px;
    --b47-border-width-small:          1px;
    --b47-border-width-medium:         2px;
    --b47-border-width-large:          3px;
    --b47-border-width:                var(--b47-border-width-small);   /* 1px — default alias */

    /* --- Border Radius Scale --- */
    --b47-radius-none:                 0rem;     /* 0px */
    --b47-radius-2:                    0.125rem; /* 2px */
    --b47-radius-4:                    0.25rem;  /* 4px */
    --b47-radius-6:                    0.375rem; /* 6px */
    --b47-radius-8:                    0.5rem;   /* 8px */
    --b47-radius-10:                   0.625rem; /* 10px */
    --b47-radius-12:                   0.75rem;  /* 12px */
    --b47-radius-14:                   0.875rem; /* 14px */
    --b47-radius-16:                   1rem;     /* 16px */
    --b47-radius-18:                   1.125rem; /* 18px */
    --b47-radius-20:                   1.25rem;  /* 20px */
    --b47-radius-22:                   1.375rem; /* 22px */
    --b47-radius-24:                   1.5rem;   /* 24px */
    --b47-radius-32:                   2rem;     /* 32px */
    --b47-radius-max:                  9999px;   /* pill/circle, intentionally uncapped */

    /* --- Backdrop Blurs --- */
    --b47-blur-0:                      blur(0px);
    --b47-blur-2:                      blur(2px);
    --b47-blur-4:                      blur(4px);
    --b47-blur-8:                      blur(8px);
    --b47-blur-12:                     blur(12px);
    --b47-blur-16:                     blur(16px);
    --b47-blur-24:                     blur(24px);
    --b47-blur-32:                     blur(32px);

    /* --- Z-INDEX SCALE --- */
    --b47-z-below:                       -1;
    --b47-z-default:                      0;
    --b47-z-above:                        1;
    --b47-z-top:                          2;
    --b47-z-dropdown:                  1000;
    --b47-z-sticky:                    1020;
    --b47-z-fixed:                     1030;
    --b47-z-overlay:                   1040;
    --b47-z-modal:                     1050;
    --b47-z-popover:                   1060;
    --b47-z-toast:                     1070;

    /* --- Shadows --- */
    --b47-shadow-xsmall:               0 1px 2px 0 var(--b47-black-alpha-05);
    --b47-shadow-small:                0 1px 3px 0 var(--b47-black-alpha-1), 
                                       0 1px 2px 0 var(--b47-black-alpha-06);
    --b47-shadow-medium:               0 4px 8px -2px var(--b47-black-alpha-1), 
                                       0 2px 4px -2px var(--b47-black-alpha-06);
    --b47-shadow-large:                0 12px 16px -4px var(--b47-black-alpha-08), 
                                       0 4px 6px -2px var(--b47-black-alpha-03);
    --b47-shadow-xlarge:               0 20px 24px -4px var(--b47-black-alpha-08), 
                                       0 8px 8px -4px var(--b47-black-alpha-03);
    --b47-shadow-xxlarge:              0 24px 48px -12px var(--b47-black-alpha-18);
    --b47-shadow-xxxlarge:             0 32px 64px -12px var(--b47-black-alpha-14);
    --b47-shadow-primary:              0 0 0 4px var(--b47-primary-alpha-15);
    --b47-shadow-inner:                inset 0 2px 4px 0 var(--b47-black-alpha-04);   
}

/* --- Responsive --- */
@media only screen and (max-width: 1024px) {
    :root {
        /* --- Section Vertical Padding (Tablet) --- */
        --b47-padding-section-small:   2rem;
        --b47-padding-section-medium:  3.75rem;
        --b47-padding-section-large:   5rem;
        --b47-padding-section-xlarge:  7.5rem;

        /* --- Global Horizontal Padding (Tablet) --- */
        --b47-padding-global:          1.5rem;
    }
}

@media only screen and (max-width: 599px) {
    :root {
        /* --- Section Vertical Padding (Mobile) --- */
        --b47-padding-section-small:   1.5rem;
        --b47-padding-section-medium:  3rem;
        --b47-padding-section-large:   3.75rem;
        --b47-padding-section-xlarge:  5rem;

        /* --- Global Horizontal Padding (Mobile) --- */
        --b47-padding-global:          1rem;
    }
}

/* ------------------------ LAYOUT & SIZES CLASSES ------------------------ */

/* --- Width Utilities --- */
.container-small                       { --content-width: min(100%, var(--b47-container-small)) !important; max-width: var(--b47-container-small) !important;  width: 100%; margin-left: auto; margin-right: auto; }
.container-medium                      { --content-width: min(100%, var(--b47-container-medium)) !important; max-width: var(--b47-container-medium) !important; width: 100%; margin-left: auto; margin-right: auto; }
.container-large                       { --content-width: min(100%, var(--b47-container-large)) !important; max-width: var(--b47-container-large) !important;  width: 100%; margin-left: auto; margin-right: auto; }
.container-small.e-con-boxed,
.container-medium.e-con-boxed,
.container-large.e-con-boxed           { max-width: none !important; }
.max-width-xxsmall                     { max-width: var(--b47-max-width-xxsmall) !important; width: 100% !important; }
.max-width-xsmall                      { max-width: var(--b47-max-width-xsmall) !important; width: 100% !important; }
.max-width-small                       { max-width: var(--b47-max-width-small) !important; width: 100% !important; }
.max-width-medium                      { max-width: var(--b47-max-width-medium) !important; width: 100% !important; }
.max-width-large                       { max-width: var(--b47-max-width-large) !important; width: 100% !important; }
.max-width-xlarge                      { max-width: var(--b47-max-width-xlarge) !important; width: 100% !important; }
.max-width-xxlarge                     { max-width: var(--b47-max-width-xxlarge) !important; width: 100% !important; }

/* --- Height Utilities --- */
.is-stretch                            { align-self: stretch !important; }
.is-stretch-content                    { height: 100% !important; }

/* --- Min-Height Utilities --- */
.min-height-xsmall                     { min-height: var(--b47-min-height-xsmall) !important; }
.min-height-small                      { min-height: var(--b47-min-height-small) !important; }
.min-height-medium                     { min-height: var(--b47-min-height-medium) !important; }
.min-height-large                      { min-height: var(--b47-min-height-large) !important; }
.min-height-xlarge                     { min-height: var(--b47-min-height-xlarge) !important; }
.min-height-xxlarge                    { min-height: var(--b47-min-height-xxlarge) !important; }
.min-height-max                        { min-height: var(--b47-min-height-max) !important; }

/* --- Vertical Padding Utilities --- */
.padding-y-0                           { padding-top: 0 !important; padding-bottom: 0 !important; }
.padding-y-tiny                        { padding-top: var(--b47-spacing-2) !important;   padding-bottom: var(--b47-spacing-2) !important; }
.padding-y-xxsmall                     { padding-top: var(--b47-spacing-4) !important;   padding-bottom: var(--b47-spacing-4) !important; }
.padding-y-xsmall                      { padding-top: var(--b47-spacing-8) !important;   padding-bottom: var(--b47-spacing-8) !important; }
.padding-y-small                       { padding-top: var(--b47-spacing-16) !important;  padding-bottom: var(--b47-spacing-16) !important; }
.padding-y-medium                      { padding-top: var(--b47-spacing-32) !important;  padding-bottom: var(--b47-spacing-32) !important; }
.padding-y-large                       { padding-top: var(--b47-spacing-48) !important;  padding-bottom: var(--b47-spacing-48) !important; }
.padding-y-xlarge                      { padding-top: var(--b47-spacing-64) !important;  padding-bottom: var(--b47-spacing-64) !important; }
.padding-y-xxlarge                     { padding-top: var(--b47-spacing-80) !important;  padding-bottom: var(--b47-spacing-80) !important; }
.padding-y-huge                        { padding-top: var(--b47-spacing-96) !important;  padding-bottom: var(--b47-spacing-96) !important; }
.padding-y-xhuge                       { padding-top: var(--b47-spacing-128) !important; padding-bottom: var(--b47-spacing-128) !important; }
.padding-y-xxhuge                      { padding-top: var(--b47-spacing-160) !important; padding-bottom: var(--b47-spacing-160) !important; }

/* --- Horizontal Padding Utilities --- */
.padding-global                        { padding-left: var(--b47-padding-global) !important; padding-right: var(--b47-padding-global) !important; }
.padding-x-0                           { padding-left: 0 !important; padding-right: 0 !important; }
.padding-x-tiny                        { padding-left: var(--b47-spacing-2) !important;   padding-right: var(--b47-spacing-2) !important; }
.padding-x-xxsmall                     { padding-left: var(--b47-spacing-4) !important;   padding-right: var(--b47-spacing-4) !important; }
.padding-x-xsmall                      { padding-left: var(--b47-spacing-8) !important;   padding-right: var(--b47-spacing-8) !important; }
.padding-x-small                       { padding-left: var(--b47-spacing-16) !important;  padding-right: var(--b47-spacing-16) !important; }
.padding-x-medium                      { padding-left: var(--b47-spacing-32) !important;  padding-right: var(--b47-spacing-32) !important; }
.padding-x-large                       { padding-left: var(--b47-spacing-48) !important;  padding-right: var(--b47-spacing-48) !important; }
.padding-x-xlarge                      { padding-left: var(--b47-spacing-64) !important;  padding-right: var(--b47-spacing-64) !important; }
.padding-x-xxlarge                     { padding-left: var(--b47-spacing-80) !important;  padding-right: var(--b47-spacing-80) !important; }
.padding-x-huge                        { padding-left: var(--b47-spacing-96) !important;  padding-right: var(--b47-spacing-96) !important; }
.padding-x-xhuge                       { padding-left: var(--b47-spacing-128) !important; padding-right: var(--b47-spacing-128) !important; }
.padding-x-xxhuge                      { padding-left: var(--b47-spacing-160) !important; padding-right: var(--b47-spacing-160) !important; }

/* --- Section Utilities --- */
.padding-section                       { padding: var(--b47-padding-section-medium) var(--b47-padding-global); }
.padding-section.header-offset         { padding-top: calc(var(--b47-padding-section-medium) + var(--b47-header-height-top, var(--b47-header-height))) !important; }
.padding-section.is-half-top           { padding-top: calc(var(--b47-padding-section-medium) / 2); }
.padding-section.is-half-bottom        { padding-bottom: calc(var(--b47-padding-section-medium) / 2); }
.padding-section.is-flush              { padding-top: 0; padding-bottom: 0; }

.padding-section-small                 { padding-top: var(--b47-padding-section-small);  padding-bottom: var(--b47-padding-section-small); }
.padding-section-medium                { padding-top: var(--b47-padding-section-medium); padding-bottom: var(--b47-padding-section-medium); }
.padding-section-large                 { padding-top: var(--b47-padding-section-large);  padding-bottom: var(--b47-padding-section-large); }
.padding-section-xlarge                { padding-top: var(--b47-padding-section-xlarge); padding-bottom: var(--b47-padding-section-xlarge); }

/* --- Header Offset --- */
.header-offset                         { padding-top: var(--b47-header-height-top, var(--b47-header-height)); }
.header-offset.padding-section-small   { padding-top: calc(var(--b47-padding-section-small)  + var(--b47-header-height-top, var(--b47-header-height))); }
.header-offset.padding-section-medium  { padding-top: calc(var(--b47-padding-section-medium) + var(--b47-header-height-top, var(--b47-header-height))); }
.header-offset.padding-section-large   { padding-top: calc(var(--b47-padding-section-large)  + var(--b47-header-height-top, var(--b47-header-height))); }
.header-offset.padding-section-xlarge  { padding-top: calc(var(--b47-padding-section-xlarge) + var(--b47-header-height-top, var(--b47-header-height))); }

/* --- Sticky Utilities --- */
.sticky-top                            { position: sticky !important; align-self: flex-start !important; top: calc(var(--b47-header-height-top, var(--b47-header-height)) + var(--b47-sticky-gap) + var(--b47-sticky-step) * var(--b47-sticky-index, 0)) !important; }
.sticky-step-1                         { --b47-sticky-index: 1; }
.sticky-step-2                         { --b47-sticky-index: 2; }
.sticky-step-3                         { --b47-sticky-index: 3; }
.sticky-step-4                         { --b47-sticky-index: 4; }

@media only screen and (min-width: 1025px) {
    .sticky-top.desktop-off            { position: static !important; align-self: auto !important; top: auto !important; }
}

@media only screen and (min-width: 600px) and (max-width: 1024px) {
    .sticky-top.tablet-off             { position: static !important; align-self: auto !important; top: auto !important; }
}

@media only screen and (max-width: 599px) {
    .sticky-top.mobile-off             { position: static !important; align-self: auto !important; top: auto !important; }
}

/* --- Aspect Ratio Utilities --- */
.aspect-ratio-square                   { aspect-ratio: 1; object-fit: cover; }
.aspect-ratio-portrait                 { aspect-ratio: 3 / 4; object-fit: cover; }
.aspect-ratio-landscape                { aspect-ratio: 4 / 3; object-fit: cover; }
.aspect-ratio-widescreen               { aspect-ratio: 16 / 9; object-fit: cover; }
.aspect-ratio-ultrawide                { aspect-ratio: 21 / 9; }
.aspect-ratio-vertical                 { aspect-ratio: 9 / 16; }

/* --- Other Utilities --- */
.cover-image                                              { position: relative; overflow: hidden; }
.cover-image .elementor-widget-image,
.cover-image .elementor-widget-image .elementor-widget-container,
.cover-image .elementor-widget-image a                    { position: absolute; inset: 0; display: block; }
.cover-image .elementor-widget-image img                  { display: block; width: 100% !important; height: 100% !important; object-fit: cover !important; object-position: center !important; }
.cover-image.is-object-top .elementor-widget-image img    { object-position: top !important; }
.cover-image.is-object-bottom .elementor-widget-image img { object-position: bottom !important; }
.cover-image.is-object-left .elementor-widget-image img   { object-position: left center !important; }
.cover-image.is-object-right .elementor-widget-image img  { object-position: right center !important; }
.overflow-hidden                       { overflow: hidden !important; }
.overflow-visible                      { overflow: visible !important; }
.fit-content                           { width: fit-content !important; }
.desktop-br                            { display: inline !important; }
.tablet-br                             { display: none !important; }
.mobile-br                             { display: none !important; }
.pointer-events-none                   { pointer-events: none !important; }
.pointer-events-auto                   { pointer-events: auto !important; }

/* --- Visibility Utilities --- */
.hide                                  { display: none !important; }
.hide-visually                         { position: absolute !important; width: 1px !important; height: 1px !important; margin: -1px !important; padding: 0 !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
.show-tablet,
.show-mobile,
.tablet-br,
.mobile-br                             { display: none !important; }

@media only screen and (max-width: 1024px) {
    .hide-tablet                       { display: none !important; }
    .desktop-br                        { display: none !important; }
    .tablet-br                         { display: inline !important; }
    .show-tablet                       { display: revert !important; }
}

@media only screen and (max-width: 599px) {
    .hide-mobile                       { display: none !important; }
    .show-tablet                       { display: none !important; }
    .show-mobile                       { display: revert !important; }
    .tablet-br                         { display: none !important; }
    .mobile-br                         { display: inline !important; }
}

/* --- Icon Size Utilities --- */
.icon-xxsmall .elementor-icon          { font-size: var(--b47-spacing-12) !important; width: var(--b47-spacing-12) !important; height: var(--b47-spacing-12) !important; }
.icon-xsmall .elementor-icon           { font-size: var(--b47-spacing-16) !important; width: var(--b47-spacing-16) !important; height: var(--b47-spacing-16) !important; }
.icon-small .elementor-icon            { font-size: var(--b47-spacing-20) !important; width: var(--b47-spacing-20) !important; height: var(--b47-spacing-20) !important; }
.icon-medium .elementor-icon           { font-size: var(--b47-spacing-24) !important; width: var(--b47-spacing-24) !important; height: var(--b47-spacing-24) !important; }
.icon-large .elementor-icon            { font-size: var(--b47-spacing-32) !important; width: var(--b47-spacing-32) !important; height: var(--b47-spacing-32) !important; }
.icon-xlarge .elementor-icon           { font-size: var(--b47-spacing-40) !important; width: var(--b47-spacing-40) !important; height: var(--b47-spacing-40) !important; }
.icon-xxlarge .elementor-icon          { font-size: var(--b47-spacing-48) !important; width: var(--b47-spacing-48) !important; height: var(--b47-spacing-48) !important; }
.icon-huge .elementor-icon             { font-size: var(--b47-spacing-64) !important; width: var(--b47-spacing-64) !important; height: var(--b47-spacing-64) !important; }

/* ------------------ TRANSITIONS & ANIMATIONS VARIABLES ------------------ */    

:root {
    /* --- Opacity --- */
    --b47-opacity-0:                  0;
    --b47-opacity-10:                 0.1;
    --b47-opacity-20:                 0.2;
    --b47-opacity-40:                 0.4;
    --b47-opacity-50:                 0.5;
    --b47-opacity-60:                 0.6;
    --b47-opacity-70:                 0.7;
    --b47-opacity-80:                 0.8;
    --b47-opacity-90:                 0.9;
    --b47-opacity-100:                1;

    /* --- Transform Scale --- */
    --b47-scale-90:                   scale(0.90);
    --b47-scale-95:                   scale(0.95);
    --b47-scale-98:                   scale(0.98);
    --b47-scale-100:                  scale(1);
    --b47-scale-101:                  scale(1.01);
    --b47-scale-102:                  scale(1.02);
    --b47-scale-103:                  scale(1.03);
    --b47-scale-104:                  scale(1.04);
    --b47-scale-105:                  scale(1.05);

    /* --- Transform Translate --- */
    --b47-translate-0:                0px;
    --b47-translate-4:                4px;
    --b47-translate-8:                8px;
    --b47-translate-12:               12px;
    --b47-translate-16:               16px;
    --b47-translate-20:               20px;
    --b47-translate-32:               32px;
    --b47-translate-48:               48px;
    --b47-translate-4-n:              -4px;
    --b47-translate-8-n:              -8px;
    --b47-translate-12-n:             -12px;
    --b47-translate-16-n:             -16px;
    --b47-translate-20-n:             -20px;
    --b47-translate-32-n:             -32px;
    --b47-translate-48-n:             -48px;

    /* --- Transform Rotate --- */
    --b47-rotate-0:                   0deg;
    --b47-rotate-3:                   3deg;
    --b47-rotate-6:                   6deg;
    --b47-rotate-12:                  12deg;
    --b47-rotate-45:                  45deg;
    --b47-rotate-90:                  90deg;
    --b47-rotate-360:                 360deg;

    /* --- Duration --- */
    --b47-duration-none:              0ms;
    --b47-duration-fast:              150ms;
    --b47-duration-base:              300ms;
    --b47-duration-slow:              500ms;
    --b47-duration-loop:              2s;    /* loop animation cycle */
    --b47-duration-spin:              1s;    /* spin is faster by design */

    /* --- Delay --- */
    --b47-delay-100:                  100ms;
    --b47-delay-200:                  200ms;
    --b47-delay-300:                  300ms;
    --b47-delay-400:                  400ms;
    
    /* --- Easing --- */
    --b47-ease:                       ease;
    --b47-ease-in:                    ease-in;
    --b47-ease-out:                   ease-out;
    --b47-ease-in-out:                ease-in-out;
    --b47-ease-spring:                cubic-bezier(0.34, 1.56, 0.64, 1);

/* ------------------- TRANSITIONS & ANIMATION SHORTCUTS ------------------- */

    /* --- Transitions --- */
    --b47-transition-fast:            var(--b47-duration-fast) var(--b47-ease-out);
    --b47-transition-base:            var(--b47-duration-base) var(--b47-ease-out);
    --b47-transition-slow:            var(--b47-duration-slow) var(--b47-ease-out);

    /* --- Loop Animations --- */
    --b47-animation-loop-up:          b47-loop-up    var(--b47-duration-loop) var(--b47-ease-in-out) infinite;
    --b47-animation-loop-down:        b47-loop-down  var(--b47-duration-loop) var(--b47-ease-in-out) infinite;
    --b47-animation-loop-right:       b47-loop-right var(--b47-duration-loop) var(--b47-ease-in-out) infinite;
    --b47-animation-loop-left:        b47-loop-left  var(--b47-duration-loop) var(--b47-ease-in-out) infinite;
    --b47-animation-pulse:            b47-pulse      var(--b47-duration-loop) var(--b47-ease-in-out) infinite;
    --b47-animation-spin:             b47-spin       var(--b47-duration-spin) linear infinite;
    --b47-animation-bounce:           b47-bounce     var(--b47-duration-loop) infinite;

}

/* --- Loop Keyframes --- */
@keyframes b47-loop-up                { 0%, 100% { transform: translateY(var(--b47-translate-0)); } 50% { transform: translateY(var(--b47-loop-distance)); } }
@keyframes b47-loop-down              { 0%, 100% { transform: translateY(var(--b47-translate-0)); } 50% { transform: translateY(var(--b47-loop-distance)); } }
@keyframes b47-loop-right             { 0%, 100% { transform: translateX(var(--b47-translate-0)); } 50% { transform: translateX(var(--b47-loop-distance)); } }
@keyframes b47-loop-left              { 0%, 100% { transform: translateX(var(--b47-translate-0)); } 50% { transform: translateX(var(--b47-loop-distance)); } }
@keyframes b47-pulse                  { 0%, 100% { opacity: var(--b47-opacity-100); } 50% { opacity: var(--b47-opacity-50); } }
@keyframes b47-spin                   { from { transform: rotate(var(--b47-rotate-0)); } to { transform: rotate(var(--b47-rotate-360)); } }
@keyframes b47-bounce                 { 0%, 100% { transform: translateY(var(--b47-translate-0)); animation-timing-function: var(--b47-ease-out); } 50% { transform: translateY(var(--b47-translate-12-n)); animation-timing-function: var(--b47-ease-in); } }

/* --- Entry Keyframes --- */
@keyframes b47-fade-in                { from { opacity: var(--b47-opacity-0); } to { opacity: var(--b47-opacity-100); } }
@keyframes b47-slide-in-up            { from { opacity: var(--b47-opacity-0); transform: translateY(var(--b47-translate-32)); } to { opacity: var(--b47-opacity-100); transform: translateY(var(--b47-translate-0)); } }
@keyframes b47-slide-in-down          { from { opacity: var(--b47-opacity-0); transform: translateY(var(--b47-translate-32-n)); } to { opacity: var(--b47-opacity-100); transform: translateY(var(--b47-translate-0)); } }
@keyframes b47-zoom-in                { from { opacity: var(--b47-opacity-0); transform: var(--b47-scale-95); } to { opacity: var(--b47-opacity-100); transform: var(--b47-scale-100); } }
@keyframes b47-blur-in                { from { opacity: var(--b47-opacity-0); filter: var(--b47-blur-8); } to { opacity: var(--b47-opacity-100); filter: var(--b47-blur-0); } }

/* -------------------- TRANSITIONS & ANIMATION CLASSES -------------------- */

[class*="grow-"],
[class*="shift-up-"],
[class*="shift-down-"],
[class*="shift-right-"],
[class*="shift-left-"] {              transition: transform var(--b47-transition-fast); will-change: transform; transform-origin: center center; }

/* --- Grow — scale on hover --- */
.grow-xsmall:hover                    { transform: var(--b47-scale-101); transition: transform var(--b47-transition-fast); }
.grow-small:hover                     { transform: var(--b47-scale-102); transition: transform var(--b47-transition-fast); }
.grow-medium:hover                    { transform: var(--b47-scale-103); transition: transform var(--b47-transition-fast); }
.grow-large:hover                     { transform: var(--b47-scale-104); transition: transform var(--b47-transition-fast); }
.grow-xlarge:hover                    { transform: var(--b47-scale-105); transition: transform var(--b47-transition-fast); }

/* --- Shift — translate on hover --- */
.shift-up-xsmall:hover                { transform: translateY(var(--b47-translate-4-n));  transition: transform var(--b47-transition-fast); }
.shift-up-small:hover                 { transform: translateY(var(--b47-translate-8-n));  transition: transform var(--b47-transition-fast); }
.shift-up-medium:hover                { transform: translateY(var(--b47-translate-12-n)); transition: transform var(--b47-transition-fast); }
.shift-up-large:hover                 { transform: translateY(var(--b47-translate-16-n)); transition: transform var(--b47-transition-fast); }
.shift-up-xlarge:hover                { transform: translateY(var(--b47-translate-20-n)); transition: transform var(--b47-transition-fast); }

.shift-down-xsmall:hover              { transform: translateY(var(--b47-translate-4));  transition: transform var(--b47-transition-fast); }
.shift-down-small:hover               { transform: translateY(var(--b47-translate-8));  transition: transform var(--b47-transition-fast); }
.shift-down-medium:hover              { transform: translateY(var(--b47-translate-12)); transition: transform var(--b47-transition-fast); }
.shift-down-large:hover               { transform: translateY(var(--b47-translate-16)); transition: transform var(--b47-transition-fast); }
.shift-down-xlarge:hover              { transform: translateY(var(--b47-translate-20)); transition: transform var(--b47-transition-fast); }

.shift-right-xsmall:hover             { transform: translateX(var(--b47-translate-4));  transition: transform var(--b47-transition-fast); }
.shift-right-small:hover              { transform: translateX(var(--b47-translate-8));  transition: transform var(--b47-transition-fast); }
.shift-right-medium:hover             { transform: translateX(var(--b47-translate-12)); transition: transform var(--b47-transition-fast); }
.shift-right-large:hover              { transform: translateX(var(--b47-translate-16)); transition: transform var(--b47-transition-fast); }
.shift-right-xlarge:hover             { transform: translateX(var(--b47-translate-20)); transition: transform var(--b47-transition-fast); }

.shift-left-xsmall:hover              { transform: translateX(var(--b47-translate-4-n));  transition: transform var(--b47-transition-fast); }
.shift-left-small:hover               { transform: translateX(var(--b47-translate-8-n));  transition: transform var(--b47-transition-fast); }
.shift-left-medium:hover              { transform: translateX(var(--b47-translate-12-n)); transition: transform var(--b47-transition-fast); }
.shift-left-large:hover               { transform: translateX(var(--b47-translate-16-n)); transition: transform var(--b47-transition-fast); }
.shift-left-xlarge:hover              { transform: translateX(var(--b47-translate-20-n)); transition: transform var(--b47-transition-fast); }

/* --- Loop — translate on loop --- */
.loop-up-xsmall                       { --b47-loop-distance: var(--b47-translate-4-n);  animation: var(--b47-animation-loop-up); }
.loop-up-small                        { --b47-loop-distance: var(--b47-translate-8-n);  animation: var(--b47-animation-loop-up); }
.loop-up-medium                       { --b47-loop-distance: var(--b47-translate-12-n); animation: var(--b47-animation-loop-up); }
.loop-up-large                        { --b47-loop-distance: var(--b47-translate-16-n); animation: var(--b47-animation-loop-up); }
.loop-up-xlarge                       { --b47-loop-distance: var(--b47-translate-20-n); animation: var(--b47-animation-loop-up); }

.loop-down-xsmall                     { --b47-loop-distance: var(--b47-translate-4);   animation: var(--b47-animation-loop-down); }
.loop-down-small                      { --b47-loop-distance: var(--b47-translate-8);   animation: var(--b47-animation-loop-down); }
.loop-down-medium                     { --b47-loop-distance: var(--b47-translate-12);  animation: var(--b47-animation-loop-down); }
.loop-down-large                      { --b47-loop-distance: var(--b47-translate-16);  animation: var(--b47-animation-loop-down); }
.loop-down-xlarge                     { --b47-loop-distance: var(--b47-translate-20);  animation: var(--b47-animation-loop-down); }

.loop-right-xsmall                    { --b47-loop-distance: var(--b47-translate-4);   animation: var(--b47-animation-loop-right); }
.loop-right-small                     { --b47-loop-distance: var(--b47-translate-8);   animation: var(--b47-animation-loop-right); }
.loop-right-medium                    { --b47-loop-distance: var(--b47-translate-12);  animation: var(--b47-animation-loop-right); }
.loop-right-large                     { --b47-loop-distance: var(--b47-translate-16);  animation: var(--b47-animation-loop-right); }
.loop-right-xlarge                    { --b47-loop-distance: var(--b47-translate-20);  animation: var(--b47-animation-loop-right); }

.loop-left-xsmall                     { --b47-loop-distance: var(--b47-translate-4-n);  animation: var(--b47-animation-loop-left); }
.loop-left-small                      { --b47-loop-distance: var(--b47-translate-8-n);  animation: var(--b47-animation-loop-left); }
.loop-left-medium                     { --b47-loop-distance: var(--b47-translate-12-n); animation: var(--b47-animation-loop-left); }
.loop-left-large                      { --b47-loop-distance: var(--b47-translate-16-n); animation: var(--b47-animation-loop-left); }
.loop-left-xlarge                     { --b47-loop-distance: var(--b47-translate-20-n); animation: var(--b47-animation-loop-left); }

/* --- Loop on hover --- */

/* --- Loop on hover --- */
.loop-up-xsmall-hover                 { --b47-loop-distance: var(--b47-translate-4-n);  animation: var(--b47-animation-loop-up);    animation-play-state: paused; }
.loop-up-small-hover                  { --b47-loop-distance: var(--b47-translate-8-n);  animation: var(--b47-animation-loop-up);    animation-play-state: paused; }
.loop-up-medium-hover                 { --b47-loop-distance: var(--b47-translate-12-n); animation: var(--b47-animation-loop-up);    animation-play-state: paused; }
.loop-up-large-hover                  { --b47-loop-distance: var(--b47-translate-16-n); animation: var(--b47-animation-loop-up);    animation-play-state: paused; }
.loop-up-xlarge-hover                 { --b47-loop-distance: var(--b47-translate-20-n); animation: var(--b47-animation-loop-up);    animation-play-state: paused; }

.loop-down-xsmall-hover               { --b47-loop-distance: var(--b47-translate-4);    animation: var(--b47-animation-loop-down);  animation-play-state: paused; }
.loop-down-small-hover                { --b47-loop-distance: var(--b47-translate-8);    animation: var(--b47-animation-loop-down);  animation-play-state: paused; }
.loop-down-medium-hover               { --b47-loop-distance: var(--b47-translate-12);   animation: var(--b47-animation-loop-down);  animation-play-state: paused; }
.loop-down-large-hover                { --b47-loop-distance: var(--b47-translate-16);   animation: var(--b47-animation-loop-down);  animation-play-state: paused; }
.loop-down-xlarge-hover               { --b47-loop-distance: var(--b47-translate-20);   animation: var(--b47-animation-loop-down);  animation-play-state: paused; }

.loop-right-xsmall-hover              { --b47-loop-distance: var(--b47-translate-4);    animation: var(--b47-animation-loop-right); animation-play-state: paused; }
.loop-right-small-hover               { --b47-loop-distance: var(--b47-translate-8);    animation: var(--b47-animation-loop-right); animation-play-state: paused; }
.loop-right-medium-hover              { --b47-loop-distance: var(--b47-translate-12);   animation: var(--b47-animation-loop-right); animation-play-state: paused; }
.loop-right-large-hover               { --b47-loop-distance: var(--b47-translate-16);   animation: var(--b47-animation-loop-right); animation-play-state: paused; }
.loop-right-xlarge-hover              { --b47-loop-distance: var(--b47-translate-20);   animation: var(--b47-animation-loop-right); animation-play-state: paused; }

.loop-left-xsmall-hover               { --b47-loop-distance: var(--b47-translate-4-n);  animation: var(--b47-animation-loop-left);  animation-play-state: paused; }
.loop-left-small-hover                { --b47-loop-distance: var(--b47-translate-8-n);  animation: var(--b47-animation-loop-left);  animation-play-state: paused; }
.loop-left-medium-hover               { --b47-loop-distance: var(--b47-translate-12-n); animation: var(--b47-animation-loop-left);  animation-play-state: paused; }
.loop-left-large-hover                { --b47-loop-distance: var(--b47-translate-16-n); animation: var(--b47-animation-loop-left);  animation-play-state: paused; }
.loop-left-xlarge-hover               { --b47-loop-distance: var(--b47-translate-20-n); animation: var(--b47-animation-loop-left);  animation-play-state: paused; }

.loop-up-xsmall-hover:hover,
.loop-up-small-hover:hover,
.loop-up-medium-hover:hover,
.loop-up-large-hover:hover,
.loop-up-xlarge-hover:hover           { animation: var(--b47-animation-loop-up); }

.loop-down-xsmall-hover:hover,
.loop-down-small-hover:hover,
.loop-down-medium-hover:hover,
.loop-down-large-hover:hover,
.loop-down-xlarge-hover:hover         { animation: var(--b47-animation-loop-down); }

.loop-right-xsmall-hover:hover,
.loop-right-small-hover:hover,
.loop-right-medium-hover:hover,
.loop-right-large-hover:hover,
.loop-right-xlarge-hover:hover        { animation: var(--b47-animation-loop-right); }

.loop-left-xsmall-hover:hover,
.loop-left-small-hover:hover,
.loop-left-medium-hover:hover,
.loop-left-large-hover:hover,
.loop-left-xlarge-hover:hover         { animation: var(--b47-animation-loop-left); }

/* --- Pulse / Spin / Bounce --- */
.animate-pulse                        { animation: var(--b47-animation-pulse); }
.animate-spin                         { animation: var(--b47-animation-spin); }
.animate-bounce                       { animation: var(--b47-animation-bounce); }

/* --- Pulse / Spin / Bounce on hover --- */
.animate-pulse-hover:hover            { animation: var(--b47-animation-pulse); }
.animate-spin-hover:hover             { animation: var(--b47-animation-spin); }
.animate-bounce-hover:hover           { animation: var(--b47-animation-bounce); }

/* --- Entry — variables only, animation fires on animate-in --- */
.fade-in-100                          { --b47-anim: b47-fade-in;     --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-100); }
.fade-in-200                          { --b47-anim: b47-fade-in;     --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-200); }
.fade-in-300                          { --b47-anim: b47-fade-in;     --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-300); }
.fade-in-400                          { --b47-anim: b47-fade-in;     --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-400); }
.fade-in-slow-100                     { --b47-anim: b47-fade-in;     --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-100); }
.fade-in-slow-200                     { --b47-anim: b47-fade-in;     --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-200); }
.fade-in-slow-300                     { --b47-anim: b47-fade-in;     --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-300); }
.fade-in-slow-400                     { --b47-anim: b47-fade-in;     --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-400); }
.fade-in-fast-100                     { --b47-anim: b47-fade-in;     --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-100); }
.fade-in-fast-200                     { --b47-anim: b47-fade-in;     --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-200); }
.fade-in-fast-300                     { --b47-anim: b47-fade-in;     --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-300); }
.fade-in-fast-400                     { --b47-anim: b47-fade-in;     --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-400); }

.slide-in-up-100                      { --b47-anim: b47-slide-in-up; --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-100); }
.slide-in-up-200                      { --b47-anim: b47-slide-in-up; --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-200); }
.slide-in-up-300                      { --b47-anim: b47-slide-in-up; --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-300); }
.slide-in-up-400                      { --b47-anim: b47-slide-in-up; --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-400); }
.slide-in-up-slow-100                 { --b47-anim: b47-slide-in-up; --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-100); }
.slide-in-up-slow-200                 { --b47-anim: b47-slide-in-up; --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-200); }
.slide-in-up-slow-300                 { --b47-anim: b47-slide-in-up; --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-300); }
.slide-in-up-slow-400                 { --b47-anim: b47-slide-in-up; --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-400); }
.slide-in-up-fast-100                 { --b47-anim: b47-slide-in-up; --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-100); }
.slide-in-up-fast-200                 { --b47-anim: b47-slide-in-up; --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-200); }
.slide-in-up-fast-300                 { --b47-anim: b47-slide-in-up; --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-300); }
.slide-in-up-fast-400                 { --b47-anim: b47-slide-in-up; --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-400); }

.slide-in-down-100                    { --b47-anim: b47-slide-in-down; --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-100); }
.slide-in-down-200                    { --b47-anim: b47-slide-in-down; --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-200); }
.slide-in-down-300                    { --b47-anim: b47-slide-in-down; --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-300); }
.slide-in-down-400                    { --b47-anim: b47-slide-in-down; --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-400); }
.slide-in-down-slow-100               { --b47-anim: b47-slide-in-down; --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-100); }
.slide-in-down-slow-200               { --b47-anim: b47-slide-in-down; --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-200); }
.slide-in-down-slow-300               { --b47-anim: b47-slide-in-down; --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-300); }
.slide-in-down-slow-400               { --b47-anim: b47-slide-in-down; --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-400); }
.slide-in-down-fast-100               { --b47-anim: b47-slide-in-down; --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-100); }
.slide-in-down-fast-200               { --b47-anim: b47-slide-in-down; --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-200); }
.slide-in-down-fast-300               { --b47-anim: b47-slide-in-down; --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-300); }
.slide-in-down-fast-400               { --b47-anim: b47-slide-in-down; --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-400); }

.zoom-in-100                          { --b47-anim: b47-zoom-in;     --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-100); }
.zoom-in-200                          { --b47-anim: b47-zoom-in;     --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-200); }
.zoom-in-300                          { --b47-anim: b47-zoom-in;     --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-300); }
.zoom-in-400                          { --b47-anim: b47-zoom-in;     --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-400); }
.zoom-in-slow-100                     { --b47-anim: b47-zoom-in;     --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-100); }
.zoom-in-slow-200                     { --b47-anim: b47-zoom-in;     --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-200); }
.zoom-in-slow-300                     { --b47-anim: b47-zoom-in;     --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-300); }
.zoom-in-slow-400                     { --b47-anim: b47-zoom-in;     --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-400); }
.zoom-in-fast-100                     { --b47-anim: b47-zoom-in;     --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-100); }
.zoom-in-fast-200                     { --b47-anim: b47-zoom-in;     --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-200); }
.zoom-in-fast-300                     { --b47-anim: b47-zoom-in;     --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-300); }
.zoom-in-fast-400                     { --b47-anim: b47-zoom-in;     --b47-anim-duration: var(--b47-duration-fast); --b47-anim-delay: var(--b47-delay-400); }

.blur-in-100                          { --b47-anim: b47-blur-in; --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-100); }
.blur-in-200                          { --b47-anim: b47-blur-in; --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-200); }
.blur-in-300                          { --b47-anim: b47-blur-in; --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-300); }
.blur-in-400                          { --b47-anim: b47-blur-in; --b47-anim-duration: var(--b47-duration-slow); --b47-anim-delay: var(--b47-delay-400); }
.blur-in-fast-100                     { --b47-anim: b47-blur-in; --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-100); }
.blur-in-fast-200                     { --b47-anim: b47-blur-in; --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-200); }
.blur-in-fast-300                     { --b47-anim: b47-blur-in; --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-300); }
.blur-in-fast-400                     { --b47-anim: b47-blur-in; --b47-anim-duration: var(--b47-duration-base); --b47-anim-delay: var(--b47-delay-400); }

/* --- Observer trigger --- */
body:not(.elementor-editor-active)     [class*="fade-in-"]:not(.animate-in), body:not(.elementor-editor-active) [class*="slide-in-up-"]:not(.animate-in), body:not(.elementor-editor-active) [class*="slide-in-down-"]:not(.animate-in), body:not(.elementor-editor-active) [class*="zoom-in-"]:not(.animate-in), body:not(.elementor-editor-active) [class*="blur-in-"]:not(.animate-in) { opacity: 0; }
.animate-in                            { animation: var(--b47-anim) var(--b47-anim-duration) var(--b47-ease-out) both; animation-delay: var(--b47-anim-delay); }

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ II. DEVELOPMENT ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* ----------------------------- RESETS & BASE ----------------------------- */

:focus                                        { outline: none; }
/* :focus-visible                                { outline: 1px solid var(--b47-primary-color); outline-offset: 1px; } */
html                                          { scroll-behavior: smooth; background-color: var(--b47-primary-background-color); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
html:has(.is-inverse-page)                    { background-color: var(--b47-inverse-primary-background-color); }
.page-header                                  { display: none;}
p:first-child                                 { margin-block-start: var(--b47-spacing-none) !important; }
p:last-child                                  { margin-block-end: var(--b47-spacing-none) !important; }
.elementor-editor-active .main-header        { position: relative !important; top: auto !important; left: auto !important; width: 100% !important; transform:  none !important; }
.elementor-popup-modal .dialog-widget-content { background: transparent; }
ul, ol                                        { padding-inline-start: 0; margin-block-start: 0; margin-block-end: 0; list-style: none; }
li {
    font-family:    var(--b47-body-family);
    font-size:      var(--b47-body-small-size);
    font-weight:    var(--b47-body-regular-weight);
    line-height:    var(--b47-line-height-xlarge);
    color:          var(--b47-primary-text-color);
}
.elementor-icon-wrapper,
.elementor-widget-icon a,
.elementor-icon                               { display: flex; align-items: center; justify-content: center; width: fit-content; height: fit-content; transform: translateZ(0); }
.elementor-widget-icon svg,
.elementor-widget-icon                        { display: flex; align-items: center; justify-content: center; }
.e-con                                        { --text-align: initial; --padding-block-start: initial; --padding-block-end: initial; --padding-inline-end: initial; --padding-inline-start: initial; --margin-block-start: initial; --margin-block-end: initial; --margin-inline-end: initial; --margin-inline-start: initial; }
.e-con                                        { --container-max-width: var(--b47-container-large) !important; }

/* --- Policy Page --- */
.policy-content .policy-text h2 {
    font-family:        var(--b47-h4-family) !important;
    font-size:          var(--b47-h4-size) !important;
    font-weight:        var(--b47-h4-weight) !important;
    line-height:        var(--b47-h4-line-height) !important;
    letter-spacing:     var(--b47-h4-letter-spacing) !important;
    color:              var(--b47-heading-color) !important;
    margin-block-start: var(--b47-spacing-32) !important;
    margin-block-end:   var(--b47-spacing-16) !important;
}
.policy-content .policy-text h3 {
    font-family:        var(--b47-h4-family) !important;
    font-size:          var(--b47-h4-size) !important;
    font-weight:        var(--b47-h4-weight) !important;
    line-height:        var(--b47-h4-line-height) !important;
    letter-spacing:     var(--b47-h4-letter-spacing) !important;
    text-transform:     var(--b47-text-transform-none) !important;
    color:              var(--b47-heading-color) !important;
    margin-block-start: var(--b47-spacing-16) !important;
    margin-block-end:   var(--b47-spacing-10) !important;
}

/* ------------------------------ COMPONENTS ------------------------------- */

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ PRELOADER ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* ------------------------- PRELOADER VARIABLES --------------------------- */

:root {
    /* --- Preloader Variables --- */
    --b47-preloader-bg:                 var(--b47-primary-background-color);
    --b47-preloader-z:                  calc(var(--b47-z-toast) + 10);
    --b47-preloader-transition:         opacity var(--b47-transition-fast), visibility var(--b47-transition-fast);
    --b47-preloader-spinner-size:       var(--b47-spacing-40);          /* 40px */
    --b47-preloader-spinner-track:      var(--b47-default-border-color);
    --b47-preloader-spinner-border:     var(--b47-border-width) solid var(--b47-preloader-spinner-track);
    --b47-preloader-spinner-color:      var(--b47-primary-color);
    --b47-preloader-opacity:            var(--b47-opacity-100);
    --b47-preloader-opacity-hidden:     var(--b47-opacity-0);
    --b47-preloader-spinner-radius:     var(--b47-radius-max);
    --b47-preloader-spinner-animation:  b47-spin var(--b47-duration-spin) linear infinite;
}

/* -------------------------- PRELOADER CLASSES ---------------------------- */

#b47-preloader {
    position:                           fixed;
    inset:                              0;
    z-index:                            var(--b47-preloader-z);
    display:                            flex;
    align-items:                        center;
    justify-content:                    center;
    background-color:                   var(--b47-preloader-bg);
    opacity:                            var(--b47-preloader-opacity);
    transition:                         var(--b47-preloader-transition);
}
#b47-preloader.is-hidden {
    opacity:                            var(--b47-preloader-opacity-hidden);
    visibility:                         hidden;
}
.b47-preloader-spinner {
    width:                              var(--b47-preloader-spinner-size);
    height:                             var(--b47-preloader-spinner-size);
    border:                             var(--b47-preloader-spinner-border);
    border-top-color:                   var(--b47-preloader-spinner-color);
    border-radius:                      var(--b47-preloader-spinner-radius);
    animation:                          var(--b47-preloader-spinner-animation);
}

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ SCROLL INDICATOR ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* ----------------------- SCROLL INDICATOR VARIABLES ---------------------- */

.b47-scroll {
    /* --- Scroll Indicator --- */
    --b47-scroll-bottom-offset:         50px;
    --b47-scroll-width:                 20px;
    --b47-scroll-height:                35px;
    --b47-scroll-radius:                var(--b47-radius-max);
    --b47-scroll-border-color:          var(--b47-primary-text-color);
    --b47-scroll-border:                var(--b47-scroll-border-width) solid var(--b47-scroll-border-color);
    --b47-scroll-border-width:          var(--b47-border-width);
    --b47-scroll-wheel-width:           3px;
    --b47-scroll-wheel-height:          7px;
    --b47-scroll-wheel-color:           var(--b47-primary-text-color);
    --b47-scroll-wheel-top-start:       8px;
    --b47-scroll-transform:             translateX(-50%);
    --b47-scroll-animation:             b47-scroll-wheel 1.5s linear infinite alternate;
}

/* ------------------------ SCROLL INDICATOR CLASSES ----------------------- */

.b47-scroll {
    position:                           absolute;
    bottom:                             var(--b47-scroll-bottom-offset);
    left:                               50%;
    transform:                          var(--b47-scroll-transform);
}
.b47-scroll-indicator {
    position:                           relative;
    width:                              var(--b47-scroll-width);
    height:                             var(--b47-scroll-height);
    border:                             var(--b47-scroll-border);
    border-radius:                      var(--b47-scroll-radius);
}
.b47-scroll-indicator_wheel {
    position:                           absolute;
    left:                               50%;
    top:                                var(--b47-scroll-wheel-top-start);
    transform:                          var(--b47-scroll-transform);
    width:                              var(--b47-scroll-wheel-width);
    height:                             var(--b47-scroll-wheel-height);
    background-color:                   var(--b47-scroll-wheel-color);
    border-radius:                      var(--b47-scroll-radius);
    animation:                          var(--b47-scroll-animation);
}

@keyframes b47-scroll-wheel             { 0% { transform: translateX(-50%) translateY(0);   opacity: var(--b47-opacity-50); } 50%  { transform: translateX(-50%) translateY(3px); opacity: var(--b47-opacity-100); } 100% { transform: translateX(-50%) translateY(6px); opacity: var(--b47-opacity-20); } }

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ ROTATE LOCK ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* ------------------------- ROTATE LOCK VARIABLES ------------------------- */

@media screen and (orientation: landscape) and (max-width: 896px) and (max-height: 500px) {

body {
    --b47-rotate-lock-filter:           invert(1);   /* light mode ↓ active -> dark mode ↓ swap --b47-rotate-lock-filter: none; */
    --b47-rotate-lock-bg:               var(--b47-primary-background-color);
    --b47-rotate-lock-bg-size:          contain;
    --b47-rotate-lock-bg-repeat:        no-repeat;
    --b47-rotate-lock-bg-position:      center;
    --b47-rotate-lock-z-overlay:        999998;
    --b47-rotate-lock-z-icon:           999999;
    --b47-rotate-lock-icon:             url('/wp-content/uploads/rotate-lock.svg');
    --b47-rotate-lock-icon-size:        200px;
    --b47-rotate-lock-top:              50%;
    --b47-rotate-lock-left:             50%;
    --b47-rotate-lock-transform:        translate(-50%, -50%);
}

/* -------------------------- ROTATE LOCK CLASSES -------------------------- */

html, body {
    background-color:                   var(--b47-rotate-lock-bg) !important;
    overflow:                           hidden !important;
}
body::before {
    content:                            "";
    position:                           fixed;
    inset:                              0;
    background:                         var(--b47-rotate-lock-bg);
    z-index:                            var(--b47-rotate-lock-z-overlay);
}
body::after {
    content:                            "";
    position:                           fixed;
    top:                                var(--b47-rotate-lock-top);
    left:                               var(--b47-rotate-lock-left);
    transform:                          var(--b47-rotate-lock-transform);
    width:                              var(--b47-rotate-lock-icon-size);
    height:                             var(--b47-rotate-lock-icon-size);
    background-image:                   var(--b47-rotate-lock-icon);
    background-size:                    var(--b47-rotate-lock-bg-size);
    background-repeat:                  var(--b47-rotate-lock-bg-repeat);
    background-position:                var(--b47-rotate-lock-bg-position);
    filter:                             var(--b47-rotate-lock-filter);
    z-index:                            var(--b47-rotate-lock-z-icon);
}
}

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ LIGHTBOX ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* -------------------------- LIGHTBOX VARIABLES --------------------------- */

:root {
    --b47-lightbox-overlay:              var(--b47-dark-overlay-heavy);
    --b47-lightbox-radius:               var(--b47-radius-16);
    --b47-lightbox-offset:               var(--b47-padding-global);
    --b47-lightbox-transition:           background var(--b47-transition-fast);
    --b47-lightbox-animation-duration:   0.1s;      
    --b47-lightbox-header-z:             10;      

    /* --- Pill --- */
    --b47-lightbox-pill-bg:              var(--b47-backdrop-dark-subtle);
    --b47-lightbox-pill-bg-hover:        var(--b47-backdrop-dark);
    --b47-lightbox-pill-radius:          var(--b47-radius-max);
    --b47-lightbox-pill-padding:         var(--b47-spacing-12) var(--b47-spacing-12);

    /* --- Arrow --- */
    --b47-lightbox-arrow-size:           var(--b47-spacing-48);  /* 48px */

    /* --- Icons --- */
    --b47-lightbox-icon-size:            var(--b47-spacing-20);   /* 20px */
    --b47-lightbox-icon-filter:          invert(1);               
    --b47-lightbox-icon-close:           url('/wp-content/uploads/x-close.svg');
    --b47-lightbox-icon-next:            url('/wp-content/uploads/arrow-right.svg');
    --b47-lightbox-icon-prev:            url('/wp-content/uploads/arrow-left.svg');
    --b47-lightbox-icon-bg-size:         contain;
    --b47-lightbox-icon-bg-repeat:       no-repeat;
    --b47-lightbox-icon-bg-position:     center;

    /* --- Close button --- */
    --b47-lightbox-close-size:           var(--b47-spacing-24);  /* 24px */

    /* --- Counter --- */
    --b47-lightbox-counter-min-width:    var(--b47-spacing-32);  /* 32px */
    --b47-lightbox-counter-color:        var(--b47-white);
    --b47-lightbox-counter-family:       var(--b47-body-small-family);
    --b47-lightbox-counter-size:         var(--b47-body-small-size);
    --b47-lightbox-counter-weight:       var(--b47-body-small-weight);
    --b47-lightbox-counter-spacing:      var(--b47-body-small-letter-spacing);
    --b47-lightbox-counter-radius:       var(--b47-radius-6);       /* rectangular — less than pill */
    --b47-lightbox-counter-padding:      var(--b47-spacing-8) var(--b47-spacing-16);  /* wider than tall */
}

/* --------------------------- LIGHTBOX CLASSES ---------------------------- */

/* --- Overlay --- */
.elementor-lightbox {
    background:                         var(--b47-lightbox-overlay) !important;
}

/* --- Faster animation --- */
.elementor-lightbox * {
    animation-duration:                 var(--b47-lightbox-animation-duration) !important;
    transition-duration:                var(--b47-lightbox-animation-duration) !important;
}

/* --- Image radius --- */
.elementor-lightbox .elementor-lightbox-image {
    margin-left:                        var(--b47-lightbox-offset) !important;
    margin-right:                       var(--b47-lightbox-offset) !important;
    border-radius:                      var(--b47-lightbox-radius) !important;
}

/* --- Counter pill --- */
.elementor-lightbox .elementor-slideshow__header {
    position: absolute !important;
    top:                                var(--b47-lightbox-offset) !important;
    left:                               var(--b47-lightbox-offset) !important;
    padding:                            0px !important;
    z-index:                            var(--b47-lightbox-header-z);
}
.elementor-lightbox .elementor-slideshow__counter {
    display:                            inline-flex !important;
    align-items:                        center !important;
    justify-content:                    center !important;
    background:                         var(--b47-lightbox-pill-bg);
    border-radius:                      var(--b47-lightbox-counter-radius);
    padding:                            var(--b47-lightbox-counter-padding);
    min-width:                          var(--b47-lightbox-counter-min-width);
    font-family:                        var(--b47-lightbox-counter-family) !important;
    font-size:                          var(--b47-lightbox-counter-size) !important;
    font-weight:                        var(--b47-lightbox-counter-weight) !important;
    letter-spacing:                     var(--b47-lightbox-counter-spacing) !important;
    color:                              var(--b47-lightbox-counter-color) !important;
}

/* --- Hide counter pill when single image --- */
.elementor-lightbox .elementor-slideshow__header:not(:has(.swiper-pagination-fraction)) {
                                        display: none !important; }

/* --- Close button --- */
.elementor-lightbox .dialog-close-button.dialog-lightbox-close-button * {
                                        display: none !important; }
.elementor-lightbox .dialog-close-button.dialog-lightbox-close-button {
    top:                                var(--b47-lightbox-offset) !important;
    right:                              var(--b47-lightbox-offset) !important;
    left:                               auto !important;
    margin-top:                         0px !important;
    display:                            inline-flex !important;
    align-items:                        center !important;
    justify-content:                    center !important;
    width:                              auto !important;
    height:                             auto !important;
    padding:                            var(--b47-lightbox-pill-padding) !important;
    background:                         var(--b47-lightbox-pill-bg) !important;
    border-radius:                      var(--b47-lightbox-pill-radius) !important;
    transition:                         var(--b47-lightbox-transition);
}
.elementor-lightbox .dialog-close-button.dialog-lightbox-close-button:hover {
    background:                         var(--b47-lightbox-pill-bg-hover) !important;
}
.elementor-lightbox .dialog-close-button.dialog-lightbox-close-button::after {
    content:                            "";
    display:                            block !important;
    width:                              var(--b47-lightbox-close-size);
    height:                             var(--b47-lightbox-close-size);
    background-image:                   var(--b47-lightbox-icon-close);
    background-size:                    var(--b47-lightbox-icon-bg-size);
    background-repeat:                  var(--b47-lightbox-icon-bg-repeat);
    background-position:                var(--b47-lightbox-icon-bg-position);
    filter:                             var(--b47-lightbox-icon-filter);
}

/* --- Arrows --- */
.elementor-lightbox .elementor-swiper-button {
    position:                           absolute !important;
    top:                                50% !important;
    transform:                          translateY(-50%) !important;
    width:                              var(--b47-lightbox-arrow-size) !important;
    height:                             var(--b47-lightbox-arrow-size) !important;
    background:                         var(--b47-lightbox-pill-bg) !important;
    border-radius:                      var(--b47-lightbox-pill-radius) !important;
    display:                            flex !important;
    align-items:                        center !important;
    justify-content:                    center !important;
    transition:                         var(--b47-lightbox-transition);
}
.elementor-lightbox .elementor-swiper-button:hover {
    background:                         var(--b47-lightbox-pill-bg-hover) !important;
}
.elementor-lightbox .elementor-swiper-button svg {
    display:                            none !important;
}
.elementor-lightbox .elementor-swiper-button-next {
    right:                              var(--b47-lightbox-offset) !important;
    left:                               auto !important;
}
.elementor-lightbox .elementor-swiper-button-prev {
    left:                               var(--b47-lightbox-offset) !important;
    right:                              auto !important;
}
.elementor-lightbox .elementor-swiper-button-next::before {
    content:                            "";
    display:                            block;
    width:                              var(--b47-lightbox-icon-size);
    height:                             var(--b47-lightbox-icon-size);
    background-image:                   var(--b47-lightbox-icon-next);
    background-size:                    var(--b47-lightbox-icon-bg-size);
    background-repeat:                  var(--b47-lightbox-icon-bg-repeat);
    background-position:                var(--b47-lightbox-icon-bg-position);
    filter:                             var(--b47-lightbox-icon-filter);
}
.elementor-lightbox .elementor-swiper-button-prev::before {
    content:                            "";
    display:                            block;
    width:                              var(--b47-lightbox-icon-size);
    height:                             var(--b47-lightbox-icon-size);
    background-image:                   var(--b47-lightbox-icon-prev);
    background-size:                    var(--b47-lightbox-icon-bg-size);
    background-repeat:                  var(--b47-lightbox-icon-bg-repeat);
    background-position:                var(--b47-lightbox-icon-bg-position);
    filter:                             var(--b47-lightbox-icon-filter);
}

/* --- Responsive --- */
@media only screen and (max-width: 1024px) {
    .elementor-lightbox .swiper-zoom-container {
        width:                          calc(100% - (var(--b47-lightbox-offset) * 2)) !important; }
}
@media only screen and (max-width: 599px) {
    .elementor-lightbox .elementor-swiper-button {
                                        display: none !important; }
}

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ NATIVE SEARCH ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* ----------------------- NATIVE SEARCH VARIABLES ------------------------- */

:root {
    /* --- Icons (files in /wp-content/uploads/) --- */
    --b47-search-icon:                          url('/wp-content/uploads/search-icon.svg');
    --b47-search-arrow-icon:                    url('/wp-content/uploads/arrow-right.svg');
    --b47-search-icon-size:                     var(--b47-spacing-20);
    --b47-search-arrow-size:                    var(--b47-spacing-16);
    --b47-search-icon-transition:               transform 0.3s ease;
    --b47-search-icon-tilt:                     rotate(10deg);
    --b47-search-arrow-hover:                   translateX(3px);

    /* --- Field — flat row, icon left (inline, toggle) --- */
    --b47-search-gap:                           var(--b47-spacing-8);
    --b47-search-input-width:                   var(--b47-spacing-160);
    --b47-search-input-offset:                  3px;
    --b47-search-input-height:                  calc(var(--b47-search-icon-size) + var(--b47-search-input-offset) * 2);
    --b47-search-color:                         var(--b47-primary-text-color);
    --b47-search-color-dark:                    var(--b47-inverse-primary-text-color);
    --b47-search-transition:                    color 0.3s ease;
    --b47-search-placeholder-focus:             0;

    /* --- Typography --- */
    --b47-search-family:                        var(--b47-body-regular-family);
    --b47-search-size:                          var(--b47-body-regular-size);
    --b47-search-weight:                        var(--b47-body-regular-weight);
    --b47-search-line-height:                   var(--b47-body-regular-line-height);
    --b47-search-letter-spacing:                var(--b47-body-regular-letter-spacing);

    /* --- Input only — fills its container: line at rest, tinted field + arrow on focus --- */
    --b47-search-field-width:                   100%;
    --b47-search-field-max-width:               none;
    --b47-search-field-padding-y:               3px;
    --b47-search-field-padding-x:               3px;
    --b47-search-field-radius:                  var(--b47-radius-4);
    --b47-search-field-line-width:              var(--b47-border-width-small);
    --b47-search-field-line-color:              var(--b47-black-alpha-3);
    --b47-search-field-line-color-dark:         var(--b47-white-alpha-3);
    --b47-search-field-line-offset:             0;
    --b47-search-field-line-inset:              0;
    --b47-search-field-line-transition:         opacity 0.2s ease;
    --b47-search-field-transition:              background-color 0.2s ease, padding 0.2s ease;
    --b47-search-field-padding-x-focus:         var(--b47-spacing-8);
    --b47-search-field-bg-focus:                var(--b47-black-alpha-05);
    --b47-search-field-bg-focus-dark:           var(--b47-white-alpha-2);
    --b47-search-field-placeholder-focus:       1;
    --b47-search-field-arrow-transition:        opacity 0.2s ease;

    /* --- Toggle popup --- */
    --b47-search-popup-bg:                      var(--b47-primary-background-color);
    --b47-search-popup-color:                   var(--b47-primary-text-color);
    --b47-search-popup-width:                   320px;
    --b47-search-popup-max-width:               calc(100vw - var(--b47-spacing-32));
    --b47-search-popup-padding:                 var(--b47-spacing-16);
    --b47-search-popup-border:                  var(--b47-border-width-xsmall) solid var(--b47-black-alpha-1);
    --b47-search-popup-radius:                  var(--b47-radius-none);
    --b47-search-popup-shadow:                  none;
    --b47-search-popup-gap:                     var(--b47-search-gap);
    --b47-search-popup-z:                       10;
    --b47-search-popup-placeholder-focus:       1;
    --b47-search-popup-transition:              opacity 0.2s ease, visibility 0s linear 0.2s;
    --b47-search-popup-transition-open:         opacity 0.2s ease, visibility 0s;

    /* --- Toggle popup position — desktop: under the icon, right edges aligned --- */
    --b47-search-popup-position:                absolute;
    --b47-search-popup-top:                     100%;
    --b47-search-popup-left:                    auto;
    --b47-search-popup-right:                   0;
    --b47-search-popup-start-left:              0;
    --b47-search-popup-start-right:             auto;
    --b47-search-popup-center-left:             50%;
    --b47-search-popup-center-right:            auto;
    --b47-search-popup-center-transform:        translateX(-50%);
    --b47-search-popup-offset:                  var(--b47-spacing-32);
    --b47-search-popup-transform:               none;
    --b47-search-popup-edge:                    var(--b47-spacing-16);
    --b47-search-popup-shift:                   0px;

    /* --- Toggle popup, align center — centred on the screen, under the header --- */
    --b47-search-popup-center-position:         fixed;
    --b47-search-popup-center-top:              calc(var(--b47-header-height) + 1rem);
    --b47-search-popup-center-offset:           0px;

    /* --- "Did you mean" notice (results page) --- */
    --b47-search-correction-family:             var(--b47-body-small-family);
    --b47-search-correction-size:               var(--b47-body-small-size);
    --b47-search-correction-weight:             var(--b47-body-small-weight);
    --b47-search-correction-line-height:        var(--b47-body-small-line-height);
    --b47-search-correction-letter-spacing:     var(--b47-body-small-letter-spacing);
    --b47-search-correction-color:              var(--b47-secondary-text-color);
    --b47-search-correction-strong-color:       var(--b47-primary-text-color);
    --b47-search-correction-margin-bottom:      var(--b47-spacing-24);
}
@media only screen and (max-width: 599px) {
    :root {
        /* --- Mobile: popup centred in the header, 1rem below it --- */
        --b47-search-popup-width:               calc(100vw - var(--b47-spacing-32));
        --b47-search-popup-position:            fixed;
        --b47-search-popup-top:                 calc(var(--b47-header-height) + 1rem);
        --b47-search-popup-left:                50%;
        --b47-search-popup-right:               auto;
        --b47-search-popup-start-left:          50%;
        --b47-search-popup-start-right:         auto;
        --b47-search-popup-offset:              0px;
        --b47-search-popup-transform:           translateX(-50%);
    }
}

/* ------------------------- NATIVE SEARCH CLASSES ------------------------- */

/* --- Form: flat row, icon left (is-inline) --- */
.native-search {
    display:                                    flex;
    align-items:                                center;
    gap:                                        var(--b47-search-gap);
    width:                                      auto;
    margin:                                     0;
    padding:                                    0;
    color:                                      var(--b47-search-color);
    transition:                                 var(--b47-search-transition);
}
.inverse-mode .native-search,
.main-header.is-inverse-page .native-search {
    color:                                      var(--b47-search-color-dark);
}

/* --- Input --- */
.native-search .native-search_input {
    -webkit-appearance:                         none !important;
    appearance:                                 none !important;
    width:                                      var(--b47-search-input-width) !important;
    height:                                     var(--b47-search-input-height) !important;
    margin:                                     calc(var(--b47-search-input-offset) * -1) 0 0 0 !important;
    padding:                                    var(--b47-search-input-offset) 0 0 0 !important;
    background:                                 none !important;
    border:                                     none !important;
    border-radius:                              0 !important;
    box-shadow:                                 none !important;
    outline:                                    none !important;
    color:                                      inherit !important;
    font-family:                                var(--b47-search-family) !important;
    font-size:                                  var(--b47-search-size) !important;
    font-weight:                                var(--b47-search-weight) !important;
    line-height:                                var(--b47-search-line-height) !important;
    letter-spacing:                             var(--b47-search-letter-spacing) !important;
}
.native-search .native-search_input::placeholder {
    color:                                      inherit !important;
    opacity:                                    1 !important;
}
.native-search .native-search_input:focus::placeholder {
    opacity:                                    var(--b47-search-placeholder-focus) !important;
}
.native-search .native-search_input::-webkit-search-cancel-button {
    display:                                    none;
}

/* --- Buttons: icon only (submit and toggle) --- */
.native-search .native-search_submit,
.native-search .native-search_toggle {
    display:                                    flex !important;
    flex-shrink:                                0;
    width:                                      var(--b47-search-icon-size) !important;
    height:                                     var(--b47-search-icon-size) !important;
    margin:                                     0 !important;
    padding:                                    0 !important;
    background:                                 none !important;
    border:                                     none !important;
    box-shadow:                                 none !important;
    color:                                      inherit !important;
    cursor:                                     pointer;
}
.native-search .native-search_submit:focus-visible,
.native-search .native-search_toggle:focus-visible {
    outline:                                    1px solid currentColor !important;
    outline-offset:                             2px;
}
.native-search .native-search_icon {
    display:                                    block;
    width:                                      100%;
    height:                                     100%;
    background-color:                           currentColor;
    -webkit-mask-image:                         var(--b47-search-icon);
    mask-image:                                 var(--b47-search-icon);
    -webkit-mask-size:                          contain;
    mask-size:                                  contain;
    -webkit-mask-repeat:                        no-repeat;
    mask-repeat:                                no-repeat;
    -webkit-mask-position:                      center;
    mask-position:                              center;
    transform-origin:                           center;
    transition:                                 var(--b47-search-icon-transition);
}

/* --- Icon animation: tilt on hover (inline, toggle button) --- */
.native-search:not(.is-toggle):not(.is-input):hover .native-search_icon,
.native-search_toggle:hover .native-search_icon {
    transform:                                  var(--b47-search-icon-tilt);
}

/* --- Icon on the right (inline) --- */
.native-search.is-icon-right .native-search_submit {
    order:                                      1;
}

/* --- Variant: input only — fills its container (set max-width on the container) --- */
.native-search.is-input {
    position:                                   relative;
    box-sizing:                                 border-box;
    width:                                      var(--b47-search-field-width);
    max-width:                                  var(--b47-search-field-max-width);
    padding:                                    var(--b47-search-field-padding-y) var(--b47-search-field-padding-x);
    background-color:                           transparent;
    border-radius:                              var(--b47-search-field-radius);
    transition:                                 var(--b47-search-field-transition);
}
.native-search.is-input::after {
    content:                                    '';
    position:                                   absolute;
    left:                                       var(--b47-search-field-line-inset);
    right:                                      var(--b47-search-field-line-inset);
    bottom:                                     var(--b47-search-field-line-offset);
    height:                                     var(--b47-search-field-line-width);
    background-color:                           var(--b47-search-field-line-color);
    pointer-events:                             none;
    transition:                                 var(--b47-search-field-line-transition);
}
.native-search.is-input:focus-within {
    padding-left:                               var(--b47-search-field-padding-x-focus);
    padding-right:                              var(--b47-search-field-padding-x-focus);
    background-color:                           var(--b47-search-field-bg-focus);
}
.native-search.is-input:focus-within::after {
    opacity:                                    0;
}
.inverse-mode .native-search.is-input::after,
.main-header.is-inverse-page .native-search.is-input::after {
    background-color:                           var(--b47-search-field-line-color-dark);
}
.inverse-mode .native-search.is-input:focus-within,
.main-header.is-inverse-page .native-search.is-input:focus-within {
    background-color:                           var(--b47-search-field-bg-focus-dark);
}
.native-search.is-input .native-search_input {
    flex:                                       1;
    width:                                      100% !important;
    min-width:                                  0;
}
.native-search.is-input .native-search_input:focus::placeholder {
    opacity:                                    var(--b47-search-field-placeholder-focus) !important;
}
.native-search.is-input .native-search_submit {
    order:                                      1;
    width:                                      var(--b47-search-arrow-size) !important;
    height:                                     var(--b47-search-arrow-size) !important;
    opacity:                                    0;
    pointer-events:                             none;
    transition:                                 var(--b47-search-field-arrow-transition);
}
.native-search.is-input:focus-within .native-search_submit,
.native-search.is-input:has(.native-search_input:not(:placeholder-shown)) .native-search_submit {
    opacity:                                    1;
    pointer-events:                             auto;
}
.native-search.is-input .native-search_icon {
    -webkit-mask-image:                         var(--b47-search-arrow-icon);
    mask-image:                                 var(--b47-search-arrow-icon);
}
.native-search.is-input .native-search_submit:hover .native-search_icon {
    transform:                                  var(--b47-search-arrow-hover);
}

/* --- Variant: toggle — icon button + floating popup --- */
.native-search.is-toggle {
    position:                                   relative;
}
.native-search.is-toggle .native-search_popup {
    position:                                   var(--b47-search-popup-position);
    top:                                        var(--b47-search-popup-top);
    left:                                       var(--b47-search-popup-left);
    right:                                      var(--b47-search-popup-right);
    transform:                                  var(--b47-search-popup-transform);
    translate:                                  var(--b47-search-popup-shift) 0;
    z-index:                                    var(--b47-search-popup-z);
    display:                                    flex;
    align-items:                                center;
    gap:                                        var(--b47-search-popup-gap);
    box-sizing:                                 border-box;
    width:                                      var(--b47-search-popup-width);
    max-width:                                  var(--b47-search-popup-max-width);
    margin:                                     var(--b47-search-popup-offset) 0 0 0;
    padding:                                    var(--b47-search-popup-padding);
    background:                                 var(--b47-search-popup-bg);
    color:                                      var(--b47-search-popup-color);
    border:                                     var(--b47-search-popup-border);
    border-radius:                              var(--b47-search-popup-radius);
    box-shadow:                                 var(--b47-search-popup-shadow);
    opacity:                                    0;
    visibility:                                 hidden;
    pointer-events:                             none;
    transition:                                 var(--b47-search-popup-transition);
}
.native-search.is-toggle.is-open .native-search_popup {
    opacity:                                    1;
    visibility:                                 visible;
    pointer-events:                             auto;
    transition:                                 var(--b47-search-popup-transition-open);
}
.native-search.is-toggle .native-search_popup .native-search_submit {
    order:                                      1;
    width:                                      var(--b47-search-arrow-size) !important;
    height:                                     var(--b47-search-arrow-size) !important;
}
.native-search.is-toggle .native-search_popup .native-search_icon {
    -webkit-mask-image:                         var(--b47-search-arrow-icon);
    mask-image:                                 var(--b47-search-arrow-icon);
}
.native-search.is-toggle .native-search_popup .native-search_submit:hover .native-search_icon {
    transform:                                  var(--b47-search-arrow-hover);
}
.native-search.is-toggle .native-search_popup .native-search_input {
    flex:                                       1;
    width:                                      100% !important;
    min-width:                                  0;
}
.native-search.is-toggle .native-search_popup .native-search_input:focus::placeholder {
    opacity:                                    var(--b47-search-popup-placeholder-focus) !important;
}
.native-search.is-align-left .native-search_popup {
    left:                                       var(--b47-search-popup-start-left);
    right:                                      var(--b47-search-popup-start-right);
}
.native-search.is-align-center .native-search_popup {
    position:                                   var(--b47-search-popup-center-position);
    top:                                        var(--b47-search-popup-center-top);
    margin-top:                                 var(--b47-search-popup-center-offset);
    left:                                       var(--b47-search-popup-center-left);
    right:                                      var(--b47-search-popup-center-right);
    transform:                                  var(--b47-search-popup-center-transform);
}

/* --- "Did you mean" notice (results page) --- */
.native-search_correction {
    margin:                                     0 0 var(--b47-search-correction-margin-bottom) 0 !important;
    font-family:                                var(--b47-search-correction-family) !important;
    font-size:                                  var(--b47-search-correction-size) !important;
    font-weight:                                var(--b47-search-correction-weight) !important;
    line-height:                                var(--b47-search-correction-line-height) !important;
    letter-spacing:                             var(--b47-search-correction-letter-spacing) !important;
    color:                                      var(--b47-search-correction-color) !important;
}
.native-search_correction strong {
    font-weight:                                inherit !important;
    color:                                      var(--b47-search-correction-strong-color) !important;
}

/* --------------------- NATIVE SEARCH LIVE VARIABLES ---------------------- */

:root {
    /* --- Results box (under the form; light surface, also on dark headers) --- */
    --b47-search-live-bg:                       var(--b47-primary-background-color);
    --b47-search-live-color:                    var(--b47-primary-text-color);
    --b47-search-live-width:                    100%;
    --b47-search-live-min-width:                360px;
    --b47-search-live-max-width:                calc(100vw - var(--b47-spacing-32));
    --b47-search-live-max-height:               70vh;
    --b47-search-live-offset:                   var(--b47-spacing-16);
    --b47-search-live-border:                   var(--b47-border-width-xsmall) solid var(--b47-black-alpha-1);
    --b47-search-live-radius:                   var(--b47-radius-none);
    --b47-search-live-shadow:                   none;
    --b47-search-live-z:                        10;
    --b47-search-live-edge:                     var(--b47-spacing-16);
    --b47-search-live-shift:                    0px;
    --b47-search-live-transition:               opacity 0.2s ease, visibility 0s linear 0.2s;
    --b47-search-live-transition-open:          opacity 0.2s ease, visibility 0s;

    /* --- Result row --- */
    --b47-search-live-row-padding-y:            var(--b47-spacing-12);
    --b47-search-live-row-padding-x:            var(--b47-spacing-12);
    --b47-search-live-row-gap:                  var(--b47-spacing-12);
    --b47-search-live-row-border:               var(--b47-border-width-xsmall) solid var(--b47-black-alpha-1);
    --b47-search-live-row-bg-hover:             var(--b47-black-alpha-05);
    --b47-search-live-row-bg-active:            var(--b47-black-alpha-05);
    --b47-search-live-row-transition:           background-color 0.2s ease;
    --b47-search-live-image-size:               var(--b47-spacing-64);
    --b47-search-live-image-radius:             var(--b47-radius-none);
    --b47-search-live-image-bg:                 var(--b47-black-alpha-05);
    --b47-search-live-body-gap:                 var(--b47-spacing-4);

    /* --- Row text --- */
    --b47-search-live-title-family:             var(--b47-body-small-family);
    --b47-search-live-title-size:               var(--b47-body-small-size);
    --b47-search-live-title-weight:             var(--b47-body-small-weight);
    --b47-search-live-title-line-height:        var(--b47-body-small-line-height);
    --b47-search-live-title-letter-spacing:     var(--b47-body-small-letter-spacing);
    --b47-search-live-title-color:              var(--b47-primary-text-color);
    --b47-search-live-title-lines:              2;
    --b47-search-live-text-family:              var(--b47-body-small-family);
    --b47-search-live-text-size:                var(--b47-body-small-size);
    --b47-search-live-text-weight:              var(--b47-body-small-weight);
    --b47-search-live-text-line-height:         var(--b47-body-small-line-height);
    --b47-search-live-text-letter-spacing:      var(--b47-body-small-letter-spacing);
    --b47-search-live-text-color:               var(--b47-black-alpha-7);
    --b47-search-live-text-lines:               2;
    --b47-search-live-product-text-lines:       1;
    --b47-search-live-price-color:              var(--b47-primary-text-color);
    --b47-search-live-price-old-color:          var(--b47-secondary-text-color);

    /* --- Footer link and messages --- */
    --b47-search-live-all-padding:              var(--b47-spacing-8) var(--b47-spacing-12);
    --b47-search-live-all-color:                var(--b47-primary-text-color);
    --b47-search-live-all-color-hover:          var(--b47-primary-text-color);
    --b47-search-live-all-decoration-hover:     underline;
    --b47-search-live-all-transition:           color 0.2s ease;
    --b47-search-live-message-padding:          var(--b47-spacing-12);
    --b47-search-live-message-color:            var(--b47-primary-text-color);

    /* --- Spinner (the preloader ring, small) --- */
    --b47-search-spinner-size:                  var(--b47-spacing-16);
    --b47-search-spinner-border-width:          var(--b47-border-width-small);
    --b47-search-spinner-track:                 var(--b47-black-alpha-1);
    --b47-search-spinner-track-dark:            var(--b47-white-alpha-3);
    --b47-search-spinner-radius:                var(--b47-radius-max);
    --b47-search-spinner-animation:             b47-spin var(--b47-duration-spin) linear infinite;
    --b47-search-spinner-right:                 0px;
    --b47-search-spinner-right-input:           calc(var(--b47-search-field-padding-x-focus) + var(--b47-search-arrow-size) + var(--b47-search-gap));
    --b47-search-spinner-right-popup:           calc(var(--b47-search-popup-padding) + var(--b47-search-arrow-size) + var(--b47-search-popup-gap));
}

/* ---------------------- NATIVE SEARCH LIVE CLASSES ----------------------- */

/* --- The form is the positioning context of its results --- */
.native-search {
    position:                                   relative;
}

/* --- Spinner: right of the input while a request runs --- */
.native-search .native-search_spinner {
    display:                                    none;
    position:                                   absolute;
    top:                                        50%;
    right:                                      var(--b47-search-spinner-right);
    box-sizing:                                 border-box;
    width:                                      var(--b47-search-spinner-size);
    height:                                     var(--b47-search-spinner-size);
    margin-top:                                 calc(var(--b47-search-spinner-size) / -2);
    border:                                     var(--b47-search-spinner-border-width) solid var(--b47-search-spinner-track);
    border-top-color:                           currentColor;
    border-radius:                              var(--b47-search-spinner-radius);
    pointer-events:                             none;
    animation:                                  var(--b47-search-spinner-animation);
}
.native-search .is-loading > .native-search_spinner,
.native-search.is-loading > .native-search_spinner {
    display:                                    block;
}
.native-search.is-input > .native-search_spinner {
    right:                                      var(--b47-search-spinner-right-input);
}
.native-search .native-search_popup > .native-search_spinner {
    right:                                      var(--b47-search-spinner-right-popup);
}
.inverse-mode .native-search:not(.is-toggle) .native-search_spinner,
.main-header.is-inverse-page .native-search:not(.is-toggle) .native-search_spinner {
    border-color:                               var(--b47-search-spinner-track-dark);
    border-top-color:                           currentColor;
}

/* --- Results box --- */
.native-search .native-search_results {
    position:                                   absolute;
    top:                                        100%;
    left:                                       0;
    z-index:                                    var(--b47-search-live-z);
    box-sizing:                                 border-box;
    width:                                      var(--b47-search-live-width);
    max-width:                                  var(--b47-search-live-max-width);
    max-height:                                 var(--b47-search-live-max-height);
    margin:                                     var(--b47-search-live-offset) 0 0 0;
    overflow-y:                                 auto;
    background:                                 var(--b47-search-live-bg);
    color:                                      var(--b47-search-live-color);
    border:                                     var(--b47-search-live-border);
    border-radius:                              var(--b47-search-live-radius);
    box-shadow:                                 var(--b47-search-live-shadow);
    text-align:                                 left;
    translate:                                  var(--b47-search-live-shift) 0;
    opacity:                                    0;
    visibility:                                 hidden;
    pointer-events:                             none;
    transition:                                 var(--b47-search-live-transition);
}
.native-search .native-search_results.is-open {
    opacity:                                    1;
    visibility:                                 inherit;
    pointer-events:                             auto;
    transition:                                 var(--b47-search-live-transition-open);
}
.native-search.is-inline .native-search_results,
.native-search.is-input .native-search_results {
    min-width:                                  var(--b47-search-live-min-width);
}

/* --- Result row: image + text (article), image + title + price (product) --- */
.native-search .native-search_item {
    display:                                    flex;
    align-items:                                flex-start;
    gap:                                        var(--b47-search-live-row-gap);
    padding:                                    var(--b47-search-live-row-padding-y) var(--b47-search-live-row-padding-x);
    border-bottom:                              var(--b47-search-live-row-border);
    color:                                      var(--b47-search-live-title-color) !important;
    text-decoration:                            none !important;
    transition:                                 var(--b47-search-live-row-transition);
}
.native-search .native-search_item:hover {
    background-color:                           var(--b47-search-live-row-bg-hover);
}
.native-search .native-search_item.is-active {
    background-color:                           var(--b47-search-live-row-bg-active);
}
.native-search .native-search_image {
    display:                                    block;
    flex-shrink:                                0;
    width:                                      var(--b47-search-live-image-size);
    height:                                     var(--b47-search-live-image-size);
    overflow:                                   hidden;
    background-color:                           var(--b47-search-live-image-bg);
    border-radius:                              var(--b47-search-live-image-radius);
}
.native-search .native-search_image img {
    display:                                    block;
    width:                                      100% !important;
    height:                                     100% !important;
    max-width:                                  none !important;
    object-fit:                                 cover;
}
.native-search .native-search_body {
    display:                                    flex;
    flex-direction:                             column;
    flex:                                       1;
    gap:                                        var(--b47-search-live-body-gap);
    min-width:                                  0;
}
.native-search .native-search_title,
.native-search .native-search_text {
    display:                                    -webkit-box;
    -webkit-box-orient:                         vertical;
    overflow:                                   hidden;
}
.native-search .native-search_title {
    line-clamp:                                 var(--b47-search-live-title-lines);
    -webkit-line-clamp:                         var(--b47-search-live-title-lines);
    font-family:                                var(--b47-search-live-title-family);
    font-size:                                  var(--b47-search-live-title-size);
    font-weight:                                var(--b47-search-live-title-weight);
    line-height:                                var(--b47-search-live-title-line-height);
    letter-spacing:                             var(--b47-search-live-title-letter-spacing);
    color:                                      var(--b47-search-live-title-color);
}
.native-search .native-search_text {
    line-clamp:                                 var(--b47-search-live-text-lines);
    -webkit-line-clamp:                         var(--b47-search-live-text-lines);
    font-family:                                var(--b47-search-live-text-family);
    font-size:                                  var(--b47-search-live-text-size);
    font-weight:                                var(--b47-search-live-text-weight);
    line-height:                                var(--b47-search-live-text-line-height);
    letter-spacing:                             var(--b47-search-live-text-letter-spacing);
    color:                                      var(--b47-search-live-text-color);
}
.native-search .native-search_item.is-product .native-search_text {
    line-clamp:                                 var(--b47-search-live-product-text-lines);
    -webkit-line-clamp:                         var(--b47-search-live-product-text-lines);
}
.native-search .native-search_price {
    font-family:                                var(--b47-search-live-title-family);
    font-size:                                  var(--b47-search-live-title-size);
    font-weight:                                var(--b47-search-live-title-weight);
    line-height:                                var(--b47-search-live-title-line-height);
    letter-spacing:                             var(--b47-search-live-title-letter-spacing);
    color:                                      var(--b47-search-live-price-color);
}
.native-search .native-search_price del {
    color:                                      var(--b47-search-live-price-old-color);
}
.native-search .native-search_price ins {
    text-decoration:                            none;
}

/* --- Footer link: small, plain --- */
.native-search .native-search_all {
    display:                                    block;
    padding:                                    var(--b47-search-live-all-padding);
    font-family:                                var(--b47-search-live-title-family) !important;
    font-size:                                  var(--b47-search-live-title-size) !important;
    font-weight:                                var(--b47-search-live-title-weight) !important;
    line-height:                                var(--b47-search-live-title-line-height) !important;
    letter-spacing:                             var(--b47-search-live-title-letter-spacing) !important;
    color:                                      var(--b47-search-live-all-color) !important;
    text-align:                                 center;
    text-decoration:                            none !important;
    transition:                                 var(--b47-search-live-all-transition);
}
.native-search .native-search_all:hover,
.native-search .native-search_all:focus-visible {
    color:                                      var(--b47-search-live-all-color-hover) !important;
    text-decoration:                            var(--b47-search-live-all-decoration-hover) !important;
}

/* --- Empty state and typo note --- */
.native-search .native-search_empty,
.native-search .native-search_note {
    margin:                                     0 !important;
    padding:                                    var(--b47-search-live-message-padding);
    font-family:                                var(--b47-search-live-text-family) !important;
    font-size:                                  var(--b47-search-live-text-size) !important;
    font-weight:                                var(--b47-search-live-text-weight) !important;
    line-height:                                var(--b47-search-live-text-line-height) !important;
    letter-spacing:                             var(--b47-search-live-text-letter-spacing) !important;
    color:                                      var(--b47-search-live-message-color) !important;
}
.native-search .native-search_note strong {
    font-weight:                                inherit;
    color:                                      var(--b47-search-live-title-color);
}

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ BUTTONS ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* -------------------------- BUTTONS VARIABLES ---------------------------- */

:root {
    /* --- Padding per size — y x --- */
    --b47-button-padding-s:                      var(--b47-spacing-8)   var(--b47-spacing-12);
    --b47-button-padding-m:                      var(--b47-spacing-10)    var(--b47-spacing-16);
    --b47-button-padding-l:                      var(--b47-spacing-12)    var(--b47-spacing-16);
    --b47-button-padding-xl:                     var(--b47-spacing-12)    var(--b47-spacing-20);

    /* --- Layout --- */
    --b47-button-margin-top:                     var(--b47-spacing-16);
    --b47-button-radius:                         var(--b47-radius-8);
    --b47-button-gap:                            var(--b47-spacing-10);
    --b47-button-border-width:                   var(--b47-border-width);

    /* --- Typography --- */
    --b47-button-family:                         var(--b47-font-secondary);
    --b47-button-weight:                         var(--b47-font-weight-normal);
    --b47-button-line-height:                    var(--b47-line-height-xsmall);
    --b47-button-letter-spacing:                 var(--b47-letter-spacing-default);
    --b47-button-text-transform:                 var(--b47-text-transform-none);

    /* --- Font size --- */
    --b47-button-size-s:                         var(--b47-font-size-tiny);
    --b47-button-size-m:                         var(--b47-font-size-small);
    --b47-button-size-l:                         var(--b47-font-size-regular);
    --b47-button-size-xl:                        var(--b47-font-size-medium);

    /* --- Primary variant --- */
    --b47-button-bg:                             var(--b47-primary-color);
    --b47-inverse-button-bg:                     var(--b47-primary-color-light);
    --b47-button-bg-hover:                       var(--b47-primary-color-dark);
    --b47-inverse-button-bg-hover:               var(--b47-primary-color);
    --b47-button-text:                           var(--b47-inverse-heading-color);
    --b47-inverse-button-text:                   var(--b47-inverse-heading-color);
    --b47-button-text-hover:                     var(--b47-inverse-heading-color);
    --b47-inverse-button-text-hover:             var(--b47-inverse-heading-color);
    --b47-button-accent:                         var(--b47-primary-color);
    --b47-inverse-button-accent:                 var(--b47-primary-color-light);
    --b47-button-accent-hover:                   var(--b47-primary-color-dark);
    --b47-inverse-button-accent-hover:           var(--b47-primary-color);
    --b47-button-border-none:                    none;
    --b47-button-border:                         var(--b47-button-border-width) solid var(--b47-button-accent);
    --b47-button-border-transparent:             var(--b47-button-border-width) solid transparent;
    --b47-button-gradient-border:                var(--b47-gradient-border-primary);
    --b47-button-gradient-border-inverse:        var(--b47-gradient-border-inverse);
    --b47-button-shadow:                         var(--b47-shadow-xsmall);
    --b47-button-glow:                           inset 0 1px 0 0 var(--b47-white-alpha-2), 0 1px 2px 0 var(--b47-black-alpha-05);
    --b47-button-delay-none:                     var(--b47-duration-none);

    /* --- Secondary variant --- */
    --b47-button-secondary-bg:                   transparent;
    --b47-inverse-button-secondary-bg:           var(--b47-inverse-primary-background-color);
    --b47-button-secondary-bg-hover:             var(--b47-primary-background-color);
    --b47-inverse-button-secondary-bg-hover:     var(--b47-primary-background-color);
    --b47-button-secondary-text-hover:           var(--b47-heading-color);
    --b47-inverse-button-secondary-text-hover:   var(--b47-heading-color);
    --b47-button-secondary-accent:               var(--b47-primary-text-color);
    --b47-inverse-button-secondary-accent:       var(--b47-inverse-heading-color);
    --b47-button-secondary-accent-hover:         var(--b47-heading-color);
    --b47-inverse-button-secondary-accent-hover: var(--b47-heading-color);

    /* --- Ghost variant --- */
    --b47-button-ghost-bg:                       transparent;
    --b47-button-ghost-accent:                   var(--b47-primary-text-color);
    --b47-inverse-button-ghost-accent:           var(--b47-inverse-primary-text-color);
    --b47-button-ghost-accent-hover:             var(--b47-heading-color);
    --b47-inverse-button-ghost-accent-hover:     var(--b47-inverse-secondary-text-color);
    --b47-button-ghost-primary-accent:           var(--b47-primary-color);
    --b47-button-ghost-primary-accent-hover:     var(--b47-primary-color-dark);
    --b47-button-ghost-shadow:                   none;
    --b47-button-ghost-underline-offset:         -5px;
    --b47-button-ghost-transition:               transform 0.55s cubic-bezier(0.785, 0.135, 0.15, 0.86) 0.55s;
    --b47-button-ghost-delay-in:                 0.5s;
    --b47-button-ghost-delay-out:                0.55s;

    /* --- Arrow --- */
    --b47-button-arrow-icon:                     url('/wp-content/uploads/arrow-right.svg');
    --b47-button-arrow-size:                     var(--b47-spacing-20);
    --b47-button-arrow-offset:                   var(--b47-translate-4);
    --b47-button-arrow-margin:                   -3px;
    --b47-button-arrow-transition:               var(--b47-transition-base);

    /* --- Arrow Circle --- */
    --b47-btn-arrow-circle-bg:                   var(--b47-button-bg);
    --b47-inverse-btn-arrow-circle-bg:           var(--b47-primary-color-light);
    --b47-btn-arrow-circle-color:                var(--b47-white);
    --b47-inverse-btn-arrow-circle-color:        var(--b47-white);
    --b47-btn-arrow-circle-border:               none;
    --b47-btn-arrow-circle-radius:               var(--b47-radius-max);

    --b47-button-arrow-circle-padding:           var(--b47-spacing-6) var(--b47-spacing-8) var(--b47-spacing-6) var(--b47-spacing-16);
    --b47-button-arrow-circle-gap:               18px;
    --b47-button-arrow-circle-size:              var(--b47-spacing-32);
    --b47-button-arrow-circle-padding-left:      var(--b47-spacing-16);
    --b47-button-arrow-circle-radius:            var(--b47-radius-max);
    --b47-button-arrow-circle-bg:                var(--b47-white);
    --b47-inverse-button-arrow-circle-bg:        var(--b47-white);
    --b47-button-arrow-circle-transition:        width var(--b47-button-arrow-transition), margin-left var(--b47-button-arrow-transition);
    --b47-button-arrow-circle-size-hover:        var(--b47-spacing-40);
    --b47-button-arrow-circle-margin-left:       calc(0px - (var(--b47-button-arrow-circle-size-hover) - var(--b47-button-arrow-circle-size)));

    --b47-button-arrow-circle-icon-top:          50%;
    --b47-button-arrow-circle-icon-transform:    translateY(-50%) rotate(0deg);
    --b47-button-arrow-circle-icon-hover:        translateY(-50%) rotate(-45deg);
    --b47-button-arrow-circle-icon-size:         20px;
    --b47-button-arrow-circle-icon-right:        calc((var(--b47-button-arrow-circle-size) - var(--b47-button-arrow-circle-icon-size)) / 2);
    --b47-button-arrow-circle-icon-right-hover:  calc((var(--b47-button-arrow-circle-size-hover) - var(--b47-button-arrow-circle-icon-size)) / 2);
    --b47-button-arrow-circle-icon-bg:           var(--b47-primary-color);
    --b47-inverse-button-arrow-circle-icon-bg:   var(--b47-primary-color);
    --b47-button-arrow-circle-icon:              url('/wp-content/uploads/arrow-right.svg');
    --b47-button-arrow-circle-icon-transition:   transform var(--b47-button-arrow-transition), right var(--b47-button-arrow-transition);
    
    /* --- inverse-mode (white fill — for use on dark sections) --- */
    --b47-button-white-bg:                       var(--b47-white);
    --b47-button-white-text:                     var(--b47-primary-color);
    --b47-button-white-text-hover:               var(--b47-white);
    --b47-button-white-accent:                   var(--b47-white);
    --b47-button-white-bg-hover:                 var(--b47-primary-color);
    --b47-button-white-accent-hover:             var(--b47-primary-color);
    --b47-button-gradient-border-white:          linear-gradient(to bottom, var(--b47-black-alpha-08), var(--b47-black-alpha-min));
    --b47-button-gradient-border-white-hover:    linear-gradient(to bottom, var(--b47-white-alpha-35), var(--b47-white-alpha-05));

    /* --- Disabled --- */
    --b47-button-disabled-opacity:               var(--b47-opacity-50);

    /* --- Label nudge — font metrics, 0px = off --- */
    --b47-button-text-shift:                    0px;
}

/* --------------------------- BUTTONS CLASSES ----------------------------- */

/* --- Primary button — base --- */
.elementor-button {
    position:                                    relative;
    display:                                     inline-flex !important;
    align-items:                                 center !important;
    justify-content:                             center !important;
    background-color:                            var(--b47-button-bg) !important;
    color:                                       var(--b47-button-text) !important;
    font-family:                                 var(--b47-button-family) !important;
    font-size:                                   var(--b47-button-size-m) !important;
    font-weight:                                 var(--b47-button-weight) !important;
    line-height:                                 var(--b47-button-line-height) !important;
    letter-spacing:                              var(--b47-button-letter-spacing) !important;
    text-transform:                              var(--b47-button-text-transform) !important;
    padding:                                     var(--b47-button-padding-m) !important;
    border:                                      var(--b47-button-border) !important;
    border-radius:                               var(--b47-button-radius) !important;
    box-shadow:                                  var(--b47-button-shadow) !important;
    transition:                                  none !important;
    cursor:                                      pointer !important;
}
.elementor-button:hover {
    background-color:                            var(--b47-button-bg-hover) !important;
    border-color:                                var(--b47-button-accent-hover) !important;
    color:                                       var(--b47-button-text-hover) !important;
}

.button-margin-top .elementor-button             { margin-top: var(--b47-button-margin-top) !important; }

/* --- Glow effect --- */
.button-glow .elementor-button {
    box-shadow:                                  var(--b47-button-glow) !important;
}

/* --- Gradient border — primary --- */
.button-gradient-border .elementor-button,
.elementor-button.button-gradient-border {
    background:                                  linear-gradient(var(--b47-button-bg), var(--b47-button-bg)) padding-box,
                                                 var(--b47-button-gradient-border) border-box;
    border:                                      var(--b47-button-border-transparent) !important;
}
.button-gradient-border .elementor-button:hover,
.elementor-button.button-gradient-border:hover {
    background:                                  linear-gradient(var(--b47-button-bg-hover), var(--b47-button-bg-hover)) padding-box,
                                                 var(--b47-button-gradient-border) border-box;
}

/* --- button-inverse — white fill, for use on dark sections --- */
.button-inverse .elementor-button,
.elementor-button.button-inverse {
    background-color:                            var(--b47-button-white-bg) !important;
    color:                                       var(--b47-button-white-text) !important;
    border-color:                                var(--b47-button-white-accent) !important;
}
.button-inverse .elementor-button:hover,
.elementor-button.button-inverse:hover {
    background-color:                            var(--b47-button-white-bg-hover) !important;
    color:                                       var(--b47-button-white-text-hover) !important;
    border-color:                                var(--b47-button-white-accent-hover) !important;
}

/* --- Gradient border — button-inverse --- */
.button-inverse.button-gradient-border .elementor-button,
.button-gradient-border.button-inverse .elementor-button {
    background:                                  linear-gradient(var(--b47-button-white-bg), var(--b47-button-white-bg)) padding-box,
                                                 var(--b47-button-gradient-border-white) border-box;
    border:                                      var(--b47-button-border-transparent) !important;
}
.button-inverse.button-gradient-border .elementor-button:hover,
.button-gradient-border.button-inverse .elementor-button:hover {
    background:                                  linear-gradient(var(--b47-button-white-bg-hover), var(--b47-button-white-bg-hover)) padding-box,
                                                 var(--b47-button-gradient-border-white-hover) border-box !important;
    border:                                      var(--b47-button-border-transparent) !important;
}

/* --- Size modifiers --- */
.button-xsmall .elementor-button,
.elementor-button.button-xsmall {
    font-size:                                   var(--b47-button-size-s) !important;
    padding:                                     var(--b47-button-padding-s) !important;
}
.button-small .elementor-button,
.elementor-button.button-small {
    font-size:                                   var(--b47-button-size-s) !important;
    padding:                                     var(--b47-button-padding-m) !important;
}
.button-medium .elementor-button,
.elementor-button.button-medium {
    font-size:                                   var(--b47-button-size-m) !important;
    padding:                                     var(--b47-button-padding-m) !important;
}
.button-large .elementor-button,
.elementor-button.button-large {
    font-size:                                   var(--b47-button-size-l) !important;
    padding:                                     var(--b47-button-padding-l) !important;
}
.button-xlarge .elementor-button,
.elementor-button.button-xlarge {
    font-size:                                   var(--b47-button-size-xl) !important;
    padding:                                     var(--b47-button-padding-xl) !important;
}

/* --- Base — content wrapper --- */
.elementor-button .elementor-button-content-wrapper {
    display:                                     flex !important;
    align-items:                                 center !important;
    gap:                                         var(--b47-button-gap) !important;
}

/* --- Stretch variant --- */
.button-stretch .elementor-button-wrapper,
.button-stretch .elementor-button {
    width:                                       100% !important;
}
.button-stretch.is-space-between .elementor-button .elementor-button-content-wrapper,
.button-stretch .is-space-between .elementor-button .elementor-button-content-wrapper {
    justify-content:                             space-between !important;
    width:                                       100% !important;
}

/* --- Secondary button — base --- */
.button-secondary .elementor-button,
.elementor-button.button-secondary {
    background-color:                            var(--b47-button-secondary-bg) !important;
    color:                                       var(--b47-button-secondary-accent) !important;
    border-color:                                var(--b47-button-secondary-accent) !important;
    box-shadow:                                  var(--b47-button-shadow) !important;
}
.button-secondary .elementor-button:hover,
.elementor-button.button-secondary:hover {
    background-color:                            var(--b47-button-secondary-bg-hover) !important;
    color:                                       var(--b47-button-secondary-text-hover) !important;
    border-color:                                var(--b47-button-secondary-accent-hover) !important;
}

/* --- Secondary — is-color-primary modifier --- */
.button-secondary.is-color-primary .elementor-button,
.is-color-primary.button-secondary .elementor-button,
.is-color-primary .button-secondary .elementor-button {
    color:                                       var(--b47-button-accent) !important;
    border-color:                                var(--b47-button-accent) !important;
}
.button-secondary.is-color-primary .elementor-button:hover,
.is-color-primary.button-secondary .elementor-button:hover,
.is-color-primary .button-secondary .elementor-button:hover {
    background-color:                            var(--b47-button-bg-hover) !important;
    color:                                       var(--b47-button-text-hover) !important;
    border-color:                                var(--b47-button-accent-hover) !important;
}

/* --- button-inverse — secondary --- */
.button-inverse.button-secondary .elementor-button,
.button-secondary.button-inverse .elementor-button {
    background-color:                            var(--b47-inverse-button-secondary-bg) !important;
    color:                                       var(--b47-inverse-button-secondary-accent) !important;
    border-color:                                var(--b47-inverse-button-secondary-accent) !important;
}
.button-inverse.button-secondary .elementor-button:hover,
.button-secondary.button-inverse .elementor-button:hover {
    background-color:                            var(--b47-inverse-button-secondary-bg-hover) !important;
    color:                                       var(--b47-inverse-button-secondary-text-hover) !important;
    border-color:                                var(--b47-inverse-button-secondary-accent-hover) !important;
}

/* --- Ghost button — base --- */
.button-ghost .elementor-button,
.elementor-button.button-ghost {
    background-color:                            var(--b47-button-ghost-bg) !important;
    color:                                       var(--b47-button-ghost-accent) !important;
    border:                                      var(--b47-button-border-transparent) !important;
    box-shadow:                                  var(--b47-button-ghost-shadow) !important;
    padding-left:                                var(--b47-spacing-none) !important;
    padding-right:                               var(--b47-spacing-none) !important;
}
.button-ghost .elementor-button:hover,
.elementor-button.button-ghost:hover {
    background-color:                            var(--b47-button-ghost-bg) !important;
    color:                                       var(--b47-button-ghost-accent-hover) !important;
}

/* --- Ghost — animated underline --- */
.button-ghost .elementor-button .elementor-button-content-wrapper,
.elementor-button.button-ghost .elementor-button-content-wrapper {
    position:                                    relative;
    text-transform:                              var(--b47-button-text-transform);
}
.button-ghost .elementor-button .elementor-button-content-wrapper::before,
.button-ghost .elementor-button .elementor-button-content-wrapper::after,
.elementor-button.button-ghost .elementor-button-content-wrapper::before,
.elementor-button.button-ghost .elementor-button-content-wrapper::after {
    content:                                     "";
    position:                                    absolute;
    bottom:                                      var(--b47-button-ghost-underline-offset);
    left:                                        0;
    right:                                       0;
    height:                                      var(--b47-button-border-width);
    background-color:                            currentColor;
}
.button-ghost .elementor-button .elementor-button-content-wrapper::before,
.elementor-button.button-ghost .elementor-button-content-wrapper::before {
    transform-origin:                            left;
    transform:                                   scaleX(1);
    transition:                                  var(--b47-button-ghost-transition);
    transition-delay:                            var(--b47-button-ghost-delay-in);
}
.button-ghost .elementor-button .elementor-button-content-wrapper::after,
.elementor-button.button-ghost .elementor-button-content-wrapper::after {
    transform-origin:                            right;
    transform:                                   scaleX(0);
    transition:                                  var(--b47-button-ghost-transition);
    transition-delay:                            var(--b47-button-delay-none);
}
.button-ghost .elementor-button:hover .elementor-button-content-wrapper::before,
.elementor-button.button-ghost:hover .elementor-button-content-wrapper::before {
    transform:                                   scaleX(0);
    transform-origin:                            right;
    transition-delay:                            var(--b47-button-delay-none);
}
.button-ghost .elementor-button:hover .elementor-button-content-wrapper::after,
.elementor-button.button-ghost:hover .elementor-button-content-wrapper::after {
    transform:                                   scaleX(1);
    transform-origin:                            left;
    transition-delay:                            var(--b47-button-ghost-delay-out);
}

/* --- Ghost — is-color-primary modifier --- */
.button-ghost.is-color-primary .elementor-button,
.is-color-primary .button-ghost .elementor-button {
    color:                                       var(--b47-button-ghost-primary-accent) !important;
}
.button-ghost.is-color-primary .elementor-button:hover,
.is-color-primary .button-ghost .elementor-button:hover {
    color:                                       var(--b47-button-ghost-primary-accent-hover) !important;
}

/* --- button-inverse — ghost --- */
.button-inverse.button-ghost .elementor-button,
.button-ghost.button-inverse .elementor-button {
    color:                                       var(--b47-inverse-button-ghost-accent) !important;
    border:                                      var(--b47-button-border-none) !important;
}
.button-inverse.button-ghost .elementor-button:hover,
.button-ghost.button-inverse .elementor-button:hover {
    color:                                       var(--b47-inverse-button-ghost-accent-hover) !important;
}
.button-inverse.button-ghost .elementor-button .elementor-button-content-wrapper::before,
.button-inverse.button-ghost .elementor-button .elementor-button-content-wrapper::after,
.button-ghost.button-inverse .elementor-button .elementor-button-content-wrapper::before,
.button-ghost.button-inverse .elementor-button .elementor-button-content-wrapper::after {
    background-color:                            var(--b47-inverse-button-ghost-accent) !important;
}
.button-inverse.button-ghost .elementor-button:hover .elementor-button-content-wrapper::before,
.button-inverse.button-ghost .elementor-button:hover .elementor-button-content-wrapper::after,
.button-ghost.button-inverse .elementor-button:hover .elementor-button-content-wrapper::before,
.button-ghost.button-inverse .elementor-button:hover .elementor-button-content-wrapper::after {
    background-color:                            var(--b47-inverse-button-ghost-accent-hover) !important;
}

/* --- Arrow button --- */
.button-arrow .elementor-button .elementor-button-content-wrapper::after,
.elementor-button.button-arrow .elementor-button-content-wrapper::after {
    content:                                     "";
    position:                                    static;
    display:                                     inline-block;
    width:                                       var(--b47-button-arrow-size);
    height:                                      var(--b47-button-arrow-size);
    margin-right:                                var(--b47-button-arrow-margin);
    background-color:                            currentColor;
    -webkit-mask-image:                          var(--b47-button-arrow-icon);
    mask-image:                                  var(--b47-button-arrow-icon);
    -webkit-mask-repeat:                         no-repeat;
    mask-repeat:                                 no-repeat;
    -webkit-mask-size:                           contain;
    mask-size:                                   contain;
    -webkit-mask-position:                       center;
    mask-position:                               center;
    transform:                                   translateX(0);
    transition:                                  var(--b47-button-arrow-transition);
    flex-shrink:                                 0;
}
.button-arrow .elementor-button:hover .elementor-button-content-wrapper::after,
.elementor-button.button-arrow:hover .elementor-button-content-wrapper::after {
    transform:                                   translateX(var(--b47-button-arrow-offset));
    transition-delay:                            var(--b47-button-delay-none);
}

/* --- Arrow Circle button --- */
.button-arrow-circle .elementor-button,
.elementor-button.button-arrow-circle {
    padding:                                     var(--b47-button-arrow-circle-padding) !important;
    background:                                  var(--b47-btn-arrow-circle-bg) !important;
    color:                                       var(--b47-btn-arrow-circle-color) !important;
    border:                                      var(--b47-btn-arrow-circle-border) !important;
    border-radius:                               var(--b47-btn-arrow-circle-radius) !important;
}
.button-arrow-circle .elementor-button .elementor-button-content-wrapper,
.elementor-button.button-arrow-circle .elementor-button-content-wrapper {
    position:                                    relative;
    gap:                                         var(--b47-button-arrow-circle-gap) !important;
}
.button-arrow-circle .elementor-button .elementor-button-content-wrapper::before,
.elementor-button.button-arrow-circle .elementor-button-content-wrapper::before {
    content:                                     "";
    order:                                       2;
    display:                                     inline-block;
    flex-shrink:                                 0;
    width:                                       var(--b47-button-arrow-circle-size);
    height:                                      var(--b47-button-arrow-circle-size);
    padding-left:                                var(--b47-button-arrow-circle-padding-left) !important;
    border-radius:                               var(--b47-button-arrow-circle-radius);
    background-color:                            var(--b47-button-arrow-circle-bg);
    transition:                                  var(--b47-button-arrow-circle-transition);
}
.button-arrow-circle .elementor-button:hover .elementor-button-content-wrapper::before,
.elementor-button.button-arrow-circle:hover .elementor-button-content-wrapper::before {
    width:                                       var(--b47-button-arrow-circle-size-hover);
    margin-left:                                 var(--b47-button-arrow-circle-margin-left);
}
.button-arrow-circle .elementor-button .elementor-button-content-wrapper::after,
.elementor-button.button-arrow-circle .elementor-button-content-wrapper::after {
    content:                                     "";
    position:                                    absolute;
    right:                                       var(--b47-button-arrow-circle-icon-right);
    top:                                         var(--b47-button-arrow-circle-icon-top);
    transform:                                   var(--b47-button-arrow-circle-icon-transform);
    width:                                       var(--b47-button-arrow-circle-icon-size);
    height:                                      var(--b47-button-arrow-circle-icon-size);
    background-color:                            var(--b47-button-arrow-circle-icon-bg);
    -webkit-mask-image:                          var(--b47-button-arrow-circle-icon);
    mask-image:                                  var(--b47-button-arrow-circle-icon);
    -webkit-mask-repeat:                         no-repeat;
    mask-repeat:                                 no-repeat;
    -webkit-mask-size:                           contain;
    mask-size:                                   contain;
    -webkit-mask-position:                       center;
    mask-position:                               center;
    transition:                                  var(--b47-button-arrow-circle-icon-transition);
}
.button-arrow-circle .elementor-button:hover .elementor-button-content-wrapper::after,
.elementor-button.button-arrow-circle:hover .elementor-button-content-wrapper::after {
    right:                                       var(--b47-button-arrow-circle-icon-right-hover);
    transform:                                   var(--b47-button-arrow-circle-icon-hover);
}

/* --- Disabled --- */
.is-disabled .elementor-button,
.elementor-button.is-disabled,
.elementor-button:disabled {
    opacity:                                     var(--b47-button-disabled-opacity) !important;
    cursor:                                      not-allowed !important;
    pointer-events:                              none !important;
}

.elementor-button .elementor-button-text {
    position:                                   relative;
    top:                                        var(--b47-button-text-shift);
}

/* --- Responsive --- */
@media only screen and (max-width: 1024px) {
    .button-stretch-tablet .elementor-button-wrapper,
    .button-stretch-tablet .elementor-button      { width: 100% !important; }
    .button-stretch-tablet.is-space-between .elementor-button .elementor-button-content-wrapper,
    .button-stretch-tablet .is-space-between .elementor-button .elementor-button-content-wrapper
                                                  { justify-content: space-between !important; width: 100% !important; }
}
@media only screen and (max-width: 599px) {
    .button-stretch-mobile .elementor-button-wrapper,
    .button-stretch-mobile .elementor-button      { width: 100% !important; }
    .button-stretch-mobile.is-space-between .elementor-button .elementor-button-content-wrapper,
    .button-stretch-mobile .is-space-between .elementor-button .elementor-button-content-wrapper
                                                  { justify-content: space-between !important; width: 100% !important; }
}

/* --- Inverse Mode --- */
.inverse-mode .elementor-button {
    background-color:                            var(--b47-inverse-button-bg) !important;
    color:                                       var(--b47-inverse-button-text) !important;
    border-color:                                var(--b47-inverse-button-accent) !important;
}
.inverse-mode .elementor-button:hover {
    background-color:                            var(--b47-inverse-button-bg-hover) !important;
    border-color:                                var(--b47-inverse-button-accent-hover) !important;
    color:                                       var(--b47-inverse-button-text-hover) !important;
}
.inverse-mode .button-gradient-border .elementor-button {
    background:                                  linear-gradient(var(--b47-inverse-button-bg), var(--b47-inverse-button-bg)) padding-box,
                                                 var(--b47-button-gradient-border-inverse) border-box !important;
    border:                                      var(--b47-button-border-transparent) !important;
}
.inverse-mode .button-gradient-border .elementor-button:hover {
    background:                                  linear-gradient(var(--b47-inverse-button-bg-hover), var(--b47-inverse-button-bg-hover)) padding-box,
                                                 var(--b47-button-gradient-border-inverse) border-box !important;
}
.inverse-mode .button-secondary .elementor-button {
    background-color:                            var(--b47-inverse-button-secondary-bg) !important;
    color:                                       var(--b47-inverse-button-secondary-accent) !important;
    border-color:                                var(--b47-inverse-button-secondary-accent) !important;
}
.inverse-mode .button-secondary .elementor-button:hover {
    background-color:                            var(--b47-inverse-button-secondary-bg-hover) !important;
    color:                                       var(--b47-inverse-button-secondary-text-hover) !important;
    border-color:                                var(--b47-inverse-button-secondary-accent-hover) !important;
}
.inverse-mode .button-ghost .elementor-button {
    background-color:                            var(--b47-button-ghost-bg) !important;
    color:                                       var(--b47-inverse-button-ghost-accent) !important;
    border:                                      var(--b47-button-border-none) !important;
}
.inverse-mode .button-ghost .elementor-button:hover {
    background-color:                            var(--b47-button-ghost-bg) !important;
    color:                                       var(--b47-inverse-button-ghost-accent-hover) !important;
}
.inverse-mode .button-ghost .elementor-button .elementor-button-content-wrapper::before,
.inverse-mode .button-ghost .elementor-button .elementor-button-content-wrapper::after {
    background-color:                            var(--b47-inverse-button-ghost-accent) !important;
}
.inverse-mode .button-ghost .elementor-button:hover .elementor-button-content-wrapper::before,
.inverse-mode .button-ghost .elementor-button:hover .elementor-button-content-wrapper::after {
    background-color:                            var(--b47-inverse-button-ghost-accent-hover) !important;
}
.inverse-mode .button-arrow-circle .elementor-button {
    background:                                  var(--b47-inverse-btn-arrow-circle-bg) !important;
    color:                                       var(--b47-inverse-btn-arrow-circle-color) !important;
}
.inverse-mode .button-arrow-circle .elementor-button .elementor-button-content-wrapper::before {
    background-color:                            var(--b47-inverse-button-arrow-circle-bg) !important;
}
.inverse-mode .button-arrow-circle .elementor-button .elementor-button-content-wrapper::after {
    background-color:                            var(--b47-inverse-button-arrow-circle-icon-bg) !important;
}

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ LISTS ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* --------------------------- LISTS VARIABLES ----------------------------- */

:root {
    /* --- Layout --- */
    --b47-list-item-gap:                        var(--b47-spacing-12);
    --b47-list-icon-gap:                        var(--b47-spacing-12);
    --b47-list-icon-size:                       16px;
    --icon-vertical-align:                      flex-start !important;
    --icon-vertical-offset:                     4.5px !important;             /* adjust per project */
    --b47-list-icon-offset-s:                   2.2px;                        /* adjust per project */
    --b47-list-icon-offset-xs:                  1.2px;                        /* adjust per project */
    --b47-list-transition:                      fill var(--b47-transition-fast), color var(--b47-transition-fast), opacity var(--b47-transition-fast);

    /* --- Typography --- */
    --b47-list-text-family:                     var(--b47-body-family);
    --b47-list-text-size:                       var(--b47-body-regular-size);
    --b47-list-text-line-height:                var(--b47-line-height-large);
    --b47-list-text-letter-spacing:             var(--b47-letter-spacing-default);
    --b47-list-text-weight:                     var(--b47-body-regular-weight);
    --b47-list-text-size-s:                     var(--b47-body-small-size);
    --b47-list-text-weight-s:                   var(--b47-body-small-weight);
    --b47-list-text-size-xs:                    var(--b47-body-tiny-size);
    --b47-list-text-weight-xs:                  var(--b47-body-tiny-weight);

    /* --- Base --- */
    --b47-list-icon-color:                      var(--b47-primary-text-color);
    --b47-list-text-color:                      var(--b47-primary-text-color);
    --b47-list-icon-hover:                      var(--b47-heading-color);
    --b47-list-text-hover:                      var(--b47-heading-color);
    --b47-list-text-decoration-hover:           var(--b47-text-decoration-none);
    --b47-list-underline-offset:                var(--b47-text-underline-offset);

    /* --- Colored variant --- */
    --b47-list-colored-icon:                    var(--b47-primary-color);
    --b47-list-colored-icon-hover:              var(--b47-primary-color-dark);
    --b47-inverse-list-colored-icon:            var(--b47-primary-color-light);
    --b47-inverse-list-colored-icon-hover:      var(--b47-primary-color-light);
}

/* ----------------------------- LISTS CLASSES ----------------------------- */

.elementor-widget-icon-list .elementor-icon-list-items {
    display:                                    flex !important;
    flex-direction:                             column !important;
    gap:                                        var(--b47-list-item-gap) !important;
}
.elementor-widget-icon-list .elementor-icon-list-item a {
    gap:                                        var(--b47-list-icon-gap) !important;
    width:                                      100%;
}
.elementor-widget-icon-list .elementor-icon-list-icon {
    display:                                    flex !important;
    align-items:                                center !important;
    justify-content:                            center !important;
    width:                                      var(--b47-list-icon-size) !important;
    height:                                     var(--b47-list-icon-size) !important;
    flex-shrink:                                0 !important;
}
.elementor-widget-icon-list .elementor-icon-list-icon svg {
    margin-top:                                 var(--icon-vertical-offset);
    width:                                      var(--b47-list-icon-size) !important;
    height:                                     var(--b47-list-icon-size) !important;
    flex-shrink:                                0 !important;
}
.elementor-widget-icon-list.text-size-small     { --icon-vertical-offset: var(--b47-list-icon-offset-s); }
.elementor-widget-icon-list.text-size-tiny      { --icon-vertical-offset: var(--b47-list-icon-offset-xs); }

.elementor-widget-icon-list .elementor-icon-list-icon svg path { fill: var(--b47-list-icon-color); }
.elementor-widget-icon-list .elementor-icon-list-text {
    flex:                                       1 !important;
    min-width:                                  0 !important;
    font-family:                                var(--b47-list-text-family) !important;
    font-size:                                  var(--b47-list-text-size) !important;
    font-weight:                                var(--b47-list-text-weight) !important;
    line-height:                                var(--b47-list-text-line-height) !important;
    letter-spacing:                             var(--b47-list-text-letter-spacing) !important;
    color:                                      var(--b47-list-text-color) !important;
}

/* --- text-size-small --- */
.elementor-widget-icon-list.text-size-small .elementor-icon-list-text {
    font-size:                                  var(--b47-list-text-size-s) !important;
    font-weight:                                var(--b47-list-text-weight-s) !important;
}

/* --- text-size-tiny --- */
.elementor-widget-icon-list.text-size-tiny .elementor-icon-list-text {
    font-size:                                  var(--b47-list-text-size-xs) !important;
    font-weight:                                var(--b47-list-text-weight-xs) !important;
}

/* --- is-link — hover states --- */
.elementor-widget-icon-list.is-link .elementor-icon-list-icon svg path,
.elementor-widget-icon-list.is-link .elementor-icon-list-text {
    transition:                                 var(--b47-list-transition) !important;
}
.elementor-widget-icon-list.is-link .elementor-icon-list-item:hover .elementor-icon-list-icon svg path {
    fill:                                       var(--b47-list-icon-hover) !important;
}
.elementor-widget-icon-list.is-link .elementor-icon-list-item:hover .elementor-icon-list-text {
    color:                                      var(--b47-list-text-hover) !important;
    text-decoration:                            var(--b47-list-text-decoration-hover) !important;
    text-underline-offset:                      var(--b47-list-underline-offset) !important;
}

/* --- is-color — primary brand color icons --- */
.elementor-widget-icon-list.is-color .elementor-icon-list-icon svg path {
    fill:                                       var(--b47-list-colored-icon) !important;
}

/* --- is-color-hover — primary brand color icons on hover --- */
.elementor-widget-icon-list.is-color-hover .elementor-icon-list-item:hover svg path {
    fill:                                       var(--b47-list-colored-icon) !important;
}

/* --- is-color + is-link --- */
.elementor-widget-icon-list.is-color.is-link .elementor-icon-list-item:hover .elementor-icon-list-icon svg path {
    fill:                                       var(--b47-list-colored-icon-hover) !important;
}
.elementor-widget-icon-list.is-color.is-link .elementor-icon-list-item:hover .elementor-icon-list-text {
    color:                                      var(--b47-list-colored-icon) !important;
}

/* --- Inverse Mode --- */
.inverse-mode .elementor-widget-icon-list {
    --b47-list-icon-color:                      var(--b47-inverse-primary-text-color);
    --b47-list-text-color:                      var(--b47-inverse-primary-text-color);
    --b47-list-icon-hover:                      var(--b47-inverse-heading-color);
    --b47-list-text-hover:                      var(--b47-inverse-heading-color);
    --b47-list-colored-icon:                    var(--b47-inverse-list-colored-icon);
    --b47-list-colored-icon-hover:              var(--b47-inverse-list-colored-icon-hover);
}

/* --- Responsive --- */
@media only screen and (max-width: 1024px) {
    :root                                       { --icon-vertical-offset: 3px !important; } /* adjust per project */
}
@media only screen and (max-width: 599px) {
    :root                                       { --icon-vertical-offset: 2.4px !important; /* adjust per project */
                                                  --b47-list-icon-offset-s: 2.9px;           /* adjust per project */
                                                  --b47-list-icon-offset-xs: 1.2px; }         /* adjust per project */
}

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ CARDS ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* ------------------------- ICON CARD VARIABLES --------------------------- */

:root {
    /* --- Layout --- */
    --b47-icon-card-padding:                    var(--b47-spacing-24);
    --b47-icon-card-radius:                     var(--b47-radius-12);
    --b47-icon-card-gap:                        var(--b47-spacing-48);
    --b47-icon-card-content-gap:                var(--b47-spacing-20);
    --b47-icon-card-icon-size:                  var(--b47-spacing-32);
    --b47-icon-card-border:                     var(--b47-default-inside-border);

    /* --- Colors --- */
    --b47-icon-card-bg:                         transparent;
    --b47-inverse-icon-card-bg:                 var(--b47-inverse-primary-background-color);
    --b47-icon-card-color:                      var(--b47-primary-color);
    --b47-inverse-icon-card-color:              var(--b47-primary-color-light);
    --b47-icon-card-heading-color:              var(--b47-heading-color);
    --b47-icon-card-text-color:                 var(--b47-secondary-text-color);

    /* --- Typography --- */
    --b47-icon-card-heading-family:             var(--b47-body-family);
    --b47-icon-card-heading-size:               var(--b47-body-regular-size);
    --b47-icon-card-heading-weight:             var(--b47-body-regular-weight);
    --b47-icon-card-text-family:                var(--b47-body-small-family);
    --b47-icon-card-text-size:                  var(--b47-body-small-size);
    --b47-icon-card-text-weight:                var(--b47-body-small-weight);
}

/* -------------------------- ICON CARD CLASSES ---------------------------- */

.icon-card.e-con {
    flex-direction:                             column !important;
    gap:                                        var(--b47-icon-card-gap) !important;
    padding:                                    var(--b47-icon-card-padding) !important;
    background:                                 var(--b47-icon-card-bg) !important;
    border-radius:                              var(--b47-icon-card-radius) !important;
    box-shadow:                                 var(--b47-icon-card-border) !important;
}

/* --- Icon --- */
.icon-card .elementor-icon svg {
    width:                                      var(--b47-icon-card-icon-size) !important;
    height:                                     var(--b47-icon-card-icon-size) !important;
    fill:                                       var(--b47-icon-card-color) !important;
}

/* --- Content block --- */
.icon-card > .e-con {
    flex-direction:                             column !important;
    gap:                                        var(--b47-icon-card-content-gap) !important;
}

/* --- Heading --- */
.icon-card .elementor-widget-heading .elementor-heading-title {
    font-family:                                var(--b47-icon-card-heading-family) !important;
    font-size:                                  var(--b47-icon-card-heading-size) !important;
    font-weight:                                var(--b47-icon-card-heading-weight) !important;
    color:                                      var(--b47-icon-card-heading-color) !important;
}

/* --- Paragraph --- */
.icon-card .elementor-widget-text-editor p {
    font-family:                                var(--b47-icon-card-text-family) !important;
    font-size:                                  var(--b47-icon-card-text-size) !important;
    font-weight:                                var(--b47-icon-card-text-weight) !important;
    color:                                      var(--b47-icon-card-text-color) !important;
}

/* --- Inverse Mode --- */
.inverse-mode.icon-card {
    background:                                 var(--b47-inverse-icon-card-bg) !important;
}
.inverse-mode.icon-card .elementor-icon svg {
    fill:                                       var(--b47-inverse-icon-card-color) !important;
}
.inverse-mode.icon-card .elementor-widget-heading .elementor-heading-title {
    color:                                      var(--b47-inverse-heading-color) !important;
}
.inverse-mode.icon-card .elementor-widget-text-editor p {
    color:                                      var(--b47-inverse-primary-text-color) !important;
}

/* ------------------------ NUMBER CARD VARIABLES -------------------------- */

:root {
    /* --- Layout --- */
    --b47-number-card-padding-x:                var(--b47-spacing-40);
    --b47-number-card-padding-y:                var(--b47-spacing-48);
    --b47-number-card-padding-x-mobile:         var(--b47-spacing-24);
    --b47-number-card-padding-y-mobile:         var(--b47-spacing-32);
    --b47-number-card-header-gap:               var(--b47-spacing-32);
    --b47-number-card-body-gap:                 var(--b47-spacing-40);
    --b47-number-card-content-gap:              var(--b47-spacing-12);
    --b47-number-card-radius:                   var(--b47-radius-12);
    --b47-number-card-heading-pb:               var(--b47-spacing-12);
    --b47-number-card-border-width:             var(--b47-border-width);

    /* --- Badge --- */
    --b47-number-card-badge-family:             var(--b47-body-tiny-family);
    --b47-number-card-badge-size:               var(--b47-spacing-12);
    --b47-number-card-badge-weight:             var(--b47-body-tiny-weight);
    --b47-number-card-badge-radius:             var(--b47-radius-4);
    --b47-number-card-badge-padding:            var(--b47-spacing-4) var(--b47-spacing-10);
    --b47-number-card-badge-width:              1.69rem;
    --b47-number-card-badge-align :             center;

    /* --- Typography --- */
    --b47-number-card-heading-family:           var(--b47-h6-family);
    --b47-number-card-heading-size:             var(--b47-h6-size);
    --b47-number-card-heading-weight:           var(--b47-h6-weight);
    --b47-number-card-heading-line-height:      var(--b47-h6-line-height);
    --b47-number-card-text-family:              var(--b47-body-small-family);
    --b47-number-card-text-size:                var(--b47-body-small-size);
    --b47-number-card-text-weight:              var(--b47-body-small-weight);
    --b47-number-card-text-line-height:         var(--b47-body-small-line-height);

    /* --- Colors --- */
    --b47-number-card-bg:                       var(--b47-primary-background-color);
    --b47-inverse-number-card-bg:               var(--b47-inverse-primary-background-color);
    --b47-number-card-border:                   var(--b47-default-inside-border);
    --b47-number-card-divider:                  var(--b47-default-border-color);
    --b47-number-card-badge-border:             var(--b47-default-inside-border);
    --b47-inverse-number-card-badge-border:     var(--b47-inverse-subtle-inside-border);
    --b47-number-card-heading-border:           var(--b47-number-card-border-width) solid var(--b47-number-card-divider);
    --b47-number-card-heading-color:            var(--b47-heading-color);
    --b47-inverse-number-card-heading-color:    var(--b47-inverse-heading-color);
    --b47-number-card-text-color:               var(--b47-secondary-text-color);
    --b47-number-card-badge-color:              var(--b47-heading-color);
    --b47-inverse-number-card-badge-color:      var(--b47-inverse-heading-color);
}

/* ------------------------- NUMBER CARD CLASSES --------------------------- */

/* --- Root --- */
.number-card.e-con {
    gap:                                        var(--b47-number-card-body-gap) !important;
    flex-direction:                             column !important;
    padding:                                    var(--b47-number-card-padding-y) var(--b47-number-card-padding-x) !important;
    background:                                 var(--b47-number-card-bg) !important;
    border-radius:                              var(--b47-number-card-radius) !important;
    box-shadow:                                 var(--b47-number-card-border) !important;
}

/* --- Top container --- */
.number-card > .e-con:first-child {
    gap:                                        var(--b47-number-card-header-gap) !important;
    flex-direction:                             column !important;
    align-items:                                flex-start !important;
    width:                                      100% !important;
}

/* --- Bottom container --- */
.number-card > .e-con:last-child {
    gap:                                        var(--b47-number-card-content-gap) !important;
    flex-direction:                             column !important;
    width:                                      100% !important;
}

/* --- Badge --- */
.number-card .card-number p {
    font-family:                                var(--b47-number-card-badge-family) !important;
    font-size:                                  var(--b47-number-card-badge-size) !important;
    font-weight:                                var(--b47-number-card-badge-weight) !important;
    color:                                      var(--b47-number-card-badge-color) !important;
    padding:                                    var(--b47-number-card-badge-padding) !important;
    border-radius:                              var(--b47-number-card-badge-radius) !important;
    box-shadow:                                 var(--b47-number-card-badge-border) !important;
    display:                                    inline-block !important;
    min-width:                                  var(--b47-number-card-badge-width);
    text-align:                                 var(--b47-number-card-badge-align);
}

/* --- Heading --- */
.number-card .elementor-widget-heading,
.number-card .elementor-widget-heading .elementor-heading-title {
    width:                                      100% !important;
}
.number-card .elementor-widget-heading .elementor-heading-title {
    font-family:                                var(--b47-number-card-heading-family) !important;
    font-size:                                  var(--b47-number-card-heading-size) !important;
    font-weight:                                var(--b47-number-card-heading-weight) !important;
    line-height:                                var(--b47-number-card-heading-line-height) !important;
    color:                                      var(--b47-number-card-heading-color) !important;
    border-bottom:                              var(--b47-number-card-heading-border) !important;
    padding-bottom:                             var(--b47-number-card-heading-pb) !important;
}

/* --- Paragraphs --- */
.number-card .card-text p {
    font-family:                                var(--b47-number-card-text-family) !important;
    font-size:                                  var(--b47-number-card-text-size) !important;
    font-weight:                                var(--b47-number-card-text-weight) !important;
    line-height:                                var(--b47-number-card-text-line-height) !important;
    color:                                      var(--b47-number-card-text-color) !important;
}

/* --- Inverse Mode --- */
.inverse-mode.number-card {
    background:                                 var(--b47-inverse-number-card-bg) !important;
}
.inverse-mode.number-card .elementor-widget-heading .elementor-heading-title {
    color:                                      var(--b47-inverse-number-card-heading-color) !important;
    border-color:                               var(--b47-subtle-border-color) !important;
}
.inverse-mode.number-card .card-number p {
    color:                                      var(--b47-inverse-number-card-badge-color) !important;
    box-shadow:                                 var(--b47-inverse-number-card-badge-border) !important;
}

/* --- Responsive --- */
@media only screen and (max-width: 599px) {
    .number-card.e-con                          { padding: var(--b47-number-card-padding-y-mobile) var(--b47-number-card-padding-x-mobile) !important; }
}

/* -------------------------- MEDIA CARD VARIABLES ------------------------- */

:root {
    /* --- Layout --- */
    --b47-media-card-padding:                   var(--b47-spacing-8);
    --b47-media-card-border:                    var(--b47-default-inside-border);
    --b47-media-card-radius:                    var(--b47-radius-24);
    --b47-media-card-image-radius:              calc(var(--b47-media-card-radius) - var(--b47-media-card-padding));
    --b47-media-card-image-height:              250px;
    --b47-media-card-content-padding:           var(--b47-spacing-16);
    --b47-media-card-content-gap:               var(--b47-spacing-24);
    --b47-media-card-text-gap:                  var(--b47-spacing-12);

    /* --- Typography --- */
    --b47-media-card-heading-family:            var(--b47-h6-family);
    --b47-media-card-heading-size:              var(--b47-h6-size);
    --b47-media-card-heading-weight:            var(--b47-h6-weight);
    --b47-media-card-heading-line-height:       var(--b47-h6-line-height);
    --b47-media-card-text-family:               var(--b47-body-small-family);
    --b47-media-card-text-size:                 var(--b47-body-small-size);
    --b47-media-card-text-weight:               var(--b47-body-small-weight);
    --b47-media-card-text-line-height:          var(--b47-body-small-line-height);

    /* --- Colors --- */
    --b47-media-card-bg:                        var(--b47-primary-background-color);
    --b47-inverse-media-card-bg:                var(--b47-inverse-primary-background-color);
    --b47-media-card-heading-color:             var(--b47-heading-color);
    --b47-media-card-text-color:                var(--b47-secondary-text-color);
}

/* --------------------------- MEDIA CARD CLASSES -------------------------- */

.media-card {
    padding:                                    var(--b47-media-card-padding) !important;
    background:                                 var(--b47-media-card-bg) !important;
    box-shadow:                                 var(--b47-media-card-border) !important;
    border-radius:                              var(--b47-media-card-radius) !important;
    overflow:                                   hidden !important;
}

/* --- Image --- */
.media-card > .cover-image {
    border-radius:                              var(--b47-media-card-image-radius) !important;
    overflow:                                   hidden !important;
    flex-shrink:                                0 !important;
    min-height:                                 var(--b47-media-card-image-height);
}
.media-card > .cover-image img {
    width:                                      100% !important;
    height:                                     100% !important;
    object-fit:                                 cover !important;
    display:                                    block !important;
}

/* --- Content container --- */
.media-card .card-content {
    align-self:                                 stretch !important;
    padding:                                    var(--b47-media-card-content-padding) !important;
    gap:                                        var(--b47-media-card-content-gap) !important;
    flex:                                       1 !important;
}
.media-card .card-info {
    flex:           1 !important;
}

/* --- Card text --- */
.media-card .card-text {
    gap:                                        var(--b47-media-card-text-gap) !important;
    width:                                      100% !important;
    height:                                     100% !important;
}

/* --- Heading --- */
.media-card .elementor-widget-heading {
    min-height:                                 calc(var(--b47-media-card-heading-size) * var(--b47-media-card-heading-line-height) * 2) !important;
}
.media-card .elementor-widget-heading .elementor-heading-title {
    font-family:                                var(--b47-media-card-heading-family) !important;
    font-size:                                  var(--b47-media-card-heading-size) !important;
    font-weight:                                var(--b47-media-card-heading-weight) !important;
    line-height:                                var(--b47-media-card-heading-line-height) !important;
    color:                                      var(--b47-media-card-heading-color) !important;
    display:                                    -webkit-box !important;
    -webkit-line-clamp:                         2 !important;
    line-clamp:                                 2 !important;
    -webkit-box-orient:                         vertical !important;
    overflow:                                   hidden !important;
}

/* --- Paragraph --- */
.media-card .elementor-widget-text-editor p {
    font-family:                                var(--b47-media-card-text-family) !important;
    font-size:                                  var(--b47-media-card-text-size) !important;
    font-weight:                                var(--b47-media-card-text-weight) !important;
    line-height:                                var(--b47-media-card-text-line-height) !important;
    color:                                      var(--b47-media-card-text-color) !important;
    display:                                    -webkit-box !important;
    -webkit-line-clamp:                         6 !important;
    line-clamp:                                 6 !important;
    -webkit-box-orient:                         vertical !important;
    overflow:                                   hidden !important;
}

/* --- Button --- */
.media-card .elementor-widget-button {
    margin-top:                                 var(--b47-button-margin-top) !important;
}

.inverse-mode .media-card,
.inverse-mode.media-card {
    background:                                 var(--b47-inverse-media-card-bg) !important;
}

.inverse-mode .media-card .elementor-widget-heading .elementor-heading-title,
.inverse-mode.media-card .elementor-widget-heading .elementor-heading-title {
    color:  var(--b47-inverse-heading-color) !important;
}
.inverse-mode .media-card .elementor-widget-text-editor p,
.inverse-mode.media-card .elementor-widget-text-editor p {
    color:  var(--b47-inverse-primary-text-color) !important;
}

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ FORMS ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* ----------------------------- FORM VARIABLES ---------------------------- */

:root {
    /* --- Progress bar --- */
    --b47-form-progress-height:                 4px;
    --b47-form-progress-radius:                 var(--b47-radius-max);
    --b47-form-progress-bg:                     var(--b47-tertiary-background-color);
    --b47-form-progress-fill:                   var(--b47-primary-color);
    --b47-form-progress-mb:                     var(--b47-spacing-32);
    --b47-form-progress-transition:             width var(--b47-transition-base);

    /* --- Step pills --- */
    --b47-form-step-size:                       32px;
    --b47-form-step-radius:                     var(--b47-radius-max);
    --b47-form-step-border:                     var(--b47-border-width) solid var(--b47-default-border-color);
    --b47-form-step-bg-active:                  var(--b47-primary-color);
    --b47-form-step-color-inactive:             var(--b47-secondary-text-color);
    --b47-form-step-color-active:               var(--b47-white);
    --b47-form-step-border-completed:           var(--b47-form-step-bg-active);
    --b47-form-step-color-completed:            var(--b47-form-step-bg-active);
    --b47-form-step-label-color:                var(--b47-secondary-text-color);
    --b47-form-step-font-family:                var(--b47-body-tiny-family);
    --b47-form-step-font-size:                  var(--b47-body-tiny-size);
    --b47-form-step-font-weight:                var(--b47-font-weight-normal);
    --b47-form-step-line-height:                var(--b47-body-tiny-line-height);
    --b47-form-step-letter-spacing:             var(--b47-body-tiny-letter-spacing);
    --b47-form-step-label-font-family:          var(--b47-body-tiny-family);
    --b47-form-step-label-font-size:            var(--b47-body-tiny-size);
    --b47-form-step-label-font-weight:          var(--b47-body-tiny-weight);
    --b47-form-step-label-line-height:          var(--b47-body-tiny-line-height);
    --b47-form-step-label-letter-spacing:       var(--b47-body-tiny-letter-spacing);
    --b47-form-step-separator-height:           var(--b47-border-width);
    --b47-form-step-separator:                  var(--b47-default-border-color);
    --b47-form-step-transition:                 all var(--b47-transition-fast);

    /* --- Text fields --- */
    --b47-form-label-font-family:               var(--b47-body-tiny-family);
    --b47-form-label-font-size:                 var(--b47-body-tiny-size);
    --b47-form-label-font-weight:               var(--b47-font-weight-normal);
    --b47-form-label-line-height:               var(--b47-body-tiny-line-height);
    --b47-form-label-letter-spacing:            var(--b47-body-tiny-letter-spacing);
    --b47-form-label-text-transform:            var(--b47-text-transform-none);
    --b47-form-label-color:                     var(--b47-primary-text-color);
    --b47-form-field-transition:                border-color var(--b47-transition-fast);

    --b47-form-placeholder-color:               var(--b47-secondary-text-color);
    --b47-form-placeholder-opacity:             0.65;
    --b47-form-field-font-family:               var(--b47-body-small-family);
    --b47-form-field-font-size:                 var(--b47-body-small-size);
    --b47-form-field-font-weight:               var(--b47-font-weight-normal);
    --b47-form-field-line-height:               var(--b47-body-small-line-height);
    --b47-form-field-letter-spacing:            var(--b47-body-small-letter-spacing);
    --b47-form-field-color:                     var(--b47-primary-text-color);
    --b47-form-field-radius:                    var(--b47-radius-6);
    --b47-form-field-padding-y:                 10px;
    --b47-form-field-padding-x:                 14px;
    --b47-form-field-bg:                        var(--b47-primary-background-color);
    --b47-form-field-border-color:              var(--b47-default-border-color);
    --b47-form-field-border:                    var(--b47-border-width) solid var(--b47-form-field-border-color);
    --b47-form-field-border-focus:              var(--b47-primary-color);
    --b47-form-field-shadow:                    var(--b47-shadow-xsmall);
    --b47-form-field-gap:                       var(--b47-spacing-10);

    --b47-form-group-gap:                       var(--b47-spacing-24);
    --b47-form-required-color:                  var(--b47-primary-color);

    /* --- Radio & Checkbox --- */
    --b47-form-choice-size:                     18px;
    --b47-form-choice-border:                   var(--b47-border-width) solid var(--b47-default-border-color);
    --b47-form-choice-focus-border:             var(--b47-border-width) solid var(--b47-form-field-border-focus);
    --b47-form-choice-checked-border:           var(--b47-border-width) solid var(--b47-form-choice-checked-bg);
    --b47-form-choice-bg:                       var(--b47-primary-background-color);
    --b47-form-choice-checked-bg:               var(--b47-primary-color);
    --b47-form-choice-gap:                      var(--b47-spacing-10);
    --b47-form-choice-option-gap:               var(--b47-spacing-10);
    --b47-form-choice-label-color:              var(--b47-primary-text-color);
    --b47-form-choice-transition:               all var(--b47-transition-fast);

    --b47-form-radio-size:                      var(--b47-form-choice-size);
    --b47-form-radio-border:                    var(--b47-form-choice-border);
    --b47-form-radio-border-checked:            var(--b47-form-choice-checked-border);
    --b47-form-radio-checked-bg:                var(--b47-form-choice-checked-bg);
    --b47-form-radio-radius:                    var(--b47-radius-max);
    --b47-form-radio-gap:                       3px;

    --b47-form-checkbox-size:                   var(--b47-form-choice-size);
    --b47-form-checkbox-icon:                   url('/wp-content/uploads/checkbox-icon.svg');
    --b47-form-checkbox-radius:                 var(--b47-radius-6);
    --b47-form-checkbox-check-transition:       120ms transform ease-in-out;
    --b47-form-checkbox-check-color:            var(--b47-white);
    --b47-form-checkbox-icon-left:              calc(50% - 0.5px);

    /* --- Custom Select --- */
    --b47-form-select-placeholder-color:        var(--b47-form-placeholder-color);
    --b47-form-select-selected-color:           var(--b47-white);
    --b47-form-select-selected-bg:              var(--b47-primary-500);
    --b47-form-select-option-color:             var(--b47-form-field-color);
    --b47-form-select-option-hover-color:       var(--b47-form-select-option-color);
    --b47-form-select-option-padding-y:         var(--b47-spacing-10);
    --b47-form-select-option-padding-x:         var(--b47-form-field-padding-x);
    --b47-form-select-option-hover-bg:          var(--b47-primary-100);
    --b47-form-select-trigger-transition:       border-color var(--b47-transition-fast);

    --b47-form-select-dropdown-position:        calc(100% + var(--b47-form-select-dropdown-offset));
    --b47-form-select-dropdown-max-height:      240px;
    --b47-form-select-dropdown-offset:          var(--b47-spacing-10);
    --b47-form-select-dropdown-padding:         var(--b47-spacing-10) 0;
    --b47-form-select-dropdown-bg:              var(--b47-primary-background-color);
    --b47-form-select-dropdown-radius:          var(--b47-radius-8);
    --b47-form-select-dropdown-shadow:          var(--b47-shadow-medium);
    --b47-form-select-dropdown-border:          var(--b47-border-width) solid var(--b47-default-border-color);
    --b47-form-select-option-transition:        background var(--b47-transition-fast);
    --b47-form-select-z:                        var(--b47-z-dropdown);

    --b47-form-select-chevron-icon:             url('/wp-content/uploads/chevron-down.svg');
    --b47-form-select-chevron-icon-hover:       url('/wp-content/uploads/chevron-down.svg');
    --b47-form-select-chevron-size:             16px;
    --b47-form-select-chevron-height:           var(--b47-form-select-chevron-size);
    --b47-form-select-chevron-color:            var(--b47-form-field-border-color);
    --b47-form-select-chevron-color-hover:      var(--b47-form-select-chevron-color);
    --b47-form-select-chevron-color-open:       var(--b47-form-field-border-focus);
    --b47-form-select-chevron-transform:        scaleY(1);
    --b47-form-select-chevron-open-transform:   scaleY(-1);
    --b47-form-select-chevron-transition:       transform var(--b47-transition-fast), background-color var(--b47-transition-fast);

    /* --- Date picker calendar --- */
    --b47-form-date-offset:                     var(--b47-spacing-10);
    --b47-form-date-header-height:              34px;
    --b47-form-date-header-padding-bottom:      5px;
    --b47-form-date-font:                       var(--b47-body-family);
    --b47-form-date-radius:                     var(--b47-radius-8);
    --b47-form-date-shadow:                     var(--b47-shadow-medium);
    --b47-form-date-border:                     var(--b47-border-width) solid var(--b47-default-border-color);
    --b47-form-date-day-radius:                 var(--b47-radius-6);
    --b47-form-date-bg:                         var(--b47-primary-background-color);
    --b47-form-date-hover-bg:                   var(--b47-primary-color);
    --b47-form-date-hover-color:                var(--b47-white);
    --b47-form-date-selected-bg:                var(--b47-primary-color);
    --b47-form-date-selected-color:             var(--b47-white);
    --b47-form-date-today-border:               var(--b47-border-width) solid var(--b47-default-border-color);
    --b47-form-date-month-color:                var(--b47-heading-color);
    --b47-form-date-weekday-color:              var(--b47-secondary-text-color);
    --b47-form-date-day-color:                  var(--b47-primary-text-color);
    --b47-form-date-nav-color:                  var(--b47-secondary-text-color);
    --b47-form-date-nav-hover:                  var(--b47-primary-color);
    --b47-form-date-nav-transition:             fill var(--b47-transition-fast);
    --b47-form-date-muted-color:                var(--b47-tertiary-text-color);
    --b47-form-date-time-placeholder-color:     var(--b47-secondary-text-color);
    --b47-form-date-time-bg-active:             transparent;
    --b47-form-date-time-color-active:          var(--b47-form-field-border-focus);
    --b47-form-date-time-divider:               var(--b47-border-width) solid var(--b47-default-border-color);

    /* --- Custom Upload --- */
    --b47-form-upload-icon:                     url('/wp-content/uploads/paperclip-icon.svg');
    --b47-form-upload-icon-size:                16px;
    --b47-form-upload-btn-bg:                   var(--b47-form-field-bg);
    --b47-form-upload-btn-color:                var(--b47-form-placeholder-color);
    --b47-form-upload-btn-radius:               var(--b47-button-radius);
    --b47-form-upload-btn-font-family:          var(--b47-form-field-font-family);
    --b47-form-upload-btn-font-size:            var(--b47-form-field-font-size);
    --b47-form-upload-btn-font-weight:          var(--b47-form-field-font-weight);
    --b47-form-upload-btn-line-height:          var(--b47-form-field-line-height);
    --b47-form-upload-btn-letter-spacing:       var(--b47-form-field-letter-spacing);
    --b47-form-upload-btn-text-transform:       var(--b47-form-label-text-transform);
    --b47-form-upload-btn-padding:              var(--b47-button-padding-s);
    --b47-form-upload-btn-border:               var(--b47-form-field-border);
    --b47-form-upload-btn-shadow:               var(--b47-shadow-xsmall);
    --b47-form-upload-btn-bg-hover:             var(--b47-button-bg);
    --b47-form-upload-btn-color-hover:          var(--b47-button-text-hover);
    --b47-form-upload-btn-border-hover:         var(--b47-button-bg);
    --b47-form-upload-btn-transition:           background var(--b47-transition-fast), color var(--b47-transition-fast), border-color var(--b47-transition-fast);
    --b47-form-upload-filename-color:           var(--b47-form-placeholder-color);
    --b47-form-upload-filename-size:            var(--b47-body-small-size);
    --b47-form-upload-gap:                      var(--b47-spacing-12);
    --b47-form-upload-btn-icon-gap:             var(--b47-spacing-10);
    --b47-form-upload-clear-color:              var(--b47-secondary-text-color);
    --b47-form-upload-clear-hover:              var(--b47-heading-color);
    --b47-form-upload-clear-margin:             var(--b47-spacing-8);
    --b47-form-upload-clear-size:               var(--b47-font-size-regular);
    --b47-form-upload-clear-transition:         color var(--b47-transition-fast);

    /* --- Acceptance --- */
    --b47-form-acceptance-link-color:           var(--b47-primary-color);
    --b47-form-acceptance-link-decoration:      var(--b47-text-decoration-none);
    --b47-form-acceptance-link-hover:           var(--b47-primary-color-dark);
    --b47-form-acceptance-link-hover-decoration: var(--b47-text-decoration-underline);

    /* --- Form Buttons --- */
    --b47-form-buttons-margin-top:              24px;
    --b47-form-btn-min-width:                   100px;
    --b47-form-btn-arrow-transition:            transform var(--b47-transition-fast);
    --b47-form-btn-arrow-offset:                translateX(var(--b47-translate-4));

    /* --- Error/Success messages --- */
    --b47-form-message-gap:                     var(--b47-spacing-8);
    --b47-form-message-margin-top:              var(--b47-spacing-24);
    --b47-form-message-inline-margin-top:       var(--b47-spacing-8);
    --b47-form-message-font-family:             var(--b47-form-label-font-family);
    --b47-form-message-font-size:               var(--b47-form-label-font-size);
    --b47-form-message-font-weight:             var(--b47-form-label-font-weight);
    --b47-form-message-line-height:             var(--b47-form-label-line-height);
    --b47-form-message-letter-spacing:          var(--b47-form-label-letter-spacing);
    --b47-form-message-text-transform:          var(--b47-form-label-text-transform);
    --b47-form-message-danger-color:            var(--b47-red-dark);
    --b47-form-message-success-color:           var(--b47-green-dark);

    /* --- Inverse --- */
    --b47-inverse-form-label-color:             var(--b47-inverse-primary-text-color);
    --b47-inverse-form-field-color:             var(--b47-inverse-primary-text-color);
    --b47-inverse-form-field-bg:                var(--b47-inverse-secondary-background-color);
    --b47-inverse-form-field-border-color:      var(--b47-inverse-default-border-color);
    --b47-inverse-form-field-border-focus:      var(--b47-form-field-border-focus);
    --b47-inverse-form-placeholder-color:       var(--b47-inverse-secondary-text-color);
    --b47-inverse-form-choice-bg:               var(--b47-inverse-secondary-background-color);
    --b47-inverse-form-radio-checked-bg:        var(--b47-primary-color-light);
    --b47-inverse-form-checkbox-checked-bg:     var(--b47-primary-color-light);
    --b47-inverse-form-checkbox-checked-border: var(--b47-primary-color-light);
    --b47-inverse-form-checkbox-check-color:    var(--b47-white);
    --b47-inverse-form-acceptance-link-color:   var(--b47-inverse-primary-link-color);
    --b47-inverse-form-acceptance-link-hover:   var(--b47-inverse-primary-link-hover-color);
    --b47-inverse-form-choice-label-color:      var(--b47-inverse-primary-text-color);
    --b47-inverse-form-step-color-inactive:     var(--b47-inverse-secondary-text-color);
    --b47-inverse-form-step-label-color:        var(--b47-inverse-secondary-text-color);
    --b47-inverse-form-step-separator:          var(--b47-inverse-default-border-color);
    --b47-inverse-form-select-option-hover-bg:  var(--b47-inverse-tertiary-background-color);
    --b47-inverse-form-select-trigger-color:    var(--b47-inverse-primary-text-color);
    --b47-inverse-form-select-trigger-bg:       var(--b47-inverse-secondary-background-color);
    --b47-inverse-form-select-trigger-border:   var(--b47-inverse-form-field-border-color);
    --b47-inverse-form-select-dropdown-bg:      var(--b47-inverse-secondary-background-color);
    --b47-inverse-form-select-dropdown-border:  var(--b47-inverse-default-border-color);
    --b47-inverse-form-select-option-color:     var(--b47-inverse-primary-text-color);
    --b47-inverse-form-select-chevron-color:        var(--b47-inverse-form-select-trigger-border);
    --b47-inverse-form-select-chevron-color-hover:  var(--b47-inverse-form-select-chevron-color);
    --b47-inverse-form-select-chevron-color-open:   var(--b47-inverse-form-field-border-focus);
    --b47-inverse-form-upload-btn-color:        var(--b47-inverse-primary-text-color);
    --b47-inverse-form-upload-btn-bg:           var(--b47-inverse-secondary-background-color);
    --b47-inverse-form-upload-btn-bg-hover:     var(--b47-primary-color-light);
    --b47-inverse-form-upload-btn-color-hover:  var(--b47-inverse-heading-color);
    --b47-inverse-form-upload-btn-border:       var(--b47-border-width) solid var(--b47-inverse-form-field-border-color);
    --b47-inverse-form-upload-btn-border-hover: var(--b47-inverse-form-upload-btn-bg-hover);
    --b47-inverse-form-upload-filename-color:   var(--b47-inverse-secondary-text-color);
}

/* ------------------------------ PROGRESS BAR ----------------------------- */

.elementor-widget-form .e-form__indicators--type-progress_bar {
    margin-bottom:                              var(--b47-form-progress-mb) !important;
}
.elementor-widget-form .e-form__indicators__indicator__progress {
    width:                                      100% !important;
    height:                                     var(--b47-form-progress-height) !important;
    background:                                 var(--b47-form-progress-bg) !important;
    border-radius:                              var(--b47-form-progress-radius) !important;
    overflow:                                   hidden !important;
}
.elementor-widget-form .e-form__indicators__indicator__progress__meter {
    height:                                     100% !important;
    background:                                 var(--b47-form-progress-fill) !important;
    border-radius:                              var(--b47-form-progress-radius) !important;
    font-size:                                  0 !important;
    transition:                                 var(--b47-form-progress-transition) !important;
}

/* --------------------------------- STEPS --------------------------------- */

.elementor-widget-form .e-form__indicators--type-number_text {
    display:                                    flex !important;
    align-items:                                center !important;
    gap:                                        0 !important;
    margin-bottom:                              var(--b47-form-progress-mb) !important;
}
.elementor-widget-form .e-form__indicators__indicator {
    display:                                    flex !important;
    flex-direction:                             column !important;
    align-items:                                center !important;
    gap:                                        var(--b47-form-field-gap) !important;
    white-space:                                nowrap !important;
}
.elementor-widget-form .e-form__indicators__indicator__number {
    width:                                      var(--b47-form-step-size) !important;
    height:                                     var(--b47-form-step-size) !important;
    border-radius:                              var(--b47-form-step-radius) !important;
    border:                                     var(--b47-form-step-border) !important;
    display:                                    flex !important;
    align-items:                                center !important;
    justify-content:                            center !important;
    font-family:                                var(--b47-form-step-font-family) !important;
    font-size:                                  var(--b47-form-step-font-size) !important;
    font-weight:                                var(--b47-form-step-font-weight) !important;
    line-height:                                var(--b47-form-step-line-height) !important;
    letter-spacing:                             var(--b47-form-step-letter-spacing) !important;
    color:                                      var(--b47-form-step-color-inactive) !important;
    background:                                 transparent !important;
    transition:                                 var(--b47-form-step-transition) !important;
}
.elementor-widget-form .e-form__indicators__indicator--state-active .e-form__indicators__indicator__number {
    background:                                 var(--b47-form-step-bg-active) !important;
    border-color:                               var(--b47-form-step-bg-active) !important;
    color:                                      var(--b47-form-step-color-active) !important;
}
.elementor-widget-form .e-form__indicators__indicator--state-completed .e-form__indicators__indicator__number {
    border-color:                               var(--b47-form-step-border-completed) !important;
    color:                                      var(--b47-form-step-color-completed) !important;
}
.elementor-widget-form .e-form__indicators__indicator__label {
    font-family:                                var(--b47-form-step-label-font-family) !important;
    font-size:                                  var(--b47-form-step-label-font-size) !important;
    font-weight:                                var(--b47-form-step-label-font-weight) !important;
    line-height:                                var(--b47-form-step-label-line-height) !important;
    letter-spacing:                             var(--b47-form-step-label-letter-spacing) !important;
    color:                                      var(--b47-form-step-label-color) !important;
}
.elementor-widget-form .e-form__indicators__indicator__separator {
    flex:                                       1 !important;
    height:                                     var(--b47-form-step-separator-height) !important;
    background:                                 var(--b47-form-step-separator) !important;
    margin-top:                                 calc(var(--b47-form-step-size) / 2) !important;
    transform:                                  translateY(-50%) !important;
    align-self:                                 flex-start !important;
}

/* ------------------------------ TEXT FIELDS ------------------------------ */

.elementor-widget-form .elementor-field-group {
    gap:                                        var(--b47-form-field-gap) !important;
}
.elementor-widget-form .elementor-form-fields-wrapper {
    gap:                                        var(--b47-form-group-gap) !important;
}
.elementor-widget-form .elementor-field-label {
    font-family:                                var(--b47-form-label-font-family) !important;
    font-size:                                  var(--b47-form-label-font-size) !important;
    font-weight:                                var(--b47-form-label-font-weight) !important;
    line-height:                                var(--b47-form-label-line-height) !important;
    letter-spacing:                             var(--b47-form-label-letter-spacing) !important;
    color:                                      var(--b47-form-label-color) !important;
}
.elementor-widget-form .elementor-field-label .elementor-mark-required {
    color:                                      var(--b47-form-required-color) !important;
}
.elementor-widget-form .elementor-field-textual {
    width:                                      100% !important;
    font-family:                                var(--b47-form-field-font-family) !important;
    font-size:                                  var(--b47-form-field-font-size) !important;
    font-weight:                                var(--b47-form-field-font-weight) !important;
    line-height:                                var(--b47-form-field-line-height) !important;
    letter-spacing:                             var(--b47-form-field-letter-spacing) !important;
    color:                                      var(--b47-form-field-color) !important;
    padding:                                    var(--b47-form-field-padding-y) var(--b47-form-field-padding-x) !important;
    border-radius:                              var(--b47-form-field-radius) !important;
    border:                                     var(--b47-form-field-border) !important;
    background:                                 var(--b47-form-field-bg) !important;
    box-shadow:                                 var(--b47-form-field-shadow) !important;
    transition:                                 var(--b47-form-field-transition) !important;
}
.elementor-widget-form .elementor-field-textual::placeholder {
    font-family:                                var(--b47-form-field-font-family) !important;
    font-size:                                  var(--b47-form-field-font-size) !important;
    font-weight:                                var(--b47-form-field-font-weight) !important;
    line-height:                                var(--b47-form-field-line-height) !important;
    letter-spacing:                             var(--b47-form-field-letter-spacing) !important;
    color:                                      var(--b47-form-placeholder-color) !important;
    opacity:                                    var(--b47-form-placeholder-opacity) !important;
}
.elementor-widget-form .elementor-field-textual:focus {
    outline:                                    none !important;
    border-color:                               var(--b47-form-field-border-focus) !important;
}

/* --------------------------------- RADIO --------------------------------- */

.elementor-widget-form .elementor-field-type-radio .elementor-field-subgroup {
    display:                                    flex !important;
    flex-direction:                             column !important;
    gap:                                        var(--b47-form-choice-gap) !important;
}
.elementor-widget-form .elementor-field-type-radio .elementor-field-option {
    display:                                    flex !important;
    align-items:                                center !important;
    gap:                                        var(--b47-form-choice-option-gap) !important;
}
.elementor-widget-form .elementor-field-type-radio input[type="radio"] {
    appearance:                                 none !important;
    -webkit-appearance:                         none !important;
    width:                                      var(--b47-form-radio-size) !important;
    height:                                     var(--b47-form-radio-size) !important;
    min-width:                                  var(--b47-form-radio-size) !important;
    border:                                     var(--b47-form-radio-border) !important;
    border-radius:                              var(--b47-form-radio-radius) !important;
    background:                                 var(--b47-form-choice-bg) !important;
    cursor:                                     pointer !important;
    transition:                                 var(--b47-form-choice-transition) !important;
}
.elementor-widget-form .elementor-field-type-radio input[type="radio"]:checked {
    background:                                 var(--b47-form-radio-checked-bg) !important;
    border:                                     var(--b47-form-radio-border-checked) !important;
}
.elementor-widget-form .elementor-field-type-radio input[type="radio"]:focus {
    outline:                                    none !important;
    border:                                     var(--b47-form-choice-focus-border) !important;
}
.elementor-widget-form .elementor-field-type-radio .elementor-field-option label {
    font-family:                                var(--b47-form-field-font-family) !important;
    font-size:                                  var(--b47-form-field-font-size) !important;
    font-weight:                                var(--b47-form-field-font-weight) !important;
    line-height:                                var(--b47-form-field-line-height) !important;
    letter-spacing:                             var(--b47-form-field-letter-spacing) !important;
    color:                                      var(--b47-form-choice-label-color) !important;
    cursor:                                     pointer !important;
}

/* ------------------------------- CHECKBOX -------------------------------- */

.elementor-widget-form .elementor-field-type-checkbox .elementor-field-subgroup,
.elementor-widget-form .elementor-field-type-acceptance .elementor-field-subgroup {
    display:                                    flex !important;
    flex-direction:                             column !important;
    gap:                                        var(--b47-form-choice-gap) !important;
}
.elementor-widget-form .elementor-field-type-checkbox .elementor-field-option,
.elementor-widget-form .elementor-field-type-acceptance .elementor-field-option {
    display:                                    flex !important;
    align-items:                                center !important;
    gap:                                        var(--b47-form-choice-option-gap) !important;
}
.elementor-widget-form .elementor-field-type-checkbox input[type="checkbox"],
.elementor-widget-form .elementor-field-type-acceptance input[type="checkbox"] {
    position:                                   relative;
    appearance:                                 none !important;
    -webkit-appearance:                         none !important;
    width:                                      var(--b47-form-checkbox-size) !important;
    height:                                     var(--b47-form-checkbox-size) !important;
    min-width:                                  var(--b47-form-checkbox-size) !important;
    border:                                     var(--b47-form-choice-border) !important;
    border-radius:                              var(--b47-form-checkbox-radius) !important;
    background:                                 var(--b47-form-choice-bg) !important;
    cursor:                                     pointer !important;
    display:                                    grid !important;
    place-content:                              center !important;
    transition:                                 var(--b47-form-choice-transition) !important;
}
.elementor-widget-form .elementor-field-type-checkbox input[type="checkbox"]::before,
.elementor-widget-form .elementor-field-type-acceptance input[type="checkbox"]::before {
    position:                                   absolute !important;
    top:                                        50% !important;
    left:                                       var(--b47-form-checkbox-icon-left) !important;
    content:                                    '' !important;
    width:                                      var(--b47-form-choice-size) !important;
    height:                                     var(--b47-form-choice-size) !important;
    transform:                                  translate(-50%, -50%) scale(0) !important;
    transform-origin:                           bottom left !important;
    transition:                                 var(--b47-form-checkbox-check-transition) !important;
    background-color:                           var(--b47-form-checkbox-check-color) !important;
    -webkit-mask-image:                         var(--b47-form-checkbox-icon) !important;
    mask-image:                                 var(--b47-form-checkbox-icon) !important;
    -webkit-mask-repeat:                        no-repeat !important;
    mask-repeat:                                no-repeat !important;
    -webkit-mask-size:                          contain !important;
    mask-size:                                  contain !important;
    -webkit-mask-position:                      center !important;
    mask-position:                              center !important;
}
.elementor-widget-form .elementor-field-type-checkbox input[type="checkbox"]:checked,
.elementor-widget-form .elementor-field-type-acceptance input[type="checkbox"]:checked {
    background:                                 var(--b47-form-choice-checked-bg) !important;
    border:                                     var(--b47-form-choice-checked-border) !important;
}
.elementor-widget-form .elementor-field-type-checkbox input[type="checkbox"]:checked::before,
.elementor-widget-form .elementor-field-type-acceptance input[type="checkbox"]:checked::before {
    transform:                                  translate(-50%, -50%) scale(1) !important;
}
.elementor-widget-form .elementor-field-type-checkbox input[type="checkbox"]:focus,
.elementor-widget-form .elementor-field-type-acceptance input[type="checkbox"]:focus {
    outline:                                    none !important;
    border:                                     var(--b47-form-choice-focus-border) !important;
}
.elementor-widget-form .elementor-field-type-checkbox .elementor-field-option label,
.elementor-widget-form .elementor-field-type-acceptance .elementor-field-option label {
    font-family:                                var(--b47-form-field-font-family) !important;
    font-size:                                  var(--b47-form-field-font-size) !important;
    font-weight:                                var(--b47-form-field-font-weight) !important;
    line-height:                                var(--b47-form-field-line-height) !important;
    letter-spacing:                             var(--b47-form-field-letter-spacing) !important;
    color:                                      var(--b47-form-choice-label-color) !important;
    cursor:                                     pointer !important;
}

/* ----------------------------- CUSTOM SELECT ----------------------------- */

.custom-select {
    position:                                   relative;
    width:                                      100% !important;
}
.custom-select_trigger {
    display:                                    flex;
    align-items:                                center;
    justify-content:                            space-between;
    padding:                                    var(--b47-form-field-padding-y) var(--b47-form-field-padding-x);
    border-radius:                              var(--b47-form-field-radius);
    border:                                     var(--b47-form-field-border);
    background:                                 var(--b47-form-field-bg);
    box-shadow:                                 var(--b47-form-field-shadow);
    cursor:                                     pointer;
    font-family:                                var(--b47-form-field-font-family);
    font-size:                                  var(--b47-form-field-font-size);
    font-weight:                                var(--b47-form-field-font-weight);
    color:                                      var(--b47-form-field-color);
    transition:                                 var(--b47-form-select-trigger-transition);
    user-select:                                none;
}
.custom-select.is-open .custom-select_trigger {
    border-color:                               var(--b47-form-field-border-focus);
}
.custom-select_value {
    overflow:                                   hidden !important;
    white-space:                                nowrap !important;
    text-overflow:                              ellipsis !important;
    flex:                                       1 !important;
}
.custom-select_value.is-placeholder {
    color:                                      var(--b47-form-select-placeholder-color) !important;
    opacity:                                    var(--b47-form-placeholder-opacity) !important;
}

/* --- Chevron --- */
.custom-select_chevron {
    width:                                      var(--b47-form-select-chevron-size) !important;
    height:                                     var(--b47-form-select-chevron-height) !important;
    background-color:                           var(--b47-form-select-chevron-color) !important;
    mask-image:                                 var(--b47-form-select-chevron-icon) !important;
    -webkit-mask-image:                         var(--b47-form-select-chevron-icon) !important;
    mask-size:                                  contain !important;
    -webkit-mask-size:                          contain !important;
    mask-repeat:                                no-repeat !important;
    mask-position:                              center !important;
    flex-shrink:                                0 !important;
    transform:                                  var(--b47-form-select-chevron-transform);
    transition:                                 var(--b47-form-select-chevron-transition) !important;
}
.custom-select_trigger:hover .custom-select_chevron {
    background-color:                           var(--b47-form-select-chevron-color-hover) !important;
}
.custom-select.is-open .custom-select_chevron {
    transform:                                  var(--b47-form-select-chevron-open-transform);
    background-color:                           var(--b47-form-select-chevron-color-open) !important;
}

/* --- Dropdown --- */
.custom-select_dropdown {
    display:                                    none;
    position:                                   absolute;
    top:                                        var(--b47-form-select-dropdown-position) !important;
    left:                                       0;
    right:                                      0;
    background:                                 var(--b47-form-select-dropdown-bg);
    border:                                     var(--b47-form-select-dropdown-border) !important;
    border-radius:                              var(--b47-form-select-dropdown-radius);
    box-shadow:                                 var(--b47-form-select-dropdown-shadow);
    list-style:                                 none;
    padding:                                    var(--b47-form-select-dropdown-padding);
    z-index:                                    var(--b47-form-select-z);
    max-height:                                 var(--b47-form-select-dropdown-max-height) !important;
    overflow-y:                                 auto;
}
.custom-select.is-open .custom-select_dropdown {
    display:                                    block;
}

/* --- Options --- */
.custom-select_option {
    padding:                                    var(--b47-form-select-option-padding-y) var(--b47-form-select-option-padding-x);
    font-family:                                var(--b47-form-field-font-family);
    font-size:                                  var(--b47-form-field-font-size);
    font-weight:                                var(--b47-form-field-font-weight);
    color:                                      var(--b47-form-select-option-color);
    cursor:                                     pointer;
    transition:                                 var(--b47-form-select-option-transition);
}
.custom-select_option:hover {
    background:                                 var(--b47-form-select-option-hover-bg);
    color:                                      var(--b47-form-select-option-hover-color);
}
.custom-select_option.is-selected {
    background:                                 var(--b47-form-select-selected-bg);
    color:                                      var(--b47-form-select-selected-color);
}

/* ------------------------------ DATE PICKER ------------------------------ */

.flatpickr-calendar {
    background:                                 var(--b47-form-date-bg) !important;
    margin-top:                                 var(--b47-form-date-offset) !important;
    font-family:                                var(--b47-form-date-font) !important;
    border-radius:                              var(--b47-form-date-radius) !important;
    box-shadow:                                 var(--b47-form-date-shadow) !important;
    border:                                     var(--b47-form-date-border) !important;
}
.flatpickr-calendar::before,
.flatpickr-calendar::after {
    display:                                    none !important;
}
.flatpickr-calendar .flatpickr-months {
    align-items:                                center !important;
}
.flatpickr-calendar .flatpickr-month {
    height:                                     var(--b47-form-date-header-height) !important;
    display:                                    flex !important;
    align-items:                                center !important;
    padding-bottom:                             var(--b47-form-date-header-padding-bottom) !important;
}
.flatpickr-calendar .flatpickr-current-month {
    display:                                    flex !important;
    align-items:                                center !important;
    height:                                     auto !important;
    color:                                      var(--b47-form-date-month-color) !important;
}
.flatpickr-calendar .flatpickr-current-month input.numInput {
    color:                                      var(--b47-form-date-month-color) !important;
    background:                                 transparent !important;
}
.flatpickr-calendar .numInputWrapper span {
    border-color:                               rgba(255,255,255,0.15) !important;
}
.flatpickr-calendar .numInputWrapper span.arrowUp::after {
    border-bottom-color:                        var(--b47-form-date-month-color) !important;
}
.flatpickr-calendar .numInputWrapper span.arrowDown::after {
    border-top-color:                           var(--b47-form-date-month-color) !important;
}
.flatpickr-calendar .flatpickr-months .flatpickr-prev-month:hover,
.flatpickr-calendar .flatpickr-months .flatpickr-next-month:hover {
    color:                                      var(--b47-form-date-nav-hover) !important;
    fill:                                       var(--b47-form-date-nav-hover) !important;
}
.flatpickr-calendar .flatpickr-months .flatpickr-prev-month svg,
.flatpickr-calendar .flatpickr-months .flatpickr-next-month svg {
    fill:                                       var(--b47-form-date-nav-color) !important;
    transition:                                 var(--b47-form-date-nav-transition) !important;
}
.flatpickr-calendar .flatpickr-months .flatpickr-prev-month:hover svg,
.flatpickr-calendar .flatpickr-months .flatpickr-next-month:hover svg {
    fill:                                       var(--b47-form-date-nav-hover) !important;
}
.flatpickr-calendar .flatpickr-weekday {
    color:                                      var(--b47-form-date-weekday-color) !important;
}
.flatpickr-calendar .flatpickr-day {
    border-radius:                              var(--b47-form-date-day-radius) !important;
    color:                                      var(--b47-form-date-day-color) !important;
}
.flatpickr-calendar .flatpickr-day:hover,
.flatpickr-calendar .flatpickr-day:focus {
    background:                                 var(--b47-form-date-hover-bg) !important;
    color:                                      var(--b47-form-date-hover-color) !important;
    border-color:                               transparent !important;
}
.flatpickr-calendar .flatpickr-day.today {
    border:                                     var(--b47-form-date-today-border) !important;
    background:                                 transparent !important;
}
.flatpickr-calendar .flatpickr-day.today:hover {
    background:                                 var(--b47-form-date-hover-bg) !important;
    color:                                      var(--b47-form-date-hover-color) !important;
    border:                                     none !important;
}
.flatpickr-calendar .flatpickr-day.selected,
.flatpickr-calendar .flatpickr-day.selected:hover,
.flatpickr-calendar .flatpickr-day.selected.today,
.flatpickr-calendar .flatpickr-day.selected.today:hover,
.flatpickr-calendar .flatpickr-day.prevMonthDay:hover,
.flatpickr-calendar .flatpickr-day.nextMonthDay:hover  {
    background:                                 var(--b47-form-date-selected-bg) !important;
    border-color:                               var(--b47-form-date-selected-bg) !important;
    color:                                      var(--b47-form-date-selected-color) !important;
}
.flatpickr-calendar .flatpickr-day.prevMonthDay,
.flatpickr-calendar .flatpickr-day.nextMonthDay {
    color:                                      var(--b47-form-date-muted-color) !important;
}
.flatpickr-calendar.hasTime .flatpickr-time {
    border-top:                                 var(--b47-form-date-time-divider) !important;
}
.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
    border-top:                                 none !important;
}
.flatpickr-calendar .flatpickr-time input {
    color:                                      var(--b47-form-date-day-color) !important;
}
.flatpickr-calendar .numInputWrapper:hover,
.flatpickr-calendar .flatpickr-time input:hover,
.flatpickr-calendar .flatpickr-time input:focus,
.flatpickr-calendar .flatpickr-time .flatpickr-am-pm:hover,
.flatpickr-calendar .flatpickr-time .flatpickr-am-pm:focus {
    background:                                 var(--b47-form-date-time-bg-active) !important;
}
.flatpickr-calendar .flatpickr-time input:hover,
.flatpickr-calendar .flatpickr-time input:focus,
.flatpickr-calendar .flatpickr-time .flatpickr-am-pm:hover,
.flatpickr-calendar .flatpickr-time .flatpickr-am-pm:focus {
    color:                                      var(--b47-form-date-time-color-active) !important;
}
.flatpickr-calendar .flatpickr-time input::placeholder {
    color:                                      var(--b47-form-date-time-placeholder-color) !important;
    opacity:                                    var(--b47-form-placeholder-opacity) !important;
}
.flatpickr-calendar .flatpickr-time .flatpickr-time-separator,
.flatpickr-calendar .flatpickr-time .flatpickr-am-pm {
    color:                                      var(--b47-form-date-day-color) !important;
}

/* --- iOS Safari fix --- */
.elementor-widget-form input[type="date"],
.elementor-widget-form input[type="time"] {
    -webkit-appearance:                         none !important;
    appearance:                                 none !important;
}
.elementor-widget-form input[type="date"]::before,
.elementor-widget-form input[type="time"]::before {
    content:                                    attr(placeholder);
    color:                                      var(--b47-form-placeholder-color);
    opacity:                                    var(--b47-form-placeholder-opacity);
    font-family:                                var(--b47-form-field-font-family);
    font-size:                                  var(--b47-form-field-font-size);
    font-weight:                                var(--b47-form-field-font-weight);
    display:                                    block;
    white-space:                                nowrap;
    text-overflow:                              ellipsis;
    max-width:                                  calc(100% - var(--b47-form-field-padding-x));
}
.elementor-widget-form input[type="date"].date-selected::before,
.elementor-widget-form input[type="time"].date-selected::before {
    content:                                    '' !important;
}
.elementor-widget-form input::-webkit-date-and-time-value {
    text-align:                                 left !important;
    width:                                      100% !important;
    display:                                    block !important;
}

/* ----------------------------- CUSTOM UPLOAD ----------------------------- */

.elementor-widget-form .elementor-field-type-upload .elementor-field-group,
.elementor-widget-form .elementor-field-type-upload {
    flex-direction:                             column !important;
    justify-content:                            start !important;
    align-items:                                start !important;
    position:                                   relative !important;
}
.custom-upload {
    display:                                    flex !important;
    align-items:                                center !important;
    gap:                                        var(--b47-form-upload-gap) !important;
}
.custom-upload_button {
    -webkit-appearance:                         none !important;
    appearance:                                 none !important;
    margin:                                     0 !important;
    display:                                    inline-flex !important;
    align-items:                                center !important;
    gap:                                        var(--b47-form-upload-btn-icon-gap) !important;
    padding:                                    var(--b47-form-upload-btn-padding) !important;
    border:                                     var(--b47-form-upload-btn-border) !important;
    border-radius:                              var(--b47-form-upload-btn-radius) !important;
    box-shadow:                                 var(--b47-form-upload-btn-shadow) !important;
    background:                                 var(--b47-form-upload-btn-bg) !important;
    color:                                      var(--b47-form-upload-btn-color) !important;
    font-family:                                var(--b47-form-upload-btn-font-family) !important;
    font-size:                                  var(--b47-form-upload-btn-font-size) !important;
    font-weight:                                var(--b47-form-upload-btn-font-weight) !important;
    line-height:                                var(--b47-form-upload-btn-line-height) !important;
    letter-spacing:                             var(--b47-form-upload-btn-letter-spacing) !important;
    text-transform:                             var(--b47-form-upload-btn-text-transform) !important;
    cursor:                                     pointer !important;
    white-space:                                nowrap !important;
    transition:                                 var(--b47-form-upload-btn-transition) !important;
}
.custom-upload_button:hover {
    background:                                 var(--b47-form-upload-btn-bg-hover) !important;
    color:                                      var(--b47-form-upload-btn-color-hover) !important;
    border-color:                               var(--b47-form-upload-btn-border-hover) !important;
    box-shadow:                                 none !important;
}
.custom-upload_icon {
    width:                                      var(--b47-form-upload-icon-size) !important;
    height:                                     var(--b47-form-upload-icon-size) !important;
    background-color:                           currentColor !important;
    mask-image:                                 var(--b47-form-upload-icon) !important;
    -webkit-mask-image:                         var(--b47-form-upload-icon) !important;
    mask-size:                                  contain !important;
    mask-repeat:                                no-repeat !important;
    mask-position:                              center !important;
    flex-shrink:                                0 !important;
}
.custom-upload_filename {
    font-family:                                var(--b47-form-label-font-family) !important;
    font-size:                                  var(--b47-form-upload-filename-size) !important;
    font-weight:                                var(--b47-form-label-font-weight) !important;
    line-height:                                var(--b47-form-label-line-height) !important;
    letter-spacing:                             var(--b47-form-label-letter-spacing) !important;
    color:                                      var(--b47-form-upload-filename-color) !important;
}
.custom-upload_clear {
    appearance:                                 none !important;
    background:                                 none !important;
    border:                                     none !important;
    padding:                                    0 !important;
    margin-left:                                var(--b47-form-upload-clear-margin) !important;
    font-size:                                  var(--b47-form-upload-clear-size) !important;
    color:                                      var(--b47-form-upload-clear-color) !important;
    cursor:                                     pointer !important;
    line-height:                                1 !important;
    transition:                                 var(--b47-form-upload-clear-transition) !important;
}
.custom-upload_clear:hover {
    color:                                      var(--b47-form-upload-clear-hover) !important;
}
.custom-upload_filename.is-selected {
    color:                                      var(--b47-form-field-color) !important;
}

/* ------------------------------ ACCEPTANCE ------------------------------- */

.elementor-widget-form .elementor-field-type-acceptance .elementor-field-option label {
    font-family:                                var(--b47-form-field-font-family) !important;
    font-size:                                  var(--b47-form-field-font-size) !important;
    font-weight:                                var(--b47-form-field-font-weight) !important;
    line-height:                                var(--b47-form-field-line-height) !important;
    letter-spacing:                             var(--b47-form-field-letter-spacing) !important;
    color:                                      var(--b47-form-choice-label-color) !important;
    cursor:                                     default !important;
}
.elementor-widget-form .elementor-field-type-acceptance .elementor-field-option label a {
    color:                                      var(--b47-form-acceptance-link-color) !important;
    text-decoration:                            var(--b47-form-acceptance-link-decoration) !important;
    cursor:                                     pointer !important;
}
.elementor-widget-form .elementor-field-type-acceptance .elementor-field-option label a:hover {
    color:                                      var(--b47-form-acceptance-link-hover) !important;
    text-decoration:                            var(--b47-form-acceptance-link-hover-decoration) !important;
}

/* ----------------------------- SUBMIT BUTTONS ---------------------------- */

.elementor-widget-form .e-form__buttons {
    flex-wrap:                                  nowrap !important;
    margin-top:                                 var(--b47-form-buttons-margin-top);
}
.elementor-widget-form .elementor-field-type-submit .elementor-button {
    flex-basis:                                 auto !important;
    min-width:                                  var(--b47-form-btn-min-width) !important;
}
.elementor-widget-form .e-form__buttons__wrapper .elementor-button {
    white-space:                                nowrap !important;
}
.elementor-widget-form .e-form__buttons__wrapper__button {
    min-width:                                  100px !important;
}
.elementor-widget-form.button-stretch .e-form__buttons,
.elementor-widget-form.button-stretch-mobile .e-form__buttons,
.elementor-widget-form.button-stretch-tablet .e-form__buttons {
    align-items:                                stretch !important;
    width:                                      100% !important;
}
.elementor-widget-form.button-stretch .e-form__buttons__wrapper,
.elementor-widget-form.button-stretch-mobile .e-form__buttons__wrapper,
.elementor-widget-form.button-stretch-tablet .e-form__buttons__wrapper {
    width:                                      100% !important;
    flex:                                       1 !important;
}

/* --- Arrow variant — submit only --- */
.elementor-widget-form.button-arrow .elementor-field-type-submit .elementor-button .elementor-button-content-wrapper {
    display:                                    flex !important;
    align-items:                                center !important;
    gap:                                        var(--b47-button-gap) !important;
}
.elementor-widget-form.button-arrow .elementor-field-type-submit .elementor-button .elementor-button-content-wrapper::after {
    content:                                    '' !important;
    width:                                      var(--b47-button-arrow-size) !important;
    height:                                     var(--b47-button-arrow-size) !important;
    background-color:                           currentColor !important;
    mask-image:                                 var(--b47-button-arrow-icon) !important;
    -webkit-mask-image:                         var(--b47-button-arrow-icon) !important;
    mask-size:                                  contain !important;
    mask-repeat:                                no-repeat !important;
    mask-position:                              center !important;
    flex-shrink:                                0 !important;
    transition:                                 var(--b47-form-btn-arrow-transition) !important;
}
.elementor-widget-form.button-arrow .elementor-field-type-submit .elementor-button:hover .elementor-button-content-wrapper::after {
    transform:                                  var(--b47-form-btn-arrow-offset) !important;
}

/* ----------------------------- FORM MESSAGES ----------------------------- */

.elementor-widget-form .elementor-message {
    font-family:                                var(--b47-form-message-font-family) !important;
    font-size:                                  var(--b47-form-message-font-size) !important;
    font-weight:                                var(--b47-form-message-font-weight) !important;
    line-height:                                var(--b47-form-message-line-height) !important;
    letter-spacing:                             var(--b47-form-message-letter-spacing) !important;
    text-transform:                             var(--b47-form-message-text-transform) !important;
    display:                                    flex !important;
    align-items:                                center !important;
    gap:                                        var(--b47-form-message-gap) !important;
}
.elementor-widget-form .elementor-message::before {
    display:                                    none !important;
}
.elementor-widget-form .elementor-message-danger {
    color:                                      var(--b47-form-message-danger-color) !important;
}
.elementor-widget-form .elementor-message-success {
    color:                                      var(--b47-form-message-success-color) !important;
    margin-top:                                 var(--b47-form-message-margin-top) !important;
}
.elementor-widget-form .elementor-form-help-inline {
    margin-top:                                 var(--b47-form-message-inline-margin-top) !important;
}

/* ------------------------------ INVERSE MODE ----------------------------- */

.inverse-mode .elementor-widget-form {
    --b47-form-label-color:                     var(--b47-inverse-form-label-color) !important;
    --b47-form-field-color:                     var(--b47-inverse-form-field-color) !important;
    --b47-form-field-bg:                        var(--b47-inverse-form-field-bg) !important;
    --b47-form-placeholder-color:               var(--b47-inverse-form-placeholder-color) !important;
    --b47-form-choice-bg:                       var(--b47-inverse-form-choice-bg) !important;
    --b47-form-choice-label-color:              var(--b47-inverse-form-choice-label-color) !important;
    --b47-form-step-color-inactive:             var(--b47-inverse-form-step-color-inactive) !important;
    --b47-form-step-label-color:                var(--b47-inverse-form-step-label-color) !important;
    --b47-form-step-separator:                  var(--b47-inverse-form-step-separator) !important;
    --b47-form-select-option-hover-bg:          var(--b47-inverse-form-select-option-hover-bg) !important;
    --b47-form-acceptance-link-color:           var(--b47-inverse-form-acceptance-link-color) !important;
    --b47-form-acceptance-link-hover:           var(--b47-inverse-form-acceptance-link-hover) !important;
}

/* --- Labels + fields --- */
.inverse-mode .elementor-widget-form .elementor-field-label {
    color:                                      var(--b47-inverse-form-label-color) !important;
}
.inverse-mode .elementor-widget-form .elementor-field-textual {
    color:                                      var(--b47-inverse-form-field-color) !important;
    background:                                 var(--b47-inverse-form-field-bg) !important;
    border-color:                               var(--b47-inverse-form-field-border-color) !important;
}
.inverse-mode .elementor-widget-form .elementor-field-textual:focus {
    border-color:                               var(--b47-inverse-form-field-border-focus) !important;
}
.inverse-mode .elementor-widget-form .elementor-field-textual::placeholder {
    color:                                      var(--b47-inverse-form-placeholder-color) !important;
}

/* --- Radio — checked --- */
.inverse-mode .elementor-widget-form .elementor-field-type-radio input[type="radio"]:checked {
    background:                                 var(--b47-inverse-form-radio-checked-bg) !important;
    border-color:                               var(--b47-inverse-form-radio-checked-bg) !important;
}

/* --- Radio checked — transparent gap --- */
.elementor-widget-form .elementor-field-type-radio input[type="radio"]:checked,
.inverse-mode .elementor-widget-form .elementor-field-type-radio input[type="radio"]:checked {
    padding:                                    var(--b47-form-radio-gap) !important;
    background-clip:                            content-box !important;
    box-shadow:                                 none !important;
}

/* --- Checkbox — checked --- */
.inverse-mode .elementor-widget-form .elementor-field-type-checkbox input[type="checkbox"]:checked,
.inverse-mode .elementor-widget-form .elementor-field-type-acceptance input[type="checkbox"]:checked {
    background:                                 var(--b47-inverse-form-checkbox-checked-bg) !important;
    border-color:                               var(--b47-inverse-form-checkbox-checked-border) !important;
}
.inverse-mode .elementor-widget-form .elementor-field-type-checkbox input[type="checkbox"]::before,
.inverse-mode .elementor-widget-form .elementor-field-type-acceptance input[type="checkbox"]::before {
    background-color:                           var(--b47-inverse-form-checkbox-check-color) !important;
}

/* --- Choice labels --- */
.inverse-mode .elementor-widget-form .elementor-field-type-radio .elementor-field-option label,
.inverse-mode .elementor-widget-form .elementor-field-type-checkbox .elementor-field-option label,
.inverse-mode .elementor-widget-form .elementor-field-type-acceptance .elementor-field-option label {
    color:                                      var(--b47-inverse-form-choice-label-color) !important;
}

/* --- Custom select --- */
.inverse-mode .custom-select {
    --b47-form-select-chevron-color:            var(--b47-inverse-form-select-chevron-color) !important;
    --b47-form-select-chevron-color-hover:      var(--b47-inverse-form-select-chevron-color-hover) !important;
    --b47-form-select-chevron-color-open:       var(--b47-inverse-form-select-chevron-color-open) !important;
}
.inverse-mode .custom-select_trigger {
    color:                                      var(--b47-inverse-form-select-trigger-color) !important;
    background:                                 var(--b47-inverse-form-select-trigger-bg) !important;
    border-color:                               var(--b47-inverse-form-select-trigger-border) !important;
}
.inverse-mode .custom-select.is-open .custom-select_trigger {
    border-color:                               var(--b47-inverse-form-field-border-focus) !important;
}
.inverse-mode .custom-select_value.is-placeholder {
    color:                                      var(--b47-inverse-form-placeholder-color) !important;
}
.inverse-mode .custom-select_dropdown {
    background:                                 var(--b47-inverse-form-select-dropdown-bg) !important;
    border-color:                               var(--b47-inverse-form-select-dropdown-border) !important;
}
.inverse-mode .custom-select_option {
    color:                                      var(--b47-inverse-form-select-option-color) !important;
}
.inverse-mode .custom-select_option:hover {
    background:                                 var(--b47-inverse-form-select-option-hover-bg) !important;
}

/* --- Custom upload --- */
.inverse-mode .custom-upload_button {
    color:                                      var(--b47-inverse-form-upload-btn-color) !important;
    background:                                 var(--b47-inverse-form-upload-btn-bg) !important;
    border:                                     var(--b47-inverse-form-upload-btn-border) !important;
}
.inverse-mode .custom-upload_button:hover {
    background:                                 var(--b47-inverse-form-upload-btn-bg-hover) !important;
    color:                                      var(--b47-inverse-form-upload-btn-color-hover) !important;
    border-color:                               var(--b47-inverse-form-upload-btn-border-hover) !important;
}
.inverse-mode .custom-upload_filename {
    color:                                      var(--b47-inverse-form-upload-filename-color) !important;
}



/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ HEADER & NAV POPUP ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* --------------------------- HEADER VARIABLES ---------------------------- */

/* --- set dynamically by JS on load and resize — do not hardcode --- */
:root {
    --b47-header-height:                        0px;
    --b47-header-width:                         100%;
    --b47-header-position:                      translateY(-100%);
    --b47-header-visible:                       translateY(0);
    --b47-header-hidden:                        translateY(-100%);
    --b47-header-bg:                            transparent;
    --b47-header-top:                           0;
    --b47-header-left:                          0;
    --b47-header-bg-scrolled:                   var(--b47-primary-background-color);
    --b47-header-padding:                       var(--b47-spacing-24);
    --b47-header-padding-scrolled:              var(--b47-spacing-12);
    --b47-header-logo-width:                    150px;
    --b47-header-shadow:                        var(--b47-shadow-medium);
    --b47-header-z:                             var(--b47-z-fixed);

    --b47-anchor-extra:                         0px;

    /* --- Transitions --- */
    --b47-header-transition:                    transform 0.4s ease, padding 0.25s ease;
    --b47-header-bg-transition:                 -webkit-mask-position 0.3s ease, mask-position 0.3s ease;
    --b47-header-bg-mask:                       linear-gradient(to bottom, #000 33.33%, transparent 66.66%);
    --b47-header-bg-mask-size:                  100% 300%;           
    --b47-header-color-transition:              color 0.3s ease, fill 0.3s ease, background-color 0.3s ease, border-color 0.3s ease;              

    /* --- Nav colors — default (light bg) --- */
    --b47-header-icon-size:                     var(--b47-spacing-32);
    --b47-header-icon-color:                    var(--b47-heading-color);
    --b47-header-nav-color:                     var(--b47-heading-color);
    --b47-header-nav-color-hover:               var(--b47-primary-color);

    /* --- Nav colors — dark page (is-inverse-page signal) --- */
    --b47-header-icon-color-dark:               var(--b47-inverse-primary-text-color);
    --b47-header-nav-color-dark:                var(--b47-inverse-primary-text-color);
    --b47-header-nav-color-dark-hover:          var(--b47-inverse-secondary-text-color);

    /* --- CTA colors — default (light bg) --- */
    --b47-header-cta-bg:                        transparent;
    --b47-header-cta-bg-hover:                  var(--b47-heading-color);
    --b47-header-cta-text:                      var(--b47-heading-color);
    --b47-header-cta-text-hover:                var(--b47-primary-background-color);
    --b47-header-cta-border:                    var(--b47-border-width) solid var(--b47-heading-color);
    --b47-header-cta-radius:                    var(--b47-radius-8);

    /* --- CTA colors — dark page (is-inverse-page signal) --- */
    --b47-header-cta-dark-bg:                   transparent;
    --b47-header-cta-dark-bg-hover:             var(--b47-inverse-primary-text-color);
    --b47-header-cta-dark-text:                 var(--b47-inverse-primary-text-color);
    --b47-header-cta-dark-text-hover:           var(--b47-heading-color);
    --b47-header-cta-dark-border:               var(--b47-border-width) solid var(--b47-inverse-primary-text-color);
}

/* ----------------------------- HEADER CLASSES ---------------------------- */

/* --- Base --- */
.main-header {
    position:                                   fixed !important;
    top:                                        var(--b47-header-top) !important;
    left:                                       var(--b47-header-left) !important;
    width:                                      var(--b47-header-width) !important;
    z-index:                                    var(--b47-header-z);
    background:                                 var(--b47-header-bg);
    padding-top:                                var(--b47-header-padding) !important;
    padding-bottom:                             var(--b47-header-padding) !important;
    transform:                                  var(--b47-header-position);
    transition:                                 var(--b47-header-transition);
}

/* --- Anchor Offset --- */
[id]                                            { scroll-margin-top: calc(var(--b47-header-height) + var(--b47-anchor-extra)); }

/* --- States --- */
.main-header.is-visible                         { transform: var(--b47-header-visible); }
.main-header.is-hidden                          { transform: var(--b47-header-hidden); }
.main-header.is-scrolled {
    box-shadow:                                 var(--b47-header-shadow);
    padding-top:                                var(--b47-header-padding-scrolled) !important;
    padding-bottom:                             var(--b47-header-padding-scrolled) !important;
}

/* --- Scrolled background: masked layer, fades out bottom → top when returning to top --- */
.main-header::after {
    content:                                    '' !important;
    position:                                   absolute !important;
    inset:                                      0 !important;
    z-index:                                    -1 !important;
    background:                                 var(--b47-header-bg-scrolled) !important;
    -webkit-mask-image:                         var(--b47-header-bg-mask);
    mask-image:                                 var(--b47-header-bg-mask);
    -webkit-mask-size:                          var(--b47-header-bg-mask-size);
    mask-size:                                  var(--b47-header-bg-mask-size);
    -webkit-mask-repeat:                        no-repeat;
    mask-repeat:                                no-repeat;
    -webkit-mask-position:                      0 100%;
    mask-position:                              0 100%;
    transition:                                 var(--b47-header-bg-transition);
    pointer-events:                             none;
}
.main-header.is-scrolled::after {
    -webkit-mask-position:                      0 0;
    mask-position:                              0 0;
    transition:                                 none;
}

/* --- Logo --- */
.main-header .logo-light img,
.main-header .logo-dark img                     { width: var(--b47-header-logo-width) !important; }

/* Default + scrolled: light bg → dark logo */
.main-header .logo-dark                         { display: block; }
.main-header .logo-light                        { display: none; }

/* Dark page → light logo */
.main-header.is-inverse-page .logo-dark         { display: none; }
.main-header.is-inverse-page .logo-light        { display: block; }

/* Scrolled always wins: light bg → dark logo */
.main-header.is-scrolled .logo-dark             { display: block; }
.main-header.is-scrolled .logo-light            { display: none; }

/* --- Nav Links --- */
.main-header .main-header_nav .elementor-item {
    color:                                      var(--b47-header-nav-color) !important;
    transition:                                 var(--b47-header-color-transition);
}
.main-header .main-header_nav .elementor-item:hover,
.main-header .main-header_nav .elementor-item-active,
.main-header.is-scrolled .main-header_nav .elementor-item:hover,
.main-header.is-scrolled .main-header_nav .elementor-item-active {
    color:                                      var(--b47-header-nav-color-hover) !important;
    transition:                                 var(--b47-header-color-transition);
}
.main-header.is-scrolled .main-header_nav .elementor-item {
    color:                                      var(--b47-header-nav-color) !important;
}
.main-header.is-inverse-page .main-header_nav .elementor-item {
    color:                                      var(--b47-header-nav-color-dark) !important;
}
.main-header.is-inverse-page .main-header_nav .elementor-item:hover,
.main-header.is-inverse-page .main-header_nav .elementor-item-active {
    color:                                      var(--b47-header-nav-color-dark-hover) !important;
}

/* --- CTA Button --- */
.main-header .main-header_cta .elementor-button,
.main-header.is-scrolled .main-header_cta .elementor-button {
    background:                                 var(--b47-header-cta-bg) !important;
    color:                                      var(--b47-header-cta-text) !important;
    border:                                     var(--b47-header-cta-border) !important;
    border-radius:                              var(--b47-header-cta-radius) !important;
    transition:                                 var(--b47-header-color-transition);
}
.main-header .main-header_cta .elementor-button:hover,
.main-header.is-scrolled .main-header_cta .elementor-button:hover {
    background:                                 var(--b47-header-cta-bg-hover) !important;
    color:                                      var(--b47-header-cta-text-hover) !important;
}
.main-header.is-inverse-page .main-header_cta .elementor-button {
    background:                                 var(--b47-header-cta-dark-bg) !important;
    color:                                      var(--b47-header-cta-dark-text) !important;
    border:                                     var(--b47-header-cta-dark-border) !important;
}
.main-header.is-inverse-page .main-header_cta .elementor-button:hover {
    background:                                 var(--b47-header-cta-dark-bg-hover) !important;
    color:                                      var(--b47-header-cta-dark-text-hover) !important;
}

/* --- Mobile Nav Icon --- */
.main-header .main-header_icon                 { display: none; }
.main-header .main-header_icon svg             { width: var(--b47-header-icon-size); }

.main-header .main-header_icon svg path,
.main-header.is-scrolled .main-header_icon svg path {
    fill:                                       var(--b47-header-icon-color);
    transition:                                 var(--b47-header-color-transition);
}
.main-header.is-inverse-page .main-header_icon svg path {
    fill:                                       var(--b47-header-icon-color-dark);
}

/* ------------------------ NAV DROPDOWN VARIABLES ------------------------- */

:root {
    /* --- Parent arrow --- */
    --b47-nav-arrow-icon:                       url('/wp-content/uploads/chevron-down.svg');
    --b47-nav-arrow-color:                      var(--b47-header-nav-color);
    --b47-nav-arrow-color-hover:                var(--b47-header-nav-color-hover);
    --b47-nav-arrow-color-dark:                 var(--b47-header-nav-color-dark);
    --b47-nav-arrow-color-dark-hover:           var(--b47-header-nav-color-dark-hover);
    --b47-nav-arrow-size:                       var(--b47-spacing-16);
    --b47-nav-arrow-gap:                        var(--b47-spacing-8);
    --b47-nav-arrow-transition:                 var(--b47-header-color-transition);

    /* --- Dropdown container --- */
    --b47-nav-dropdown-margin-top:              var(--b47-spacing-16);
    --b47-nav-dropdown-padding:                 var(--b47-spacing-16);
    --b47-nav-dropdown-border:                  var(--b47-subtle-border);
    --b47-nav-dropdown-radius:                  var(--b47-radius-16);
    --b47-nav-dropdown-min-width:               280px;
    --b47-nav-dropdown-z:                       999;
    --b47-nav-dropdown-shadow:                  var(--b47-shadow-medium);
    --b47-nav-dropdown-bg:                      var(--b47-header-bg-scrolled);
    --b47-nav-dropdown-animation-in:            b47-dropdown-in 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
    --b47-nav-dropdown-animation-out:           b47-dropdown-out 0.2s ease forwards;
    --b47-nav-dropdown-l2-offset:               var(--b47-spacing-160);

    /* --- Items --- */
    --b47-nav-dropdown-item-bg:                 var(--b47-primary-background-color);
    --b47-nav-dropdown-item-bg-hover:           var(--b47-primary-background-color);
    --b47-nav-dropdown-item-color:              var(--b47-header-nav-color);
    --b47-nav-dropdown-item-color-hover:        var(--b47-header-nav-color-hover);
    --b47-nav-dropdown-item-padding:            var(--b47-spacing-8);
    --b47-nav-dropdown-item-gap:                0;
    --b47-nav-dropdown-item-radius:             var(--b47-radius-12);
    --b47-nav-dropdown-item-hover-indent:       var(--b47-spacing-8);
    --b47-nav-dropdown-item-transition:         padding var(--b47-transition-fast),
                                                background-color var(--b47-transition-fast);

    /* --- Typography --- */
    --b47-nav-dropdown-item-family:             var(--b47-body-family);
    --b47-nav-dropdown-item-size:               var(--b47-font-size-small);
    --b47-nav-dropdown-item-weight:             var(--b47-font-weight-normal);
    --b47-nav-dropdown-item-line-height:        var(--b47-line-height-large);
    --b47-nav-dropdown-item-letter-spacing:     var(--b47-letter-spacing-default);

    /* --- Sub-item arrow --- */
    --b47-nav-dropdown-arrow-icon:              url('/wp-content/uploads/arrow-right.svg');
    --b47-nav-dropdown-arrow-color:             var(--b47-header-nav-color);
    --b47-nav-dropdown-arrow-size:              14px;
}

@keyframes b47-dropdown-in  { from { transform: translate(-6px, -6px) scale(0.97); opacity: 0; } to { transform: translate(0, 0) scale(1); opacity: 1; } }
@keyframes b47-dropdown-out { from { transform: translate(0, 0) scale(1); opacity: 1; } to { transform: translate(-6px, -6px) scale(0.97); opacity: 0; } }

/* -------------------------- NAV DROPDOWN CLASSES ------------------------- */

/* --- Parent arrow --- */
.main-header .main-header_nav .sub-arrow svg   { display: none !important; }
.main-header .main-header_nav .sub-arrow {
    display:                                    block !important;
    width:                                      var(--b47-nav-arrow-size) !important;
    height:                                     var(--b47-nav-arrow-size) !important;
    margin-left:                                var(--b47-nav-arrow-gap) !important;
    background-color:                           var(--b47-nav-arrow-color) !important;
    -webkit-mask-image:                         var(--b47-nav-arrow-icon) !important;
    mask-image:                                 var(--b47-nav-arrow-icon) !important;
    -webkit-mask-size:                          contain !important;
    mask-size:                                  contain !important;
    -webkit-mask-repeat:                        no-repeat !important;
    mask-repeat:                                no-repeat !important;
    -webkit-mask-position:                      center !important;
    mask-position:                              center !important;
    transition:                                 var(--b47-nav-arrow-transition) !important;
}
.main-header .main-header_nav .menu-item-has-children > a:hover .sub-arrow {
    background-color:                           var(--b47-nav-arrow-color-hover) !important;
}
.main-header.is-inverse-page .main-header_nav .sub-arrow {
    background-color:                           var(--b47-nav-arrow-color-dark) !important;
}
.main-header.is-inverse-page .main-header_nav .menu-item-has-children > a:hover .sub-arrow {
    background-color:                           var(--b47-nav-arrow-color-dark-hover) !important;
}
.main-header .main-header_nav .elementor-sub-item.has-submenu .sub-arrow {
    display:                                    none !important;
}

/* --- Dropdown container --- */
.main-header .main-header_nav .sub-menu.elementor-nav-menu--dropdown {
    animation:                                  none !important;
}
.main-header .main-header_nav .sub-menu.elementor-nav-menu--dropdown[style*="display: block"] {
    animation:                                  var(--b47-nav-dropdown-animation-in) !important;
}
.main-header .main-header_nav .sub-menu.elementor-nav-menu--dropdown.is-hiding {
    display:                                    block !important;
    animation:                                  var(--b47-nav-dropdown-animation-out) !important;
}
.main-header .main-header_nav .menu-item .sub-menu.elementor-nav-menu--dropdown {
    margin-top:                                 var(--b47-nav-dropdown-margin-top) !important;
    padding:                                    var(--b47-nav-dropdown-padding) !important;
    background:                                 var(--b47-nav-dropdown-bg) !important;
    border:                                     var(--b47-nav-dropdown-border) !important;
    border-radius:                              var(--b47-nav-dropdown-radius) !important;
    box-shadow:                                 var(--b47-nav-dropdown-shadow) !important;
    min-width:                                  var(--b47-nav-dropdown-min-width) !important;
    z-index:                                    var(--b47-nav-dropdown-z) !important;
}

/* --- Second level dropdown --- */
.main-header .main-header_nav .sub-menu .sub-menu.elementor-nav-menu--dropdown {
    margin-top:                                 0 !important;
    margin-left:                                var(--b47-nav-dropdown-l2-offset) !important;
    border:                                     var(--b47-nav-dropdown-border) !important;
}
.main-header .main-header_nav .sub-menu .sub-menu.elementor-nav-menu--dropdown li a.elementor-sub-item::after {
    background-color:                           var(--b47-nav-dropdown-arrow-color) !important;
}

/* --- List items --- */
.main-header .main-header_nav .menu-item .sub-menu.elementor-nav-menu--dropdown li {
    background:                                 var(--b47-nav-dropdown-item-bg) !important;
    padding:                                    var(--b47-nav-dropdown-item-padding) !important;
    margin-bottom:                              var(--b47-nav-dropdown-item-gap) !important;
    border-radius:                              var(--b47-nav-dropdown-item-radius) !important;
    transition:                                 var(--b47-nav-dropdown-item-transition) !important;
}
.main-header .main-header_nav .menu-item .sub-menu.elementor-nav-menu--dropdown li:last-child {
    margin-bottom:                              0 !important;
}

/* --- Links --- */
.main-header .main-header_nav .menu-item .sub-menu.elementor-nav-menu--dropdown li a {
    display:                                    flex !important;
    align-items:                                center !important;
    justify-content:                            flex-start !important;
    padding:                                    0 !important;
    background:                                 transparent !important;
    border-inline-start:                        0px !important;
    font-family:                                var(--b47-nav-dropdown-item-family) !important;
    font-size:                                  var(--b47-nav-dropdown-item-size) !important;
    font-weight:                                var(--b47-nav-dropdown-item-weight) !important;
    line-height:                                var(--b47-nav-dropdown-item-line-height) !important;
    letter-spacing:                             var(--b47-nav-dropdown-item-letter-spacing) !important;
    color:                                      var(--b47-nav-dropdown-item-color) !important;
    transition:                                 var(--b47-nav-dropdown-item-transition) !important;
}
.main-header .main-header_nav .menu-item .sub-menu.elementor-nav-menu--dropdown li:has(a:hover) {
    background:                                 var(--b47-nav-dropdown-item-bg-hover) !important;
}
.main-header .main-header_nav .menu-item .sub-menu.elementor-nav-menu--dropdown li a:hover {
    color:                                      var(--b47-nav-dropdown-item-color-hover) !important;
    padding-left:                               var(--b47-nav-dropdown-item-hover-indent) !important;
    background:                                 transparent !important;
}

/* --- Sub-item arrow --- */
.main-header .main-header_nav .sub-menu.elementor-nav-menu--dropdown li a.elementor-sub-item::after {
    content:                                    '' !important;
    display:                                    block !important;
    width:                                      var(--b47-nav-dropdown-arrow-size) !important;
    height:                                     var(--b47-nav-dropdown-arrow-size) !important;
    background-color:                           var(--b47-nav-dropdown-arrow-color) !important;
    -webkit-mask-image:                         var(--b47-nav-dropdown-arrow-icon) !important;
    mask-image:                                 var(--b47-nav-dropdown-arrow-icon) !important;
    -webkit-mask-size:                          contain !important;
    mask-size:                                  contain !important;
    -webkit-mask-repeat:                        no-repeat !important;
    mask-repeat:                                no-repeat !important;
    mask-position:                              center !important;
    flex-shrink:                                0 !important;
    margin-left:                                auto !important;
}
.main-header .main-header_nav .sub-menu.elementor-nav-menu--dropdown li a.elementor-sub-item:not(:has(.sub-menu)):hover::after,
.main-header .main-header_nav .sub-menu.elementor-nav-menu--dropdown li:not(:has(.sub-menu:hover)) a.elementor-sub-item:hover::after {
    background-color:                           var(--b47-header-nav-color-hover) !important;
}

/* -------------------------- NAV POPUP VARIABLES -------------------------- */

:root {
    --b47-nav-popup-padding:                    var(--b47-spacing-32);
    --b47-nav-popup-nav-padding:                var(--b47-spacing-32) 0px;
    --b47-nav-popup-icon-size:                  var(--b47-spacing-24);
    --b47-nav-popup-icon-transition:            fill var(--b47-transition-fast);
    --b47-nav-popup-btn-gap:                    10.5px;
    --b47-nav-popup-sub-item-offset:            -12px;
    --b47-nav-popup-dropdown-size:              28px;
    --b47-nav-popup-dropdown-offset:            3px;
    --b47-nav-popup-sub-item-indent:            0px;

    /* --- Items --- */
    --b47-nav-popup-item-family:                var(--b47-h3-family);
    --b47-nav-popup-item-size:                  var(--b47-h4-size);
    --b47-nav-popup-item-weight:                var(--b47-h3-weight);
    --b47-nav-popup-item-line-height:           var(--b47-h3-line-height);
    --b47-nav-popup-item-letter-spacing:        var(--b47-h3-letter-spacing);
    --b47-nav-popup-item-text-transform:        var(--b47-text-transform-none);

    /* --- Sub-items --- */
    --b47-nav-popup-sub-family:                 var(--b47-h5-family);
    --b47-nav-popup-sub-size:                   var(--b47-h5-size);
    --b47-nav-popup-sub-weight:                 var(--b47-h5-weight);
    --b47-nav-popup-sub-line-height:            var(--b47-h5-line-height);
    --b47-nav-popup-sub-letter-spacing:         var(--b47-h5-letter-spacing);
    --b47-nav-popup-sub-text-transform:         var(--b47-text-transform-none);

    /* --- Back --- */
    --b47-nav-popup-back-family:                var(--b47-nav-family);
    --b47-nav-popup-back-size:                  var(--b47-nav-size);
    --b47-nav-popup-back-weight:                var(--b47-nav-weight);
    --b47-nav-popup-back-line-height:           var(--b47-nav-line-height);
    --b47-nav-popup-back-letter-spacing:        var(--b47-nav-letter-spacing);
    --b47-nav-popup-back-text-transform:        var(--b47-nav-popup-sub-text-transform);

    /* --- Footer --- */
    --b47-nav-popup-footer-family:              var(--b47-nav-family);
    --b47-nav-popup-footer-size:                var(--b47-body-large-size);
    --b47-nav-popup-footer-weight:              var(--b47-body-large-weight);
    --b47-nav-popup-footer-line-height:         var(--b47-body-large-line-height);
    --b47-nav-popup-footer-letter-spacing:      var(--b47-body-large-letter-spacing);
    --b47-nav-popup-footer-text-transform:      var(--b47-nav-popup-sub-text-transform);

    /* --- Colors --- */
    --b47-nav-popup-bg:                         var(--b47-primary-background-color);
    --b47-nav-popup-item-text:                  var(--b47-heading-color);
    --b47-nav-popup-sub-text:                   var(--b47-primary-text-color);
    --b47-nav-popup-text-hover:                 var(--b47-primary-color);
    --b47-nav-popup-icon-color:                 var(--b47-heading-color);
    --b47-nav-popup-footer-text:                var(--b47-secondary-text-color);

    /* --- CTA --- */
    --b47-nav-popup-cta-bg:                     transparent;
    --b47-nav-popup-cta-bg-hover:               var(--b47-heading-color);
    --b47-nav-popup-cta-text:                   var(--b47-heading-color);
    --b47-nav-popup-cta-text-hover:             var(--b47-primary-background-color);
    --b47-nav-popup-cta-border:                 var(--b47-border-width) solid var(--b47-heading-color);
    --b47-nav-popup-cta-border-hover:           var(--b47-heading-color);
    --b47-nav-popup-cta-radius:                 var(--b47-radius-8);
    --b47-nav-popup-footer-padding:             var(--b47-spacing-40);
}

/* --------------------------- NAV POPUP CLASSES --------------------------- */

/* --- Container --- */
.nav-popup {
    width:                                      100% !important;
    min-height:                                 100vh !important;
    background:                                 var(--b47-nav-popup-bg) !important;
    padding:                                    var(--b47-nav-popup-padding) !important;
}

/* --- Back button --- */
.nav-popup .nav-popup_back .elementor-heading-title {
    font-family:                                var(--b47-nav-popup-back-family) !important;
    font-size:                                  var(--b47-nav-popup-back-size) !important;
    font-weight:                                var(--b47-nav-popup-back-weight) !important;
    line-height:                                var(--b47-nav-popup-back-line-height) !important;
    letter-spacing:                             var(--b47-nav-popup-back-letter-spacing) !important;
    text-transform:                             var(--b47-nav-popup-back-text-transform) !important;
    color:                                      var(--b47-nav-popup-item-text) !important;
    cursor:                                     pointer;
}
.nav-popup .nav-popup_back:hover .elementor-heading-title {
    color:                                      var(--b47-nav-popup-text-hover) !important;
}

/* --- Close + Back icons --- */
.nav-popup .nav-popup_back svg,
.nav-popup .nav-popup_close svg {
    width:                                      var(--b47-nav-popup-icon-size) !important;
    height:                                     var(--b47-nav-popup-icon-size) !important;
    line-height:                                0 !important;
    cursor:                                     pointer;
}
.nav-popup .nav-popup_back svg path,
.nav-popup .nav-popup_close svg path {
    fill:                                       var(--b47-nav-popup-icon-color);
    transition:                                 var(--b47-nav-popup-icon-transition);
}
.nav-popup .nav-popup_back:hover svg path,
.nav-popup .nav-popup_close:hover svg path {
    fill:                                       var(--b47-nav-popup-text-hover);
}

/* --- CTA Button --- */
.nav-popup .nav-popup_cta .elementor-button {
    background:                                 var(--b47-nav-popup-cta-bg) !important;
    color:                                      var(--b47-nav-popup-cta-text) !important;
    border:                                     var(--b47-nav-popup-cta-border) !important;
    border-radius:                              var(--b47-nav-popup-cta-radius) !important;
    transition:                                 none !important;
}
.nav-popup .nav-popup_cta .elementor-button:hover {
    background:                                 var(--b47-nav-popup-cta-bg-hover) !important;
    border-color:                               var(--b47-nav-popup-cta-border-hover) !important;
    color:                                      var(--b47-nav-popup-cta-text-hover) !important;
}
.nav-popup .nav-popup_cta .elementor-button svg path {
    fill:                                       var(--b47-nav-popup-cta-text) !important;
}
.nav-popup .nav-popup_cta .elementor-button:hover svg path {
    fill:                                       var(--b47-nav-popup-cta-text-hover) !important;
}
.nav-popup .nav-popup_cta .elementor-button-content-wrapper {
    display:                                    flex !important;
    align-items:                                center !important;
    gap:                                        var(--b47-nav-popup-btn-gap) !important;
}

/* --- Nav Items --- */
.nav-popup .nav-popup_nav {
    padding:                                    var(--b47-nav-popup-nav-padding);
}
.nav-popup .nav-popup_item p {
    font-family:                                var(--b47-nav-popup-item-family) !important;
    font-size:                                  var(--b47-nav-popup-item-size) !important;
    font-weight:                                var(--b47-nav-popup-item-weight) !important;
    line-height:                                var(--b47-nav-popup-item-line-height) !important;
    letter-spacing:                             var(--b47-nav-popup-item-letter-spacing) !important;
    text-transform:                             var(--b47-nav-popup-item-text-transform) !important;
    color:                                      var(--b47-nav-popup-item-text) !important;
    cursor:                                     pointer;
}
.nav-popup .nav-popup_item:hover p {
    color:                                      var(--b47-nav-popup-text-hover) !important;
}
.nav-popup .nav-popup_sub-item {
    margin-top:                                 var(--b47-nav-popup-sub-item-offset);
}
.nav-popup .nav-popup_sub-item p {
    font-family:                                var(--b47-nav-popup-sub-family) !important;
    font-size:                                  var(--b47-nav-popup-sub-size) !important;
    font-weight:                                var(--b47-nav-popup-sub-weight) !important;
    line-height:                                var(--b47-nav-popup-sub-line-height) !important;
    letter-spacing:                             var(--b47-nav-popup-sub-letter-spacing) !important;
    text-transform:                             var(--b47-nav-popup-sub-text-transform) !important;
    color:                                      var(--b47-nav-popup-sub-text) !important;
    cursor:                                     pointer;
}

/* --- Dropdown Icon --- */
.nav-popup .nav-popup_item svg {
    width:                                      var(--b47-nav-popup-dropdown-size);
    height:                                     var(--b47-nav-popup-dropdown-size);
    margin-top:                                 var(--b47-nav-popup-dropdown-offset);
}
.nav-popup .nav-popup_item svg path {
    fill:                                       var(--b47-nav-popup-item-text);
}
.nav-popup .nav-popup_item:hover svg path {
    fill:                                       var(--b47-nav-popup-text-hover);
}

/* --- Footer / Socials --- */
.nav-popup .nav-popup_footer .elementor-heading-title {
    font-family:                                var(--b47-nav-popup-footer-family) !important;
    font-size:                                  var(--b47-nav-popup-footer-size) !important;
    font-weight:                                var(--b47-nav-popup-footer-weight) !important;
    line-height:                                var(--b47-nav-popup-footer-line-height) !important;
    letter-spacing:                             var(--b47-nav-popup-footer-letter-spacing) !important;
    text-transform:                             var(--b47-nav-popup-footer-text-transform) !important;
    color:                                      var(--b47-nav-popup-footer-text) !important;
    cursor:                                     pointer;
}
.nav-popup .nav-popup_footer .elementor-widget-container:hover .elementor-heading-title {
    color:                                      var(--b47-nav-popup-text-hover) !important;
}

/* --- Responsive --- */
@media only screen and (max-width: 1024px) {
    :root                                       { --b47-header-logo-width: 140px;
                                                  --b47-nav-popup-sub-item-indent: var(--b47-spacing-10); }
    .main-header .logo-light img,
    .main-header .logo-dark img                 { width: var(--b47-header-logo-width) !important; }
    .main-header .main-header_nav               { display: none; }
    .main-header .main-header_icon              { display: block; }
    .nav-popup .nav-popup_back                  { display: none; }
    .nav-popup .nav-popup_sub-item              { margin-left: var(--b47-nav-popup-sub-item-indent); }
}
@media only screen and (max-width: 599px) {
    :root                                       { --b47-header-logo-width: 130px;
                                                  --b47-nav-popup-padding: var(--b47-spacing-24);
                                                  --b47-nav-popup-footer-padding: var(--b47-spacing-40); }
    .main-header .logo-light img,
    .main-header .logo-dark img                 { width: var(--b47-header-logo-width) !important; }
    .main-header .main-header_cta               { display: none; }
    .nav-popup                                  { padding: var(--b47-nav-popup-padding) !important; }
    .nav-popup .nav-popup_nav                   { padding: var(--b47-nav-popup-nav-padding); }
    .nav-popup .nav-popup_footer                { padding-bottom: var(--b47-nav-popup-footer-padding); }
}

/* --- Inverse Mode --- */
.inverse-mode.nav-popup,
.inverse-mode .nav-popup {
    --b47-nav-popup-bg:                         var(--b47-inverse-primary-background-color);
    --b47-nav-popup-item-text:                  var(--b47-inverse-heading-color);
    --b47-nav-popup-sub-text:                   var(--b47-inverse-primary-text-color);
    --b47-nav-popup-text-hover:                 var(--b47-primary-color-light);
    --b47-nav-popup-icon-color:                 var(--b47-inverse-heading-color);
    --b47-nav-popup-footer-text:                var(--b47-inverse-secondary-text-color);
    --b47-nav-popup-cta-text:                   var(--b47-inverse-heading-color);
    --b47-nav-popup-cta-border:                 var(--b47-border-width) solid var(--b47-inverse-heading-color);
}

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ FOOTER ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* ---------------------------- FOOTER VARIABLES --------------------------- */

:root {
    --b47-footer-bg:                            var(--b47-primary-background-color);
    --b47-footer-logo-width:                    240px;
    --b47-footer-social-icon-size:              var(--b47-spacing-24);
    --b47-footer-social-margin:                 var(--b47-spacing-16);
    --b47-footer-social-transition:             fill var(--b47-transition-fast);
    --b47-footer-lower-border-top:              var(--b47-default-border);
    --b47-footer-lower-padding-top:             var(--b47-spacing-16);

    /* --- Colors --- */
    --b47-footer-text:                          var(--b47-secondary-text-color);
    --b47-footer-text-hover:                    var(--b47-heading-color);
    --b47-footer-text-muted:                    var(--b47-muted-text-color);
    --b47-footer-text-muted-hover:              var(--b47-heading-color);
    --b47-footer-icon-color:                    var(--b47-secondary-text-color);
    --b47-footer-icon-hover:                    var(--b47-primary-color);
    --b47-footer-link-hover:                    var(--b47-primary-color);
    --b47-footer-link-weight:                   var(--b47-font-weight-normal);
    --b47-footer-link-transition:               color var(--b47-transition-fast);
    --b47-footer-link-size:                     var(--b47-font-size-small);
    --b47-footer-policies-size:                 var(--b47-font-size-small);
    --b47-footer-copyright-size:                var(--b47-font-size-small);
}

/* --- List overrides — scoped to footer --- */
.main-footer .elementor-widget-icon-list {
    --icon-vertical-align:                      center !important;
    --icon-vertical-offset:                     0px !important;
    --b47-list-icon-gap:                        4px;
    --b47-list-icon-color:                      var(--b47-footer-icon-color);
    --b47-list-text-color:                      var(--b47-footer-text);
    --b47-list-icon-hover:                      var(--b47-footer-icon-hover);
    --b47-list-text-hover:                      var(--b47-footer-text-hover);
}
.main-footer .elementor-widget-icon-list.is-link .elementor-icon-list-item:hover .elementor-icon-list-icon svg path {
    fill:                                       var(--b47-list-icon-hover) !important;
}

/* ----------------------------- FOOTER CLASSES ---------------------------- */

/* --- Base --- */
.main-footer {
    background:                                 var(--b47-footer-bg) !important;
}

/* --- Logo --- */
.main-footer .main-footer_info a img {
    width:                                      var(--b47-footer-logo-width) !important;
}
.main-footer .main-footer_info .elementor-widget-text-editor p {
    color:                                      var(--b47-footer-text) !important;
}

/* --- Social Icons --- */
.main-footer .main-footer_social {
    margin-top:                                 var(--b47-footer-social-margin);
}
.main-footer .main-footer_social .elementor-icon svg {
    width:                                      var(--b47-footer-social-icon-size);
    height:                                     auto;
}
.main-footer .main-footer_social .elementor-icon svg path {
    fill:                                       var(--b47-footer-icon-color);
    transition:                                 var(--b47-footer-social-transition);
}
.main-footer .main-footer_social .elementor-icon:hover svg path {
    fill:                                       var(--b47-footer-icon-hover);
}

/* --- Nav Links --- */
.main-footer .main-footer_link .elementor-heading-title {
    font-size:                                  var(--b47-footer-link-size) !important;
    font-weight:                                var(--b47-footer-link-weight) !important;
    color:                                      var(--b47-footer-text) !important;
    cursor:                                     pointer;
    transition:                                 var(--b47-footer-link-transition);
}
.main-footer .main-footer_link:hover .elementor-heading-title {
    color:                                      var(--b47-footer-text-muted-hover) !important;
}

/* --- Lower --- */
.main-footer_lower {
    border-top:                                 var(--b47-footer-lower-border-top);
    padding-top:                                var(--b47-footer-lower-padding-top);
}

.main-footer .main-right .main-footer_col-2:not(first-child) {
    width:                                      auto !important;
    flex:                                       0 0 auto !important;
}

/* --- Policies --- */
.main-footer .main-footer_policies .elementor-heading-title {
    font-size:                                  var(--b47-footer-policies-size) !important;
    color:                                      var(--b47-footer-text-muted) !important;
    cursor:                                     pointer;
    transition:                                 var(--b47-footer-link-transition);
}
.main-footer .main-footer_policies .elementor-heading-title:hover {
    color:                                      var(--b47-footer-text-muted-hover) !important;
}

/* --- Copyright --- */
.main-footer .main-footer_copyright .elementor-heading-title {
    font-size:                                  var(--b47-footer-policies-size) !important;
    color:                                      var(--b47-footer-text-muted) !important;
    cursor:                                     pointer;
    transition:                                 var(--b47-footer-link-transition);
}
.main-footer .main-footer_copyright .elementor-heading-title:hover {
    color:                                      var(--b47-footer-text-muted-hover) !important;
}

/* --- Responsive --- */
@media only screen and (max-width: 1024px) {
    :root                                       { --b47-footer-logo-width: 230px; }
    .main-footer .main-footer_info a img       { width: var(--b47-footer-logo-width); }
}
@media only screen and (max-width: 768px) {
    .main-footer .b47-col-1                     { display: none; }
}
@media only screen and (max-width: 599px) {
    :root                                       { --b47-footer-logo-width: 200px;
                                                  --b47-footer-lower-padding-top: var(--b47-spacing-32); }
    .main-footer .main-footer_info a img       { width: var(--b47-footer-logo-width); }
}

/* -------------------------------- PLUGINS -------------------------------- */

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ COOKIE YES ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* ------------------------- COOKIE YES VARIABLES -------------------------- */

:root {
    /* --- Layout --- */
    --b47-cky-radius:                           var(--b47-radius-16);
    --b47-cky-border:                           var(--b47-border-width-xsmall) solid #D7DBDB;
    --b47-cky-shadow:                           none;
    --b47-cky-padding:                          var(--b47-spacing-20);
    
    /* --- Animation — uses system b47-fade-in keyframe --- */
    --b47-cky-animation:                        b47-fade-in var(--b47-duration-base) 100ms both;
    
    /* --- Typography --- */
    --b47-cky-desc-family:                      var(--b47-body-tiny-family);
    --b47-cky-desc-size:                        var(--b47-body-tiny-size);
    --b47-cky-desc-weight:                      var(--b47-body-tiny-weight);
    --b47-cky-desc-line-height:                 var(--b47-body-tiny-line-height);
    --b47-cky-desc-letter-spacing:              var(--b47-body-tiny-letter-spacing);
    
    --b47-cky-btn-family:                       var(--b47-body-small-family);
    --b47-cky-btn-size:                         var(--b47-body-small-size);
    --b47-cky-btn-weight:                       var(--b47-body-small-weight);
    --b47-cky-btn-line-height:                  var(--b47-body-small-line-height);
    --b47-cky-btn-letter-spacing:               var(--b47-body-small-letter-spacing);
    --b47-cky-btn-text-transform:               var(--b47-text-transform-none);
    --b47-cky-btn-padding:                      var(--b47-spacing-8) var(--b47-spacing-16);
    --b47-cky-btn-transition:                   none;

    /* --- Colors --- */
    --b47-cky-bg:                               var(--b47-primary-background-color);
    --b47-cky-text:                             var(--b47-primary-text-color);
    --b47-cky-text-hover:                       var(--b47-primary-color);

    /* --- Accept button — mirrors system primary button --- */
    --b47-cky-accept-bg:                        var(--b47-primary-color);
    --b47-cky-accept-bg-hover:                  var(--b47-primary-color-dark);
    --b47-cky-accept-border:                    var(--b47-border-width) solid var(--b47-cky-accept-bg);
    --b47-cky-accept-radius:                    var(--b47-button-radius);
    --b47-cky-accept-text:                      var(--b47-white);
    --b47-cky-accept-text-hover:                var(--b47-white);

    /* --- Secondary buttons — border + text, lower opacity --- */
    --b47-cky-secondary-bg:                     transparent;
    --b47-cky-secondary-text:                   var(--b47-primary-color);
    --b47-cky-secondary-border:                 var(--b47-border-width) solid var(--b47-primary-color);
    --b47-cky-secondary-opacity:                var(--b47-opacity-70);  /* 0.7 */
    --b47-cky-secondary-opacity-hover:          var(--b47-opacity-100);

    --b47-cky-close-margin:                     15px 10px;
    --b47-cky-close-bg:                         transparent;

    /* --- Revisit floater --- */
    --b47-cky-revisit-size:                     28px;
    --b47-cky-revisit-icon-size:                15px;
    --b47-cky-revisit-bg:                       var(--b47-primary-background-color);
    --b47-cky-revisit-bg-hover:                 var(--b47-black);
    --b47-cky-revisit-z:                        10;

    /* --- Switch --- */
    --b47-cky-switch-bg:                        var(--b47-primary-background-color);
    --b47-cky-switch-checked-bg:                var(--b47-primary-color);
    --b47-cky-switch-border:                    none;
    --b47-cky-switch-radius:                    var(--b47-radius-max);
}

/* -------------------------- COOKIE YES CLASSES --------------------------- */

/* --- Consent bar --- */
.cky-consent-bar {
    opacity:                                    0;
    background:                                 var(--b47-cky-bg) !important;
    box-shadow:                                 var(--b47-cky-shadow) !important;
    border-radius:                              var(--b47-cky-radius) !important;
    border:                                     var(--b47-cky-border) !important;
    padding:                                    var(--b47-cky-padding) !important;
    animation:                                  var(--b47-cky-animation) !important;
}

/* --- Title --- */
.cky-consent-bar .cky-title                     { display: none !important; }

/* --- Description --- */
.cky-consent-bar .cky-notice-des {
    font-family:                                var(--b47-cky-desc-family) !important;
    font-size:                                  var(--b47-cky-desc-size) !important;
    font-weight:                                var(--b47-cky-desc-weight) !important;
    line-height:                                var(--b47-cky-desc-line-height) !important;
    letter-spacing:                             var(--b47-cky-desc-letter-spacing) !important;
}
.cky-consent-bar .cky-notice-des a {
    color:                                      var(--b47-cky-text) !important;
}
.cky-consent-bar .cky-notice-des a:hover {
    color:                                      var(--b47-cky-text-hover) !important;
}

/* --- Accept button — primary style --- */
.cky-btn.cky-btn-accept {
    opacity:                                    var(--b47-opacity-100) !important;
    font-family:                                var(--b47-cky-btn-family)  !important;
    font-size:                                  var(--b47-cky-btn-size) !important;
    font-weight:                                var(--b47-cky-btn-weight) !important;
    line-height:                                var(--b47-cky-btn-line-height) !important;
    letter-spacing:                             var(--b47-cky-btn-letter-spacing) !important;
    text-transform:                             var(--b47-cky-btn-text-transform) !important;
    background-color:                           var(--b47-cky-accept-bg) !important;
    color:                                      var(--b47-cky-accept-text) !important;
    border:                                     var(--b47-cky-accept-border) !important;
    border-radius:                              var(--b47-cky-accept-radius) !important;
    padding:                                    var(--b47-cky-btn-padding) !important;
    transition:                                 var(--b47-cky-btn-transition) !important;
}
.cky-btn.cky-btn-accept:hover {
    background-color:                           var(--b47-cky-accept-bg-hover) !important;
    border-color:                               var(--b47-cky-accept-bg-hover) !important;
    color:                                      var(--b47-cky-accept-text-hover) !important;
    transition:                                 var(--b47-cky-btn-transition) !important;
}

/* --- Secondary buttons — border + text, lower opacity --- */
.cky-btn.cky-btn-reject,
.cky-btn.cky-btn-customize,
.cky-btn.cky-btn-preferences {
    opacity:                                    var(--b47-cky-secondary-opacity) !important;
    font-family:                                var(--b47-cky-btn-family), sans-serif !important;
    font-size:                                  var(--b47-cky-btn-size) !important;
    font-weight:                                var(--b47-cky-btn-weight) !important;
    line-height:                                var(--b47-cky-btn-line-height) !important;
    letter-spacing:                             var(--b47-cky-btn-letter-spacing) !important;
    text-transform:                             var(--b47-cky-btn-text-transform) !important;
    background-color:                           var(--b47-cky-secondary-bg) !important;
    color:                                      var(--b47-cky-secondary-text) !important;
    border:                                     var(--b47-cky-secondary-border) !important;
    border-radius:                              var(--b47-cky-accept-radius) !important;
    padding:                                    var(--b47-cky-btn-padding) !important;
    transition:                                 var(--b47-cky-btn-transition) !important;
}
.cky-btn.cky-btn-reject:hover,
.cky-btn.cky-btn-customize:hover,
.cky-btn.cky-btn-preferences:hover {
    opacity:                                    var(--b47-cky-secondary-opacity-hover) !important;
}

/* --- Powered by + footer --- */
.cky-consent-bar [data-cky-tag="powered-by"]    { display: none !important; }
.cky-footer-wrapper div:last-child              { display: none !important; }

/* --- Close button --- */
.cky-consent-bar .cky-banner-btn-close img {
    margin:                                     var(--b47-cky-close-margin) !important;
}
.cky-preference-header .cky-btn-close:hover {
    background-color:                           var(--b47-cky-close-bg) !important;
}

/* --- Preference center --- */
.cky-modal,
.cky-modal .cky-preference-center {
    border-radius:                              var(--b47-cky-radius) !important;
}

/* --- Switch --- */
#ckySwitchanalytics {
    border:                                     var(--b47-cky-switch-border) !important;
    border-radius:                              var(--b47-cky-switch-radius) !important;
}
.cky-switch input[type="checkbox"] {
    background:                                 var(--b47-cky-switch-bg) !important;
}
.cky-switch input[type="checkbox"]:checked {
    background:                                 var(--b47-cky-switch-checked-bg) !important;
}

/* --- Revisit floater --- */
.cky-btn-revisit-wrapper {
    background:                                 var(--b47-cky-revisit-bg) !important;
    width:                                      var(--b47-cky-revisit-size) !important;
    height:                                     var(--b47-cky-revisit-size) !important;
    z-index:                                    var(--b47-cky-revisit-z) !important;
}
.cky-btn-revisit-wrapper:hover {
    background-color:                           var(--b47-cky-revisit-bg-hover) !important;
}
.cky-btn-revisit-wrapper .cky-btn-revisit img {
    width:                                      var(--b47-cky-revisit-icon-size) !important;
    height:                                     var(--b47-cky-revisit-icon-size) !important;
}

/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ 
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ CUSTOM CSS ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

/* ------------------------ HERO SECTION VARIABLES ------------------------- */

:root {
    --b47-hero-toolbar-offset:                  0px;
    --b47-hero-min-height:                      calc(100svh + var(--b47-hero-toolbar-offset));
    --b47-hero-padding-top:                     50px;
    --b47-hero-padding-bottom:                  50px;
}
@media only screen and (max-width: 599px)  {
    :root                                       { --b47-hero-toolbar-offset: 100px; }
}
/* -------------------------- HERO SECTION CLASSES ------------------------- */

.hero-section {
    padding:                                    var(--b47-hero-padding-top) var(--b47-padding-global) calc(var(--b47-hero-padding-bottom) + var(--b47-hero-toolbar-offset));
}
.hero-section.min-height-max {
    min-height:                                 100vh !important;
    min-height:                                 var(--b47-hero-min-height) !important;
}
.hero-section.header-offset {
    padding-top:                                calc(var(--b47-hero-padding-top) + var(--b47-header-height-top, var(--b47-header-height))) !important;
}




/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */
/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ !DO NOT TOUCH! ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */
/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ ELEMENTOR OVERRIDES ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */
/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ !DO NOT TOUCH! ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */
/* ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩ */

.elementor-kit-5 {
    /* --- Default Scale Override --- */
    --e-global-color-primary:                       var(--b47-primary-color) !important;
    --e-global-color-secondary:                     var(--b47-secondary-color) !important;
    --e-global-color-text:                          var(--b47-primary-text-color) !important;
    --e-global-color-accent:                        var(--b47-secondary-color) !important;
    --e-global-color-30b4139:                       var(--b47-secondary-color) !important;
    /* --- Primary Scale Override --- */
    --e-global-color-4246e61:                       var(--b47-primary-50) !important;
    --e-global-color-95b5580:                       var(--b47-primary-100) !important;
    --e-global-color-964ec23:                       var(--b47-primary-200) !important;
    --e-global-color-502e2cb:                       var(--b47-primary-300) !important;
    --e-global-color-1f71a2c:                       var(--b47-primary-400) !important;
    --e-global-color-11ab757:                       var(--b47-primary-500) !important;
    --e-global-color-3d770f2:                       var(--b47-primary-600) !important;
    --e-global-color-172f5f1:                       var(--b47-primary-700) !important;
    --e-global-color-4d377e9:                       var(--b47-primary-800) !important;
    --e-global-color-6dea4e8:                       var(--b47-primary-900) !important;
    --e-global-color-7328d7d:                       var(--b47-primary-950) !important;
    /* --- Secondary Scale Override --- */
    --e-global-color-12d259e:                       var(--b47-secondary-50) !important;
    --e-global-color-31fe862:                       var(--b47-secondary-100) !important;
    --e-global-color-74d8222:                       var(--b47-secondary-200) !important;
    --e-global-color-40693a0:                       var(--b47-secondary-300) !important;
    --e-global-color-bbbd181:                       var(--b47-secondary-400) !important;
    --e-global-color-9799c1b:                       var(--b47-secondary-500) !important;
    --e-global-color-f6bb3b2:                       var(--b47-secondary-600) !important;
    --e-global-color-7c9f85a:                       var(--b47-secondary-700) !important;
    --e-global-color-484b968:                       var(--b47-secondary-800) !important;
    --e-global-color-bb50ca1:                       var(--b47-secondary-900) !important;
    --e-global-color-cc87fe5:                       var(--b47-secondary-950) !important;
    /* --- Neutral Grays Override --- */
    --e-global-color-de3a066:                       var(--b47-white) !important;
    --e-global-color-497ae85:                       var(--b47-gray-50) !important;
    --e-global-color-028408d:                       var(--b47-gray-100) !important;
    --e-global-color-1d164f3:                       var(--b47-gray-200) !important;
    --e-global-color-246843e:                       var(--b47-gray-300) !important;
    --e-global-color-d019f2d:                       var(--b47-gray-400) !important;
    --e-global-color-58b7736:                       var(--b47-gray-500) !important;
    --e-global-color-3ea0afb:                       var(--b47-gray-600) !important;
    --e-global-color-d2b97e3:                       var(--b47-gray-700) !important;
    --e-global-color-3054ab4:                       var(--b47-gray-800) !important;
    --e-global-color-0d3cf96:                       var(--b47-gray-900) !important;
    --e-global-color-df205c0:                       var(--b47-gray-950) !important;
    --e-global-color-0e27546:                       var(--b47-black) !important;
    /* --- H1 --- */
    --e-global-typography-primary-font-family:      var(--b47-h1-family) !important;
    --e-global-typography-primary-font-size:        var(--b47-h1-size) !important;
    --e-global-typography-primary-font-weight:      var(--b47-h1-weight) !important;
    --e-global-typography-primary-line-height:      var(--b47-h1-line-height) !important;
    --e-global-typography-primary-letter-spacing:   var(--b47-h1-letter-spacing) !important;
    /* --- H2 --- */
    --e-global-typography-secondary-font-family:    var(--b47-h2-family) !important;
    --e-global-typography-secondary-font-size:      var(--b47-h2-size) !important;
    --e-global-typography-secondary-font-weight:    var(--b47-h2-weight) !important;
    --e-global-typography-secondary-line-height:    var(--b47-h2-line-height) !important;
    --e-global-typography-secondary-letter-spacing: var(--b47-h2-letter-spacing) !important;
    /* --- Body --- */
    --e-global-typography-text-font-family:         var(--b47-body-family) !important;
    --e-global-typography-text-font-size:           var(--b47-body-regular-size) !important;
    --e-global-typography-text-font-weight:         var(--b47-body-regular-weight) !important;
    --e-global-typography-text-line-height:         var(--b47-body-regular-line-height) !important;
    --e-global-typography-text-letter-spacing:      var(--b47-body-regular-letter-spacing) !important;
    /* --- Accent — points to secondary since accent is removed --- */
    --e-global-typography-accent-font-family:       var(--b47-body-family) !important;
    --e-global-typography-accent-font-size:         var(--b47-body-regular-size) !important;
    --e-global-typography-accent-font-weight:       var(--b47-font-weight-semibold) !important;
    --e-global-typography-accent-line-height:       var(--b47-body-regular-line-height) !important;
    --e-global-typography-accent-letter-spacing:    var(--b47-body-regular-letter-spacing) !important;
    /* --- H3 --- */
    --e-global-typography-6709bb9-font-family:      var(--b47-h3-family) !important;
    --e-global-typography-6709bb9-font-size:        var(--b47-h3-size) !important;
    --e-global-typography-6709bb9-font-weight:      var(--b47-h3-weight) !important;
    --e-global-typography-6709bb9-line-height:      var(--b47-h3-line-height) !important;
    --e-global-typography-6709bb9-letter-spacing:   var(--b47-h3-letter-spacing) !important;
    /* --- H4 --- */
    --e-global-typography-6bc1921-font-family:      var(--b47-h4-family) !important;
    --e-global-typography-6bc1921-font-size:        var(--b47-h4-size) !important;
    --e-global-typography-6bc1921-font-weight:      var(--b47-h4-weight) !important;
    --e-global-typography-6bc1921-line-height:      var(--b47-h4-line-height) !important;
    --e-global-typography-6bc1921-letter-spacing:   var(--b47-h4-letter-spacing) !important;
    /* --- H5 --- */
    --e-global-typography-cd9ceb9-font-family:      var(--b47-h5-family) !important;
    --e-global-typography-cd9ceb9-font-size:        var(--b47-h5-size) !important;
    --e-global-typography-cd9ceb9-font-weight:      var(--b47-h5-weight) !important;
    --e-global-typography-cd9ceb9-line-height:      var(--b47-h5-line-height) !important;
    --e-global-typography-cd9ceb9-letter-spacing:   var(--b47-h5-letter-spacing) !important;
    /* --- H5 (alternate slot) --- */
    --e-global-typography-2b02bca-font-size:        var(--b47-h5-size) !important;
    --e-global-typography-2b02bca-font-weight:      var(--b47-h5-weight) !important;
    --e-global-typography-2b02bca-line-height:      var(--b47-h5-line-height) !important;
    --e-global-typography-2b02bca-letter-spacing:   var(--b47-h5-letter-spacing) !important;

    /* --- H6 --- */
    --e-global-typography-89dc100-font-family:      var(--b47-h6-family) !important;
    --e-global-typography-89dc100-font-size:        var(--b47-h6-size) !important;
    --e-global-typography-89dc100-font-weight:      var(--b47-h6-weight) !important;
    --e-global-typography-89dc100-line-height:      var(--b47-h6-line-height) !important;
    --e-global-typography-89dc100-letter-spacing:   var(--b47-h6-letter-spacing) !important;
    /* --- Body Secondary --- */
    --e-global-typography-0f04bdb-font-family:      var(--b47-body-small-family) !important;
    --e-global-typography-0f04bdb-font-size:        var(--b47-body-small-size) !important;
    --e-global-typography-0f04bdb-font-weight:      var(--b47-body-small-weight) !important;
    --e-global-typography-0f04bdb-line-height:      var(--b47-body-small-line-height) !important;
    --e-global-typography-0f04bdb-letter-spacing:   var(--b47-body-small-letter-spacing) !important;
    /* --- Body Tertiary --- */
    --e-global-typography-d293a02-font-family:      var(--b47-body-tiny-family) !important;
    --e-global-typography-d293a02-font-size:        var(--b47-body-tiny-size) !important;
    --e-global-typography-d293a02-font-weight:      var(--b47-body-tiny-weight) !important;
    --e-global-typography-d293a02-line-height:      var(--b47-body-tiny-line-height) !important;
    --e-global-typography-d293a02-letter-spacing:   var(--b47-body-tiny-letter-spacing) !important;
    /* --- Navigation --- */
    --e-global-typography-bf139ad-font-family:      var(--b47-nav-family) !important;
    --e-global-typography-bf139ad-font-size:        var(--b47-nav-size) !important;
    --e-global-typography-bf139ad-font-weight:      var(--b47-nav-weight) !important;
    --e-global-typography-bf139ad-line-height:      var(--b47-nav-line-height) !important;
    --e-global-typography-bf139ad-letter-spacing:   var(--b47-nav-letter-spacing) !important;
    /* --- Links — inherits from parent, color handled globally via a { } No override needed --- */
    /* --- Links (weight only) --- */
    --e-global-typography-5cb811c-font-weight:      var(--b47-font-weight-normal) !important;
    /* --- Overline --- */
    --e-global-typography-5d1c0cb-font-family:      var(--b47-overline-family) !important;
    --e-global-typography-5d1c0cb-font-size:        var(--b47-overline-size) !important;
    --e-global-typography-5d1c0cb-font-weight:      var(--b47-overline-weight) !important;
    --e-global-typography-5d1c0cb-text-transform:   var(--b47-overline-transform) !important;
    --e-global-typography-5d1c0cb-line-height:      var(--b47-overline-line-height) !important;
    --e-global-typography-5d1c0cb-letter-spacing:   var(--b47-overline-letter-spacing) !important;
    /* --- Overline (alternate slot) --- */
    --e-global-typography-d812638-font-size:        var(--b47-overline-size) !important;
    --e-global-typography-d812638-font-weight:      var(--b47-overline-weight) !important;
    --e-global-typography-d812638-text-transform:   var(--b47-overline-transform) !important;
    --e-global-typography-d812638-line-height:      var(--b47-overline-line-height) !important;
    --e-global-typography-d812638-letter-spacing:   var(--b47-overline-letter-spacing) !important;
    /* --- Buttons --- */
    --e-global-typography-a0fc8f7-font-family:      var(--b47-button-family) !important;
    --e-global-typography-a0fc8f7-font-size:        var(--b47-button-size-m) !important;
    --e-global-typography-a0fc8f7-font-weight:      var(--b47-button-weight) !important;
    --e-global-typography-a0fc8f7-line-height:      var(--b47-button-line-height) !important;
    --e-global-typography-a0fc8f7-letter-spacing:   var(--b47-button-letter-spacing) !important;
    /* --- Buttons (alternate slot) --- */
    --e-global-typography-344c83e-font-size:        var(--b47-button-size-m) !important;
    --e-global-typography-344c83e-font-weight:      var(--b47-button-weight) !important;
    --e-global-typography-344c83e-line-height:      var(--b47-button-line-height) !important;
    --e-global-typography-344c83e-letter-spacing:   var(--b47-button-letter-spacing) !important;
}