/**
 * OptiGest360 Design System v1.0
 * BUNDLED VERSION - Auto-generated
 *
 * This file is automatically generated. Do not edit directly.
 * To rebuild: python3 /tmp/build_ds.py
 *
 * Generated: 2026-03-15 15:27:02
 */

/* === Imported from: ./index.css === */

/**
 * Design System OptiGest360 v1.0
 * Main entry point
 *
 * Architecture:
 * 1. Tokens - Design tokens (colors, spacing, typography)
 * 2. Primitives - Base styles and resets
 * 3. Components - UI components (buttons, badges, tabs)
 * 4. Patterns - Business patterns (entity-card, data-table)
 * 5. Layouts - Layout structures (app-layout, sidebar)
 * 6. Utilities - Utility classes
 * 7. Compatibility - Legacy classes support
 */

/* ============================================
   CORE SYSTEM
   ============================================ */


/* === Imported from: ./tokens/index.css === */

/**
 * Design System OptiGest360
 * Tokens: Index
 *
 * Import de tous les tokens
 */


/* === Imported from: ./tokens/colors.css === */

/**
 * Design System OptiGest360
 * Tokens: Colors
 *
 * Système de couleurs complet pour ERP
 * Basé sur des scales de 50 à 900
 */

:root {
    /* ============================================
       PRIMARY - Vert profond OptiGest (#06352c)
       ============================================ */
    --ds-primary-50: #f0f5f3;
    --ds-primary-100: #d7e6e1;
    --ds-primary-200: #afccc3;
    --ds-primary-300: #7ea99c;
    --ds-primary-400: #4e8573;
    --ds-primary-500: #1f6351;
    --ds-primary-600: #0f4a3b;
    --ds-primary-700: #06352c;  /* Main brand color */
    --ds-primary-800: #042a23;
    --ds-primary-900: #03201a;

    /* SECONDARY - Or/Sable OptiGest (#a5956e) */
    --ds-secondary-50: #f9f7f2;
    --ds-secondary-100: #ebe6d8;
    --ds-secondary-200: #d7cdb1;
    --ds-secondary-300: #c3b38a;
    --ds-secondary-400: #b4a37c;
    --ds-secondary-500: #a5956e;
    --ds-secondary-600: #8a7b57;
    --ds-secondary-700: #6e6244;
    --ds-secondary-800: #534931;
    --ds-secondary-900: #37301f;
    --ds-secondary: #a5956e;
    --ds-secondary-hover: #8a7b57;
    --ds-secondary-light: #ebe6d8;

    /* ============================================
       SEMANTIC COLORS
       ============================================ */

    /* Success - Green */
    --ds-success-50: #f0fdf4;
    --ds-success-100: #dcfce7;
    --ds-success-200: #bbf7d0;
    --ds-success-300: #86efac;
    --ds-success-400: #4ade80;
    --ds-success-500: #22c55e;
    --ds-success-600: #16a34a;
    --ds-success-700: #15803d;
    --ds-success-800: #166534;
    --ds-success-900: #14532d;

    /* Warning - Orange/Yellow */
    --ds-warning-50: #fffbeb;
    --ds-warning-100: #fef3c7;
    --ds-warning-200: #fde68a;
    --ds-warning-300: #fcd34d;
    --ds-warning-400: #fbbf24;
    --ds-warning-500: #f59e0b;
    --ds-warning-600: #d97706;
    --ds-warning-700: #b45309;
    --ds-warning-800: #92400e;
    --ds-warning-900: #78350f;

    /* Danger - Red */
    --ds-danger-50: #fef2f2;
    --ds-danger-100: #fee2e2;
    --ds-danger-200: #fecaca;
    --ds-danger-300: #fca5a5;
    --ds-danger-400: #f87171;
    --ds-danger-500: #ef4444;
    --ds-danger-600: #dc2626;
    --ds-danger-700: #b91c1c;
    --ds-danger-800: #991b1b;
    --ds-danger-900: #7f1d1d;

    /* Info - Blue */
    --ds-info-50: #eff6ff;
    --ds-info-100: #dbeafe;
    --ds-info-200: #bfdbfe;
    --ds-info-300: #93c5fd;
    --ds-info-400: #60a5fa;
    --ds-info-500: #3b82f6;
    --ds-info-600: #2563eb;
    --ds-info-700: #1d4ed8;
    --ds-info-800: #1e40af;
    --ds-info-900: #1e3a8a;

    /* Extended palette */
    --ds-purple-500: #8b5cf6;
    --ds-purple-600: #7c3aed;
    --ds-pink-500: #ec4899;
    --ds-orange-200: #fed7aa;
    --ds-orange-500: #f97316;
    --ds-orange-800: #9a3412;
    --ds-indigo-500: #6366f1;
    --ds-indigo-600: #4f46e5;

    /* ============================================
       NEUTRAL SCALE - Gray
       ============================================ */
    --ds-gray-50: #f9fafb;
    --ds-gray-100: #f3f4f6;
    --ds-gray-200: #e5e7eb;
    --ds-gray-300: #d1d5db;
    --ds-gray-400: #9ca3af;
    --ds-gray-500: #6b7280;
    --ds-gray-600: #4b5563;
    --ds-gray-700: #374151;
    --ds-gray-800: #1f2937;
    --ds-gray-900: #111827;

    /* ============================================
       ABSOLUTE COLORS
       ============================================ */
    --ds-white: #ffffff;
    --ds-black: #000000;

    /* ============================================
       SEMANTIC ALIASES (Pour facilité d'usage)
       ============================================ */

    /* Primary */
    --ds-primary: var(--ds-primary-700);
    --ds-primary-hover: var(--ds-primary-800);
    --ds-primary-active: var(--ds-primary-900);
    --ds-primary-light: var(--ds-primary-100);

    /* Success */
    --ds-success: var(--ds-success-500);
    --ds-success-hover: var(--ds-success-600);
    --ds-success-light: var(--ds-success-100);

    /* Warning */
    --ds-warning: var(--ds-warning-500);
    --ds-warning-hover: var(--ds-warning-600);
    --ds-warning-light: var(--ds-warning-100);

    /* Danger */
    --ds-danger: var(--ds-danger-500);
    --ds-danger-hover: var(--ds-danger-600);
    --ds-danger-light: var(--ds-danger-100);

    /* Info */
    --ds-info: var(--ds-info-500);
    --ds-info-hover: var(--ds-info-600);
    --ds-info-light: var(--ds-info-100);

    /* ============================================
       TEXT COLORS
       ============================================ */
    --ds-text-primary: var(--ds-gray-900);
    --ds-text-secondary: var(--ds-gray-600);
    --ds-text-tertiary: var(--ds-gray-500);
    --ds-text-muted: var(--ds-gray-400);
    --ds-text-disabled: var(--ds-gray-300);
    --ds-text-inverse: var(--ds-white);

    /* ============================================
       BACKGROUND COLORS
       ============================================ */
    --ds-bg-primary: var(--ds-white);
    --ds-bg-secondary: var(--ds-gray-50);
    --ds-bg-tertiary: var(--ds-gray-100);
    --ds-bg-inverse: var(--ds-gray-900);
    --ds-bg-overlay: rgba(0, 0, 0, 0.5);

    /* ============================================
       BORDER COLORS
       ============================================ */
    --ds-border-default: var(--ds-gray-200);
    --ds-border-strong: var(--ds-gray-300);
    --ds-border-subtle: var(--ds-gray-100);
    --ds-border-light: var(--ds-gray-100);
    --ds-border-inverse: var(--ds-white);

    /* ============================================
       STATUS COLORS (ERP Specific)
       ============================================ */
    --ds-status-draft: var(--ds-gray-500);
    --ds-status-pending: var(--ds-warning-500);
    --ds-status-approved: var(--ds-success-500);
    --ds-status-rejected: var(--ds-danger-500);
    --ds-status-archived: var(--ds-gray-400);
    --ds-status-active: var(--ds-info-500);
}


/* === Imported from: ./tokens/spacing.css === */

/**
 * Design System OptiGest360
 * Tokens: Spacing
 *
 * Système d'espacement basé sur 4px (0.25rem)
 * Scale: 0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 64
 */

:root {
    /* ============================================
       BASE SPACING SCALE (4px base)
       ============================================ */
    --ds-space-0: 0;
    --ds-space-1: 0.25rem;   /* 4px */
    --ds-space-2: 0.5rem;    /* 8px */
    --ds-space-3: 0.75rem;   /* 12px */
    --ds-space-4: 1rem;      /* 16px */
    --ds-space-5: 1.25rem;   /* 20px */
    --ds-space-6: 1.5rem;    /* 24px */
    --ds-space-8: 2rem;      /* 32px */
    --ds-space-10: 2.5rem;   /* 40px */
    --ds-space-12: 3rem;     /* 48px */
    --ds-space-16: 4rem;     /* 64px */
    --ds-space-20: 5rem;     /* 80px */
    --ds-space-24: 6rem;     /* 96px */
    --ds-space-32: 8rem;     /* 128px */
    --ds-space-40: 10rem;    /* 160px */
    --ds-space-48: 12rem;    /* 192px */
    --ds-space-64: 16rem;    /* 256px */

    /* ============================================
       SEMANTIC ALIASES (Noms parlants)
       ============================================ */
    --ds-spacing-xs: var(--ds-space-2);    /* 8px */
    --ds-spacing-sm: var(--ds-space-3);    /* 12px */
    --ds-spacing-md: var(--ds-space-4);    /* 16px */
    --ds-spacing-lg: var(--ds-space-6);    /* 24px */
    --ds-spacing-xl: var(--ds-space-8);    /* 32px */
    --ds-spacing-2xl: var(--ds-space-12);  /* 48px */
    --ds-spacing-3xl: var(--ds-space-16);  /* 64px */

    /* ============================================
       COMPONENT SPACING (Usage spécifique)
       ============================================ */

    /* Padding internes composants */
    --ds-padding-button-sm: var(--ds-space-2) var(--ds-space-3);
    --ds-padding-button: var(--ds-space-3) var(--ds-space-4);
    --ds-padding-button-lg: var(--ds-space-4) var(--ds-space-6);

    --ds-padding-input-sm: var(--ds-space-2) var(--ds-space-3);
    --ds-padding-input: var(--ds-space-3) var(--ds-space-4);
    --ds-padding-input-lg: var(--ds-space-4) var(--ds-space-5);

    --ds-padding-card: var(--ds-space-6);
    --ds-padding-card-sm: var(--ds-space-4);
    --ds-padding-card-lg: var(--ds-space-8);

    --ds-padding-modal: var(--ds-space-8);
    --ds-padding-modal-sm: var(--ds-space-6);

    /* Gaps entre éléments */
    --ds-gap-xs: var(--ds-space-2);
    --ds-gap-sm: var(--ds-space-3);
    --ds-gap-md: var(--ds-space-4);
    --ds-gap-lg: var(--ds-space-6);
    --ds-gap-xl: var(--ds-space-8);

    /* Marges sections */
    --ds-section-gap: var(--ds-space-8);
    --ds-section-gap-lg: var(--ds-space-12);

    /* Layout spacing */
    --ds-container-padding: var(--ds-space-6);
    --ds-page-padding: var(--ds-space-8);
}


/* === Imported from: ./tokens/typography.css === */

/**
 * Design System OptiGest360
 * Tokens: Typography
 *
 * Système typographique complet
 * Font families, sizes, weights, line-heights, letter-spacing
 */

:root {
    /* ============================================
       FONT FAMILIES
       ============================================ */
    --ds-font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
                    "Helvetica Neue", Arial, "Noto Sans", sans-serif,
                    "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol",
                    "Noto Color Emoji";

    --ds-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Monaco,
                    "Cascadia Code", "Roboto Mono", Menlo, Consolas,
                    "Courier New", monospace;

    --ds-font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;

    /* Default font */
    --ds-font-family: var(--ds-font-sans);

    /* ============================================
       FONT SIZES (Système fluide)
       ============================================ */
    --ds-text-xs: 0.75rem;      /* 12px */
    --ds-text-sm: 0.875rem;     /* 14px */
    --ds-text-base: 1rem;       /* 16px */
    --ds-text-lg: 1.125rem;     /* 18px */
    --ds-text-xl: 1.25rem;      /* 20px */
    --ds-text-2xl: 1.5rem;      /* 24px */
    --ds-text-3xl: 1.875rem;    /* 30px */
    --ds-text-4xl: 2.25rem;     /* 36px */
    --ds-text-5xl: 3rem;        /* 48px */
    --ds-text-6xl: 3.75rem;     /* 60px */
    --ds-text-7xl: 4.5rem;      /* 72px */

    /* ============================================
       FONT WEIGHTS
       ============================================ */
    --ds-font-thin: 100;
    --ds-font-extralight: 200;
    --ds-font-light: 300;
    --ds-font-normal: 400;
    --ds-font-medium: 500;
    --ds-font-semibold: 600;
    --ds-font-bold: 700;
    --ds-font-extrabold: 800;
    --ds-font-black: 900;

    /* ============================================
       LINE HEIGHTS
       ============================================ */
    --ds-leading-none: 1;
    --ds-leading-tight: 1.25;
    --ds-leading-snug: 1.375;
    --ds-leading-normal: 1.5;
    --ds-leading-relaxed: 1.625;
    --ds-leading-loose: 2;

    /* ============================================
       LETTER SPACING
       ============================================ */
    --ds-tracking-tighter: -0.05em;
    --ds-tracking-tight: -0.025em;
    --ds-tracking-normal: 0;
    --ds-tracking-wide: 0.025em;
    --ds-tracking-wider: 0.05em;
    --ds-tracking-widest: 0.1em;

    /* ============================================
       SEMANTIC ALIASES (Headings, Body, etc.)
       ============================================ */

    /* Headings */
    --ds-heading-1-size: var(--ds-text-4xl);      /* 36px */
    --ds-heading-1-weight: var(--ds-font-bold);
    --ds-heading-1-leading: var(--ds-leading-tight);

    --ds-heading-2-size: var(--ds-text-3xl);      /* 30px */
    --ds-heading-2-weight: var(--ds-font-bold);
    --ds-heading-2-leading: var(--ds-leading-tight);

    --ds-heading-3-size: var(--ds-text-2xl);      /* 24px */
    --ds-heading-3-weight: var(--ds-font-semibold);
    --ds-heading-3-leading: var(--ds-leading-snug);

    --ds-heading-4-size: var(--ds-text-xl);       /* 20px */
    --ds-heading-4-weight: var(--ds-font-semibold);
    --ds-heading-4-leading: var(--ds-leading-snug);

    --ds-heading-5-size: var(--ds-text-lg);       /* 18px */
    --ds-heading-5-weight: var(--ds-font-semibold);
    --ds-heading-5-leading: var(--ds-leading-normal);

    --ds-heading-6-size: var(--ds-text-base);     /* 16px */
    --ds-heading-6-weight: var(--ds-font-semibold);
    --ds-heading-6-leading: var(--ds-leading-normal);

    /* Body text */
    --ds-body-size: var(--ds-text-base);          /* 16px */
    --ds-body-weight: var(--ds-font-normal);
    --ds-body-leading: var(--ds-leading-normal);

    --ds-body-sm-size: var(--ds-text-sm);         /* 14px */
    --ds-body-sm-weight: var(--ds-font-normal);
    --ds-body-sm-leading: var(--ds-leading-normal);

    /* Label/Caption */
    --ds-label-size: var(--ds-text-sm);           /* 14px */
    --ds-label-weight: var(--ds-font-medium);
    --ds-label-leading: var(--ds-leading-normal);

    --ds-caption-size: var(--ds-text-xs);         /* 12px */
    --ds-caption-weight: var(--ds-font-normal);
    --ds-caption-leading: var(--ds-leading-normal);

    /* Code/Monospace */
    --ds-code-size: var(--ds-text-sm);
    --ds-code-weight: var(--ds-font-normal);
    --ds-code-family: var(--ds-font-mono);
}


/* === Imported from: ./tokens/radius.css === */

/**
 * Design System OptiGest360
 * Tokens: Border Radius
 *
 * Système de border-radius pour cohérence visuelle
 */

:root {
    /* ============================================
       BORDER RADIUS SCALE
       ============================================ */
    --ds-radius-none: 0;
    --ds-radius-sm: 0.125rem;     /* 2px */
    --ds-radius-base: 0.25rem;    /* 4px */
    --ds-radius-md: 0.375rem;     /* 6px */
    --ds-radius-lg: 0.5rem;       /* 8px */
    --ds-radius-xl: 0.75rem;      /* 12px */
    --ds-radius-2xl: 1rem;        /* 16px */
    --ds-radius-3xl: 1.5rem;      /* 24px */
    --ds-radius-full: 9999px;     /* Pill/Circle */

    /* ============================================
       SEMANTIC ALIASES
       ============================================ */
    --ds-radius-button: var(--ds-radius-md);
    --ds-radius-input: var(--ds-radius-md);
    --ds-radius-card: var(--ds-radius-lg);
    --ds-radius-modal: var(--ds-radius-xl);
    --ds-radius-badge: var(--ds-radius-full);
    --ds-radius-avatar: var(--ds-radius-full);
}


/* === Imported from: ./tokens/shadows.css === */

/**
 * Design System OptiGest360
 * Tokens: Shadows
 *
 * Système d'ombres pour profondeur et hiérarchie
 */

:root {
    /* ============================================
       BOX SHADOWS (Élévation)
       ============================================ */
    --ds-shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.05);

    --ds-shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1),
                    0 1px 2px 0 rgba(0, 0, 0, 0.06);

    --ds-shadow-base: 0 4px 6px -1px rgba(0, 0, 0, 0.1),
                      0 2px 4px -1px rgba(0, 0, 0, 0.06);

    --ds-shadow-md: 0 10px 15px -3px rgba(0, 0, 0, 0.1),
                    0 4px 6px -2px rgba(0, 0, 0, 0.05);

    --ds-shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.1),
                    0 10px 10px -5px rgba(0, 0, 0, 0.04);

    --ds-shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);

    --ds-shadow-2xl: 0 35px 60px -15px rgba(0, 0, 0, 0.3);

    /* Inner shadow */
    --ds-shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06);

    /* No shadow */
    --ds-shadow-none: none;

    /* ============================================
       FOCUS RING
       ============================================ */
    --ds-focus-ring: 0 0 0 3px rgba(6, 53, 44, 0.1);
    --ds-focus-ring-offset: 0 0 0 2px var(--ds-white);

    /* ============================================
       SEMANTIC SHADOWS (Composants)
       ============================================ */
    --ds-shadow-button: var(--ds-shadow-xs);
    --ds-shadow-button-hover: var(--ds-shadow-sm);

    --ds-shadow-card: var(--ds-shadow-sm);
    --ds-shadow-card-hover: var(--ds-shadow-md);

    --ds-shadow-dropdown: var(--ds-shadow-lg);
    --ds-shadow-modal: var(--ds-shadow-xl);
    --ds-shadow-toast: var(--ds-shadow-lg);

    /* ============================================
       TEXT SHADOWS (Rarement utilisé)
       ============================================ */
    --ds-text-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
    --ds-text-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}


/* === Imported from: ./tokens/transitions.css === */

/**
 * Design System OptiGest360
 * Tokens: Transitions & Animations
 *
 * Système de transitions pour interactions fluides
 */

:root {
    /* ============================================
       TIMING FUNCTIONS (Easing)
       ============================================ */
    --ds-ease-linear: linear;
    --ds-ease-in: cubic-bezier(0.4, 0, 1, 1);
    --ds-ease-out: cubic-bezier(0, 0, 0.2, 1);
    --ds-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);

    /* Easings avancés */
    --ds-ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
    --ds-ease-smooth: cubic-bezier(0.25, 0.1, 0.25, 1);

    /* ============================================
       DURATIONS
       ============================================ */
    --ds-duration-instant: 0ms;
    --ds-duration-fast: 150ms;
    --ds-duration-base: 200ms;
    --ds-duration-slow: 300ms;
    --ds-duration-slower: 500ms;

    /* ============================================
       TRANSITIONS COMPLÈTES
       ============================================ */
    --ds-transition-fast: all var(--ds-duration-fast) var(--ds-ease-out);
    --ds-transition-base: all var(--ds-duration-base) var(--ds-ease-out);
    --ds-transition-slow: all var(--ds-duration-slow) var(--ds-ease-out);

    /* Transitions spécifiques propriétés */
    --ds-transition-color: color var(--ds-duration-base) var(--ds-ease-out);
    --ds-transition-bg: background-color var(--ds-duration-base) var(--ds-ease-out);
    --ds-transition-border: border-color var(--ds-duration-base) var(--ds-ease-out);
    --ds-transition-shadow: box-shadow var(--ds-duration-base) var(--ds-ease-out);
    --ds-transition-transform: transform var(--ds-duration-base) var(--ds-ease-out);
    --ds-transition-opacity: opacity var(--ds-duration-base) var(--ds-ease-out);

    /* ============================================
       ANIMATIONS
       ============================================ */
    --ds-animation-spin: spin 1s linear infinite;
    --ds-animation-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
    --ds-animation-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
    --ds-animation-bounce: bounce 1s infinite;
}

/* ============================================
   KEYFRAMES
   ============================================ */

@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

@keyframes ping {
    75%, 100% {
        transform: scale(2);
        opacity: 0;
    }
}

@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

@keyframes bounce {
    0%, 100% {
        transform: translateY(-25%);
        animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
    }
    50% {
        transform: translateY(0);
        animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
    }
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes fadeOut {
    from { opacity: 1; }
    to { opacity: 0; }
}

@keyframes slideInUp {
    from {
        transform: translateY(100%);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

@keyframes slideInDown {
    from {
        transform: translateY(-100%);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

@keyframes scaleIn {
    from {
        transform: scale(0.95);
        opacity: 0;
    }
    to {
        transform: scale(1);
        opacity: 1;
    }
}


/* === Imported from: ./tokens/breakpoints.css === */

/**
 * Design System OptiGest360
 * Tokens: Breakpoints
 *
 * Système de breakpoints responsive
 * Mobile-first approach
 */

:root {
    /* ============================================
       BREAKPOINTS (px values for reference)
       ============================================ */
    --ds-screen-xs: 475px;    /* Extra small devices */
    --ds-screen-sm: 640px;    /* Small devices (phones) */
    --ds-screen-md: 768px;    /* Medium devices (tablets) */
    --ds-screen-lg: 1024px;   /* Large devices (desktops) */
    --ds-screen-xl: 1280px;   /* Extra large devices */
    --ds-screen-2xl: 1536px;  /* 2XL devices */

    /* ============================================
       CONTAINER MAX WIDTHS
       ============================================ */
    --ds-container-sm: 640px;
    --ds-container-md: 768px;
    --ds-container-lg: 1024px;
    --ds-container-xl: 1280px;
    --ds-container-2xl: 1536px;
}

/* ============================================
   MEDIA QUERIES (Mobile-first)
   ============================================ */

/* Usage dans les composants:
   @media (min-width: 640px) { ... } // sm and up
   @media (min-width: 768px) { ... } // md and up
   @media (min-width: 1024px) { ... } // lg and up
*/

/*
   Breakpoints Strategy:

   Mobile (default)    : < 640px
   Tablet (sm)        : >= 640px
   Tablet L (md)      : >= 768px
   Desktop (lg)       : >= 1024px
   Desktop L (xl)     : >= 1280px
   Wide (2xl)         : >= 1536px
*/



/* === Imported from: ./primitives/index.css === */

/**
 * Design System OptiGest360
 * Primitives: Index
 */


/* === Imported from: ./primitives/button.css === */

/**
 * Design System OptiGest360
 * Primitive: Button
 *
 * Composant bouton avec toutes ses variantes
 * Usage: <button class="ds-btn ds-btn--primary">Label</button>
 */

/* ============================================
   BASE BUTTON
   ============================================ */

.ds-btn {
    /* Reset */
    all: unset;
    box-sizing: border-box;

    /* Layout */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.375rem;

    /* Sizing */
    padding: 0.5rem 1rem;
    min-height: 36px;

    /* Typography */
    font-family: var(--ds-font-family);
    font-size: 0.8rem;
    font-weight: 500;
    line-height: 1.4;
    text-align: center;
    white-space: nowrap;
    letter-spacing: -0.005em;

    /* Visual */
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-button);
    color: var(--ds-text-primary);

    /* Interaction */
    cursor: pointer;
    user-select: none;
    transition: var(--ds-transition-base);

    /* Shadow */
    box-shadow: var(--ds-shadow-button);
}

.ds-btn:hover {
    background-color: var(--ds-gray-50);
    border-color: var(--ds-border-strong);
    box-shadow: var(--ds-shadow-button-hover);
}

.ds-btn:active {
    transform: translateY(1px);
    box-shadow: var(--ds-shadow-xs);
}

.ds-btn:focus-visible {
    outline: none;
    box-shadow: var(--ds-focus-ring);
}

.ds-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    pointer-events: none;
}

/* ============================================
   BUTTON VARIANTS (Colors)
   ============================================ */

/* Primary */
.ds-btn--primary {
    background-color: var(--ds-primary);
    border-color: var(--ds-primary);
    color: var(--ds-white);
}

.ds-btn--primary:hover {
    background-color: var(--ds-primary-hover);
    border-color: var(--ds-primary-hover);
}

/* Secondary (gray outline) */
.ds-btn--secondary {
    background-color: var(--ds-white);
    border-color: var(--ds-gray-300);
    color: var(--ds-text-primary);
}

.ds-btn--secondary:hover {
    background-color: var(--ds-gray-50);
    border-color: var(--ds-gray-400);
}

/* Success */
.ds-btn--success {
    background-color: var(--ds-success);
    border-color: var(--ds-success);
    color: var(--ds-white);
}

.ds-btn--success:hover {
    background-color: var(--ds-success-hover);
    border-color: var(--ds-success-hover);
}

/* Warning */
.ds-btn--warning {
    background-color: var(--ds-warning);
    border-color: var(--ds-warning);
    color: var(--ds-white);
}

.ds-btn--warning:hover {
    background-color: var(--ds-warning-hover);
    border-color: var(--ds-warning-hover);
}

/* Danger */
.ds-btn--danger {
    background-color: transparent;
    border-color: var(--ds-danger);
    color: var(--ds-danger);
}

.ds-btn--danger:hover {
    background-color: var(--ds-danger);
    border-color: var(--ds-danger);
    color: var(--ds-white);
}

/* Info */
.ds-btn--info {
    background-color: var(--ds-info);
    border-color: var(--ds-info);
    color: var(--ds-white);
}

.ds-btn--info:hover {
    background-color: var(--ds-info-hover);
    border-color: var(--ds-info-hover);
}

/* Ghost (transparent) */
.ds-btn--ghost {
    background-color: transparent;
    border-color: transparent;
    color: var(--ds-text-secondary);
    box-shadow: none;
}

.ds-btn--ghost:hover {
    background-color: var(--ds-gray-100);
    border-color: transparent;
    color: var(--ds-text-primary);
}

/* Link style */
.ds-btn--link {
    background-color: transparent;
    border-color: transparent;
    color: var(--ds-primary);
    box-shadow: none;
    padding: 0;
    min-height: auto;
}

.ds-btn--link:hover {
    background-color: transparent;
    border-color: transparent;
    color: var(--ds-primary-hover);
    text-decoration: underline;
}

/* ============================================
   BUTTON SIZES
   ============================================ */

/* Small */
.ds-btn--sm {
    padding: var(--ds-space-2) var(--ds-space-3);
    min-height: 32px;
    font-size: var(--ds-text-xs);
}

/* Large */
.ds-btn--lg {
    padding: var(--ds-space-4) var(--ds-space-6);
    min-height: 48px;
    font-size: var(--ds-text-base);
}

/* Full width */
.ds-btn--block {
    width: 100%;
}

/* ============================================
   BUTTON WITH ICON
   ============================================ */

.ds-btn__icon {
    display: inline-flex;
    flex-shrink: 0;
}

.ds-btn__icon--left {
    margin-right: var(--ds-space-2);
    margin-left: calc(var(--ds-space-1) * -1);
}

.ds-btn__icon--right {
    margin-left: var(--ds-space-2);
    margin-right: calc(var(--ds-space-1) * -1);
}

/* Icon only button */
.ds-btn--icon-only {
    padding: var(--ds-space-3);
    min-width: 40px;
}

.ds-btn--icon-only.ds-btn--sm {
    padding: var(--ds-space-2);
    min-width: 32px;
}

.ds-btn--icon-only.ds-btn--lg {
    padding: var(--ds-space-4);
    min-width: 48px;
}

/* ============================================
   BUTTON GROUPS
   ============================================ */

.ds-btn-group {
    display: inline-flex;
    gap: 0;
}

.ds-btn-group .ds-btn {
    border-radius: 0;
}

.ds-btn-group .ds-btn:first-child {
    border-top-left-radius: var(--ds-radius-button);
    border-bottom-left-radius: var(--ds-radius-button);
}

.ds-btn-group .ds-btn:last-child {
    border-top-right-radius: var(--ds-radius-button);
    border-bottom-right-radius: var(--ds-radius-button);
}

.ds-btn-group .ds-btn:not(:first-child) {
    border-left-width: 0;
}

.ds-btn-group .ds-btn:hover {
    z-index: 1;
}

/* ============================================
   LOADING STATE
   ============================================ */

.ds-btn--loading {
    position: relative;
    color: transparent;
    pointer-events: none;
}

.ds-btn--loading::after {
    content: '';
    position: absolute;
    width: 16px;
    height: 16px;
    top: 50%;
    left: 50%;
    margin-left: -8px;
    margin-top: -8px;
    border: 2px solid currentColor;
    border-radius: 50%;
    border-top-color: transparent;
    animation: var(--ds-animation-spin);
}

/* ============================================
   RESPONSIVE
   ============================================ */

@media (max-width: 640px) {
    .ds-btn--sm-block {
        width: 100%;
    }
}


/* === Imported from: ./primitives/link.css === */

/**
 * Design System OptiGest360
 * Primitive: Link
 *
 * Styles pour les liens de navigation et d'action
 */

/* ============================================
   BASE LINK
   ============================================ */

.ds-link {
    color: var(--ds-primary);
    text-decoration: none;
    font-weight: var(--ds-font-medium);
    font-size: var(--ds-text-sm);
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-2);
    transition: var(--ds-transition-base);
    cursor: pointer;
}

.ds-link:hover {
    color: var(--ds-primary-dark);
    text-decoration: underline;
}

.ds-link:active {
    color: var(--ds-primary-darker);
}

.ds-link:focus {
    outline: 2px solid var(--ds-primary-light);
    outline-offset: 2px;
    border-radius: var(--ds-radius-sm);
}

/* Link avec icône */
.ds-link i {
    font-size: 0.875em;
    transition: transform 0.2s ease;
}

.ds-link:hover i {
    transform: translateX(2px);
}

/* ============================================
   LINK VARIANTS
   ============================================ */

/* Link avec icône à gauche */
.ds-link--icon-left {
    flex-direction: row-reverse;
}

.ds-link--icon-left:hover i {
    transform: translateX(-2px);
}

/* Link subtle (moins prononcé) */
.ds-link--subtle {
    color: var(--ds-text-secondary);
    font-weight: var(--ds-font-normal);
}

.ds-link--subtle:hover {
    color: var(--ds-primary);
}

/* Link danger */
.ds-link--danger {
    color: var(--ds-danger);
}

.ds-link--danger:hover {
    color: var(--ds-danger-dark);
}

/* Link success */
.ds-link--success {
    color: var(--ds-success);
}

.ds-link--success:hover {
    color: var(--ds-success-dark);
}

/* Link muted (désactivé visuellement mais cliquable) */
.ds-link--muted {
    color: var(--ds-text-tertiary);
    cursor: default;
}

.ds-link--muted:hover {
    color: var(--ds-text-tertiary);
    text-decoration: none;
}

/* ============================================
   LINK SIZES
   ============================================ */

.ds-link--xs {
    font-size: var(--ds-text-xs);
}

.ds-link--sm {
    font-size: var(--ds-text-sm);
}

.ds-link--base {
    font-size: var(--ds-text-base);
}

.ds-link--lg {
    font-size: var(--ds-text-lg);
}

/* ============================================
   CARD LINK (lien dans header de carte)
   ============================================ */

.ds-card__link {
    color: var(--ds-primary);
    text-decoration: none;
    font-weight: var(--ds-font-medium);
    font-size: var(--ds-text-sm);
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-2);
    transition: var(--ds-transition-base);
}

.ds-card__link:hover {
    color: var(--ds-primary-dark);
}

.ds-card__link i {
    font-size: 0.875em;
    transition: transform 0.2s ease;
}

.ds-card__link:hover i {
    transform: translateX(2px);
}

/* ============================================
   BREADCRUMB LINKS
   ============================================ */

.ds-breadcrumb-link {
    color: var(--ds-text-secondary);
    text-decoration: none;
    font-size: var(--ds-text-sm);
    transition: var(--ds-transition-base);
}

.ds-breadcrumb-link:hover {
    color: var(--ds-primary);
}

.ds-breadcrumb-link::after {
    content: '/';
    margin: 0 var(--ds-space-2);
    color: var(--ds-text-tertiary);
}

.ds-breadcrumb-link:last-child::after {
    content: '';
}

/* ============================================
   UNDERLINE LINK (lien souligné permanent)
   ============================================ */

.ds-link--underline {
    text-decoration: underline;
}

.ds-link--underline:hover {
    text-decoration: none;
}

/* ============================================
   EXTERNAL LINK (lien externe avec icône)
   ============================================ */

.ds-link--external::after {
    content: '\f35d'; /* fa-external-link-alt */
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    font-size: 0.75em;
    margin-left: var(--ds-space-1);
}

/* ============================================
   DISABLED STATE
   ============================================ */

.ds-link[disabled],
.ds-link.disabled {
    color: var(--ds-text-disabled);
    cursor: not-allowed;
    pointer-events: none;
    opacity: 0.5;
}

/* ============================================
   LINK GROUPS
   ============================================ */

.ds-link-group {
    display: flex;
    gap: var(--ds-space-4);
    align-items: center;
}

.ds-link-group--vertical {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--ds-space-2);
}

/* ============================================
   ACTION LINK (lien d'action avec background)
   ============================================ */

.ds-action-link {
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-2);
    padding: var(--ds-space-2) var(--ds-space-4);
    border-radius: var(--ds-radius);
    color: var(--ds-primary);
    text-decoration: none;
    font-weight: var(--ds-font-medium);
    font-size: var(--ds-text-sm);
    background-color: var(--ds-primary-light);
    transition: var(--ds-transition-base);
}

.ds-action-link:hover {
    background-color: var(--ds-primary);
    color: var(--ds-white);
}

.ds-action-link i {
    font-size: 1em;
}

/* ============================================
   NAVIGATION LINK (pour sidebars, menus)
   ============================================ */

.ds-nav-link {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
    padding: var(--ds-space-3) var(--ds-space-4);
    color: var(--ds-text-secondary);
    text-decoration: none;
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    border-radius: var(--ds-radius);
    transition: var(--ds-transition-base);
}

.ds-nav-link:hover {
    background-color: var(--ds-bg-secondary);
    color: var(--ds-text-primary);
}

.ds-nav-link.active {
    background-color: var(--ds-primary-light);
    color: var(--ds-primary);
}

.ds-nav-link i {
    font-size: 1.125em;
    width: 20px;
    text-align: center;
}

/* ============================================
   COMPATIBILITY
   ============================================ */

/* Alias pour card-link (ancien nom) */
.card-link {
    color: var(--ds-primary);
    text-decoration: none;
    font-weight: var(--ds-font-medium);
    font-size: var(--ds-text-sm);
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-2);
    transition: var(--ds-transition-base);
}

.card-link:hover {
    color: var(--ds-primary-dark);
}

.card-link i {
    font-size: 0.875em;
    transition: transform 0.2s ease;
}

.card-link:hover i {
    transform: translateX(2px);
}


/* === Imported from: ./primitives/input.css === */

/**
 * Design System OptiGest360
 * Primitive: Input
 *
 * Champs de saisie texte
 * Usage: <input class="ds-input" type="text">
 */

/* ============================================
   BASE INPUT
   ============================================ */

.ds-input {
    /* Reset */
    all: unset;
    box-sizing: border-box;

    /* Layout */
    display: block;
    width: 100%;

    /* Sizing */
    padding: var(--ds-space-3) var(--ds-space-4);
    min-height: 40px;

    /* Typography */
    font-family: var(--ds-font-family);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-normal);
    line-height: var(--ds-leading-normal);
    color: var(--ds-text-primary);

    /* Visual */
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-input);

    /* Interaction */
    transition: var(--ds-transition-border), var(--ds-transition-shadow);
}

.ds-input::placeholder {
    color: var(--ds-text-muted);
}

.ds-input:hover {
    border-color: var(--ds-border-strong);
}

.ds-input:focus {
    outline: none;
    border-color: var(--ds-primary);
    box-shadow: var(--ds-focus-ring);
}

.ds-input:disabled {
    background-color: var(--ds-bg-secondary);
    color: var(--ds-text-disabled);
    cursor: not-allowed;
    opacity: 0.6;
}

.ds-input:read-only {
    background-color: var(--ds-bg-secondary);
    cursor: default;
}

/* ============================================
   INPUT STATES
   ============================================ */

/* Error */
.ds-input--error {
    border-color: var(--ds-danger);
}

.ds-input--error:focus {
    border-color: var(--ds-danger);
    box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
}

/* Success */
.ds-input--success {
    border-color: var(--ds-success);
}

.ds-input--success:focus {
    border-color: var(--ds-success);
    box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.1);
}

/* ============================================
   INPUT SIZES
   ============================================ */

/* Small */
.ds-input--sm {
    padding: var(--ds-space-2) var(--ds-space-3);
    min-height: 32px;
    font-size: var(--ds-text-xs);
}

/* Large */
.ds-input--lg {
    padding: var(--ds-space-4) var(--ds-space-5);
    min-height: 48px;
    font-size: var(--ds-text-base);
}

/* ============================================
   INPUT GROUP (avec icons/addons)
   ============================================ */

.ds-input-group {
    position: relative;
    display: flex;
    width: 100%;
}

.ds-input-group .ds-input {
    flex: 1;
}

/* Icon left */
.ds-input-group--icon-left .ds-input {
    padding-left: var(--ds-space-10);
}

.ds-input-group__icon-left {
    position: absolute;
    left: var(--ds-space-3);
    top: 50%;
    transform: translateY(-50%);
    color: var(--ds-text-secondary);
    pointer-events: none;
}

/* Icon right */
.ds-input-group--icon-right .ds-input {
    padding-right: var(--ds-space-10);
}

.ds-input-group__icon-right {
    position: absolute;
    right: var(--ds-space-3);
    top: 50%;
    transform: translateY(-50%);
    color: var(--ds-text-secondary);
    pointer-events: none;
}

/* Addon (button/text à droite ou gauche) */
.ds-input-group__addon {
    display: inline-flex;
    align-items: center;
    padding: var(--ds-space-3) var(--ds-space-4);
    background-color: var(--ds-bg-secondary);
    border: 1px solid var(--ds-border-default);
    color: var(--ds-text-secondary);
    font-size: var(--ds-text-sm);
    white-space: nowrap;
}

.ds-input-group__addon:first-child {
    border-right: 0;
    border-top-left-radius: var(--ds-radius-input);
    border-bottom-left-radius: var(--ds-radius-input);
}

.ds-input-group__addon:first-child + .ds-input {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.ds-input-group__addon:last-child {
    border-left: 0;
    border-top-right-radius: var(--ds-radius-input);
    border-bottom-right-radius: var(--ds-radius-input);
}

.ds-input-group .ds-input:last-child {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

/* ============================================
   FORM FIELD (Label + Input + Helper)
   ============================================ */

.ds-form-field {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-2);
}

.ds-form-label {
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-primary);
}

.ds-form-label--required::after {
    content: '*';
    color: var(--ds-danger);
    margin-left: var(--ds-space-1);
}

.ds-form-helper {
    font-size: var(--ds-text-xs);
    color: var(--ds-text-secondary);
}

.ds-form-error {
    font-size: var(--ds-text-xs);
    color: var(--ds-danger);
    display: flex;
    align-items: center;
    gap: var(--ds-space-1);
}

.ds-form-success {
    font-size: var(--ds-text-xs);
    color: var(--ds-success);
    display: flex;
    align-items: center;
    gap: var(--ds-space-1);
}


/* === Imported from: ./primitives/select.css === */

/**
 * Design System OptiGest360
 * Primitive: Select
 */

.ds-select {
    all: unset;
    box-sizing: border-box;
    display: block;
    width: 100%;
    padding: var(--ds-space-3) var(--ds-space-10) var(--ds-space-3) var(--ds-space-4);
    min-height: 40px;
    font-family: var(--ds-font-family);
    font-size: var(--ds-text-sm);
    line-height: var(--ds-leading-normal);
    color: var(--ds-text-primary);
    background-color: var(--ds-white);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3E%3C/svg%3E");
    background-position: right var(--ds-space-3) center;
    background-repeat: no-repeat;
    background-size: 1.25rem;
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-input);
    cursor: pointer;
    transition: var(--ds-transition-border);
}

.ds-select:hover {
    border-color: var(--ds-border-strong);
}

.ds-select:focus {
    outline: none;
    border-color: var(--ds-primary);
    box-shadow: var(--ds-focus-ring);
}

.ds-select:disabled {
    background-color: var(--ds-bg-secondary);
    cursor: not-allowed;
    opacity: 0.6;
}

.ds-select--sm {
    padding: var(--ds-space-2) var(--ds-space-8) var(--ds-space-2) var(--ds-space-3);
    min-height: 32px;
    font-size: var(--ds-text-xs);
}

.ds-select--lg {
    padding: var(--ds-space-4) var(--ds-space-12) var(--ds-space-4) var(--ds-space-5);
    min-height: 48px;
    font-size: var(--ds-text-base);
}

.ds-select--error {
    border-color: var(--ds-danger);
}

.ds-select--error:focus {
    box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
}


/* === Imported from: ./primitives/textarea.css === */

/**
 * Design System OptiGest360
 * Primitive: Textarea
 */

.ds-textarea {
    all: unset;
    box-sizing: border-box;
    display: block;
    width: 100%;
    padding: var(--ds-space-3) var(--ds-space-4);
    min-height: 80px;
    font-family: var(--ds-font-family);
    font-size: var(--ds-text-sm);
    line-height: var(--ds-leading-normal);
    color: var(--ds-text-primary);
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-input);
    resize: vertical;
    transition: var(--ds-transition-border);
}

.ds-textarea::placeholder {
    color: var(--ds-text-muted);
}

.ds-textarea:hover {
    border-color: var(--ds-border-strong);
}

.ds-textarea:focus {
    outline: none;
    border-color: var(--ds-primary);
    box-shadow: var(--ds-focus-ring);
}

.ds-textarea:disabled {
    background-color: var(--ds-bg-secondary);
    cursor: not-allowed;
    opacity: 0.6;
}

.ds-textarea--error {
    border-color: var(--ds-danger);
}

.ds-textarea--error:focus {
    box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
}

.ds-textarea--sm {
    min-height: 60px;
    font-size: var(--ds-text-xs);
}

.ds-textarea--lg {
    min-height: 120px;
    font-size: var(--ds-text-base);
}


/* === Imported from: ./primitives/checkbox.css === */

/**
 * Design System OptiGest360
 * Primitive: Checkbox
 */

.ds-checkbox {
    all: unset;
    appearance: none;
    display: inline-block;
    width: 18px;
    height: 18px;
    border: 2px solid var(--ds-border-default);
    border-radius: var(--ds-radius-sm);
    background-color: var(--ds-white);
    cursor: pointer;
    transition: var(--ds-transition-base);
    flex-shrink: 0;
}

.ds-checkbox:hover {
    border-color: var(--ds-primary);
}

.ds-checkbox:checked {
    background-color: var(--ds-primary);
    border-color: var(--ds-primary);
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3E%3C/svg%3E");
}

.ds-checkbox:focus-visible {
    box-shadow: var(--ds-focus-ring);
}

.ds-checkbox:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.ds-checkbox-label {
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-2);
    cursor: pointer;
    font-size: var(--ds-text-sm);
    color: var(--ds-text-primary);
}


/* === Imported from: ./primitives/radio.css === */

/**
 * Design System OptiGest360
 * Primitive: Radio
 */

.ds-radio {
    all: unset;
    appearance: none;
    display: inline-block;
    width: 18px;
    height: 18px;
    border: 2px solid var(--ds-border-default);
    border-radius: 50%;
    background-color: var(--ds-white);
    cursor: pointer;
    transition: var(--ds-transition-base);
    flex-shrink: 0;
}

.ds-radio:hover {
    border-color: var(--ds-primary);
}

.ds-radio:checked {
    border-color: var(--ds-primary);
    background-color: var(--ds-white);
    box-shadow: inset 0 0 0 4px var(--ds-primary);
}

.ds-radio:focus-visible {
    box-shadow: var(--ds-focus-ring);
}

.ds-radio:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.ds-radio-label {
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-2);
    cursor: pointer;
    font-size: var(--ds-text-sm);
    color: var(--ds-text-primary);
}



/* ============================================
   COMPONENTS
   ============================================ */


/* === Imported from: ./components/index.css === */

/**
 * Design System OptiGest360
 * Components: Index
 */


/* === Imported from: ./components/card.css === */

/**
 * Design System OptiGest360
 * Component: Card
 *
 * Composant carte - LE composant le plus réutilisé dans un ERP
 * Structure: card > card-header + card-body + card-footer
 */

/* ============================================
   BASE CARD
   ============================================ */

.ds-card {
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-subtle, #f3f4f6);
    border-radius: 12px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
    overflow: hidden;
}

.ds-card:hover {
    box-shadow: var(--ds-shadow-card-hover);
}

/* ============================================
   CARD PARTS
   ============================================ */

.ds-card-header {
    padding: var(--ds-space-6);
    border-bottom: 1px solid var(--ds-border-default);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--ds-space-4);
}

.ds-card-body {
    padding: var(--ds-space-6);
}

.ds-card-footer {
    padding: var(--ds-space-6);
    background-color: var(--ds-bg-secondary);
    border-top: 1px solid var(--ds-border-default);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--ds-space-4);
}

/* ============================================
   CARD TITLE & SUBTITLE
   ============================================ */

.ds-card-title {
    font-size: var(--ds-text-lg);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin: 0;
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.ds-card-subtitle {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    margin: var(--ds-space-2) 0 0 0;
}

/* ============================================
   CARD VARIANTS
   ============================================ */

/* Card sans ombre */
.ds-card--flat {
    box-shadow: none;
}

/* Card sans bordure */
.ds-card--borderless {
    border: none;
}

/* Card clickable */
.ds-card--clickable {
    cursor: pointer;
    transition: var(--ds-transition-base);
}

.ds-card--clickable:hover {
    border-color: var(--ds-primary);
    transform: translateY(-2px);
}

/* Card avec accent coloré */
.ds-card--accent-top {
    border-top: 4px solid var(--ds-primary);
}

.ds-card--accent-left {
    border-left: 4px solid var(--ds-primary);
}

.ds-card--accent-top.ds-card--success {
    border-top-color: var(--ds-success);
}

.ds-card--accent-top.ds-card--warning {
    border-top-color: var(--ds-warning);
}

.ds-card--accent-top.ds-card--danger {
    border-top-color: var(--ds-danger);
}

/* ============================================
   CARD SIZES
   ============================================ */

.ds-card--sm .ds-card-header,
.ds-card--sm .ds-card-body,
.ds-card--sm .ds-card-footer {
    padding: var(--ds-space-4);
}

.ds-card--lg .ds-card-header,
.ds-card--lg .ds-card-body,
.ds-card--lg .ds-card-footer {
    padding: var(--ds-space-8);
}

/* ============================================
   CARD GRID (Container pour plusieurs cards)
   ============================================ */

.ds-card-grid {
    display: grid;
    gap: var(--ds-space-6);
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
}

.ds-card-grid--2 {
    grid-template-columns: repeat(2, 1fr);
}

.ds-card-grid--3 {
    grid-template-columns: repeat(3, 1fr);
}

.ds-card-grid--4 {
    grid-template-columns: repeat(4, 1fr);
}

@media (max-width: 1024px) {
    .ds-card-grid--3,
    .ds-card-grid--4 {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 640px) {
    .ds-card-grid,
    .ds-card-grid--2,
    .ds-card-grid--3,
    .ds-card-grid--4 {
        grid-template-columns: 1fr;
    }
}

/* ============================================
   GRID LAYOUT UTILITIES
   ============================================ */
.ds-grid { display: grid !important; }
.ds-grid-cols-1 { grid-template-columns: repeat(1, 1fr) !important; }
.ds-grid-cols-2 { grid-template-columns: repeat(2, 1fr) !important; }
.ds-grid-cols-3 { grid-template-columns: repeat(3, 1fr) !important; }
.ds-grid-cols-4 { grid-template-columns: repeat(4, 1fr) !important; }
.ds-grid-cols-5 { grid-template-columns: repeat(5, 1fr) !important; }

/* Detail layout: 2/3 main + 1/3 sidebar */
.ds-detail-layout {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: var(--ds-space-6);
}
.ds-detail-layout__main { min-width: 0; }
.ds-detail-layout__sidebar { min-width: 0; }

@media (max-width: 1024px) {
    .ds-grid-cols-3,
    .ds-grid-cols-4,
    .ds-grid-cols-5 {
        grid-template-columns: repeat(2, 1fr) !important;
    }
    .ds-detail-layout {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 640px) {
    .ds-grid-cols-2,
    .ds-grid-cols-3,
    .ds-grid-cols-4,
    .ds-grid-cols-5 {
        grid-template-columns: 1fr !important;
    }
}

/* Column spans */
.ds-col-span-1 { grid-column: span 1 !important; }
.ds-col-span-2 { grid-column: span 2 !important; }
.ds-col-span-3 { grid-column: span 3 !important; }
.ds-col-span-full { grid-column: 1 / -1 !important; }

/* Form grid */
.ds-form-grid { display: grid; gap: var(--ds-space-4); }
.ds-form-grid--2-cols { grid-template-columns: repeat(2, 1fr); }
.ds-form-grid--3-cols { grid-template-columns: repeat(3, 1fr); }

@media (max-width: 640px) {
    .ds-form-grid--2-cols,
    .ds-form-grid--3-cols {
        grid-template-columns: 1fr;
    }
}

/* ============================================
   BEM NOTATION ALIASES (double underscore)
   ============================================ */

/* Aliases pour compatibilité avec notation BEM */
.ds-card__header {
    padding: var(--ds-space-6);
    border-bottom: 1px solid var(--ds-border-default);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--ds-space-4);
}

.ds-card__body {
    padding: var(--ds-space-6);
}

.ds-card__footer {
    padding: var(--ds-space-6);
    background-color: var(--ds-bg-secondary);
    border-top: 1px solid var(--ds-border-default);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--ds-space-4);
}

.ds-card__title {
    font-size: var(--ds-text-lg);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin: 0;
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.ds-card__subtitle {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    margin: var(--ds-space-2) 0 0 0;
}


/* === Imported from: ./components/stat-card.css === */

/**
 * Design System OptiGest360
 * Component: StatCard
 *
 * LE composant statistique UNIFIÉ pour tout l'ERP
 * Remplace: stat-card, kpi-card, quick-stat, finance-kpi, etc.
 *
 * Usage:
 * <div class="ds-stat">
 *   <div class="ds-stat__icon"><i class="fas fa-icon"></i></div>
 *   <div class="ds-stat__value">125M</div>
 *   <div class="ds-stat__label">Chiffre d'Affaires</div>
 * </div>
 */

/* ============================================
   BASE STAT CARD
   ============================================ */

.ds-stat {
    display: flex;
    align-items: center;
    gap: 1rem;
    background-color: var(--ds-card-bg, var(--ds-white));
    border: 1px solid var(--ds-border-default);
    border-radius: 14px;
    padding: 1.1rem 1.25rem;
    margin-top: 1.25rem;
    text-align: left;
    transition: transform 0.2s ease, box-shadow 0.25s ease, border-color 0.2s ease;
    flex: 1 1 220px;
    min-width: 0;
}

/* Layout vertical (icône en haut) quand la stat est en grille serrée
   ou contient des valeurs monétaires longues */
.ds-stat-grid--4 .ds-stat,
.ds-stat--vertical {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.75rem;
}

.ds-stat:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 28px -14px rgba(6, 53, 44, 0.25);
    border-color: rgba(165, 149, 110, 0.35);
}

.ds-stat > div:not([class*="ds-stat__icon"]) { flex: 1; min-width: 0; }

/* ============================================
   STAT PARTS
   ============================================ */

.ds-stat__icon {
    width: 44px;
    height: 44px;
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: rgba(6, 53, 44, 0.06);
    border-radius: 12px;
    font-size: 1.1rem;
    color: #06352c;
    flex-shrink: 0;
    box-shadow: inset 0 0 0 1px rgba(6, 53, 44, 0.08);
}

.ds-stat__value {
    font-size: 1.45rem;
    font-weight: 700;
    font-family: var(--ds-font-mono);
    color: var(--ds-text-primary);
    line-height: 1.15;
    letter-spacing: -0.01em;
    margin-top: 0.2rem;
    font-variant-numeric: tabular-nums;
    /* Garder les nombres formatés "177 000 FCFA" sur une seule ligne ;
       en cas de débordement, réduire au lieu de casser au milieu */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

@container (max-width: 200px) {
    .ds-stat__value { font-size: 1.15rem; }
}

.ds-stat__label {
    font-size: 0.7rem;
    color: var(--ds-text-secondary);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ds-stat__icon--primary   { background-color: rgba(6,53,44,0.08);     color: #06352c; box-shadow: inset 0 0 0 1px rgba(6,53,44,0.15); }
.ds-stat__icon--success   { background-color: rgba(22,163,74,0.10);   color: #15803d; box-shadow: inset 0 0 0 1px rgba(22,163,74,0.18); }
.ds-stat__icon--warning   { background-color: rgba(165,149,110,0.14); color: #8a7b57; box-shadow: inset 0 0 0 1px rgba(165,149,110,0.25); }
.ds-stat__icon--danger    { background-color: rgba(185,28,28,0.08);   color: #b91c1c; box-shadow: inset 0 0 0 1px rgba(185,28,28,0.18); }
.ds-stat__icon--info      { background-color: rgba(29,78,216,0.08);   color: #1d4ed8; box-shadow: inset 0 0 0 1px rgba(29,78,216,0.18); }
.ds-stat__icon--secondary { background-color: rgba(107,114,128,0.10); color: #4b5563; box-shadow: inset 0 0 0 1px rgba(107,114,128,0.18); }

[data-theme="dark"] .ds-stat { background-color: var(--ds-card-bg); border-color: var(--ds-border-default); }
[data-theme="dark"] .ds-stat:hover { border-color: rgba(165, 149, 110, 0.5); box-shadow: 0 10px 28px -14px rgba(0,0,0,0.55); }
[data-theme="dark"] .ds-stat__icon { background-color: rgba(165, 149, 110, 0.12); color: #a5956e; box-shadow: inset 0 0 0 1px rgba(165, 149, 110, 0.22); }
[data-theme="dark"] .ds-stat__value { color: #e8ebe9; }
[data-theme="dark"] .ds-stat__label { color: rgba(232, 235, 233, 0.6); }
[data-theme="dark"] .ds-stat__icon--primary   { background-color: rgba(126,169,156,0.14); color: #7ea99c; box-shadow: inset 0 0 0 1px rgba(126,169,156,0.3); }
[data-theme="dark"] .ds-stat__icon--success   { background-color: rgba(74,222,128,0.12);  color: #86efac; box-shadow: inset 0 0 0 1px rgba(74,222,128,0.25); }
[data-theme="dark"] .ds-stat__icon--warning   { background-color: rgba(195,179,138,0.14); color: #c3b38a; box-shadow: inset 0 0 0 1px rgba(195,179,138,0.3); }
[data-theme="dark"] .ds-stat__icon--danger    { background-color: rgba(248,113,113,0.12); color: #fca5a5; box-shadow: inset 0 0 0 1px rgba(248,113,113,0.25); }
[data-theme="dark"] .ds-stat__icon--info      { background-color: rgba(96,165,250,0.12);  color: #93c5fd; box-shadow: inset 0 0 0 1px rgba(96,165,250,0.25); }
[data-theme="dark"] .ds-stat__icon--secondary { background-color: rgba(156,163,175,0.12); color: #d1d5db; box-shadow: inset 0 0 0 1px rgba(156,163,175,0.25); }

.ds-stat__change {
    font-size: var(--ds-text-xs);
    font-weight: var(--ds-font-medium);
    margin-top: var(--ds-space-2);
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-1);
}

.ds-stat__change--positive {
    color: var(--ds-success);
}

.ds-stat__change--negative {
    color: var(--ds-danger);
}

/* ============================================
   STAT VARIANTS (avec accent coloré)
   ============================================ */

.ds-stat--primary {
    border-left: 4px solid var(--ds-primary);
}

.ds-stat--primary .ds-stat__icon {
    background-color: var(--ds-primary-light);
    color: var(--ds-primary);
}

.ds-stat--success {
    border-left: 4px solid var(--ds-success);
}

.ds-stat--success .ds-stat__icon {
    background-color: var(--ds-success-light);
    color: var(--ds-success);
}

.ds-stat--warning {
    border-left: 4px solid var(--ds-warning);
}

.ds-stat--warning .ds-stat__icon {
    background-color: var(--ds-warning-light);
    color: var(--ds-warning);
}

.ds-stat--danger {
    border-left: 4px solid var(--ds-danger);
}

.ds-stat--danger .ds-stat__icon {
    background-color: var(--ds-danger-light);
    color: var(--ds-danger);
}

.ds-stat--info {
    border-left: 4px solid var(--ds-info);
}

.ds-stat--info .ds-stat__icon {
    background-color: var(--ds-info-light);
    color: var(--ds-info);
}

/* ============================================
   STAT LAYOUT VARIANTS
   ============================================ */

/* Horizontal (icon à gauche) */
.ds-stat--horizontal {
    display: flex;
    align-items: center;
    gap: var(--ds-space-4);
    text-align: left;
}

.ds-stat--horizontal .ds-stat__icon {
    margin: 0;
    flex-shrink: 0;
}

.ds-stat--horizontal .ds-stat__content {
    flex: 1;
}

/* Compact */
.ds-stat--compact {
    padding: var(--ds-space-4);
}

.ds-stat--compact .ds-stat__icon {
    width: 40px;
    height: 40px;
    font-size: 1.25rem;
    margin-bottom: var(--ds-space-3);
}

.ds-stat--compact .ds-stat__value {
    font-size: var(--ds-text-2xl);
}

/* Large */
.ds-stat--lg {
    padding: var(--ds-space-8);
}

.ds-stat--lg .ds-stat__icon {
    width: 64px;
    height: 64px;
    font-size: 2rem;
    margin-bottom: var(--ds-space-5);
}

.ds-stat--lg .ds-stat__value {
    font-size: var(--ds-text-4xl);
}

/* ============================================
   STAT GRID (Container)
   ============================================ */

.ds-stat-grid {
    display: grid;
    gap: var(--ds-space-6);
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

.ds-stat-grid--2 {
    grid-template-columns: repeat(2, 1fr);
}

.ds-stat-grid--3 {
    grid-template-columns: repeat(3, 1fr);
}

.ds-stat-grid--4 {
    grid-template-columns: repeat(4, 1fr);
}

.ds-stat-grid--tight {
    gap: var(--ds-space-4);
}

@media (max-width: 1024px) {
    .ds-stat-grid--4 {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 640px) {
    .ds-stat-grid,
    .ds-stat-grid--2,
    .ds-stat-grid--3,
    .ds-stat-grid--4 {
        grid-template-columns: repeat(2, 1fr);
        gap: var(--ds-space-3);
    }

    .ds-stat {
        padding: var(--ds-space-3);
    }

    .ds-stat__value {
        font-size: var(--ds-text-lg);
    }

    .ds-stat__icon {
        width: 36px;
        height: 36px;
        font-size: 1rem;
    }
}

/* ============================================
   COMPATIBILITY ALIASES
   Les vues utilisent ds-stat-card au lieu de ds-stat
   ============================================ */

.ds-stat-card {
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-card);
    padding: var(--ds-space-6);
    text-align: center;
    transition: var(--ds-transition-base);
    flex: 1;
    min-width: 160px;
}

.ds-stat-card:hover {
    box-shadow: var(--ds-shadow-card);
}

/* Structure alternative avec __content wrapper */
.ds-stat-card__content {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-2);
    min-width: 0;
    flex: 1;
}

.ds-stat-card__icon {
    width: 48px;
    height: 48px;
    margin: 0 auto var(--ds-space-4);
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--ds-bg-secondary);
    border-radius: var(--ds-radius-lg);
    font-size: 1.5rem;
    color: var(--ds-text-secondary);
    flex-shrink: 0;
}

.ds-stat-card__value {
    font-size: var(--ds-text-3xl);
    font-weight: var(--ds-font-bold);
    font-family: var(--ds-font-mono);
    color: var(--ds-text-primary);
    line-height: var(--ds-leading-tight);
}

.ds-stat-card__label {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    font-weight: var(--ds-font-medium);
    margin-bottom: var(--ds-space-1);
}

.ds-stat-card__meta {
    font-size: var(--ds-text-xs);
    color: var(--ds-text-tertiary);
    margin-top: var(--ds-space-1);
}

/* Icon variants */
.ds-stat-card__icon--primary {
    background-color: var(--ds-primary-light);
    color: var(--ds-primary);
}

.ds-stat-card__icon--success {
    background-color: var(--ds-success-light);
    color: var(--ds-success);
}

.ds-stat-card__icon--warning {
    background-color: var(--ds-warning-light);
    color: var(--ds-warning);
}

.ds-stat-card__icon--danger {
    background-color: var(--ds-danger-light);
    color: var(--ds-danger);
}

.ds-stat-card__icon--info {
    background-color: var(--ds-info-light);
    color: var(--ds-info);
}

.ds-stat-card__icon--neutral {
    background-color: var(--ds-bg-secondary);
    color: var(--ds-text-secondary);
}

/* Compact variant */
.ds-stat-card--compact {
    padding: var(--ds-space-4);
}

.ds-stat-card--compact .ds-stat-card__icon {
    width: 40px;
    height: 40px;
    font-size: 1.25rem;
    margin-bottom: var(--ds-space-3);
}

.ds-stat-card--compact .ds-stat-card__value {
    font-size: var(--ds-text-2xl);
}

/* Horizontal layout */
.ds-stat-card--horizontal {
    display: flex;
    align-items: center;
    gap: var(--ds-space-4);
    text-align: left;
    padding: var(--ds-space-4) var(--ds-space-5);
}

.ds-stat-card--horizontal .ds-stat-card__icon {
    margin: 0;
}

.ds-stat-card--horizontal .ds-stat-card__content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-1);
}

.ds-stat-card--horizontal .ds-stat-card__label {
    margin-bottom: 0;
    order: 1;
}

.ds-stat-card--horizontal .ds-stat-card__value {
    order: 2;
}


/* === Imported from: ./components/badge.css === */

/**
 * Design System OptiGest360
 * Component: Badge
 */

.ds-badge {
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-1);
    padding: var(--ds-space-1) var(--ds-space-2);
    font-size: var(--ds-text-xs);
    font-weight: var(--ds-font-medium);
    line-height: 1;
    border-radius: var(--ds-radius-badge);
    background-color: var(--ds-gray-100);
    color: var(--ds-text-primary);
}

.ds-badge--primary {
    background-color: var(--ds-primary-light);
    color: var(--ds-primary);
}

.ds-badge--success {
    background-color: var(--ds-success-light);
    color: var(--ds-success);
}

.ds-badge--warning {
    background-color: var(--ds-warning-light);
    color: var(--ds-warning);
}

.ds-badge--danger {
    background-color: var(--ds-danger-light);
    color: var(--ds-danger);
}

.ds-badge--info {
    background-color: var(--ds-info-light);
    color: var(--ds-info);
}

.ds-badge--sm {
    padding: 0 var(--ds-space-1);
    font-size: 0.625rem;
}

.ds-badge--lg {
    padding: var(--ds-space-2) var(--ds-space-3);
    font-size: var(--ds-text-sm);
}


/* === Imported from: ./components/modal.css === */

/**
 * Design System OptiGest360
 * Component: Modal
 */

.ds-modal-overlay {
    position: fixed;
    inset: 0;
    background-color: var(--ds-bg-overlay, rgba(0, 0, 0, 0.5));
    display: none;
    align-items: center;
    justify-content: center;
    padding: var(--ds-space-4);
    z-index: 1000;
}

.ds-modal-overlay.active,
.ds-modal-overlay.is-active {
    display: flex;
    animation: fadeIn var(--ds-duration-fast, 150ms) var(--ds-ease-out, ease-out);
}

.ds-modal-overlay.active .ds-modal,
.ds-modal-overlay.is-active .ds-modal {
    animation: scaleIn var(--ds-duration-base, 200ms) var(--ds-ease-out, ease-out);
}

.ds-modal {
    background-color: var(--ds-white);
    border-radius: var(--ds-radius-modal);
    box-shadow: var(--ds-shadow-modal);
    width: 100%;
    max-width: 500px;
    max-height: 90vh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.ds-modal--sm {
    max-width: 400px;
}

.ds-modal--lg {
    max-width: 700px;
}

.ds-modal--xl {
    max-width: 900px;
}

.ds-modal-header {
    padding: var(--ds-space-6);
    border-bottom: 1px solid var(--ds-border-default);
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.ds-modal-title {
    font-size: var(--ds-text-lg);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin: 0;
}

.ds-modal-close {
    all: unset;
    cursor: pointer;
    padding: var(--ds-space-2);
    color: var(--ds-text-secondary);
    border-radius: var(--ds-radius-base);
    transition: var(--ds-transition-base);
}

.ds-modal-close:hover {
    background-color: var(--ds-bg-secondary);
    color: var(--ds-text-primary);
}

.ds-modal-body {
    padding: var(--ds-space-6);
    overflow-y: auto;
    flex: 1;
}

.ds-modal-footer {
    padding: var(--ds-space-6);
    border-top: 1px solid var(--ds-border-default);
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--ds-space-3);
}


/* === Imported from: ./components/alert.css === */

/**
 * Design System OptiGest360
 * Component: Alert
 */

.ds-alert {
    padding: var(--ds-space-4);
    border-radius: var(--ds-radius-md);
    border: 1px solid;
    display: flex;
    gap: var(--ds-space-3);
}

.ds-alert__icon {
    flex-shrink: 0;
}

.ds-alert__content {
    flex: 1;
}

.ds-alert__title {
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-semibold);
    margin-bottom: var(--ds-space-1);
}

.ds-alert__message {
    font-size: var(--ds-text-sm);
}

.ds-alert--success {
    background-color: var(--ds-success-light);
    border-color: var(--ds-success);
    color: var(--ds-success-700);
}

.ds-alert--warning {
    background-color: var(--ds-warning-light);
    border-color: var(--ds-warning);
    color: var(--ds-warning-700);
}

.ds-alert--danger {
    background-color: var(--ds-danger-light);
    border-color: var(--ds-danger);
    color: var(--ds-danger-700);
}

.ds-alert--info {
    background-color: var(--ds-info-light);
    border-color: var(--ds-info);
    color: var(--ds-info-700);
}

/* --- Alert: Accent variant (left-border style) --- */

.ds-alert--accent {
    border-width: 1px;
    border-left-width: 4px;
    border-radius: 0 var(--ds-radius-md) var(--ds-radius-md) 0;
    align-items: flex-start;
}

.ds-alert--accent.ds-alert--danger {
    border-color: rgba(239, 68, 68, 0.2);
    border-left-color: var(--ds-danger);
    background-color: rgba(239, 68, 68, 0.04);
    color: var(--ds-text-primary);
}

.ds-alert--accent.ds-alert--warning {
    border-color: rgba(245, 158, 11, 0.2);
    border-left-color: var(--ds-warning);
    background-color: rgba(245, 158, 11, 0.04);
    color: var(--ds-text-primary);
}

.ds-alert--accent.ds-alert--info {
    border-color: rgba(59, 130, 246, 0.2);
    border-left-color: var(--ds-info);
    background-color: rgba(59, 130, 246, 0.04);
    color: var(--ds-text-primary);
}

.ds-alert--accent.ds-alert--success {
    border-color: rgba(16, 185, 129, 0.2);
    border-left-color: var(--ds-success);
    background-color: rgba(16, 185, 129, 0.04);
    color: var(--ds-text-primary);
}

.ds-alert__icon-circle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    min-width: 36px;
    border-radius: 50%;
    font-size: 1rem;
}

.ds-alert--danger .ds-alert__icon-circle {
    background: rgba(239, 68, 68, 0.1);
    color: var(--ds-danger);
}

.ds-alert--warning .ds-alert__icon-circle {
    background: rgba(245, 158, 11, 0.1);
    color: var(--ds-warning);
}

.ds-alert--info .ds-alert__icon-circle {
    background: rgba(59, 130, 246, 0.1);
    color: var(--ds-info);
}

.ds-alert--success .ds-alert__icon-circle {
    background: rgba(16, 185, 129, 0.1);
    color: var(--ds-success);
}

.ds-alert--accent.ds-alert--danger .ds-alert__title { color: var(--ds-danger); }
.ds-alert--accent.ds-alert--warning .ds-alert__title { color: var(--ds-warning); }
.ds-alert--accent.ds-alert--info .ds-alert__title { color: var(--ds-info); }
.ds-alert--accent.ds-alert--success .ds-alert__title { color: var(--ds-success); }
.ds-alert--accent .ds-alert__message { color: var(--ds-text-secondary); }

.ds-alert-list {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-3);
}

/* === Imported from: ./components/bar-chart.css === */

.ds-bar-chart { display: flex; gap: 0; height: 240px; }

.ds-bar-chart__y-axis {
    display: flex; flex-direction: column; justify-content: space-between;
    padding-bottom: 28px; padding-right: var(--ds-space-3);
    text-align: right; min-width: 48px;
}
.ds-bar-chart__y-tick { font-size: 0.7rem; color: var(--ds-text-secondary); font-variant-numeric: tabular-nums; }

.ds-bar-chart__area {
    flex: 1; display: flex; position: relative;
    border-left: 1px solid var(--ds-border-default);
    border-bottom: 1px solid var(--ds-border-default);
}

.ds-bar-chart__gridlines {
    position: absolute; inset: 0; display: flex; flex-direction: column;
    justify-content: space-between; pointer-events: none; padding-bottom: 28px;
}
.ds-bar-chart__gridline { border-bottom: 1px dashed var(--ds-border-default); width: 100%; }
.ds-bar-chart__gridline:last-child { border-bottom: none; }

.ds-bar-chart__group {
    flex: 1; display: flex; flex-direction: column;
    align-items: center; justify-content: flex-end;
    padding: 0 var(--ds-space-2);
}
.ds-bar-chart__group--forecast { opacity: 0.45; }

.ds-bar-chart__values {
    display: flex; gap: 2px; margin-bottom: var(--ds-space-1);
    font-size: 0.65rem; font-weight: 600; color: var(--ds-text-secondary);
}
.ds-bar-chart__val--budget { color: var(--ds-info); }
.ds-bar-chart__val--ok { color: var(--ds-success); }
.ds-bar-chart__val--over { color: var(--ds-danger); }

.ds-bar-chart__bars {
    display: flex; align-items: flex-end; gap: 4px;
    width: 100%; max-width: 64px; height: calc(100% - 50px);
}

.ds-bar-chart__bar {
    flex: 1; height: var(--bar-height, 0%);
    border-radius: var(--ds-radius-sm, 4px) var(--ds-radius-sm, 4px) 0 0;
    min-height: 4px; transition: height 0.3s ease;
}
.ds-bar-chart__bar--primary { background: linear-gradient(180deg, #3b82f6, #2563eb); }
.ds-bar-chart__bar--success { background: linear-gradient(180deg, #10b981, #059669); }
.ds-bar-chart__bar--danger  { background: linear-gradient(180deg, #ef4444, #dc2626); }
.ds-bar-chart__bar--warning { background: linear-gradient(180deg, #f59e0b, #d97706); }
.ds-bar-chart__bar--forecast {
    border: 1px dashed rgba(0,0,0,0.2);
    background: repeating-linear-gradient(45deg, transparent, transparent 3px, rgba(16,185,129,0.15) 3px, rgba(16,185,129,0.15) 6px);
}

.ds-bar-chart__label { padding-top: var(--ds-space-2); font-size: 0.75rem; font-weight: 500; color: var(--ds-text-secondary); }
.ds-bar-chart__label sup { font-size: 0.6rem; opacity: 0.7; }

.ds-bar-chart__legend {
    display: flex; align-items: center; flex-wrap: wrap; gap: var(--ds-space-5);
    margin-top: var(--ds-space-4); padding-top: var(--ds-space-3);
    border-top: 1px solid var(--ds-border-default);
}
.ds-bar-chart__legend-item { display: flex; align-items: center; gap: 6px; font-size: var(--ds-text-sm); color: var(--ds-text-primary); }
.ds-bar-chart__legend-item--muted { color: var(--ds-text-secondary); }
.ds-bar-chart__legend-dot { display: inline-block; width: 12px; height: 12px; border-radius: 3px; }
.ds-bar-chart__legend-dot--primary { background: linear-gradient(135deg, #3b82f6, #2563eb); }
.ds-bar-chart__legend-dot--success { background: linear-gradient(135deg, #10b981, #059669); }
.ds-bar-chart__legend-dot--danger  { background: linear-gradient(135deg, #ef4444, #dc2626); }
.ds-bar-chart__legend-dot--forecast { border: 1px dashed var(--ds-text-secondary); opacity: 0.5; }

@media (max-width: 640px) {
    .ds-bar-chart { height: 180px; }
    .ds-bar-chart__values { display: none; }
    .ds-bar-chart__group { padding: 0 var(--ds-space-1); }
    .ds-bar-chart__bars { max-width: 40px; }
}

/* === Imported from: ./components/recommendation.css === */

.ds-reco-list { display: flex; flex-direction: column; gap: var(--ds-space-3); }

.ds-reco {
    display: flex; align-items: flex-start; gap: var(--ds-space-4);
    padding: var(--ds-space-4); border: 1px solid var(--ds-border-default);
    border-left-width: 4px; border-radius: 0 var(--ds-radius-md) var(--ds-radius-md) 0;
    background: var(--ds-bg-primary);
}

.ds-reco--danger  { border-left-color: var(--ds-danger); }
.ds-reco--warning { border-left-color: var(--ds-warning); }
.ds-reco--info    { border-left-color: var(--ds-info); }
.ds-reco--primary { border-left-color: var(--ds-primary); }
.ds-reco--success { border-left-color: var(--ds-success); }

.ds-reco__number {
    display: inline-flex; align-items: center; justify-content: center;
    width: 28px; height: 28px; min-width: 28px; border-radius: 50%;
    background: var(--ds-text-secondary); color: #fff;
    font-size: 0.8rem; font-weight: 700; line-height: 1;
}
.ds-reco--danger  .ds-reco__number { background: var(--ds-danger); }
.ds-reco--warning .ds-reco__number { background: var(--ds-warning); }
.ds-reco--info    .ds-reco__number { background: var(--ds-info); }
.ds-reco--primary .ds-reco__number { background: var(--ds-primary); }
.ds-reco--success .ds-reco__number { background: var(--ds-success); }

.ds-reco__body { flex: 1; min-width: 0; }
.ds-reco__title { font-weight: 600; margin-bottom: 2px; color: var(--ds-text-primary); }
.ds-reco__text { font-size: var(--ds-text-sm); color: var(--ds-text-secondary); line-height: var(--ds-leading-relaxed, 1.625); }


/* === Imported from: ./components/content-header.css === */

/**
 * Design System OptiGest360
 * Component: Content Header
 *
 * En-tête de contenu avec titre, sous-titre et actions
 * Utilisé dans 35+ vues (21% de couverture)
 */

/* ============================================
   CONTENT HEADER - Container
   ============================================ */

.ds-content-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--ds-space-6);
    padding: var(--ds-space-6) 0;
    margin-bottom: var(--ds-space-8);
    border-bottom: 1px solid var(--ds-border-subtle);
}

/* Responsive: stack sur mobile */
@media (max-width: 640px) {
    .ds-content-header {
        flex-direction: column;
        align-items: stretch;
    }
}

/* ============================================
   CONTENT HEADER - Texte
   ============================================ */

.ds-content-header__text {
    flex: 1;
    min-width: 0; /* Permet text-overflow */
}

.ds-content-header__title {
    font-size: var(--ds-text-2xl);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin: 0 0 var(--ds-space-2) 0;
    line-height: 1.2;
}

.ds-content-header__subtitle {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    margin: 0;
    line-height: 1.5;
}

/* ============================================
   CONTENT HEADER - Actions
   ============================================ */

.ds-content-header__actions {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
    flex-shrink: 0;
}

/* Stack actions sur mobile */
@media (max-width: 640px) {
    .ds-content-header__actions {
        flex-direction: column;
        align-items: stretch;
        width: 100%;
    }

    .ds-content-header__actions > * {
        width: 100%;
    }
}

/* ============================================
   CONTENT HEADER - Variantes
   ============================================ */

/* Sans bordure inférieure */
.ds-content-header--no-border {
    border-bottom: none;
    padding-bottom: 0;
}

/* Compact (moins de spacing) */
.ds-content-header--compact {
    padding: var(--ds-space-4) 0;
    margin-bottom: var(--ds-space-4);
}

/* Avec background */
.ds-content-header--bg {
    background: var(--ds-bg-secondary);
    border-radius: var(--ds-radius-lg);
    padding: var(--ds-space-6);
    border: 1px solid var(--ds-border-subtle);
}

/* ============================================
   CONTENT HEADER - Export Dropdown
   ============================================ */

.ds-export-wrapper {
    position: relative;
}

.ds-export-dropdown {
    position: absolute;
    top: calc(100% + var(--ds-space-2));
    right: 0;
    min-width: 200px;
    background: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
    box-shadow: var(--ds-shadow-lg);
    padding: var(--ds-space-2);
    z-index: 50;
    display: none;
    opacity: 0;
    transform: translateY(-8px);
    transition: all var(--ds-duration-fast);
}

.ds-export-dropdown.is-open {
    display: block;
    opacity: 1;
    transform: translateY(0);
}

.ds-export-option {
    all: unset;
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
    width: 100%;
    padding: var(--ds-space-3);
    border-radius: var(--ds-radius-sm);
    cursor: pointer;
    font-size: var(--ds-text-sm);
    color: var(--ds-text-primary);
    transition: all var(--ds-duration-fast);
}

.ds-export-option:hover {
    background: var(--ds-bg-secondary);
    color: var(--ds-primary);
}

.ds-export-option i {
    width: 16px;
    text-align: center;
    color: var(--ds-text-secondary);
}

.ds-export-option:hover i {
    color: var(--ds-primary);
}

/* ============================================
   UTILITIES - Alignement des actions
   ============================================ */

.ds-content-header__actions--start {
    justify-content: flex-start;
}

.ds-content-header__actions--center {
    justify-content: center;
}

.ds-content-header__actions--end {
    justify-content: flex-end;
}


/* === Imported from: ./components/search-box.css === */

/**
 * Design System OptiGest360
 * Component: Search Box
 *
 * Champ de recherche avec icône
 * Utilisé dans 18+ vues (11% de couverture)
 */

/* ============================================
   SEARCH BOX - Container
   ============================================ */

.ds-search-box {
    position: relative;
    width: 100%;
    max-width: 400px;
}

/* Variante fullwidth */
.ds-search-box--full {
    max-width: none;
}

/* Variante compact */
.ds-search-box--compact {
    max-width: 280px;
}

/* Variante large */
.ds-search-box--large {
    max-width: 600px;
}

/* ============================================
   SEARCH BOX - Icon
   ============================================ */

.ds-search-box__icon {
    position: absolute;
    left: var(--ds-space-4);
    top: 50%;
    transform: translateY(-50%);
    color: var(--ds-text-tertiary);
    pointer-events: none;
    font-size: var(--ds-text-sm);
    z-index: 1;
}

/* ============================================
   SEARCH BOX - Input
   ============================================ */

.ds-search-box__input {
    width: 100%;
    height: 44px;
    padding: var(--ds-space-3) var(--ds-space-4) var(--ds-space-3) var(--ds-space-11);
    background: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
    font-size: var(--ds-text-base);
    color: var(--ds-text-primary);
    transition: all var(--ds-duration-fast);
    outline: none;
}

.ds-search-box__input::placeholder {
    color: var(--ds-text-muted);
}

/* Focus state */
.ds-search-box__input:focus {
    border-color: var(--ds-primary);
    box-shadow: var(--ds-focus-ring);
}

/* Avec valeur (input non vide) */
.ds-search-box__input:not(:placeholder-shown) {
    border-color: var(--ds-primary-light);
}

/* ============================================
   SEARCH BOX - Clear Button
   ============================================ */

.ds-search-box__clear {
    all: unset;
    position: absolute;
    right: var(--ds-space-3);
    top: 50%;
    transform: translateY(-50%);
    width: 24px;
    height: 24px;
    display: none;
    align-items: center;
    justify-content: center;
    border-radius: var(--ds-radius-full);
    color: var(--ds-text-tertiary);
    cursor: pointer;
    transition: all var(--ds-duration-fast);
    z-index: 1;
}

/* Afficher le bouton clear quand l'input a une valeur */
.ds-search-box__input:not(:placeholder-shown) ~ .ds-search-box__clear {
    display: flex;
}

.ds-search-box__clear:hover {
    background: var(--ds-bg-tertiary);
    color: var(--ds-text-primary);
}

/* ============================================
   SEARCH BOX - States
   ============================================ */

/* Disabled state */
.ds-search-box--disabled .ds-search-box__input,
.ds-search-box__input:disabled {
    background: var(--ds-bg-tertiary);
    color: var(--ds-text-muted);
    cursor: not-allowed;
    border-color: var(--ds-border-subtle);
}

.ds-search-box--disabled .ds-search-box__icon {
    color: var(--ds-text-muted);
}

/* Loading state */
.ds-search-box--loading .ds-search-box__icon {
    animation: spin 1s linear infinite;
}

/* Error state */
.ds-search-box--error .ds-search-box__input {
    border-color: var(--ds-danger);
}

.ds-search-box--error .ds-search-box__icon {
    color: var(--ds-danger);
}

/* ============================================
   SEARCH BOX - Variantes de taille
   ============================================ */

/* Small */
.ds-search-box--sm .ds-search-box__input {
    height: 36px;
    font-size: var(--ds-text-sm);
    padding-left: var(--ds-space-9);
}

.ds-search-box--sm .ds-search-box__icon {
    left: var(--ds-space-3);
    font-size: 12px;
}

/* Large */
.ds-search-box--lg .ds-search-box__input {
    height: 52px;
    font-size: var(--ds-text-lg);
    padding-left: var(--ds-space-12);
}

.ds-search-box--lg .ds-search-box__icon {
    left: var(--ds-space-5);
    font-size: 18px;
}

/* ============================================
   SEARCH BOX - Dans les filtres
   ============================================ */

.ds-filters-row .ds-search-box {
    flex: 1;
    min-width: 240px;
}

/* ============================================
   ANIMATION - Spin pour loading
   ============================================ */

@keyframes spin {
    from {
        transform: translateY(-50%) rotate(0deg);
    }
    to {
        transform: translateY(-50%) rotate(360deg);
    }
}


/* === Imported from: ./components/tabs.css === */

/**
 * Design System OptiGest360
 * Component: Tabs Navigation
 *
 * Système d'onglets pour navigation entre sections
 * Utilisé dans 14+ vues (8% de couverture)
 */

/* ============================================
   TABS - Container
   ============================================ */

.ds-tabs {
    margin-bottom: var(--ds-space-6);
}

.ds-tabs__nav {
    display: flex;
    align-items: center;
    gap: var(--ds-space-1);
    border-bottom: 1px solid var(--ds-border-subtle);
    margin-bottom: var(--ds-space-6);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none; /* Firefox */
}

.ds-tabs__nav::-webkit-scrollbar {
    display: none; /* Chrome, Safari */
}

/* ============================================
   TABS - Item
   ============================================ */

.ds-tab,
.ds-tabs__btn {
    all: unset;
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-2);
    padding: var(--ds-space-3) var(--ds-space-4);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-secondary);
    border-bottom: 2px solid transparent;
    cursor: pointer;
    white-space: nowrap;
    transition: all var(--ds-duration-fast);
    position: relative;
}

/* Tab link (pour <a>) */
a.ds-tab {
    text-decoration: none;
}

/* Hover state */
.ds-tab:hover,
.ds-tabs__btn:hover {
    color: var(--ds-text-primary);
    background: var(--ds-bg-secondary);
    border-radius: var(--ds-radius-sm) var(--ds-radius-sm) 0 0;
}

/* Active state */
.ds-tab.is-active,
.ds-tabs__btn.is-active,
.ds-tab[aria-current="page"],
.ds-tabs__btn.active {
    color: var(--ds-primary);
    border-bottom-color: var(--ds-primary);
    font-weight: var(--ds-font-semibold);
}

/* Disabled state */
.ds-tab:disabled,
.ds-tabs__btn:disabled,
.ds-tab.is-disabled {
    color: var(--ds-text-muted);
    cursor: not-allowed;
    pointer-events: none;
}

/* ============================================
   TABS - Icon
   ============================================ */

.ds-tab__icon {
    font-size: var(--ds-text-base);
    flex-shrink: 0;
}

/* ============================================
   TABS - Badge (notification count)
   ============================================ */

.ds-tab__badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 20px;
    padding: 0 var(--ds-space-2);
    background: var(--ds-gray-200);
    color: var(--ds-text-primary);
    font-size: 11px;
    font-weight: var(--ds-font-semibold);
    border-radius: var(--ds-radius-full);
    line-height: 1;
}

.ds-tab.is-active .ds-tab__badge {
    background: var(--ds-primary);
    color: var(--ds-white);
}

/* ============================================
   TABS - Variantes de style
   ============================================ */

/* Pills style (boutons arrondis) */
.ds-tabs--pills {
    border-bottom: none;
    gap: var(--ds-space-2);
    margin-bottom: var(--ds-space-6);
}

.ds-tabs--pills .ds-tab {
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
    border-bottom: 1px solid var(--ds-border-default);
}

.ds-tabs--pills .ds-tab:hover {
    border-radius: var(--ds-radius-md);
    background: var(--ds-bg-secondary);
}

.ds-tabs--pills .ds-tab.is-active {
    background: var(--ds-primary);
    color: var(--ds-white);
    border-color: var(--ds-primary);
}

.ds-tabs--pills .ds-tab.is-active .ds-tab__badge {
    background: var(--ds-white);
    color: var(--ds-primary);
}

/* Segmented control style */
.ds-tabs--segmented {
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
    padding: var(--ds-space-1);
    background: var(--ds-bg-secondary);
    border-bottom: 1px solid var(--ds-border-default);
    margin-bottom: var(--ds-space-6);
    gap: 0;
}

.ds-tabs--segmented .ds-tab {
    border: none;
    border-radius: var(--ds-radius-sm);
}

.ds-tabs--segmented .ds-tab.is-active {
    background: var(--ds-white);
    box-shadow: var(--ds-shadow-sm);
    border-bottom: none;
}

/* Boxed style (avec background) */
.ds-tabs--boxed {
    background: var(--ds-bg-secondary);
    padding: var(--ds-space-2) var(--ds-space-4);
    border-radius: var(--ds-radius-lg) var(--ds-radius-lg) 0 0;
    border: 1px solid var(--ds-border-subtle);
    border-bottom: none;
}

/* ============================================
   TABS - Tailles
   ============================================ */

/* Small */
.ds-tabs--sm .ds-tab {
    padding: var(--ds-space-2) var(--ds-space-3);
    font-size: var(--ds-text-xs);
}

.ds-tabs--sm .ds-tab__icon {
    font-size: var(--ds-text-sm);
}

/* Large */
.ds-tabs--lg .ds-tab {
    padding: var(--ds-space-4) var(--ds-space-6);
    font-size: var(--ds-text-base);
}

.ds-tabs--lg .ds-tab__icon {
    font-size: var(--ds-text-lg);
}

/* ============================================
   TABS - Content Panel
   ============================================ */

.ds-tabs__panel {
    display: none;
    animation: fadeIn var(--ds-duration-base) ease;
}

.ds-tabs__panel.is-active {
    display: block;
}

/* Legacy support */
.ds-tab-panel {
    display: none;
    animation: fadeIn var(--ds-duration-base) ease;
}

.ds-tab-panel.is-active {
    display: block;
}

/* ============================================
   TABS - Responsive
   ============================================ */

@media (max-width: 640px) {
    .ds-tabs {
        gap: 0;
    }

    .ds-tab {
        flex: 1;
        justify-content: center;
        padding: var(--ds-space-3);
    }

    /* Cache le texte sur très petit écran, garde juste l'icône */
    .ds-tabs--mobile-icons-only .ds-tab__text {
        display: none;
    }

    .ds-tabs--mobile-icons-only .ds-tab__icon {
        font-size: var(--ds-text-lg);
    }
}

/* ============================================
   TABS CONTAINER - Wrapper
   ============================================ */

.ds-tabs-container {
    width: 100%;
    margin-bottom: var(--ds-space-6);
}

/* Avec bordure complète */
.ds-tabs-container--bordered {
    border: 1px solid var(--ds-border-subtle);
    border-radius: var(--ds-radius-lg);
    padding: var(--ds-space-4);
}

/* ============================================
   ANIMATION
   ============================================ */

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(4px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}


/* === Imported from: ./components/filter-dropdown.css === */

/**
 * Design System OptiGest360
 * Component: Filter Dropdown
 *
 * Select filtres et dropdowns pour les sections de filtrage
 * Utilisé dans 16+ vues (10% de couverture)
 */

/* ============================================
   FILTER DROPDOWN - Container
   ============================================ */

.ds-filter-select {
    position: relative;
    display: inline-block;
    width: 100%;
    max-width: 220px;
}

/* Variante fullwidth */
.ds-filter-select--full {
    max-width: none;
}

/* Variante compact */
.ds-filter-select--compact {
    max-width: 160px;
}

/* ============================================
   FILTER DROPDOWN - Select element
   ============================================ */

.ds-filter-select__input {
    all: unset;
    width: 100%;
    height: 44px;
    padding: var(--ds-space-3) var(--ds-space-10) var(--ds-space-3) var(--ds-space-4);
    background: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
    font-size: var(--ds-text-sm);
    color: var(--ds-text-primary);
    cursor: pointer;
    transition: all var(--ds-duration-fast);
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
}

/* Style pour <select> natif */
select.ds-filter-select__input {
    padding-right: var(--ds-space-10);
}

/* Focus state */
.ds-filter-select__input:focus {
    outline: none;
    border-color: var(--ds-primary);
    box-shadow: var(--ds-focus-ring);
}

/* Hover state */
.ds-filter-select__input:hover:not(:disabled) {
    border-color: var(--ds-primary-light);
}

/* Disabled state */
.ds-filter-select__input:disabled {
    background: var(--ds-bg-tertiary);
    color: var(--ds-text-muted);
    cursor: not-allowed;
    border-color: var(--ds-border-subtle);
}

/* ============================================
   FILTER DROPDOWN - Icon chevron
   ============================================ */

.ds-filter-select__icon {
    position: absolute;
    right: var(--ds-space-4);
    top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
    color: var(--ds-text-tertiary);
    font-size: 12px;
    transition: transform var(--ds-duration-fast);
}

/* Rotation quand ouvert (pour custom dropdown) */
.ds-filter-select.is-open .ds-filter-select__icon {
    transform: translateY(-50%) rotate(180deg);
}

/* ============================================
   FILTER DROPDOWN - Custom Dropdown
   ============================================ */

.ds-filter-select__dropdown {
    position: absolute;
    top: calc(100% + var(--ds-space-2));
    left: 0;
    right: 0;
    background: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
    box-shadow: var(--ds-shadow-lg);
    max-height: 300px;
    overflow-y: auto;
    z-index: 50;
    display: none;
    opacity: 0;
    transform: translateY(-8px);
    transition: all var(--ds-duration-fast);
}

.ds-filter-select.is-open .ds-filter-select__dropdown {
    display: block;
    opacity: 1;
    transform: translateY(0);
}

/* ============================================
   FILTER DROPDOWN - Option
   ============================================ */

.ds-filter-select__option {
    all: unset;
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
    width: 100%;
    padding: var(--ds-space-3) var(--ds-space-4);
    font-size: var(--ds-text-sm);
    color: var(--ds-text-primary);
    cursor: pointer;
    transition: all var(--ds-duration-fast);
}

.ds-filter-select__option:hover {
    background: var(--ds-bg-secondary);
}

.ds-filter-select__option.is-selected {
    background: var(--ds-primary-light);
    color: var(--ds-primary);
    font-weight: var(--ds-font-medium);
}

.ds-filter-select__option:disabled {
    color: var(--ds-text-muted);
    cursor: not-allowed;
    pointer-events: none;
}

/* Icône de sélection (checkmark) */
.ds-filter-select__option.is-selected::before {
    content: '✓';
    margin-right: var(--ds-space-2);
    font-weight: bold;
}

/* ============================================
   FILTER DROPDOWN - Group
   ============================================ */

.ds-filter-select__group {
    padding: var(--ds-space-2) 0;
}

.ds-filter-select__group:not(:last-child) {
    border-bottom: 1px solid var(--ds-border-subtle);
}

.ds-filter-select__group-label {
    padding: var(--ds-space-2) var(--ds-space-4);
    font-size: var(--ds-text-xs);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ============================================
   FILTERS SECTION - Container pour les filtres
   ============================================ */

.ds-filters-section {
    background: var(--ds-bg-secondary);
    border-radius: var(--ds-radius-lg);
    padding: var(--ds-space-4);
    margin-bottom: var(--ds-space-6);
}

.ds-filters-row {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
    flex-wrap: wrap;
}

/* Responsive */
@media (max-width: 768px) {
    .ds-filters-row {
        flex-direction: column;
        align-items: stretch;
    }

    .ds-filters-row > * {
        width: 100% !important;
        max-width: none !important;
    }
}

/* ============================================
   FILTER DROPDOWN - Variantes de taille
   ============================================ */

/* Small */
.ds-filter-select--sm .ds-filter-select__input {
    height: 36px;
    font-size: var(--ds-text-xs);
    padding: var(--ds-space-2) var(--ds-space-8) var(--ds-space-2) var(--ds-space-3);
}

.ds-filter-select--sm .ds-filter-select__icon {
    right: var(--ds-space-3);
}

/* Large */
.ds-filter-select--lg .ds-filter-select__input {
    height: 52px;
    font-size: var(--ds-text-base);
    padding: var(--ds-space-4) var(--ds-space-12) var(--ds-space-4) var(--ds-space-5);
}

.ds-filter-select--lg .ds-filter-select__icon {
    right: var(--ds-space-5);
    font-size: 14px;
}

/* ============================================
   FILTER DROPDOWN - Avec icône de gauche
   ============================================ */

.ds-filter-select--with-icon .ds-filter-select__input {
    padding-left: var(--ds-space-10);
}

.ds-filter-select__prefix-icon {
    position: absolute;
    left: var(--ds-space-4);
    top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
    color: var(--ds-text-tertiary);
    font-size: var(--ds-text-sm);
}

/* ============================================
   FILTER DROPDOWN - Avec badge/count
   ============================================ */

.ds-filter-select__badge {
    position: absolute;
    top: -6px;
    right: -6px;
    min-width: 20px;
    height: 20px;
    padding: 0 var(--ds-space-2);
    background: var(--ds-primary);
    color: var(--ds-white);
    font-size: 11px;
    font-weight: var(--ds-font-semibold);
    border-radius: var(--ds-radius-full);
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    box-shadow: 0 0 0 2px var(--ds-white);
}

/* ============================================
   FILTER DROPDOWN - Clear button
   ============================================ */

.ds-filter-select__clear {
    all: unset;
    position: absolute;
    right: var(--ds-space-10);
    top: 50%;
    transform: translateY(-50%);
    width: 20px;
    height: 20px;
    display: none;
    align-items: center;
    justify-content: center;
    border-radius: var(--ds-radius-full);
    color: var(--ds-text-tertiary);
    cursor: pointer;
    transition: all var(--ds-duration-fast);
    font-size: 12px;
}

.ds-filter-select.has-value .ds-filter-select__clear {
    display: flex;
}

.ds-filter-select__clear:hover {
    background: var(--ds-bg-tertiary);
    color: var(--ds-text-primary);
}


/* === Imported from: ./components/list-item.css === */

/**
 * Design System OptiGest360
 * Component: List Item
 *
 * Éléments de liste avec statut, avatar, icône et actions
 * Utilisé dans 20+ vues (12% de couverture)
 */

/* ============================================
   LIST ITEM - Container
   ============================================ */

.ds-list-item {
    display: flex;
    align-items: center;
    gap: var(--ds-space-4);
    padding: var(--ds-space-4);
    background: var(--ds-white);
    border: 1px solid var(--ds-border-subtle);
    border-radius: var(--ds-radius-md);
    transition: all var(--ds-duration-fast);
    cursor: pointer;
}

/* Hover state */
.ds-list-item:hover {
    border-color: var(--ds-border-default);
    box-shadow: var(--ds-shadow-sm);
    transform: translateY(-1px);
}

/* Active/Selected state */
.ds-list-item.is-selected {
    border-color: var(--ds-primary);
    background: var(--ds-primary-light);
}

/* Disabled state */
.ds-list-item.is-disabled {
    opacity: 0.6;
    cursor: not-allowed;
    pointer-events: none;
}

/* ============================================
   LIST ITEM - Dans une liste
   ============================================ */

.ds-list {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-2);
}

.ds-list .ds-list-item {
    border-radius: 0;
    border-left: none;
    border-right: none;
    border-top: none;
}

.ds-list .ds-list-item:first-child {
    border-top: 1px solid var(--ds-border-subtle);
    border-radius: var(--ds-radius-md) var(--ds-radius-md) 0 0;
}

.ds-list .ds-list-item:last-child {
    border-radius: 0 0 var(--ds-radius-md) var(--ds-radius-md);
}

/* ============================================
   LIST ITEM - Avatar/Icon
   ============================================ */

.ds-list-item__avatar {
    width: 40px;
    height: 40px;
    border-radius: var(--ds-radius-full);
    overflow: hidden;
    flex-shrink: 0;
}

.ds-list-item__avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.ds-list-item__avatar--initials {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--ds-primary);
    color: var(--ds-white);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-semibold);
}

.ds-list-item__icon {
    width: 40px;
    height: 40px;
    border-radius: var(--ds-radius-md);
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--ds-bg-secondary);
    color: var(--ds-text-secondary);
    font-size: var(--ds-text-lg);
    flex-shrink: 0;
}

/* Variantes de couleur pour l'icône */
.ds-list-item__icon--primary {
    background: var(--ds-primary-light);
    color: var(--ds-primary);
}

.ds-list-item__icon--success {
    background: var(--ds-success-light);
    color: var(--ds-success);
}

.ds-list-item__icon--warning {
    background: var(--ds-warning-light);
    color: var(--ds-warning);
}

.ds-list-item__icon--danger {
    background: var(--ds-danger-light);
    color: var(--ds-danger);
}

.ds-list-item__icon--info {
    background: var(--ds-info-light);
    color: var(--ds-info);
}

/* ============================================
   LIST ITEM - Content
   ============================================ */

.ds-list-item__content {
    flex: 1;
    min-width: 0; /* Permet text-overflow */
}

.ds-list-item__title {
    font-size: var(--ds-text-base);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-primary);
    margin: 0 0 var(--ds-space-1) 0;
    line-height: 1.4;
}

.ds-list-item__title--truncate {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ds-list-item__subtitle {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    margin: 0;
    line-height: 1.4;
}

.ds-list-item__subtitle--truncate {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ds-list-item__meta {
    font-size: var(--ds-text-xs);
    color: var(--ds-text-tertiary);
    margin-top: var(--ds-space-1);
}

/* ============================================
   LIST ITEM - Status Badge
   ============================================ */

.ds-list-item__status {
    flex-shrink: 0;
}

/* Réutilise le composant badge existant */
.ds-list-item__status .ds-badge {
    /* Styles du badge déjà définis dans badge.css */
}

/* ============================================
   LIST ITEM - Actions
   ============================================ */

.ds-list-item__actions {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
    flex-shrink: 0;
    opacity: 0;
    transition: opacity var(--ds-duration-fast);
}

.ds-list-item:hover .ds-list-item__actions {
    opacity: 1;
}

/* Toujours visible sur mobile */
@media (max-width: 640px) {
    .ds-list-item__actions {
        opacity: 1;
    }
}

.ds-list-item__action {
    all: unset;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--ds-radius-sm);
    color: var(--ds-text-secondary);
    cursor: pointer;
    transition: all var(--ds-duration-fast);
}

.ds-list-item__action:hover {
    background: var(--ds-bg-secondary);
    color: var(--ds-text-primary);
}

.ds-list-item__action--danger:hover {
    background: var(--ds-danger-light);
    color: var(--ds-danger);
}

/* ============================================
   LIST ITEM - Chevron (pour navigation)
   ============================================ */

.ds-list-item__chevron {
    color: var(--ds-text-tertiary);
    font-size: 12px;
    flex-shrink: 0;
}

/* ============================================
   LIST ITEM - Checkbox (pour sélection multiple)
   ============================================ */

.ds-list-item__checkbox {
    flex-shrink: 0;
}

.ds-list-item__checkbox input[type="checkbox"] {
    width: 18px;
    height: 18px;
    cursor: pointer;
}

/* ============================================
   LIST ITEM - Variantes de taille
   ============================================ */

/* Compact */
.ds-list-item--compact {
    padding: var(--ds-space-3);
    gap: var(--ds-space-3);
}

.ds-list-item--compact .ds-list-item__avatar,
.ds-list-item--compact .ds-list-item__icon {
    width: 32px;
    height: 32px;
}

.ds-list-item--compact .ds-list-item__title {
    font-size: var(--ds-text-sm);
}

.ds-list-item--compact .ds-list-item__subtitle {
    font-size: var(--ds-text-xs);
}

/* Large */
.ds-list-item--lg {
    padding: var(--ds-space-6);
    gap: var(--ds-space-5);
}

.ds-list-item--lg .ds-list-item__avatar,
.ds-list-item--lg .ds-list-item__icon {
    width: 56px;
    height: 56px;
}

.ds-list-item--lg .ds-list-item__title {
    font-size: var(--ds-text-lg);
}

/* ============================================
   LIST ITEM - Link variant (pour <a>)
   ============================================ */

a.ds-list-item {
    text-decoration: none;
    color: inherit;
}

a.ds-list-item:visited {
    color: inherit;
}

/* ============================================
   LIST ITEM - Layout variants
   ============================================ */

/* Colonne (vertical stack) */
.ds-list-item--column {
    flex-direction: column;
    align-items: flex-start;
}

.ds-list-item--column .ds-list-item__actions {
    align-self: flex-end;
    margin-top: var(--ds-space-2);
}

/* ============================================
   LIST ITEM - Empty state
   ============================================ */

.ds-list--empty {
    padding: var(--ds-space-12) var(--ds-space-6);
    text-align: center;
    color: var(--ds-text-tertiary);
}

.ds-list--empty__icon {
    font-size: 48px;
    color: var(--ds-text-muted);
    margin-bottom: var(--ds-space-4);
}

.ds-list--empty__text {
    font-size: var(--ds-text-base);
    margin-bottom: var(--ds-space-2);
}

.ds-list--empty__hint {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-muted);
}


/* === Imported from: ./components/settings.css === */

/**
 * Design System OptiGest360
 * Component: Settings
 *
 * Composants pour les pages de paramètres
 */

/* ============================================
   SETTINGS LAYOUT
   ============================================ */

.ds-settings-layout {
    display: grid;
    grid-template-columns: 250px 1fr;
    gap: var(--ds-space-6);
}

@media (max-width: 768px) {
    .ds-settings-layout {
        grid-template-columns: 1fr;
    }
}

/* ============================================
   SETTINGS NAV
   ============================================ */

.ds-settings-nav {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-1);
    padding: var(--ds-space-2);
}

.ds-settings-nav-item {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
    padding: var(--ds-space-3) var(--ds-space-4);
    border-radius: var(--ds-radius-md);
    text-decoration: none;
    color: var(--ds-text-primary);
    cursor: pointer;
    transition: var(--ds-transition-base);
}

.ds-settings-nav-item:hover {
    background-color: var(--ds-bg-secondary);
}

.ds-settings-nav-item.is-active {
    background-color: var(--ds-primary-50);
    color: var(--ds-primary);
}

.ds-settings-nav-item__icon {
    width: 1.25rem;
    height: 1.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--ds-text-secondary);
}

.ds-settings-nav-item.is-active .ds-settings-nav-item__icon {
    color: var(--ds-primary);
}

.ds-settings-nav-item__label {
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
}

/* ============================================
   SETTINGS SECTION
   ============================================ */

.ds-settings-section {
    display: none;
}

.ds-settings-section.is-active {
    display: block;
}

/* ============================================
   SETTINGS ITEM (Toggle Row)
   ============================================ */

.ds-settings-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--ds-space-4);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
}

.ds-settings-item + .ds-settings-item {
    margin-top: var(--ds-space-3);
}

.ds-settings-item--disabled {
    opacity: 0.6;
}

.ds-settings-item__content {
    flex: 1;
}

.ds-settings-item__title {
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin-bottom: var(--ds-space-1);
}

.ds-settings-item__description {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
}

.ds-settings-item__actions {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
}

/* ============================================
   TOGGLE SWITCH
   ============================================ */

.ds-toggle {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
    flex-shrink: 0;
}

.ds-toggle__input {
    opacity: 0;
    width: 0;
    height: 0;
}

.ds-toggle__slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: var(--ds-gray-300);
    transition: var(--ds-transition-base);
    border-radius: 24px;
}

.ds-toggle__slider::before {
    position: absolute;
    content: "";
    height: 18px;
    width: 18px;
    left: 3px;
    bottom: 3px;
    background-color: white;
    transition: var(--ds-transition-base);
    border-radius: 50%;
    box-shadow: var(--ds-shadow-sm);
}

.ds-toggle__input:checked + .ds-toggle__slider {
    background-color: var(--ds-success);
}

.ds-toggle__input:checked + .ds-toggle__slider::before {
    transform: translateX(20px);
}

.ds-toggle__input:focus + .ds-toggle__slider {
    box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.2);
}

.ds-toggle__input:disabled + .ds-toggle__slider {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ============================================
   SETTINGS CARD (Payment Method, Integration, etc.)
   ============================================ */

.ds-settings-card {
    display: flex;
    align-items: flex-start;
    gap: var(--ds-space-4);
    padding: var(--ds-space-4);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
}

.ds-settings-card + .ds-settings-card {
    margin-top: var(--ds-space-3);
}

.ds-settings-card--disabled {
    opacity: 0.6;
}

.ds-settings-card__icon {
    width: 3rem;
    height: 3rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--ds-radius-md);
    flex-shrink: 0;
}

.ds-settings-card__icon--primary {
    background-color: var(--ds-primary-50);
    color: var(--ds-primary);
}

.ds-settings-card__icon--success {
    background-color: var(--ds-success-50);
    color: var(--ds-success);
}

.ds-settings-card__icon--muted {
    background-color: var(--ds-gray-100);
    color: var(--ds-text-tertiary);
}

.ds-settings-card__body {
    flex: 1;
    min-width: 0;
}

.ds-settings-card__title {
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin-bottom: var(--ds-space-1);
}

.ds-settings-card__meta {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-1);
}

.ds-settings-card__meta-item {
    display: flex;
    gap: var(--ds-space-1);
}

.ds-settings-card__meta-label {
    font-weight: var(--ds-font-medium);
}

.ds-settings-card__status {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
    margin-top: var(--ds-space-2);
}

.ds-settings-card__status-dot {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
}

.ds-settings-card__status-dot--success {
    background-color: var(--ds-success);
}

.ds-settings-card__status-dot--muted {
    background-color: var(--ds-gray-300);
}

.ds-settings-card__status-text {
    font-size: var(--ds-text-xs);
    font-weight: var(--ds-font-medium);
}

.ds-settings-card__status-text--success {
    color: var(--ds-success);
}

.ds-settings-card__status-text--muted {
    color: var(--ds-text-tertiary);
}

.ds-settings-card__actions {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
    flex-shrink: 0;
}

/* ============================================
   SETTINGS PREVIEW BOX
   ============================================ */

.ds-settings-preview {
    margin-top: var(--ds-space-4);
    padding: var(--ds-space-4);
    background-color: var(--ds-gray-50);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.ds-settings-preview__label {
    color: var(--ds-text-secondary);
    font-size: var(--ds-text-sm);
}

.ds-settings-preview__value {
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
}

/* ============================================
   TAX ITEM
   ============================================ */

.ds-tax-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--ds-space-3);
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
}

.ds-tax-item + .ds-tax-item {
    margin-top: var(--ds-space-2);
}

.ds-tax-item__info {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
}

.ds-tax-item__icon {
    width: 2rem;
    height: 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    font-size: var(--ds-text-xs);
}

.ds-tax-item__icon--success {
    background-color: var(--ds-success-50);
    color: var(--ds-success);
}

.ds-tax-item__icon--muted {
    background-color: var(--ds-gray-100);
    color: var(--ds-text-tertiary);
}

.ds-tax-item__name {
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-primary);
    font-size: var(--ds-text-sm);
}

.ds-tax-item__label {
    font-size: var(--ds-text-xs);
    color: var(--ds-text-secondary);
}

.ds-tax-item__rate {
    font-size: var(--ds-text-lg);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
}


/* === Imported from: ./components/back-button.css === */

/**
 * Design System OptiGest360
 * Component: Back Button
 *
 * Bouton de retour au launcher ou page précédente
 * Usage: <a href="/" class="ds-back-btn">Retour</a>
 */

/* ============================================
   BACK BUTTON
   ============================================ */

.ds-back-btn,
.btn-back {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
    padding: var(--ds-space-3) var(--ds-space-4);
    margin: var(--ds-space-3) var(--ds-space-3) var(--ds-space-2);

    background-color: var(--ds-bg-secondary);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius);

    color: var(--ds-text-secondary);
    text-decoration: none;
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);

    transition: var(--ds-transition-base);
    cursor: pointer;
}

.ds-back-btn:hover,
.btn-back:hover {
    background-color: var(--ds-primary-light);
    border-color: var(--ds-primary);
    color: var(--ds-primary);
    transform: translateX(-2px);
}

.ds-back-btn:active,
.btn-back:active {
    transform: translateX(-3px);
}

.ds-back-btn i,
.btn-back i {
    font-size: 1em;
    transition: transform 0.2s ease;
}

.ds-back-btn:hover i,
.btn-back:hover i {
    transform: translateX(-2px);
}

/* Collapsed sidebar: center the icon, hide text */
.sidebar.collapsed .btn-back {
    justify-content: center;
    padding: var(--ds-space-3);
    margin: var(--ds-space-2);
}
.sidebar.collapsed .btn-back span {
    display: none;
}
.sidebar.collapsed .btn-back i {
    font-size: 1.1rem;
}
.sidebar.collapsed .btn-back:hover {
    transform: none;
}
.sidebar.collapsed .btn-back:hover i {
    transform: scale(1.15);
}

/* ============================================
   BACK BUTTON VARIANTS
   ============================================ */

/* Variant primary (pour retour important) */
.ds-back-btn--primary {
    background-color: var(--ds-primary-light);
    border-color: var(--ds-primary);
    color: var(--ds-primary);
}

.ds-back-btn--primary:hover {
    background-color: var(--ds-primary);
    border-color: var(--ds-primary);
    color: var(--ds-white);
}

/* Variant subtle (pour retour discret) */
.ds-back-btn--subtle {
    background-color: transparent;
    border-color: transparent;
    color: var(--ds-text-tertiary);
}

.ds-back-btn--subtle:hover {
    background-color: var(--ds-bg-secondary);
    border-color: var(--ds-border-subtle);
    color: var(--ds-text-secondary);
}

/* ============================================
   BACK BUTTON IN SIDEBAR FOOTER
   ============================================ */

.sidebar-footer .ds-back-btn,
.sidebar-footer .btn-back {
    width: auto;
    margin: 0.5rem 0.75rem;
    justify-content: center;
    text-align: center;
}

/* ============================================
   BACK BUTTON IN PAGE HEADER
   ============================================ */

.ds-page-header .ds-back-btn {
    margin: 0;
    padding: var(--ds-space-2) var(--ds-space-3);
    font-size: var(--ds-text-xs);
}

/* ============================================
   RESPONSIVE
   ============================================ */

@media (max-width: 1024px) {
    .sidebar.collapsed .ds-back-btn span,
    .sidebar.collapsed .btn-back span {
        display: none;
    }

    .sidebar.collapsed .ds-back-btn,
    .sidebar.collapsed .btn-back {
        justify-content: center;
        padding: var(--ds-space-3);
    }
}


/* === Imported from: ./components/info-list.css === */

/**
 * Design System OptiGest360
 * Component: Info List
 *
 * Listes d'informations key-value
 * Usage: <div class="ds-info-list"><div class="info-row">...</div></div>
 */

/* ============================================
   INFO LIST CONTAINER
   ============================================ */

.ds-info-list {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-3);
}

.ds-info-list--compact {
    gap: var(--ds-space-2);
}

.ds-info-list--spacious {
    gap: var(--ds-space-4);
}

/* ============================================
   INFO ROW (Key-Value pair)
   ============================================ */

.info-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--ds-space-4);
    padding: var(--ds-space-2) 0;
    border-bottom: 1px solid var(--ds-border-subtle);
}

.info-row:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.info-row:first-child {
    padding-top: 0;
}

/* ============================================
   INFO LABEL (Key)
   ============================================ */

.info-label {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    font-weight: var(--ds-font-medium);
    flex-shrink: 0;
}

/* ============================================
   INFO VALUE (Value)
   ============================================ */

.info-value {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-primary);
    font-weight: var(--ds-font-medium);
    text-align: right;
    flex-grow: 1;
}

/* Variant: valeur en évidence */
.info-value-highlight,
.info-value--highlight {
    color: var(--ds-primary);
    font-weight: var(--ds-font-semibold);
}

/* Variant: valeur monospace (pour codes) */
.info-value--code {
    font-family: var(--ds-font-mono, 'Courier New', monospace);
    font-size: var(--ds-text-xs);
    background-color: var(--ds-bg-secondary);
    padding: var(--ds-space-1) var(--ds-space-2);
    border-radius: var(--ds-radius-sm);
}

/* ============================================
   INFO ROW VARIANTS
   ============================================ */

/* Ligne sans border */
.info-row--borderless {
    border-bottom: none;
}

/* Ligne avec background (zebra) */
.info-row--zebra:nth-child(even) {
    background-color: var(--ds-bg-tertiary, #fafafa);
    padding: var(--ds-space-2);
    margin: 0 calc(var(--ds-space-2) * -1);
    border-radius: var(--ds-radius-sm);
}

/* Ligne avec accent couleur */
.info-row--accent {
    border-left: 3px solid var(--ds-primary);
    padding-left: var(--ds-space-3);
    margin-left: calc(var(--ds-space-3) * -1);
}

.info-row--accent-success {
    border-left-color: var(--ds-success);
}

.info-row--accent-warning {
    border-left-color: var(--ds-warning);
}

.info-row--accent-danger {
    border-left-color: var(--ds-danger);
}

/* ============================================
   RESPONSIVE
   ============================================ */

@media (max-width: 640px) {
    .info-row {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--ds-space-1);
    }

    .info-value {
        text-align: left;
    }

    .info-label {
        font-size: var(--ds-text-xs);
        text-transform: uppercase;
        letter-spacing: 0.025em;
    }
}

/* ============================================
   INFO LIST INSIDE CARD
   ============================================ */

.ds-card__body .ds-info-list {
    margin: var(--ds-space-4) 0;
}

.ds-card__body .ds-info-list:first-child {
    margin-top: 0;
}

.ds-card__body .ds-info-list:last-child {
    margin-bottom: 0;
}

/* ============================================
   HORIZONTAL DIVIDER (pour séparer sections)
   ============================================ */

.ds-border-t {
    border-top: 1px solid var(--ds-border-default);
}

.ds-border-b {
    border-bottom: 1px solid var(--ds-border-default);
}

/* Margin utilities pour dividers */
.ds-my-2 { margin-top: var(--ds-space-2); margin-bottom: var(--ds-space-2); }
.ds-my-3 { margin-top: var(--ds-space-3); margin-bottom: var(--ds-space-3); }
.ds-my-4 { margin-top: var(--ds-space-4); margin-bottom: var(--ds-space-4); }
.ds-my-5 { margin-top: var(--ds-space-5); margin-bottom: var(--ds-space-5); }
.ds-my-6 { margin-top: var(--ds-space-6); margin-bottom: var(--ds-space-6); }

.ds-mt-2 { margin-top: var(--ds-space-2); }
.ds-mt-3 { margin-top: var(--ds-space-3); }
.ds-mt-4 { margin-top: var(--ds-space-4); }
.ds-mt-5 { margin-top: var(--ds-space-5); }
.ds-mt-6 { margin-top: var(--ds-space-6); }

.ds-mb-2 { margin-bottom: var(--ds-space-2); }
.ds-mb-3 { margin-bottom: var(--ds-space-3); }
.ds-mb-4 { margin-bottom: var(--ds-space-4); }
.ds-mb-5 { margin-bottom: var(--ds-space-5); }
.ds-mb-6 { margin-bottom: var(--ds-space-6); }



/* ============================================
   PATTERNS
   ============================================ */


/* === Imported from: ./patterns/index.css === */

/**
 * Design System OptiGest360
 * Patterns: Index
 *
 * Patterns ERP métier pour OptiGest360
 */


/* === Imported from: ./patterns/data-table.css === */

/**
 * Design System OptiGest360
 * Pattern: DataTable
 *
 * Le composant le plus important d'un ERP.
 * 80% des écrans contiennent des tables de données.
 */

/* ============================================
   TABLE CONTAINER
   ============================================ */

.ds-table-wrapper {
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-card);
    overflow: hidden;
    box-shadow: var(--ds-shadow-card);
}

.ds-table-container {
    overflow-x: auto;
}

/* ============================================
   TABLE BASE
   ============================================ */

.ds-table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--ds-text-sm);
}

/* ============================================
   TABLE HEADER
   ============================================ */

.ds-table thead {
    background-color: var(--ds-bg-secondary);
    border-bottom: 1px solid var(--ds-border-default);
}

.ds-table th {
    padding: var(--ds-space-4) var(--ds-space-4);
    text-align: left;
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    white-space: nowrap;
}

/* Sortable Column Header */
.ds-table th.ds-table__header--sortable {
    cursor: pointer;
    user-select: none;
    transition: var(--ds-transition-base);
}

.ds-table th.ds-table__header--sortable:hover {
    background-color: var(--ds-bg-tertiary);
}

.ds-table th.ds-table__header--sortable::after {
    content: '';
    display: inline-block;
    width: 16px;
    height: 16px;
    margin-left: var(--ds-space-2);
    opacity: 0.3;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath d='M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z'/%3E%3C/svg%3E");
    background-size: contain;
    background-repeat: no-repeat;
    vertical-align: middle;
}

.ds-table th.ds-table__header--sorted-asc::after {
    opacity: 1;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%238b1538'%3E%3Cpath fill-rule='evenodd' d='M5.293 7.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 5.414V17a1 1 0 11-2 0V5.414L6.707 7.707a1 1 0 01-1.414 0z' clip-rule='evenodd'/%3E%3C/svg%3E");
}

.ds-table th.ds-table__header--sorted-desc::after {
    opacity: 1;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%238b1538'%3E%3Cpath fill-rule='evenodd' d='M14.707 12.293a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 111.414-1.414L9 14.586V3a1 1 0 012 0v11.586l2.293-2.293a1 1 0 011.414 0z' clip-rule='evenodd'/%3E%3C/svg%3E");
}

/* Text Alignment */
.ds-table th.ds-table__header--right,
.ds-table td.ds-table__cell--right {
    text-align: right;
}

.ds-table th.ds-table__header--center,
.ds-table td.ds-table__cell--center {
    text-align: center;
}

/* Checkbox Column */
.ds-table th.ds-table__header--checkbox,
.ds-table td.ds-table__cell--checkbox {
    width: 40px;
    padding-left: var(--ds-space-4);
    padding-right: var(--ds-space-2);
}

/* Actions Column */
.ds-table th.ds-table__header--actions,
.ds-table td.ds-table__cell--actions {
    width: 80px;
    text-align: center;
}

/* ============================================
   TABLE BODY
   ============================================ */

.ds-table tbody tr {
    border-bottom: 1px solid var(--ds-border-light);
    transition: var(--ds-transition-fast);
}

.ds-table tbody tr:hover {
    background-color: var(--ds-bg-secondary);
}

.ds-table tbody tr:last-child {
    border-bottom: none;
}

.ds-table td {
    padding: var(--ds-space-4) var(--ds-space-4);
    color: var(--ds-text-primary);
    vertical-align: middle;
}

/* ============================================
   ROW STATES
   ============================================ */

/* Clickable Row */
.ds-table tbody tr.ds-table__row--clickable {
    cursor: pointer;
}

.ds-table tbody tr.ds-table__row--clickable:hover {
    background-color: var(--ds-primary-50);
}

/* Selected Row */
.ds-table tbody tr.ds-table__row--selected {
    background-color: var(--ds-primary-50);
}

.ds-table tbody tr.ds-table__row--selected:hover {
    background-color: var(--ds-primary-100);
}

/* Disabled Row */
.ds-table tbody tr.ds-table__row--disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.ds-table tbody tr.ds-table__row--disabled:hover {
    background-color: transparent;
}

/* ============================================
   CELL VARIANTS
   ============================================ */

/* Numeric Cell (monospace font) */
.ds-table__cell--numeric {
    font-family: var(--ds-font-mono);
    text-align: right;
}

/* Truncated Cell */
.ds-table__cell--truncate {
    max-width: 200px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Bold Cell */
.ds-table__cell--bold {
    font-weight: var(--ds-font-semibold);
}

/* Muted Cell */
.ds-table__cell--muted {
    color: var(--ds-text-secondary);
}

/* ============================================
   TABLE MODIFIERS
   ============================================ */

/* Compact Table */
.ds-table--compact th,
.ds-table--compact td {
    padding: var(--ds-space-2) var(--ds-space-3);
}

/* Comfortable Table */
.ds-table--comfortable th,
.ds-table--comfortable td {
    padding: var(--ds-space-6) var(--ds-space-4);
}

/* Striped Table */
.ds-table--striped tbody tr:nth-child(even) {
    background-color: var(--ds-bg-secondary);
}

.ds-table--striped tbody tr:nth-child(even):hover {
    background-color: var(--ds-bg-tertiary);
}

/* Bordered Table */
.ds-table--bordered td,
.ds-table--bordered th {
    border-right: 1px solid var(--ds-border-light);
}

.ds-table--bordered td:last-child,
.ds-table--bordered th:last-child {
    border-right: none;
}

/* ============================================
   TABLE HEADER BAR (Actions, Search, Filters)
   ============================================ */

.ds-table__toolbar {
    padding: var(--ds-space-4);
    border-bottom: 1px solid var(--ds-border-default);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--ds-space-4);
    flex-wrap: wrap;
}

.ds-table__toolbar-left {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
    flex: 1;
}

.ds-table__toolbar-right {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
}

.ds-table__search {
    min-width: 250px;
    max-width: 400px;
}

.ds-table__bulk-actions {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
    padding: var(--ds-space-2) var(--ds-space-4);
    background-color: var(--ds-primary-50);
    border-radius: var(--ds-radius-base);
    font-size: var(--ds-text-sm);
    color: var(--ds-text-primary);
}

/* ============================================
   TABLE FOOTER (Pagination, Info)
   ============================================ */

.ds-table__footer {
    padding: var(--ds-space-4);
    border-top: 1px solid var(--ds-border-default);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--ds-space-4);
    flex-wrap: wrap;
}

.ds-table__info {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
}

.ds-table__pagination {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

/* ============================================
   EMPTY STATE
   ============================================ */

.ds-table__empty {
    padding: var(--ds-space-12) var(--ds-space-6);
    text-align: center;
}

.ds-table__empty-icon {
    width: 64px;
    height: 64px;
    margin: 0 auto var(--ds-space-4);
    color: var(--ds-text-tertiary);
}

.ds-table__empty-title {
    font-size: var(--ds-text-lg);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin-bottom: var(--ds-space-2);
}

.ds-table__empty-description {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    margin-bottom: var(--ds-space-6);
}

/* ============================================
   LOADING STATE
   ============================================ */

.ds-table__loading {
    position: relative;
}

.ds-table__loading::after {
    content: '';
    position: absolute;
    inset: 0;
    background-color: rgba(255, 255, 255, 0.8);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10;
}

/* ============================================
   ROW ACTIONS MENU
   ============================================ */

.ds-table__actions-trigger {
    all: unset;
    cursor: pointer;
    padding: var(--ds-space-2);
    border-radius: var(--ds-radius-base);
    color: var(--ds-text-secondary);
    transition: var(--ds-transition-base);
}

.ds-table__actions-trigger:hover {
    background-color: var(--ds-bg-tertiary);
    color: var(--ds-text-primary);
}

.ds-table__actions-menu {
    position: absolute;
    right: 0;
    margin-top: var(--ds-space-1);
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
    box-shadow: var(--ds-shadow-lg);
    min-width: 160px;
    z-index: 100;
    padding: var(--ds-space-1);
}

.ds-table__actions-item {
    all: unset;
    display: block;
    width: 100%;
    padding: var(--ds-space-2) var(--ds-space-3);
    font-size: var(--ds-text-sm);
    color: var(--ds-text-primary);
    cursor: pointer;
    border-radius: var(--ds-radius-sm);
    transition: var(--ds-transition-base);
}

.ds-table__actions-item:hover {
    background-color: var(--ds-bg-secondary);
}

.ds-table__actions-item--danger {
    color: var(--ds-danger);
}

.ds-table__actions-item--danger:hover {
    background-color: var(--ds-danger-50);
}

/* ============================================
   RESPONSIVE DESIGN
   ============================================ */

@media (max-width: 768px) {
    /* Stack mode for mobile */
    .ds-table--stack thead {
        display: none;
    }

    .ds-table--stack tbody,
    .ds-table--stack tr,
    .ds-table--stack td {
        display: block;
    }

    .ds-table--stack tr {
        margin-bottom: var(--ds-space-4);
        border: 1px solid var(--ds-border-default);
        border-radius: var(--ds-radius-md);
        padding: var(--ds-space-4);
    }

    .ds-table--stack td {
        padding: var(--ds-space-2) 0;
        border: none;
        display: flex;
        justify-content: space-between;
        align-items: center;
    }

    .ds-table--stack td::before {
        content: attr(data-label);
        font-weight: var(--ds-font-semibold);
        color: var(--ds-text-secondary);
        margin-right: var(--ds-space-4);
    }

    .ds-table__toolbar {
        flex-direction: column;
        align-items: stretch;
    }

    .ds-table__search {
        max-width: 100%;
    }

    .ds-table__footer {
        flex-direction: column;
        align-items: stretch;
    }
}

/* ============================================
   PRINT STYLES
   ============================================ */

@media print {
    .ds-table__toolbar,
    .ds-table__footer,
    .ds-table__cell--actions,
    .ds-table__header--actions,
    .ds-table__cell--checkbox,
    .ds-table__header--checkbox {
        display: none;
    }

    .ds-table {
        border: 1px solid var(--ds-border-default);
    }

    .ds-table tbody tr {
        page-break-inside: avoid;
    }
}


/* === Imported from: ./patterns/filter-bar.css === */

/**
 * Design System OptiGest360
 * Pattern: FilterBar
 *
 * Barre de filtres réutilisable pour tous les modules.
 * Utilisé dans les listes, dashboards, rapports, etc.
 */

/* ============================================
   FILTER BAR CONTAINER
   ============================================ */

.ds-filter-bar {
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-card);
    padding: var(--ds-space-4);
    margin-bottom: var(--ds-space-6);
    box-shadow: var(--ds-shadow-sm);
}

.ds-filter-bar__content {
    display: flex;
    align-items: flex-end;
    gap: var(--ds-space-4);
    flex-wrap: wrap;
}

/* ============================================
   FILTER GROUP
   ============================================ */

.ds-filter-group {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-2);
    min-width: 150px;
    flex: 1;
}

.ds-filter-group--sm {
    min-width: 120px;
    flex: 0 1 auto;
}

.ds-filter-group--md {
    min-width: 180px;
    flex: 1;
}

.ds-filter-group--lg {
    min-width: 250px;
    flex: 1;
}

.ds-filter-group--full {
    min-width: 100%;
    flex: 1 1 100%;
}

.ds-filter-label {
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-primary);
}

/* ============================================
   FILTER ACTIONS
   ============================================ */

.ds-filter-actions {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
    margin-left: auto;
}

/* ============================================
   ACTIVE FILTERS (Chips)
   ============================================ */

.ds-filter-bar__active {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
    flex-wrap: wrap;
    margin-top: var(--ds-space-4);
    padding-top: var(--ds-space-4);
    border-top: 1px solid var(--ds-border-light);
}

.ds-filter-bar__active-label {
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-secondary);
}

.ds-filter-chip {
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-2);
    padding: var(--ds-space-1) var(--ds-space-3);
    background-color: var(--ds-primary-50);
    color: var(--ds-primary-700);
    border-radius: var(--ds-radius-full);
    font-size: var(--ds-text-xs);
    font-weight: var(--ds-font-medium);
}

.ds-filter-chip__remove {
    all: unset;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    border-radius: var(--ds-radius-full);
    transition: var(--ds-transition-base);
}

.ds-filter-chip__remove:hover {
    background-color: var(--ds-primary-100);
}

.ds-filter-chip__clear-all {
    all: unset;
    cursor: pointer;
    font-size: var(--ds-text-xs);
    color: var(--ds-text-secondary);
    text-decoration: underline;
    margin-left: var(--ds-space-2);
    transition: var(--ds-transition-base);
}

.ds-filter-chip__clear-all:hover {
    color: var(--ds-danger);
}

/* ============================================
   FILTER BAR MODIFIERS
   ============================================ */

/* Compact Filter Bar */
.ds-filter-bar--compact {
    padding: var(--ds-space-3);
}

.ds-filter-bar--compact .ds-filter-bar__content {
    gap: var(--ds-space-3);
}

/* Inline Filter Bar (no border/shadow) */
.ds-filter-bar--inline {
    background-color: transparent;
    border: none;
    box-shadow: none;
    padding: 0;
    margin-bottom: var(--ds-space-4);
}

/* Collapsible Filter Bar */
.ds-filter-bar--collapsible .ds-filter-bar__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--ds-space-4);
    cursor: pointer;
}

.ds-filter-bar--collapsible .ds-filter-bar__toggle {
    all: unset;
    cursor: pointer;
    padding: var(--ds-space-2);
    color: var(--ds-text-secondary);
    transition: var(--ds-transition-base);
}

.ds-filter-bar--collapsible .ds-filter-bar__toggle:hover {
    color: var(--ds-text-primary);
}

.ds-filter-bar--collapsed .ds-filter-bar__content {
    display: none;
}

/* ============================================
   QUICK FILTERS (Button Toggle Group)
   ============================================ */

.ds-quick-filters {
    display: flex;
    gap: var(--ds-space-2);
    flex-wrap: wrap;
}

.ds-quick-filter {
    all: unset;
    cursor: pointer;
    padding: var(--ds-space-2) var(--ds-space-4);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-secondary);
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-button);
    transition: var(--ds-transition-base);
}

.ds-quick-filter:hover {
    background-color: var(--ds-bg-secondary);
    border-color: var(--ds-primary-300);
    color: var(--ds-text-primary);
}

.ds-quick-filter--active {
    background-color: var(--ds-primary);
    border-color: var(--ds-primary);
    color: var(--ds-white);
}

.ds-quick-filter--active:hover {
    background-color: var(--ds-primary-600);
    border-color: var(--ds-primary-600);
}

.ds-quick-filter__count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 20px;
    padding: 0 var(--ds-space-1);
    margin-left: var(--ds-space-2);
    background-color: var(--ds-bg-tertiary);
    border-radius: var(--ds-radius-full);
    font-size: var(--ds-text-xs);
    font-weight: var(--ds-font-semibold);
}

.ds-quick-filter--active .ds-quick-filter__count {
    background-color: rgba(255, 255, 255, 0.2);
    color: var(--ds-white);
}

/* ============================================
   DATE RANGE FILTER
   ============================================ */

.ds-date-range {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.ds-date-range__separator {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
}

.ds-date-range__input {
    flex: 1;
    min-width: 120px;
}

/* ============================================
   RESPONSIVE DESIGN
   ============================================ */

@media (max-width: 768px) {
    .ds-filter-bar__content {
        flex-direction: column;
        align-items: stretch;
    }

    .ds-filter-group,
    .ds-filter-group--sm,
    .ds-filter-group--md,
    .ds-filter-group--lg {
        min-width: 100%;
        flex: 1 1 100%;
    }

    .ds-filter-actions {
        margin-left: 0;
        width: 100%;
        justify-content: flex-start;
    }

    .ds-quick-filters {
        flex-direction: column;
    }

    .ds-quick-filter {
        width: 100%;
        justify-content: space-between;
    }
}


/* === Imported from: ./patterns/pagination.css === */

/**
 * Design System OptiGest360
 * Pattern: Pagination
 *
 * Composant de pagination réutilisable pour toutes les listes.
 * Support pour pagination numérique et infinie.
 */

/* ============================================
   PAGINATION CONTAINER
   ============================================ */

.ds-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--ds-space-2);
}

.ds-pagination--space-between {
    justify-content: space-between;
}

.ds-pagination--start {
    justify-content: flex-start;
}

.ds-pagination--end {
    justify-content: flex-end;
}

/* ============================================
   PAGINATION ITEMS
   ============================================ */

.ds-pagination__list {
    display: flex;
    align-items: center;
    gap: var(--ds-space-1);
    list-style: none;
    margin: 0;
    padding: 0;
}

.ds-pagination__item {
    all: unset;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    height: 40px;
    padding: var(--ds-space-2) var(--ds-space-3);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-primary);
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-base);
    transition: var(--ds-transition-base);
}

.ds-pagination__item:hover:not(:disabled) {
    background-color: var(--ds-bg-secondary);
    border-color: var(--ds-primary-300);
}

.ds-pagination__item--active {
    background-color: var(--ds-primary);
    border-color: var(--ds-primary);
    color: var(--ds-white);
    cursor: default;
}

.ds-pagination__item--active:hover {
    background-color: var(--ds-primary);
    border-color: var(--ds-primary);
}

.ds-pagination__item:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

/* Ellipsis */
.ds-pagination__ellipsis {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    height: 40px;
    padding: var(--ds-space-2);
    color: var(--ds-text-secondary);
    font-weight: var(--ds-font-medium);
}

/* ============================================
   NAVIGATION BUTTONS
   ============================================ */

.ds-pagination__nav {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.ds-pagination__prev,
.ds-pagination__next {
    all: unset;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-2);
    padding: var(--ds-space-2) var(--ds-space-4);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-primary);
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-base);
    transition: var(--ds-transition-base);
}

.ds-pagination__prev:hover:not(:disabled),
.ds-pagination__next:hover:not(:disabled) {
    background-color: var(--ds-bg-secondary);
    border-color: var(--ds-primary-300);
}

.ds-pagination__prev:disabled,
.ds-pagination__next:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

/* Icon-only navigation */
.ds-pagination__prev--icon-only,
.ds-pagination__next--icon-only {
    min-width: 40px;
    padding: var(--ds-space-2);
}

/* ============================================
   PAGE INFO
   ============================================ */

.ds-pagination__info {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    white-space: nowrap;
}

.ds-pagination__info strong {
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
}

/* ============================================
   PAGE SIZE SELECTOR
   ============================================ */

.ds-pagination__size {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.ds-pagination__size-label {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    white-space: nowrap;
}

.ds-pagination__size-select {
    min-width: 80px;
}

/* ============================================
   PAGINATION MODIFIERS
   ============================================ */

/* Compact Pagination */
.ds-pagination--compact .ds-pagination__item,
.ds-pagination--compact .ds-pagination__prev,
.ds-pagination--compact .ds-pagination__next {
    min-width: 32px;
    height: 32px;
    padding: var(--ds-space-1) var(--ds-space-2);
    font-size: var(--ds-text-xs);
}

.ds-pagination--compact .ds-pagination__ellipsis {
    min-width: 32px;
    height: 32px;
}

/* Large Pagination */
.ds-pagination--large .ds-pagination__item,
.ds-pagination--large .ds-pagination__prev,
.ds-pagination--large .ds-pagination__next {
    min-width: 48px;
    height: 48px;
    padding: var(--ds-space-3) var(--ds-space-4);
    font-size: var(--ds-text-base);
}

.ds-pagination--large .ds-pagination__ellipsis {
    min-width: 48px;
    height: 48px;
}

/* Rounded Pagination */
.ds-pagination--rounded .ds-pagination__item,
.ds-pagination--rounded .ds-pagination__prev,
.ds-pagination--rounded .ds-pagination__next {
    border-radius: var(--ds-radius-full);
}

/* Simple Pagination (no borders) */
.ds-pagination--simple .ds-pagination__item,
.ds-pagination--simple .ds-pagination__prev,
.ds-pagination--simple .ds-pagination__next {
    border: none;
}

.ds-pagination--simple .ds-pagination__item--active {
    background-color: var(--ds-primary-100);
    color: var(--ds-primary-700);
}

/* ============================================
   LOAD MORE BUTTON (Infinite Scroll Alternative)
   ============================================ */

.ds-pagination__load-more {
    all: unset;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--ds-space-2);
    width: 100%;
    padding: var(--ds-space-3) var(--ds-space-6);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-primary);
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-base);
    transition: var(--ds-transition-base);
}

.ds-pagination__load-more:hover {
    background-color: var(--ds-bg-secondary);
    border-color: var(--ds-primary);
}

.ds-pagination__load-more:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ============================================
   JUMP TO PAGE
   ============================================ */

.ds-pagination__jump {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.ds-pagination__jump-label {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    white-space: nowrap;
}

.ds-pagination__jump-input {
    width: 60px;
    text-align: center;
}

/* ============================================
   RESPONSIVE DESIGN
   ============================================ */

@media (max-width: 768px) {
    .ds-pagination {
        flex-direction: column;
        gap: var(--ds-space-4);
    }

    .ds-pagination--space-between {
        flex-direction: column;
    }

    .ds-pagination__list {
        order: 2;
    }

    .ds-pagination__info {
        order: 1;
    }

    .ds-pagination__size {
        order: 3;
        width: 100%;
        justify-content: space-between;
    }

    /* Hide page numbers on mobile, keep only prev/next */
    .ds-pagination--mobile-simple .ds-pagination__list {
        display: none;
    }

    .ds-pagination--mobile-simple .ds-pagination__nav {
        width: 100%;
        justify-content: space-between;
    }

    .ds-pagination--mobile-simple .ds-pagination__prev,
    .ds-pagination--mobile-simple .ds-pagination__next {
        flex: 1;
    }
}

/* ============================================
   ACCESSIBILITY
   ============================================ */

.ds-pagination__item:focus-visible,
.ds-pagination__prev:focus-visible,
.ds-pagination__next:focus-visible {
    outline: 2px solid var(--ds-primary);
    outline-offset: 2px;
}

/* Screen reader only text */
.ds-pagination__sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border-width: 0;
}


/* === Imported from: ./patterns/form-section.css === */

/**
 * Design System OptiGest360
 * Pattern: FormSection
 *
 * Sections de formulaire structurées pour tous les modules.
 * Utilisé dans création/édition de clients, produits, factures, etc.
 */

/* ============================================
   FORM SECTION CONTAINER
   ============================================ */

.ds-form-section {
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-card);
    overflow: hidden;
    margin-bottom: var(--ds-space-6);
}

/* ============================================
   FORM SECTION HEADER
   ============================================ */

.ds-form-section__header {
    padding: var(--ds-space-5) var(--ds-space-6);
    background-color: var(--ds-bg-secondary);
    border-bottom: 1px solid var(--ds-border-default);
}

.ds-form-section__title {
    font-size: var(--ds-text-lg);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin: 0;
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.ds-form-section__title-icon {
    color: var(--ds-primary);
}

.ds-form-section__description {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    margin-top: var(--ds-space-2);
    margin-bottom: 0;
}

/* ============================================
   FORM SECTION BODY
   ============================================ */

.ds-form-section__body {
    padding: var(--ds-space-6);
}

/* ============================================
   FORM GRID LAYOUTS
   ============================================ */

.ds-form-grid {
    display: grid;
    gap: var(--ds-space-6);
    grid-template-columns: 1fr;
}

.ds-form-grid--2-cols {
    grid-template-columns: repeat(2, 1fr);
}

.ds-form-grid--3-cols {
    grid-template-columns: repeat(3, 1fr);
}

.ds-form-grid--4-cols {
    grid-template-columns: repeat(4, 1fr);
}

/* Responsive auto-fit */
.ds-form-grid--auto {
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}

/* Column Span */
.ds-form-col-span-2 {
    grid-column: span 2;
}

.ds-form-col-span-3 {
    grid-column: span 3;
}

.ds-form-col-span-4 {
    grid-column: span 4;
}

.ds-form-col-span-full {
    grid-column: 1 / -1;
}

/* ============================================
   FORM FIELD (Already in input.css, but extended here)
   ============================================ */

.ds-form-field {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-2);
}

.ds-form-label {
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-primary);
    display: flex;
    align-items: center;
    gap: var(--ds-space-1);
}

.ds-form-label--required::after {
    content: '*';
    color: var(--ds-danger);
    margin-left: var(--ds-space-1);
}

.ds-form-hint {
    font-size: var(--ds-text-xs);
    color: var(--ds-text-secondary);
    margin-top: calc(-1 * var(--ds-space-1));
}

.ds-form-error {
    font-size: var(--ds-text-xs);
    color: var(--ds-danger);
    margin-top: calc(-1 * var(--ds-space-1));
    display: flex;
    align-items: center;
    gap: var(--ds-space-1);
}

.ds-form-success {
    font-size: var(--ds-text-xs);
    color: var(--ds-success);
    margin-top: calc(-1 * var(--ds-space-1));
    display: flex;
    align-items: center;
    gap: var(--ds-space-1);
}

/* ============================================
   FORM FIELD GROUPS (Side by side fields)
   ============================================ */

.ds-form-field-group {
    display: flex;
    gap: var(--ds-space-3);
    align-items: flex-start;
}

.ds-form-field-group > .ds-form-field {
    flex: 1;
}

.ds-form-field-group--sm {
    gap: var(--ds-space-2);
}

.ds-form-field-group--lg {
    gap: var(--ds-space-4);
}

/* Default vertical spacing between stacked form fields. Children of a
   .ds-form-field-group sit side-by-side and don't need this. Same for
   fields inside a flex/grid parent that already manages gap (.modal-form,
   .ds-form, .ds-form-grid). */
.ds-form-field {
    margin-bottom: var(--ds-space-4);
}
.ds-form-field:last-child {
    margin-bottom: 0;
}
.ds-form-field-group .ds-form-field,
.modal-form .ds-form-field,
.ds-form .ds-form-field,
.ds-form-grid .ds-form-field {
    margin-bottom: 0;
}

/* ============================================
   FORM DIVIDER
   ============================================ */

.ds-form-divider {
    grid-column: 1 / -1;
    height: 1px;
    background-color: var(--ds-border-light);
    margin: var(--ds-space-4) 0;
}

.ds-form-divider--with-text {
    display: flex;
    align-items: center;
    gap: var(--ds-space-4);
    height: auto;
    background: none;
    color: var(--ds-text-secondary);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
}

.ds-form-divider--with-text::before,
.ds-form-divider--with-text::after {
    content: '';
    flex: 1;
    height: 1px;
    background-color: var(--ds-border-light);
}

/* ============================================
   FORM SECTION FOOTER
   ============================================ */

.ds-form-section__footer {
    padding: var(--ds-space-5) var(--ds-space-6);
    background-color: var(--ds-bg-secondary);
    border-top: 1px solid var(--ds-border-default);
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--ds-space-3);
}

.ds-form-section__footer--space-between {
    justify-content: space-between;
}

/* ============================================
   FORM ACTIONS (Sticky bottom bar)
   ============================================ */

.ds-form-actions {
    position: sticky;
    bottom: 0;
    left: 0;
    right: 0;
    padding: var(--ds-space-4) var(--ds-space-6);
    background-color: var(--ds-white);
    border-top: 1px solid var(--ds-border-default);
    box-shadow: var(--ds-shadow-lg);
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--ds-space-3);
    z-index: 10;
}

.ds-form-actions--space-between {
    justify-content: space-between;
}

/* ============================================
   INLINE FIELDS (Label and input on same line)
   ============================================ */

.ds-form-field--inline {
    flex-direction: row;
    align-items: center;
    gap: var(--ds-space-4);
}

.ds-form-field--inline .ds-form-label {
    min-width: 150px;
    margin-bottom: 0;
}

.ds-form-field--inline .ds-form-hint,
.ds-form-field--inline .ds-form-error {
    margin-top: 0;
    margin-left: 150px;
}

/* ============================================
   CHECKBOX & RADIO GROUPS
   ============================================ */

.ds-form-checkbox-group,
.ds-form-radio-group {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-3);
}

.ds-form-checkbox-group--inline,
.ds-form-radio-group--inline {
    flex-direction: row;
    flex-wrap: wrap;
    gap: var(--ds-space-4);
}

/* ============================================
   INPUT ADDONS (Prefix/Suffix)
   ============================================ */

.ds-input-wrapper {
    position: relative;
    display: flex;
    align-items: center;
}

.ds-input-addon {
    display: flex;
    align-items: center;
    padding: var(--ds-space-3) var(--ds-space-4);
    background-color: var(--ds-bg-secondary);
    border: 1px solid var(--ds-border-default);
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    white-space: nowrap;
}

.ds-input-addon--prefix {
    border-right: none;
    border-radius: var(--ds-radius-input) 0 0 var(--ds-radius-input);
}

.ds-input-addon--suffix {
    border-left: none;
    border-radius: 0 var(--ds-radius-input) var(--ds-radius-input) 0;
}

.ds-input-wrapper .ds-input {
    border-radius: 0;
}

.ds-input-wrapper .ds-input:first-child {
    border-radius: var(--ds-radius-input) 0 0 var(--ds-radius-input);
}

.ds-input-wrapper .ds-input:last-child {
    border-radius: 0 var(--ds-radius-input) var(--ds-radius-input) 0;
}

/* Icon inside input */
.ds-input-icon {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    color: var(--ds-text-tertiary);
    pointer-events: none;
}

.ds-input-icon--left {
    left: var(--ds-space-3);
}

.ds-input-icon--right {
    right: var(--ds-space-3);
}

.ds-input--with-icon-left {
    padding-left: calc(var(--ds-space-4) + 24px);
}

.ds-input--with-icon-right {
    padding-right: calc(var(--ds-space-4) + 24px);
}

/* ============================================
   FORM SECTION MODIFIERS
   ============================================ */

/* Compact Form Section */
.ds-form-section--compact .ds-form-section__header {
    padding: var(--ds-space-4);
}

.ds-form-section--compact .ds-form-section__body {
    padding: var(--ds-space-4);
}

.ds-form-section--compact .ds-form-section__footer {
    padding: var(--ds-space-4);
}

/* No border form section (transparent) */
.ds-form-section--transparent {
    background-color: transparent;
    border: none;
}

.ds-form-section--transparent .ds-form-section__header {
    background-color: transparent;
    border: none;
    padding-left: 0;
    padding-right: 0;
}

.ds-form-section--transparent .ds-form-section__body {
    padding-left: 0;
    padding-right: 0;
}

/* Collapsible Section */
.ds-form-section--collapsible .ds-form-section__header {
    cursor: pointer;
    user-select: none;
    position: relative;
}

.ds-form-section--collapsible .ds-form-section__header::after {
    content: '';
    position: absolute;
    right: var(--ds-space-6);
    top: 50%;
    transform: translateY(-50%);
    width: 20px;
    height: 20px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z' clip-rule='evenodd'/%3E%3C/svg%3E");
    transition: var(--ds-transition-base);
}

.ds-form-section--collapsed .ds-form-section__header::after {
    transform: translateY(-50%) rotate(-90deg);
}

.ds-form-section--collapsed .ds-form-section__body {
    display: none;
}

/* ============================================
   COMPATIBILITY ALIASES
   Les vues utilisent ds-form-input/ds-form-select/ds-form-textarea
   au lieu de ds-input/ds-select/ds-textarea
   ============================================ */

.ds-form-input {
    /* Reset */
    all: unset;
    box-sizing: border-box;

    /* Layout */
    display: block;
    width: 100%;

    /* Sizing */
    padding: var(--ds-space-3) var(--ds-space-4);
    min-height: 40px;

    /* Typography */
    font-family: var(--ds-font-family);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-normal);
    line-height: var(--ds-leading-normal);
    color: var(--ds-text-primary);

    /* Visual */
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-input);

    /* Interaction */
    transition: var(--ds-transition-border), var(--ds-transition-shadow);
}

.ds-form-input::placeholder {
    color: var(--ds-text-muted);
}

.ds-form-input:hover {
    border-color: var(--ds-border-strong);
}

.ds-form-input:focus {
    outline: none;
    border-color: var(--ds-primary);
    box-shadow: var(--ds-focus-ring);
}

.ds-form-input:disabled {
    background-color: var(--ds-bg-secondary);
    color: var(--ds-text-disabled);
    cursor: not-allowed;
    opacity: 0.6;
}

.ds-form-input:read-only {
    background-color: var(--ds-bg-secondary);
    cursor: default;
}

.ds-form-select {
    all: unset;
    box-sizing: border-box;
    display: block;
    width: 100%;
    padding: var(--ds-space-3) var(--ds-space-10) var(--ds-space-3) var(--ds-space-4);
    min-height: 40px;
    font-family: var(--ds-font-family);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-normal);
    line-height: var(--ds-leading-normal);
    color: var(--ds-text-primary);
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-input);
    cursor: pointer;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right var(--ds-space-3) center;
    background-size: 16px 16px;
    transition: var(--ds-transition-border), var(--ds-transition-shadow);
    appearance: none;
}

.ds-form-select:hover {
    border-color: var(--ds-border-strong);
}

.ds-form-select:focus {
    outline: none;
    border-color: var(--ds-primary);
    box-shadow: var(--ds-focus-ring);
}

.ds-form-select:disabled {
    background-color: var(--ds-bg-secondary);
    color: var(--ds-text-disabled);
    cursor: not-allowed;
    opacity: 0.6;
}

.ds-form-textarea {
    all: unset;
    box-sizing: border-box;
    display: block;
    width: 100%;
    padding: var(--ds-space-3) var(--ds-space-4);
    min-height: 80px;
    font-family: var(--ds-font-family);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-normal);
    line-height: var(--ds-leading-relaxed);
    color: var(--ds-text-primary);
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-input);
    resize: vertical;
    transition: var(--ds-transition-border), var(--ds-transition-shadow);
}

.ds-form-textarea::placeholder {
    color: var(--ds-text-muted);
}

.ds-form-textarea:hover {
    border-color: var(--ds-border-strong);
}

.ds-form-textarea:focus {
    outline: none;
    border-color: var(--ds-primary);
    box-shadow: var(--ds-focus-ring);
}

.ds-form-textarea:disabled {
    background-color: var(--ds-bg-secondary);
    color: var(--ds-text-disabled);
    cursor: not-allowed;
    opacity: 0.6;
    resize: none;
}

.ds-form-checkbox {
    all: unset;
    box-sizing: border-box;
    width: 18px;
    height: 18px;
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-sm);
    background-color: var(--ds-white);
    cursor: pointer;
    transition: var(--ds-transition-base);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.ds-form-checkbox:checked {
    background-color: var(--ds-primary);
    border-color: var(--ds-primary);
}

.ds-form-checkbox:checked::after {
    content: '✓';
    color: white;
    font-size: 12px;
    font-weight: bold;
}

.ds-form-checkbox:hover {
    border-color: var(--ds-primary);
}

.ds-form-checkbox:focus {
    outline: none;
    box-shadow: var(--ds-focus-ring);
}

.ds-form-checkbox:disabled {
    background-color: var(--ds-bg-secondary);
    cursor: not-allowed;
    opacity: 0.6;
}

.ds-form-group {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-2);
}

.ds-form-help {
    font-size: var(--ds-text-xs);
    color: var(--ds-text-secondary);
    margin-top: calc(-1 * var(--ds-space-1));
}

/* ============================================
   RESPONSIVE DESIGN
   ============================================ */

@media (max-width: 1024px) {
    .ds-form-grid--4-cols {
        grid-template-columns: repeat(2, 1fr);
    }

    .ds-form-col-span-4 {
        grid-column: span 2;
    }
}

@media (max-width: 768px) {
    .ds-form-grid--2-cols,
    .ds-form-grid--3-cols,
    .ds-form-grid--4-cols {
        grid-template-columns: 1fr;
    }

    .ds-form-col-span-2,
    .ds-form-col-span-3,
    .ds-form-col-span-4 {
        grid-column: span 1;
    }

    .ds-form-section__header,
    .ds-form-section__body,
    .ds-form-section__footer {
        padding: var(--ds-space-4);
    }

    .ds-form-field--inline {
        flex-direction: column;
        align-items: flex-start;
    }

    .ds-form-field--inline .ds-form-label {
        min-width: 0;
    }

    .ds-form-field--inline .ds-form-hint,
    .ds-form-field--inline .ds-form-error {
        margin-left: 0;
        margin-top: calc(-1 * var(--ds-space-1));
    }

    .ds-form-field-group {
        flex-direction: column;
    }

    .ds-form-actions {
        flex-direction: column;
        align-items: stretch;
    }

    .ds-form-section__footer {
        flex-direction: column;
        align-items: stretch;
    }

    .ds-form-checkbox-group--inline,
    .ds-form-radio-group--inline {
        flex-direction: column;
    }
}
/**
 * OptiGest360 - Modals & Forms
 * Styles pour les modales et formulaires personnalisés
 */

/* ============================================
   MODAL OVERLAY
   ============================================ */

.modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.5);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    padding: 1rem;
    overflow-y: auto;
}

.modal-overlay.active {
    display: flex;
}

/* ============================================
   MODAL CONTAINER
   ============================================ */

.modal {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    padding: 1rem;
    overflow-y: auto;
}

.modal.active {
    display: flex;
}

.modal .modal-content,
.modal > div:not(.modal-content) {
    background: var(--ds-white, white);
    border-radius: var(--ds-radius-lg, 12px);
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    width: 100%;
    max-width: 600px;
    max-height: 90vh;
    display: flex;
    flex-direction: column;
    animation: modalSlideIn 0.3s ease-out;
    overflow-y: auto;
}

/* When .modal is nested inside a .modal-overlay it is the white content
   card, NOT a standalone overlay. Neutralise the standalone overlay props
   from the base .modal rule above and apply content-card styling. The
   parent .modal-overlay handles backdrop, fixed positioning and visibility
   via its .active toggle. */
.modal-overlay > .modal {
    position: static;
    inset: auto;
    background: var(--ds-white, white);
    display: flex;
    flex-direction: column;
    z-index: auto;
    padding: 0;
    width: 100%;
    max-width: 600px;
    max-height: 90vh;
    border-radius: var(--ds-radius-lg, 12px);
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    overflow: hidden;
    animation: modalSlideIn 0.3s ease-out;
}

.modal-overlay > .modal.modal-md { max-width: 640px; }
.modal-overlay > .modal.modal-lg { max-width: 800px; }
.modal-overlay > .modal.modal-xl { max-width: 1000px; }
.modal-overlay > .modal.modal-sm { max-width: 420px; }

/* Counter the legacy `.modal > div:not(.modal-content) { display:flex; flex-direction:column; … }`
   rule which treats every direct child of .modal as a "content card" — that
   makes the header/footer stack their children vertically and inflates them.
   In the overlay+modal pattern those direct children are simple containers. */
.modal-overlay > .modal > .modal-header,
.modal-overlay > .modal > .modal-body,
.modal-overlay > .modal > .modal-footer,
.modal-overlay > .modal > form {
    background: transparent;
    border-radius: 0;
    box-shadow: none;
    max-width: none;
    max-height: none;
    width: auto;
    flex-direction: row;
    animation: none;
}
.modal-overlay > .modal > .modal-header {
    align-items: center;
    justify-content: space-between;
    flex: 0 0 auto;
    padding: 1rem 1.5rem;
    border-bottom: 1px solid var(--ds-border-subtle, #f3f4f6);
}
.modal-overlay > .modal > .modal-header > .modal-title {
    margin: 0;
    line-height: 1.3;
}
.modal-overlay > .modal > .modal-header > .modal-close {
    box-sizing: border-box;
    width: 32px;
    height: 32px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    line-height: 1;
}
.modal-overlay > .modal > .modal-body {
    flex-direction: column;
    flex: 1 1 auto;
    overflow-y: auto;
}
.modal-overlay > .modal > .modal-footer {
    align-items: center;
    justify-content: flex-end;
    gap: 0.75rem;
    flex: 0 0 auto;
}
.modal-overlay > .modal > form {
    flex-direction: column;
    flex: 1 1 auto;
    overflow: hidden;
    min-height: 0;
}
.modal-overlay > .modal > form > .modal-body {
    overflow-y: auto;
    flex: 1 1 auto;
}

/* Ensure body of overlay-nested modals has comfortable breathing room. */
.modal-overlay > .modal > .modal-body {
    padding: 1.5rem 1.75rem;
    overflow-y: auto;
}
.modal-overlay > .modal > .modal-header {
    padding: 1.25rem 1.75rem;
}
.modal-overlay > .modal > .modal-footer {
    padding: 1rem 1.75rem;
}

.modal-lg {
    max-width: 800px;
}

.modal-xl {
    max-width: 1000px;
}

.modal-sm {
    max-width: 400px;
}

@keyframes modalSlideIn {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ============================================
   MODAL HEADER
   ============================================ */

.modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.5rem;
    border-bottom: 1px solid var(--ds-border-subtle, #f3f4f6);
}

.modal-title {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--ds-text-primary, #111827);
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.modal-title i {
    color: var(--ds-primary, #06352c);
}

.modal-close {
    all: unset;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--ds-radius-md, 8px);
    color: var(--ds-text-secondary, #6b7280);
    cursor: pointer;
    transition: all 0.2s;
}

.modal-close:hover {
    background-color: var(--ds-bg-secondary, #f3f4f6);
    color: var(--ds-text-primary, #111827);
}

/* ============================================
   MODAL BODY
   ============================================ */

.modal-body {
    flex: 1;
    padding: 1.5rem;
    overflow-y: auto;
}

.modal-body::-webkit-scrollbar {
    width: 6px;
}

.modal-body::-webkit-scrollbar-track {
    background: var(--ds-bg-secondary, #f3f4f6);
}

.modal-body::-webkit-scrollbar-thumb {
    background: var(--ds-border-default, #e5e7eb);
    border-radius: 3px;
}

/* ============================================
   MODAL FOOTER
   ============================================ */

.modal-footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.75rem;
    padding: 1rem 1.5rem;
    border-top: 1px solid var(--ds-border-subtle, #f3f4f6);
}

/* ============================================
   MODAL SECTIONS
   ============================================ */

.modal-section-title {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--ds-text-primary, #111827);
    margin-bottom: 1rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.modal-divider {
    height: 1px;
    background-color: var(--ds-border-subtle, #f3f4f6);
    margin: 1.5rem 0;
}

/* ============================================
   IMPORT MODAL PATTERN
   Used by client/invoice/template import modals.
   ============================================ */

.import-info-box {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    background: var(--ds-info-50, #eff6ff);
    border: 1px solid var(--ds-info-200, #bfdbfe);
    border-radius: var(--ds-radius-md, 8px);
    padding: 1rem 1.125rem;
    margin-bottom: 1.5rem;
    font-size: 0.875rem;
    color: var(--ds-text-primary);
    line-height: 1.5;
}

.import-info-box > i {
    color: var(--ds-info, #3b82f6);
    font-size: 1.125rem;
    flex-shrink: 0;
    margin-top: 2px;
}

.download-template-link {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    margin-top: 0.5rem;
    color: var(--ds-info, #3b82f6);
    font-weight: 500;
    text-decoration: none;
}

.download-template-link:hover {
    text-decoration: underline;
}

.file-upload-area {
    position: relative;
    margin-bottom: 1rem;
}

.file-upload-label {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 2rem 1.5rem;
    border: 2px dashed var(--ds-border-default, #e5e7eb);
    border-radius: var(--ds-radius-lg, 12px);
    background: var(--ds-bg-secondary, #f9fafb);
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
    text-align: center;
}

.file-upload-label:hover {
    border-color: var(--ds-primary, #06352c);
    background: var(--ds-primary-50, #f0f5f3);
}

.file-upload-label > i {
    font-size: 2rem;
    color: var(--ds-text-tertiary, #9ca3af);
}

.upload-text {
    font-weight: 600;
    color: var(--ds-text-primary, #111827);
    font-size: 0.95rem;
}

.upload-subtext {
    font-size: 0.85rem;
    color: var(--ds-text-secondary, #6b7280);
}

.upload-formats {
    font-size: 0.75rem;
    color: var(--ds-text-tertiary, #9ca3af);
    margin-top: 0.25rem;
}

.file-info {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.75rem 1rem;
    background: var(--ds-success-50, #f0fdf4);
    border: 1px solid var(--ds-success-200, #bbf7d0);
    border-radius: var(--ds-radius-md, 8px);
    font-size: 0.875rem;
    color: var(--ds-text-primary);
}

.file-info.hidden {
    display: none;
}

.file-info > i {
    color: var(--ds-success, #16a34a);
    font-size: 1.125rem;
}

.file-info .file-name {
    flex: 1;
    font-weight: 500;
}

.btn-remove-file {
    background: transparent;
    border: none;
    cursor: pointer;
    color: var(--ds-text-tertiary, #9ca3af);
    padding: 4px 6px;
    border-radius: var(--ds-radius-sm, 6px);
    transition: background 0.15s, color 0.15s;
}

.btn-remove-file:hover {
    background: var(--ds-danger-50, #fef2f2);
    color: var(--ds-danger, #dc2626);
}

.checkbox-option {
    display: flex;
    align-items: flex-start;
    gap: 0.625rem;
    padding: 0.75rem;
    border: 1px solid var(--ds-border-default, #e5e7eb);
    border-radius: var(--ds-radius-md, 8px);
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
}

.checkbox-option:hover {
    border-color: var(--ds-primary, #06352c);
    background: var(--ds-bg-secondary, #f9fafb);
}

.checkbox-option > input[type="checkbox"] {
    margin-top: 2px;
    accent-color: var(--ds-primary, #06352c);
}

.checkbox-option-label {
    flex: 1;
}

.checkbox-option-title {
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--ds-text-primary);
}

.checkbox-option-description {
    font-size: 0.8rem;
    color: var(--ds-text-secondary);
    margin-top: 2px;
}

.import-instructions {
    margin-top: 0.75rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--ds-border-subtle, #f3f4f6);
}

.instruction-title {
    font-weight: 600;
    font-size: 0.875rem;
    margin-bottom: 0.75rem;
    color: var(--ds-text-primary);
}

.instruction-table {
    border: 1px solid var(--ds-border-default, #e5e7eb);
    border-radius: var(--ds-radius-md, 8px);
    overflow: hidden;
    font-size: 0.8rem;
}

.instruction-row {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
}

.instruction-row > span {
    padding: 0.5rem 0.75rem;
    border-right: 1px solid var(--ds-border-default, #e5e7eb);
    color: var(--ds-text-secondary);
}

.instruction-row > span:last-child {
    border-right: none;
}

.instruction-row.header {
    background: var(--ds-bg-secondary, #f9fafb);
    border-bottom: 1px solid var(--ds-border-default, #e5e7eb);
}

.instruction-row.header > span {
    font-weight: 600;
    color: var(--ds-text-primary);
}

/* ============================================
   FORM ELEMENTS
   ============================================ */

.modal-form {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.form-row.single {
    grid-template-columns: 1fr;
}

.form-group {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.form-label {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--ds-text-primary, #111827);
}

.form-label.required::after {
    content: ' *';
    color: var(--ds-danger, #ef4444);
}

.form-input,
.form-select,
.form-textarea {
    padding: 0.625rem 0.875rem;
    font-size: 0.875rem;
    color: var(--ds-text-primary, #111827);
    background-color: white;
    border: 1px solid var(--ds-border-default, #e5e7eb);
    border-radius: var(--ds-radius-input, 6px);
    transition: all 0.2s;
}

.form-input:focus,
.form-select:focus,
.form-textarea:focus {
    outline: none;
    border-color: var(--ds-primary, #06352c);
    box-shadow: 0 0 0 3px rgba(6, 53, 44, 0.1);
}

.form-input::placeholder {
    color: var(--ds-text-tertiary, #9ca3af);
}

.form-textarea {
    min-height: 80px;
    resize: vertical;
}

.form-hint {
    font-size: 0.75rem;
    color: var(--ds-text-secondary, #6b7280);
    margin-top: -0.25rem;
}

.form-hint i {
    margin-right: 0.25rem;
}

/* ============================================
   RADIO GROUP
   ============================================ */

.radio-group {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1rem;
}

.radio-option {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 1rem;
    border: 2px solid var(--ds-border-default, #e5e7eb);
    border-radius: var(--ds-radius-md, 8px);
    cursor: pointer;
    transition: all 0.2s;
}

.radio-option:hover {
    border-color: var(--ds-primary, #06352c);
    background-color: var(--ds-primary-light, #fce7ec);
}

.radio-option input[type="radio"] {
    margin-top: 0.25rem;
    width: 18px;
    height: 18px;
    cursor: pointer;
}

.radio-option input[type="radio"]:checked ~ .radio-option-label {
    color: var(--ds-primary, #06352c);
}

.radio-option:has(input[type="radio"]:checked) {
    border-color: var(--ds-primary, #06352c);
    background-color: var(--ds-primary-light, #fce7ec);
}

.radio-option-label {
    flex: 1;
}

.radio-option-title {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--ds-text-primary, #111827);
    margin-bottom: 0.25rem;
}

.radio-option-description {
    font-size: 0.75rem;
    color: var(--ds-text-secondary, #6b7280);
}

/* ============================================
   CHECKBOX GROUP
   ============================================ */

.checkbox-group {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.checkbox-option {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    cursor: pointer;
}

.checkbox-option input[type="checkbox"] {
    margin-top: 0.25rem;
    width: 18px;
    height: 18px;
    cursor: pointer;
}

.checkbox-option-label {
    flex: 1;
}

.checkbox-option-title {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--ds-text-primary, #111827);
}

.checkbox-option-description {
    font-size: 0.75rem;
    color: var(--ds-text-secondary, #6b7280);
    margin-top: 0.25rem;
}

/* ============================================
   FILE UPLOAD
   ============================================ */

.file-upload {
    border: 2px dashed var(--ds-border-default, #e5e7eb);
    border-radius: var(--ds-radius-md, 8px);
    padding: 2rem;
    text-align: center;
    cursor: pointer;
    transition: all 0.2s;
}

.file-upload:hover {
    border-color: var(--ds-primary, #06352c);
    background-color: var(--ds-primary-light, #fce7ec);
}

.file-upload input[type="file"] {
    display: none;
}

.file-upload-icon {
    font-size: 2rem;
    color: var(--ds-text-tertiary, #9ca3af);
    margin-bottom: 0.75rem;
}

.file-upload-text {
    font-size: 0.875rem;
    color: var(--ds-text-primary, #111827);
}

.file-upload-hint {
    font-size: 0.75rem;
    color: var(--ds-text-secondary, #6b7280);
    margin-top: 0.5rem;
}

/* ============================================
   COLOR PICKER
   ============================================ */

.color-picker-group {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.color-preview {
    width: 48px;
    height: 48px;
    border-radius: var(--ds-radius-md, 8px);
    border: 2px solid var(--ds-border-default, #e5e7eb);
    cursor: pointer;
}

.color-input {
    flex: 1;
}

input[type="color"] {
    width: 0;
    height: 0;
    opacity: 0;
    position: absolute;
}

/* ============================================
   SELECT WITH ICON
   ============================================ */

.select-with-icon {
    position: relative;
}

.select-with-icon i {
    position: absolute;
    left: 0.875rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--ds-text-tertiary, #9ca3af);
    pointer-events: none;
}

.select-with-icon .form-select {
    padding-left: 2.5rem;
}

/* ============================================
   INFO BOX
   ============================================ */

.info-box {
    padding: 1rem;
    background-color: var(--ds-info-light, #dbeafe);
    border-left: 4px solid var(--ds-info, #3b82f6);
    border-radius: var(--ds-radius-md, 8px);
    font-size: 0.875rem;
    color: var(--ds-text-primary, #111827);
}

.info-box-title {
    font-weight: 600;
    margin-bottom: 0.5rem;
}

/* ============================================
   WARNING BOX
   ============================================ */

.warning-box {
    padding: 1rem;
    background-color: var(--ds-warning-light, #fef3c7);
    border-left: 4px solid var(--ds-warning, #f59e0b);
    border-radius: var(--ds-radius-md, 8px);
    font-size: 0.875rem;
    color: var(--ds-text-primary, #111827);
}

.warning-box-title {
    font-weight: 600;
    margin-bottom: 0.5rem;
}

/* ============================================
   TABLE IN MODAL
   ============================================ */

.modal-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.modal-table thead {
    background-color: var(--ds-bg-secondary, #f3f4f6);
}

.modal-table th {
    padding: 0.75rem 1rem;
    text-align: left;
    font-weight: 600;
    color: var(--ds-text-primary, #111827);
    border-bottom: 1px solid var(--ds-border-default, #e5e7eb);
}

.modal-table td {
    padding: 0.75rem 1rem;
    color: var(--ds-text-primary, #111827);
    border-bottom: 1px solid var(--ds-border-subtle, #f3f4f6);
}

.modal-table tbody tr:hover {
    background-color: var(--ds-bg-secondary, #f3f4f6);
}

/* ============================================
   RESPONSIVE
   ============================================ */

@media (max-width: 640px) {
    .modal {
        max-width: 100%;
        max-height: 100%;
        border-radius: 0;
    }

    .form-row {
        grid-template-columns: 1fr;
    }

    .radio-group {
        grid-template-columns: 1fr;
    }

    .modal-footer {
        flex-direction: column-reverse;
    }

    .modal-footer button,
    .modal-footer .ds-btn {
        width: 100%;
    }
}


/* === Imported from: ./patterns/empty-state.css === */

/**
 * Design System OptiGest360
 * Pattern: EmptyState
 *
 * État vide pour listes, recherches sans résultat, etc.
 */

/* ============================================
   EMPTY STATE CONTAINER
   ============================================ */

.ds-empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--ds-space-12) var(--ds-space-6);
    text-align: center;
    background-color: var(--ds-bg-secondary);
    border-radius: var(--ds-radius-card);
}

/* ============================================
   EMPTY STATE ELEMENTS
   ============================================ */

.ds-empty-state__icon {
    width: 80px;
    height: 80px;
    margin-bottom: var(--ds-space-6);
    color: var(--ds-text-tertiary);
    display: flex;
    align-items: center;
    justify-content: center;
}

.ds-empty-state__icon svg,
.ds-empty-state__icon i {
    width: 100%;
    height: 100%;
    font-size: 80px;
}

.ds-empty-state__title {
    font-size: var(--ds-text-xl);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin-bottom: var(--ds-space-3);
}

.ds-empty-state__description {
    font-size: var(--ds-text-base);
    color: var(--ds-text-secondary);
    margin-bottom: var(--ds-space-6);
    max-width: 400px;
}

.ds-empty-state__actions {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--ds-space-3);
    flex-wrap: wrap;
}

/* ============================================
   EMPTY STATE MODIFIERS
   ============================================ */

/* Compact Empty State */
.ds-empty-state--compact {
    padding: var(--ds-space-8) var(--ds-space-4);
}

.ds-empty-state--compact .ds-empty-state__icon {
    width: 48px;
    height: 48px;
    margin-bottom: var(--ds-space-4);
}

.ds-empty-state--compact .ds-empty-state__icon svg,
.ds-empty-state--compact .ds-empty-state__icon i {
    font-size: 48px;
}

.ds-empty-state--compact .ds-empty-state__title {
    font-size: var(--ds-text-lg);
    margin-bottom: var(--ds-space-2);
}

.ds-empty-state--compact .ds-empty-state__description {
    font-size: var(--ds-text-sm);
    margin-bottom: var(--ds-space-4);
}

/* Inline Empty State (no background) */
.ds-empty-state--inline {
    background-color: transparent;
    padding: var(--ds-space-8) var(--ds-space-4);
}

/* ============================================
   RESPONSIVE DESIGN
   ============================================ */

@media (max-width: 768px) {
    .ds-empty-state {
        padding: var(--ds-space-8) var(--ds-space-4);
    }

    .ds-empty-state__icon {
        width: 64px;
        height: 64px;
    }

    .ds-empty-state__icon svg,
    .ds-empty-state__icon i {
        font-size: 64px;
    }

    .ds-empty-state__title {
        font-size: var(--ds-text-lg);
    }

    .ds-empty-state__description {
        font-size: var(--ds-text-sm);
    }

    .ds-empty-state__actions {
        flex-direction: column;
        width: 100%;
    }
}


/* === Imported from: ./patterns/entity-card.css === */

/**
 * Design System OptiGest360
 * Pattern: Entity Card
 *
 * Carte réutilisable pour afficher des entités (clients, fournisseurs, employés, etc.)
 * Utilisable en grid layout avec avatar, infos de contact et stats
 */

/* ============================================
   ENTITY GRID LAYOUT
   ============================================ */

.ds-entity-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: var(--ds-space-6);
}

.ds-entity-grid--compact {
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: var(--ds-space-4);
}

.ds-entity-grid--wide {
    grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
}

/* ============================================
   ENTITY CARD
   ============================================ */

.ds-entity-card {
    background: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-lg);
    overflow: hidden;
    transition: all var(--ds-duration-base);
    display: flex;
    flex-direction: column;
}

.ds-entity-card:hover {
    box-shadow: var(--ds-shadow-md);
    transform: translateY(-2px);
}

/* Clickable variant */
.ds-entity-card--clickable {
    cursor: pointer;
}

/* ============================================
   ENTITY CARD HEADER
   ============================================ */

.ds-entity-card__header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: var(--ds-space-6);
    padding-bottom: var(--ds-space-4);
    border-bottom: 1px solid var(--ds-border-subtle);
}

/* ============================================
   ENTITY CARD AVATAR
   ============================================ */

.ds-entity-card__avatar {
    width: 56px;
    height: 56px;
    background: var(--ds-primary);
    color: var(--ds-white);
    border-radius: var(--ds-radius-full);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.25rem;
    font-weight: var(--ds-font-semibold);
    flex-shrink: 0;
    overflow: hidden;
}

.ds-entity-card__avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Avatar variants */
.ds-entity-card__avatar--sm {
    width: 48px;
    height: 48px;
    font-size: 1.125rem;
}

.ds-entity-card__avatar--lg {
    width: 64px;
    height: 64px;
    font-size: 1.5rem;
}

/* ============================================
   ENTITY CARD BODY
   ============================================ */

.ds-entity-card__body {
    padding: var(--ds-space-6);
    flex: 1;
}

.ds-entity-card__name {
    font-size: var(--ds-text-lg);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin-bottom: var(--ds-space-1);
    line-height: var(--ds-leading-tight);
}

.ds-entity-card__type {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    margin-bottom: var(--ds-space-4);
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

/* ============================================
   ENTITY CARD CONTACTS
   ============================================ */

.ds-entity-card__contacts {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-2);
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
}

.ds-entity-card__contact-item {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.ds-entity-card__contact-icon {
    width: 16px;
    text-align: center;
    color: var(--ds-text-tertiary);
    flex-shrink: 0;
}

.ds-entity-card__contact-text {
    flex: 1;
    min-width: 0;
}

/* ============================================
   ENTITY CARD FOOTER
   ============================================ */

.ds-entity-card__footer {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
    gap: var(--ds-space-4);
    padding: var(--ds-space-4) var(--ds-space-6);
    background: var(--ds-bg-secondary);
    border-top: 1px solid var(--ds-border-subtle);
}

.ds-entity-card__stat {
    text-align: center;
}

.ds-entity-card__stat-value {
    font-size: var(--ds-text-xl);
    font-weight: var(--ds-font-bold);
    color: var(--ds-text-primary);
    line-height: var(--ds-leading-tight);
}

.ds-entity-card__stat-label {
    font-size: var(--ds-text-xs);
    color: var(--ds-text-tertiary);
    margin-top: var(--ds-space-1);
}

/* ============================================
   ENTITY CARD ACTIONS
   ============================================ */

.ds-entity-card__actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--ds-space-4) var(--ds-space-6);
    border-top: 1px solid var(--ds-border-subtle);
    gap: var(--ds-space-2);
}

/* ============================================
   ENTITY FILTERS
   ============================================ */

.ds-entity-filters {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    margin-bottom: var(--ds-space-6);
    gap: var(--ds-space-2);
    flex-wrap: wrap;
}

.ds-entity-filters__left {
    flex: 1;
    display: flex;
    gap: var(--ds-space-2);
}

.ds-entity-filters__right {
    display: flex;
    gap: var(--ds-space-2);
}

/* ============================================
   ENTITY CATEGORIES (Summary Cards)
   ============================================ */

.ds-entity-categories {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--ds-space-4);
    margin-bottom: var(--ds-space-6);
}

/* ============================================
   VIEW SWITCHER
   ============================================ */

.ds-view-switcher {
    display: inline-flex;
    gap: 0;
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
    overflow: hidden;
}

.ds-view-switcher__btn {
    all: unset;
    padding: var(--ds-space-2) var(--ds-space-3);
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    cursor: pointer;
    transition: all var(--ds-duration-fast);
    border-right: 1px solid var(--ds-border-default);
}

.ds-view-switcher__btn:last-child {
    border-right: none;
}

.ds-view-switcher__btn:hover {
    background: var(--ds-bg-secondary);
    color: var(--ds-text-primary);
}

.ds-view-switcher__btn.is-active {
    background: var(--ds-primary);
    color: var(--ds-white);
}

/* ============================================
   RESPONSIVE
   ============================================ */

@media (max-width: 768px) {
    .ds-entity-grid,
    .ds-entity-grid--compact,
    .ds-entity-grid--wide {
        grid-template-columns: 1fr;
    }

    .ds-entity-card__footer {
        grid-template-columns: repeat(2, 1fr);
    }

    .ds-entity-filters {
        flex-direction: column;
        align-items: stretch;
    }

    .ds-entity-filters__left,
    .ds-entity-filters__right {
        width: 100%;
        flex-direction: column;
    }

    .ds-entity-categories {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .ds-entity-card__footer {
        grid-template-columns: 1fr;
    }

    .ds-entity-categories {
        grid-template-columns: 1fr;
    }
}


/* === Imported from: ./patterns/detail-page.css === */

/**
 * Design System OptiGest360
 * Pattern: Detail Page
 *
 * Layouts et composants pour les pages de détail (factures, devis, clients, etc.)
 */

/* ============================================
   DETAIL LAYOUT
   ============================================ */

.ds-detail-layout {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: var(--ds-space-6);
    align-items: start;
}

@media (max-width: 1024px) {
    .ds-detail-layout {
        grid-template-columns: 1fr;
    }
}

.ds-detail-layout__main {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-6);
}

.ds-detail-layout__sidebar {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-6);
    position: sticky;
    top: var(--ds-space-6);
}

@media (max-width: 1024px) {
    .ds-detail-layout__sidebar {
        position: static;
    }
}

/* ============================================
   BREADCRUMB
   ============================================ */

.ds-breadcrumb {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
    margin-bottom: var(--ds-space-2);
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
}

.ds-breadcrumb__link {
    color: var(--ds-primary);
    text-decoration: none;
}

.ds-breadcrumb__link:hover {
    text-decoration: underline;
}

.ds-breadcrumb__separator {
    font-size: var(--ds-text-xs);
    color: var(--ds-text-tertiary);
}

.ds-breadcrumb__current {
    color: var(--ds-text-primary);
}

/* ============================================
   DOCUMENT PREVIEW (Invoice, Quote, etc.)
   ============================================ */

.ds-document {
    padding: var(--ds-space-8);
}

.ds-document__header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: var(--ds-space-8);
    padding-bottom: var(--ds-space-6);
    border-bottom: 2px solid var(--ds-border-default);
}

.ds-document__company-name {
    font-size: var(--ds-text-2xl);
    font-weight: var(--ds-font-bold);
    color: var(--ds-text-primary);
    margin: 0 0 var(--ds-space-3) 0;
}

.ds-document__company-info {
    color: var(--ds-text-secondary);
    font-size: var(--ds-text-sm);
    line-height: 1.6;
    margin: 0;
}

.ds-document__title {
    text-align: right;
}

.ds-document__title-text {
    font-size: var(--ds-text-3xl);
    font-weight: var(--ds-font-bold);
    color: var(--ds-primary);
    margin: 0 0 var(--ds-space-2) 0;
}

.ds-document__number {
    font-size: var(--ds-text-lg);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin-bottom: var(--ds-space-4);
}

.ds-document__dates {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-2);
}

.ds-document__date-row {
    display: flex;
    justify-content: space-between;
    gap: var(--ds-space-4);
}

.ds-document__date-label {
    color: var(--ds-text-secondary);
    font-size: var(--ds-text-sm);
}

.ds-document__date-value {
    color: var(--ds-text-primary);
    font-weight: var(--ds-font-semibold);
    font-size: var(--ds-text-sm);
}

/* Document Party (Billed To) */
.ds-document__party {
    margin-bottom: var(--ds-space-8);
}

.ds-document__party-box {
    background: var(--ds-gray-50);
    padding: var(--ds-space-5);
    border-radius: var(--ds-radius-md);
    border: 1px solid var(--ds-border-default);
}

.ds-document__party-label {
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-secondary);
    margin: 0 0 var(--ds-space-3) 0;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.ds-document__party-content {
    color: var(--ds-text-primary);
    font-size: var(--ds-text-base);
    line-height: 1.6;
}

.ds-document__party-name {
    font-weight: var(--ds-font-semibold);
}

/* Document Table */
.ds-document__table-wrapper {
    margin-bottom: var(--ds-space-8);
    overflow-x: auto;
}

.ds-document__table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--ds-text-sm);
}

.ds-document__table thead tr {
    background: var(--ds-gray-100);
    border-bottom: 2px solid var(--ds-border-default);
}

.ds-document__table th {
    padding: var(--ds-space-3);
    text-align: left;
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
}

.ds-document__table th.ds-text-center { text-align: center; }
.ds-document__table th.ds-text-right { text-align: right; }

.ds-document__table tbody tr {
    border-bottom: 1px solid var(--ds-border-default);
}

.ds-document__table td {
    padding: var(--ds-space-4) var(--ds-space-3);
    color: var(--ds-text-primary);
}

.ds-document__table td.ds-text-center { text-align: center; }
.ds-document__table td.ds-text-right { text-align: right; }

.ds-document__item-name {
    color: var(--ds-text-primary);
    font-weight: var(--ds-font-semibold);
}

.ds-document__item-description {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    margin-top: var(--ds-space-1);
}

/* Document Totals */
.ds-document__totals {
    display: flex;
    justify-content: flex-end;
    margin-bottom: var(--ds-space-8);
}

.ds-document__totals-box {
    width: 100%;
    max-width: 400px;
    background: var(--ds-gray-50);
    padding: var(--ds-space-6);
    border-radius: var(--ds-radius-md);
    border: 1px solid var(--ds-border-default);
}

.ds-document__total-row {
    display: flex;
    justify-content: space-between;
    padding: var(--ds-space-2) 0;
}

.ds-document__total-row--bordered {
    border-bottom: 1px solid var(--ds-border-default);
}

.ds-document__total-row--grand {
    padding-top: var(--ds-space-4);
    border-top: 2px solid var(--ds-border-default);
    margin-top: var(--ds-space-2);
}

.ds-document__total-label {
    color: var(--ds-text-secondary);
}

.ds-document__total-label--large {
    font-size: var(--ds-text-lg);
    font-weight: var(--ds-font-bold);
    color: var(--ds-text-primary);
}

.ds-document__total-value {
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
}

.ds-document__total-value--large {
    font-size: var(--ds-text-xl);
    font-weight: var(--ds-font-bold);
    color: var(--ds-primary);
}

.ds-document__total-value--success {
    color: var(--ds-success);
}

/* Document Notes */
.ds-document__notes {
    margin-bottom: var(--ds-space-8);
    padding: var(--ds-space-5);
    background: var(--ds-gray-50);
    border-radius: var(--ds-radius-md);
    border-left: 3px solid var(--ds-primary);
}

.ds-document__notes-title {
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin: 0 0 var(--ds-space-2) 0;
    text-transform: uppercase;
}

.ds-document__notes-content {
    color: var(--ds-text-secondary);
    font-size: var(--ds-text-sm);
    line-height: 1.6;
    margin: 0 0 var(--ds-space-4) 0;
}

.ds-document__notes-content:last-child {
    margin-bottom: 0;
}

/* Document Footer */
.ds-document__footer {
    margin-top: var(--ds-space-8);
    padding-top: var(--ds-space-6);
    border-top: 2px solid var(--ds-border-default);
    text-align: center;
}

.ds-document__footer-text {
    color: var(--ds-text-secondary);
    font-size: var(--ds-text-sm);
    margin: 0;
}

/* ============================================
   TIMELINE
   ============================================ */

.ds-timeline {
    position: relative;
    padding-left: var(--ds-space-8);
}

.ds-timeline__line {
    position: absolute;
    left: 0.75rem;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--ds-border-default);
}

.ds-timeline__item {
    position: relative;
    margin-bottom: var(--ds-space-6);
}

.ds-timeline__item:last-child {
    margin-bottom: 0;
}

.ds-timeline__dot {
    position: absolute;
    left: -1.375rem;
    top: 0;
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 3px solid var(--ds-bg-primary);
}

.ds-timeline__dot--success { background: var(--ds-success); }
.ds-timeline__dot--primary { background: var(--ds-primary); }
.ds-timeline__dot--muted { background: var(--ds-gray-400); }
.ds-timeline__dot--warning { background: var(--ds-warning); }
.ds-timeline__dot--danger { background: var(--ds-danger); }

.ds-timeline__dot i {
    color: white;
    font-size: var(--ds-text-xs);
}

.ds-timeline__content {
    padding-left: var(--ds-space-4);
}

.ds-timeline__header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--ds-space-1);
}

.ds-timeline__title {
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
}

.ds-timeline__date {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
}

.ds-timeline__description {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    margin: 0;
}

/* ============================================
   INFO LIST (Key-Value pairs)
   ============================================ */

.ds-info-list {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-4);
}

.ds-info-list__item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: var(--ds-space-3);
    border-bottom: 1px solid var(--ds-border-light);
}

.ds-info-list__item:last-child {
    padding-bottom: 0;
    border-bottom: none;
}

.ds-info-list__label {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    font-weight: var(--ds-font-medium);
}

.ds-info-list__value {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-primary);
}

.ds-info-list__value--link {
    color: var(--ds-primary);
    text-decoration: none;
    font-weight: var(--ds-font-medium);
}

.ds-info-list__value--link:hover {
    text-decoration: underline;
}

.ds-info-list__value--large {
    font-size: var(--ds-text-base);
    color: var(--ds-primary);
    font-weight: var(--ds-font-bold);
}

/* ============================================
   SECTION HEADER (for cards)
   ============================================ */

.ds-section-header {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
    margin-bottom: var(--ds-space-6);
    padding-bottom: var(--ds-space-4);
    border-bottom: 1px solid var(--ds-border-default);
}

.ds-section-header__icon {
    color: var(--ds-primary);
}

.ds-section-header__title {
    font-size: var(--ds-text-lg);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin: 0;
}

/* ============================================
   QUICK ACTIONS
   ============================================ */

.ds-quick-actions {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-3);
}

.ds-quick-actions__divider {
    border-top: 1px solid var(--ds-border-default);
    margin: var(--ds-space-2) 0;
}

.ds-quick-actions .ds-btn {
    width: 100%;
}


/* === Imported from: ./patterns/timeline.css === */

/**
 * Design System OptiGest360
 * Pattern: Timeline
 *
 * Utilisé pour afficher l'historique et les événements chronologiques
 */

/* ============================================
   TIMELINE CONTAINER
   ============================================ */

.ds-timeline {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-4);
    position: relative;
}

/* Vertical line */
.ds-timeline::before {
    content: '';
    position: absolute;
    left: 20px;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--ds-border-default);
}

/* ============================================
   TIMELINE ITEM
   ============================================ */

.ds-timeline__item {
    display: flex;
    gap: var(--ds-space-4);
    position: relative;
    padding-left: var(--ds-space-6);
}

/* ============================================
   TIMELINE MARKER
   ============================================ */

.ds-timeline__marker {
    position: absolute;
    left: 12px;
    top: 4px;
    width: 16px;
    height: 16px;
    border-radius: var(--ds-radius-full);
    background: var(--ds-white);
    border: 2px solid var(--ds-primary);
    z-index: 1;
}

.ds-timeline__marker--success {
    border-color: var(--ds-success);
}

.ds-timeline__marker--warning {
    border-color: var(--ds-warning);
}

.ds-timeline__marker--danger {
    border-color: var(--ds-danger);
}

.ds-timeline__marker--neutral {
    border-color: var(--ds-border-default);
}

/* ============================================
   TIMELINE CONTENT
   ============================================ */

.ds-timeline__content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-2);
}

.ds-timeline__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--ds-space-4);
}

.ds-timeline__title {
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin: 0;
}

.ds-timeline__time {
    font-size: var(--ds-text-xs);
    color: var(--ds-text-tertiary);
    white-space: nowrap;
}

.ds-timeline__body {
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    line-height: 1.5;
}

.ds-timeline__meta {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
    font-size: var(--ds-text-xs);
    color: var(--ds-text-tertiary);
    margin-top: var(--ds-space-1);
}

/* ============================================
   TIMELINE VARIANTS
   ============================================ */

/* Compact timeline */
.ds-timeline--compact .ds-timeline__item {
    gap: var(--ds-space-3);
    padding-left: var(--ds-space-5);
}

.ds-timeline--compact::before {
    left: 16px;
}

.ds-timeline--compact .ds-timeline__marker {
    left: 10px;
    width: 12px;
    height: 12px;
}

/* Large timeline */
.ds-timeline--large .ds-timeline__item {
    gap: var(--ds-space-6);
}

.ds-timeline--large .ds-timeline__marker {
    width: 20px;
    height: 20px;
    left: 10px;
}

/* ============================================
   RESPONSIVE
   ============================================ */

@media (max-width: 768px) {
    .ds-timeline__header {
        flex-direction: column;
        align-items: flex-start;
    }

    .ds-timeline__time {
        margin-top: var(--ds-space-1);
    }
}


/* === Imported from: ./patterns/info-list.css === */

/**
 * Design System OptiGest360
 * Pattern: Info List
 *
 * Utilisé pour afficher les informations sous forme de paires label/valeur
 */

/* ============================================
   INFO LIST CONTAINER
   ============================================ */

.ds-info-list {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-4);
}

.ds-info-list--compact {
    gap: var(--ds-space-3);
}

.ds-info-list--spacious {
    gap: var(--ds-space-6);
}

/* ============================================
   INFO LIST ITEM
   ============================================ */

.ds-info-list__item {
    display: flex;
    align-items: flex-start;
    gap: var(--ds-space-4);
    padding: var(--ds-space-3) 0;
    border-bottom: 1px solid var(--ds-border-subtle);
}

.ds-info-list__item:last-child {
    border-bottom: none;
}

/* Item without borders */
.ds-info-list--borderless .ds-info-list__item {
    border-bottom: none;
    padding: var(--ds-space-2) 0;
}

/* ============================================
   INFO LIST LABEL
   ============================================ */

.ds-info-list__label {
    flex: 0 0 140px;
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-secondary);
    line-height: 1.5;
}

.ds-info-list--wide .ds-info-list__label {
    flex: 0 0 200px;
}

.ds-info-list--narrow .ds-info-list__label {
    flex: 0 0 100px;
}

/* ============================================
   INFO LIST VALUE
   ============================================ */

.ds-info-list__value {
    flex: 1;
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-normal);
    color: var(--ds-text-primary);
    line-height: 1.5;
    word-break: break-word;
}

.ds-info-list__value--strong {
    font-weight: var(--ds-font-semibold);
}

.ds-info-list__value--muted {
    color: var(--ds-text-secondary);
}

/* Value with icon */
.ds-info-list__value-icon {
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.ds-info-list__value-icon i {
    color: var(--ds-text-tertiary);
}

/* ============================================
   INFO LIST VARIANTS
   ============================================ */

/* Horizontal layout */
.ds-info-list--horizontal {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--ds-space-6);
}

.ds-info-list--horizontal .ds-info-list__item {
    flex-direction: column;
    gap: var(--ds-space-2);
    border-bottom: none;
    padding: 0;
}

.ds-info-list--horizontal .ds-info-list__label {
    flex: none;
}

/* Card style */
.ds-info-list--cards {
    gap: var(--ds-space-4);
}

.ds-info-list--cards .ds-info-list__item {
    background: var(--ds-bg-secondary);
    padding: var(--ds-space-4);
    border-radius: var(--ds-radius-md);
    border-bottom: none;
}

/* Striped rows */
.ds-info-list--striped .ds-info-list__item:nth-child(even) {
    background: var(--ds-bg-secondary);
    margin: 0 calc(-1 * var(--ds-space-4));
    padding-left: var(--ds-space-4);
    padding-right: var(--ds-space-4);
}

/* ============================================
   RESPONSIVE
   ============================================ */

@media (max-width: 768px) {
    .ds-info-list__item {
        flex-direction: column;
        gap: var(--ds-space-2);
    }

    .ds-info-list__label {
        flex: none;
    }

    .ds-info-list--horizontal {
        grid-template-columns: 1fr;
    }
}


/* === Imported from: ./patterns/price-display.css === */

/**
 * Design System OptiGest360
 * Pattern: Price Display
 *
 * Utilisé pour afficher les montants et prix de manière cohérente
 */

/* ============================================
   PRICE CONTAINER
   ============================================ */

.ds-price {
    display: inline-flex;
    align-items: baseline;
    gap: var(--ds-space-2);
    font-family: 'Courier New', monospace;
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
}

/* ============================================
   PRICE AMOUNT
   ============================================ */

.ds-price__amount {
    font-size: var(--ds-text-base);
    font-weight: var(--ds-font-semibold);
}

.ds-price__currency {
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-secondary);
}

/* ============================================
   PRICE SIZES
   ============================================ */

/* Small price */
.ds-price--sm {
    gap: var(--ds-space-1);
}

.ds-price--sm .ds-price__amount {
    font-size: var(--ds-text-sm);
}

.ds-price--sm .ds-price__currency {
    font-size: var(--ds-text-xs);
}

/* Large price */
.ds-price--lg {
    gap: var(--ds-space-3);
}

.ds-price--lg .ds-price__amount {
    font-size: var(--ds-text-2xl);
}

.ds-price--lg .ds-price__currency {
    font-size: var(--ds-text-base);
}

/* Extra large price */
.ds-price--xl {
    gap: var(--ds-space-3);
}

.ds-price--xl .ds-price__amount {
    font-size: var(--ds-text-3xl);
}

.ds-price--xl .ds-price__currency {
    font-size: var(--ds-text-lg);
}

/* ============================================
   PRICE COLORS
   ============================================ */

.ds-price--primary {
    color: var(--ds-primary);
}

.ds-price--success {
    color: var(--ds-success);
}

.ds-price--danger {
    color: var(--ds-danger);
}

.ds-price--warning {
    color: var(--ds-warning);
}

.ds-price--muted {
    color: var(--ds-text-secondary);
}

/* ============================================
   PRICE VARIANTS
   ============================================ */

/* Highlighted price */
.ds-price--highlighted {
    background: var(--ds-primary-light);
    color: var(--ds-primary);
    padding: var(--ds-space-2) var(--ds-space-3);
    border-radius: var(--ds-radius-md);
}

/* Strikethrough (old price) */
.ds-price--strikethrough {
    text-decoration: line-through;
    color: var(--ds-text-tertiary);
    font-weight: var(--ds-font-normal);
}

/* ============================================
   PRICE TABLE CELLS
   ============================================ */

.ds-price-cell {
    text-align: right;
    font-family: 'Courier New', monospace;
    font-weight: var(--ds-font-semibold);
    white-space: nowrap;
}

.ds-price-cell--total {
    font-size: var(--ds-text-lg);
    color: var(--ds-primary);
    border-top: 2px solid var(--ds-border-default);
    padding-top: var(--ds-space-3);
}

/* ============================================
   PRICE WITH LABEL
   ============================================ */

.ds-price-labeled {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-1);
}

.ds-price-labeled__label {
    font-size: var(--ds-text-xs);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-family: var(--ds-font-family);
}

.ds-price-labeled__value {
    font-family: 'Courier New', monospace;
    font-size: var(--ds-text-xl);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
}

/* ============================================
   PRICE COMPARISON
   ============================================ */

.ds-price-comparison {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
}

.ds-price-comparison__old {
    text-decoration: line-through;
    color: var(--ds-text-tertiary);
    font-size: var(--ds-text-sm);
}

.ds-price-comparison__new {
    font-size: var(--ds-text-lg);
    color: var(--ds-success);
    font-weight: var(--ds-font-bold);
}

.ds-price-comparison__badge {
    background: var(--ds-success);
    color: var(--ds-white);
    padding: var(--ds-space-1) var(--ds-space-2);
    border-radius: var(--ds-radius-sm);
    font-size: var(--ds-text-xs);
    font-weight: var(--ds-font-semibold);
}

/* ============================================
   RESPONSIVE
   ============================================ */

@media (max-width: 768px) {
    .ds-price--xl .ds-price__amount {
        font-size: var(--ds-text-2xl);
    }

    .ds-price--lg .ds-price__amount {
        font-size: var(--ds-text-xl);
    }
}



/* ============================================
   LAYOUTS
   ============================================ */


/* === Imported from: ./layouts/index.css === */

/**
 * Design System OptiGest360
 * Layouts: Index
 *
 * Layouts de structure d'application
 */


/* === Imported from: ./layouts/app-layout.css === */

/**
 * Design System OptiGest360
 * Layout: App Layout
 *
 * Structure principale de l'application (Sidebar + Topbar + Content)
 */

/* ============================================
   APP LAYOUT CONTAINER
   ============================================ */

.ds-app {
    display: flex;
    min-height: 100vh;
    background-color: var(--ds-bg-primary);
}

/* ============================================
   SIDEBAR
   ============================================ */

.ds-sidebar {
    width: 260px;
    background-color: var(--ds-white);
    border-right: 1px solid var(--ds-border-default);
    display: flex;
    flex-direction: column;
    flex-shrink: 0;
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    z-index: 40;
    transition: transform var(--ds-transition-base);
}

.ds-sidebar--collapsed {
    width: 80px;
}

.ds-sidebar__header {
    padding: var(--ds-space-6);
    border-bottom: 1px solid var(--ds-border-default);
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.ds-sidebar__logo {
    font-size: var(--ds-text-xl);
    font-weight: var(--ds-font-bold);
    color: var(--ds-primary);
    text-decoration: none;
}

.ds-sidebar__nav {
    flex: 1;
    overflow-y: auto;
    padding: var(--ds-space-4);
}

.ds-sidebar__footer {
    padding: var(--ds-space-4);
    border-top: 1px solid var(--ds-border-default);
}

/* ============================================
   MAIN CONTENT AREA
   ============================================ */

.ds-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    margin-left: 260px;
    transition: margin-left var(--ds-transition-base);
}

.ds-sidebar--collapsed ~ .ds-main {
    margin-left: 80px;
}

/* ============================================
   TOPBAR
   ============================================ */

.ds-topbar {
    height: 64px;
    background-color: var(--ds-white);
    border-bottom: 1px solid var(--ds-border-default);
    display: flex;
    align-items: center;
    padding: 0 var(--ds-space-6);
    gap: var(--ds-space-4);
    position: sticky;
    top: 0;
    z-index: 30;
}

.ds-topbar__left {
    display: flex;
    align-items: center;
    gap: var(--ds-space-4);
}

.ds-topbar__center {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

.ds-topbar__right {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
}

.ds-topbar__title {
    font-size: var(--ds-text-xl);
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    margin: 0;
}

/* ============================================
   CONTENT AREA
   ============================================ */

.ds-content {
    flex: 1;
    padding: var(--ds-space-6);
    background-color: var(--ds-bg-secondary);
}

.ds-content--centered {
    max-width: 1280px;
    margin: 0 auto;
    width: 100%;
}

.ds-content--narrow {
    max-width: 960px;
    margin: 0 auto;
    width: 100%;
}

.ds-content--wide {
    max-width: 1536px;
    margin: 0 auto;
    width: 100%;
}

/* ============================================
   PAGE HEADER
   ============================================ */

.ds-page-header {
    margin-bottom: var(--ds-space-6);
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--ds-space-4);
    flex-wrap: wrap;
}

.ds-page-header__title {
    font-size: var(--ds-text-3xl);
    font-weight: var(--ds-font-bold);
    color: var(--ds-text-primary);
    margin: 0;
}

.ds-page-header__subtitle {
    font-size: var(--ds-text-base);
    color: var(--ds-text-secondary);
    margin-top: var(--ds-space-2);
}

.ds-page-header__actions {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
}

/* ============================================
   BREADCRUMBS
   ============================================ */

.ds-breadcrumb {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
    font-size: var(--ds-text-sm);
    color: var(--ds-text-secondary);
    margin-bottom: var(--ds-space-4);
}

.ds-breadcrumb__item {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.ds-breadcrumb__link {
    color: var(--ds-text-secondary);
    text-decoration: none;
    transition: var(--ds-transition-base);
}

.ds-breadcrumb__link:hover {
    color: var(--ds-primary);
}

.ds-breadcrumb__separator {
    color: var(--ds-text-tertiary);
}

.ds-breadcrumb__current {
    color: var(--ds-text-primary);
    font-weight: var(--ds-font-medium);
}

/* ============================================
   MOBILE RESPONSIVE
   ============================================ */

@media (max-width: 1024px) {
    .ds-sidebar {
        transform: translateX(-100%);
    }

    .ds-sidebar--open {
        transform: translateX(0);
    }

    .ds-main {
        margin-left: 0;
    }

    .ds-sidebar--collapsed ~ .ds-main {
        margin-left: 0;
    }

    /* Mobile overlay */
    .ds-sidebar-overlay {
        position: fixed;
        inset: 0;
        background-color: var(--ds-bg-overlay);
        z-index: 35;
        display: none;
    }

    .ds-sidebar--open ~ .ds-sidebar-overlay {
        display: block;
    }
}

@media (max-width: 768px) {
    .ds-topbar {
        padding: 0 var(--ds-space-4);
    }

    .ds-content {
        padding: var(--ds-space-4);
    }

    .ds-page-header {
        flex-direction: column;
        align-items: stretch;
    }

    .ds-page-header__title {
        font-size: var(--ds-text-2xl);
    }

    .ds-page-header__actions {
        flex-direction: column;
        align-items: stretch;
    }
}
/**
 * OptiGest360 - Sidebar Navigation
 */

/* ============================================
   SIDEBAR CONTAINER
   ============================================ */

.sidebar {
    position: fixed;
    top: 0;
    left: 0;
    height: 100vh;
    width: 280px;
    background: var(--ds-white, #ffffff);
    border-right: 1px solid var(--ds-border-default, #e5e7eb);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    transition: all 0.3s ease;
    z-index: 40;
}

.sidebar.collapsed {
    width: 68px;
}

.sidebar.collapsed .sidebar-header {
    padding: 1rem 0.5rem;
    justify-content: center;
    gap: 0;
}

.sidebar.collapsed .sidebar-logo {
    width: 40px;
    height: 40px;
    font-size: 1.1rem;
    border-radius: 10px;
}

.sidebar.collapsed .nav-link {
    justify-content: center;
    padding: 0.75rem;
    margin: 0.15rem 0.5rem;
    border-radius: 8px;
    position: relative;
}

.sidebar.collapsed .nav-link i {
    font-size: 1.05rem;
    width: auto;
}

.sidebar.collapsed .nav-link span {
    display: none;
}

/* Tooltip on hover for collapsed nav links */
.sidebar.collapsed .nav-link::after {
    content: attr(title);
    position: absolute;
    left: calc(100% + 10px);
    top: 50%;
    transform: translateY(-50%);
    background: var(--ds-bg-inverted, #1f2937);
    color: #fff;
    padding: 0.35rem 0.65rem;
    border-radius: 6px;
    font-size: 0.75rem;
    font-weight: 500;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.15s;
    z-index: 100;
    box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}

.sidebar.collapsed .nav-link:hover::after {
    opacity: 1;
}

.sidebar.collapsed .nav-link.active::before {
    width: 3px;
    border-radius: 0 3px 3px 0;
    left: 0;
}

/* Collapsed: hide dividers and submenu elements */
.sidebar.collapsed .nav-divider {
    margin: 0.25rem 0.75rem;
}

.sidebar.collapsed .nav-group-toggle {
    justify-content: center;
    padding: 0.75rem;
    margin: 0.15rem 0.5rem;
    border-radius: 8px;
}

.sidebar.collapsed .nav-group-label span {
    display: none;
}

.sidebar.collapsed .nav-group-label i {
    width: auto;
}

.sidebar.collapsed .nav-group-icon {
    display: none;
}

.sidebar.collapsed .nav-submenu {
    display: none;
}

/* Collapsed: show submenu on hover as flyout */
.sidebar.collapsed .nav-group:hover .nav-submenu {
    display: block;
    position: absolute;
    left: 68px;
    top: 0;
    min-width: 200px;
    background: var(--ds-bg-primary, #fff);
    border: 1px solid var(--ds-border-default, #e5e7eb);
    border-radius: 8px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.12);
    z-index: 100;
    padding: 0.25rem;
}

.sidebar.collapsed .nav-group {
    position: relative;
}

.sidebar.collapsed .nav-group:hover .nav-submenu .nav-sublink {
    padding: 0.5rem 0.75rem;
}

.sidebar.collapsed .nav-group:hover .nav-submenu .nav-sublink span {
    display: inline;
    opacity: 1;
}

/* Collapsed footer */
.sidebar.collapsed .sidebar-footer {
    padding: 0.5rem;
}

.sidebar.collapsed .user-profile-sidebar {
    justify-content: center;
    padding: 0.5rem;
}

.sidebar.collapsed .user-avatar-sidebar {
    width: 32px;
    height: 32px;
    font-size: 0.6rem;
}

/* ============================================
   SIDEBAR HEADER
   ============================================ */

.sidebar-header {
    padding: 1.5rem;
    border-bottom: 1px solid var(--ds-border-subtle, #f3f4f6);
    display: flex;
    align-items: center;
    gap: 1rem;
}

.sidebar-logo {
    width: 48px;
    height: 48px;
    background: var(--ds-primary-light, #fce7ec);
    color: var(--ds-primary, #06352c);
    border-radius: var(--ds-radius-lg, 12px);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    flex-shrink: 0;
}

.sidebar-title {
    flex: 1;
    min-width: 0;
    transition: opacity 0.3s;
}

.sidebar.collapsed .sidebar-title {
    opacity: 0;
    pointer-events: none;
}

.sidebar-title h2 {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    color: var(--ds-text-primary, #111827);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sidebar-title p {
    margin: 0;
    font-size: 0.75rem;
    color: var(--ds-text-secondary, #6b7280);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ============================================
   SIDEBAR NAVIGATION
   ============================================ */

.sidebar-nav {
    flex: 1;
    padding: 1rem 0;
    overflow-y: auto;
    overflow-x: hidden;
}

/* Scrollbar */
.sidebar-nav::-webkit-scrollbar {
    width: 4px;
}

.sidebar-nav::-webkit-scrollbar-track {
    background: transparent;
}

.sidebar-nav::-webkit-scrollbar-thumb {
    background: var(--ds-border-default, #e5e7eb);
    border-radius: 2px;
}

/* ============================================
   NAV LINKS
   ============================================ */

.nav-link {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 1.5rem;
    color: var(--ds-text-secondary, #6b7280);
    text-decoration: none;
    font-size: 0.875rem;
    font-weight: 500;
    transition: all 0.2s;
    position: relative;
}

.nav-link:hover {
    background-color: var(--ds-bg-secondary, #f3f4f6);
    color: var(--ds-text-primary, #111827);
}

.nav-link.active {
    background-color: var(--ds-primary-light, #fce7ec);
    color: var(--ds-primary, #06352c);
    font-weight: 600;
}

.nav-link.active::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    background-color: var(--ds-primary, #06352c);
}

.nav-link i {
    width: 20px;
    text-align: center;
    flex-shrink: 0;
}

.nav-link span {
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: opacity 0.3s;
}

.sidebar.collapsed .nav-link span {
    opacity: 0;
}

/* ============================================
   NAV DIVIDER
   ============================================ */

.nav-divider {
    height: 1px;
    background-color: var(--ds-border-subtle, #f3f4f6);
    margin: 0.5rem 1.5rem;
}

/* ============================================
   NAV GROUP (Submenu)
   ============================================ */

.nav-group {
    margin-bottom: 0.25rem;
}

.nav-group-toggle {
    all: unset;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 0.75rem 1.5rem;
    color: var(--ds-text-secondary, #6b7280);
    font-size: 0.875rem;
    font-weight: 500;
    cursor: pointer;
    border-radius: var(--ds-radius-sm, 4px);
    transition: all 0.2s ease;
}

.nav-group-toggle:hover {
    background-color: var(--ds-bg-secondary, #f3f4f6);
    color: var(--ds-text-primary, #111827);
}

.nav-group-toggle.active {
    color: var(--ds-primary, #06352c);
    font-weight: 600;
}

.nav-group.open .nav-group-toggle {
    background-color: var(--ds-primary-light, #fce7ec);
    color: var(--ds-primary, #06352c);
}

.nav-group-label {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex: 1;
}

.nav-group-label i {
    width: 20px;
    text-align: center;
}

.nav-group-icon {
    font-size: 0.875rem;
    color: var(--ds-text-tertiary, #9ca3af);
    margin-left: auto;
    flex-shrink: 0;
    transition: transform 0.2s ease, color 0.2s ease;
}

.nav-group-toggle:hover .nav-group-icon {
    color: var(--ds-text-secondary, #6b7280);
}

.nav-group-toggle.active .nav-group-icon {
    color: var(--ds-primary, #06352c);
}

.nav-group.open .nav-group-icon {
    transform: rotate(180deg);
    color: var(--ds-primary, #06352c);
}

/* ============================================
   NAV SUBMENU
   ============================================ */

.nav-submenu {
    display: none;
    padding-left: 1rem;
    overflow: hidden;
}

.nav-group.open .nav-submenu {
    display: block;
}

.nav-sublink {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.625rem 1.5rem;
    color: var(--ds-text-secondary, #6b7280);
    text-decoration: none;
    font-size: 0.8125rem;
    transition: all 0.2s;
}

.nav-sublink:hover {
    background-color: var(--ds-bg-secondary, #f3f4f6);
    color: var(--ds-text-primary, #111827);
}

.nav-sublink.active {
    color: var(--ds-primary, #06352c);
    background-color: var(--ds-primary-light, #fce7ec);
    font-weight: 600;
}

.nav-sublink i {
    width: 16px;
    text-align: center;
    font-size: 0.75rem;
}

/* ============================================
   SIDEBAR FOOTER
   ============================================ */

.sidebar-footer {
    padding: 1rem;
    border-top: 1px solid var(--ds-border-subtle, #f3f4f6);
}

.user-profile-sidebar {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem;
    border-radius: var(--ds-radius-md, 8px);
    cursor: pointer;
    transition: background-color 0.2s;
}

.user-profile-sidebar:hover {
    background-color: var(--ds-bg-secondary, #f3f4f6);
}

.user-avatar-sidebar {
    width: 40px;
    height: 40px;
    background: var(--ds-primary, #06352c);
    color: white;
    border-radius: var(--ds-radius-full, 50%);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.875rem;
    font-weight: 600;
    flex-shrink: 0;
}

.user-info-sidebar {
    flex: 1;
    min-width: 0;
    transition: opacity 0.3s;
}

.sidebar.collapsed .user-info-sidebar {
    opacity: 0;
    pointer-events: none;
}

.user-name-sidebar {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--ds-text-primary, #111827);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.user-email-sidebar {
    font-size: 0.75rem;
    color: var(--ds-text-secondary, #6b7280);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ============================================
   RESPONSIVE
   ============================================ */

@media (max-width: 1024px) {
    .sidebar {
        transform: translateX(-100%);
        z-index: 100;
    }

    .sidebar.show {
        transform: translateX(0);
    }

    .sidebar.collapsed {
        transform: translateX(-100%);
    }

    .main-content,
    .sidebar.collapsed ~ .main-content {
        margin-left: 0;
    }
}
/**
 * OptiGest360 - Main Layout CSS
 * Styles pour la structure de page (sidebar, header, content)
 */

/* ============================================
   LAYOUT STRUCTURE
   ============================================ */

.app-container {
    display: flex;
    min-height: 100vh;
    background-color: var(--ds-bg-primary, #f9fafb);
}

/* ============================================
   MAIN CONTENT AREA
   ============================================ */

.main-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    margin-left: 280px;
    transition: margin-left 0.3s ease;
}

.sidebar.collapsed ~ .main-content {
    margin-left: 70px;
}

@media (max-width: 1024px) {
    .main-content {
        margin-left: 0;
    }

    .sidebar.collapsed ~ .main-content {
        margin-left: 0;
    }

    .sidebar {
        position: fixed;
        z-index: 40;
        transform: translateX(-100%);
        transition: transform 0.3s ease;
    }

    .sidebar.mobile-open {
        transform: translateX(0);
    }

    .sidebar-overlay {
        display: none;
        position: fixed;
        inset: 0;
        background: rgba(0, 0, 0, 0.5);
        z-index: 35;
    }

    .sidebar.mobile-open ~ .sidebar-overlay {
        display: block;
    }
}

@media (max-width: 768px) {
    .header {
        padding: 0.75rem 1rem;
        min-height: 56px;
    }

    .header .search-box {
        display: none;
    }

    .content {
        padding: 1rem;
    }

    .sidebar-toggle-btn {
        display: flex !important;
    }
}

@media (max-width: 475px) {
    .content {
        padding: 0.75rem;
    }

    .header {
        padding: 0.5rem 0.75rem;
    }
}

/* ============================================
   HEADER
   ============================================ */

.header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1.75rem;
    background: var(--ds-white, #ffffff);
    border-bottom: 1px solid var(--ds-border-subtle, #f3f4f6);
    min-height: 56px;
    backdrop-filter: blur(8px);
    background: rgba(255, 255, 255, 0.95);
}

.header-left {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.header-right {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.sidebar-toggle-btn {
    all: unset;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--ds-radius-md, 8px);
    color: var(--ds-text-secondary, #6b7280);
    cursor: pointer;
    transition: all 0.2s;
    -webkit-tap-highlight-color: transparent;
}

@media (max-width: 1024px) {
    .sidebar-toggle-btn {
        width: 44px;
        height: 44px;
        font-size: 1.1rem;
    }
}

.sidebar-toggle-btn:hover {
    background-color: var(--ds-bg-secondary, #f3f4f6);
    color: var(--ds-text-primary, #111827);
}

.page-title {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--ds-text-primary, #111827);
    margin: 0;
    letter-spacing: -0.01em;
}

/* ============================================
   HEADER SEARCH
   ============================================ */

.search-box {
    position: relative;
    display: flex;
    align-items: center;
}

.search-box i {
    position: absolute;
    left: 12px;
    color: var(--ds-text-tertiary, #9ca3af);
    font-size: 0.875rem;
}

.search-box input {
    width: 240px;
    padding: 0.45rem 0.875rem 0.45rem 2.25rem;
    border: 1px solid transparent;
    border-radius: 8px;
    font-size: 0.8rem;
    background: var(--ds-gray-50, #f9fafb);
    color: var(--ds-text-primary, #111827);
    transition: all 0.2s;
}

.search-box input::placeholder {
    color: var(--ds-gray-400, #9ca3af);
}

.search-box input:focus {
    outline: none;
    background: var(--ds-white, #fff);
    border-color: var(--ds-border-default, #e5e7eb);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}

/* ============================================
   HEADER ACTIONS
   ============================================ */

.header-actions {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.btn-icon {
    all: unset;
    position: relative;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    color: var(--ds-gray-400, #9ca3af);
    cursor: pointer;
    font-size: 0.9rem;
    transition: color 0.15s, background-color 0.15s;
}

.btn-icon:hover {
    background-color: var(--ds-bg-secondary, #f3f4f6);
    color: var(--ds-text-primary, #111827);
}

.notification-badge {
    position: absolute;
    top: 6px;
    right: 6px;
    min-width: 18px;
    height: 18px;
    padding: 0 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--ds-danger, #ef4444);
    color: white;
    font-size: 0.625rem;
    font-weight: 600;
    border-radius: 9px;
    border: 2px solid white;
}

/* ============================================
   NOTIFICATIONS DROPDOWN
   ============================================ */

.notification-wrapper {
    position: relative;
}

.notification-dropdown {
    position: absolute;
    top: calc(100% + 0.625rem);
    right: -0.5rem;
    width: 380px;
    max-height: 480px;
    background: var(--ds-white, #fff);
    border-radius: 14px;
    box-shadow: 0 20px 50px rgba(0, 0, 0, 0.12), 0 8px 20px rgba(0, 0, 0, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.04);
    display: none;
    flex-direction: column;
    z-index: 1000;
    overflow: hidden;
    animation: notifSlideIn 0.2s ease;
}

@keyframes notifSlideIn {
    from { opacity: 0; transform: translateY(-8px) scale(0.97); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

.notification-wrapper.is-open .notification-dropdown {
    display: flex;
}

.notification-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--ds-gray-100, #f1f5f9);
    background: var(--ds-gray-50, #f8fafc);
}

.notification-header h3 {
    margin: 0;
    font-size: 0.8125rem;
    font-weight: 700;
    color: var(--ds-text-primary, #111827);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.mark-all-read {
    all: unset;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--ds-primary, #06352c);
    cursor: pointer;
    padding: 0.25rem 0.625rem;
    border-radius: 0.375rem;
    transition: background 0.15s, opacity 0.15s;
}

.mark-all-read:hover { background: rgba(6, 53, 44, 0.06); }

.notification-list {
    flex: 1;
    overflow-y: auto;
    max-height: 360px;
    scrollbar-width: thin;
    scrollbar-color: rgba(0,0,0,0.1) transparent;
}

.notification-list::-webkit-scrollbar { width: 4px; }
.notification-list::-webkit-scrollbar-track { background: transparent; }
.notification-list::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.12); border-radius: 2px; }

/* Notification item */
.notification-item {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.875rem 1.25rem;
    cursor: pointer;
    transition: background-color 0.15s;
    border-bottom: 1px solid var(--ds-gray-50, #f8fafc);
}

.notification-item:last-child { border-bottom: none; }

.notification-item:hover {
    background: var(--ds-gray-50, #f8fafc);
}

/* Variante non-lue (BEM modifier) — appliquée par notifications.js */
.notification-item--unread {
    background: rgba(6, 53, 44, 0.02);
    border-left: 3px solid var(--ds-primary, #06352c);
}

.notification-item__icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 0.8125rem;
    background: var(--ds-gray-100, #f1f5f9);
    color: var(--ds-gray-500, #6b7280);
}

/* Variantes par type — appliquées sur le wrapper .notification-item--{type}.
   On stylise l'icône via le sélecteur descendant. */
.notification-item--info .notification-item__icon    { background: rgba(59, 130, 246, 0.1); color: #3b82f6; }
.notification-item--success .notification-item__icon { background: rgba(16, 185, 129, 0.1); color: #10b981; }
.notification-item--warning .notification-item__icon { background: rgba(245, 158, 11, 0.1); color: #f59e0b; }
.notification-item--danger .notification-item__icon  { background: rgba(239, 68, 68, 0.1); color: #ef4444; }

/* Body wrapper rendu par le JS comme __body (et legacy __content) */
.notification-item__body,
.notification-item__content {
    flex: 1;
    min-width: 0;
}

.notification-item__title {
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--ds-text-primary, #111827);
    line-height: 1.4;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-decoration: none;
}

.notification-item__title:hover {
    color: var(--ds-primary, #06352c);
    text-decoration: underline;
}

.notification-item--unread .notification-item__title {
    font-weight: 700;
}

.notification-item__message {
    font-size: 0.75rem;
    color: var(--ds-gray-500, #6b7280);
    line-height: 1.3;
    margin-top: 0.15rem;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Colonne droite : heure + bouton dismiss */
.notification-item__meta {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.35rem;
    flex-shrink: 0;
}

.notification-item__time {
    font-size: 0.6875rem;
    color: var(--ds-gray-400, #9ca3af);
    white-space: nowrap;
}

.notification-item__dismiss {
    background: transparent;
    border: 0;
    cursor: pointer;
    color: var(--ds-gray-400, #9ca3af);
    font-size: 0.75rem;
    padding: 0.15rem 0.35rem;
    border-radius: 4px;
    line-height: 1;
    transition: background-color 0.15s, color 0.15s;
}

.notification-item__dismiss:hover {
    background: var(--ds-gray-100, #f1f5f9);
    color: var(--ds-danger, #dc2626);
}

.notification-item__dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--ds-primary, #06352c);
    flex-shrink: 0;
    margin-top: 0.35rem;
}

/* Empty state */
.notification-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2.5rem 1.5rem;
    gap: 0.5rem;
}

.notification-empty i {
    font-size: 1.75rem;
    color: var(--ds-gray-300, #d1d5db);
}

.notification-empty p {
    margin: 0;
    font-size: 0.8125rem;
    color: var(--ds-gray-400, #9ca3af);
}

/* Badge */
.notification-badge {
    position: absolute;
    top: -3px;
    right: -3px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 9px;
    background: var(--ds-danger, #ef4444);
    color: white;
    font-size: 0.625rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    border: 2px solid var(--ds-white, #fff);
    box-shadow: 0 2px 4px rgba(239, 68, 68, 0.3);
}

.notification-badge:empty,
.notification-badge[data-count="0"] {
    display: none;
}

.notification-footer {
    padding: 0.75rem 1.25rem;
    border-top: 1px solid var(--ds-gray-100, #f1f5f9);
    text-align: center;
    background: var(--ds-gray-50, #f8fafc);
}

.notification-footer__link,
.view-all-notifications {
    font-size: 0.8125rem;
    color: var(--ds-primary, #06352c);
    text-decoration: none;
    font-weight: 600;
    transition: opacity 0.15s;
}

.notification-footer__link:hover,
.view-all-notifications:hover {
    opacity: 0.8;
}

.view-all-notifications {
    font-size: 0.75rem;
    color: var(--ds-gray-500, #6b7280);
    text-decoration: none;
    font-weight: 500;
    transition: color 0.15s;
}

.view-all-notifications:hover {
    color: var(--ds-primary, #06352c);
}

.view-all-notifications:hover {
    text-decoration: underline;
}

/* ============================================
   CONTENT AREA
   ============================================ */

.content {
    flex: 1;
    padding: 1.5rem 1.75rem;
    overflow-y: auto;
    background: var(--ds-bg-primary, #f8fafc);
}

/* ============================================
   RESPONSIVE
   ============================================ */

@media (max-width: 768px) {
    .header {
        padding: 1rem;
    }

    .search-box {
        display: none;
    }

    .content {
        padding: 1rem;
    }

    .notification-dropdown {
        width: 100vw;
        max-width: 360px;
    }
}

/* ============================================
   THEME TOGGLE (Dark mode placeholder)
   ============================================ */

.btn-theme {
    /* Theme toggle styles will be added when dark mode is implemented */
}



/* ============================================
   UTILITIES
   ============================================ */


/* === Imported from: ./utilities/index.css === */

/**
 * Design System OptiGest360
 * Utilities: Index
 *
 * Classes utilitaires pour ajustements rapides
 */


/* === Imported from: ./utilities/spacing.css === */

/**
 * Design System OptiGest360
 * Utilities: Spacing
 *
 * Classes utilitaires pour margin et padding
 */

/* ============================================
   MARGIN UTILITIES
   ============================================ */

/* Margin All Sides */
.ds-m-0 { margin: var(--ds-space-0) !important; }
.ds-m-1 { margin: var(--ds-space-1) !important; }
.ds-m-2 { margin: var(--ds-space-2) !important; }
.ds-m-3 { margin: var(--ds-space-3) !important; }
.ds-m-4 { margin: var(--ds-space-4) !important; }
.ds-m-5 { margin: var(--ds-space-5) !important; }
.ds-m-6 { margin: var(--ds-space-6) !important; }
.ds-m-8 { margin: var(--ds-space-8) !important; }
.ds-m-10 { margin: var(--ds-space-10) !important; }
.ds-m-12 { margin: var(--ds-space-12) !important; }
.ds-m-auto { margin: auto !important; }

/* Margin Top */
.ds-mt-0 { margin-top: var(--ds-space-0) !important; }
.ds-mt-1 { margin-top: var(--ds-space-1) !important; }
.ds-mt-2 { margin-top: var(--ds-space-2) !important; }
.ds-mt-3 { margin-top: var(--ds-space-3) !important; }
.ds-mt-4 { margin-top: var(--ds-space-4) !important; }
.ds-mt-5 { margin-top: var(--ds-space-5) !important; }
.ds-mt-6 { margin-top: var(--ds-space-6) !important; }
.ds-mt-8 { margin-top: var(--ds-space-8) !important; }
.ds-mt-10 { margin-top: var(--ds-space-10) !important; }
.ds-mt-12 { margin-top: var(--ds-space-12) !important; }
.ds-mt-auto { margin-top: auto !important; }

/* Margin Right */
.ds-mr-0 { margin-right: var(--ds-space-0) !important; }
.ds-mr-1 { margin-right: var(--ds-space-1) !important; }
.ds-mr-2 { margin-right: var(--ds-space-2) !important; }
.ds-mr-3 { margin-right: var(--ds-space-3) !important; }
.ds-mr-4 { margin-right: var(--ds-space-4) !important; }
.ds-mr-5 { margin-right: var(--ds-space-5) !important; }
.ds-mr-6 { margin-right: var(--ds-space-6) !important; }
.ds-mr-8 { margin-right: var(--ds-space-8) !important; }
.ds-mr-auto { margin-right: auto !important; }

/* Margin Bottom */
.ds-mb-0 { margin-bottom: var(--ds-space-0) !important; }
.ds-mb-1 { margin-bottom: var(--ds-space-1) !important; }
.ds-mb-2 { margin-bottom: var(--ds-space-2) !important; }
.ds-mb-3 { margin-bottom: var(--ds-space-3) !important; }
.ds-mb-4 { margin-bottom: var(--ds-space-4) !important; }
.ds-mb-5 { margin-bottom: var(--ds-space-5) !important; }
.ds-mb-6 { margin-bottom: var(--ds-space-6) !important; }
.ds-mb-8 { margin-bottom: var(--ds-space-8) !important; }
.ds-mb-10 { margin-bottom: var(--ds-space-10) !important; }
.ds-mb-12 { margin-bottom: var(--ds-space-12) !important; }
.ds-mb-auto { margin-bottom: auto !important; }

/* Margin Left */
.ds-ml-0 { margin-left: var(--ds-space-0) !important; }
.ds-ml-1 { margin-left: var(--ds-space-1) !important; }
.ds-ml-2 { margin-left: var(--ds-space-2) !important; }
.ds-ml-3 { margin-left: var(--ds-space-3) !important; }
.ds-ml-4 { margin-left: var(--ds-space-4) !important; }
.ds-ml-5 { margin-left: var(--ds-space-5) !important; }
.ds-ml-6 { margin-left: var(--ds-space-6) !important; }
.ds-ml-8 { margin-left: var(--ds-space-8) !important; }
.ds-ml-auto { margin-left: auto !important; }

/* Margin X (Left & Right) */
.ds-mx-0 { margin-left: var(--ds-space-0) !important; margin-right: var(--ds-space-0) !important; }
.ds-mx-1 { margin-left: var(--ds-space-1) !important; margin-right: var(--ds-space-1) !important; }
.ds-mx-2 { margin-left: var(--ds-space-2) !important; margin-right: var(--ds-space-2) !important; }
.ds-mx-3 { margin-left: var(--ds-space-3) !important; margin-right: var(--ds-space-3) !important; }
.ds-mx-4 { margin-left: var(--ds-space-4) !important; margin-right: var(--ds-space-4) !important; }
.ds-mx-6 { margin-left: var(--ds-space-6) !important; margin-right: var(--ds-space-6) !important; }
.ds-mx-8 { margin-left: var(--ds-space-8) !important; margin-right: var(--ds-space-8) !important; }
.ds-mx-auto { margin-left: auto !important; margin-right: auto !important; }

/* Margin Y (Top & Bottom) */
.ds-my-0 { margin-top: var(--ds-space-0) !important; margin-bottom: var(--ds-space-0) !important; }
.ds-my-1 { margin-top: var(--ds-space-1) !important; margin-bottom: var(--ds-space-1) !important; }
.ds-my-2 { margin-top: var(--ds-space-2) !important; margin-bottom: var(--ds-space-2) !important; }
.ds-my-3 { margin-top: var(--ds-space-3) !important; margin-bottom: var(--ds-space-3) !important; }
.ds-my-4 { margin-top: var(--ds-space-4) !important; margin-bottom: var(--ds-space-4) !important; }
.ds-my-6 { margin-top: var(--ds-space-6) !important; margin-bottom: var(--ds-space-6) !important; }
.ds-my-8 { margin-top: var(--ds-space-8) !important; margin-bottom: var(--ds-space-8) !important; }
.ds-my-auto { margin-top: auto !important; margin-bottom: auto !important; }

/* ============================================
   PADDING UTILITIES
   ============================================ */

/* Padding All Sides */
.ds-p-0 { padding: var(--ds-space-0) !important; }
.ds-p-1 { padding: var(--ds-space-1) !important; }
.ds-p-2 { padding: var(--ds-space-2) !important; }
.ds-p-3 { padding: var(--ds-space-3) !important; }
.ds-p-4 { padding: var(--ds-space-4) !important; }
.ds-p-5 { padding: var(--ds-space-5) !important; }
.ds-p-6 { padding: var(--ds-space-6) !important; }
.ds-p-8 { padding: var(--ds-space-8) !important; }
.ds-p-10 { padding: var(--ds-space-10) !important; }
.ds-p-12 { padding: var(--ds-space-12) !important; }

/* Padding Top */
.ds-pt-0 { padding-top: var(--ds-space-0) !important; }
.ds-pt-1 { padding-top: var(--ds-space-1) !important; }
.ds-pt-2 { padding-top: var(--ds-space-2) !important; }
.ds-pt-3 { padding-top: var(--ds-space-3) !important; }
.ds-pt-4 { padding-top: var(--ds-space-4) !important; }
.ds-pt-5 { padding-top: var(--ds-space-5) !important; }
.ds-pt-6 { padding-top: var(--ds-space-6) !important; }
.ds-pt-8 { padding-top: var(--ds-space-8) !important; }
.ds-pt-10 { padding-top: var(--ds-space-10) !important; }
.ds-pt-12 { padding-top: var(--ds-space-12) !important; }

/* Padding Right */
.ds-pr-0 { padding-right: var(--ds-space-0) !important; }
.ds-pr-1 { padding-right: var(--ds-space-1) !important; }
.ds-pr-2 { padding-right: var(--ds-space-2) !important; }
.ds-pr-3 { padding-right: var(--ds-space-3) !important; }
.ds-pr-4 { padding-right: var(--ds-space-4) !important; }
.ds-pr-5 { padding-right: var(--ds-space-5) !important; }
.ds-pr-6 { padding-right: var(--ds-space-6) !important; }
.ds-pr-8 { padding-right: var(--ds-space-8) !important; }

/* Padding Bottom */
.ds-pb-0 { padding-bottom: var(--ds-space-0) !important; }
.ds-pb-1 { padding-bottom: var(--ds-space-1) !important; }
.ds-pb-2 { padding-bottom: var(--ds-space-2) !important; }
.ds-pb-3 { padding-bottom: var(--ds-space-3) !important; }
.ds-pb-4 { padding-bottom: var(--ds-space-4) !important; }
.ds-pb-5 { padding-bottom: var(--ds-space-5) !important; }
.ds-pb-6 { padding-bottom: var(--ds-space-6) !important; }
.ds-pb-8 { padding-bottom: var(--ds-space-8) !important; }
.ds-pb-10 { padding-bottom: var(--ds-space-10) !important; }
.ds-pb-12 { padding-bottom: var(--ds-space-12) !important; }

/* Padding Left */
.ds-pl-0 { padding-left: var(--ds-space-0) !important; }
.ds-pl-1 { padding-left: var(--ds-space-1) !important; }
.ds-pl-2 { padding-left: var(--ds-space-2) !important; }
.ds-pl-3 { padding-left: var(--ds-space-3) !important; }
.ds-pl-4 { padding-left: var(--ds-space-4) !important; }
.ds-pl-5 { padding-left: var(--ds-space-5) !important; }
.ds-pl-6 { padding-left: var(--ds-space-6) !important; }
.ds-pl-8 { padding-left: var(--ds-space-8) !important; }

/* Padding X (Left & Right) */
.ds-px-0 { padding-left: var(--ds-space-0) !important; padding-right: var(--ds-space-0) !important; }
.ds-px-1 { padding-left: var(--ds-space-1) !important; padding-right: var(--ds-space-1) !important; }
.ds-px-2 { padding-left: var(--ds-space-2) !important; padding-right: var(--ds-space-2) !important; }
.ds-px-3 { padding-left: var(--ds-space-3) !important; padding-right: var(--ds-space-3) !important; }
.ds-px-4 { padding-left: var(--ds-space-4) !important; padding-right: var(--ds-space-4) !important; }
.ds-px-6 { padding-left: var(--ds-space-6) !important; padding-right: var(--ds-space-6) !important; }
.ds-px-8 { padding-left: var(--ds-space-8) !important; padding-right: var(--ds-space-8) !important; }

/* Padding Y (Top & Bottom) */
.ds-py-0 { padding-top: var(--ds-space-0) !important; padding-bottom: var(--ds-space-0) !important; }
.ds-py-1 { padding-top: var(--ds-space-1) !important; padding-bottom: var(--ds-space-1) !important; }
.ds-py-2 { padding-top: var(--ds-space-2) !important; padding-bottom: var(--ds-space-2) !important; }
.ds-py-3 { padding-top: var(--ds-space-3) !important; padding-bottom: var(--ds-space-3) !important; }
.ds-py-4 { padding-top: var(--ds-space-4) !important; padding-bottom: var(--ds-space-4) !important; }
.ds-py-6 { padding-top: var(--ds-space-6) !important; padding-bottom: var(--ds-space-6) !important; }
.ds-py-8 { padding-top: var(--ds-space-8) !important; padding-bottom: var(--ds-space-8) !important; }

/* ============================================
   GAP UTILITIES (for Flexbox/Grid)
   ============================================ */

.ds-gap-0 { gap: var(--ds-space-0) !important; }
.ds-gap-1 { gap: var(--ds-space-1) !important; }
.ds-gap-2 { gap: var(--ds-space-2) !important; }
.ds-gap-3 { gap: var(--ds-space-3) !important; }
.ds-gap-4 { gap: var(--ds-space-4) !important; }
.ds-gap-5 { gap: var(--ds-space-5) !important; }
.ds-gap-6 { gap: var(--ds-space-6) !important; }
.ds-gap-8 { gap: var(--ds-space-8) !important; }

.ds-gap-x-2 { column-gap: var(--ds-space-2) !important; }
.ds-gap-x-3 { column-gap: var(--ds-space-3) !important; }
.ds-gap-x-4 { column-gap: var(--ds-space-4) !important; }
.ds-gap-x-6 { column-gap: var(--ds-space-6) !important; }

.ds-gap-y-2 { row-gap: var(--ds-space-2) !important; }
.ds-gap-y-3 { row-gap: var(--ds-space-3) !important; }
.ds-gap-y-4 { row-gap: var(--ds-space-4) !important; }
.ds-gap-y-6 { row-gap: var(--ds-space-6) !important; }


/* === Imported from: ./utilities/display.css === */

/**
 * Design System OptiGest360
 * Utilities: Display
 *
 * Classes utilitaires pour display, visibility, overflow
 */

/* ============================================
   DISPLAY UTILITIES
   ============================================ */

.ds-block { display: block !important; }
.ds-inline-block { display: inline-block !important; }
.ds-inline { display: inline !important; }
.ds-flex { display: flex !important; }
.ds-inline-flex { display: inline-flex !important; }
.ds-grid { display: grid !important; }
.ds-inline-grid { display: inline-grid !important; }
.ds-hidden { display: none !important; }

/* ============================================
   FLEXBOX UTILITIES
   ============================================ */

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

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

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

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

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

/* Flex Grow & Shrink */
.ds-flex-1 { flex: 1 1 0% !important; }
.ds-flex-auto { flex: 1 1 auto !important; }
.ds-flex-initial { flex: 0 1 auto !important; }
.ds-flex-none { flex: none !important; }
.ds-flex-grow-0 { flex-grow: 0 !important; }
.ds-flex-grow-1 { flex-grow: 1 !important; }
.ds-flex-shrink-0 { flex-shrink: 0 !important; }
.ds-flex-shrink-1 { flex-shrink: 1 !important; }

/* Gap (works with flex and grid) */
.ds-gap-0 { gap: 0 !important; }
.ds-gap-1 { gap: var(--ds-space-1) !important; }
.ds-gap-2 { gap: var(--ds-space-2) !important; }
.ds-gap-3 { gap: var(--ds-space-3) !important; }
.ds-gap-4 { gap: var(--ds-space-4) !important; }
.ds-gap-5 { gap: var(--ds-space-5) !important; }
.ds-gap-6 { gap: var(--ds-space-6) !important; }
.ds-gap-8 { gap: var(--ds-space-8) !important; }
.ds-gap-12 { gap: var(--ds-space-12) !important; }

/* ============================================
   GRID UTILITIES
   ============================================ */

/* Grid Template Columns */
.ds-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)) !important; }
.ds-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
.ds-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
.ds-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
.ds-grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)) !important; }
.ds-grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)) !important; }
.ds-grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)) !important; }

/* Grid Column Span */
.ds-col-span-1 { grid-column: span 1 / span 1 !important; }
.ds-col-span-2 { grid-column: span 2 / span 2 !important; }
.ds-col-span-3 { grid-column: span 3 / span 3 !important; }
.ds-col-span-4 { grid-column: span 4 / span 4 !important; }
.ds-col-span-5 { grid-column: span 5 / span 5 !important; }
.ds-col-span-6 { grid-column: span 6 / span 6 !important; }
.ds-col-span-full { grid-column: 1 / -1 !important; }

/* Grid Auto Flow */
.ds-grid-flow-row { grid-auto-flow: row !important; }
.ds-grid-flow-col { grid-auto-flow: column !important; }
.ds-grid-flow-dense { grid-auto-flow: dense !important; }

/* ============================================
   VISIBILITY UTILITIES
   ============================================ */

.ds-visible { visibility: visible !important; }
.ds-invisible { visibility: hidden !important; }

/* ============================================
   OVERFLOW UTILITIES
   ============================================ */

.ds-overflow-auto { overflow: auto !important; }
.ds-overflow-hidden { overflow: hidden !important; }
.ds-overflow-visible { overflow: visible !important; }
.ds-overflow-scroll { overflow: scroll !important; }

.ds-overflow-x-auto { overflow-x: auto !important; }
.ds-overflow-x-hidden { overflow-x: hidden !important; }
.ds-overflow-x-scroll { overflow-x: scroll !important; }

.ds-overflow-y-auto { overflow-y: auto !important; }
.ds-overflow-y-hidden { overflow-y: hidden !important; }
.ds-overflow-y-scroll { overflow-y: scroll !important; }

/* ============================================
   POSITION UTILITIES
   ============================================ */

.ds-static { position: static !important; }
.ds-fixed { position: fixed !important; }
.ds-absolute { position: absolute !important; }
.ds-relative { position: relative !important; }
.ds-sticky { position: sticky !important; }

/* Positioning */
.ds-inset-0 { inset: 0 !important; }
.ds-top-0 { top: 0 !important; }
.ds-right-0 { right: 0 !important; }
.ds-bottom-0 { bottom: 0 !important; }
.ds-left-0 { left: 0 !important; }

/* ============================================
   HEIGHT & WIDTH UTILITIES
   ============================================ */

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

.ds-w-auto { width: auto !important; }
.ds-w-full { width: 100% !important; }
.ds-w-screen { width: 100vw !important; }
.ds-w-fit { width: fit-content !important; }

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

.ds-max-w-xs { max-width: 20rem !important; }
.ds-max-w-sm { max-width: 24rem !important; }
.ds-max-w-md { max-width: 28rem !important; }
.ds-max-w-lg { max-width: 32rem !important; }
.ds-max-w-xl { max-width: 36rem !important; }
.ds-max-w-2xl { max-width: 42rem !important; }
.ds-max-w-3xl { max-width: 48rem !important; }
.ds-max-w-4xl { max-width: 56rem !important; }
.ds-max-w-full { max-width: 100% !important; }

/* ============================================
   Z-INDEX UTILITIES
   ============================================ */

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

/* ============================================
   RESPONSIVE UTILITIES
   ============================================ */

@media (max-width: 640px) {
    .ds-sm\:hidden { display: none !important; }
    .ds-sm\:block { display: block !important; }
    .ds-sm\:flex { display: flex !important; }
    .ds-sm\:grid { display: grid !important; }
}

@media (min-width: 768px) {
    .ds-md\:hidden { display: none !important; }
    .ds-md\:block { display: block !important; }
    .ds-md\:flex { display: flex !important; }
    .ds-md\:grid { display: grid !important; }
}

@media (min-width: 1024px) {
    .ds-lg\:hidden { display: none !important; }
    .ds-lg\:block { display: block !important; }
    .ds-lg\:flex { display: flex !important; }
    .ds-lg\:grid { display: grid !important; }
}

@media (min-width: 1280px) {
    .ds-xl\:hidden { display: none !important; }
    .ds-xl\:block { display: block !important; }
    .ds-xl\:flex { display: flex !important; }
    .ds-xl\:grid { display: grid !important; }
}


/* === Imported from: ./utilities/text.css === */

/**
 * Design System OptiGest360
 * Utilities: Text
 *
 * Classes utilitaires pour typographie
 */

/* ============================================
   FONT SIZE UTILITIES
   ============================================ */

.ds-text-xs { font-size: var(--ds-text-xs) !important; }
.ds-text-sm { font-size: var(--ds-text-sm) !important; }
.ds-text-base { font-size: var(--ds-text-base) !important; }
.ds-text-lg { font-size: var(--ds-text-lg) !important; }
.ds-text-xl { font-size: var(--ds-text-xl) !important; }
.ds-text-2xl { font-size: var(--ds-text-2xl) !important; }
.ds-text-3xl { font-size: var(--ds-text-3xl) !important; }
.ds-text-4xl { font-size: var(--ds-text-4xl) !important; }

/* ============================================
   FONT WEIGHT UTILITIES
   ============================================ */

.ds-font-normal { font-weight: var(--ds-font-normal) !important; }
.ds-font-medium { font-weight: var(--ds-font-medium) !important; }
.ds-font-semibold { font-weight: var(--ds-font-semibold) !important; }
.ds-font-bold { font-weight: var(--ds-font-bold) !important; }

/* ============================================
   FONT FAMILY UTILITIES
   ============================================ */

.ds-font-sans { font-family: var(--ds-font-sans) !important; }
.ds-font-mono { font-family: var(--ds-font-mono) !important; }

/* ============================================
   TEXT ALIGNMENT UTILITIES
   ============================================ */

.ds-text-left { text-align: left !important; }
.ds-text-center { text-align: center !important; }
.ds-text-right { text-align: right !important; }
.ds-text-justify { text-align: justify !important; }

/* ============================================
   TEXT COLOR UTILITIES
   ============================================ */

.ds-text-primary { color: var(--ds-text-primary) !important; }
.ds-text-secondary { color: var(--ds-text-secondary) !important; }
.ds-text-tertiary { color: var(--ds-text-tertiary) !important; }

.ds-text-success { color: var(--ds-success) !important; }
.ds-text-warning { color: var(--ds-warning) !important; }
.ds-text-danger { color: var(--ds-danger) !important; }
.ds-text-info { color: var(--ds-info) !important; }

.ds-text-white { color: var(--ds-white) !important; }
.ds-text-black { color: var(--ds-black) !important; }

/* Background color utilities */
.ds-bg-success-light { background: rgba(16, 185, 129, 0.12) !important; color: #065f46 !important; }
.ds-bg-warning-light { background: rgba(245, 158, 11, 0.12) !important; color: #854d0e !important; }
.ds-bg-danger-light { background: rgba(239, 68, 68, 0.12) !important; color: #991b1b !important; }
.ds-bg-info-light { background: rgba(59, 130, 246, 0.12) !important; color: #1e40af !important; }

/* Width utilities */
.ds-w-20 { max-width: 80px !important; }
.ds-w-24 { max-width: 100px !important; }
.ds-w-28 { max-width: 120px !important; }
.ds-w-full { width: 100% !important; }

/* Font size utilities */
.ds-text-xl { font-size: var(--ds-text-xl) !important; }
.ds-text-lg { font-size: var(--ds-text-lg) !important; }
.ds-text-sm { font-size: var(--ds-text-sm) !important; }
.ds-text-xs { font-size: var(--ds-text-xs) !important; }

/* Form grid label pattern (label left, input right) */
.ds-form-grid-label {
    display: grid;
    grid-template-columns: 250px 1fr;
    gap: 1rem;
    align-items: center;
}

@media (max-width: 768px) {
    .ds-form-grid-label {
        grid-template-columns: 1fr;
        gap: 0.5rem;
    }
}

/* Badge light (for overlays on dark backgrounds) */
.ds-badge--light {
    background: rgba(255,255,255,0.2);
    color: white;
    font-size: 0.875rem;
    padding: 0.375rem 0.75rem;
    backdrop-filter: blur(4px);
}

/* ============================================
   TEXT DECORATION UTILITIES
   ============================================ */

.ds-underline { text-decoration: underline !important; }
.ds-line-through { text-decoration: line-through !important; }
.ds-no-underline { text-decoration: none !important; }

/* ============================================
   TEXT TRANSFORM UTILITIES
   ============================================ */

.ds-uppercase { text-transform: uppercase !important; }
.ds-lowercase { text-transform: lowercase !important; }
.ds-capitalize { text-transform: capitalize !important; }
.ds-normal-case { text-transform: none !important; }

/* ============================================
   LINE HEIGHT UTILITIES
   ============================================ */

.ds-leading-none { line-height: var(--ds-leading-none) !important; }
.ds-leading-tight { line-height: var(--ds-leading-tight) !important; }
.ds-leading-normal { line-height: var(--ds-leading-normal) !important; }
.ds-leading-relaxed { line-height: var(--ds-leading-relaxed) !important; }
.ds-leading-loose { line-height: var(--ds-leading-loose) !important; }

/* ============================================
   WHITE SPACE UTILITIES
   ============================================ */

.ds-whitespace-normal { white-space: normal !important; }
.ds-whitespace-nowrap { white-space: nowrap !important; }
.ds-whitespace-pre { white-space: pre !important; }
.ds-whitespace-pre-line { white-space: pre-line !important; }
.ds-whitespace-pre-wrap { white-space: pre-wrap !important; }

/* ============================================
   TEXT OVERFLOW UTILITIES
   ============================================ */

.ds-truncate {
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}

.ds-line-clamp-1 {
    overflow: hidden !important;
    display: -webkit-box !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 1 !important;
}

.ds-line-clamp-2 {
    overflow: hidden !important;
    display: -webkit-box !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 2 !important;
}

.ds-line-clamp-3 {
    overflow: hidden !important;
    display: -webkit-box !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 3 !important;
}

/* ============================================
   WORD BREAK UTILITIES
   ============================================ */

.ds-break-normal { overflow-wrap: normal !important; word-break: normal !important; }
.ds-break-words { overflow-wrap: break-word !important; }
.ds-break-all { word-break: break-all !important; }

/* ============================================
   FONT STYLE UTILITIES
   ============================================ */

.ds-italic { font-style: italic !important; }
.ds-not-italic { font-style: normal !important; }


/* === Imported from: ./utilities/borders.css === */

/**
 * Design System OptiGest360
 * Utilities: Borders
 *
 * Classes utilitaires pour bordures
 */

/* ============================================
   BORDER WIDTH
   ============================================ */

.ds-border { border: 1px solid var(--ds-border-default) !important; }
.ds-border-0 { border: 0 !important; }
.ds-border-2 { border-width: 2px !important; }

/* Border Sides */
.ds-border-t { border-top: 1px solid var(--ds-border-default) !important; }
.ds-border-r { border-right: 1px solid var(--ds-border-default) !important; }
.ds-border-b { border-bottom: 1px solid var(--ds-border-default) !important; }
.ds-border-l { border-left: 1px solid var(--ds-border-default) !important; }

.ds-border-t-0 { border-top: 0 !important; }
.ds-border-r-0 { border-right: 0 !important; }
.ds-border-b-0 { border-bottom: 0 !important; }
.ds-border-l-0 { border-left: 0 !important; }

/* ============================================
   BORDER COLOR
   ============================================ */

.ds-border-default { border-color: var(--ds-border-default) !important; }
.ds-border-light { border-color: var(--ds-border-light) !important; }
.ds-border-strong { border-color: var(--ds-border-strong) !important; }
.ds-border-primary { border-color: var(--ds-primary) !important; }
.ds-border-success { border-color: var(--ds-success) !important; }
.ds-border-warning { border-color: var(--ds-warning) !important; }
.ds-border-danger { border-color: var(--ds-danger) !important; }
.ds-border-info { border-color: var(--ds-info) !important; }
.ds-border-transparent { border-color: transparent !important; }

/* ============================================
   BORDER RADIUS
   ============================================ */

.ds-rounded-none { border-radius: 0 !important; }
.ds-rounded-sm { border-radius: var(--ds-radius-sm) !important; }
.ds-rounded { border-radius: var(--ds-radius-md) !important; }
.ds-rounded-md { border-radius: var(--ds-radius-md) !important; }
.ds-rounded-lg { border-radius: var(--ds-radius-lg) !important; }
.ds-rounded-xl { border-radius: var(--ds-radius-xl, 16px) !important; }
.ds-rounded-full { border-radius: 9999px !important; }

/* Border Radius Corners */
.ds-rounded-t {
    border-top-left-radius: var(--ds-radius-md) !important;
    border-top-right-radius: var(--ds-radius-md) !important;
}
.ds-rounded-r {
    border-top-right-radius: var(--ds-radius-md) !important;
    border-bottom-right-radius: var(--ds-radius-md) !important;
}
.ds-rounded-b {
    border-bottom-left-radius: var(--ds-radius-md) !important;
    border-bottom-right-radius: var(--ds-radius-md) !important;
}
.ds-rounded-l {
    border-top-left-radius: var(--ds-radius-md) !important;
    border-bottom-left-radius: var(--ds-radius-md) !important;
}

/* ============================================
   BORDER STYLE
   ============================================ */

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

/* ============================================
   DIVIDE (Between children)
   ============================================ */

.ds-divide-y > * + * {
    border-top: 1px solid var(--ds-border-default);
}

.ds-divide-x > * + * {
    border-left: 1px solid var(--ds-border-default);
}

.ds-divide-light > * + * {
    border-color: var(--ds-border-light);
}

/* ============================================
   OUTLINE & RING
   ============================================ */

.ds-outline-none { outline: none !important; }
.ds-ring { box-shadow: var(--ds-focus-ring) !important; }
.ds-ring-0 { box-shadow: none !important; }
.ds-ring-primary { box-shadow: 0 0 0 3px rgba(6, 53, 44, 0.2) !important; }
.ds-ring-success { box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.2) !important; }
.ds-ring-danger { box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.2) !important; }


/* === Imported from: ./utilities/sizing.css === */

/**
 * Design System OptiGest360
 * Utilities: Sizing
 *
 * Classes utilitaires pour width/height spécifiques
 */

/* ============================================
   FIXED WIDTHS
   ============================================ */

.ds-w-8 { width: 2rem !important; } /* 32px */
.ds-w-10 { width: 2.5rem !important; } /* 40px */
.ds-w-12 { width: 3rem !important; } /* 48px */
.ds-w-14 { width: 3.5rem !important; } /* 56px */
.ds-w-16 { width: 4rem !important; } /* 64px */
.ds-w-20 { width: 5rem !important; } /* 80px */
.ds-w-24 { width: 6rem !important; } /* 96px */
.ds-w-32 { width: 8rem !important; } /* 128px */
.ds-w-40 { width: 10rem !important; } /* 160px */
.ds-w-48 { width: 12rem !important; } /* 192px */
.ds-w-56 { width: 14rem !important; } /* 224px */
.ds-w-64 { width: 16rem !important; } /* 256px */

/* Specific pixel widths for tables */
.ds-w-px-40 { width: 40px !important; }
.ds-w-px-50 { width: 50px !important; }
.ds-w-px-60 { width: 60px !important; }
.ds-w-px-80 { width: 80px !important; }
.ds-w-px-100 { width: 100px !important; }
.ds-w-px-120 { width: 120px !important; }
.ds-w-px-150 { width: 150px !important; }
.ds-w-px-200 { width: 200px !important; }

/* ============================================
   FIXED HEIGHTS
   ============================================ */

.ds-h-8 { height: 2rem !important; } /* 32px */
.ds-h-10 { height: 2.5rem !important; } /* 40px */
.ds-h-12 { height: 3rem !important; } /* 48px */
.ds-h-14 { height: 3.5rem !important; } /* 56px */
.ds-h-16 { height: 4rem !important; } /* 64px */
.ds-h-20 { height: 5rem !important; } /* 80px */
.ds-h-24 { height: 6rem !important; } /* 96px */

/* ============================================
   SQUARE SIZES (width = height)
   ============================================ */

.ds-size-4 { width: 1rem !important; height: 1rem !important; } /* 16px */
.ds-size-6 { width: 1.5rem !important; height: 1.5rem !important; } /* 24px */
.ds-size-7 { width: 1.75rem !important; height: 1.75rem !important; } /* 28px */
.ds-size-8 { width: 2rem !important; height: 2rem !important; } /* 32px */
.ds-size-10 { width: 2.5rem !important; height: 2.5rem !important; } /* 40px */
.ds-size-12 { width: 3rem !important; height: 3rem !important; } /* 48px */

/* ============================================
   PERCENTAGE WIDTHS
   ============================================ */

.ds-w-1\/2 { width: 50% !important; }
.ds-w-1\/3 { width: 33.333333% !important; }
.ds-w-2\/3 { width: 66.666667% !important; }
.ds-w-1\/4 { width: 25% !important; }
.ds-w-3\/4 { width: 75% !important; }


/* === Imported from: ./utilities/background.css === */

/**
 * Design System OptiGest360
 * Utilities: Background
 *
 * Classes utilitaires pour backgrounds
 */

/* ============================================
   BACKGROUND COLORS
   ============================================ */

.ds-bg-white { background-color: var(--ds-white) !important; }
.ds-bg-black { background-color: var(--ds-black) !important; }

.ds-bg-primary { background-color: var(--ds-primary) !important; }
.ds-bg-primary-light { background-color: var(--ds-primary-light) !important; }

.ds-bg-success { background-color: var(--ds-success) !important; }
.ds-bg-success-light { background-color: var(--ds-success-light) !important; }

.ds-bg-warning { background-color: var(--ds-warning) !important; }
.ds-bg-warning-light { background-color: var(--ds-warning-light) !important; }

.ds-bg-danger { background-color: var(--ds-danger) !important; }
.ds-bg-danger-light { background-color: var(--ds-danger-light) !important; }

.ds-bg-info { background-color: var(--ds-info) !important; }
.ds-bg-info-light { background-color: var(--ds-info-light) !important; }

.ds-bg-neutral { background-color: var(--ds-neutral) !important; }
.ds-bg-neutral-light { background-color: var(--ds-neutral-light) !important; }

/* Grayscale */
.ds-bg-gray-50 { background-color: var(--ds-gray-50) !important; }
.ds-bg-gray-100 { background-color: var(--ds-gray-100) !important; }
.ds-bg-gray-200 { background-color: var(--ds-gray-200) !important; }
.ds-bg-gray-300 { background-color: var(--ds-gray-300) !important; }
.ds-bg-gray-400 { background-color: var(--ds-gray-400) !important; }
.ds-bg-gray-500 { background-color: var(--ds-gray-500) !important; }

/* Semantic backgrounds */
.ds-bg-primary-bg { background-color: var(--ds-bg-primary) !important; }
.ds-bg-secondary { background-color: var(--ds-bg-secondary) !important; }
.ds-bg-tertiary { background-color: var(--ds-bg-tertiary) !important; }

/* Transparent */
.ds-bg-transparent { background-color: transparent !important; }

/* ============================================
   BACKGROUND OPACITY
   ============================================ */

.ds-bg-opacity-0 { background-color: rgba(var(--ds-bg-rgb), 0) !important; }
.ds-bg-opacity-50 { background-color: rgba(var(--ds-bg-rgb), 0.5) !important; }
.ds-bg-opacity-75 { background-color: rgba(var(--ds-bg-rgb), 0.75) !important; }
.ds-bg-opacity-90 { background-color: rgba(var(--ds-bg-rgb), 0.9) !important; }


/* === Imported from: ./utilities/layout.css === */

/**
 * Design System OptiGest360
 * Utilities: Layout & Spacing
 *
 * Classes utilitaires pour la mise en page et l'espacement
 */

/* ============================================
   FLEXBOX UTILITIES
   ============================================ */

.flex-row {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: var(--ds-space-3);
    flex-wrap: wrap;
}

.flex-col {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-3);
}

.flex-wrap {
    flex-wrap: wrap;
}

.flex-nowrap {
    flex-wrap: nowrap;
}

/* ============================================
   ALIGNMENT UTILITIES
   ============================================ */

.align-start {
    align-items: flex-start;
}

.align-center {
    align-items: center;
}

.align-end {
    align-items: flex-end;
}

.justify-start {
    justify-content: flex-start;
}

.justify-center {
    justify-content: center;
}

.justify-end {
    justify-content: flex-end;
}

.justify-between {
    justify-content: space-between;
}

/* ============================================
   GAP UTILITIES (Override default)
   ============================================ */

.gap-0 { gap: 0; }
.gap-1 { gap: var(--ds-space-1); }
.gap-2 { gap: var(--ds-space-2); }
.gap-3 { gap: var(--ds-space-3); }
.gap-4 { gap: var(--ds-space-4); }
.gap-5 { gap: var(--ds-space-5); }
.gap-6 { gap: var(--ds-space-6); }
.gap-8 { gap: var(--ds-space-8); }

/* ============================================
   FILTERS ROW (Barre de filtres)
   ============================================ */

.filters-row {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: var(--ds-space-4);
    flex-wrap: wrap;
    padding: var(--ds-space-4) 0;
}

/* ============================================
   TABLE CONTAINER
   ============================================ */

.table-container {
    width: 100%;
    overflow-x: auto;
    margin-top: var(--ds-space-4);
}

.table-container table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--ds-text-sm);
}

.table-container thead {
    background-color: var(--ds-bg-secondary);
    border-bottom: 2px solid var(--ds-border-default);
}

.table-container thead th {
    padding: var(--ds-space-3) var(--ds-space-4);
    text-align: left;
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    white-space: nowrap;
}

.table-container tbody tr {
    border-bottom: 1px solid var(--ds-border-subtle);
    transition: background-color 0.2s ease;
}

.table-container tbody tr:hover {
    background-color: var(--ds-bg-secondary);
}

.table-container tbody td {
    padding: var(--ds-space-3) var(--ds-space-4);
    color: var(--ds-text-secondary);
}

/* Alignement des cellules */
.table-container .text-center {
    text-align: center;
}

.table-container .text-right,
.table-container .ds-text-right {
    text-align: right;
}

/* Lignes spéciales */
.table-container .classe-row {
    background-color: var(--ds-bg-tertiary, #fafafa);
    font-weight: var(--ds-font-semibold);
    cursor: pointer;
}

.table-container .classe-row:hover {
    background-color: var(--ds-primary-light);
}

.table-container .compte-detail {
    background-color: var(--ds-white);
}

/* ============================================
   CONTENT SECTIONS
   ============================================ */

.content-section {
    margin-bottom: var(--ds-space-6);
}

.content-section:last-child {
    margin-bottom: 0;
}

/* ============================================
   GRID LAYOUTS
   ============================================ */

.grid {
    display: grid;
    gap: var(--ds-space-4);
}

.grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
.grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

/* Responsive grid */
@media (max-width: 1024px) {
    .grid-cols-6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .grid-cols-5 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .grid-cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 768px) {
    .grid-cols-6,
    .grid-cols-5,
    .grid-cols-4,
    .grid-cols-3,
    .grid-cols-2 {
        grid-template-columns: repeat(1, minmax(0, 1fr));
    }
}

/* ============================================
   SPACING BETWEEN CARDS
   ============================================ */

.ds-card + .ds-card {
    margin-top: var(--ds-space-6);
}

/* ============================================
   ACTION GROUPS (groupes de boutons/liens)
   ============================================ */

.action-group {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.action-group--vertical {
    flex-direction: column;
    align-items: flex-start;
}

/* ============================================
   DIVIDERS
   ============================================ */

.divider {
    height: 1px;
    background-color: var(--ds-border-subtle);
    margin: var(--ds-space-4) 0;
}

.divider--vertical {
    width: 1px;
    height: auto;
    margin: 0 var(--ds-space-4);
}

/* ============================================
   VISIBILITY UTILITIES
   ============================================ */

.d-none {
    display: none !important;
}

.d-block {
    display: block !important;
}

.d-flex {
    display: flex !important;
}

.d-inline {
    display: inline !important;
}

.d-inline-block {
    display: inline-block !important;
}

/* ============================================
   RESPONSIVE SPACING
   ============================================ */

@media (max-width: 768px) {
    .filters-row {
        gap: var(--ds-space-3);
        padding: var(--ds-space-3) 0;
    }

    .flex-row {
        gap: var(--ds-space-2);
    }

    .table-container {
        margin-top: var(--ds-space-3);
    }
}



/* ============================================
   COMPATIBILITY
   ============================================ */


/* === Previously in: ./compatibility.css (now split into proper components) === */
/* badge--neutral → badge.css | form-input--error → form-states.css
 * data-table → data-table.css | filter-dropdown → filter-dropdown.css
 * pagination aliases → patterns/pagination.css | empty-state alias → patterns/empty-state.css
 */

/* ============================================
   BADGE VARIANTS
   ============================================ */

.ds-badge--neutral {
    background-color: var(--ds-gray-200);
    color: var(--ds-gray-700);
}

/* ============================================
   FORM INPUT ERROR STATE
   ============================================ */

.ds-form-input--error {
    border-color: var(--ds-danger);
}

.ds-form-input--error:focus {
    border-color: var(--ds-danger);
    box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
}

/* ============================================
   DATA TABLE
   ============================================ */

.ds-data-table-container {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.ds-data-table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--ds-text-sm);
}

.ds-data-table__header {
    background-color: var(--ds-gray-100);
    border-bottom: 2px solid var(--ds-border-default);
}

.ds-data-table__header tr {
    border: none;
}

.ds-data-table__th {
    padding: var(--ds-space-3) var(--ds-space-4);
    text-align: left;
    font-weight: var(--ds-font-semibold);
    color: var(--ds-text-primary);
    font-size: var(--ds-text-xs);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    white-space: nowrap;
}

.ds-data-table__body {
    background-color: var(--ds-white);
}

.ds-data-table__tr {
    border-bottom: 1px solid var(--ds-border-subtle);
    transition: background-color var(--ds-duration-fast);
}

.ds-data-table__tr:hover {
    background-color: var(--ds-gray-50);
}

.ds-data-table__td {
    padding: var(--ds-space-4);
    color: var(--ds-text-primary);
    vertical-align: middle;
}

.ds-data-table__td:first-child {
    font-weight: var(--ds-font-medium);
}

/* Empty state */
.ds-data-table__empty {
    padding: var(--ds-space-12) var(--ds-space-4);
    text-align: center;
    color: var(--ds-text-secondary);
}

/* ============================================
   FILTER DROPDOWN
   ============================================ */

.ds-filter-dropdown {
    position: relative;
    display: inline-block;
}

.ds-filter-dropdown__select {
    all: unset;
    box-sizing: border-box;
    display: block;
    width: 100%;
    min-width: 180px;
    padding: var(--ds-space-3) var(--ds-space-10) var(--ds-space-3) var(--ds-space-4);
    min-height: 40px;
    font-family: var(--ds-font-family);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-normal);
    line-height: var(--ds-leading-normal);
    color: var(--ds-text-primary);
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-input);
    cursor: pointer;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right var(--ds-space-3) center;
    background-size: 16px 16px;
    transition: var(--ds-transition-border), var(--ds-transition-shadow);
    appearance: none;
}

.ds-filter-dropdown__select:hover {
    border-color: var(--ds-border-strong);
}

.ds-filter-dropdown__select:focus {
    outline: none;
    border-color: var(--ds-primary);
    box-shadow: var(--ds-focus-ring);
}

.ds-filter-dropdown__trigger {
    all: unset;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--ds-space-2);
    padding: var(--ds-space-3) var(--ds-space-4);
    min-height: 40px;
    font-family: var(--ds-font-family);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-primary);
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-button);
    cursor: pointer;
    transition: var(--ds-transition-base);
    white-space: nowrap;
}

.ds-filter-dropdown__trigger:hover {
    background-color: var(--ds-gray-50);
    border-color: var(--ds-border-strong);
}

.ds-filter-dropdown__menu {
    position: absolute;
    top: calc(100% + var(--ds-space-2));
    right: 0;
    min-width: 200px;
    background: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
    box-shadow: var(--ds-shadow-lg);
    padding: var(--ds-space-2);
    z-index: 50;
    display: none;
    opacity: 0;
    transform: translateY(-8px);
    transition: all var(--ds-duration-fast);
}

.ds-filter-dropdown.is-active .ds-filter-dropdown__menu {
    display: block;
    opacity: 1;
    transform: translateY(0);
}

.ds-filter-dropdown__item {
    all: unset;
    display: flex;
    align-items: center;
    gap: var(--ds-space-3);
    width: 100%;
    padding: var(--ds-space-3);
    border-radius: var(--ds-radius-sm);
    cursor: pointer;
    font-size: var(--ds-text-sm);
    color: var(--ds-text-primary);
    transition: all var(--ds-duration-fast);
    text-decoration: none;
    box-sizing: border-box;
}

.ds-filter-dropdown__item:hover {
    background: var(--ds-bg-secondary);
    color: var(--ds-primary);
}

.ds-filter-dropdown__item i {
    width: 16px;
    text-align: center;
    color: var(--ds-text-secondary);
    flex-shrink: 0;
}

.ds-filter-dropdown__item:hover i {
    color: var(--ds-primary);
}

/* ============================================
   PAGINATION
   ============================================ */

.ds-pagination__btn {
    all: unset;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    min-height: 36px;
    padding: var(--ds-space-2) var(--ds-space-3);
    font-size: var(--ds-text-sm);
    font-weight: var(--ds-font-medium);
    color: var(--ds-text-primary);
    background-color: var(--ds-white);
    border: 1px solid var(--ds-border-default);
    border-radius: var(--ds-radius-md);
    cursor: pointer;
    transition: var(--ds-transition-base);
}

.ds-pagination__btn:hover:not(:disabled) {
    background-color: var(--ds-gray-50);
    border-color: var(--ds-border-strong);
}

.ds-pagination__btn--active {
    background-color: var(--ds-primary);
    border-color: var(--ds-primary);
    color: var(--ds-white);
}

.ds-pagination__btn--active:hover {
    background-color: var(--ds-primary-hover);
    border-color: var(--ds-primary-hover);
}

.ds-pagination__btn:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

.ds-pagination__controls {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

.ds-pagination__dots {
    padding: 0 var(--ds-space-2);
    color: var(--ds-text-secondary);
}

.ds-pagination__page {
    /* Alias for ds-pagination__btn */
}

/* === Imported from: ./components/form-states.css === */

.ds-form-input--success { border-color: var(--ds-success); }
.ds-form-input--success:focus { border-color: var(--ds-success); box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.1); }
.ds-form-input--warning { border-color: var(--ds-warning); }
.ds-form-input--warning:focus { border-color: var(--ds-warning); box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.1); }
.ds-form-error-text { font-size: var(--ds-text-xs); color: var(--ds-danger); margin-top: var(--ds-space-1); }
.ds-form-success-text { font-size: var(--ds-text-xs); color: var(--ds-success); margin-top: var(--ds-space-1); }

/* === Imported from: ./components/data-table.css (th/td alignment helpers) === */

.ds-data-table__th--right, .ds-data-table__td--right { text-align: right; }
.ds-data-table__th--center, .ds-data-table__td--center { text-align: center; }
.ds-data-table__td--numeric { font-variant-numeric: tabular-nums; font-family: var(--ds-font-mono); }
.ds-data-table__tr--selected { background-color: rgba(99, 102, 241, 0.05); }

/* === Export dropdown divider === */

.ds-export-dropdown__divider { height: 1px; background-color: var(--ds-border-subtle, var(--ds-border-default)); margin: var(--ds-space-2) 0; }

/* ============================================
   LEGACY COMPATIBILITY — RH Module
   Classes used in RH views that map to DS patterns
   ============================================ */

/* --- Stat Mini Cards (stat-mini) --- */
.stat-mini {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--ds-space-1, 4px);
    padding: var(--ds-space-4, 16px) var(--ds-space-3, 12px);
    background: var(--ds-white, #fff);
    border: 1px solid var(--ds-border-default, #e5e7eb);
    border-radius: var(--ds-radius-card, 8px);
    min-width: 120px;
    text-align: center;
}

.stat-mini-value {
    font-size: var(--ds-text-2xl, 1.5rem);
    font-weight: var(--ds-font-bold, 700);
    color: var(--ds-text-primary, #111827);
    line-height: 1;
}

.stat-mini-label {
    font-size: var(--ds-text-xs, 0.75rem);
    color: var(--ds-text-secondary, #6b7280);
    text-transform: uppercase;
    letter-spacing: 0.025em;
}

/* --- Data Table (data-table wrapper) --- */
.data-table {
    width: 100%;
    border-collapse: collapse;
}

.data-table th,
.data-table td {
    padding: var(--ds-space-3, 12px) var(--ds-space-4, 16px);
    text-align: left;
    border-bottom: 1px solid var(--ds-border-default, #e5e7eb);
    font-size: var(--ds-text-sm, 0.875rem);
}

.data-table thead th {
    background: var(--ds-bg-secondary, #f9fafb);
    font-weight: var(--ds-font-semibold, 600);
    color: var(--ds-text-secondary, #6b7280);
    text-transform: uppercase;
    font-size: var(--ds-text-xs, 0.75rem);
    letter-spacing: 0.05em;
}

.data-table tbody tr:hover {
    background: var(--ds-bg-secondary, #f9fafb);
}

/* --- Invoice / Entity Number --- */
.invoice-number {
    color: var(--ds-primary, #3b82f6);
    font-weight: var(--ds-font-semibold, 600);
    cursor: pointer;
    text-decoration: none;
}

.invoice-number:hover {
    text-decoration: underline;
}

/* --- Client Info Cell --- */
.client-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.client-name {
    font-weight: var(--ds-font-semibold, 600);
    color: var(--ds-text-primary, #111827);
}

.client-email {
    font-size: var(--ds-text-xs, 0.75rem);
    color: var(--ds-text-secondary, #6b7280);
}

/* --- Action Buttons (row actions) --- */
.action-buttons {
    display: flex;
    align-items: center;
    gap: var(--ds-space-1, 4px);
    justify-content: flex-end;
}

.btn-icon {
    all: unset;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: var(--ds-radius-base, 6px);
    color: var(--ds-text-secondary, #6b7280);
    transition: all 150ms ease;
}

.btn-icon:hover {
    background: var(--ds-bg-secondary, #f3f4f6);
    color: var(--ds-text-primary, #111827);
}

/* --- Form Section Title & Value --- */
.form-section-title {
    font-size: var(--ds-text-base, 1rem);
    font-weight: var(--ds-font-semibold, 600);
    color: var(--ds-text-primary, #111827);
    margin-bottom: var(--ds-space-4, 16px);
    display: flex;
    align-items: center;
    gap: var(--ds-space-2, 8px);
}

.form-section-title i {
    color: var(--ds-primary, #3b82f6);
}

.form-value {
    font-size: var(--ds-text-sm, 0.875rem);
    color: var(--ds-text-primary, #111827);
    padding: var(--ds-space-2, 8px) 0;
}

/* --- Status List --- */
.status-list {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-3, 12px);
}

.status-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--ds-space-3, 12px);
    border: 1px solid var(--ds-border-default, #e5e7eb);
    border-radius: var(--ds-radius-base, 6px);
}

.status-label {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3, 12px);
    font-size: var(--ds-text-sm, 0.875rem);
}

.status-icon {
    width: 36px;
    height: 36px;
    border-radius: var(--ds-radius-base, 6px);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.875rem;
    color: white;
}

.status-icon.blue { background: var(--ds-primary, #3b82f6); }
.status-icon.green { background: var(--ds-success, #10b981); }
.status-icon.orange { background: var(--ds-warning, #f59e0b); }
.status-icon.red { background: var(--ds-danger, #ef4444); }
.status-icon.primary { background: var(--ds-primary, #3b82f6); }
.status-icon.success { background: var(--ds-success, #10b981); }
.status-icon.warning { background: var(--ds-warning, #f59e0b); }
.status-icon.danger { background: var(--ds-danger, #ef4444); }
.status-icon.info { background: var(--ds-info, #06b6d4); }

/* --- Pagination --- */
.pagination-controls {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--ds-space-4, 16px);
    border-top: 1px solid var(--ds-border-default, #e5e7eb);
}

.pagination-info {
    font-size: var(--ds-text-sm, 0.875rem);
    color: var(--ds-text-secondary, #6b7280);
}

.pagination-dots {
    padding: 0 var(--ds-space-1, 4px);
    color: var(--ds-text-secondary, #6b7280);
}

.btn-pagination {
    all: unset;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    height: 32px;
    padding: 0 var(--ds-space-2, 8px);
    border: 1px solid var(--ds-border-default, #e5e7eb);
    border-radius: var(--ds-radius-base, 6px);
    font-size: var(--ds-text-sm, 0.875rem);
    color: var(--ds-text-primary, #111827);
    background: var(--ds-white, #fff);
    transition: all 150ms ease;
}

.btn-pagination:hover {
    background: var(--ds-bg-secondary, #f3f4f6);
    border-color: var(--ds-primary, #3b82f6);
}

.btn-pagination.active,
.btn-pagination.is-active {
    background: var(--ds-primary, #3b82f6);
    color: white;
    border-color: var(--ds-primary, #3b82f6);
}

/* --- Tab Content Wrapper --- */
.tab-content-wrapper {
    position: relative;
}

/* --- Badge secondary --- */
.ds-badge--secondary {
    background: var(--ds-bg-tertiary, #e5e7eb);
    color: var(--ds-text-secondary, #6b7280);
}

/* --- Stats Grid compat (stats-grid used in some views) --- */
.stats-grid,
.stats-mini {
    display: grid;
    gap: var(--ds-space-6, 24px);
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

/* --- Dashboard Grid --- */
.dashboard-grid {
    display: grid;
    gap: var(--ds-space-6, 24px);
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

/* --- Card Link --- */
.card-link {
    font-size: var(--ds-text-sm, 0.875rem);
    color: var(--ds-primary, #3b82f6);
    text-decoration: none;
    font-weight: var(--ds-font-medium, 500);
}

.card-link:hover {
    text-decoration: underline;
}

/* --- Action Link (inline row actions) --- */
.action-link {
    all: unset;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: var(--ds-radius-base, 6px);
    color: var(--ds-text-secondary, #6b7280);
    transition: all 150ms ease;
}

.action-link:hover {
    background: var(--ds-bg-secondary, #f3f4f6);
    color: var(--ds-primary, #3b82f6);
}

/* --- Modal Form --- */
.ds-modal-form,
.modal-form {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-4, 16px);
}

/* --- Filter Select (legacy) --- */
.filter-select {
    appearance: none;
    padding: var(--ds-space-2, 8px) var(--ds-space-8, 32px) var(--ds-space-2, 8px) var(--ds-space-3, 12px);
    border: 1px solid var(--ds-border-default, #e5e7eb);
    border-radius: var(--ds-radius-base, 6px);
    background: var(--ds-white, #fff) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M6 8L1 3h10z'/%3E%3C/svg%3E") right 10px center no-repeat;
    font-size: var(--ds-text-sm, 0.875rem);
    color: var(--ds-text-primary, #111827);
    cursor: pointer;
}

.filter-select:focus {
    outline: none;
    border-color: var(--ds-primary, #3b82f6);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

/* --- Filters Section (legacy) --- */
.filters-section {
    display: flex;
    flex-direction: column;
    gap: var(--ds-space-3, 12px);
    margin-bottom: var(--ds-space-6, 24px);
}

.filters-row {
    display: flex;
    align-items: center;
    gap: var(--ds-space-3, 12px);
    flex-wrap: wrap;
}

/* --- Two Column Grid (legacy) --- */
.two-col-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--ds-space-6, 24px);
}

@media (max-width: 768px) {
    .two-col-grid {
        grid-template-columns: 1fr;
    }
}

/* ============================================
   LEGACY COMPATIBILITY — Round 2
   Additional classes used across RH views
   ============================================ */

/* --- Status Icon color variants --- */
.status-icon.purple { background: #8b5cf6; }
.status-icon.yellow { background: #eab308; }

/* --- Status Value --- */
.status-value {
    font-size: var(--ds-text-sm, 0.875rem);
    font-weight: var(--ds-font-semibold, 600);
    color: var(--ds-text-primary, #111827);
}

/* --- Trend colors --- */
.positive { color: var(--ds-success, #10b981); }
.negative { color: var(--ds-danger, #ef4444); }

/* --- Background colors --- */
.bg-danger { background-color: var(--ds-danger, #ef4444); }
.bg-info { background-color: var(--ds-info, #06b6d4); }
.bg-warning { background-color: var(--ds-warning, #f59e0b); }
.bg-gray-200 { background-color: #e5e7eb; }
.bg-hover:hover { background-color: var(--ds-bg-secondary, #f9fafb); }

/* --- Utility classes (Tailwind-like) --- */
.flex-1 { flex: 1; }
.flex-shrink-0 { flex-shrink: 0; }
.items-center { align-items: center; }
.items-start { align-items: flex-start; }
.inline-block { display: inline-block; }
.overflow-hidden { overflow: hidden; }
.rounded { border-radius: var(--ds-radius-base, 6px); }
.rounded-lg { border-radius: var(--ds-radius-lg, 12px); }
.font-bold { font-weight: var(--ds-font-bold, 700); }
.h-2 { height: 0.5rem; }

/* --- Text sizes --- */
.text-xxs { font-size: 0.625rem; }
.text-base { font-size: var(--ds-text-base, 1rem); }
.text-2xl { font-size: var(--ds-text-2xl, 1.5rem); }
.text-5xl { font-size: 3rem; }
.text-dark { color: var(--ds-text-primary, #111827); }
.opacity-30 { opacity: 0.3; }

/* --- Spacing --- */
.mb-1 { margin-bottom: var(--ds-space-1, 4px); }
.mt-6 { margin-top: var(--ds-space-6, 24px); }
.my-6 { margin-top: var(--ds-space-6, 24px); margin-bottom: var(--ds-space-6, 24px); }
.p-8 { padding: var(--ds-space-8, 32px); }
.px-4 { padding-left: var(--ds-space-4, 16px); padding-right: var(--ds-space-4, 16px); }
.py-2 { padding-top: var(--ds-space-2, 8px); padding-bottom: var(--ds-space-2, 8px); }

/* --- Max widths --- */
.max-w-150 { max-width: 150px; }
.max-w-200 { max-width: 200px; }

/* --- Grid auto-fit --- */
.grid-auto-fit-200 {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--ds-space-4, 16px);
}

/* --- Avatar large --- */
.avatar-lg,
.ds-avatar--lg {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--ds-text-xl, 1.25rem);
    font-weight: var(--ds-font-semibold, 600);
    background: var(--ds-primary-light, #dbeafe);
    color: var(--ds-primary, #3b82f6);
}

/* --- Toggle Switch --- */
.toggle-switch {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
    cursor: pointer;
}

.toggle-switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.toggle-slider {
    position: absolute;
    inset: 0;
    background-color: #cbd5e1;
    border-radius: 24px;
    transition: 200ms ease;
}

.toggle-slider::before {
    content: '';
    position: absolute;
    height: 18px;
    width: 18px;
    left: 3px;
    bottom: 3px;
    background-color: white;
    border-radius: 50%;
    transition: 200ms ease;
}

.toggle-switch input:checked + .toggle-slider {
    background-color: var(--ds-primary, #3b82f6);
}

.toggle-switch input:checked + .toggle-slider::before {
    transform: translateX(20px);
}

/* --- Chart Container --- */
.chart-container {
    width: 100%;
    min-height: 200px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--ds-bg-secondary, #f9fafb);
    border-radius: var(--ds-radius-base, 6px);
    padding: var(--ds-space-4, 16px);
    color: var(--ds-text-secondary, #6b7280);
    font-size: var(--ds-text-sm, 0.875rem);
}

/* --- Pagination button variants --- */
.btn-pagination--prev,
.btn-pagination--next {
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-1, 4px);
}

.btn-pagination--ellipsis {
    border: none;
    background: none;
    color: var(--ds-text-secondary, #6b7280);
    cursor: default;
    padding: 0 var(--ds-space-1, 4px);
}

.btn-pagination:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

/* --- Select fix (ds-input on <select> needs appearance) --- */
select.ds-input,
select.ds-input--sm {
    appearance: auto;
    -webkit-appearance: auto;
    background-color: var(--ds-white, #fff);
    border: 1px solid var(--ds-border-default, #e5e7eb);
    border-radius: var(--ds-radius-base, 6px);
    cursor: pointer;
}

select.ds-input:focus,
select.ds-input--sm:focus {
    outline: none;
    border-color: var(--ds-primary, #3b82f6);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

/* --- Button filter --- */
.btn-filter {
    all: unset;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: var(--ds-space-2, 8px);
    padding: var(--ds-space-2, 8px) var(--ds-space-3, 12px);
    border: 1px solid var(--ds-border-default, #e5e7eb);
    border-radius: var(--ds-radius-base, 6px);
    font-size: var(--ds-text-sm, 0.875rem);
    color: var(--ds-text-primary, #111827);
    background: var(--ds-white, #fff);
    transition: all 150ms ease;
}

.btn-filter:hover {
    border-color: var(--ds-primary, #3b82f6);
    background: var(--ds-bg-secondary, #f9fafb);
}

/* --- Pagination wrapper --- */
.pagination-wrapper {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--ds-space-4, 16px) 0;
}

/* --- Badge color variants (purple/yellow) --- */
.ds-badge--purple,
.ds-badge.purple {
    background: #f3e8ff;
    color: #7c3aed;
}

.ds-badge--yellow,
.ds-badge.yellow {
    background: #fef9c3;
    color: #a16207;
}


/* === Imported from: ./components/social-icon.css === */

.info-icon--linkedin  { background: rgba(10, 102, 194, 0.1); color: #0a66c2; }
.info-icon--twitter   { background: rgba(29, 161, 242, 0.1); color: #1da1f2; }
.info-icon--facebook  { background: rgba(24, 119, 242, 0.1); color: #1877f2; }
.info-icon--instagram { background: rgba(225, 48, 108, 0.1); color: #e1306c; }
.info-icon--youtube   { background: rgba(255, 0, 0, 0.1); color: #ff0000; }
.info-icon--whatsapp  { background: rgba(37, 211, 102, 0.1); color: #25d366; }
.info-icon--tiktok    { background: rgba(0, 0, 0, 0.08); color: #010101; }
.info-icon--telegram  { background: rgba(0, 136, 204, 0.1); color: #0088cc; }

/* === Imported from: ./components/svg-gradient.css === */

.svg-stop--primary-start      { stop-color: rgb(6, 53, 44); stop-opacity: 1; }
.svg-stop--primary-end         { stop-color: rgb(220, 38, 38); stop-opacity: 1; }
.svg-stop--primary-area-start  { stop-color: rgb(6, 53, 44); stop-opacity: 0.3; }
.svg-stop--primary-area-end    { stop-color: rgb(6, 53, 44); stop-opacity: 0; }
.svg-stop--success-start { stop-color: var(--ds-success); stop-opacity: 1; }
.svg-stop--success-end   { stop-color: var(--ds-success); stop-opacity: 0; }
.svg-stop--danger-start  { stop-color: var(--ds-danger); stop-opacity: 1; }
.svg-stop--danger-end    { stop-color: var(--ds-danger); stop-opacity: 0; }
.svg-stop--info-start    { stop-color: var(--ds-info); stop-opacity: 1; }
.svg-stop--info-end      { stop-color: var(--ds-info); stop-opacity: 0; }

/* === Imported from: ./components/pyramid.css (full affiliation system) === */

/* Hero */
.affiliation-hero { background: linear-gradient(135deg, var(--ds-primary, #06352c), var(--ds-primary-700, #042a23)); border-radius: var(--ds-radius-lg, 12px); padding: var(--ds-space-10) var(--ds-space-8); margin-bottom: var(--ds-space-6); color: var(--ds-white); text-align: center; }
.hero-content { max-width: 600px; margin: 0 auto; }
.hero-title { font-size: var(--ds-text-2xl); font-weight: var(--ds-font-bold); margin: 0 0 var(--ds-space-2); }
.hero-subtitle { font-size: var(--ds-text-base); opacity: 0.85; margin: 0 0 var(--ds-space-6); }
.referral-link-box { display: flex; gap: var(--ds-space-2); max-width: 500px; margin: 0 auto; }
.referral-link-input { flex: 1; padding: var(--ds-space-3) var(--ds-space-4); border: 1px solid rgba(255,255,255,0.3); border-radius: var(--ds-radius-md, 8px); background: rgba(255,255,255,0.15); color: var(--ds-white); font-size: var(--ds-text-sm); }
.btn-copy-link { display: flex; align-items: center; gap: var(--ds-space-2); padding: var(--ds-space-3) var(--ds-space-4); background: var(--ds-white); color: var(--ds-primary, #06352c); border: none; border-radius: var(--ds-radius-md, 8px); font-weight: var(--ds-font-semibold); font-size: var(--ds-text-sm); cursor: pointer; white-space: nowrap; }

/* Section titles */
.section-title { font-size: var(--ds-text-lg); font-weight: var(--ds-font-bold); color: var(--ds-text-primary); display: flex; align-items: center; gap: var(--ds-space-2); margin: 0 0 var(--ds-space-1); }
.section-subtitle { font-size: var(--ds-text-sm); color: var(--ds-text-secondary); margin: 0 0 var(--ds-space-5); }

/* 2-col layout */
.affiliation-content { display: grid; grid-template-columns: 2fr 1fr; gap: var(--ds-space-6); margin-bottom: var(--ds-space-6); }
.pyramid-section, .rewards-section { background: var(--ds-white); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-lg, 12px); padding: var(--ds-space-6); }
@media (max-width: 1024px) { .affiliation-content { grid-template-columns: 1fr; } }

/* Pyramid */
.pyramid-canvas-container { display: flex; justify-content: center; padding: var(--ds-space-4) 0; }
.pyramid { display: flex; flex-direction: column; align-items: center; }
.pyramid-level { display: flex; justify-content: center; }
.pyramid-connector { width: 2px; height: 8px; background: var(--ds-border-default); margin: 0 auto; }
.level-shape { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: var(--ds-space-3); background: var(--ds-bg-secondary); border: 2px solid var(--ds-border-default); border-radius: var(--ds-radius-md, 8px); text-align: center; cursor: pointer; transition: all 0.2s; position: relative; }
.level-shape:hover { border-color: var(--ds-primary); }
.level-shape.current { border-color: var(--ds-primary, #06352c); background: rgba(6,53,44,0.08); box-shadow: 0 0 0 3px rgba(6,53,44,0.15); }
.level-shape.locked { opacity: 0.5; cursor: default; }
.level-shape.locked:hover { border-color: var(--ds-border-default); }
.level-badge { position: absolute; top: -10px; right: -10px; width: 24px; height: 24px; background: var(--ds-primary, #06352c); color: var(--ds-white); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 0.6rem; }
.level-number { font-size: 0.6rem; font-weight: var(--ds-font-bold); text-transform: uppercase; letter-spacing: 0.05em; color: var(--ds-text-secondary); }
.level-title { font-size: var(--ds-text-sm); font-weight: var(--ds-font-bold); color: var(--ds-text-primary); }
.level-users { font-size: 0.65rem; color: var(--ds-text-secondary); }
.level-reward { font-size: var(--ds-text-sm); font-weight: var(--ds-font-bold); color: var(--ds-primary, #06352c); }
.level-shape--5 { width: 180px; height: 100px; }
.level-shape--4 { width: 240px; height: 100px; }
.level-shape--3 { width: 300px; height: 110px; }
.level-shape--2 { width: 360px; height: 100px; }
.level-shape--1 { width: 420px; height: 100px; }
.level-shape--completed { opacity: 0.7; }

/* Rewards */
.reward-item { display: flex; align-items: center; gap: var(--ds-space-4); padding: var(--ds-space-4) 0; border-bottom: 1px solid var(--ds-border-default); }
.reward-item:last-of-type { border-bottom: none; }
.reward-icon { width: 44px; height: 44px; min-width: 44px; border-radius: var(--ds-radius-md, 8px); background: rgba(6,53,44,0.1); color: var(--ds-primary, #06352c); display: flex; align-items: center; justify-content: center; font-size: var(--ds-text-lg); }
.reward-info { flex: 1; min-width: 0; }
.reward-title { font-weight: var(--ds-font-semibold); color: var(--ds-text-primary); font-size: var(--ds-text-sm); }
.reward-description { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); }
.reward-amount { font-size: var(--ds-text-lg); font-weight: var(--ds-font-bold); color: var(--ds-primary, #06352c); white-space: nowrap; }

/* Referrals section */
.referrals-section { background: var(--ds-white); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-lg, 12px); padding: var(--ds-space-6); margin-bottom: var(--ds-space-6); }
.user-info { display: flex; align-items: center; gap: var(--ds-space-3); }
.user-avatar { width: 36px; height: 36px; min-width: 36px; border-radius: 50%; background: var(--ds-primary-100, rgba(99,102,241,0.1)); color: var(--ds-primary); display: flex; align-items: center; justify-content: center; font-weight: var(--ds-font-semibold); font-size: var(--ds-text-xs); }
.user-details { display: flex; flex-direction: column; }
.user-name { font-weight: var(--ds-font-medium); color: var(--ds-text-primary); font-size: var(--ds-text-sm); }
.user-email { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); }
.level-badge-table { display: inline-flex; align-items: center; gap: var(--ds-space-1); font-size: var(--ds-text-xs); font-weight: var(--ds-font-medium); color: var(--ds-text-secondary); }

/* Fullscreen pyramid */
.fullscreen-pyramid-container { padding: var(--ds-space-4) 0; }
.fullscreen-pyramid { display: flex; flex-direction: column; gap: var(--ds-space-4); }
.fullscreen-level-shape { display: flex; align-items: center; gap: var(--ds-space-5); padding: var(--ds-space-5); border: 2px solid var(--ds-border-default); border-radius: var(--ds-radius-lg, 12px); background: var(--ds-white); position: relative; transition: all 0.2s; }
.fullscreen-level-shape.current { border-color: var(--ds-primary, #06352c); background: rgba(6,53,44,0.04); box-shadow: 0 0 0 3px rgba(6,53,44,0.1); }
.fullscreen-level-shape.locked { opacity: 0.5; }
.fullscreen-level-shape--completed { opacity: 0.7; }
.fullscreen-level-badge { position: absolute; top: -8px; right: -8px; width: 28px; height: 28px; background: var(--ds-primary, #06352c); color: var(--ds-white); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 0.7rem; }
.fullscreen-level-icon { width: 48px; height: 48px; min-width: 48px; border-radius: var(--ds-radius-md, 8px); background: var(--ds-bg-secondary); display: flex; align-items: center; justify-content: center; font-size: var(--ds-text-xl); color: var(--ds-text-secondary); }
.fullscreen-level-shape.current .fullscreen-level-icon { background: rgba(6,53,44,0.1); color: var(--ds-primary, #06352c); }
.fullscreen-level-info { flex: 1; min-width: 0; }
.fullscreen-level-number { font-size: 0.65rem; font-weight: var(--ds-font-bold); text-transform: uppercase; letter-spacing: 0.05em; color: var(--ds-text-secondary); }
.fullscreen-level-title { font-size: var(--ds-text-xl); font-weight: var(--ds-font-bold); color: var(--ds-text-primary); }
.fullscreen-level-users { font-size: var(--ds-text-sm); color: var(--ds-text-secondary); margin-bottom: var(--ds-space-1); }
.fullscreen-level-description { font-size: var(--ds-text-sm); color: var(--ds-text-secondary); line-height: 1.5; }
.fullscreen-level-stats { text-align: right; white-space: nowrap; }
.fullscreen-level-reward { font-size: var(--ds-text-lg); font-weight: var(--ds-font-bold); color: var(--ds-primary, #06352c); }
.fullscreen-level-bonus { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); }

/* Benefits */
.level-benefits { margin-top: var(--ds-space-8); }
.benefits-title { font-size: var(--ds-text-lg); font-weight: var(--ds-font-bold); color: var(--ds-text-primary); display: flex; align-items: center; gap: var(--ds-space-2); margin: 0 0 var(--ds-space-5); }
.benefits-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--ds-space-4); }
@media (max-width: 768px) {
    .benefits-grid { grid-template-columns: 1fr; }

    /* Affiliation Hero */
    .affiliation-hero {
        padding: var(--ds-space-6) var(--ds-space-4);
    }
    .hero-title {
        font-size: var(--ds-text-xl);
    }
    .hero-subtitle {
        font-size: var(--ds-text-sm);
    }
    .referral-link-box {
        flex-direction: column;
        max-width: 100%;
    }
    .referral-link-input {
        width: 100%;
        font-size: var(--ds-text-xs);
    }
    .btn-copy-link {
        width: 100%;
        justify-content: center;
    }

    /* Pyramid: scale down widths */
    .pyramid-canvas-container {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .level-shape--5 { width: 120px; height: 80px; }
    .level-shape--4 { width: 160px; height: 80px; }
    .level-shape--3 { width: 200px; height: 85px; }
    .level-shape--2 { width: 240px; height: 80px; }
    .level-shape--1 { width: 280px; height: 80px; }
    .level-number { font-size: 0.55rem; }
    .level-title { font-size: var(--ds-text-sm); }
    .level-users, .level-reward { font-size: 0.65rem; }

    /* Rewards */
    .reward-item {
        gap: var(--ds-space-2);
        padding: var(--ds-space-3) 0;
    }
    .reward-icon {
        width: 36px;
        height: 36px;
        min-width: 36px;
        font-size: 0.85rem;
    }
    .reward-title { font-size: var(--ds-text-sm); }
    .reward-description { font-size: var(--ds-text-xs); }
    .reward-amount { font-size: var(--ds-text-sm); white-space: nowrap; }

    /* Section titles */
    .section-title { font-size: var(--ds-text-lg); }
    .section-subtitle { font-size: var(--ds-text-sm); }

    /* Share modal social icons */
    .social-share-buttons {
        flex-wrap: wrap;
    }

    /* Referrals table user info */
    .user-info {
        flex-direction: column;
        gap: var(--ds-space-1);
    }
    .user-avatar {
        width: 28px;
        height: 28px;
        font-size: 0.65rem;
    }
    .user-email {
        font-size: 0.65rem;
    }

    /* Fullscreen pyramid modal */
    .fullscreen-pyramid-modal .modal-content {
        padding: var(--ds-space-4);
    }
    .fullscreen-level-shape {
        flex-direction: column;
        text-align: center;
        padding: var(--ds-space-3);
        gap: var(--ds-space-2);
    }
}

@media (max-width: 475px) {
    /* Pyramid: even smaller */
    .level-shape--5 { width: 90px; height: 70px; }
    .level-shape--4 { width: 130px; height: 70px; }
    .level-shape--3 { width: 170px; height: 75px; }
    .level-shape--2 { width: 210px; height: 70px; }
    .level-shape--1 { width: 250px; height: 70px; }
    .level-title { font-size: var(--ds-text-xs); }
    .level-users, .level-reward { font-size: 0.6rem; }

    .affiliation-hero {
        padding: var(--ds-space-4) var(--ds-space-3);
        border-radius: var(--ds-radius-md, 8px);
    }

    .reward-amount {
        font-size: var(--ds-text-xs);
    }
}
.benefit-card { padding: var(--ds-space-5); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-md, 8px); background: var(--ds-white); }
.benefit-card-header { display: flex; align-items: center; gap: var(--ds-space-3); margin-bottom: var(--ds-space-3); }
.benefit-card-icon { width: 36px; height: 36px; min-width: 36px; border-radius: var(--ds-radius-md, 8px); background: rgba(6,53,44,0.1); color: var(--ds-primary, #06352c); display: flex; align-items: center; justify-content: center; }
.benefit-card-title { font-weight: var(--ds-font-semibold); color: var(--ds-text-primary); font-size: var(--ds-text-sm); }
.benefit-card-description { font-size: var(--ds-text-sm); color: var(--ds-text-secondary); line-height: 1.5; margin: 0; }

/* Modal close */
.modal-close { background: none; border: none; font-size: var(--ds-text-xl); color: var(--ds-text-secondary); cursor: pointer; padding: var(--ds-space-2); border-radius: var(--ds-radius-md, 8px); line-height: 1; }
.modal-close:hover { background: var(--ds-bg-secondary); color: var(--ds-text-primary); }

/* Level detail popup */
.level-detail-popup { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: var(--ds-bg-primary, #fff); padding: var(--ds-space-6); border-radius: var(--ds-radius-lg, 12px); box-shadow: 0 8px 32px rgba(0,0,0,0.2); z-index: 9999; min-width: 280px; text-align: center; }

/* === Imported from: ./components/summary-box.css === */

.ds-summary-box { margin-top: var(--ds-space-6); padding: var(--ds-space-6); background: linear-gradient(135deg, rgba(6, 53, 44, 0.1), rgba(6, 53, 44, 0.05)); border-radius: var(--ds-radius-lg, 12px); }
.ds-summary-box--neutral { background: var(--ds-bg-secondary); }
.ds-summary-box--success { background: linear-gradient(135deg, rgba(16, 185, 129, 0.1), rgba(16, 185, 129, 0.05)); }
.ds-summary-box__header { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--ds-space-2); }
.ds-summary-box__label { font-weight: 600; color: var(--ds-text-primary); }
.ds-summary-box__amount { font-size: 1.75rem; font-weight: 700; color: var(--primary-color, var(--ds-primary)); }
.ds-summary-box__cta { width: 100%; padding: var(--ds-space-3, 0.75rem) var(--ds-space-4, 1rem); background: linear-gradient(to right, var(--primary-color, var(--ds-primary)), var(--primary-dark, var(--ds-primary-700))); color: white; border: none; border-radius: var(--ds-radius-md, 8px); font-weight: 600; cursor: pointer; transition: opacity 0.2s; }
.ds-summary-box__cta:hover { opacity: 0.9; }

.ds-info-box { margin-top: var(--ds-space-6); padding: var(--ds-space-4); background: rgba(6, 53, 44, 0.1); border-radius: var(--ds-radius-md, 8px); text-align: center; }
.ds-info-box--neutral { background: var(--ds-bg-secondary); }
.ds-info-box--success { background: rgba(16, 185, 129, 0.1); }
.ds-info-box--warning { background: rgba(245, 158, 11, 0.1); }
.ds-info-box p { margin: 0; color: var(--ds-text-primary); font-weight: 600; }

/* === Imported from: ./components/color-utils.css === */

.legend-color--success { background: var(--ds-success); }
.legend-color--warning { background: var(--ds-warning); }
.legend-color--info    { background: var(--ds-info); }
.legend-color--danger  { background: var(--ds-danger); }
.legend-color--primary { background: var(--ds-primary); }

.ds-cell-highlight { font-weight: 700; color: var(--primary-color, var(--ds-primary)); }
.ds-cell-highlight--muted { font-weight: 700; color: var(--ds-text-secondary); }

.document-card--add { border: 2px dashed var(--ds-border-default); }
.document-card--add .document-icon { background: transparent; color: var(--ds-text-secondary); }
.meeting-date-badge--past { background: var(--ds-bg-secondary); color: var(--ds-text-primary); }
.score-fill { width: var(--progress, 0%); transition: width 0.5s ease; }
.perf-cell { display: flex; align-items: center; gap: 0.5rem; }
.perf-progress { width: 100px; }
.ds-modal-text--muted { color: var(--ds-text-secondary); margin-bottom: var(--ds-space-6); }

/* === Imported from: ./components/avatar.css === */

.ds-avatar { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; min-width: 40px; border-radius: 50%; background: var(--ds-primary-100, rgba(99,102,241,0.1)); color: var(--ds-primary); font-weight: var(--ds-font-semibold); font-size: var(--ds-text-sm); line-height: 1; text-transform: uppercase; overflow: hidden; }
.ds-avatar img { width: 100%; height: 100%; object-fit: cover; }
.ds-avatar--xs { width: 24px; height: 24px; min-width: 24px; font-size: 0.6rem; }
.ds-avatar--sm { width: 32px; height: 32px; min-width: 32px; font-size: 0.7rem; }
.ds-avatar--lg { width: 56px; height: 56px; min-width: 56px; font-size: var(--ds-text-lg); }
.ds-avatar--xl { width: 80px; height: 80px; min-width: 80px; font-size: var(--ds-text-2xl); }
.ds-avatar--success { background: var(--ds-success-100, rgba(16,185,129,0.1)); color: var(--ds-success); }
.ds-avatar--danger { background: var(--ds-danger-100, rgba(239,68,68,0.1)); color: var(--ds-danger); }
.ds-avatar--warning { background: var(--ds-warning-100, rgba(245,158,11,0.1)); color: var(--ds-warning); }
.ds-avatar--info { background: var(--ds-info-100, rgba(59,130,246,0.1)); color: var(--ds-info); }
.ds-avatar--neutral { background: var(--ds-gray-200); color: var(--ds-gray-600); }

/* === Imported from: ./components/toggle-switch.css === */

.ds-switch { position: relative; width: 48px; height: 24px; min-width: 48px; background: var(--ds-gray-300); border-radius: 12px; cursor: pointer; transition: background 0.15s; }
.ds-switch.is-active { background: var(--ds-success); }
.ds-switch__slider { position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; background: var(--ds-white); border-radius: 50%; transition: transform 0.15s; box-shadow: 0 1px 3px rgba(0,0,0,0.2); }
.ds-switch.is-active .ds-switch__slider { transform: translateX(24px); }
.ds-switch--sm { width: 36px; height: 20px; min-width: 36px; }
.ds-switch--sm .ds-switch__slider { width: 16px; height: 16px; }
.ds-switch--sm.is-active .ds-switch__slider { transform: translateX(16px); }
.ds-toggle-row { display: flex; align-items: center; justify-content: space-between; gap: var(--ds-space-4); padding: var(--ds-space-4) 0; border-bottom: 1px solid var(--ds-border-default); }
.ds-toggle-row:last-child { border-bottom: none; }
.ds-toggle-row__info { flex: 1; min-width: 0; }
.ds-toggle-row__label { font-weight: var(--ds-font-medium); color: var(--ds-text-primary); }
.ds-toggle-row__desc { font-size: var(--ds-text-sm); color: var(--ds-text-secondary); margin-top: var(--ds-space-1); }

/* === Imported from: ./components/filter-bar.css === */

.ds-filter-bar { display: flex; align-items: center; flex-wrap: wrap; gap: var(--ds-space-3); padding: var(--ds-space-4); background: var(--ds-bg-secondary); border-radius: var(--ds-radius-lg, 12px); margin-bottom: var(--ds-space-6); }
.ds-filter-bar__search { position: relative; flex: 1; min-width: 200px; max-width: 400px; }
.ds-filter-bar__search i { position: absolute; left: var(--ds-space-3); top: 50%; transform: translateY(-50%); color: var(--ds-text-secondary); font-size: var(--ds-text-sm); pointer-events: none; }
.ds-filter-bar__search input { width: 100%; padding: var(--ds-space-3) var(--ds-space-4) var(--ds-space-3) var(--ds-space-10); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-md, 8px); background: var(--ds-white); font-size: var(--ds-text-sm); color: var(--ds-text-primary); }
.ds-filter-bar__search input:focus { outline: none; border-color: var(--ds-primary); box-shadow: var(--ds-focus-ring, 0 0 0 3px rgba(99,102,241,0.1)); }
.ds-filter-bar__group { flex-shrink: 0; }
.ds-filter-bar__select { padding: var(--ds-space-3) var(--ds-space-8) var(--ds-space-3) var(--ds-space-3); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-md, 8px); background: var(--ds-white); font-size: var(--ds-text-sm); color: var(--ds-text-primary); cursor: pointer; appearance: none; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: right var(--ds-space-2) center; background-size: 14px; min-width: 140px; }
.ds-filter-bar__select:focus { outline: none; border-color: var(--ds-primary); }
.ds-filter-bar__actions { display: flex; gap: var(--ds-space-2); margin-left: auto; }
@media (max-width: 768px) {
    .ds-filter-bar {
        flex-direction: column;
        align-items: stretch;
        padding: var(--ds-space-3);
        gap: var(--ds-space-2);
    }
    .ds-filter-bar__search {
        min-width: 0;
        max-width: none;
        width: 100%;
    }
    .ds-filter-bar__search input {
        width: 100%;
        box-sizing: border-box;
        font-size: 16px;
    }
    .ds-filter-bar__group {
        width: 100%;
    }
    .ds-filter-bar__select {
        width: 100%;
        min-width: 0;
    }
    .ds-filter-bar__actions {
        margin-left: 0;
    }
}

/* === Imported from: ./components/lead-card.css === */

.ds-lead-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--ds-space-6); }
@media (max-width: 768px) { .ds-lead-grid { grid-template-columns: 1fr; } }
.ds-lead-card { background: var(--ds-white); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-card, var(--ds-radius-lg, 12px)); overflow: hidden; cursor: pointer; transition: box-shadow 0.15s, transform 0.15s; }
.ds-lead-card:hover { box-shadow: var(--ds-shadow-card, 0 4px 12px rgba(0,0,0,0.08)); transform: translateY(-1px); }
.ds-lead-card__priority { height: 4px; }
.ds-lead-card__priority--high { background: var(--ds-danger); }
.ds-lead-card__priority--medium { background: var(--ds-warning); }
.ds-lead-card__priority--low { background: var(--ds-info); }
.ds-lead-card__header { display: flex; align-items: center; gap: var(--ds-space-3); padding: var(--ds-space-4) var(--ds-space-4) 0; }
.ds-lead-card__info { flex: 1; min-width: 0; }
.ds-lead-card__name { font-weight: var(--ds-font-semibold); color: var(--ds-text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ds-lead-card__company { display: flex; align-items: center; gap: var(--ds-space-1); font-size: var(--ds-text-sm); color: var(--ds-text-secondary); margin-top: var(--ds-space-1); }
.ds-lead-card__details { padding: var(--ds-space-3) var(--ds-space-4); display: flex; flex-direction: column; gap: var(--ds-space-2); }
.ds-lead-card__detail-item { display: flex; align-items: center; gap: var(--ds-space-2); font-size: var(--ds-text-sm); color: var(--ds-text-secondary); }
.ds-lead-card__detail-item i { width: 16px; text-align: center; opacity: 0.6; }
.ds-lead-card__score { display: flex; align-items: center; gap: var(--ds-space-3); padding: 0 var(--ds-space-4); margin-bottom: var(--ds-space-3); }
.ds-lead-card__score-label { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); white-space: nowrap; }
.ds-lead-card__score-bar { flex: 1; height: 6px; background: var(--ds-bg-secondary); border-radius: 3px; overflow: hidden; }
.ds-lead-card__score-fill { height: 100%; width: var(--progress, 0%); background: var(--ds-primary); border-radius: 3px; transition: width 0.5s ease; }
.ds-lead-card__score-value { font-size: var(--ds-text-xs); font-weight: var(--ds-font-semibold); color: var(--ds-text-primary); white-space: nowrap; }
.ds-lead-card__actions { display: flex; align-items: center; gap: var(--ds-space-2); padding: var(--ds-space-3) var(--ds-space-4); border-top: 1px solid var(--ds-border-default); background: var(--ds-bg-secondary); }
.ds-lead-card__action { display: inline-flex; align-items: center; gap: var(--ds-space-1); padding: var(--ds-space-2) var(--ds-space-3); font-size: var(--ds-text-xs); color: var(--ds-text-secondary); background: var(--ds-white); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-md, 8px); cursor: pointer; transition: all 0.15s; text-decoration: none; }
.ds-lead-card__action:hover { color: var(--ds-primary); border-color: var(--ds-primary); }
.ds-lead-status { font-size: var(--ds-text-xs); }
.ds-lead-status--new { background: var(--ds-info-light, rgba(59,130,246,0.1)); color: var(--ds-info); }
.ds-lead-status--contacted { background: var(--ds-warning-light, rgba(245,158,11,0.1)); color: var(--ds-warning); }
.ds-lead-status--qualified { background: var(--ds-success-light, rgba(16,185,129,0.1)); color: var(--ds-success); }
.ds-lead-status--lost { background: var(--ds-danger-light, rgba(239,68,68,0.1)); color: var(--ds-danger); }
.ds-lead-status--won { background: var(--ds-primary-light, rgba(99,102,241,0.1)); color: var(--ds-primary); }

/* === Imported from: ./components/kanban.css (modern/ClarkUp style) === */

.ds-kanban { display: flex; gap: var(--ds-space-4); overflow-x: auto; padding: var(--ds-space-2) var(--ds-space-1) var(--ds-space-6); min-height: calc(100vh - 200px); -webkit-overflow-scrolling: touch; scrollbar-width: thin; scrollbar-color: var(--ds-gray-300) transparent; }
.ds-kanban::-webkit-scrollbar { height: 6px; }
.ds-kanban::-webkit-scrollbar-track { background: transparent; }
.ds-kanban::-webkit-scrollbar-thumb { background: var(--ds-gray-300); border-radius: 3px; }

/* Column */
.ds-kanban__column { flex: 0 0 280px; min-width: 280px; max-width: 300px; display: flex; flex-direction: column; background: var(--ds-gray-50, #f9fafb); border-radius: var(--ds-radius-lg, 12px); max-height: calc(100vh - 200px); }
.ds-kanban__column--fixed { cursor: default; }
.ds-kanban__column--movable { cursor: default; }

/* Column header */
.ds-kanban__column-header { display: flex; align-items: center; justify-content: space-between; padding: var(--ds-space-4) var(--ds-space-4) var(--ds-space-3); }
.ds-kanban__column-header-left { display: flex; align-items: center; gap: var(--ds-space-2); min-width: 0; }
.column-title-wrapper { display: flex; align-items: center; gap: var(--ds-space-2); min-width: 0; }
.ds-kanban__grip { color: var(--ds-gray-400); cursor: grab; font-size: 0.7rem; padding: var(--ds-space-1); border-radius: var(--ds-radius-sm, 4px); transition: color 0.15s; }
.ds-kanban__grip:hover { color: var(--ds-text-primary); }
.ds-kanban__grip:active { cursor: grabbing; }
.ds-kanban__column-title { font-size: var(--ds-text-sm); font-weight: var(--ds-font-semibold); color: var(--ds-text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ds-kanban__column-count { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 6px; font-size: 0.65rem; font-weight: var(--ds-font-bold); background: var(--ds-gray-200); color: var(--ds-text-secondary); border-radius: 10px; }
.ds-kanban__column-actions { display: flex; gap: 2px; opacity: 0; transition: opacity 0.15s; }
.ds-kanban__column:hover .ds-kanban__column-actions { opacity: 1; }
.ds-kanban__column-actions .ds-btn { width: 28px; height: 28px; padding: 0; display: flex; align-items: center; justify-content: center; font-size: 0.7rem; }

/* Column body */
.ds-kanban__column-body { flex: 1; overflow-y: auto; padding: 0 var(--ds-space-3) var(--ds-space-3); scrollbar-width: thin; scrollbar-color: var(--ds-gray-200) transparent; }
.ds-kanban__column-body::-webkit-scrollbar { width: 4px; }
.ds-kanban__column-body::-webkit-scrollbar-thumb { background: var(--ds-gray-200); border-radius: 2px; }
.cards-container { display: flex; flex-direction: column; gap: var(--ds-space-2); min-height: 40px; }

/* Card */
.ds-kanban__card { background: var(--ds-white); border: 1px solid var(--ds-gray-200); border-radius: var(--ds-radius-md, 8px); padding: var(--ds-space-3); cursor: default; transition: box-shadow 0.15s, border-color 0.15s; }
.ds-kanban__card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.06); border-color: var(--ds-gray-300); }
.ds-kanban__card-header { display: flex; align-items: flex-start; gap: var(--ds-space-2); margin-bottom: var(--ds-space-2); }
.ds-kanban__card-header .ds-kanban__grip { margin-top: 2px; font-size: 0.6rem; }
.ds-kanban__card-title { flex: 1; font-size: var(--ds-text-sm); font-weight: var(--ds-font-medium); color: var(--ds-text-primary); line-height: 1.4; min-width: 0; }
.ds-kanban__card-header .card-actions { opacity: 0; transition: opacity 0.15s; }
.ds-kanban__card:hover .card-actions { opacity: 1; }
.ds-kanban__card-header .card-actions .ds-btn { width: 24px; height: 24px; padding: 0; display: flex; align-items: center; justify-content: center; font-size: 0.6rem; color: var(--ds-text-secondary); border: none; background: none; }
.ds-kanban__card-header .card-actions .ds-btn:hover { color: var(--ds-danger); }
.ds-kanban__card-body { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); line-height: 1.5; margin-bottom: var(--ds-space-2); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ds-kanban__card-footer { display: flex; align-items: center; justify-content: space-between; padding-top: var(--ds-space-2); border-top: 1px solid var(--ds-gray-100); }
.ds-kanban__card-meta { display: flex; align-items: center; gap: var(--ds-space-1); }
.ds-kanban__card-meta i { font-size: 0.7rem; color: var(--ds-gray-400); cursor: pointer; padding: 3px; border-radius: var(--ds-radius-sm, 4px); transition: color 0.15s, background 0.15s; }
.ds-kanban__card-meta i:hover { color: var(--ds-primary); background: rgba(99,102,241,0.08); }
.ds-kanban__card-meta a { color: inherit; text-decoration: none; }
.ds-kanban__card-meta a i { font-size: 0.7rem; color: var(--ds-gray-400); cursor: pointer; padding: 3px; border-radius: var(--ds-radius-sm, 4px); transition: color 0.15s, background 0.15s; }
.ds-kanban__card-meta a:hover i { color: var(--ds-primary); background: rgba(99,102,241,0.08); }
.ds-kanban__card-meta a i.fa-linkedin:hover { color: #0a66c2; background: rgba(10,102,194,0.08); }
.ds-kanban__card-meta a i.fa-facebook:hover { color: #1877f2; background: rgba(24,119,242,0.08); }
.ds-kanban__card-meta a i.fa-instagram:hover { color: #e1306c; background: rgba(225,48,108,0.08); }
.ds-kanban__card-meta a i.fa-youtube:hover { color: #ff0000; background: rgba(255,0,0,0.08); }
.ds-kanban__card-meta a i.fa-x-twitter:hover { color: #000; background: rgba(0,0,0,0.06); }
.ds-kanban__card-meta a i.fa-tiktok:hover { color: #000; background: rgba(0,0,0,0.06); }
.ds-kanban__card-meta a i.fa-github:hover { color: #333; background: rgba(0,0,0,0.06); }
.ds-kanban__card-meta a i.fa-globe:hover { color: var(--ds-info); background: rgba(59,130,246,0.08); }
.ds-kanban__card-meta a i.fa-snapchat:hover { color: #fffc00; background: rgba(255,252,0,0.12); }
.ds-kanban__card-date { font-size: 0.7rem; color: var(--ds-text-secondary); }
.ds-kanban__card-meta i.fa-linkedin:hover { color: #0a66c2; background: rgba(10,102,194,0.08); }
.ds-kanban__card-meta i.fa-facebook:hover { color: #1877f2; background: rgba(24,119,242,0.08); }
.ds-kanban__card-meta i.fa-instagram:hover { color: #e1306c; background: rgba(225,48,108,0.08); }
.ds-kanban__card-meta i.fa-youtube:hover { color: #ff0000; background: rgba(255,0,0,0.08); }
.ds-kanban__card-meta i.fa-x-twitter:hover { color: #000; background: rgba(0,0,0,0.06); }
.ds-kanban__card-meta i.fa-tiktok:hover { color: #000; background: rgba(0,0,0,0.06); }
.ds-kanban__card-meta i.fa-globe:hover { color: var(--ds-info); background: rgba(59,130,246,0.08); }

/* Drop zones */
.ds-kanban__drop-zone { min-height: 4px; border-radius: var(--ds-radius-sm, 4px); transition: all 0.2s; }
.ds-kanban__drop-zone.is-drag-over { min-height: 40px; border: 2px dashed var(--ds-primary); background: rgba(99,102,241,0.06); margin: var(--ds-space-1) 0; }
.column-drop-zone { width: 4px; min-width: 4px; border-radius: 2px; transition: all 0.2s; flex-shrink: 0; }
.column-drop-zone.is-drag-over { width: 40px; min-width: 40px; background: rgba(99,102,241,0.08); border: 2px dashed var(--ds-primary); border-radius: var(--ds-radius-md, 8px); }

/* Drag states */
.ds-kanban__card.is-dragging { opacity: 0.4; transform: rotate(1deg); box-shadow: 0 8px 20px rgba(0,0,0,0.12); }
.ds-kanban__column.is-dragging { opacity: 0.5; }

/* Empty */
.ds-kanban__empty { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--ds-space-8) var(--ds-space-4); color: var(--ds-gray-400); font-size: var(--ds-text-xs); text-align: center; gap: var(--ds-space-2); }
.ds-kanban__empty i { font-size: var(--ds-text-xl); opacity: 0.5; }

/* Modal actions */
.modal-actions { display: flex; justify-content: flex-end; gap: var(--ds-space-3); padding-top: var(--ds-space-4); border-top: 1px solid var(--ds-border-default); margin-top: var(--ds-space-4); }

@media (max-width: 768px) { .ds-kanban__column { flex: 0 0 260px; min-width: 260px; } }

/* === Imported from: ./components/chart.css === */

.ds-chart { background: var(--ds-white); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-card, var(--ds-radius-lg, 12px)); overflow: hidden; }
.ds-chart__header { display: flex; align-items: center; justify-content: space-between; padding: var(--ds-space-4) var(--ds-space-5); border-bottom: 1px solid var(--ds-border-default); }
.ds-chart__title { font-weight: var(--ds-font-semibold); font-size: var(--ds-text-base); color: var(--ds-text-primary); }
.ds-chart__filter { padding: var(--ds-space-2) var(--ds-space-3); font-size: var(--ds-text-sm); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-md, 8px); background: var(--ds-white); color: var(--ds-text-primary); cursor: pointer; }
.ds-chart__body { padding: var(--ds-space-5); position: relative; }
.ds-chart__svg { width: 100%; display: block; }
.ds-chart__tooltip { position: absolute; background: var(--ds-gray-900); color: var(--ds-white); padding: var(--ds-space-2) var(--ds-space-3); border-radius: var(--ds-radius-md, 8px); font-size: var(--ds-text-xs); font-weight: var(--ds-font-medium); white-space: nowrap; pointer-events: none; opacity: 0; transition: opacity 0.15s; z-index: 10; }
.ds-chart__tooltip.is-active { opacity: 1; }
.ds-chart__legend { display: flex; align-items: center; flex-wrap: wrap; gap: var(--ds-space-5); padding: var(--ds-space-4) var(--ds-space-5); border-top: 1px solid var(--ds-border-default); }
.ds-chart__legend-item { display: flex; align-items: center; gap: var(--ds-space-2); font-size: var(--ds-text-sm); color: var(--ds-text-primary); }
.ds-chart__legend-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.ds-donut { display: flex; align-items: center; gap: var(--ds-space-8); }
.ds-donut__visual { flex-shrink: 0; width: 160px; height: 160px; }
.ds-donut__visual svg { width: 100%; height: 100%; }
.ds-donut__legend { flex: 1; display: flex; flex-direction: column; gap: var(--ds-space-3); }
.ds-donut__legend-item { display: flex; align-items: center; justify-content: space-between; }
.ds-donut__legend-label { display: flex; align-items: center; gap: var(--ds-space-2); font-size: var(--ds-text-sm); }
.ds-donut__legend-value { font-weight: var(--ds-font-semibold); font-size: var(--ds-text-sm); }
.ds-chart__grid-line { stroke: var(--ds-border-default); stroke-width: 1; stroke-dasharray: 4 4; }
.ds-chart__bar { fill: url(#barGradient); transition: opacity 0.15s; cursor: pointer; }
.ds-chart__bar:hover { opacity: 0.8; }
.ds-chart__bar-value { font-size: 11px; fill: var(--ds-text-secondary); font-weight: 600; }
.ds-chart__bar-label { font-size: 12px; fill: var(--ds-text-secondary); }
.ds-chart__line { fill: none; stroke: var(--ds-primary, rgb(6, 53, 44)); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.ds-chart__area { fill: url(#lineGradient); opacity: 0.6; }
.ds-chart__point { cursor: pointer; }
.ds-chart__point circle { fill: var(--ds-primary, rgb(6, 53, 44)); stroke: var(--ds-white); stroke-width: 2; transition: r 0.15s; }
.ds-chart__point:hover circle { r: 8; }
.ds-chart__point-value { font-size: 11px; fill: var(--ds-text-secondary); font-weight: 600; }
.ds-chart__point-label { font-size: 12px; fill: var(--ds-text-secondary); }
@media (max-width: 640px) { .ds-donut { flex-direction: column; } .ds-donut__visual { width: 120px; height: 120px; } }

/* === Imported from: ./components/video-card.css === */

.ds-video-card { background: var(--ds-white); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-card, var(--ds-radius-lg, 12px)); overflow: hidden; transition: box-shadow 0.15s; }
.ds-video-card:hover { box-shadow: var(--ds-shadow-card, 0 4px 12px rgba(0,0,0,0.08)); }
.ds-video-card__thumbnail { position: relative; aspect-ratio: 16/9; background: var(--ds-gray-900); overflow: hidden; }
.ds-video-card__thumbnail img { width: 100%; height: 100%; object-fit: cover; }
.ds-video-card__play { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,0.3); opacity: 0; transition: opacity 0.15s; }
.ds-video-card:hover .ds-video-card__play { opacity: 1; }
.ds-video-card__play-icon { width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,0.9); border-radius: 50%; color: var(--ds-gray-900); font-size: var(--ds-text-lg); }
.ds-video-card__duration { position: absolute; bottom: var(--ds-space-2); right: var(--ds-space-2); padding: var(--ds-space-1) var(--ds-space-2); background: rgba(0,0,0,0.75); color: var(--ds-white); font-size: var(--ds-text-xs); font-weight: var(--ds-font-medium); border-radius: var(--ds-radius-sm, 4px); }
.ds-video-card__body { padding: var(--ds-space-4); }
.ds-video-card__title { font-weight: var(--ds-font-semibold); color: var(--ds-text-primary); margin-bottom: var(--ds-space-2); }
.ds-video-card__meta { display: flex; flex-wrap: wrap; gap: var(--ds-space-3); font-size: var(--ds-text-sm); color: var(--ds-text-secondary); }
.ds-video-card__meta-item { display: flex; align-items: center; gap: var(--ds-space-1); }
.ds-video-card__actions { display: flex; gap: var(--ds-space-2); padding: var(--ds-space-3) var(--ds-space-4); border-top: 1px solid var(--ds-border-default); }
.ds-fab { position: fixed; bottom: var(--ds-space-8); right: var(--ds-space-8); width: 56px; height: 56px; display: flex; align-items: center; justify-content: center; background: var(--ds-primary); color: var(--ds-white); border: none; border-radius: 50%; font-size: var(--ds-text-xl); cursor: pointer; box-shadow: 0 4px 12px rgba(0,0,0,0.25); transition: transform 0.15s, box-shadow 0.15s; z-index: 40; }
.ds-fab:hover { transform: scale(1.1); box-shadow: 0 6px 20px rgba(0,0,0,0.3); }

/* Recording UI */
.d-none { display: none !important; }
.webcam-preview-bubble { position: fixed; bottom: 100px; right: 24px; width: 200px; background: var(--ds-gray-900); border-radius: var(--ds-radius-lg, 12px); overflow: hidden; box-shadow: 0 8px 32px rgba(0,0,0,0.4); z-index: 9998; }
.webcam-preview-header { display: flex; align-items: center; justify-content: space-between; padding: var(--ds-space-2) var(--ds-space-3); background: rgba(0,0,0,0.6); cursor: grab; }
.webcam-bubble-title { display: flex; align-items: center; gap: var(--ds-space-2); font-size: var(--ds-text-xs); font-weight: var(--ds-font-medium); color: var(--ds-white); }
.drag-handle { color: rgba(255,255,255,0.5); cursor: grab; font-size: 0.7rem; }
.webcam-bubble-content { aspect-ratio: 4/3; background: var(--ds-gray-800); }
.simulated-webcam-bubble { width: 100%; height: 100%; background: linear-gradient(135deg, var(--ds-gray-700), var(--ds-gray-800)); }
.recording-indicator { width: 10px; height: 10px; border-radius: 50%; background: #ef4444; animation: pulse-recording 1.5s ease-in-out infinite; }
@keyframes pulse-recording { 0%,100% { opacity: 1; } 50% { opacity: 0.3; } }
.recording-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.85); display: flex; align-items: center; justify-content: center; z-index: 9999; }
.recording-overlay.d-none { display: none !important; }
.overlay-content { display: flex; flex-direction: column; align-items: center; gap: var(--ds-space-4); }
.recording-overlay-time { font-size: 3rem; font-weight: var(--ds-font-bold); font-family: var(--ds-font-mono, monospace); color: var(--ds-white); }
.stop-recording-btn { display: flex; align-items: center; gap: var(--ds-space-2); padding: var(--ds-space-3) var(--ds-space-6); background: #ef4444; color: var(--ds-white); border: none; border-radius: 9999px; font-size: var(--ds-text-base); font-weight: var(--ds-font-semibold); cursor: pointer; }
.stop-recording-btn:hover { background: #dc2626; }
.recording-preview { border: 1px solid var(--ds-border-default); border-radius: 8px; overflow: hidden; margin-bottom: var(--ds-space-4); }
.preview-placeholder { aspect-ratio: 16/9; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--ds-space-3); background: var(--ds-gray-900); color: var(--ds-gray-400); }
.simulated-webcam, .simulated-screen { width: 100%; aspect-ratio: 16/9; background: linear-gradient(135deg, var(--ds-gray-800), var(--ds-gray-900)); }
.recorder-controls { display: flex; align-items: center; justify-content: center; gap: var(--ds-space-4); padding: var(--ds-space-4); background: var(--ds-bg-secondary); border-radius: 8px; margin-bottom: var(--ds-space-3); }
.recorder-btn { width: 48px; height: 48px; border-radius: 50%; border: none; display: flex; align-items: center; justify-content: center; font-size: var(--ds-text-lg); cursor: pointer; color: var(--ds-white); background: var(--ds-gray-400); }
.recorder-btn:hover { transform: scale(1.1); }
.recorder-btn.btn-start, .recorder-btn.btn-stop { background: #ef4444; }
.recorder-time { font-family: var(--ds-font-mono, monospace); font-size: var(--ds-text-lg); font-weight: var(--ds-font-semibold); color: var(--ds-text-primary); min-width: 60px; text-align: center; }
.recording-hint { text-align: center; font-size: var(--ds-text-sm); color: var(--ds-text-secondary); }
.recorded-video-preview { border-radius: 8px; overflow: hidden; margin-bottom: var(--ds-space-4); }
.preview-video { width: 100%; display: block; border-radius: 8px; }
.review-actions { display: flex; justify-content: center; gap: var(--ds-space-3); }

/* === Imported from: ./patterns/activity-timeline.css === */

.timeline-content { display: flex; flex-direction: column; gap: var(--ds-space-8); }
.timeline-date-group { display: flex; flex-direction: column; gap: var(--ds-space-4); }
.date-header { display: flex; align-items: center; gap: var(--ds-space-4); }
.date-text { font-size: var(--ds-text-base); font-weight: var(--ds-font-semibold); color: var(--ds-text-primary); white-space: nowrap; margin: 0; }
.date-line { flex: 1; height: 1px; background: var(--ds-border-default); }
.timeline-list { display: flex; flex-direction: column; gap: var(--ds-space-4); padding-left: var(--ds-space-2); }
.timeline-event { display: flex; gap: var(--ds-space-4); position: relative; }
.timeline-marker { width: 14px; height: 14px; min-width: 14px; border-radius: 50%; margin-top: var(--ds-space-4); border: 3px solid var(--ds-gray-400); background: var(--ds-white); z-index: 1; }
.timeline-marker.email { border-color: var(--ds-info); }
.timeline-marker.call { border-color: var(--ds-success); }
.timeline-marker.note { border-color: var(--ds-warning); }
.timeline-marker.meeting { border-color: #8b5cf6; }
.timeline-marker.lead-created { border-color: var(--ds-primary, #06352c); }
.timeline-event > .ds-card { flex: 1; }
.event-header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--ds-space-3); padding: var(--ds-space-4); }
.event-title-row { display: flex; align-items: center; gap: var(--ds-space-3); }
.event-type-icon { width: 32px; height: 32px; min-width: 32px; border-radius: var(--ds-radius-md, 8px); display: flex; align-items: center; justify-content: center; font-size: var(--ds-text-sm); background: var(--ds-gray-100); color: var(--ds-gray-500); }
.event-type-icon.email { background: rgba(59,130,246,0.1); color: var(--ds-info); }
.event-type-icon.call { background: rgba(16,185,129,0.1); color: var(--ds-success); }
.event-type-icon.note { background: rgba(245,158,11,0.1); color: var(--ds-warning); }
.event-type-icon.meeting { background: rgba(139,92,246,0.1); color: #8b5cf6; }
.event-type-icon.lead-created { background: rgba(6,53,44,0.1); color: var(--ds-primary, #06352c); }
.event-title-content { display: flex; flex-direction: column; gap: 2px; }
.event-title { font-weight: var(--ds-font-semibold); font-size: var(--ds-text-sm); color: var(--ds-text-primary); }
.event-subtitle { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); }
.event-time { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); white-space: nowrap; }
.event-description { padding: 0 var(--ds-space-4) var(--ds-space-3); font-size: var(--ds-text-sm); color: var(--ds-text-secondary); line-height: 1.6; }
.event-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--ds-space-3); padding: var(--ds-space-3) var(--ds-space-4); border-top: 1px solid var(--ds-border-default); font-size: var(--ds-text-xs); }
.event-author { display: flex; align-items: center; gap: var(--ds-space-2); color: var(--ds-text-secondary); }
.author-avatar { width: 24px; height: 24px; border-radius: 50%; background: var(--ds-gray-200); display: flex; align-items: center; justify-content: center; font-size: 0.6rem; font-weight: var(--ds-font-semibold); color: var(--ds-text-secondary); }
.event-lead-link { color: var(--ds-primary); text-decoration: none; display: flex; align-items: center; gap: var(--ds-space-1); }
.event-lead-link:hover { text-decoration: underline; }
.event-tags { display: flex; gap: var(--ds-space-2); }
.event-tag { padding: var(--ds-space-1) var(--ds-space-2); background: var(--ds-gray-100); color: var(--ds-text-secondary); border-radius: var(--ds-radius-sm, 4px); font-size: 0.65rem; font-weight: var(--ds-font-medium); }

/* === Imported from: ./patterns/detail-layout.css === */

.lead-detail-container { display: grid; grid-template-columns: 360px 1fr; gap: var(--ds-space-6); align-items: start; }
.lead-sidebar { display: flex; flex-direction: column; gap: var(--ds-space-4); position: sticky; top: var(--ds-space-4); }
.lead-main-content { min-width: 0; }
.lead-profile { display: flex; flex-direction: column; align-items: center; text-align: center; padding: var(--ds-space-4); gap: var(--ds-space-3); }
.lead-profile .lead-name { font-size: var(--ds-text-xl); font-weight: var(--ds-font-bold); color: var(--ds-text-primary); margin: 0; }
.lead-profile .lead-company { display: flex; align-items: center; gap: var(--ds-space-1); font-size: var(--ds-text-sm); color: var(--ds-text-secondary); }
.priority-indicator { display: flex; align-items: center; gap: var(--ds-space-2); font-size: var(--ds-text-xs); font-weight: var(--ds-font-medium); padding: var(--ds-space-1) var(--ds-space-3); border-radius: var(--ds-radius-full, 9999px); }
.priority-indicator.high { background: rgba(239,68,68,0.1); color: var(--ds-danger); }
.priority-indicator.medium { background: rgba(245,158,11,0.1); color: var(--ds-warning); }
.priority-indicator.low { background: rgba(59,130,246,0.1); color: var(--ds-info); }
.lead-score-section { padding: var(--ds-space-4); border-top: 1px solid var(--ds-border-default); }
.score-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--ds-space-2); }
.score-label { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); }
.score-value { font-size: var(--ds-text-sm); font-weight: var(--ds-font-bold); color: var(--ds-text-primary); }
.score-description { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); margin-top: var(--ds-space-2); }
.info-item { display: flex; align-items: flex-start; gap: var(--ds-space-3); padding: var(--ds-space-3) 0; border-bottom: 1px solid var(--ds-border-default); }
.info-item:last-child { border-bottom: none; }
.info-icon { width: 36px; height: 36px; min-width: 36px; border-radius: var(--ds-radius-md, 8px); display: flex; align-items: center; justify-content: center; background: var(--ds-bg-secondary); color: var(--ds-text-secondary); font-size: var(--ds-text-sm); }
.info-content { flex: 1; min-width: 0; }
.info-label { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); margin-bottom: 2px; }
.info-value { font-size: var(--ds-text-sm); color: var(--ds-text-primary); }
.info-value a { color: var(--ds-primary); text-decoration: none; }
.info-value a:hover { text-decoration: underline; }
.tags-list { display: flex; flex-wrap: wrap; gap: var(--ds-space-2); }

/* Notes, Documents, Meetings */
.notes-list { display: flex; flex-direction: column; gap: var(--ds-space-4); }
.note-header { display: flex; align-items: center; justify-content: space-between; padding: var(--ds-space-4) var(--ds-space-4) 0; }
.note-author { display: flex; align-items: center; gap: var(--ds-space-2); font-size: var(--ds-text-sm); font-weight: var(--ds-font-medium); color: var(--ds-text-primary); }
.note-date { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); }
.note-content { padding: var(--ds-space-3) var(--ds-space-4) var(--ds-space-4); font-size: var(--ds-text-sm); color: var(--ds-text-secondary); line-height: 1.6; }
.document-card { display: flex; flex-direction: column; align-items: center; gap: var(--ds-space-2); padding: var(--ds-space-5); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-md, 8px); background: var(--ds-white); text-align: center; cursor: pointer; transition: box-shadow 0.15s; }
.document-card:hover { box-shadow: var(--ds-shadow-card, 0 2px 8px rgba(0,0,0,0.08)); }
.document-icon { font-size: var(--ds-text-2xl); color: var(--ds-text-secondary); }
.document-name { font-size: var(--ds-text-sm); font-weight: var(--ds-font-medium); color: var(--ds-text-primary); }
.document-size { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); }
.meetings-list { display: flex; flex-direction: column; gap: var(--ds-space-4); }
.meeting-card { display: flex; align-items: center; gap: var(--ds-space-4); padding: var(--ds-space-4); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-md, 8px); background: var(--ds-white); }
.meeting-date-badge { width: 56px; min-width: 56px; height: 56px; display: flex; flex-direction: column; align-items: center; justify-content: center; background: var(--ds-primary, #06352c); color: var(--ds-white); border-radius: var(--ds-radius-md, 8px); line-height: 1; }
.meeting-day { font-size: var(--ds-text-xl); font-weight: var(--ds-font-bold); }
.meeting-month { font-size: var(--ds-text-xs); text-transform: uppercase; font-weight: var(--ds-font-medium); }
.meeting-info { flex: 1; min-width: 0; }
.meeting-title { font-weight: var(--ds-font-semibold); color: var(--ds-text-primary); margin-bottom: var(--ds-space-1); }
.meeting-time { display: flex; align-items: center; gap: var(--ds-space-3); font-size: var(--ds-text-sm); color: var(--ds-text-secondary); }
.meeting-time i { width: 14px; }

/* Show page timeline (simple) */
.timeline { position: relative; padding-left: var(--ds-space-6); }
.timeline::before { content: ''; position: absolute; left: 6px; top: 0; bottom: 0; width: 2px; background: var(--ds-border-default); }
.timeline-item { position: relative; padding-bottom: var(--ds-space-6); }
.timeline-item .timeline-marker { position: absolute; left: calc(-1 * var(--ds-space-6) + 0px); top: 4px; width: 14px; height: 14px; border-radius: 50%; border: 3px solid var(--ds-primary); background: var(--ds-white); z-index: 1; }
.timeline-item .timeline-content { padding-left: var(--ds-space-2); }
.timeline-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: var(--ds-space-2); }
.timeline-title { font-size: var(--ds-text-sm); font-weight: var(--ds-font-semibold); color: var(--ds-text-primary); display: flex; align-items: center; gap: var(--ds-space-2); }
.timeline-date { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); }
.timeline-description { font-size: var(--ds-text-sm); color: var(--ds-text-secondary); line-height: 1.6; margin-bottom: var(--ds-space-1); }
.timeline-author { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); }

/* Modal legacy (used in show.blade.php) */
.modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.5); display: none; align-items: center; justify-content: center; z-index: 1000; padding: 1rem; overflow-y: auto; }

/* Share modal + Fullscreen modal (used in affiliations) */
.share-modal,
.pyramid-fullscreen-modal { position: fixed; inset: 0; background: rgba(0,0,0,0.5); display: none; align-items: center; justify-content: center; z-index: 1000; padding: 1rem; overflow-y: auto; }
.share-modal.active,
.pyramid-fullscreen-modal.active { display: flex; }
.share-modal-content,
.pyramid-fullscreen-content { background: var(--ds-white, #fff); border-radius: var(--ds-radius-lg, 12px); width: 90%; max-width: 600px; max-height: 90vh; overflow-y: auto; box-shadow: 0 20px 60px rgba(0,0,0,0.3); padding: var(--ds-space-6); }
.pyramid-fullscreen-content { max-width: 900px; }
.share-modal-header,
.pyramid-fullscreen-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--ds-space-5); }
.share-modal-title,
.pyramid-fullscreen-title { font-size: var(--ds-text-lg); font-weight: var(--ds-font-semibold); color: var(--ds-text-primary); display: flex; align-items: center; gap: var(--ds-space-2); }
.share-options { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--ds-space-4); }
.share-option { display: flex; flex-direction: column; align-items: center; gap: var(--ds-space-2); cursor: pointer; padding: var(--ds-space-3); border-radius: var(--ds-radius-md, 8px); transition: background 0.15s; }
.share-option:hover { background: var(--ds-bg-secondary); }
.share-option-icon { width: 48px; height: 48px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: var(--ds-text-xl); color: var(--ds-white); }
.share-option-icon.whatsapp { background: #25d366; }
.share-option-icon.facebook { background: #1877f2; }
.share-option-icon.twitter { background: #1da1f2; }
.share-option-icon.linkedin { background: #0a66c2; }
.share-option-icon.email { background: var(--ds-gray-500); }
.share-option-label { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); }
.modal-overlay.active { display: flex; }
.modal-container { background: var(--ds-white); border-radius: var(--ds-radius-lg, 12px); width: 90%; max-width: 600px; max-height: 90vh; overflow-y: auto; box-shadow: 0 20px 60px rgba(0,0,0,0.3); }
.modal-header { display: flex; align-items: center; justify-content: space-between; padding: var(--ds-space-5); border-bottom: 1px solid var(--ds-border-default); }
.modal-title { font-size: var(--ds-text-lg); font-weight: var(--ds-font-semibold); color: var(--ds-text-primary); display: flex; align-items: center; gap: var(--ds-space-2); }
.modal-close-btn { background: none; border: none; font-size: var(--ds-text-xl); color: var(--ds-text-secondary); cursor: pointer; padding: var(--ds-space-2); border-radius: var(--ds-radius-md, 8px); }
.modal-close-btn:hover { background: var(--ds-bg-secondary); color: var(--ds-text-primary); }
.modal-body { padding: var(--ds-space-5); }
.modal-footer { display: flex; justify-content: flex-end; gap: var(--ds-space-3); padding: var(--ds-space-4) var(--ds-space-5); border-top: 1px solid var(--ds-border-default); }

/* Form legacy classes (used across modals) */
.form-group { margin-bottom: var(--ds-space-4); }
.form-label { display: block; font-size: var(--ds-text-sm); font-weight: var(--ds-font-medium); color: var(--ds-text-primary); margin-bottom: var(--ds-space-2); }
.form-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--ds-space-4); }
.checkbox-label { display: flex; align-items: center; gap: var(--ds-space-2); font-size: var(--ds-text-sm); cursor: pointer; }
.form-checkbox { width: 16px; height: 16px; accent-color: var(--ds-primary); }
.character-count { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); margin-top: var(--ds-space-1); }
.file-upload-zone { border: 2px dashed var(--ds-border-default); border-radius: var(--ds-radius-md, 8px); padding: var(--ds-space-8); text-align: center; cursor: pointer; transition: border-color 0.15s; }
.file-upload-zone:hover { border-color: var(--ds-primary); }
.file-upload-zone i { font-size: var(--ds-text-3xl); color: var(--ds-text-secondary); margin-bottom: var(--ds-space-2); }
.file-upload-zone p { color: var(--ds-text-secondary); margin: var(--ds-space-2) 0; }
.file-input { display: none; }
.file-info { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); }

@media (max-width: 1024px) { .lead-detail-container { grid-template-columns: 1fr; } .lead-sidebar { position: static; } }

/* === Imported from: ./components/template-card.css === */

/* Page header */
.page-header { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--ds-space-4); margin-bottom: var(--ds-space-6); }
.page-header h1 { font-size: var(--ds-text-2xl); font-weight: var(--ds-font-bold); color: var(--ds-text-primary); margin: 0; }
.page-header p { font-size: var(--ds-text-sm); color: var(--ds-text-secondary); margin: var(--ds-space-1) 0 0; }

/* Badge type variants */
.ds-badge.email { background: rgba(59,130,246,0.1); color: #3b82f6; }
.ds-badge.sms { background: rgba(16,185,129,0.1); color: #10b981; }
.ds-badge.whatsapp { background: rgba(37,211,102,0.1); color: #25d366; }
.ds-badge .status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.ds-badge.active { background: rgba(16,185,129,0.1); color: #10b981; }
.ds-badge.active .status-dot { background: #10b981; }
.ds-badge.inactive { background: var(--ds-gray-100); color: var(--ds-gray-500); }
.ds-badge.inactive .status-dot { background: var(--ds-gray-400); }

/* Template card sections */
.template-description { font-size: var(--ds-text-sm); color: var(--ds-text-secondary); margin: 0; padding: 0 var(--ds-space-4); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.template-preview { margin: var(--ds-space-4); padding: var(--ds-space-4); background: var(--ds-bg-secondary); border-radius: var(--ds-radius-md, 8px); font-size: var(--ds-text-xs); color: var(--ds-text-secondary); line-height: 1.6; font-family: var(--ds-font-mono, monospace); max-height: 100px; overflow: hidden; }

/* Conditions */
.template-conditions { padding: var(--ds-space-3) var(--ds-space-4); border-top: 1px solid var(--ds-border-default); }
.template-conditions-title { font-size: var(--ds-text-xs); font-weight: var(--ds-font-semibold); color: var(--ds-text-secondary); margin-bottom: var(--ds-space-2); }
.condition-tag { display: inline-flex; align-items: center; gap: var(--ds-space-1); padding: var(--ds-space-1) var(--ds-space-2); background: var(--ds-gray-100); color: var(--ds-text-secondary); border-radius: var(--ds-radius-sm, 4px); font-size: var(--ds-text-xs); margin-right: var(--ds-space-2); margin-bottom: var(--ds-space-1); }
.condition-tag i { font-size: 0.6rem; opacity: 0.7; }

/* Stats row */
.template-stats { display: flex; gap: var(--ds-space-2); padding: var(--ds-space-3) var(--ds-space-4); border-top: 1px solid var(--ds-border-default); }
.stat-item { flex: 1; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 2px; }
.stat-item .ds-stat-card__label, .stat-item .ds-stat__label { font-size: 0.6rem; color: var(--ds-text-secondary); text-transform: uppercase; letter-spacing: 0.03em; }
.stat-item .ds-stat-card__value, .stat-item .ds-stat__value { font-size: var(--ds-text-sm); font-weight: var(--ds-font-bold); color: var(--ds-text-primary); }

/* Action buttons */
.template-actions { display: flex; gap: var(--ds-space-2); padding: var(--ds-space-3) var(--ds-space-4); border-top: 1px solid var(--ds-border-default); }
.btn-action { display: inline-flex; align-items: center; gap: var(--ds-space-1); padding: var(--ds-space-2) var(--ds-space-3); font-size: var(--ds-text-xs); border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-md, 8px); background: var(--ds-white); cursor: pointer; transition: all 0.15s; color: var(--ds-text-secondary); }
.btn-action:hover { border-color: var(--ds-gray-400); color: var(--ds-text-primary); }
.btn-edit:hover { border-color: var(--ds-info); color: var(--ds-info); }
.btn-toggle:hover { border-color: var(--ds-warning); color: var(--ds-warning); }
.btn-duplicate:hover { border-color: var(--ds-success); color: var(--ds-success); }
.btn-delete:hover { border-color: var(--ds-danger); color: var(--ds-danger); }

/* Condition builder */
.conditions-builder { display: flex; flex-direction: column; gap: var(--ds-space-3); }
.condition-row { display: flex; align-items: center; gap: var(--ds-space-2); }
.condition-row > div { flex: 1; min-width: 0; }
.condition-value-container { flex: 1.5; }
.btn-remove-condition { width: 32px; height: 32px; min-width: 32px; display: flex; align-items: center; justify-content: center; border: 1px solid var(--ds-border-default); border-radius: var(--ds-radius-md, 8px); background: var(--ds-white); color: var(--ds-text-secondary); cursor: pointer; }
.btn-remove-condition:hover { border-color: var(--ds-danger); color: var(--ds-danger); }
.btn-add-condition { display: flex; align-items: center; gap: var(--ds-space-2); padding: var(--ds-space-2) var(--ds-space-3); font-size: var(--ds-text-sm); color: var(--ds-primary); background: none; border: 1px dashed var(--ds-primary); border-radius: var(--ds-radius-md, 8px); cursor: pointer; }
.btn-add-condition:hover { background: rgba(99,102,241,0.05); }

/* Utilities */
.filter-label { font-size: var(--ds-text-xs); font-weight: var(--ds-font-medium); color: var(--ds-text-secondary); white-space: nowrap; }
.form-help { font-size: var(--ds-text-xs); color: var(--ds-text-secondary); margin-top: var(--ds-space-1); display: block; }
.hidden { display: none !important; }
.overflow-hidden { overflow: hidden !important; }

/* === Utility: Progress Bar === */

.ds-progress-bar {
    background: var(--ds-bg-secondary);
    border-radius: 4px;
    height: 6px;
    overflow: hidden;
}

.ds-progress-bar__fill {
    height: 100%;
    width: var(--progress, 0%);
    border-radius: 4px;
    transition: width 0.3s ease;
}

.ds-progress-bar__fill--success { background: var(--ds-success); }
.ds-progress-bar__fill--danger  { background: var(--ds-danger); }
.ds-progress-bar__fill--warning { background: var(--ds-warning); }
.ds-progress-bar__fill--info    { background: var(--ds-info); }
.ds-progress-bar__fill--primary { background: var(--ds-primary); }

/* === Utility: Table cell with progress === */

.ds-table__cell--progress { min-width: 120px; }

/* === Utility: Empty state icon === */

.ds-empty-icon {
    font-size: 2rem;
    display: block;
    opacity: 0.4;
    margin-bottom: var(--ds-space-2);
}

.ds-table__cell--empty {
    text-align: center;
    padding: var(--ds-space-8);
    color: var(--ds-text-secondary);
}

/* === Utility: Inline input === */

.ds-input--inline { max-width: 260px; }

/* === Utility: Modal sizes === */

.modal-content--sm { max-width: 480px; }
.modal-content--md { max-width: 700px; }
.modal-content--lg { max-width: 960px; }

/* === Imported from: ./components/notification.css === */

/* Toast Notification System */
.ds-toast-container {
    position: fixed;
    top: 1.5rem;
    right: 1.5rem;
    z-index: 10000;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    pointer-events: none;
    max-width: 420px;
    width: 100%;
}

.ds-toast {
    pointer-events: auto;
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 1rem 1.25rem;
    border-radius: var(--ds-radius-lg, 0.75rem);
    background: var(--ds-bg-primary, #fff);
    border: 1px solid var(--ds-border-default, #e5e7eb);
    box-shadow: var(--ds-shadow-lg, 0 10px 15px rgba(0,0,0,0.1));
    animation: ds-toast-in 0.3s ease-out;
    transition: all 0.3s ease;
}

.ds-toast.is-leaving {
    animation: ds-toast-out 0.3s ease-in forwards;
}

.ds-toast__icon {
    flex-shrink: 0;
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.875rem;
}

.ds-toast__content {
    flex: 1;
    min-width: 0;
}

.ds-toast__title {
    font-weight: 600;
    font-size: 0.875rem;
    margin-bottom: 0.125rem;
}

.ds-toast__message {
    font-size: 0.8125rem;
    opacity: 0.8;
    line-height: 1.4;
}

.ds-toast__close {
    flex-shrink: 0;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0.25rem;
    opacity: 0.5;
    font-size: 0.875rem;
    color: inherit;
    transition: opacity 0.2s;
}
.ds-toast__close:hover { opacity: 1; }

/* Progress bar auto-dismiss */
.ds-toast__progress {
    position: absolute;
    bottom: 0;
    left: 0;
    height: 3px;
    border-radius: 0 0 var(--ds-radius-lg, 0.75rem) var(--ds-radius-lg, 0.75rem);
    animation: ds-toast-progress linear forwards;
}

/* Variants */
.ds-toast--success { border-left: 4px solid var(--ds-success-500, #22c55e); }
.ds-toast--success .ds-toast__icon { background: rgba(34, 197, 94, 0.1); color: var(--ds-success-600, #16a34a); }
.ds-toast--success .ds-toast__progress { background: var(--ds-success-500); }

.ds-toast--error { border-left: 4px solid var(--ds-danger-500, #ef4444); }
.ds-toast--error .ds-toast__icon { background: rgba(239, 68, 68, 0.1); color: var(--ds-danger-600, #dc2626); }
.ds-toast--error .ds-toast__progress { background: var(--ds-danger-500); }

.ds-toast--warning { border-left: 4px solid var(--ds-warning-500, #f59e0b); }
.ds-toast--warning .ds-toast__icon { background: rgba(245, 158, 11, 0.1); color: var(--ds-warning-600, #d97706); }
.ds-toast--warning .ds-toast__progress { background: var(--ds-warning-500); }

.ds-toast--info { border-left: 4px solid var(--ds-info-500, #3b82f6); }
.ds-toast--info .ds-toast__icon { background: rgba(59, 130, 246, 0.1); color: var(--ds-info-600, #2563eb); }
.ds-toast--info .ds-toast__progress { background: var(--ds-info-500); }

/* Animations */
@keyframes ds-toast-in {
    from { opacity: 0; transform: translateX(100%); }
    to { opacity: 1; transform: translateX(0); }
}

@keyframes ds-toast-out {
    from { opacity: 1; transform: translateX(0); max-height: 200px; margin-bottom: 0.75rem; }
    to { opacity: 0; transform: translateX(100%); max-height: 0; margin-bottom: 0; padding: 0; overflow: hidden; }
}

@keyframes ds-toast-progress {
    from { width: 100%; }
    to { width: 0%; }
}

/* Dark theme support */
[data-theme="dark"] .ds-toast {
    background: #1e293b;
    border-color: #334155;
    color: #f1f5f9;
}

/* ============================================
   LEGACY FALLBACK — RESPONSIVE
   Minimal fallback for any remaining non-DS classes (PDFs, dynamic HTML).
   ============================================ */

/* ---- TABLET (≤1024px) ---- */
@media (max-width: 1024px) {
    .form-grid,
    .form-grid-2,
    .form-grid-3 {
        grid-template-columns: 1fr !important;
    }

    .actions-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* ---- MOBILE (≤768px) ---- */
@media (max-width: 768px) {
    /* Tables */
    .table-wrapper {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    .table-wrapper::-webkit-scrollbar { display: none; }

    .table-wrapper table,
    table.table {
        min-width: 600px;
        font-size: 0.75rem;
    }

    .table-wrapper table th,
    .table-wrapper table td,
    table.table th,
    table.table td {
        padding: 0.4rem 0.5rem;
        white-space: nowrap;
    }

    /* Stat cards (legacy) */
    .stat-card,
    .kpi-card,
    .info-card {
        padding: 0.75rem;
    }

    .stat-card .stat-value,
    .kpi-card .kpi-value,
    .info-card .value {
        font-size: 1.15rem;
    }

    .stat-card .stat-label,
    .kpi-card .kpi-title,
    .info-card .label {
        font-size: 0.7rem;
    }

    .stat-card .stat-icon,
    .kpi-card .kpi-icon {
        width: 36px;
        height: 36px;
        font-size: 1rem;
    }

    /* Cards */
    .card-header {
        padding: 0.75rem 1rem;
    }
    .card-body {
        padding: 0.75rem 1rem;
    }
    .card-title {
        font-size: 0.95rem;
    }

    /* Forms */
    .form-grid,
    .form-grid-2,
    .form-grid-3 {
        grid-template-columns: 1fr !important;
        gap: 0.75rem;
    }

    .form-group {
        margin-bottom: 0.75rem;
    }

    .form-input,
    .form-select,
    .form-textarea,
    input.form-input,
    select.form-select,
    textarea.form-textarea {
        font-size: 16px;
        min-height: 44px;
        padding: 0.5rem 0.75rem;
        width: 100%;
        box-sizing: border-box;
    }

    .form-label {
        font-size: 0.8rem;
    }

    /* Buttons */
    .btn-primary,
    .btn-secondary,
    .btn-danger,
    .btn-success,
    .btn-warning,
    .btn-info,
    .action-btn {
        min-height: 40px;
        font-size: 0.8rem;
    }

    /* Filters */
    .filter-group {
        width: 100%;
    }

    .filter-select,
    select.filter-select {
        width: 100%;
        min-width: 0;
        font-size: 0.8rem;
    }

    .filters-bar,
    .filters-row {
        flex-direction: column;
        align-items: stretch;
        gap: 0.5rem;
    }

    /* Charts */
    .chart-card {
        padding: 0.75rem;
    }
    .chart-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
    }
    .chart-title {
        font-size: 0.9rem;
    }

    /* Actions grid */
    .actions-grid {
        grid-template-columns: 1fr;
        gap: 0.5rem;
    }

    /* User cells in tables */
    .user-cell {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.15rem;
    }
    .user-avatar,
    .user-avatar-sm {
        width: 28px;
        height: 28px;
        font-size: 0.65rem;
    }
    .user-name { font-size: 0.8rem; }
    .user-email { font-size: 0.65rem; }

    /* Score bars */
    .score-bar {
        height: 6px;
    }

    /* Status badges */
    .status-badge {
        font-size: 0.65rem;
        padding: 0.15rem 0.4rem;
    }

    /* Section titles */
    .section-title {
        font-size: 1.05rem;
    }
    .section-subtitle {
        font-size: 0.8rem;
    }

    /* Summary boxes */
    .summary-box,
    .ds-summary-box {
        padding: 0.75rem;
    }

    /* Settings */
    .settings-section {
        padding: 0.75rem;
    }
    .settings-tab {
        font-size: 0.8rem;
        padding: 0.5rem 0.75rem;
    }

    /* Info list pattern */
    .info-list .info-item,
    .detail-row {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.25rem;
    }
    .info-item .info-label,
    .detail-row .detail-label {
        font-size: 0.7rem;
    }

    /* Modal responsive */
    .modal-content,
    .modal-dialog {
        width: calc(100% - 1.5rem);
        max-width: none;
        margin: 0.75rem;
        max-height: calc(100vh - 1.5rem);
        overflow-y: auto;
    }

    /* Tabs legacy */
    .tabs-nav,
    .tabs-header,
    .settings-tabs {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        flex-wrap: nowrap;
        scrollbar-width: none;
    }
    .tabs-nav::-webkit-scrollbar,
    .tabs-header::-webkit-scrollbar,
    .settings-tabs::-webkit-scrollbar { display: none; }

    .tab-btn,
    .tabs-nav a,
    .settings-tab {
        white-space: nowrap;
        flex-shrink: 0;
    }

    /* Timeline */
    .timeline-container {
        padding-left: 1rem;
    }
    .timeline-event {
        margin-left: 1.5rem;
    }

    /* Badges row */
    .tags-container,
    .badges-row {
        flex-wrap: wrap;
        gap: 0.25rem;
    }
}

/* ---- SMALL PHONES (≤475px) ---- */
@media (max-width: 475px) {
    .stat-card .stat-value,
    .kpi-card .kpi-value {
        font-size: 1rem;
    }

    .card-header { padding: 0.5rem 0.75rem; }
    .card-body { padding: 0.5rem 0.75rem; }

    .btn-primary,
    .btn-secondary,
    .action-btn {
        font-size: 0.75rem;
        padding: 0.4rem 0.6rem;
    }

    .chart-card { padding: 0.5rem; }

    .table-wrapper table,
    table.table {
        min-width: 450px;
        font-size: 0.7rem;
    }

    .modal-content,
    .modal-dialog {
        margin: 0.5rem;
        padding: 1rem;
    }
}

/* ============================================
   GLOBAL MOBILE RESPONSIVE OVERRIDES
   Centralised responsive rules for all components.
   Loaded last so they win by cascade order.
   ============================================ */

/* ---- TABLET (≤1024px) ---- */
@media (max-width: 1024px) {

    /* Tables: tighter cells */
    .ds-table th,
    .ds-table td {
        padding: 0.5rem 0.75rem;
        font-size: var(--ds-text-sm);
    }

    /* Lead detail: stack sidebar below content */
    .lead-detail-container {
        grid-template-columns: 1fr;
    }
    .lead-sidebar {
        position: static;
        order: -1;
    }

    /* Two-column forms: single column */
    .ds-form-grid--2,
    .ds-card-grid--2 {
        grid-template-columns: 1fr;
    }

    /* Affiliation pyramid */
    .affiliation-content {
        grid-template-columns: 1fr;
    }
}

/* ---- MOBILE (≤768px) ---- */
@media (max-width: 768px) {

    /* === GLOBAL: prevent any horizontal page overflow === */
    .ds-content,
    .content,
    .ds-main {
        overflow-x: hidden;
    }

    /* === SCROLLABLE ROWS: any flex row that may overflow === */
    .ds-scroll-row,
    .ds-page-header__actions,
    .header-actions,
    .actions-row {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        flex-wrap: nowrap;
    }
    .ds-scroll-row::-webkit-scrollbar,
    .ds-page-header__actions::-webkit-scrollbar,
    .header-actions::-webkit-scrollbar { display: none; }

    /* === TABLES === */
    .ds-table-wrapper,
    .table-responsive {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        margin: 0 -1rem;
        padding: 0 1rem;
        scrollbar-width: none;
    }
    .ds-table-wrapper::-webkit-scrollbar,
    .table-responsive::-webkit-scrollbar { display: none; }

    .ds-table {
        min-width: 600px;
        font-size: var(--ds-text-xs);
    }

    .ds-table th,
    .ds-table td {
        padding: 0.4rem 0.5rem;
        white-space: nowrap;
    }

    /* Hide non-essential table columns on mobile */
    .ds-table .mobile-hidden {
        display: none;
    }

    /* === CARDS === */
    .ds-card {
        border-radius: var(--ds-radius-md, 8px);
    }

    .ds-card__header {
        padding: 0.75rem 1rem;
    }

    .ds-card__body {
        padding: 0.75rem 1rem;
    }

    .ds-card__title {
        font-size: var(--ds-text-base);
    }

    /* === TABS === */
    .ds-tabs__nav {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        flex-wrap: nowrap;
        gap: 0;
        scrollbar-width: none;
    }

    .ds-tabs__nav::-webkit-scrollbar {
        display: none;
    }

    .ds-tabs__btn {
        white-space: nowrap;
        flex-shrink: 0;
        padding: 0.5rem 0.75rem;
        font-size: var(--ds-text-sm);
    }

    /* === BADGES === */
    .ds-badge {
        font-size: 0.65rem;
        padding: 0.15rem 0.4rem;
    }

    /* === BUTTONS === */
    .ds-btn {
        min-height: 40px;
        font-size: var(--ds-text-sm);
    }

    .ds-btn--sm {
        min-height: 34px;
    }

    .ds-page-header__actions {
        flex-wrap: wrap;
        gap: 0.5rem;
    }

    .ds-page-header__actions .ds-btn {
        flex: 1;
        min-width: 0;
    }

    /* === FORMS === */
    .ds-input,
    .ds-select,
    .ds-form-input,
    .ds-form-select {
        font-size: 16px; /* Prevents iOS zoom on focus */
        min-height: 44px;
        padding: 0.5rem 0.75rem;
    }

    .ds-form-label {
        font-size: var(--ds-text-sm);
    }

    /* === FILTER BAR === */
    .ds-filter-bar {
        padding: var(--ds-space-3);
        gap: var(--ds-space-2);
    }

    .ds-filter-bar__select {
        min-width: 0;
        width: 100%;
    }

    /* === LEAD CARDS === */
    .ds-lead-grid {
        grid-template-columns: 1fr;
        gap: var(--ds-space-3);
    }

    .ds-lead-card__header {
        padding: var(--ds-space-3) var(--ds-space-3) 0;
    }

    .ds-lead-card__details {
        padding: var(--ds-space-2) var(--ds-space-3);
    }

    .ds-lead-card__score {
        padding: 0 var(--ds-space-3);
    }

    .ds-lead-card__footer {
        padding: var(--ds-space-2) var(--ds-space-3);
    }

    /* === AVATARS === */
    .ds-avatar--xl {
        width: 56px;
        height: 56px;
        font-size: 1.2rem;
    }

    /* === MODAL === */
    .ds-modal,
    .modal-content {
        width: calc(100% - 1.5rem);
        max-width: none;
        margin: 0.75rem;
        max-height: calc(100vh - 1.5rem);
        overflow-y: auto;
    }

    /* === ALERT === */
    .ds-alert {
        padding: 0.75rem;
        font-size: var(--ds-text-sm);
    }

    /* === PROGRESS BAR === */
    .ds-progress-bar {
        height: 6px;
    }

    /* === CHART === */
    .ds-chart__body {
        min-height: 200px;
    }

    /* === DONUT === */
    .ds-donut {
        flex-direction: column;
        align-items: center;
    }

    .ds-donut__visual {
        width: 120px;
        height: 120px;
    }

    /* === EMPTY STATE === */
    .ds-empty-state {
        padding: var(--ds-space-6) var(--ds-space-4);
    }

    .ds-empty-state__icon {
        width: 56px;
        height: 56px;
        font-size: 1.5rem;
    }

    /* === KANBAN (horizontal scroll) === */
    .ds-kanban__column-actions {
        opacity: 1;
    }

    .ds-kanban__card:hover .card-actions {
        opacity: 1;
    }

    /* === PAGINATION === */
    .ds-pagination {
        flex-wrap: wrap;
        justify-content: center;
        gap: 0.25rem;
    }

    .ds-pagination__info {
        width: 100%;
        text-align: center;
        order: -1;
        margin-bottom: 0.5rem;
    }

    /* === RECOMMENDATION === */
    .ds-reco {
        padding: var(--ds-space-3);
    }

    .ds-reco__number {
        width: 24px;
        height: 24px;
        font-size: var(--ds-text-xs);
    }

    /* === TOGGLE SWITCH === */
    .ds-toggle-row {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
    }

    /* === INFO LIST === */
    .ds-info-list__item {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.25rem;
    }

    /* === SETTINGS === */
    .ds-settings__section {
        padding: var(--ds-space-3);
    }

    /* === NOTIFICATION DROPDOWN === */
    .notification-dropdown {
        position: fixed;
        top: 56px;
        left: 0;
        right: 0;
        width: 100%;
        max-width: 100%;
        border-radius: 0 0 var(--ds-radius-lg, 12px) var(--ds-radius-lg, 12px);
        max-height: calc(100vh - 56px);
    }

    /* === BENEFITS GRID === */
    .benefits-grid {
        grid-template-columns: 1fr;
    }

    /* === SOCIAL ICONS (pipeline cards) === */
    .ds-kanban__card-meta i {
        font-size: 0.85rem;
        padding: 5px;
    }

    /* === VIDEO CARDS === */
    .ds-video-card {
        min-width: 0;
    }

    /* === TEMPLATE CARDS === */
    .ds-card-grid--3 {
        grid-template-columns: 1fr;
    }

    /* === TIMELINE === */
    .timeline-event-card {
        margin-left: 1.5rem;
    }

    .timeline-marker {
        left: 0;
    }
}

/* ---- SMALL PHONES (≤475px) ---- */
@media (max-width: 475px) {

    /* Tables: card layout fallback */
    .ds-table {
        min-width: 500px;
    }

    .ds-table th,
    .ds-table td {
        padding: 0.35rem 0.4rem;
        font-size: 0.7rem;
    }

    /* Stat cards: compact values */
    .ds-stat__value {
        font-size: var(--ds-text-base);
    }

    .ds-stat__label {
        font-size: 0.65rem;
    }

    /* Buttons: full width stack */
    .ds-page-header__actions {
        flex-direction: column;
    }

    .ds-page-header__actions .ds-btn {
        width: 100%;
    }

    /* Card grids */
    .ds-card-grid--2 {
        grid-template-columns: 1fr;
    }

    /* Forms: labels above */
    .ds-form-grid,
    .ds-form-grid--2-cols,
    .ds-form-grid--3-cols {
        grid-template-columns: 1fr;
        gap: var(--ds-space-3);
    }

    /* Charts */
    .ds-chart__body {
        min-height: 160px;
    }

    /* Lead cards: compact */
    .ds-lead-card__detail-item {
        font-size: var(--ds-text-xs);
    }

    /* Kanban: keep horizontal scroll, just reduce column width */
    .ds-kanban__column {
        flex: 0 0 240px;
        min-width: 240px;
    }

    /* Modal */
    .ds-modal,
    .modal-content {
        margin: 0.5rem;
        padding: 1rem;
        width: calc(100% - 1rem);
    }
}

/* ============================================
   COMPONENT RESPONSIVE (auto-generated from source files)
   ============================================ */

/* --- alert responsive --- */
@media (max-width: 768px) {
    .ds-alert { padding: 0.75rem; font-size: 0.85rem; flex-direction: column; gap: 0.5rem; }
    .ds-alert__icon { flex-shrink: 0; }
    .ds-alert__actions { flex-wrap: wrap; }
}

/* --- avatar responsive --- */
@media (max-width: 768px) {
    .ds-avatar--xl { width: 48px; height: 48px; font-size: 1rem; }
    .ds-avatar--lg { width: 40px; height: 40px; font-size: 0.9rem; }
}

/* --- badge responsive --- */
@media (max-width: 768px) {
    .ds-badge { font-size: 0.65rem; padding: 0.15rem 0.4rem; }
}

/* --- modal responsive --- */
@media (max-width: 768px) {
    .ds-modal { width: calc(100% - 1.5rem) !important; max-width: none !important; margin: 0.75rem; max-height: calc(100vh - 1.5rem); overflow-y: auto; }
    .ds-modal__header, .ds-modal__footer { padding: 0.75rem 1rem; }
    .ds-modal__body { padding: 0.75rem 1rem; }
}
@media (max-width: 475px) {
    .ds-modal { margin: 0.5rem; padding: 1rem; }
}

/* --- notification responsive --- */
@media (max-width: 768px) {
    .ds-toast-container { top: 0.75rem; right: 0.75rem; left: 0.75rem; max-width: none; }
    .ds-toast { font-size: 0.85rem; }
    .notification-dropdown { position: fixed; top: 56px; left: 0; right: 0; width: 100%; max-width: 100%; border-radius: 0 0 12px 12px; max-height: calc(100vh - 56px); }
}

/* --- recommendation responsive --- */
@media (max-width: 768px) {
    .ds-reco { padding: 0.75rem; flex-direction: column; gap: 0.5rem; }
    .ds-reco__number { width: 24px; height: 24px; font-size: 0.7rem; }
    .ds-reco__title { font-size: 0.85rem; }
    .ds-reco__text { font-size: 0.78rem; }
}
@media (max-width: 475px) {
    .ds-reco { padding: 0.5rem; }
    .ds-reco__title { font-size: 0.78rem; }
}

/* --- summary-box responsive --- */
@media (max-width: 768px) {
    .ds-summary-box { padding: 0.75rem; }
    .ds-summary-box__amount { font-size: 1.1rem; }
    .ds-summary-box__label { font-size: 0.75rem; }
}

/* --- toggle-switch responsive --- */
@media (max-width: 768px) {
    .ds-toggle-row { flex-direction: column; align-items: flex-start; gap: 0.5rem; }
    .ds-switch { min-width: 44px; min-height: 24px; }
    .ds-toggle-row__label { font-size: 0.85rem; }
    .ds-toggle-row__desc { font-size: 0.75rem; }
}

/* --- search-box responsive --- */
@media (max-width: 768px) {
    .ds-search-box { width: 100%; }
    .ds-search-box__input { font-size: 16px; min-height: 44px; }
}

/* --- template-card responsive --- */
@media (max-width: 768px) {
    .ds-template-card { padding: 0.75rem; }
    .ds-template-card__preview { max-height: 120px; font-size: 0.7rem; }
    .ds-template-card__stats { flex-wrap: wrap; gap: 0.5rem; }
    .ds-template-card__actions { flex-wrap: wrap; }
}
@media (max-width: 475px) {
    .ds-template-card__preview { max-height: 80px; }
}

/* --- video-card responsive --- */
@media (max-width: 768px) {
    .ds-video-card { min-width: 0; }
    .ds-video-card__actions { flex-wrap: wrap; gap: 0.25rem; }
    .ds-video-card__meta { font-size: 0.72rem; }
}
@media (max-width: 475px) {
    .ds-video-card__thumbnail { min-height: 140px; }
}

/* --- form-states responsive --- */
@media (max-width: 768px) {
    .ds-form-error { font-size: 0.75rem; }
    .ds-form-hint { font-size: 0.75rem; }
    .ds-form-helper { font-size: 0.75rem; }
}

/* --- activity-timeline responsive --- */
@media (max-width: 768px) {
    .ds-timeline { padding-left: 1.5rem; }
    .ds-timeline__event { margin-left: 1.5rem; padding: 0.75rem; }
    .ds-timeline__marker { left: 0; width: 28px; height: 28px; font-size: 0.7rem; }
    .ds-timeline__date { font-size: 0.75rem; }
    .ds-timeline__title { font-size: 0.85rem; }
    .ds-timeline__description { font-size: 0.78rem; }
}


/* ============================================
   DATA TABLE — Full component styles
   Applied to ds-data-table and descendant th/td
   ============================================ */

.ds-data-table-container {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}
.ds-data-table-container::-webkit-scrollbar { display: none; }

.ds-data-table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--ds-text-sm, 0.875rem);
}

/* Header */
.ds-data-table thead,
.ds-data-table__header {
    background-color: var(--ds-gray-100, #f3f4f6);
    border-bottom: 2px solid var(--ds-border-default, #e5e7eb);
}

.ds-data-table th,
.ds-data-table__th {
    padding: 0.75rem 1rem;
    text-align: left;
    font-weight: 600;
    color: var(--ds-text-primary, #111827);
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    white-space: nowrap;
}

/* Body */
.ds-data-table tbody {
    background-color: var(--ds-white, #fff);
}

.ds-data-table tr,
.ds-data-table__tr {
    border-bottom: 1px solid var(--ds-border-subtle, #f3f4f6);
    transition: background-color 0.15s;
}

.ds-data-table tbody tr:hover,
.ds-data-table__tr:hover {
    background-color: var(--ds-gray-50, #f9fafb);
}

/* Cells */
.ds-data-table td,
.ds-data-table__td {
    padding: 0.75rem 1rem;
    color: var(--ds-text-primary, #111827);
    vertical-align: middle;
    font-size: var(--ds-text-sm, 0.875rem);
}

.ds-data-table td:first-child {
    font-weight: 500;
}

/* Alignment modifiers */
.ds-data-table .text-right,
.ds-data-table__td--right { text-align: right; }
.ds-data-table .text-center,
.ds-data-table__td--center { text-align: center; }

/* Empty state */
.ds-data-table__empty {
    padding: 3rem 1rem;
    text-align: center;
    color: var(--ds-text-secondary, #6b7280);
}

/* ---- Table Responsive ---- */
@media (max-width: 768px) {
    .ds-data-table-container {
        margin: 0 -0.75rem;
        padding: 0 0.75rem;
    }

    .ds-data-table th,
    .ds-data-table__th {
        padding: 0.5rem 0.75rem;
        font-size: 0.68rem;
    }

    .ds-data-table td,
    .ds-data-table__td {
        padding: 0.6rem 0.75rem;
        font-size: 0.8rem;
    }

    .ds-data-table .mobile-hidden { display: none; }
}

/* Also ensure ds-table (alias) gets same treatment */
.ds-table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--ds-text-sm, 0.875rem);
}

.ds-table thead {
    background-color: var(--ds-gray-100, #f3f4f6);
    border-bottom: 2px solid var(--ds-border-default, #e5e7eb);
}

.ds-table th {
    padding: 0.75rem 1rem;
    text-align: left;
    font-weight: 600;
    color: var(--ds-text-primary, #111827);
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    white-space: nowrap;
}

.ds-table tbody { background-color: var(--ds-white, #fff); }
.ds-table tbody tr { border-bottom: 1px solid var(--ds-border-subtle, #f3f4f6); transition: background-color 0.15s; }
.ds-table tbody tr:hover { background-color: var(--ds-gray-50, #f9fafb); }

.ds-table td {
    padding: 0.75rem 1rem;
    color: var(--ds-text-primary, #111827);
    vertical-align: middle;
    font-size: var(--ds-text-sm, 0.875rem);
}

@media (max-width: 768px) {
    .ds-table th { padding: 0.5rem 0.75rem; font-size: 0.68rem; }
    .ds-table td { padding: 0.6rem 0.75rem; font-size: 0.8rem; }
}
/* ===== SEARCHABLE SELECT ===== */
.searchable-select {
    position: relative;
    width: 100%;
}

.searchable-select__input-wrap {
    position: relative;
}

.searchable-select__input {
    padding-right: 2rem !important;
    cursor: pointer;
}

.searchable-select__chevron {
    position: absolute;
    right: 0.75rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--ds-text-tertiary, #9ca3af);
    pointer-events: none;
    transition: transform 0.2s;
}

.searchable-select__dropdown.is-open ~ .searchable-select__chevron,
.searchable-select:focus-within .searchable-select__chevron {
    transform: translateY(-50%) rotate(180deg);
}

.searchable-select__dropdown {
    display: none;
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    z-index: 50;
    max-height: 240px;
    overflow-y: auto;
    background: var(--ds-bg-primary, #fff);
    border: 1px solid var(--ds-border-color, #e5e7eb);
    border-radius: var(--ds-radius-md, 8px);
    box-shadow: var(--ds-shadow-lg, 0 10px 25px rgba(0,0,0,0.1));
    list-style: none;
    margin: 0;
    padding: 4px 0;
}

.searchable-select__dropdown.is-open {
    display: block;
    animation: ss-fade-in 0.15s ease;
}

@keyframes ss-fade-in {
    from { opacity: 0; transform: translateY(-4px); }
    to { opacity: 1; transform: translateY(0); }
}

.searchable-select__option {
    padding: 0.5rem 0.75rem;
    font-size: 0.875rem;
    color: var(--ds-text-primary, #1f2937);
    cursor: pointer;
    transition: background 0.1s;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.searchable-select__option:hover,
.searchable-select__option.is-active {
    background: var(--ds-bg-tertiary, #f3f4f6);
}

.searchable-select__option.is-selected {
    color: var(--ds-color-primary, #06352c);
    font-weight: 600;
    background: rgba(6, 53, 44, 0.05);
}

/* Scrollbar */
.searchable-select__dropdown::-webkit-scrollbar {
    width: 6px;
}
.searchable-select__dropdown::-webkit-scrollbar-thumb {
    background: var(--ds-border-color, #d1d5db);
    border-radius: 3px;
}

/* Dark theme */
[data-theme="dark"] .searchable-select__dropdown {
    background: var(--ds-bg-primary);
    border-color: var(--ds-border-color);
}
[data-theme="dark"] .searchable-select__option:hover,
[data-theme="dark"] .searchable-select__option.is-active {
    background: var(--ds-bg-tertiary);
}

/* Mobile */
@media (max-width: 768px) {
    .searchable-select__dropdown {
        max-height: 200px;
    }
    .searchable-select__option {
        padding: 0.625rem 0.75rem;
        font-size: 1rem;
    }
}
.ds-breadcrumb {
    margin-bottom: var(--ds-space-4);
}
.ds-breadcrumb__list {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    list-style: none;
    margin: 0;
    padding: 0;
    font-size: 0.8rem;
}
.ds-breadcrumb__link {
    color: var(--ds-text-secondary);
    text-decoration: none;
    transition: color 0.15s;
}
.ds-breadcrumb__link:hover {
    color: var(--ds-primary);
}
.ds-breadcrumb__separator {
    color: var(--ds-text-tertiary);
    margin: 0 0.15rem;
}
.ds-breadcrumb__current {
    color: var(--ds-text-primary);
    font-weight: 600;
}

/* Grid column aliases */
.ds-grid--2-cols { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
.ds-grid--3-cols { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
.ds-grid--4-cols { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }

@media (max-width: 1024px) {
    .ds-grid--4-cols { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
@media (max-width: 640px) {
    .ds-grid--4-cols, .ds-grid--3-cols, .ds-grid--2-cols { grid-template-columns: 1fr !important; }
}

/* Select input */
.ds-select {
    display: block;
    width: 100%;
    padding: var(--ds-space-2) var(--ds-space-3);
    font-size: 0.875rem;
    border: 1px solid var(--ds-border-color);
    border-radius: var(--ds-radius-md);
    background: var(--ds-bg-primary);
    color: var(--ds-text-primary);
    transition: border-color 0.15s;
}
.ds-select:focus {
    outline: none;
    border-color: var(--ds-primary);
    box-shadow: 0 0 0 2px rgba(6, 53, 44, 0.1);
}

/* ===== DS-MODAL BEM pattern (used as overlay) ===== */
/* When ds-modal is used as a full-page overlay with __backdrop + __content */
div.ds-modal:has(.ds-modal__backdrop),
div.ds-modal[id] {
    display: none;
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    z-index: 1000;
    align-items: center;
    justify-content: center;
    background: none;
    box-shadow: none;
    border-radius: 0;
    max-width: none;
    max-height: none;
    overflow: visible;
}
div.ds-modal.is-active {
    display: flex;
}
.ds-modal__backdrop {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0, 0, 0, 0.5);
    cursor: pointer;
}
.ds-modal__content {
    position: relative;
    z-index: 1;
    background: var(--ds-bg-primary);
    border-radius: var(--ds-radius-lg);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
    width: 90%;
    max-width: 550px;
    max-height: 85vh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.ds-modal__header {
    padding: 1.25rem 1.5rem;
    border-bottom: 1px solid var(--ds-border-color);
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.ds-modal__title {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--ds-text-primary);
    margin: 0;
}
.ds-modal__close {
    background: none;
    border: none;
    font-size: 1.5rem;
    color: var(--ds-text-secondary);
    cursor: pointer;
    padding: 0;
    line-height: 1;
}
.ds-modal__close:hover {
    color: var(--ds-text-primary);
}
.ds-modal__body {
    padding: 1.5rem;
    overflow-y: auto;
    flex: 1;
}
.ds-modal__footer {
    padding: 1rem 1.5rem;
    border-top: 1px solid var(--ds-border-color);
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
}

@media (max-width: 640px) {
    .ds-modal__content {
        width: 95%;
        max-height: 90vh;
    }
    .ds-modal__header, .ds-modal__footer { padding: 1rem; }
    .ds-modal__body { padding: 1rem; }
}

/* Rank badges for leaderboards */
.ds-rank-badge {
    width: 1.75rem;
    height: 1.75rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--ds-radius-sm);
    font-size: 0.75rem;
    font-weight: 600;
}
.ds-rank-badge--gold { background: #fef3c7; color: #92400e; }
.ds-rank-badge--silver { background: #e5e7eb; color: #374151; }
.ds-rank-badge--bronze { background: #fed7aa; color: #9a3412; }
.ds-rank-badge--default { background: var(--ds-bg-secondary); color: var(--ds-text-secondary); }

/* ===== ENHANCED FILTER BAR ===== */
.ds-filter-bar__content {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--ds-space-3);
    width: 100%;
}

.ds-filter-bar__group {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.ds-filter-bar__group label,
.ds-filter-bar__label {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--ds-text-secondary);
}

.ds-filter-bar__select,
.ds-filter-bar select,
.ds-filter-bar .ds-input,
.ds-filter-bar .ds-select {
    min-width: 140px;
    padding: 0.5rem 0.75rem;
    font-size: 0.825rem;
    border: 1px solid var(--ds-border-color);
    border-radius: var(--ds-radius-md);
    background: var(--ds-bg-primary);
    color: var(--ds-text-primary);
}

.ds-filter-bar .ds-btn {
    white-space: nowrap;
}

.ds-filters-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--ds-space-3);
    padding: var(--ds-space-4);
    background: var(--ds-bg-secondary);
    border-radius: var(--ds-radius-lg);
    margin-bottom: var(--ds-space-6);
}

@media (max-width: 768px) {
    .ds-filter-bar,
    .ds-filter-bar__content,
    .ds-filters-row {
        flex-direction: column;
        align-items: stretch;
    }
    .ds-filter-bar__search { max-width: none; }
    .ds-filter-bar__group { width: 100%; }
    .ds-filter-bar__select,
    .ds-filter-bar select,
    .ds-filter-bar .ds-input,
    .ds-filter-bar .ds-select { width: 100%; min-width: 0; }
}

/* ===== ENHANCED TABS ===== */
.ds-tabs {
    width: 100%;
}

.ds-tabs__nav {
    display: flex;
    gap: 0;
    border-bottom: 2px solid var(--ds-border-color);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}
.ds-tabs__nav::-webkit-scrollbar { display: none; }

.ds-tabs__btn {
    padding: 0.75rem 1.25rem;
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--ds-text-secondary);
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    white-space: nowrap;
    transition: color 0.15s, border-color 0.15s;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.ds-tabs__btn:hover {
    color: var(--ds-text-primary);
}

.ds-tabs__btn.is-active,
.ds-tabs__btn.active {
    color: var(--ds-primary);
    border-bottom-color: var(--ds-primary);
    font-weight: 600;
}

.ds-tabs__btn i {
    font-size: 0.8rem;
}

.ds-tabs__panel {
    display: none;
    padding-top: var(--ds-space-4);
}

.ds-tabs__panel.is-active,
.ds-tabs__panel.active {
    display: block;
}

.ds-tabs__item {
    display: none;
}
.ds-tabs__item.is-active,
.ds-tabs__item.active {
    display: block;
}

@media (max-width: 768px) {
    .ds-tabs__nav {
        gap: 0;
        padding: 0 0.5rem;
    }
    .ds-tabs__btn {
        padding: 0.6rem 0.75rem;
        font-size: 0.8rem;
    }
}

/* Form inside filter-bar needs to be transparent for flex layout */
.ds-filter-bar form,
.ds-filter-bar > form {
    display: contents;
}
.ds-contents {
    display: contents !important;
}

/* Ensure filter-bar__content is flex */
.ds-filter-bar__content {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--ds-space-3);
    width: 100%;
}

/* Width utilities */
.ds-w-28 { width: 7rem !important; }
.ds-w-32 { width: 8rem !important; }
.ds-w-36 { width: 9rem !important; }
.ds-col-span-full { grid-column: 1 / -1 !important; }
.ds-items-start { align-items: flex-start !important; }

/* Form grid inline (label + input side by side) */
.ds-form-grid-inline {
    display: grid;
    grid-template-columns: 200px 1fr;
    align-items: center;
    gap: var(--ds-space-3);
}
@media (max-width: 640px) {
    .ds-form-grid-inline { grid-template-columns: 1fr; }
}
.ds-w-48 { max-width: 12rem !important; }
.ds-w-56 { max-width: 14rem !important; }
.ds-w-64 { max-width: 16rem !important; }
.ds-text-white { color: #fff !important; }

/* Export dropdown active state (JS uses .active) */
.ds-export-dropdown.active,
.export-dropdown.active {
    display: flex !important;
    flex-direction: column;
    gap: 0.25rem;
}
.export-wrapper {
    position: relative;
    display: inline-block;
}
.ds-export-dropdown,
.export-dropdown {
    display: none;
    position: absolute;
    right: 0;
    top: 100%;
    margin-top: 0.25rem;
    background: var(--ds-bg-primary, #fff);
    border: 1px solid var(--ds-border-color, #e5e7eb);
    border-radius: var(--ds-radius-md, 8px);
    box-shadow: var(--ds-shadow-lg, 0 10px 25px rgba(0,0,0,0.1));
    padding: 0.5rem;
    z-index: 50;
    min-width: 180px;
}

/**
 * Design System OptiGest360
 * Utilities: Extras — classes utilitaires manquantes
 *
 * Créées à partir de l'analyse des 2960 inline styles les plus fréquents.
 * Objectif : éliminer les style="" récurrents dans les vues.
 */

/* ============================================
   GRID LAYOUTS
   ============================================ */

.ds-grid--2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--ds-space-4); }
.ds-grid--3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--ds-space-4); }
.ds-grid--4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--ds-space-4); }
.ds-grid--auto { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: var(--ds-space-4); }
.ds-col-span-2 { grid-column: span 2; }
.ds-col-span-3 { grid-column: span 3; }
.ds-col-span-full { grid-column: 1 / -1; }

@media (max-width: 768px) {
    .ds-grid--2, .ds-grid--3, .ds-grid--4 { grid-template-columns: 1fr; }
}

/* ============================================
   FLEX SHORTHANDS (patterns récurrents)
   ============================================ */

/* Le pattern le plus fréquent (28x inline) */
.ds-flex-between {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

/* Flex centré (8x inline) */
.ds-flex-center {
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Flex start avec gap (16x inline) */
.ds-flex-row {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

/* Flex wrap (11x inline) */
.ds-flex-wrap {
    display: flex;
    flex-wrap: wrap;
    gap: var(--ds-space-2);
}

/* ============================================
   TEXT HELPERS
   ============================================ */

.ds-text-2xl { font-size: var(--ds-text-2xl) !important; }
.ds-text-3xl { font-size: 1.875rem !important; }
.ds-text-base { font-size: var(--ds-text-base) !important; }
.ds-text-xxs { font-size: 0.65rem !important; }
.ds-text-info { color: var(--ds-info) !important; }
.ds-text-muted { color: var(--ds-text-secondary) !important; opacity: 0.7; }
.ds-font-normal { font-weight: 400 !important; }
.ds-font-medium { font-weight: 500 !important; }
.ds-font-extrabold { font-weight: 800 !important; }
.ds-uppercase { text-transform: uppercase !important; }
.ds-lowercase { text-transform: lowercase !important; }
.ds-capitalize { text-transform: capitalize !important; }
.ds-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ds-line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ds-line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ds-whitespace-nowrap { white-space: nowrap !important; }
.ds-break-all { word-break: break-all !important; }
.ds-text-strikethrough { text-decoration: line-through !important; }
.ds-tracking-wide { letter-spacing: 0.05em !important; }

/* ============================================
   COLORS (inline hardcodés → classes)
   ============================================ */

.ds-bg-primary { background-color: var(--ds-primary) !important; }
.ds-bg-success { background-color: var(--ds-success) !important; }
.ds-bg-warning { background-color: var(--ds-warning) !important; }
.ds-bg-danger { background-color: var(--ds-danger) !important; }
.ds-bg-info { background-color: var(--ds-info) !important; }
.ds-bg-light { background-color: var(--ds-bg-secondary, #f8fafc) !important; }
.ds-bg-white { background-color: #fff !important; }
.ds-bg-transparent { background-color: transparent !important; }

/* Backgrounds légers (tints) — remplacent les rgba() hardcodés */
.ds-bg-primary-light { background-color: rgba(59, 130, 246, 0.08) !important; }
.ds-bg-success-light { background-color: rgba(16, 185, 129, 0.08) !important; }
.ds-bg-warning-light { background-color: rgba(245, 158, 11, 0.08) !important; }
.ds-bg-danger-light { background-color: rgba(239, 68, 68, 0.08) !important; }
.ds-bg-info-light { background-color: rgba(6, 182, 212, 0.08) !important; }
.ds-bg-purple-light { background-color: rgba(139, 92, 246, 0.08) !important; }
.ds-bg-indigo-light { background-color: rgba(99, 102, 241, 0.08) !important; }

/* ============================================
   SIZING
   ============================================ */

.ds-w-full { width: 100% !important; }
.ds-w-half { width: 50% !important; }
.ds-w-auto { width: auto !important; }
.ds-h-full { height: 100% !important; }
.ds-min-h-0 { min-height: 0 !important; }

/* ============================================
   BORDERS
   ============================================ */

.ds-border { border: 1px solid var(--ds-border-default, var(--border-color)) !important; }
.ds-border-t { border-top: 1px solid var(--ds-border-default, var(--border-color)) !important; }
.ds-border-b { border-bottom: 1px solid var(--ds-border-default, var(--border-color)) !important; }
.ds-border-l { border-left: 1px solid var(--ds-border-default, var(--border-color)) !important; }
.ds-border-none { border: none !important; }
.ds-rounded { border-radius: var(--ds-radius-md) !important; }
.ds-rounded-lg { border-radius: var(--ds-radius-lg) !important; }
.ds-rounded-xl { border-radius: var(--ds-radius-xl, 12px) !important; }
.ds-rounded-full { border-radius: 9999px !important; }

/* ============================================
   SHADOWS & EFFECTS
   ============================================ */

.ds-shadow { box-shadow: var(--ds-shadow-sm) !important; }
.ds-shadow-md { box-shadow: var(--ds-shadow-md) !important; }
.ds-shadow-lg { box-shadow: var(--ds-shadow-lg) !important; }
.ds-shadow-none { box-shadow: none !important; }
.ds-opacity-50 { opacity: 0.5 !important; }
.ds-opacity-75 { opacity: 0.75 !important; }

/* ============================================
   CURSORS & INTERACTIONS
   ============================================ */

.ds-cursor-pointer { cursor: pointer !important; }
.ds-cursor-default { cursor: default !important; }
.ds-select-all { user-select: all !important; }
.ds-pointer-events-none { pointer-events: none !important; }

/* ============================================
   POSITION
   ============================================ */

.ds-relative { position: relative !important; }
.ds-absolute { position: absolute !important; }
.ds-sticky { position: sticky !important; top: 1rem; }
.ds-z-10 { z-index: 10 !important; }
.ds-z-50 { z-index: 50 !important; }

/* ============================================
   SECTION DIVIDER (6x inline — le séparateur vertical)
   ============================================ */

.ds-divider-v {
    width: 1px;
    background: var(--ds-border-default, var(--border-color));
    margin: 0 var(--ds-space-1);
    align-self: stretch;
}

.ds-divider-h {
    height: 1px;
    background: var(--ds-border-default, var(--border-color));
    margin: var(--ds-space-2) 0;
}

/* ============================================
   SECTION HEADER (10x inline — titre de section)
   ============================================ */

.ds-section-title {
    font-weight: 700;
    font-size: 0.9rem;
    margin-bottom: 1rem;
    color: var(--ds-text-primary);
}

.ds-section-subtitle {
    font-size: 0.8rem;
    color: var(--ds-text-secondary);
}

/* ============================================
   INFO PAIR (label + value inline, 50x+ dans les détails)
   ============================================ */

.ds-info-pair {
    display: flex;
    justify-content: space-between;
    padding: var(--ds-space-2) 0;
    border-bottom: 1px solid var(--ds-border-subtle, #f1f5f9);
    font-size: 0.85rem;
}

.ds-info-pair:last-child { border-bottom: none; }

.ds-info-pair__label {
    color: var(--ds-text-secondary);
}

.ds-info-pair__value {
    font-weight: 600;
    text-align: right;
    color: var(--ds-text-primary);
}

/* ============================================
   STATUS DOT (7x inline — pastille de statut)
   ============================================ */

.ds-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
    display: inline-block;
}
.ds-dot--success { background: var(--ds-success); }
.ds-dot--warning { background: var(--ds-warning); }
.ds-dot--danger { background: var(--ds-danger); }
.ds-dot--info { background: var(--ds-info); }
.ds-dot--primary { background: var(--ds-primary); }
.ds-dot--muted { background: var(--ds-text-secondary); }

/* ============================================
   AVATAR HELPERS
   ============================================ */

.ds-avatar--xs { width: 24px; height: 24px; font-size: 0.55rem; }
.ds-avatar--lg { width: 56px; height: 56px; font-size: 1.25rem; }
.ds-avatar--xl { width: 80px; height: 80px; font-size: 1.5rem; }

/* ============================================
   PRINT
   ============================================ */

@media print {
    .ds-no-print { display: none !important; }
    .ds-print-only { display: block !important; }
}
/**
 * Design System OptiGest360
 * Utilities: Extras — classes utilitaires manquantes
 *
 * Créées à partir de l'analyse des 2960 inline styles les plus fréquents.
 * Objectif : éliminer les style="" récurrents dans les vues.
 */

/* ============================================
   GRID LAYOUTS
   ============================================ */

.ds-grid--2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--ds-space-4); }
.ds-grid--3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--ds-space-4); }
.ds-grid--4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--ds-space-4); }
.ds-grid--auto { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: var(--ds-space-4); }
.ds-col-span-2 { grid-column: span 2; }
.ds-col-span-3 { grid-column: span 3; }
.ds-col-span-full { grid-column: 1 / -1; }

@media (max-width: 768px) {
    .ds-grid--2, .ds-grid--3, .ds-grid--4 { grid-template-columns: 1fr; }
}

/* ============================================
   FLEX SHORTHANDS (patterns récurrents)
   ============================================ */

/* Le pattern le plus fréquent (28x inline) */
.ds-flex-between {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

/* Flex centré (8x inline) */
.ds-flex-center {
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Flex start avec gap (16x inline) */
.ds-flex-row {
    display: flex;
    align-items: center;
    gap: var(--ds-space-2);
}

/* Flex wrap (11x inline) */
.ds-flex-wrap {
    display: flex;
    flex-wrap: wrap;
    gap: var(--ds-space-2);
}

/* ============================================
   TEXT HELPERS
   ============================================ */

.ds-text-2xl { font-size: var(--ds-text-2xl) !important; }
.ds-text-3xl { font-size: 1.875rem !important; }
.ds-text-base { font-size: var(--ds-text-base) !important; }
.ds-text-xxs { font-size: 0.65rem !important; }
.ds-text-info { color: var(--ds-info) !important; }
.ds-text-muted { color: var(--ds-text-secondary) !important; opacity: 0.7; }
.ds-font-normal { font-weight: 400 !important; }
.ds-font-medium { font-weight: 500 !important; }
.ds-font-extrabold { font-weight: 800 !important; }
.ds-uppercase { text-transform: uppercase !important; }
.ds-lowercase { text-transform: lowercase !important; }
.ds-capitalize { text-transform: capitalize !important; }
.ds-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ds-line-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ds-line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ds-whitespace-nowrap { white-space: nowrap !important; }
.ds-break-all { word-break: break-all !important; }
.ds-text-strikethrough { text-decoration: line-through !important; }
.ds-tracking-wide { letter-spacing: 0.05em !important; }

/* ============================================
   COLORS (inline hardcodés → classes)
   ============================================ */

.ds-bg-primary { background-color: var(--ds-primary) !important; }
.ds-bg-success { background-color: var(--ds-success) !important; }
.ds-bg-warning { background-color: var(--ds-warning) !important; }
.ds-bg-danger { background-color: var(--ds-danger) !important; }
.ds-bg-info { background-color: var(--ds-info) !important; }
.ds-bg-light { background-color: var(--ds-bg-secondary, #f8fafc) !important; }
.ds-bg-white { background-color: #fff !important; }
.ds-bg-transparent { background-color: transparent !important; }

/* Backgrounds légers (tints) — remplacent les rgba() hardcodés */
.ds-bg-primary-light { background-color: rgba(59, 130, 246, 0.08) !important; }
.ds-bg-success-light { background-color: rgba(16, 185, 129, 0.08) !important; }
.ds-bg-warning-light { background-color: rgba(245, 158, 11, 0.08) !important; }
.ds-bg-danger-light { background-color: rgba(239, 68, 68, 0.08) !important; }
.ds-bg-info-light { background-color: rgba(6, 182, 212, 0.08) !important; }
.ds-bg-purple-light { background-color: rgba(139, 92, 246, 0.08) !important; }
.ds-bg-indigo-light { background-color: rgba(99, 102, 241, 0.08) !important; }

/* ============================================
   SIZING
   ============================================ */

.ds-w-full { width: 100% !important; }
.ds-w-half { width: 50% !important; }
.ds-w-auto { width: auto !important; }
.ds-h-full { height: 100% !important; }
.ds-min-h-0 { min-height: 0 !important; }

/* ============================================
   BORDERS
   ============================================ */

.ds-border { border: 1px solid var(--ds-border-default, var(--border-color)) !important; }
.ds-border-t { border-top: 1px solid var(--ds-border-default, var(--border-color)) !important; }
.ds-border-b { border-bottom: 1px solid var(--ds-border-default, var(--border-color)) !important; }
.ds-border-l { border-left: 1px solid var(--ds-border-default, var(--border-color)) !important; }
.ds-border-none { border: none !important; }
.ds-rounded { border-radius: var(--ds-radius-md) !important; }
.ds-rounded-lg { border-radius: var(--ds-radius-lg) !important; }
.ds-rounded-xl { border-radius: var(--ds-radius-xl, 12px) !important; }
.ds-rounded-full { border-radius: 9999px !important; }

/* ============================================
   SHADOWS & EFFECTS
   ============================================ */

.ds-shadow { box-shadow: var(--ds-shadow-sm) !important; }
.ds-shadow-md { box-shadow: var(--ds-shadow-md) !important; }
.ds-shadow-lg { box-shadow: var(--ds-shadow-lg) !important; }
.ds-shadow-none { box-shadow: none !important; }
.ds-opacity-50 { opacity: 0.5 !important; }
.ds-opacity-75 { opacity: 0.75 !important; }

/* ============================================
   CURSORS & INTERACTIONS
   ============================================ */

.ds-cursor-pointer { cursor: pointer !important; }
.ds-cursor-default { cursor: default !important; }
.ds-select-all { user-select: all !important; }
.ds-pointer-events-none { pointer-events: none !important; }

/* ============================================
   POSITION
   ============================================ */

.ds-relative { position: relative !important; }
.ds-absolute { position: absolute !important; }
.ds-sticky { position: sticky !important; top: 1rem; }
.ds-z-10 { z-index: 10 !important; }
.ds-z-50 { z-index: 50 !important; }

/* ============================================
   SECTION DIVIDER (6x inline — le séparateur vertical)
   ============================================ */

.ds-divider-v {
    width: 1px;
    background: var(--ds-border-default, var(--border-color));
    margin: 0 var(--ds-space-1);
    align-self: stretch;
}

.ds-divider-h {
    height: 1px;
    background: var(--ds-border-default, var(--border-color));
    margin: var(--ds-space-2) 0;
}

/* ============================================
   SECTION HEADER (10x inline — titre de section)
   ============================================ */

.ds-section-title {
    font-weight: 700;
    font-size: 0.9rem;
    margin-bottom: 1rem;
    color: var(--ds-text-primary);
}

.ds-section-subtitle {
    font-size: 0.8rem;
    color: var(--ds-text-secondary);
}

/* ============================================
   INFO PAIR (label + value inline, 50x+ dans les détails)
   ============================================ */

.ds-info-pair {
    display: flex;
    justify-content: space-between;
    padding: var(--ds-space-2) 0;
    border-bottom: 1px solid var(--ds-border-subtle, #f1f5f9);
    font-size: 0.85rem;
}

.ds-info-pair:last-child { border-bottom: none; }

.ds-info-pair__label {
    color: var(--ds-text-secondary);
}

.ds-info-pair__value {
    font-weight: 600;
    text-align: right;
    color: var(--ds-text-primary);
}

/* ============================================
   STATUS DOT (7x inline — pastille de statut)
   ============================================ */

.ds-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
    display: inline-block;
}
.ds-dot--success { background: var(--ds-success); }
.ds-dot--warning { background: var(--ds-warning); }
.ds-dot--danger { background: var(--ds-danger); }
.ds-dot--info { background: var(--ds-info); }
.ds-dot--primary { background: var(--ds-primary); }
.ds-dot--muted { background: var(--ds-text-secondary); }

/* ============================================
   AVATAR HELPERS
   ============================================ */

.ds-avatar--xs { width: 24px; height: 24px; font-size: 0.55rem; }
.ds-avatar--lg { width: 56px; height: 56px; font-size: 1.25rem; }
.ds-avatar--xl { width: 80px; height: 80px; font-size: 1.5rem; }

/* ============================================
   PRINT
   ============================================ */

@media print {
    .ds-no-print { display: none !important; }
    .ds-print-only { display: block !important; }
}

/* ============================================
   EXTRA UTILITIES — Batch 2
   ============================================ */

/* Hidden */
.ds-none { display: none !important; }

/* Flex variants supplémentaires */
.ds-flex-between-start {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: var(--ds-space-4);
}

/* Font sizes micro */
.ds-text-micro { font-size: 0.65rem !important; }
.ds-text-tiny { font-size: 0.5rem !important; }

/* Section title — pattern récurrent (10x) */
.ds-section-heading {
    font-weight: 700;
    font-size: 0.9rem;
    margin-bottom: 1rem;
    color: var(--ds-text-primary, var(--text-primary));
}

/* Label inline */
.ds-label-sm {
    display: block;
    font-size: 0.8rem;
    font-weight: 600;
    margin-bottom: 0.25rem;
}

/* Hint text */
.ds-hint {
    font-size: 0.7rem;
    color: var(--ds-text-secondary, var(--text-secondary));
    margin-top: 0.25rem;
}

/* Max width containers */
.ds-max-w-sm { max-width: 400px !important; }
.ds-max-w-md { max-width: 600px !important; }
.ds-max-w-lg { max-width: 800px !important; }

/* Flex-1 */
.ds-flex-1 { flex: 1; min-width: 0; }
.ds-flex-shrink-0 { flex-shrink: 0 !important; }

/* Empty state icon pattern (6x) */
.ds-empty-icon {
    font-size: 1.5rem;
    display: block;
    margin-bottom: 0.5rem;
    opacity: 0.3;
}

/* Success alert (5x) */
.ds-alert-success {
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    border-left: 4px solid #16a34a;
    border-radius: 8px;
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
}

/* Error alert */
.ds-alert-error {
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-left: 4px solid #dc2626;
    border-radius: 8px;
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
}

/* Warning alert */
.ds-alert-warning {
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-left: 4px solid #f59e0b;
    border-radius: 8px;
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
}

/* PDF footer */
.ds-pdf-footer {
    border-top: 1px solid #e5e7eb;
    padding-top: 10px;
    font-size: 8pt;
    color: #6b7280;
    text-align: center;
}

/* Button pill colors inline → classes */
.ds-pill-blue { background: #3b82f6; color: #fff; }
.ds-pill-green { background: #10b981; color: #fff; }
.ds-pill-red { background: #ef4444; color: #fff; }
.ds-pill-orange { background: #f59e0b; color: #fff; }
.ds-pill-purple { background: #8b5cf6; color: #fff; }
.ds-pill-gray { background: #6b7280; color: #fff; }

/* Margin helpers manquants */
.ds-mt-1 { margin-top: var(--ds-space-1) !important; }
.ds-mt-2 { margin-top: var(--ds-space-2) !important; }
.ds-mt-3 { margin-top: var(--ds-space-3) !important; }
.ds-mb-1 { margin-bottom: var(--ds-space-1) !important; }
.ds-mb-2 { margin-bottom: var(--ds-space-2) !important; }
.ds-mb-3 { margin-bottom: var(--ds-space-3) !important; }
.ds-m-0 { margin: 0 !important; }
.ds-p-0 { padding: 0 !important; }
.ds-p-2 { padding: var(--ds-space-2) !important; }
.ds-p-3 { padding: var(--ds-space-3) !important; }
.ds-p-4 { padding: var(--ds-space-4) !important; }
.ds-py-2 { padding-top: var(--ds-space-2) !important; padding-bottom: var(--ds-space-2) !important; }
.ds-px-3 { padding-left: var(--ds-space-3) !important; padding-right: var(--ds-space-3) !important; }
.ds-px-4 { padding-left: var(--ds-space-4) !important; padding-right: var(--ds-space-4) !important; }
   EXTRA UTILITIES — Batch 3
   ============================================ */

.ds-text-lg-bold { font-size: 1.5rem; font-weight: 700; }
.ds-text-sm-muted { font-size: 0.75rem; color: #64748b; margin-top: 0.25rem; }
.ds-text-pdf { font-size: 8pt; color: #444; }
.ds-text-pdf-light { font-size: 8pt; color: #555; margin-top: 3px; }
.ds-link-plain { text-decoration: none; display: block; }
.ds-link-muted { color: #64748b; text-decoration: none; }
.ds-text-white-0 { margin: 0; color: white; }
.ds-btn-ghost-white { background: none; border: none; color: rgba(255,255,255,0.7); cursor: pointer; }
.ds-text-tabular { font-variant-numeric: tabular-nums; }
.ds-kpi-label { font-size: .7rem; text-transform: uppercase; letter-spacing: .07em; opacity: .85; font-weight: 600; margin-bottom: .25rem; }
.ds-kpi-sub { font-size: .7rem; opacity: .7; }
.ds-error-list { margin: 0; padding-left: 1.25rem; color: #991b1b; font-size: .85rem; }
.ds-empty-center { text-align: center; padding: 1.5rem; color: var(--ds-text-secondary, var(--text-secondary)); }
.ds-font-label { font-size: 0.8rem; font-weight: 600; display: block; margin-bottom: 0.3rem; }
.ds-font-light { font-weight: 400; font-size: .75rem; color: var(--ds-text-secondary, var(--text-secondary)); }
.ds-text-color-danger { color: #dc2626; }
.ds-text-color-success { color: #16a34a; }
.ds-max-w-xl { max-width: 800px !important; }
.ds-p-6 { padding: var(--ds-space-6, 1.5rem) !important; }
.ds-p-8 { padding: 2rem !important; }
.ds-inline { display: inline !important; }
.ds-font-mono-sm { font-family: monospace; font-size: 0.8rem; }
