/* Tissona tokens v1.1.0 — fichier généré depuis tokens/tokens.json. Ne pas éditer. */
/* Thème clair uniquement (référence actuelle). Aucun thème sombre n'est défini. */

:root {
  --tsn-blue-50: #EFF5FF;
  --tsn-blue-100: #DCE8FD;
  --tsn-blue-200: #B9D2FB;
  --tsn-blue-300: #8AB4F8;
  --tsn-blue-400: #4F8FF0;
  --tsn-blue-500: #2E73E3;
  --tsn-blue-600: #175CD3;
  --tsn-blue-700: #134AB0;
  --tsn-blue-800: #123B8F;
  --tsn-blue-900: #112F6E;
  --tsn-blue-950: #0B1D45;
  --tsn-teal-50: #EEFBF9;
  --tsn-teal-100: #D2F5F0;
  --tsn-teal-200: #A6EAE0;
  --tsn-teal-300: #6FD9CB;
  --tsn-teal-400: #3BC6B5;
  --tsn-teal-500: #22B8A7;
  --tsn-teal-600: #179486;
  --tsn-teal-700: #15766D;
  --tsn-teal-800: #155E58;
  --tsn-teal-900: #144D49;
  --tsn-teal-950: #062E2C;
  --tsn-slate-50: #F8FAFC;
  --tsn-slate-100: #F1F4F8;
  --tsn-slate-200: #E4E8EE;
  --tsn-slate-300: #D0D5DD;
  --tsn-slate-400: #98A2B3;
  --tsn-slate-500: #667085;
  --tsn-slate-600: #475467;
  --tsn-slate-700: #344054;
  --tsn-slate-800: #1D2939;
  --tsn-slate-900: #101828;
  --tsn-slate-950: #0A0F1C;
  --tsn-green-50: #ECFDF3;
  --tsn-green-100: #D1FADF;
  --tsn-green-200: #A6F4C5;
  --tsn-green-300: #6CE9A6;
  --tsn-green-400: #32D583;
  --tsn-green-500: #12B76A;
  --tsn-green-600: #079455;
  --tsn-green-700: #067647;
  --tsn-green-800: #085D3A;
  --tsn-green-900: #074D31;
  --tsn-green-950: #053321;
  --tsn-amber-50: #FFFAEB;
  --tsn-amber-100: #FEF0C7;
  --tsn-amber-200: #FEDF89;
  --tsn-amber-300: #FEC84B;
  --tsn-amber-400: #FDB022;
  --tsn-amber-500: #F79009;
  --tsn-amber-600: #DC6803;
  --tsn-amber-700: #B54708;
  --tsn-amber-800: #93370D;
  --tsn-amber-900: #7A2E0E;
  --tsn-amber-950: #4E1D09;
  --tsn-red-50: #FEF3F2;
  --tsn-red-100: #FEE4E2;
  --tsn-red-200: #FECDCA;
  --tsn-red-300: #FDA29B;
  --tsn-red-400: #F97066;
  --tsn-red-500: #F04438;
  --tsn-red-600: #D92D20;
  --tsn-red-700: #B42318;
  --tsn-red-800: #912018;
  --tsn-red-900: #7A271A;
  --tsn-red-950: #55160C;
  --tsn-sky-50: #F0F9FF;
  --tsn-sky-100: #E0F2FE;
  --tsn-sky-200: #B9E6FE;
  --tsn-sky-300: #7CD4FD;
  --tsn-sky-400: #36BFFA;
  --tsn-sky-500: #0BA5EC;
  --tsn-sky-600: #0086C9;
  --tsn-sky-700: #026AA2;
  --tsn-sky-800: #065986;
  --tsn-sky-900: #0B4A6F;
  --tsn-sky-950: #062C41;
  --tsn-white: #FFFFFF;
  --tsn-fg: var(--tsn-slate-900);
  --tsn-fg-secondary: var(--tsn-slate-600);
  --tsn-fg-tertiary: var(--tsn-slate-500);
  --tsn-fg-disabled: var(--tsn-slate-400);
  --tsn-fg-brand: var(--tsn-blue-700);
  --tsn-fg-link: var(--tsn-blue-600);
  --tsn-fg-on-brand: var(--tsn-white);
  --tsn-fg-error: var(--tsn-red-700);
  --tsn-canvas: var(--tsn-slate-50);
  --tsn-surface: var(--tsn-white);
  --tsn-surface-subtle: var(--tsn-slate-100);
  --tsn-surface-brand: var(--tsn-blue-600);
  --tsn-surface-brand-subtle: var(--tsn-blue-50);
  --tsn-surface-inverse: var(--tsn-blue-950);
  --tsn-border-subtle: var(--tsn-slate-200);
  --tsn-border-default: var(--tsn-slate-300);
  --tsn-border-input: var(--tsn-slate-500);
  --tsn-border-strong: var(--tsn-slate-600);
  --tsn-focus-ring: var(--tsn-blue-600);
  --tsn-action-primary: var(--tsn-blue-600);
  --tsn-action-primary-hover: var(--tsn-blue-700);
  --tsn-action-primary-pressed: var(--tsn-blue-800);
  --tsn-action-on-primary: var(--tsn-white);
  --tsn-action-danger: var(--tsn-red-600);
  --tsn-action-danger-hover: var(--tsn-red-700);
  --tsn-action-on-danger: var(--tsn-white);
  --tsn-success-fg: var(--tsn-green-700);
  --tsn-success-bg: var(--tsn-green-50);
  --tsn-success-border: var(--tsn-green-200);
  --tsn-success-solid: var(--tsn-green-700);
  --tsn-warning-fg: var(--tsn-amber-700);
  --tsn-warning-bg: var(--tsn-amber-50);
  --tsn-warning-border: var(--tsn-amber-200);
  --tsn-warning-solid: var(--tsn-amber-700);
  --tsn-danger-fg: var(--tsn-red-700);
  --tsn-danger-bg: var(--tsn-red-50);
  --tsn-danger-border: var(--tsn-red-200);
  --tsn-danger-solid: var(--tsn-red-600);
  --tsn-info-fg: var(--tsn-sky-700);
  --tsn-info-bg: var(--tsn-sky-50);
  --tsn-info-border: var(--tsn-sky-200);
  --tsn-info-solid: var(--tsn-sky-700);
  --tsn-value-fg: var(--tsn-teal-700);
  --tsn-value-bg: var(--tsn-teal-50);
  --tsn-value-solid: var(--tsn-teal-700);
  --tsn-value-accent: var(--tsn-teal-500);
  --tsn-call-qualifying-fg: var(--tsn-slate-600);
  --tsn-call-qualifying-indicator: var(--tsn-slate-500);
  --tsn-call-qualifying-accent: var(--tsn-slate-400);
  --tsn-call-paid-fg: var(--tsn-teal-700);
  --tsn-call-paid-indicator: var(--tsn-teal-600);
  --tsn-call-paid-accent: var(--tsn-teal-500);
  --tsn-call-paused-fg: var(--tsn-amber-700);
  --tsn-call-paused-indicator: var(--tsn-amber-600);
  --tsn-call-ended-fg: var(--tsn-slate-600);
  --tsn-font-family-sans: Manrope, system-ui, -apple-system, 'Segoe UI', sans-serif;
  --tsn-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
  --tsn-font-weight-regular: 400;
  --tsn-font-weight-medium: 500;
  --tsn-font-weight-semibold: 600;
  --tsn-font-weight-bold: 700;
  --tsn-font-weight-extrabold: 800;
  --tsn-space-0: 0px;
  --tsn-space-4: 4px;
  --tsn-space-8: 8px;
  --tsn-space-12: 12px;
  --tsn-space-16: 16px;
  --tsn-space-20: 20px;
  --tsn-space-24: 24px;
  --tsn-space-32: 32px;
  --tsn-space-40: 40px;
  --tsn-space-48: 48px;
  --tsn-space-64: 64px;
  --tsn-space-80: 80px;
  --tsn-space-96: 96px;
  --tsn-radius-xs: 4px;
  --tsn-radius-sm: 6px;
  --tsn-radius-md: 8px;
  --tsn-radius-lg: 12px;
  --tsn-radius-xl: 16px;
  --tsn-radius-2xl: 20px;
  --tsn-radius-full: 9999px;
  --tsn-border-width-default: 1px;
  --tsn-border-width-strong: 1.5px;
  --tsn-focus-width: 2px;
  --tsn-focus-offset: 2px;
  --tsn-shadow-xs: 0px 1px 2px 0px rgba(16, 24, 40, 0.05);
  --tsn-shadow-sm: 0px 1px 3px 0px rgba(16, 24, 40, 0.1), 0px 1px 2px 0px rgba(16, 24, 40, 0.06);
  --tsn-shadow-md: 0px 4px 8px -2px rgba(16, 24, 40, 0.08), 0px 2px 4px -2px rgba(16, 24, 40, 0.05);
  --tsn-shadow-lg: 0px 12px 32px -16px rgba(16, 24, 40, 0.14), 0px 4px 8px -4px rgba(16, 24, 40, 0.04);
  --tsn-shadow-modal: 0px 24px 48px -12px rgba(16, 24, 40, 0.25);
  --tsn-breakpoint-tablet: 768px;
  --tsn-breakpoint-desktop: 1024px;
  --tsn-breakpoint-wide: 1440px;
  --tsn-container-desktop: 1280px;
  --tsn-container-wide: 1440px;
  --tsn-grid-mobile-columns: 4;
  --tsn-grid-mobile-gutter: 16px;
  --tsn-grid-mobile-margin: 20px;
  --tsn-grid-tablet-columns: 8;
  --tsn-grid-tablet-gutter: 20px;
  --tsn-grid-tablet-margin: 32px;
  --tsn-grid-desktop-columns: 12;
  --tsn-grid-desktop-gutter: 24px;
  --tsn-grid-desktop-margin: 32px;
  --tsn-grid-wide-columns: 12;
  --tsn-grid-wide-gutter: 32px;
  --tsn-grid-wide-margin: 64px;
  --tsn-duration-instant: 120ms;
  --tsn-duration-fast: 180ms;
  --tsn-duration-base: 240ms;
  --tsn-duration-moderate: 320ms;
  --tsn-duration-enter: 420ms;
  --tsn-duration-slow: 500ms;
  --tsn-duration-spinner: 800ms;
  --tsn-duration-spinner-reduced: 1400ms;
  --tsn-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --tsn-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --tsn-ease-exit: cubic-bezier(0.4, 0, 1, 1);
  --tsn-ease-spring-soft: cubic-bezier(0.32, 1.08, 0.6, 1);
  --tsn-distance-xs: 2px;
  --tsn-distance-sm: 4px;
  --tsn-distance-md: 8px;
  --tsn-distance-lg: 12px;

  /* Grille — mobile d'abord */
  --tsn-grid-columns: 4; --tsn-grid-gutter: 16px; --tsn-grid-margin: 20px;

  /* Typographie — mobile d'abord (< 768px) */
  --tsn-text-display-xl-size: 40px; --tsn-text-display-xl-line-height: 48px; --tsn-text-display-xl-weight: 600; --tsn-text-display-xl-tracking: -1px;
  --tsn-text-display-l-size: 36px; --tsn-text-display-l-line-height: 44px; --tsn-text-display-l-weight: 600; --tsn-text-display-l-tracking: -0.9px;
  --tsn-text-h1-size: 30px; --tsn-text-h1-line-height: 38px; --tsn-text-h1-weight: 600; --tsn-text-h1-tracking: -0.6px;
  --tsn-text-h2-size: 24px; --tsn-text-h2-line-height: 32px; --tsn-text-h2-weight: 600; --tsn-text-h2-tracking: -0.36px;
  --tsn-text-h3-size: 20px; --tsn-text-h3-line-height: 28px; --tsn-text-h3-weight: 600; --tsn-text-h3-tracking: -0.2px;
  --tsn-text-h4-size: 18px; --tsn-text-h4-line-height: 26px; --tsn-text-h4-weight: 600; --tsn-text-h4-tracking: -0.18px;
  --tsn-text-body-l-size: 18px; --tsn-text-body-l-line-height: 28px; --tsn-text-body-l-weight: 400; --tsn-text-body-l-tracking: 0px;
  --tsn-text-body-m-size: 16px; --tsn-text-body-m-line-height: 24px; --tsn-text-body-m-weight: 400; --tsn-text-body-m-tracking: 0px;
  --tsn-text-body-s-size: 14px; --tsn-text-body-s-line-height: 20px; --tsn-text-body-s-weight: 400; --tsn-text-body-s-tracking: 0px;
  --tsn-text-label-size: 14px; --tsn-text-label-line-height: 20px; --tsn-text-label-weight: 500; --tsn-text-label-tracking: 0px;
  --tsn-text-caption-size: 12px; --tsn-text-caption-line-height: 16px; --tsn-text-caption-weight: 500; --tsn-text-caption-tracking: 0.12px;
  --tsn-text-numeric-size: 32px; --tsn-text-numeric-line-height: 40px; --tsn-text-numeric-weight: 700; --tsn-text-numeric-tracking: -0.32px;
  --tsn-text-numeric-s-size: 17px; --tsn-text-numeric-s-line-height: 24px; --tsn-text-numeric-s-weight: 700; --tsn-text-numeric-s-tracking: 0px;
  --tsn-text-code-size: 13px; --tsn-text-code-line-height: 18px; --tsn-text-code-weight: 500; --tsn-text-code-tracking: 0px;
}

