/*
 * DropCSS — Utility Framework for Elementor v4
 * v1.1.0 | dropelements.com
 *
 * STRUCTURE
 * 1.  Design Tokens (CSS Variables)
 * 2.  Typography — size, weight, leading, tracking, align, style
 * 3.  Colors — text, background, border
 * 4.  Spacing — padding, margin
 * 5.  Flexbox
 * 6.  Sizing — width, height, max-width
 * 7.  Borders — width, style, radius
 * 8.  Effects — opacity, shadow
 * 9.  Filters — blur, brightness
 * 10. Display & Layout
 * 11. Buttons (components)
 * 12. Elementor Atomic overrides
 * ─────────────────────────────────────────────────────────────────
 *
 * PERSONNALISATION : modifie uniquement le bloc "1. Design Tokens"
 * pour adapter à ta charte graphique. Tout le reste est générique.
 */

/* ═══════════════════════════════════════════════════════════════
   1. DESIGN TOKENS
   ▸ Modifie CE bloc pour adapter à ta charte graphique.
   ▸ Tout le reste du fichier consomme ces variables.
═══════════════════════════════════════════════════════════════ */
:root {

  /* ── Couleurs sémantiques ─────────────────────────────────── */
  --color-primary:       #3858E9;
  --color-primary-light: #eef1fd;
  --color-primary-dark:  #2644d4;
  --color-secondary:     #272ca6;
  --color-text:          #464442;
  --color-muted:         #8a8885;
  --color-light:         #b5b3b1;
  --color-bg:            #F0F0F1;
  --color-white:         #ffffff;
  --color-black:         #1A1A1A;
  --color-border:        #e2e2e3;

  /* ── Couleurs grises ──────────────────────────────────────── */
  --color-gray:          #f0f0f1;
  --color-gray-light:    #f7f7f8;
  --color-gray-dark:     #d1d1d2;

  /* ── Couleurs d'état ──────────────────────────────────────── */
  --color-success:       #16a34a;
  --color-success-light: #dcfce7;
  --color-warning:       #f4bb1b;
  --color-warning-light: #fef3c7;
  --color-error:         #F13737;
  --color-error-light:   #fee2e2;
  --color-neutral:       #6b7280;
  --color-neutral-light: #f3f4f6;

  /* ── Typographie ──────────────────────────────────────────── */
  --font-base:    'Plus Jakarta Sans', system-ui, sans-serif;
  --font-heading: 'Plus Jakarta Sans', system-ui, sans-serif;
  --font-mono:    'JetBrains Mono', 'Fira Code', monospace;

  /* ── Radius ───────────────────────────────────────────────── */
  --radius-sm:   4px;
  --radius:      8px;
  --radius-md:   12px;
  --radius-lg:   16px;
  --radius-xl:   24px;
  --radius-2xl:  32px;
  --radius-full: 9999px;

  /* ── Shadows ──────────────────────────────────────────────── */
  --shadow-xs:  0 1px 3px rgba(0,0,0,.06);
  --shadow-sm:  0 2px 8px rgba(0,0,0,.08);
  --shadow:     0 4px 16px rgba(0,0,0,.10);
  --shadow-md:  0 8px 24px rgba(0,0,0,.12);
  --shadow-lg:  0 16px 48px rgba(0,0,0,.14);
  --shadow-xl:  0 24px 64px rgba(0,0,0,.18);

  /* ── Transition ───────────────────────────────────────────── */
  --transition: 180ms ease;
}


/* ═══════════════════════════════════════════════════════════════
   2. TYPOGRAPHY
═══════════════════════════════════════════════════════════════ */

