/*
   Design system du site public.
   Les composants conservent leurs règles de structure locales, tandis que cette
   feuille centralise les choix visuels communs consommés par tous les thèmes.
*/

.site-shell {
    --theme-secondary: var(--theme-secondary-custom, #1f2937);

    --site-font-body: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --site-font-heading: var(--site-font-body);
    --site-page-background: #f7f8fa;
    --site-surface: #ffffff;
    --site-surface-soft: #f8fafc;
    --site-heading: #172033;
    --site-text: #25324a;
    --site-muted: #64748b;
    --site-border: #dbe2ea;
    --site-border-soft: #edf1f5;
    --site-border-strong: #cbd5e1;
    --site-card-radius: var(--site-radius, 0.5rem);
    --site-control-radius: 0.58rem;
    --site-card-shadow: 0 0.4rem 1.35rem rgba(15, 23, 42, 0.055);
    --site-card-shadow-hover: 0 0.75rem 1.8rem rgba(15, 23, 42, 0.1);
    --site-card-hover-transform: translateY(-2px);
    --site-heading-weight: 760;
    --site-heading-letter-spacing: -0.018em;
    --site-module-icon-radius: 0.82rem;
    --site-button-radius: 0.55rem;
    --site-hero-radius: 0.8rem;
    --site-content-leading: 1.7;

    font-family: var(--site-font-body);
    background: var(--site-page-background);
    color: var(--site-text);
}

.site-shell .site-main:not(.site-main--accueil):not(.site-main--presentation) {
    background: var(--site-page-background);
}

.site-shell :where(
    .module-header__copy h2,
    .page-public__heading h1,
    .presentation-public__heading h1,
    .presentation-public__html--simple h1,
    .presentation-public__html--simple h2,
    .presentation-public__html--simple h3,
    .presentation-public__html--simple h4,
    .page-public__html h1,
    .page-public__html h2,
    .page-public__html h3,
    .page-public__html h4,
    .agenda-public__heading h1,
    .publications-public__heading h1,
    .publications-public__year-group > h2,
    .publication-public-card h3,
    .public-article__header h1,
    .public-article__content h2,
    .public-article__content h3,
    .public-article__content h4,
    .conseil-seance-card h2,
    .document-public-card h3,
    .contact-public__card-heading h2,
    .contact-public__form-heading h2,
    .association-card__name,
    .numero-utile-card h3,
    .agenda-card__content h2,
    .site-search-page__heading h1,
    .site-search-result h2,
    .home-article-card h3,
    .home-agenda-datecard h3,
    .home-agenda-poster h3
) {
    color: var(--site-heading);
    font-family: var(--site-font-heading);
    letter-spacing: var(--site-heading-letter-spacing);
}

.site-shell :where(
    .page-public__heading p,
    .publications-public__heading p,
    .publications-public__state,
    .publication-public-card__meta,
    .public-article__header time,
    .association-card__identity small,
    .agenda-card__location,
    .agenda-card__contact,
    .contact-public__form-heading p,
    .site-search-page__heading p,
    .site-search-result__body p
) {
    color: var(--site-muted);
}

.site-shell :where(
    .page-public__html,
    .presentation-public__html--simple,
    .public-article__content,
    .association-card__section p,
    .association-card__richtext,
    .association-card__contact-row,
    .numero-utile-card__description,
    .agenda-card__description
) {
    color: var(--site-text);
}

.site-shell :where(
    .home-article-card,
    .home-agenda-datecard,
    .home-agenda-poster,
    .agenda-card,
    .numero-utile-card,
    .association-card,
    .conseil-seance-card,
    .document-public-card,
    .publication-public-card,
    .site-search-result,
    .contact-public__coordinates,
    .contact-public__form-card,
    .contact-public__state,
    .public-article,
    .public-article-state,
    .publications-public__filters,
    .publications-public__empty-card,
    .publications-public__empty-filter,
    .agenda-calendar-shell,
    .agenda-month-nav__side a,
    .agenda-month-nav__side button,
    .agenda-month-nav__current
) {
    border-color: var(--site-border);
    border-radius: var(--site-card-radius);
    background: var(--site-surface);
    box-shadow: var(--site-card-shadow);
}

.site-shell :where(
    .home-article-card,
    .home-agenda-datecard,
    .home-agenda-poster,
    .numero-utile-card,
    .association-card,
    .document-public-card,
    .publication-public-card,
    .site-search-result,
    .agenda-month-nav__side a
):hover {
    border-color: color-mix(in srgb, var(--theme-primary) 42%, var(--site-border));
    box-shadow: var(--site-card-shadow-hover);
    transform: var(--site-card-hover-transform);
}

.site-shell :where(
    .module-header__icon,
    .numero-utile-card__icon,
    .association-card__logo,
    .document-public-card__icon,
    .site-search-result__icon,
    .conseil-seance-card__date
) {
    border-color: color-mix(in srgb, var(--theme-primary) 18%, var(--site-border));
    border-radius: var(--site-module-icon-radius);
    background: color-mix(in srgb, var(--theme-primary) 7%, var(--site-surface));
    color: var(--theme-primary);
}

.site-shell .module-header__copy h2 {
    color: color-mix(in srgb, var(--theme-primary) 88%, var(--site-heading));
    font-weight: var(--site-heading-weight);
}

.site-shell .module-header__copy p {
    color: var(--site-muted);
}

.site-shell .module-header__accent {
    background: var(--site-border);
}

.site-shell .module-header__accent::before {
    background: var(--theme-primary);
}

.site-shell :where(
    .page-public__heading > span,
    .presentation-public__heading > span,
    .agenda-public__eyebrow,
    .publications-public__eyebrow,
    .publication-public-card__type,
    .conseil-seance-card__eyebrow,
    .document-public-card__eyebrow,
    .contact-public__eyebrow,
    .site-search-result__type
) {
    color: var(--theme-primary);
}

.site-shell :where(
    .page-public__html,
    .presentation-public__html--simple,
    .public-article__content
) {
    line-height: var(--site-content-leading);
}

.site-shell :where(
    .page-public__html blockquote,
    .presentation-public__html--simple blockquote,
    .public-article__content blockquote
) {
    border-left-color: var(--theme-primary);
    background: color-mix(in srgb, var(--theme-primary) 7%, var(--site-surface));
}

.site-shell :where(
    .page-public__html th,
    .page-public__html td,
    .presentation-public__html--simple th,
    .presentation-public__html--simple td,
    .article-table__cell
) {
    border-color: var(--site-border);
}

.site-shell :where(
    .document-public-card__action,
    .publications-public__year-button,
    .publication-public-card__download,
    .site-search-result__action,
    .page-public__admin-actions a,
    .public-article__actions a,
    .public-article__actions button
) {
    border-color: var(--site-border-strong);
    border-radius: var(--site-button-radius);
    background: var(--site-surface);
}

.site-shell :where(
    .document-public-card__action--primary,
    .publication-public-card__view,
    .contact-form__actions button,
    .agenda-card__action a,
    .article-button
) {
    border-radius: var(--site-button-radius);
    background: var(--theme-primary);
    color: var(--theme-primary-contrast);
}

.site-shell :where(
    .contact-form__field input,
    .contact-form__field textarea,
    .publications-public__type-filter select,
    .site-search-page__form input
) {
    border-color: var(--site-border-strong);
    border-radius: var(--site-control-radius);
    background: var(--site-surface);
    color: var(--site-heading);
}

.site-shell :where(
    .contact-form__privacy,
    .contact-form__state,
    .contact-form__unavailable,
    .public-article__content .article-document,
    .article-card,
    .article-table__row--total .article-table__cell
) {
    background: var(--site-surface-soft);
}

.site-shell .home-module-hero {
    border-radius: var(--site-hero-radius);
    font-family: var(--site-font-body);
}

.site-shell .home-module-hero h1 {
    font-family: var(--site-font-heading);
}

.site-shell .home-module-hero__button {
    border-radius: var(--site-button-radius);
}

.site-shell .site-footer {
    background: var(--theme-secondary);
}

@media (prefers-reduced-motion: reduce) {
    .site-shell :where(
        .home-article-card,
        .home-agenda-datecard,
        .home-agenda-poster,
        .numero-utile-card,
        .association-card,
        .document-public-card,
        .publication-public-card,
        .site-search-result,
        .agenda-month-nav__side a
    ) {
        transition: none;
    }
}
