/* Finition publique : fonds distincts, surfaces et trois degrés de profondeur.
   Chargée après les compositions existantes, sans affecter l'administration. */
.site-page {
    --jc-off-white: #E6ECF4;
    --jc-off-white-cool: #DDE5F0;
    --public-border: #C7D3E4;
    --public-shadow-soft: 0 3px 8px rgb(7 22 63 / 6%), 0 14px 32px rgb(7 22 63 / 8%);
    --public-shadow-card: 0 3px 7px rgb(7 22 63 / 7%), 0 18px 40px rgb(7 22 63 / 12%);
    --public-shadow-raised: 0 6px 14px rgb(7 22 63 / 10%), 0 28px 58px rgb(7 22 63 / 17%);
    background: var(--jc-off-white);
}
.site-page .home-about { background: #EDF1F7; }
.site-page .home-services { background: #E0E8F3; }
.site-page .challenges-section { background: #EDF1F7; }
.site-page .home-process { background: #E0E8F3; }
.site-page .reviews-section { background: #DDE5F0; }

.site-page :is(.service-card:not(.service-card-accent), .project-card, .news-card) {
    background: #FFFFFF;
    border-color: var(--public-border);
    box-shadow: var(--public-shadow-card);
}
.site-page :is(.statement-card, .review-card, .ds-feature-card, .ds-value-card, .ds-stat,
    .project-facts, .filter-form, .search-results article, .empty-state) {
    box-shadow: var(--public-shadow-soft);
}
/* Le texte d'un panneau sombre doit rester clair même lorsqu'un CTA suit le
   paragraphe : l'ancienne règle p:last-child ne couvre pas cette composition. */
.site-page .statement-dark > p:not(.eyebrow) { color: #DEE5F3; }
.site-page .statement-dark :is(h2, h3) { color: #FFFFFF; }
.site-page :is(.empty-state, .project-facts, .search-results article) { border-color: var(--public-border); }
.site-page .empty-state { background: #FFFFFF; }
.site-page :is(.contact-form, .quote-form) {
    border-color: var(--public-border);
    box-shadow: var(--public-shadow-card);
}
.site-page :is(.contact-details, .quote-aside, .service-card-accent, .promotion-block) {
    box-shadow: var(--public-shadow-raised);
}
.site-page .process-grid > li {
    background: #FFFFFF;
    border: 1px solid var(--public-border);
    box-shadow: var(--public-shadow-soft);
}
.site-page.page-home .home-process .process-grid > li {
    background: #FFFFFF;
    border-radius: 1.15rem;
    border: 1px solid var(--public-border);
    box-shadow: var(--public-shadow-soft);
}
.site-page .values-section .values-grid { gap: 1rem; }
.site-page .values-section .values-grid > div {
    background: #162B53;
    border: 1px solid rgb(255 255 255 / 22%);
    border-radius: 1rem;
    padding: 1.2rem;
    box-shadow: 0 6px 18px rgb(0 0 0 / 16%);
}
.site-page .reviews-track { padding-block: .5rem 2rem; }

/* Le clavier bénéficie du même relief que la souris. Le transform reste géré
   par les animations existantes, pour ne pas concurrencer les apparitions GSAP. */
.site-page :is(.service-card, .project-card, .news-card):focus-within {
    border-color: #9EAECC;
    box-shadow: var(--public-shadow-raised);
}
.site-page .news-card .card-body { display: flex; flex-direction: column; }
.site-page .news-card .news-card-meta { gap: .55rem .75rem; font-size: .75rem; }
.site-page .news-category { color: var(--jc-blue); font-weight: 700; }
.site-page .news-card .news-card-footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .7rem 1rem;
    margin-top: auto;
    padding-top: 1rem;
    border-top: 1px solid #DCE3EE;
}
.site-page .news-author { display: inline-flex; align-items: center; gap: .55rem; color: #475671; font-size: .73rem; }
.site-page .news-author__initial { display: inline-grid; place-items: center; width: 2rem; height: 2rem; flex: 0 0 auto; border-radius: 50%; background: #E8EDF7; color: var(--jc-blue); font-family: var(--font-display); }
.site-page .news-card .news-card-footer .text-link { font-size: .78rem; }
.site-page .news-card .news-card-footer .text-link > span { width: 1.8rem; height: 1.8rem; flex-basis: 1.8rem; }

@media (hover: hover) and (pointer: fine) {
    .site-page :is(.service-card, .project-card, .news-card):hover {
        border-color: #A8B7D1;
        box-shadow: var(--public-shadow-raised);
    }
}
@media (prefers-reduced-motion: reduce) {
    .site-page :is(.service-card, .project-card, .news-card) { transition: none; }
}
@media print {
    /* Neutraliser également les états hover/focus et les transitions actives. */
    .site-page { background: #FFFFFF; --jc-off-white: #FFFFFF; --jc-off-white-cool: #FFFFFF; }
    .site-page :is(.service-card, .project-card, .news-card, .statement-card, .review-card,
        .ds-feature-card, .ds-value-card, .ds-stat, .project-facts, .filter-form,
        .search-results article, .empty-state, .contact-form, .quote-form, .contact-details,
        .quote-aside, .promotion-block, .process-grid > li, .values-grid > div) {
        box-shadow: none !important;
        transition: none !important;
        animation: none !important;
    }
    .site-page :is(.home-about, .home-services, .challenges-section, .home-process, .reviews-section) { background: #FFFFFF; }
}