/* Font size — fluid clamp() scale (mobile → desktop) */
.text-2xs  { font-size: clamp(0.58rem, calc(0.49rem + 0.09vw), 0.64rem) !important; }
.text-xs   { font-size: clamp(0.69rem, calc(0.59rem + 0.16vw), 0.80rem) !important; }
.text-sm   { font-size: clamp(0.83rem, calc(0.71rem + 0.25vw), 1.00rem) !important; }
.text-base { font-size: clamp(1.00rem, calc(0.85rem + 0.37vw), 1.25rem) !important; }
.text-lg   { font-size: clamp(1.20rem, calc(1.02rem + 0.53vw), 1.56rem) !important; }
.text-xl   { font-size: clamp(1.44rem, calc(1.22rem + 0.75vw), 1.95rem) !important; }
.text-2xl  { font-size: clamp(1.73rem, calc(1.47rem + 1.05vw), 2.44rem) !important; }
.text-3xl  { font-size: clamp(2.07rem, calc(1.76rem + 1.45vw), 3.05rem) !important; }
.text-4xl  { font-size: clamp(2.49rem, calc(2.12rem + 1.97vw), 3.82rem) !important; }
.text-5xl  { font-size: clamp(2.99rem, calc(2.54rem + 2.63vw), 4.77rem) !important; }
.text-6xl  { font-size: clamp(3.59rem, calc(3.08rem + 3.47vw), 5.96rem) !important; }
.text-7xl  { font-size: clamp(4.31rem, calc(3.74rem + 4.58vw), 7.45rem) !important; }
.text-8xl  { font-size: clamp(5.17rem, calc(4.51rem + 6.05vw), 9.31rem) !important; }
.text-9xl  { font-size: clamp(6.20rem, calc(5.45rem + 7.98vw), 11.64rem) !important; }

/* Font weight */
.font-thin       { font-weight: 100 !important; }
.font-extralight { font-weight: 200 !important; }
.font-light      { font-weight: 300 !important; }
.font-regular    { font-weight: 400 !important; }
.font-medium     { font-weight: 500 !important; }
.font-semibold   { font-weight: 600 !important; }
.font-bold       { font-weight: 700 !important; }
.font-extrabold  { font-weight: 800 !important; }
.font-black      { font-weight: 900 !important; }

/* Line height */
.leading-none    { line-height: 1 !important; }
.leading-tight   { line-height: 1.2 !important; }
.leading-snug    { line-height: 1.375 !important; }
.leading-normal  { line-height: 1.5 !important; }
.leading-relaxed { line-height: 1.625 !important; }
.leading-loose   { line-height: 1.75 !important; }

/* Letter spacing */
.tracking-tightest  { letter-spacing: -0.075em !important; }
.tracking-tight     { letter-spacing: -0.025em !important; }
.tracking-normal    { letter-spacing: 0 !important; }
.tracking-wide      { letter-spacing: 0.025em !important; }
.tracking-wider     { letter-spacing: 0.05em !important; }
.tracking-widest    { letter-spacing: 0.1em !important; }
.tracking-ultra-wide{ letter-spacing: 0.2em !important; }

/* Text alignment */
.text-start  { text-align: left !important; text-align: start !important; }
.text-center { text-align: center !important; }
.text-end    { text-align: right !important; text-align: end !important; }

/* Text style */
.uppercase   { text-transform: uppercase !important; }
.lowercase   { text-transform: lowercase !important; }
.capitalize  { text-transform: capitalize !important; }
.normal-case { text-transform: none !important; }
.italic      { font-style: italic !important; }
.not-italic  { font-style: normal !important; }
.underline   { text-decoration: underline !important; }
.no-underline{ text-decoration: none !important; }
.line-through{ text-decoration: line-through !important; }
.truncate    { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }
.break-words { overflow-wrap: break-word !important; word-break: break-word !important; }
.whitespace-nowrap { white-space: nowrap !important; }


/* ═══════════════════════════════════════════════════════════════
   3. COLORS
═══════════════════════════════════════════════════════════════ */

/* ── Text colors ──────────────────────────────────────────────── */
.text-primary   { color: var(--color-primary)  !important; }
.text-secondary { color: var(--color-secondary)!important; }
.text-success   { color: var(--color-success)  !important; }
.text-warning   { color: var(--color-warning)  !important; }
.text-error     { color: var(--color-error)    !important; }
.text-neutral   { color: var(--color-neutral)  !important; }
.text-white     { color: var(--color-white)    !important; }
.text-black     { color: var(--color-black)    !important; }
.text-gray      { color: var(--color-muted)    !important; }
.text-gray-light{ color: var(--color-light)    !important; }
.text-gray-dark { color: var(--color-text)     !important; }
.text-muted     { color: var(--color-muted)    !important; }
.text-inherit   { color: inherit !important; }

