/* ==========================================================================
   Grille commune à tout le site (mesurée sur anry.io) :
   marge latérale 20 / 32 / 48 px, contenu 1440 px max, sections 56 / 64 / 80 px,
   colonnes séparées de 96 px, cartes de 24 px. Tout s'aligne sur les mêmes bords.
   ========================================================================== */

/* Header : mêmes bords que le contenu */
.ccn-ann-track { }
.ccn-tb-in, .ccn-hdr-in { max-width: calc(var(--content-max) + 2 * var(--gutter)); padding-inline: var(--gutter); box-sizing: border-box; }

/* Pages Astra (boutique, produit, panier, commande, compte, blog, 404) : même conteneur */
body:not(.home):not(.ccn-lot):not(.single-post) .site-content > .ast-container {
	max-width: calc(var(--content-max) + 2 * var(--gutter));
	padding-inline: var(--gutter);
	box-sizing: border-box;
}
body:not(.home):not(.ccn-lot):not(.single-post) #primary { padding-block: var(--sec-pad); margin: 0; }

/* Sections : un seul rythme vertical, un seul alignement horizontal */
.ccn-band { padding-block: var(--sec-pad); padding-inline: max(var(--gutter), calc((100% - var(--content-max)) / 2)); }
.ccn-page-hd { padding-inline: max(var(--gutter), calc((100% - var(--content-max)) / 2)); padding-block: var(--s-7) var(--sec-pad); }
.ccn-sec-in, .ccn-reviews-in, .ccn-local-in, .ccn-fb, .ccn-hs-head, .ccn-pro, .ccn-offers-grid, .ccn-duo-in { max-width: var(--content-max); margin-inline: auto; }
.ccn-hs-head { max-width: calc(var(--content-max) + 2 * var(--gutter)); padding-inline: var(--gutter); }
.ccn-hs-track { padding-inline: max(var(--gutter), calc((100vw - var(--content-max)) / 2)); gap: var(--grid-gap); }
.ccn-hero-shell, .ccn-facts-bar { padding-inline: var(--gutter); }
.ccn-hero { max-width: var(--content-max); }

/* Colonnes : 96 px sur ordinateur */
.ccn-hd, .ccn-split, .ccn-explore, .ccn-2col, .ccn-offers-grid, .ccn-duo-in, .ccn-local-in, .ccn-hero-split, .ccn-shop-body { column-gap: var(--col-gap); }

/* Grilles de cartes : 24 px */
.ccn-grid-3, .ccn-reviews-grid, .ccn-prices, .ccn-bigs, .ccn-stats, .ccn-contact-cards, .ccn-gal, .ccn-lcards, .ccn-feats, .ccn-keyfacts, .ccn-timeline, .ccn-steps { column-gap: var(--grid-gap); }

/* Cartes : marge intérieure commune */
.ccn-price, .ccn-review, .ccn-sheet, .ccn-feat, .ccn-cardc, body .entry-content a.ccn-contact-card { padding: 32px; }
.ccn-offer-body { padding: 32px; }
.ccn-big-txt { padding: 32px 32px 24px; }
.ccn-panel, .ccn-ex-stage, .ccn-split-pic, .ccn-hd-media { padding: 48px; }
.ccn-final-box { padding: 48px; }
@media (max-width: 1023px) {
	.ccn-price, .ccn-review, .ccn-sheet, .ccn-feat, .ccn-cardc, body .entry-content a.ccn-contact-card, .ccn-offer-body { padding: 24px; }
	.ccn-big-txt { padding: 24px 24px 20px; }
	.ccn-panel, .ccn-ex-stage, .ccn-split-pic, .ccn-hd-media, .ccn-final-box { padding: 20px; }
}

/* Pied de page Astra : mêmes bords en attendant le vrai pied de page */
.site-footer .ast-container, .site-footer .site-primary-footer-wrap, .site-below-footer-wrap .ast-builder-grid-row { max-width: calc(var(--content-max) + 2 * var(--gutter)); padding-inline: var(--gutter); margin-inline: auto; box-sizing: border-box; }

/* Priorités face à Astra et aux marges globales de WordPress */
html body .entry-content > .ccn-page-hd, html body .entry-content > .ccn-band { padding-left: max(var(--gutter), calc((100% - var(--content-max)) / 2)); padding-right: max(var(--gutter), calc((100% - var(--content-max)) / 2)); }
html body.single-post .site-content > .ast-container { max-width: calc(760px + 2 * var(--gutter)); padding-left: var(--gutter); padding-right: var(--gutter); }
html body:not(.home):not(.ccn-lot):not(.single-post) .site-content > .ast-container { padding-left: var(--gutter); padding-right: var(--gutter); }

/* Offres phares épinglées : espace du haut commun avant le titre */
@media (min-width: 1024px) {
	.ccn-offers.is-pinned { padding-top: var(--sec-pad); }
}
/* Articles : marge latérale commune (Astra impose sinon ~8 px sur mobile) */
html body.single-post .site-content > .ast-container { padding-left: var(--gutter) !important; padding-right: var(--gutter) !important; }

/* Le cadre : marges normales ; il recouvre les offres sur sa propre hauteur */
@media (min-width: 1024px) {
	html body .ccn-offers.is-pinned { height: calc(100vh + var(--n, 5) * 45vh + var(--ccn-cover-h, 100vh)); }
	html body .ccn-offers.is-pinned + .ccn-duo { min-height: 0; display: block; margin-top: calc(-1 * var(--ccn-cover-h, 100vh)); }
	/* Services : marges normales, seul le bloc titre + cartes se fige */
	html body .ccn-hs.is-pinned { padding-block: var(--sec-pad); box-sizing: border-box; }
	html body .ccn-hs.is-pinned .ccn-hs-pin { position: sticky; height: auto; padding-top: 0; display: block; }
}

/* Astra impose 48 px (« ast-default-block-padding ») aux groupes de blocs : nos sections gardent la marge commune */
html body .entry-content > .wp-block-group.ccn-band { padding-top: var(--sec-pad); padding-bottom: var(--sec-pad); }
html body .entry-content > .wp-block-group.ccn-page-hd { padding-top: var(--s-7); padding-bottom: var(--sec-pad); }
html body .entry-content > .wp-block-group.ccn-final-band { padding-top: 0; }
/* Aucun espace résiduel sous le dernier élément d'une section */
.ccn-band .ccn-sec-in > :last-child, .ccn-band .ccn-sec-in > :last-child > :last-child, .ccn-2col-body > :last-child, .ccn-prose > :last-child { margin-bottom: 0; }

/* Derniers éléments de colonnes et d'encadrés : jamais de marge résiduelle */
html body .ccn-final-box { margin-top: 0; }
:is(.ccn-local-txt, .ccn-duo-txt, .ccn-split-txt, .ccn-hd-r, .ccn-hd-l, .ccn-pro, .ccn-center-block, .ccn-2col-body, .ccn-prose, .ccn-reviews-head) > :last-child { margin-bottom: 0; }
body .entry-content :is(ul.ccn-checks, ul.ccn-dots) li:last-child { margin-bottom: 0; }

/* Services : zone des cartes pleine largeur (sinon le défilement s'arrête avant la dernière carte) */
html body .ccn-hs { padding-inline: 0; }
html body .ccn-hs .ccn-hs-pin { max-width: none; width: 100%; }
.ccn-hs-card, .ccn-hs-card:hover, .ccn-hs-card:focus { color: var(--ink); text-decoration: none; }
.ccn-hs-card:hover .ccn-hs-title { text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 4px; }