@media (min-width: 768px) {
  :root {
    --tsn-grid-columns: 8; --tsn-grid-gutter: 20px; --tsn-grid-margin: 32px;
    --tsn-text-display-xl-size: 64px; --tsn-text-display-xl-line-height: 72px; --tsn-text-display-xl-weight: 600; --tsn-text-display-xl-tracking: -1.6px;
    --tsn-text-display-l-size: 48px; --tsn-text-display-l-line-height: 56px; --tsn-text-display-l-weight: 600; --tsn-text-display-l-tracking: -1.2px;
    --tsn-text-h1-size: 36px; --tsn-text-h1-line-height: 44px; --tsn-text-h1-weight: 600; --tsn-text-h1-tracking: -0.72px;
    --tsn-text-h2-size: 30px; --tsn-text-h2-line-height: 38px; --tsn-text-h2-weight: 600; --tsn-text-h2-tracking: -0.45px;
    --tsn-text-h3-size: 24px; --tsn-text-h3-line-height: 32px; --tsn-text-h3-weight: 600; --tsn-text-h3-tracking: -0.24px;
    --tsn-text-h4-size: 20px; --tsn-text-h4-line-height: 28px; --tsn-text-h4-weight: 600; --tsn-text-h4-tracking: -0.2px;
    --tsn-text-body-l-size: 18px; --tsn-text-body-l-line-height: 28px; --tsn-text-body-l-weight: 400; --tsn-text-body-l-tracking: 0px;
    --tsn-text-body-m-size: 16px; --tsn-text-body-m-line-height: 24px; --tsn-text-body-m-weight: 400; --tsn-text-body-m-tracking: 0px;
    --tsn-text-body-s-size: 14px; --tsn-text-body-s-line-height: 20px; --tsn-text-body-s-weight: 400; --tsn-text-body-s-tracking: 0px;
    --tsn-text-label-size: 14px; --tsn-text-label-line-height: 20px; --tsn-text-label-weight: 500; --tsn-text-label-tracking: 0px;
    --tsn-text-caption-size: 12px; --tsn-text-caption-line-height: 16px; --tsn-text-caption-weight: 500; --tsn-text-caption-tracking: 0.12px;
    --tsn-text-numeric-size: 40px; --tsn-text-numeric-line-height: 48px; --tsn-text-numeric-weight: 700; --tsn-text-numeric-tracking: -0.4px;
    --tsn-text-numeric-s-size: 17px; --tsn-text-numeric-s-line-height: 24px; --tsn-text-numeric-s-weight: 700; --tsn-text-numeric-s-tracking: 0px;
    --tsn-text-code-size: 13px; --tsn-text-code-line-height: 18px; --tsn-text-code-weight: 500; --tsn-text-code-tracking: 0px;
  }
}
@media (min-width: 1024px) { :root { --tsn-grid-columns: 12; --tsn-grid-gutter: 24px; --tsn-grid-margin: 32px; } }
@media (min-width: 1440px) { :root { --tsn-grid-columns: 12; --tsn-grid-gutter: 32px; --tsn-grid-margin: 64px; } }