/* ── Background colors ────────────────────────────────────────── */
.background-primary        { background-color: var(--color-primary)       !important; }
.background-primary-light  { background-color: var(--color-primary-light)  !important; }
.background-secondary      { background-color: var(--color-secondary)     !important; }
.background-success        { background-color: var(--color-success-light) !important; }
.background-warning        { background-color: var(--color-warning-light) !important; }
.background-error          { background-color: var(--color-error-light)   !important; }
.background-neutral        { background-color: var(--color-neutral-light) !important; }
.background-white          { background-color: var(--color-white)         !important; }
.background-black          { background-color: var(--color-black)         !important; }
.background-gray           { background-color: var(--color-gray)          !important; }
.background-gray-light     { background-color: var(--color-gray-light)    !important; }
.background-gray-dark      { background-color: var(--color-gray-dark)     !important; }
.background-transparent    { background-color: transparent                !important; }

/* ── Border colors ────────────────────────────────────────────── */
.border-color-primary   { border-color: var(--color-primary)  !important; }
.border-color-secondary { border-color: var(--color-secondary)!important; }
.border-color-success   { border-color: var(--color-success)  !important; }
.border-color-warning   { border-color: var(--color-warning)  !important; }
.border-color-error     { border-color: var(--color-error)    !important; }
.border-color-neutral   { border-color: var(--color-neutral)  !important; }
.border-color-gray      { border-color: var(--color-border)   !important; }
.border-color-gray-light{ border-color: var(--color-gray-light)!important; }
.border-color-gray-dark { border-color: var(--color-gray-dark)!important; }
.border-color-white     { border-color: var(--color-white)    !important; }
.border-color-black     { border-color: var(--color-black)    !important; }


/* ═══════════════════════════════════════════════════════════════
   4. SPACING — Padding & Margin
   Échelle : 0 px 1(0.25) 2(0.5) 3(0.75) 4(1) 6(1.5) 8(2) 12(3) 16(4)
═══════════════════════════════════════════════════════════════ */

/* padding — all sides */
.padding-0   { padding: 0 !important; }
.padding-px  { padding: 1px !important; }
.padding-1   { padding: 0.25rem !important; }
.padding-2   { padding: 0.5rem !important; }
.padding-3   { padding: 0.75rem !important; }
.padding-4   { padding: 1rem !important; }
.padding-6   { padding: 1.5rem !important; }
.padding-8   { padding: 2rem !important; }
.padding-12  { padding: 3rem !important; }
.padding-16  { padding: 4rem !important; }

