/*
 * Site public de Store Backup (Shopify et WooCommerce). Feuille unique, sans dépendance externe.
 *
 * Direction visuelle : le double carbone. Une restauration, c'est une copie qu'on garde avant
 * d'écrire, comme la feuille carbone sous un bon de commande. D'où l'encre bleu-violet du papier
 * carbone, le jaune canari des liasses en plusieurs exemplaires (la valeur remise), le rose de la
 * valeur barrée, sur un papier blanc froid. Une seule audace : la fiche du héros (deux feuilles
 * décalées) ; tout le reste est sobre.
 *
 * Typographie : Archivo (police libre SIL OFL 1.1, fichier dans fonts/), une seule famille. Les
 * titres en chasse élargie (font-stretch 125 %) et graisse forte, le texte en chasse normale.
 *
 * Règles du propriétaire, à garder : aucun texte injecté par ::before ou ::after, aucun contenu
 * réel masqué, aucun style en ligne (la politique de sécurité l'interdit), contraste AA mesuré.
 */

@font-face {
    font-family: "Archivo";
    src: url("fonts/archivo-latin.woff2") format("woff2");
    font-weight: 100 900;
    font-stretch: 62% 125%;
    font-style: normal;
    font-display: swap;
}

/* --- Jetons --- */
:root {
    --paper: #f4f5f9;        /* fond de page, blanc froid */
    --sheet: #ffffff;        /* la feuille (fiche, tableaux, formulaire) */
    --ink: #191b45;          /* texte, encre marine (15:1 sur le papier) */
    --ink-soft: #4a4d74;     /* texte secondaire (7,4:1) */
    --carbon: #3b37a8;       /* encre carbone : liens, boutons (8,4:1) */
    --carbon-deep: #2a2780;  /* survol */
    --carbon-wash: #e7e6f7;  /* la copie carbone, teinte de fond */
    --canary: #f5d547;       /* la valeur remise, surligneur (encre dessus : 11:1) */
    --rose: #b3263e;         /* la valeur fautive, barrée (6,4:1 sur blanc) */
    --rule: #d7dae7;         /* filets et bords */
    --font: "Archivo", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    --wide: 125%;
    --page: 1180px;
    color-scheme: light;
}

/* --- Base --- */
*,
*::before,
*::after {
    box-sizing: border-box;
}

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

body {
    margin: 0;
    background: var(--paper);
    color: var(--ink);
    font-family: var(--font);
    font-size: 1.0625rem;
    line-height: 1.6;
    font-feature-settings: "kern" 1;
    text-rendering: optimizeLegibility;
}

@media (min-width: 720px) {
    body {
        font-size: 1.125rem;
    }
}

img,
svg {
    display: block;
    max-width: 100%;
}

h1,
h2,
h3 {
    margin: 0;
    color: var(--ink);
    font-stretch: var(--wide);
    text-wrap: balance;
}

h1 {
    font-size: clamp(2.375rem, 1.4rem + 3.9vw, 4rem);
    font-weight: 820;
    line-height: 1.02;
    letter-spacing: -0.025em;
}

h2 {
    font-size: clamp(1.75rem, 1.25rem + 2vw, 2.75rem);
    font-weight: 780;
    line-height: 1.08;
    letter-spacing: -0.02em;
}

h3 {
    font-size: 1.25rem;
    font-weight: 720;
    line-height: 1.25;
    letter-spacing: -0.01em;
    font-stretch: 112%;
}

p {
    margin: 0;
    max-width: 68ch;
}

a {
    color: var(--carbon);
    text-decoration-thickness: 1px;
    text-underline-offset: 0.18em;
}

a:hover {
    color: var(--carbon-deep);
    text-decoration-thickness: 2px;
}

:focus-visible {
    outline: 3px solid var(--ink);
    outline-offset: 3px;
    border-radius: 2px;
}

strong {
    font-weight: 680;
}

/* Une adresse e-mail ne se coupe jamais à son tiret. */
.email {
    white-space: nowrap;
}

.wrap {
    width: min(100% - 32px, var(--page));
    margin-inline: auto;
}