/* Classes typographiques (hors Tailwind) */
.tsn-text-display-xl { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-display-xl-size); line-height: var(--tsn-text-display-xl-line-height); font-weight: var(--tsn-text-display-xl-weight); letter-spacing: var(--tsn-text-display-xl-tracking); }
.tsn-text-display-l { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-display-l-size); line-height: var(--tsn-text-display-l-line-height); font-weight: var(--tsn-text-display-l-weight); letter-spacing: var(--tsn-text-display-l-tracking); }
.tsn-text-h1 { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-h1-size); line-height: var(--tsn-text-h1-line-height); font-weight: var(--tsn-text-h1-weight); letter-spacing: var(--tsn-text-h1-tracking); }
.tsn-text-h2 { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-h2-size); line-height: var(--tsn-text-h2-line-height); font-weight: var(--tsn-text-h2-weight); letter-spacing: var(--tsn-text-h2-tracking); }
.tsn-text-h3 { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-h3-size); line-height: var(--tsn-text-h3-line-height); font-weight: var(--tsn-text-h3-weight); letter-spacing: var(--tsn-text-h3-tracking); }
.tsn-text-h4 { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-h4-size); line-height: var(--tsn-text-h4-line-height); font-weight: var(--tsn-text-h4-weight); letter-spacing: var(--tsn-text-h4-tracking); }
.tsn-text-body-l { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-body-l-size); line-height: var(--tsn-text-body-l-line-height); font-weight: var(--tsn-text-body-l-weight); letter-spacing: var(--tsn-text-body-l-tracking); }
.tsn-text-body-m { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-body-m-size); line-height: var(--tsn-text-body-m-line-height); font-weight: var(--tsn-text-body-m-weight); letter-spacing: var(--tsn-text-body-m-tracking); }
.tsn-text-body-s { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-body-s-size); line-height: var(--tsn-text-body-s-line-height); font-weight: var(--tsn-text-body-s-weight); letter-spacing: var(--tsn-text-body-s-tracking); }
.tsn-text-label { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-label-size); line-height: var(--tsn-text-label-line-height); font-weight: var(--tsn-text-label-weight); letter-spacing: var(--tsn-text-label-tracking); }
.tsn-text-caption { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-caption-size); line-height: var(--tsn-text-caption-line-height); font-weight: var(--tsn-text-caption-weight); letter-spacing: var(--tsn-text-caption-tracking); }
.tsn-text-numeric { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-numeric-size); line-height: var(--tsn-text-numeric-line-height); font-weight: var(--tsn-text-numeric-weight); letter-spacing: var(--tsn-text-numeric-tracking); font-variant-numeric: tabular-nums; }
.tsn-text-numeric-s { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-numeric-s-size); line-height: var(--tsn-text-numeric-s-line-height); font-weight: var(--tsn-text-numeric-s-weight); letter-spacing: var(--tsn-text-numeric-s-tracking); font-variant-numeric: tabular-nums; }
.tsn-text-code { font-family: var(--tsn-font-family-sans); font-size: var(--tsn-text-code-size); line-height: var(--tsn-text-code-line-height); font-weight: var(--tsn-text-code-weight); letter-spacing: var(--tsn-text-code-tracking); }
.tsn-amount, .tsn-duration { font-variant-numeric: tabular-nums; }