/* padding — horizontal */
.padding-horizontal-0   { padding-left: 0 !important;      padding-right: 0 !important; }
.padding-horizontal-px  { padding-left: 1px !important;    padding-right: 1px !important; }
.padding-horizontal-1   { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
.padding-horizontal-2   { padding-left: 0.5rem !important;  padding-right: 0.5rem !important; }
.padding-horizontal-3   { padding-left: 0.75rem !important; padding-right: 0.75rem !important; }
.padding-horizontal-4   { padding-left: 1rem !important;    padding-right: 1rem !important; }
.padding-horizontal-6   { padding-left: 1.5rem !important;  padding-right: 1.5rem !important; }
.padding-horizontal-8   { padding-left: 2rem !important;    padding-right: 2rem !important; }
.padding-horizontal-12  { padding-left: 3rem !important;    padding-right: 3rem !important; }
.padding-horizontal-16  { padding-left: 4rem !important;    padding-right: 4rem !important; }

/* padding — vertical */
.padding-vertical-0   { padding-top: 0 !important;      padding-bottom: 0 !important; }
.padding-vertical-px  { padding-top: 1px !important;    padding-bottom: 1px !important; }
.padding-vertical-1   { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
.padding-vertical-2   { padding-top: 0.5rem !important;  padding-bottom: 0.5rem !important; }
.padding-vertical-3   { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; }
.padding-vertical-4   { padding-top: 1rem !important;    padding-bottom: 1rem !important; }
.padding-vertical-6   { padding-top: 1.5rem !important;  padding-bottom: 1.5rem !important; }
.padding-vertical-8   { padding-top: 2rem !important;    padding-bottom: 2rem !important; }
.padding-vertical-12  { padding-top: 3rem !important;    padding-bottom: 3rem !important; }
.padding-vertical-16  { padding-top: 4rem !important;    padding-bottom: 4rem !important; }

/* padding — top only */
.padding-top-0  { padding-top: 0 !important; }
.padding-top-px { padding-top: 1px !important; }
.padding-top-1  { padding-top: 0.25rem !important; }
.padding-top-2  { padding-top: 0.5rem !important; }
.padding-top-3  { padding-top: 0.75rem !important; }
.padding-top-4  { padding-top: 1rem !important; }
.padding-top-6  { padding-top: 1.5rem !important; }
.padding-top-8  { padding-top: 2rem !important; }
.padding-top-12 { padding-top: 3rem !important; }
.padding-top-16 { padding-top: 4rem !important; }

/* padding — bottom only */
.padding-bottom-0  { padding-bottom: 0 !important; }
.padding-bottom-px { padding-bottom: 1px !important; }
.padding-bottom-1  { padding-bottom: 0.25rem !important; }
.padding-bottom-2  { padding-bottom: 0.5rem !important; }
.padding-bottom-3  { padding-bottom: 0.75rem !important; }
.padding-bottom-4  { padding-bottom: 1rem !important; }
.padding-bottom-6  { padding-bottom: 1.5rem !important; }
.padding-bottom-8  { padding-bottom: 2rem !important; }
.padding-bottom-12 { padding-bottom: 3rem !important; }
.padding-bottom-16 { padding-bottom: 4rem !important; }

/* margin — all sides */
.margin-0    { margin: 0 !important; }
.margin-auto { margin: auto !important; }
.margin-px   { margin: 1px !important; }
.margin-1    { margin: 0.25rem !important; }
.margin-2    { margin: 0.5rem !important; }
.margin-3    { margin: 0.75rem !important; }
.margin-4    { margin: 1rem !important; }
.margin-6    { margin: 1.5rem !important; }
.margin-8    { margin: 2rem !important; }
.margin-12   { margin: 3rem !important; }

/* margin — horizontal */
.margin-horizontal-auto { margin-left: auto !important; margin-right: auto !important; }
.margin-horizontal-0    { margin-left: 0 !important;    margin-right: 0 !important; }
.margin-horizontal-2    { margin-left: 0.5rem !important; margin-right: 0.5rem !important; }
.margin-horizontal-4    { margin-left: 1rem !important;   margin-right: 1rem !important; }

/* margin — top */
.margin-top-0  { margin-top: 0 !important; }
.margin-top-1  { margin-top: 0.25rem !important; }
.margin-top-2  { margin-top: 0.5rem !important; }
.margin-top-4  { margin-top: 1rem !important; }
.margin-top-6  { margin-top: 1.5rem !important; }
.margin-top-8  { margin-top: 2rem !important; }
.margin-top-12 { margin-top: 3rem !important; }

/* margin — bottom */
.margin-bottom-0  { margin-bottom: 0 !important; }
.margin-bottom-1  { margin-bottom: 0.25rem !important; }
.margin-bottom-2  { margin-bottom: 0.5rem !important; }
.margin-bottom-4  { margin-bottom: 1rem !important; }
.margin-bottom-6  { margin-bottom: 1.5rem !important; }
.margin-bottom-8  { margin-bottom: 2rem !important; }
.margin-bottom-12 { margin-bottom: 3rem !important; }


/* ═══════════════════════════════════════════════════════════════
   5. FLEXBOX
═══════════════════════════════════════════════════════════════ */
.flex         { display: flex !important; }
.inline-flex  { display: inline-flex !important; }

/* direction */
.flex-row     { flex-direction: row !important; }
.flex-col     { flex-direction: column !important; }
.flex-row-reverse { flex-direction: row-reverse !important; }
.flex-col-reverse { flex-direction: column-reverse !important; }

/* wrap */
.flex-wrap         { flex-wrap: wrap !important; }
.flex-nowrap       { flex-wrap: nowrap !important; }
.flex-wrap-reverse { flex-wrap: wrap-reverse !important; }

/* align-items */
.items-start   { align-items: flex-start !important; }
.items-center  { align-items: center !important; }
.items-end     { align-items: flex-end !important; }
.items-stretch { align-items: stretch !important; }
.items-baseline{ align-items: baseline !important; }

/* justify-content */
.justify-start   { justify-content: flex-start !important; }
.justify-center  { justify-content: center !important; }
.justify-end     { justify-content: flex-end !important; }
.justify-between { justify-content: space-between !important; }
.justify-around  { justify-content: space-around !important; }
.justify-evenly  { justify-content: space-evenly !important; }

/* align-self */
.self-auto    { align-self: auto !important; }
.self-start   { align-self: flex-start !important; }
.self-center  { align-self: center !important; }
.self-end     { align-self: flex-end !important; }
.self-stretch { align-self: stretch !important; }

/* flex grow/shrink */
.flex-grow   { flex-grow: 1 !important; }
.flex-shrink { flex-shrink: 1 !important; }
.flex-none   { flex: none !important; }
.flex-1      { flex: 1 1 0% !important; }
.flex-auto   { flex: 1 1 auto !important; }

/* order */
.order-first { order: -9999 !important; }
.order-last  { order: 9999 !important; }
.order-none  { order: 0 !important; }

/* gap */
.gap-0  { gap: 0 !important; }
.gap-1  { gap: 0.25rem !important; }
.gap-2  { gap: 0.5rem !important; }
.gap-3  { gap: 0.75rem !important; }
.gap-4  { gap: 1rem !important; }
.gap-6  { gap: 1.5rem !important; }
.gap-8  { gap: 2rem !important; }
.gap-12 { gap: 3rem !important; }
.gap-16 { gap: 4rem !important; }

.gap-x-2  { column-gap: 0.5rem !important; }
.gap-x-4  { column-gap: 1rem !important; }
.gap-x-6  { column-gap: 1.5rem !important; }
.gap-x-8  { column-gap: 2rem !important; }
.gap-y-2  { row-gap: 0.5rem !important; }
.gap-y-4  { row-gap: 1rem !important; }
.gap-y-6  { row-gap: 1.5rem !important; }
.gap-y-8  { row-gap: 2rem !important; }

/* flex basis */
.basis-auto  { flex-basis: auto !important; }
.basis-full  { flex-basis: 100% !important; }
.basis-1-2   { flex-basis: 50% !important; }
.basis-1-3   { flex-basis: 33.3333% !important; }
.basis-2-3   { flex-basis: 66.6667% !important; }
.basis-1-4   { flex-basis: 25% !important; }
.basis-3-4   { flex-basis: 75% !important; }


/* ═══════════════════════════════════════════════════════════════
   6. SIZING
═══════════════════════════════════════════════════════════════ */

/* width */
.width-auto   { width: auto !important; }
.width-full   { width: 100% !important; }
.width-screen { width: 100vw !important; }
.width-fit    { width: fit-content !important; }
.width-1-2    { width: 50% !important; }
.width-1-3    { width: 33.3333% !important; }
.width-2-3    { width: 66.6667% !important; }
.width-1-4    { width: 25% !important; }
.width-3-4    { width: 75% !important; }

/* max-width */
.maximum-width-xs   { max-width: 20rem !important; }
.maximum-width-sm   { max-width: 24rem !important; }
.maximum-width-md   { max-width: 28rem !important; }
.maximum-width-lg   { max-width: 32rem !important; }
.maximum-width-xl   { max-width: 36rem !important; }
.maximum-width-2xl  { max-width: 42rem !important; }
.maximum-width-3xl  { max-width: 48rem !important; }
.maximum-width-4xl  { max-width: 56rem !important; }
.maximum-width-5xl  { max-width: 64rem !important; }
.maximum-width-6xl  { max-width: 72rem !important; }
.maximum-width-full { max-width: 100% !important; }
.maximum-width-none { max-width: none !important; }

/* min-width */
.minimum-width-0    { min-width: 0 !important; }
.minimum-width-full { min-width: 100% !important; }

/* height */
.height-auto   { height: auto !important; }
.height-full   { height: 100% !important; }
.height-screen { height: 100vh !important; }
.height-fit    { height: fit-content !important; }

/* min-height */
.min-height-0      { min-height: 0 !important; }
.min-height-screen { min-height: 100vh !important; }
.min-height-full   { min-height: 100% !important; }


/* ═══════════════════════════════════════════════════════════════
   7. BORDERS
═══════════════════════════════════════════════════════════════ */

/* border width */
.border-0  { border-width: 0 !important; }
.border-px { border-width: 1px !important; }
.border-1  { border-width: 1px !important; }
.border-2  { border-width: 2px !important; }
.border-4  { border-width: 4px !important; }
.border-8  { border-width: 8px !important; }

/* border style */
.border-solid  { border-style: solid !important; }
.border-dashed { border-style: dashed !important; }
.border-dotted { border-style: dotted !important; }
.border-none   { border-style: none !important; }

/* border radius */
.rounded-none { border-radius: 0 !important; }
.rounded-sm   { border-radius: var(--radius-sm) !important; }
.rounded      { border-radius: var(--radius) !important; }
.rounded-md   { border-radius: var(--radius-md) !important; }
.rounded-lg   { border-radius: var(--radius-lg) !important; }
.rounded-xl   { border-radius: var(--radius-xl) !important; }
.rounded-2xl  { border-radius: var(--radius-2xl) !important; }
.rounded-full { border-radius: var(--radius-full) !important; }


/* ═══════════════════════════════════════════════════════════════
   8. EFFECTS — Opacity & Shadow
═══════════════════════════════════════════════════════════════ */

/* opacity */
.opacity-0   { opacity: 0 !important; }
.opacity-5   { opacity: 0.05 !important; }
.opacity-10  { opacity: 0.10 !important; }
.opacity-20  { opacity: 0.20 !important; }
.opacity-25  { opacity: 0.25 !important; }
.opacity-30  { opacity: 0.30 !important; }
.opacity-40  { opacity: 0.40 !important; }
.opacity-50  { opacity: 0.50 !important; }
.opacity-60  { opacity: 0.60 !important; }
.opacity-70  { opacity: 0.70 !important; }
.opacity-75  { opacity: 0.75 !important; }
.opacity-80  { opacity: 0.80 !important; }
.opacity-90  { opacity: 0.90 !important; }
.opacity-100 { opacity: 1 !important; }

/* box shadow */
.shadow-none { box-shadow: none !important; }
.shadow-xs   { box-shadow: var(--shadow-xs) !important; }
.shadow-sm   { box-shadow: var(--shadow-sm) !important; }
.shadow      { box-shadow: var(--shadow) !important; }
.shadow-md   { box-shadow: var(--shadow-md) !important; }
.shadow-lg   { box-shadow: var(--shadow-lg) !important; }
.shadow-xl   { box-shadow: var(--shadow-xl) !important; }

/* inset shadow */
.shadow-inset    { box-shadow: inset 0 2px 4px rgba(0,0,0,.06) !important; }
.shadow-inset-md { box-shadow: inset 0 4px 8px rgba(0,0,0,.10) !important; }


/* ═══════════════════════════════════════════════════════════════
   9. FILTERS
═══════════════════════════════════════════════════════════════ */
.blur-none { filter: blur(0) !important; }
.blur-sm   { filter: blur(4px) !important; }
.blur      { filter: blur(8px) !important; }
.blur-md   { filter: blur(12px) !important; }
.blur-lg   { filter: blur(16px) !important; }
.blur-xl   { filter: blur(24px) !important; }

.brightness-50  { filter: brightness(.5) !important; }
.brightness-75  { filter: brightness(.75) !important; }
.brightness-90  { filter: brightness(.9) !important; }
.brightness-100 { filter: brightness(1) !important; }
.brightness-110 { filter: brightness(1.1) !important; }
.brightness-125 { filter: brightness(1.25) !important; }

.grayscale      { filter: grayscale(100%) !important; }
.grayscale-50   { filter: grayscale(50%) !important; }
.invert         { filter: invert(100%) !important; }
.sepia          { filter: sepia(100%) !important; }


/* ═══════════════════════════════════════════════════════════════
   10. DISPLAY & LAYOUT
═══════════════════════════════════════════════════════════════ */

/* display */
.block        { display: block !important; }
.inline-block { display: inline-block !important; }
.inline       { display: inline !important; }
.hidden       { display: none !important; }
.grid         { display: grid !important; }
.inline-grid  { display: inline-grid !important; }

/* position */
.static   { position: static !important; }
.relative { position: relative !important; }
.absolute { position: absolute !important; }
.fixed    { position: fixed !important; }
.sticky   { position: sticky !important; }

/* overflow */
.overflow-hidden  { overflow: hidden !important; }
.overflow-auto    { overflow: auto !important; }
.overflow-scroll  { overflow: scroll !important; }
.overflow-visible { overflow: visible !important; }
.overflow-x-hidden{ overflow-x: hidden !important; }
.overflow-y-auto  { overflow-y: auto !important; }

/* object-fit */
.object-cover   { object-fit: cover !important; }
.object-contain { object-fit: contain !important; }
.object-fill    { object-fit: fill !important; }
.object-none    { object-fit: none !important; }

/* aspect ratio */
.aspect-square  { aspect-ratio: 1 / 1 !important; }
.aspect-video   { aspect-ratio: 16 / 9 !important; }
.aspect-4-3     { aspect-ratio: 4 / 3 !important; }
.aspect-3-2     { aspect-ratio: 3 / 2 !important; }
.aspect-21-9    { aspect-ratio: 21 / 9 !important; }

/* z-index */
.z-0    { z-index: 0 !important; }
.z-10   { z-index: 10 !important; }
.z-20   { z-index: 20 !important; }
.z-30   { z-index: 30 !important; }
.z-40   { z-index: 40 !important; }
.z-50   { z-index: 50 !important; }
.z-100  { z-index: 100 !important; }
.z-auto { z-index: auto !important; }

/* cursor */
.cursor-pointer { cursor: pointer !important; }
.cursor-default { cursor: default !important; }
.cursor-not-allowed { cursor: not-allowed !important; }

/* pointer events */
.pointer-events-none { pointer-events: none !important; }
.pointer-events-auto { pointer-events: auto !important; }

/* user select */
.select-none { user-select: none !important; }
.select-all  { user-select: all !important; }

/* sr-only */
.sr-only {
  position: absolute !important;
  width: 1px !important; height: 1px !important;
  overflow: hidden !important;
  clip: rect(0,0,0,0) !important;
  white-space: nowrap !important;
}


/* ═══════════════════════════════════════════════════════════════
   11. BUTTONS (Components)
   Usage: class="button-primary" ou "button-primary button-lg"
═══════════════════════════════════════════════════════════════ */

/* Base partagée */
[class*="button-primary"],
[class*="button-secondary"],
[class*="button-neutral"],
[class*="button-success"],
[class*="button-warning"],
[class*="button-error"],
[class*="button-ghost"],
[class*="button-outline"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  font-family: var(--font-base);
  font-weight: 600;
  line-height: 1;
  border-radius: var(--radius);
  border: 1.5px solid transparent;
  cursor: pointer;
  text-decoration: none !important;
  transition: background var(--transition), color var(--transition),
              border-color var(--transition), box-shadow var(--transition),
              transform var(--transition);
  white-space: nowrap;
  user-select: none;
  /* taille par défaut = md */
  padding: 0.74rem 1.45rem;
  font-size: 0.875rem;
}
[class*="button-primary"]:active,
[class*="button-secondary"]:active,
[class*="button-neutral"]:active,
[class*="button-success"]:active,
[class*="button-warning"]:active,
[class*="button-error"]:active   { transform: scale(.98); }

/* Presets sémantiques */
.button-primary   { background: var(--color-primary);   color: #fff !important; border-color: var(--color-primary); }
.button-primary:hover { background: var(--color-primary-dark); border-color: var(--color-primary-dark); box-shadow: var(--shadow-sm); }

.button-secondary { background: #aaebfd; color: #111827 !important; border-color: #aaebfd; }
.button-secondary:hover { background: #82e0f9; border-color: #82e0f9; }

.button-neutral   { background: var(--color-neutral-light); color: var(--color-text) !important; border-color: var(--color-border); }
.button-neutral:hover { background: var(--color-gray-dark); }

.button-success   { background: var(--color-success); color: #fff !important; border-color: var(--color-success); }
.button-success:hover { background: #15803d; border-color: #15803d; }

.button-warning   { background: var(--color-warning); color: #111827 !important; border-color: var(--color-warning); }
.button-warning:hover { background: #d97706; border-color: #d97706; }

.button-error     { background: var(--color-error); color: #fff !important; border-color: var(--color-error); }
.button-error:hover { background: #c82828; border-color: #c82828; }

.button-ghost     { background: transparent; color: var(--color-text) !important; border-color: var(--color-border); }
.button-ghost:hover { background: var(--color-gray); }

.button-outline   { background: transparent; color: var(--color-primary) !important; border-color: var(--color-primary); }
.button-outline:hover { background: var(--color-primary-light); }

/* Sizes */
.button-xs { padding: 0.38rem 0.75rem !important; font-size: 0.72rem !important; border-radius: var(--radius-sm) !important; }
.button-sm { padding: 0.55rem 1.10rem !important; font-size: 0.80rem !important; }
.button-md { padding: 0.74rem 1.45rem !important; font-size: 0.875rem !important; }
.button-lg { padding: 0.90rem 1.70rem !important; font-size: 0.96rem !important; border-radius: var(--radius-md) !important; }
.button-xl { padding: 1.05rem 2.00rem !important; font-size: 1.05rem !important; border-radius: var(--radius-md) !important; }

/* Full width */
.button-block { width: 100% !important; }


/* ═══════════════════════════════════════════════════════════════
   12. ELEMENTOR ATOMIC OVERRIDES
   Styles appliqués aux éléments natifs Elementor v4
═══════════════════════════════════════════════════════════════ */

/* Heading widget */
.elementor-widget-heading .elementor-heading-title {
  font-family: var(--font-heading);
}

/* Text editor */
.elementor-widget-text-editor {
  font-family: var(--font-base);
  line-height: 1.75;
}

/* Taxonomy terms — style tag par défaut */
.elementor-widget-taxonomy-terms .elementor-terms a {
  display: inline-flex;
  align-items: center;
  padding: 0.2rem 0.6rem;
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--color-muted);
  background: var(--color-gray);
  border: 1.5px solid var(--color-border);
  border-radius: var(--radius-full);
  text-decoration: none;
  transition: background var(--transition), color var(--transition), border-color var(--transition);
  white-space: nowrap;
}
.elementor-widget-taxonomy-terms .elementor-terms a:hover {
  background: var(--color-primary-light);
  color: var(--color-primary);
  border-color: var(--color-primary);
}

/* Loop Item — card au survol */
.e-loop-item > .e-con-inner {
  transition: box-shadow 280ms ease, transform 280ms ease;
}
.e-loop-item:hover > .e-con-inner {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

/* Divider */
.elementor-widget-divider .elementor-divider-separator {
  border-color: var(--color-border);
}

/* Image dans Loop — ratio 16/9 par défaut */
.e-loop-item .elementor-widget-image img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  display: block;
}