@media (min-width: 720px) {
    .wrap {
        width: min(100% - 64px, var(--page));
    }
}

/* Lien d'évitement : visible dès qu'il reçoit le focus clavier (composant d'accessibilité). */
.skip-link {
    position: absolute;
    left: 16px;
    top: -100px;
    z-index: 10;
    padding: 0.6rem 1rem;
    background: var(--ink);
    color: var(--sheet);
    border-radius: 4px;
}

.skip-link:focus {
    top: 12px;
    color: var(--sheet);
}

/* --- En-tête --- */
.site-header {
    border-bottom: 1px solid var(--rule);
    background: var(--paper);
}

.site-header__bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem 1.5rem;
    padding-block: 0.9rem;
}

.brand {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin-right: auto;
    color: var(--ink);
    text-decoration: none;
}

.brand:hover {
    color: var(--ink);
}

.brand__mark {
    width: 30px;
    height: 30px;
    flex: none;
}

.brand__name {
    font-size: 1.0625rem;
    font-weight: 780;
    font-stretch: var(--wide);
    letter-spacing: -0.01em;
    line-height: 1.1;
}

.brand__platform {
    display: block;
    font-size: 0.8125rem;
    font-weight: 500;
    font-stretch: 100%;
    letter-spacing: 0;
    color: var(--ink-soft);
}

.site-nav {
    order: 3;
    width: 100%;
}

.site-nav ul {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1.25rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.site-nav a {
    color: var(--ink);
    font-size: 0.9375rem;
    font-weight: 560;
    text-decoration: none;
}

.site-nav a:hover,
.site-nav a[aria-current="page"] {
    color: var(--carbon);
    text-decoration: underline;
    text-decoration-thickness: 2px;
}

@media (min-width: 900px) {
    .site-nav {
        order: 0;
        width: auto;
    }

    .site-nav ul {
        gap: 1.75rem;
    }
}

/* --- Boutons --- */
.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    min-height: 44px;
    padding: 0.7rem 1.2rem;
    border: 2px solid var(--carbon);
    border-radius: 4px;
    background: var(--carbon);
    color: var(--sheet);
    font: inherit;
    font-size: 1rem;
    font-weight: 680;
    font-stretch: 108%;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
}

.button:hover {
    background: var(--carbon-deep);
    border-color: var(--carbon-deep);
    color: var(--sheet);
    text-decoration: none;
}

.button--small {
    min-height: 40px;
    padding: 0.45rem 0.9rem;
    font-size: 0.9375rem;
}

.button--quiet {
    background: transparent;
    color: var(--carbon);
}

.button--quiet:hover {
    background: var(--carbon-wash);
    color: var(--carbon-deep);
}

/* --- Sections --- */
.section {
    padding-block: clamp(3.5rem, 2rem + 6vw, 7rem);
}

.section--sheet {
    background: var(--sheet);
    border-block: 1px solid var(--rule);
}

.section__head {
    display: grid;
    gap: 1rem;
    margin-bottom: clamp(2rem, 1.5rem + 2vw, 3.5rem);
    max-width: 52rem;
}

.lead {
    text-wrap: pretty;
    font-size: 1.1875rem;
    line-height: 1.55;
    color: var(--ink-soft);
}

@media (min-width: 720px) {
    .lead {
        font-size: 1.3125rem;
    }
}

.muted {
    color: var(--ink-soft);
}

.small {
    font-size: 0.9375rem;
}

/* --- Héros --- */
.hero {
    padding-block: clamp(2.5rem, 1.5rem + 5vw, 6rem) clamp(3.5rem, 2rem + 6vw, 7rem);
}

.hero__grid {
    display: grid;
    gap: clamp(2.5rem, 1rem + 5vw, 4.5rem);
    align-items: center;
}

@media (min-width: 1000px) {
    .hero__grid {
        grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
    }
}

.hero__text {
    display: grid;
    gap: 1.5rem;
}

.hero__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem 1.25rem;
    margin-top: 0.5rem;
}