/* Focus visible — 2px #175CD3, décalé de 2px : ≥ 3:1 sur toutes les surfaces claires. */
:focus-visible { outline: var(--tsn-focus-width) solid var(--tsn-focus-ring); outline-offset: var(--tsn-focus-offset); }

/* Mouvement réduit */
@media (prefers-reduced-motion: reduce) {
  :root {
    --tsn-duration-instant: 0ms;
    --tsn-duration-fast: 0ms;
    --tsn-duration-base: 0ms;
    --tsn-duration-moderate: 0ms;
    --tsn-duration-enter: 0ms;
    --tsn-duration-slow: 0ms;
    --tsn-distance-xs: 0px;
    --tsn-distance-sm: 0px;
    --tsn-distance-md: 0px;
    --tsn-distance-lg: 0px;
    --tsn-ease-spring-soft: var(--tsn-ease-out);
    --tsn-duration-spinner: var(--tsn-duration-spinner-reduced);
  }
  /* Supprime déplacements, ressorts, boucles décoratives et défilements animés. */
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    animation-delay: 0ms !important;
    transition-duration: 0.01ms !important;
    transition-delay: 0ms !important;
    scroll-behavior: auto !important;
  }
  /* Exception : indicateurs de chargement indispensables. */
  [data-tsn-motion="essential"], .tsn-motion-essential {
    animation-duration: var(--tsn-duration-spinner-reduced) !important;
    animation-iteration-count: infinite !important;
  }
  /* Le halo ambiant et les dérives décoratives sont masqués. */
  [data-tsn-motion="decorative"], .tsn-motion-decorative { animation: none !important; transition: none !important; }
}
