
:where(body.page:not(.home), body.single-post) {
    --osi-bg:     #ffffff;
    --osi-ink:    #111111;
    --osi-muted:  #4a4a4a;
    --osi-line:   #e0ded8;
    --osi-beige:  #efede8;
    --osi-black:  #000000;
    --osi-font:   'Archivo', 'Rubik', -apple-system, 'Segoe UI', sans-serif;
    --osi-hand:   'Rock Salt', cursive;
}



.os-inner-head {
    font-family: var(--osi-font, 'Archivo', sans-serif);
    padding: 40px 0 10px 0;
    box-sizing: border-box;
}

.os-inner-eyebrow {
    display: block;
    font-family: var(--osi-hand, 'Rock Salt', cursive);
    font-size: 1.05rem;
    font-weight: 400;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: #111111;
    margin-bottom: 14px;
}

.os-inner-head .os-inner-title {
    font-family: var(--osi-font, 'Archivo', sans-serif);
    font-size: clamp(2.4rem, 6vw, 4.6rem);
    font-weight: 800;
    line-height: .95;
    letter-spacing: -.02em;
    text-transform: uppercase;
    color: #111111 !important;
    margin: 0;
}



:where(body.page:not(.home)) :where(.entry-content) {
    font-family: var(--osi-font);
    font-size: 1rem;
    line-height: 1.6;
    color: var(--osi-ink);
    box-sizing: border-box;
}

:where(body.page:not(.home)) :where(.entry-content:has(.os-inner-head)) {
    padding: 0 60px 60px 60px;
    max-width: 1180px;
}


:where(body.page:not(.home)) :where(.entry-content) h2 {
    font-family: var(--osi-font);
    font-size: 1.6rem;
    font-weight: 800;
    line-height: 1.15;
    letter-spacing: -.005em;
    color: var(--osi-ink);
    margin: 48px 0 16px 0;
}
:where(body.page:not(.home)) :where(.entry-content) h3 {
    font-family: var(--osi-font);
    font-size: 1.15rem;
    font-weight: 700;
    line-height: 1.25;
    color: var(--osi-ink);
    margin: 32px 0 10px 0;
}
:where(body.page:not(.home)) :where(.entry-content) h4 {
    font-family: var(--osi-font);
    font-size: .95rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--osi-muted);
    margin: 24px 0 8px 0;
}


:where(body.page:not(.home)) :where(.entry-content) :where(h2, h3, h4) strong {
    font-weight: inherit;
}

:where(body.page:not(.home)) :where(.entry-content) p {
    margin: 0 0 1.1em 0;
    max-width: 820px;      /* confort de lecture : ~90 signes par ligne */
}

/* Liens : Astra les souligne, on garde le principe mais en plus sobre. */
:where(body.page:not(.home)) :where(.entry-content) a {
    color: var(--osi-ink);
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: opacity .2s ease;
}
:where(body.page:not(.home)) :where(.entry-content) a:hover {
    opacity: .6;
}

:where(body.page:not(.home)) :where(.entry-content) :where(ul, ol) {
    max-width: 820px;
    margin: 0 0 1.3em 0;
    padding-left: 1.2em;
}
:where(body.page:not(.home)) :where(.entry-content) li {
    margin-bottom: .4em;
}

:where(body.page:not(.home)) :where(.entry-content) img {
    max-width: 100%;
    height: auto;
    display: block;
}
:where(body.page:not(.home)) :where(.entry-content) figure {
    margin: 28px 0;
}

:where(body.page:not(.home)) :where(.entry-content) blockquote {
    border-left: 2px solid var(--osi-black);
    padding-left: 20px;
    margin: 28px 0;
    font-size: 1.05rem;
    color: var(--osi-muted);
}

:where(body.page:not(.home)) :where(.entry-content) hr {
    border: 0;
    border-top: 1px solid var(--osi-line);
    margin: 44px 0;
}

/* Tableaux, présents sur certaines pages de prestations. */
:where(body.page:not(.home)) :where(.entry-content) table {
    width: 100%;
    border-collapse: collapse;
    font-size: .9rem;
    margin: 28px 0;
}
:where(body.page:not(.home)) :where(.entry-content) :where(th, td) {
    border: 1px solid var(--osi-line);
    padding: 10px 12px;
    text-align: left;
}
:where(body.page:not(.home)) :where(.entry-content) th {
    background: var(--osi-beige);
    font-weight: 700;
    text-transform: uppercase;
    font-size: .72rem;
    letter-spacing: .04em;
}



:where(body.page:not(.home)) :where(.entry-content) :where(.wp-block-button__link, .ast-button, .wp-element-button) {
    display: inline-block;
    font-family: var(--osi-font);
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .03em;
    text-transform: uppercase;
    text-decoration: none;
    color: #fff;
    background: var(--osi-black);
    border: 1px solid var(--osi-black);
    border-radius: 0;
    box-shadow: none;
    padding: 13px 24px;
    transition: background-color .22s ease, color .22s ease;
}
:where(body.page:not(.home)) :where(.entry-content) :where(.wp-block-button__link, .ast-button, .wp-element-button):hover {
    color: var(--osi-black);
    background: #fff;
}



@media screen and (max-width: 1024px) {
    .os-inner-head { padding: 30px 0 8px 0; }
    :where(body.page:not(.home)) :where(.entry-content:has(.os-inner-head)) { padding: 0 30px 40px 30px; }
    :where(body.page:not(.home)) :where(.entry-content) h2 { font-size: 1.4rem; margin-top: 36px; }
}

@media screen and (max-width: 600px) {
    .os-inner-head { padding: 24px 0 6px 0; }
    :where(body.page:not(.home)) :where(.entry-content:has(.os-inner-head)) { padding: 0 20px 32px 20px; }
    :where(body.page:not(.home)) :where(.entry-content) h2 { font-size: 1.25rem; }
    :where(body.page:not(.home)) :where(.entry-content) :where(.wp-block-button__link, .wp-element-button) {
        display: block;
        text-align: center;
    }
}

@media (prefers-reduced-motion: reduce) {
    :where(body.page:not(.home)) :where(.entry-content) :where(a, .wp-element-button) {
        transition: none;
    }
}


/* ==========================================================================
   5. REPLI POUR LES NAVIGATEURS SANS :has()
   Le retrait latéral est conditionné à la présence de notre bloc d'en-tête,
   ce qui suppose le sélecteur :has(). Sur un navigateur qui ne le connaît
   pas, la règle ci-dessus est ignorée : les pages intérieures se
   retrouveraient collées au bord. On rétablit alors un retrait, en
   l'appliquant à l'en-tête plutôt qu'au conteneur — les pages déjà
   traitées n'en portent pas et restent donc intactes.
   ========================================================================== */
@supports not selector(:has(*)) {
    .os-inner-head { padding-left: 60px; padding-right: 60px; }
    .os-inner-head ~ * { padding-left: 60px; padding-right: 60px; }
}