.hero__status {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.9375rem;
    font-weight: 560;
    color: var(--ink-soft);
}

.hero__status svg {
    width: 18px;
    height: 18px;
    flex: none;
}

/* La fiche : une feuille blanche posée sur sa copie carbone. */
.record {
    margin: 0 8px 0 0;
}

.record__stack {
    position: relative;
    padding: 0 0 14px 14px;
}

.record__copy {
    position: absolute;
    inset: 14px 0 0 14px;
    border-radius: 6px;
    background: var(--carbon);
    transform: rotate(1.6deg);
    transform-origin: 30% 80%;
}

.record__sheet {
    position: relative;
    display: grid;
    gap: 1.1rem;
    padding: clamp(1.1rem, 0.8rem + 1.4vw, 1.75rem);
    border: 1px solid var(--rule);
    border-radius: 6px;
    background: var(--sheet);
    transform: translate(-14px, -14px);
}

.record__top {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
}

.record__title {
    font-size: 1.125rem;
    font-weight: 720;
    font-stretch: 112%;
    line-height: 1.25;
}

.record__kind {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--ink-soft);
}

.record__fields {
    display: grid;
    gap: 0.65rem;
    margin: 0;
}

.record__field {
    display: grid;
    grid-template-columns: 7.5rem minmax(0, 1fr);
    gap: 0.75rem;
    align-items: baseline;
    padding-block: 0.55rem;
    border-top: 1px solid var(--rule);
}

@media (max-width: 479px) {
    .record__field {
        grid-template-columns: 5.75rem minmax(0, 1fr);
    }
}

.record__field dt {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--ink-soft);
}

.record__field dd {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.25rem 0.6rem;
    margin: 0;
    font-variant-numeric: tabular-nums;
}

.record del {
    color: var(--rose);
    text-decoration-thickness: 2px;
}

.record ins {
    padding: 0.05em 0.3em;
    background: var(--canary);
    color: var(--ink);
    text-decoration: none;
    font-weight: 650;
    border-radius: 2px;
}

.record__same {
    color: var(--ink-soft);
}

.record__versions {
    display: grid;
    gap: 0.35rem;
    margin: 0;
    padding: 0.9rem 0 0;
    border-top: 1px solid var(--rule);
    list-style: none;
    font-size: 0.875rem;
}

.record__versions li {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    color: var(--ink-soft);
}

.record__versions svg {
    width: 12px;
    height: 12px;
    flex: none;
}

.record__versions .is-picked {
    color: var(--ink);
    font-weight: 650;
}

.record__stamp {
    justify-self: start;
    padding: 0.35rem 0.7rem;
    border: 2px solid var(--carbon);
    border-radius: 4px;
    color: var(--carbon);
    font-size: 0.8125rem;
    font-weight: 700;
    font-stretch: 112%;
    transform: rotate(-2deg);
}

.record figcaption {
    margin-top: 0.75rem;
    font-size: 0.8125rem;
    color: var(--ink-soft);
}

/* Le seul mouvement de la page : la valeur fautive se barre, la bonne revient, le tampon tombe.
   Sans animation (préférence du système), tout est simplement visible dès le départ. */
@media (prefers-reduced-motion: no-preference) {
    .record ins {
        animation: restore-in 700ms cubic-bezier(0.2, 0.7, 0.2, 1) 900ms backwards;
    }

    .record del {
        animation: strike 500ms ease-out 400ms backwards;
    }

    .record__stamp {
        animation: stamp 420ms cubic-bezier(0.3, 1.4, 0.5, 1) 1700ms backwards;
    }
}

@keyframes strike {
    from {
        text-decoration-color: transparent;
        color: var(--ink);
    }
}

@keyframes restore-in {
    from {
        opacity: 0;
        transform: translateY(6px);
        background-size: 0 100%;
    }
}

@keyframes stamp {
    from {
        opacity: 0;
        transform: rotate(-2deg) scale(1.25);
    }
}

/* --- Ce qui casse, et la réparation --- */
.fixes {
    display: grid;
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
}

