/* Rhône Saône — Base & primitives
   Element defaults + a few brand helper classes used across cards, components
   and UI kits. Tokens come from the files imported before this one. */

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  font-family: var(--rs-font-body);
  font-size: var(--rs-font-size-body);
  line-height: var(--rs-leading-body);
  color: var(--rs-text-body);
  background: var(--rs-surface-page);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4 {
  font-family: var(--rs-font-heading);
  color: var(--rs-text-heading);
  font-weight: var(--rs-weight-bold);
  margin: 0;
  text-wrap: balance;
}

h1 { font-size: var(--rs-font-size-h1); line-height: var(--rs-leading-tight); letter-spacing: var(--rs-tracking-heading); }
h2 { font-size: var(--rs-font-size-h2); line-height: var(--rs-leading-heading); letter-spacing: var(--rs-tracking-heading); }
h3 { font-size: var(--rs-font-size-h3); line-height: var(--rs-leading-heading); }

p { margin: 0; }

a { color: var(--rs-link); text-decoration: none; }
a:hover { text-decoration: underline; }

img { max-width: 100%; display: block; }

/* Un attribut hidden ne doit jamais dependre de la specificite d un composant :
   .rs-drawer__panel pose display:flex, ce qui rouvrait les sous-menus du tiroir
   mobile pendant que leur bouton annoncait aria-expanded="false". */
[hidden] { display: none !important; }

/* L anneau est dessine par box-shadow, que le mode contraste force de Windows
   n affiche pas. Un outline transparent tient la place : le navigateur le
   repeint alors avec la couleur systeme, au lieu de ne rien montrer du tout.
   summary et [tabindex] sont de la liste — l accordeon FAQ, le sommaire mobile
   et le tableau comparatif defilant en sont. */
:where(button, a, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 2px solid transparent;
  outline-offset: 2px;
  box-shadow: var(--rs-focus-ring);
  border-radius: var(--rs-radius-sm);
}

@media (forced-colors: active) {
  :where(button, a, input, select, textarea, summary, [tabindex]):focus-visible {
    outline-color: Highlight;
  }
}

/* --- Helper: display heading --- */
.rs-display {
  font-family: var(--rs-font-heading);
  font-size: var(--rs-font-size-display);
  line-height: var(--rs-leading-tight);
  letter-spacing: var(--rs-tracking-display);
  font-weight: var(--rs-weight-bold);
  color: var(--rs-text-heading);
  margin: 0;
  text-wrap: balance;
}

/* --- Helper: eyebrow / kicker (teal dot + uppercase label) --- */
.rs-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--rs-space-2);
  font-family: var(--rs-font-body);
  font-size: var(--rs-font-size-eyebrow);
  font-weight: var(--rs-weight-bold);
  letter-spacing: var(--rs-tracking-eyebrow);
  text-transform: uppercase;
  color: var(--rs-link);
}
.rs-eyebrow::before {
  content: "";
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 999px;
  background: var(--rs-color-logo);
  flex: none;
}
.rs-eyebrow--on-dark { color: var(--rs-color-logo); }

/* --- Helper: lead / muted text --- */
.rs-lead { font-size: var(--rs-font-size-body-lg); color: var(--rs-text-body); max-width: var(--rs-measure); }
.rs-muted { color: var(--rs-text-subtle); }
.rs-measure { max-width: var(--rs-measure); }

/* --- Helper: containers & sections --- */
.rs-container { width: 100%; max-width: var(--rs-container-wide); margin-inline: auto; padding-inline: var(--rs-gutter-desktop); }
.rs-container--text { max-width: var(--rs-container-text); }
.rs-section { padding-block: var(--rs-section-y-desktop); }

@media (max-width: 767px) {
  .rs-container { padding-inline: var(--rs-gutter-mobile); }
  .rs-section { padding-block: var(--rs-section-y-mobile); }
}

@keyframes rs-spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; }
}
