/* Base : réinitialisation légère, typographie, formulaires, focus, mouvement. */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  margin: 0;
  font-family: var(--cubik-police-corps);
  font-size: var(--cubik-taille-base);
  line-height: var(--cubik-interligne);
  color: var(--cubik-encre);
  background: var(--cubik-blanc);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-wrap: break-word;
}

h1, h2, h3 {
  font-family: var(--cubik-police-titres);
  font-weight: 700;
  color: var(--cubik-marine);
  margin: 0 0 var(--cubik-esp-3);
  text-wrap: balance;
}
h1 { font-size: var(--cubik-taille-h1); line-height: 1.08; letter-spacing: -0.01em; }
h2 { font-size: var(--cubik-taille-h2); line-height: 1.12; }
h3 { font-size: var(--cubik-taille-h3); line-height: 1.2; }
h4, h5, h6 {
  font-family: var(--cubik-police-corps);
  font-weight: 700;
  color: var(--cubik-marine);
  margin: 0 0 var(--cubik-esp-2);
  line-height: 1.3;
}
h4 { font-size: var(--cubik-taille-h4); }
h5 { font-size: var(--cubik-taille-intro); }
h6 { font-size: var(--cubik-taille-base); }

p, ul, ol, dl, table, figure, blockquote {
  margin: 0 0 var(--cubik-esp-3);
}
p:last-child, ul:last-child, ol:last-child { margin-bottom: 0; }

.cubik-mesure, .cubik-prose p, .cubik-prose li {
  max-width: var(--cubik-mesure);
}

a {
  color: var(--cubik-bleu-lien);
  text-decoration: none;
  text-underline-offset: 0.15em;
  text-decoration-thickness: 1px;
  transition: color var(--cubik-duree-courte) var(--cubik-courbe);
}
a:hover, a:focus-visible {
  text-decoration: underline;
  text-decoration-color: var(--cubik-bleu);
}
/* Liens dans le texte courant : soulignés (WCAG 1.4.1 — la couleur seule ne suffit pas). Menus, boutons et listes de liens restent nus. */
p a, .cubik-prose li a, dd a, td a:not(.cubik-bouton), figcaption a {
  text-decoration: underline;
  text-decoration-color: var(--cubik-bleu);
}
.cubik-pied ul a, .cubik-menu a { text-decoration: none; }

strong, b { font-weight: 700; }
small, .cubik-petit { font-size: var(--cubik-taille-petit); }
.cubik-secondaire { color: var(--cubik-ardoise); }
.cubik-nombre, .cubik-prix, td.cubik-num { font-variant-numeric: tabular-nums; }

img, svg, video {
  max-width: 100%;
  height: auto;
  display: block;
}
svg { fill: currentColor; }

hr {
  border: 0;
  border-top: 1px solid var(--cubik-filet);
  margin: var(--cubik-esp-5) 0;
}

abbr[title] { text-decoration: none; border-bottom: 1px dotted currentColor; cursor: help; }

/* Listes de contenu */
.cubik-prose ul, .cubik-liste {
  padding-left: 1.25rem;
}
.cubik-liste li + li { margin-top: var(--cubik-esp-2); }

/* Tableaux : la signature Cubik (en-tête marine, lignes alternées ciel) — voir composants.css pour .cubik-tableau */
table {
  border-collapse: collapse;
  width: 100%;
}
th, td {
  text-align: left;
  vertical-align: top;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--cubik-filet);
}

/* Formulaires */
label { font-weight: 700; }
input:not([type="radio"]):not([type="checkbox"]):not([type="submit"]):not([type="button"]),
select,
textarea {
  font: inherit;
  color: var(--cubik-encre);
  background: var(--cubik-blanc);
  border: 1px solid var(--cubik-bordure-controle);
  border-radius: var(--cubik-rayon-controle);
  min-height: var(--cubik-hauteur-controle);
  padding: 0.625rem 0.875rem;
  width: 100%;
  transition: border-color var(--cubik-duree-courte) var(--cubik-courbe);
}
input:not([type="radio"]):not([type="checkbox"]):focus-visible,
select:focus-visible,
textarea:focus-visible {
  border-color: var(--cubik-marine);
  outline: none;
  box-shadow: var(--cubik-focus);
}
input[type="radio"], input[type="checkbox"] {
  accent-color: var(--cubik-marine);
  width: 1.125rem;
  height: 1.125rem;
  margin: 0;
}
button {
  font: inherit;
}
::placeholder { color: var(--cubik-ardoise); opacity: 1; }

/* Focus visible au clavier, partout, identique */
:focus-visible {
  outline: 2px solid var(--cubik-bleu);
  outline-offset: 2px;
  border-radius: 2px;
}
a:focus-visible, button:focus-visible, [role="button"]:focus-visible {
  outline: none;
  box-shadow: var(--cubik-focus);
  border-radius: var(--cubik-rayon-controle);
}

/* Lien d'évitement */
.cubik-evitement {
  position: absolute;
  left: -999px;
  top: 0.5rem;
  z-index: 100;
  background: var(--cubik-marine);
  color: var(--cubik-blanc);
  padding: 0.625rem 1rem;
  border-radius: var(--cubik-rayon-controle);
  font-weight: 700;
}
.cubik-evitement:focus {
  left: 0.5rem;
}

.screen-reader-text, .cubik-sr {
  position: absolute !important;
  width: 1px; height: 1px;
  overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0; padding: 0; margin: -1px;
}

/* Conteneurs */
.cubik-conteneur {
  width: 100%;
  max-width: var(--cubik-contenu);
  margin-inline: auto;
  padding-inline: var(--cubik-marge-page);
}
.cubik-conteneur--large { max-width: var(--cubik-large); }

.cubik-section {
  padding-block: var(--cubik-esp-6);
}
.cubik-section--serree { padding-block: var(--cubik-esp-5); }
.cubik-section--ciel { background: var(--cubik-ciel); }
.cubik-section__entete {
  max-width: var(--cubik-mesure);
  margin-bottom: var(--cubik-esp-5);
}
.cubik-section__entete p {
  font-size: var(--cubik-taille-lecture);
  color: var(--cubik-ardoise);
}

/* Grille 12 colonnes, gouttière 24 px */
.cubik-grille {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: var(--cubik-esp-5) var(--cubik-gouttiere);
}
.cubik-col-5 { grid-column: span 12; }
.cubik-col-6 { grid-column: span 12; }
.cubik-col-7 { grid-column: span 12; }
@media (min-width: 60em) {
  .cubik-col-5 { grid-column: span 5; }
  .cubik-col-6 { grid-column: span 6; }
  .cubik-col-7 { grid-column: span 7; }
}

/* Mouvement : rien ne bouge si l'utilisateur le demande */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
}

/* Impression : pas d'en-tête ni de pied de page interactifs */
@media print {
  .cubik-entete, .cubik-pied, .cubik-evitement { display: none; }
  a { color: inherit; }
}

/* L’attribut hidden gagne toujours, même sur un élément en grid ou flex */
[hidden] { display: none !important; }