.fix {
    display: grid;
    gap: 0.6rem 3rem;
    padding-block: 1.75rem;
    border-top: 1px solid var(--rule);
}

.fix:last-child {
    border-bottom: 1px solid var(--rule);
}

@media (min-width: 860px) {
    .fix {
        grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
        align-items: baseline;
    }
}

.fix__what {
    font-size: clamp(1.25rem, 1.05rem + 0.8vw, 1.625rem);
    font-weight: 720;
    font-stretch: var(--wide);
    line-height: 1.2;
    letter-spacing: -0.015em;
}

.fix__how {
    color: var(--ink-soft);
}

/* --- La marche à suivre (vraie séquence : numérotée) --- */
.steps {
    display: grid;
    gap: 2rem 2.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
    counter-reset: none;
}

@media (min-width: 720px) {
    .steps {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1100px) {
    .steps {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }
}

.step {
    display: grid;
    align-content: start;
    gap: 0.6rem;
}

.step__number {
    display: inline-grid;
    place-items: center;
    width: 2.25rem;
    height: 2.25rem;
    border: 2px solid var(--carbon);
    border-radius: 50%;
    color: var(--carbon);
    font-weight: 760;
    font-stretch: var(--wide);
    font-variant-numeric: tabular-nums;
}

.step p {
    color: var(--ink-soft);
    font-size: 1rem;
}

/* --- Tableaux (couverture, prix) --- */
.table-wrap {
    border: 1px solid var(--rule);
    border-radius: 6px;
    background: var(--sheet);
    overflow-x: auto;
}

table {
    width: 100%;
    border-collapse: collapse;
    font-size: 1rem;
}

caption {
    padding: 1rem 1.25rem;
    text-align: left;
    font-size: 0.9375rem;
    color: var(--ink-soft);
    border-bottom: 1px solid var(--rule);
}

th,
td {
    padding: 0.85rem 1.25rem;
    text-align: left;
    vertical-align: top;
    border-bottom: 1px solid var(--rule);
}

tbody tr:last-child th,
tbody tr:last-child td {
    border-bottom: 0;
}

thead th {
    font-size: 0.875rem;
    font-weight: 650;
    color: var(--ink-soft);
    background: var(--paper);
}

tbody th {
    font-weight: 680;
}

.num {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    text-align: right;
}

th.num,
td.num {
    text-align: right;
}

.cover__note {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.9375rem;
    font-weight: 400;
    color: var(--ink-soft);
    max-width: 60ch;
}

.tag {
    display: inline-block;
    padding: 0.15rem 0.55rem;
    border-radius: 3px;
    font-size: 0.875rem;
    font-weight: 650;
    white-space: nowrap;
}

.tag--yes {
    background: var(--carbon-wash);
    color: var(--carbon-deep);
}

.tag--only {
    background: var(--paper);
    color: var(--ink-soft);
    border: 1px solid var(--rule);
}

@media (max-width: 559px) {
    th,
    td {
        padding: 0.75rem 0.85rem;
    }

    caption {
        padding: 0.85rem;
    }
}

/* La liste de couverture : nom et étiquette sur une ligne, remarque dessous (téléphone) ;
   nom, remarque et étiquette côte à côte (bureau). */
.cover {
    border: 1px solid var(--rule);
    border-radius: 6px;
    background: var(--sheet);
}

.cover__caption {
    padding: 0.9rem 1.25rem;
    border-bottom: 1px solid var(--rule);
    background: var(--paper);
    border-radius: 6px 6px 0 0;
    font-size: 0.9375rem;
    color: var(--ink-soft);
    max-width: none;
}

.cover__list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.cover__row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "label tag" "note note";
    gap: 0.35rem 1rem;
    align-items: baseline;
    padding: 0.9rem 1.25rem;
    border-top: 1px solid var(--rule);
}

.cover__row:first-child {
    border-top: 0;
}

.cover__label {
    grid-area: label;
    font-weight: 680;
}

.cover__row .tag {
    grid-area: tag;
    justify-self: end;
}

.cover__row .cover__note {
    grid-area: note;
    margin-top: 0;
}

@media (min-width: 860px) {
    .cover__row {
        grid-template-columns: 13rem minmax(0, 1fr) 9.5rem;
        grid-template-areas: "label note tag";
        gap: 1.5rem;
    }

    .cover__row .tag {
        justify-self: start;
    }
}

.covered__not {
    margin-top: clamp(2.5rem, 2rem + 2vw, 4rem);
}

/* Ce qui n'est pas couvert, et pourquoi */
.not-covered {
    display: grid;
    gap: 1.25rem 2.5rem;
    margin: 1.25rem 0 0;
}

@media (min-width: 720px) {
    .not-covered {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1100px) {
    .not-covered {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.not-covered div {
    padding-top: 1rem;
    border-top: 1px solid var(--rule);
}

.not-covered dt {
    font-weight: 680;
}

.not-covered dd {
    margin: 0.25rem 0 0;
    color: var(--ink-soft);
    font-size: 1rem;
}

/* --- Ce sur quoi compter --- */
.promises {
    display: grid;
    gap: 2rem 3rem;
    margin: 0;
}

@media (min-width: 720px) {
    .promises {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1100px) {
    .promises {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.promises dt {
    font-size: 1.25rem;
    font-weight: 720;
    font-stretch: 112%;
    line-height: 1.25;
}

.promises dd {
    margin: 0.5rem 0 0;
    color: var(--ink-soft);
}

/* --- La grille de prix (une fiche de tarifs, pas des cartes) --- */
.rates {
    display: grid;
    margin: 0;
    padding: 0;
    list-style: none;
    border: 1px solid var(--rule);
    border-radius: 6px;
    background: var(--sheet);
}

.rate {
    display: grid;
    align-content: start;
    gap: 1rem;
    padding: 1.5rem 1.25rem;
    border-top: 1px solid var(--rule);
}

.rate:first-child {
    border-top: 0;
}

/* À partir de deux colonnes, les trois rangées de chaque offre (nom, prix, faits) s'alignent
   d'une offre à l'autre (sous-grille), même quand l'une n'a pas de prix annuel. */
@media (min-width: 640px) {
    .rate {
        grid-row: span 3;
        grid-template-rows: subgrid;
        gap: 1rem;
    }
}

@media (min-width: 640px) and (max-width: 1079px) {
    .rates {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .rate:nth-child(2) {
        border-top: 0;
    }

    .rate:nth-child(even) {
        border-left: 1px solid var(--rule);
    }
}

@media (min-width: 1080px) {
    .rates {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }

    .rate {
        border-top: 0;
        border-left: 1px solid var(--rule);
    }

    .rate:first-child {
        border-left: 0;
    }
}

.rate__name {
    font-size: 1.375rem;
    font-weight: 780;
    font-stretch: var(--wide);
}

.rate__price {
    display: grid;
    gap: 0.2rem;
}

.rate__monthly {
    font-size: 1.75rem;
    font-weight: 760;
    font-stretch: 110%;
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
}

.rate__monthly span {
    font-size: 1rem;
    font-weight: 500;
    font-stretch: 100%;
    color: var(--ink-soft);
}

.rate__annual {
    font-size: 0.9375rem;
    color: var(--ink-soft);
    font-variant-numeric: tabular-nums;
}

.rate__save {
    display: inline-block;
    margin-top: 0.2rem;
    padding: 0.05rem 0.4rem;
    background: var(--canary);
    color: var(--ink);
    border-radius: 2px;
    font-size: 0.875rem;
    font-weight: 650;
}

.rate__facts {
    display: grid;
    align-content: start;
    gap: 0.45rem;
    margin: 0;
    padding: 1rem 0 0;
    border-top: 1px solid var(--rule);
    list-style: none;
    font-size: 0.9375rem;
}

.rate__facts li {
    display: flex;
    gap: 0.5rem;
    align-items: baseline;
}

.rate__facts svg {
    width: 14px;
    height: 14px;
    flex: none;
    transform: translateY(2px);
}

/* Avis « pas encore disponible » (WooCommerce, ou Shopify avant la publication du listing). */
.notice {
    display: grid;
    gap: 0.75rem;
    padding: 1.25rem 1.4rem;
    border: 2px solid var(--carbon);
    border-radius: 6px;
    background: var(--carbon-wash);
}

.notice p {
    color: var(--ink);
}

.notice__title {
    font-size: 1.125rem;
    font-weight: 720;
    font-stretch: 112%;
}

.notice .button {
    justify-self: start;
}

.fine-print {
    display: grid;
    gap: 0.75rem;
    margin-top: 2rem;
    font-size: 0.9375rem;
    color: var(--ink-soft);
}

/* --- Section en deux colonnes : le titre à gauche, le contenu à droite (bureau) --- */
.split {
    display: grid;
    gap: 2rem 4rem;
}

@media (min-width: 1000px) {
    .split {
        grid-template-columns: minmax(0, 0.75fr) minmax(0, 1.25fr);
        align-items: start;
    }
}

.split__head {
    display: grid;
    gap: 1rem;
}

/* --- Questions fréquentes --- */
.faq {
    display: grid;
    max-width: 52rem;
    border-top: 1px solid var(--rule);
}

.faq details {
    border-bottom: 1px solid var(--rule);
}

.faq summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding-block: 1.1rem;
    font-size: 1.125rem;
    font-weight: 680;
    cursor: pointer;
    list-style: none;
}

.faq summary::-webkit-details-marker {
    display: none;
}

.faq summary svg {
    width: 20px;
    height: 20px;
    flex: none;
    transition: transform 160ms ease-out;
}

.faq details[open] summary svg {
    transform: rotate(45deg);
}

.faq__answer {
    display: grid;
    gap: 0.75rem;
    padding-bottom: 1.25rem;
    color: var(--ink-soft);
}

@media (prefers-reduced-motion: reduce) {
    .faq summary svg {
        transition: none;
    }
}

/* --- Pages de texte (guides, pages légales) --- */
.page-head {
    padding-block: clamp(2.5rem, 1.5rem + 4vw, 4.5rem) clamp(1.5rem, 1rem + 2vw, 2.5rem);
}

.page-head h1 {
    font-size: clamp(2.125rem, 1.4rem + 3vw, 3.5rem);
    max-width: 22ch;
}

.page-head .lead {
    margin-top: 1rem;
}

.prose {
    display: grid;
    gap: 1rem;
    max-width: 44rem;
}

.prose h2 {
    margin-top: 1.75rem;
    font-size: clamp(1.375rem, 1.15rem + 0.9vw, 1.75rem);
    font-weight: 740;
}

.prose h3 {
    margin-top: 0.75rem;
}

.prose ul,
.prose ol {
    display: grid;
    gap: 0.5rem;
    margin: 0;
    padding-left: 1.3rem;
    max-width: 68ch;
}

.prose li::marker {
    color: var(--carbon);
}

.prose table {
    font-size: 0.9375rem;
}

.prose .table-wrap {
    margin-block: 0.5rem;
}

.doc-layout {
    display: grid;
    gap: 3rem;
    padding-bottom: clamp(3.5rem, 2rem + 6vw, 6rem);
}

@media (min-width: 1000px) {
    .doc-layout {
        grid-template-columns: minmax(0, 1fr) 17rem;
        align-items: start;
    }
}

.doc-steps {
    counter-reset: none;
}

.doc-aside {
    display: grid;
    gap: 0.75rem;
    padding: 1.25rem;
    border: 1px solid var(--rule);
    border-radius: 6px;
    background: var(--sheet);
    font-size: 0.9375rem;
}

@media (min-width: 1000px) {
    .doc-aside--sticky {
        position: sticky;
        top: 1.5rem;
    }
}

.doc-aside ul {
    display: grid;
    gap: 0.6rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.doc-aside a[aria-current="page"] {
    color: var(--ink);
    font-weight: 680;
    text-decoration: none;
}

.doc-aside__title {
    font-weight: 700;
}

.guide-list {
    display: grid;
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
    max-width: 52rem;
    border-top: 1px solid var(--rule);
}

.guide-list li {
    display: grid;
    gap: 0.4rem;
    padding-block: 1.4rem;
    border-bottom: 1px solid var(--rule);
}

.guide-list a {
    font-size: 1.25rem;
    font-weight: 720;
    font-stretch: 112%;
}

.callout {
    padding: 1rem 1.2rem;
    border-left: 4px solid var(--carbon);
    background: var(--sheet);
    border-radius: 0 6px 6px 0;
}

/* --- Contact --- */
.contact-layout {
    display: grid;
    gap: 2.5rem;
    padding-bottom: clamp(3.5rem, 2rem + 6vw, 6rem);
}

@media (min-width: 960px) {
    .contact-layout {
        grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
        align-items: start;
    }
}

.contact-aside {
    display: grid;
    gap: 1.25rem;
}

.form {
    display: grid;
    gap: 1.25rem;
    padding: clamp(1.25rem, 1rem + 1.5vw, 2rem);
    border: 1px solid var(--rule);
    border-radius: 6px;
    background: var(--sheet);
}

.field {
    display: grid;
    gap: 0.4rem;
}

.field label {
    font-weight: 650;
}

.field__hint {
    font-size: 0.875rem;
    color: var(--ink-soft);
}

.field input,
.field select,
.field textarea {
    width: 100%;
    min-height: 46px;
    padding: 0.65rem 0.8rem;
    border: 1px solid #8e91ad;
    border-radius: 4px;
    background: var(--sheet);
    color: var(--ink);
    font: inherit;
    font-size: 1rem;
}

.field textarea {
    min-height: 11rem;
    resize: vertical;
    line-height: 1.5;
}

.field input:focus-visible,
.field select:focus-visible,
.field textarea:focus-visible {
    outline: 3px solid var(--carbon);
    outline-offset: 1px;
    border-color: var(--carbon);
}

.field--error input,
.field--error select,
.field--error textarea {
    border: 2px solid var(--rose);
}

.field__error {
    color: var(--rose);
    font-size: 0.9375rem;
    font-weight: 600;
}

/* Le champ piège : hors de l'écran ET hors du parcours clavier et des lecteurs d'écran. Ce n'est
   pas du contenu : un humain ne doit jamais le voir ni le remplir. */
.trap {
    position: absolute;
    left: -10000px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.alert {
    padding: 1rem 1.2rem;
    border: 2px solid var(--rose);
    border-radius: 6px;
    background: #fdf1f3;
    color: var(--ink);
    font-weight: 560;
}

.success {
    display: grid;
    gap: 1rem;
    padding: clamp(1.25rem, 1rem + 1.5vw, 2rem);
    border: 1px solid var(--rule);
    border-radius: 6px;
    background: var(--sheet);
}

.success h2 {
    font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2rem);
}

.success__mark {
    width: 44px;
    height: 44px;
}

/* --- Pied de page --- */
.site-footer {
    padding-block: 3rem 2.5rem;
    background: var(--ink);
    color: #dfe0f2;
    font-size: 0.9375rem;
}

.site-footer a {
    color: var(--sheet);
}

.site-footer a:hover {
    color: var(--canary);
}

.site-footer :focus-visible {
    outline-color: var(--canary);
}

.site-footer__grid {
    display: grid;
    gap: 2rem;
}

@media (min-width: 860px) {
    .site-footer__grid {
        grid-template-columns: minmax(0, 1.3fr) repeat(2, minmax(0, 0.7fr));
    }
}

.site-footer__name {
    color: var(--sheet);
    font-size: 1.125rem;
    font-weight: 760;
    font-stretch: var(--wide);
}

.site-footer ul {
    display: grid;
    gap: 0.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.site-footer__title {
    margin-bottom: 0.75rem;
    color: var(--sheet);
    font-weight: 700;
}

.site-footer__legal {
    display: grid;
    gap: 0.4rem;
    margin-top: 2.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid #3a3d6e;
    color: #c9cbf0;
    font-size: 0.875rem;
}

.site-footer__legal p {
    max-width: none;
}
