/**
 * Estils generals del tema (complementen theme.json).
 * Capçalera, peu i fitxa servei van en els seus propis fitxers.
 *
 * Nota: el fitxer arrel style.css no s’encola al front (vegeu inc/enqueue-assets.php);
 * les regles globals van aquí.
 */

:root {
	--palamos-color-primary: var(--wp--preset--color--blau-capcalera, #006699);
	--palamos-page-gutter: clamp(1rem, 4.2vw, 1.5rem);
	--palamos-font-family: var(--wp--preset--font-family--poppins, "Poppins", sans-serif);
}

body {
	font-family: var(--palamos-font-family);
}

body :where(button, input, select, textarea) {
	font-family: inherit;
}

/* FSE: el <main> de plantilla sovint porta margin de bloc; zero per enganxar hero/capçalera (p. ex. portada). */
main.wp-block-group {
	margin-top: 0 !important;
	margin-block-start: 0 !important;
	padding-bottom: 0 !important;
	padding-block-end: 0 !important;
}

/* Graella de serveis: sense marge superior (p. ex. just sota el hero a la portada). */
.wp-block-palamos-distributiva-serveis.palamos-distributiva-serveis,
.wp-block-palamos-distributiva-simple.palamos-distributiva-serveis,
.wp-block-palamos-serveis-tematica.palamos-distributiva-serveis,
.palamos-distributiva-serveis {
	margin-top: 0 !important;
	margin-block-start: 0 !important;
}

/* Notícies recents: sense marge superior (l’espaiat ve del padding del bloc). */
.wp-block-palamos-noticies-recents.palamos-noticies-recents,
.palamos-noticies-recents {
	margin-top: 0 !important;
	margin-block-start: 0 !important;
}

body:has(.palamos-hero-carrusel) .wp-block-post-content > .wp-block-palamos-hero-carrusel:first-child + .palamos-distributiva-serveis,
body:has(.palamos-hero-carrusel) .wp-block-post-content > .wp-block-palamos-hero-carrusel:first-child + .wp-block-palamos-distributiva-serveis,
body.palamos-has-hero-main .wp-block-post-content > .wp-block-palamos-hero-carrusel:first-child + .palamos-distributiva-serveis,
body.palamos-has-hero-main .wp-block-post-content > .wp-block-palamos-hero-carrusel:first-child + .wp-block-palamos-distributiva-serveis {
	margin-top: 0 !important;
	margin-block-start: 0 !important;
}

/* Fitxa «servei»: separació superior fixa (la plantilla ja la demanava; la regla anterior la treia). */
body.single-servei main.wp-block-group {
	margin-top: 50px !important;
	margin-block-start: 50px !important;
}

/*
 * Contenidor «wide» compartit (1200px): capçalera, fitxa servei i shell de pàgina.
 * El padding horitzontal segueix el root del tema per alinear header i main.
 */
header .wp-block-group.alignwide.palamos-header-inner,
main .wp-block-group.alignwide.palamos-page-shell,
main .wp-block-group.alignwide.palamos-servei-fitxa {
	box-sizing: border-box;
	width: 100%;
	max-width: var(--wp--style--global--wide-size, 1200px);
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--wp--style--root--padding-left, 0);
	padding-right: var(--wp--style--root--padding-right, 0);
}

/*
 * Anul·la .is-layout-constrained del nucli (content-size 720px) dins pàgines bàsiques.
 * El <main> o el shell no han de quedar limitats a --wp--style--global--content-size.
 */
main.is-layout-constrained > .palamos-page-shell,
main.is-layout-constrained > .alignwide.palamos-page-shell,
main .palamos-page-shell.is-layout-constrained,
main .palamos-page-shell.alignwide {
	max-width: var(--wp--style--global--wide-size, 1200px) !important;
	width: 100% !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

main .palamos-page-shell.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
main .palamos-page-shell > .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
main .palamos-page-shell .palamos-page-capitolera > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
main .palamos-page-shell > .wp-block-post-title,
main .palamos-page-shell .palamos-page-capitolera .wp-block-post-title {
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

main .palamos-page-shell > .wp-block-post-content.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/*
 * Marge superior del <main>:
 * - Sense hero: 50px (com fitxa servei).
 * - Amb hero: 0 (també portada estàtica; abans is_front_page() impedia la classe body).
 * :has() detecta el hero al DOM encara que falli body_class.
 */
body.page:not(:has(.palamos-hero-carrusel)):not(.palamos-has-hero-main) main.wp-block-group,
body.single:not(.single-servei):not(.home):not(:has(.palamos-hero-carrusel)):not(.palamos-has-hero-main) main.wp-block-group {
	margin-top: 50px !important;
	margin-block-start: 50px !important;
}

body:has(.palamos-hero-carrusel) main.wp-block-group,
body.palamos-has-hero-main main.wp-block-group,
body:has(.palamos-hero-carrusel) .wp-site-blocks > main.wp-block-group,
body.palamos-has-hero-main .wp-site-blocks > main.wp-block-group,
body:has(.palamos-hero-carrusel) .wp-site-blocks > header + main,
body.palamos-has-hero-main .wp-site-blocks > header + main {
	margin-top: 0 !important;
	margin-block-start: 0 !important;
}

body:has(.palamos-hero-carrusel) .palamos-page-shell,
body.palamos-has-hero-main .palamos-page-shell {
	padding-top: 0 !important;
}

/*
 * Amb hero: sense marge superior al post-content (.entry-content inclòs).
 * No usar només :first-child: a «page-simple» la capçalera va abans del contingut.
 */
body:has(.palamos-hero-carrusel) main .palamos-page-shell > .wp-block-post-content,
body:has(.palamos-hero-carrusel) main .palamos-page-shell > .entry-content.wp-block-post-content,
body:has(.palamos-hero-carrusel) main .palamos-page-shell .entry-content.wp-block-post-content.is-layout-flow,
body:has(.palamos-hero-carrusel) main .palamos-page-shell .wp-block-post-content-is-layout-flow,
body.palamos-has-hero-main main .palamos-page-shell > .wp-block-post-content,
body.palamos-has-hero-main main .palamos-page-shell .entry-content.wp-block-post-content,
body.palamos-has-hero-carrusel main .palamos-page-shell > .wp-block-post-content,
body.palamos-has-hero-carrusel main .palamos-page-shell .entry-content.wp-block-post-content.is-layout-flow,
body.palamos-has-hero-carrusel main .palamos-page-shell .wp-block-post-content-is-layout-flow {
	margin-top: 0 !important;
	margin-block-start: 0 !important;
	padding-top: 0 !important;
}

/* Sense espai entre capçalera oculta i post-content (plantilla page-simple). */
body:has(.palamos-hero-carrusel) main .palamos-page-shell.is-layout-flow,
body.palamos-has-hero-main main .palamos-page-shell.is-layout-flow,
body.palamos-has-hero-carrusel main .palamos-page-shell.is-layout-flow {
	gap: 0 !important;
	row-gap: 0 !important;
}

body:has(.palamos-hero-carrusel) .wp-block-post-content > .palamos-hero-carrusel:first-child,
body:has(.palamos-hero-carrusel) .wp-block-post-content > .wp-block-palamos-hero-carrusel:first-child,
body.palamos-has-hero-main .wp-block-post-content > .palamos-hero-carrusel:first-child,
body.palamos-has-hero-main .wp-block-post-content > .wp-block-palamos-hero-carrusel:first-child {
	margin-top: 0 !important;
	margin-block-start: 0 !important;
}

/* Portada sense hero: espai al shell. Amb hero: sense padding (abans body.home sempre en posava). */
body.home:not(:has(.palamos-hero-carrusel)):not(.palamos-has-hero-main) main .palamos-page-shell {
	padding-top: var(--wp--preset--spacing--50, 2rem);
}

/* Sense títol de pàgina quan hi ha hero carrusel (portada o qualsevol pàgina/entrada). */
body.home .palamos-page-capitolera,
body:has(.palamos-hero-carrusel) .palamos-page-capitolera,
body.palamos-has-hero-main .palamos-page-capitolera,
body.palamos-has-hero-carrusel .palamos-page-capitolera {
	display: none !important;
}

/* Pàgina bàsica: títol alineat a l’esquera dins el contenidor wide (mateix eix que el logo). */
.palamos-page-capitolera {
	width: 100%;
}

.palamos-page-capitolera > .wp-block-post-title {
	margin: 0 0 var(--wp--preset--spacing--40, 1rem) !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
	width: 100%;
	max-width: none;
	text-align: left;
	font-size: var(--wp--preset--font-size--x-large, 2rem);
	font-weight: 700;
	line-height: 1.2;
	color: var(--palamos-color-primary);
}

/* Contingut de pàgina: ample del shell (1200px), no content-size. */
main .palamos-page-shell > .wp-block-post-content {
	box-sizing: border-box;
	width: 100% !important;
	max-width: none !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

main .palamos-page-shell > .wp-block-post-content > .alignwide {
	max-width: var(--wp--style--global--wide-size, 1200px);
	width: 100%;
	margin-left: auto;
	margin-right: auto;
}

/* Hero / seccions alignfull: ample de pantalla (carrusel). */
body.page main .palamos-page-shell > .wp-block-post-content > .alignfull,
body.page main .palamos-page-shell .wp-block-post-content > .alignfull,
body.single:not(.single-servei) main .palamos-page-shell > .wp-block-post-content > .alignfull,
body.single:not(.single-servei) main .palamos-page-shell .wp-block-post-content > .alignfull {
	width: 100vw !important;
	max-width: 100vw !important;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
}

/*
 * Prosa compartida (pàgines, entrades): mateix cos que la fitxa servei.
 * Vegeu guiaestilo.md.
 */
.palamos-prose {
	font-size: var(--wp--preset--font-size--medium, 1rem);
	line-height: 1.6;
	color: var(--wp--preset--color--text-corporatiu, #4a4a4a);
}

.palamos-prose p {
	margin: 0 0 1rem;
	font-size: inherit;
	line-height: inherit;
	color: inherit;
}

.palamos-prose p:last-child {
	margin-bottom: 0;
}

.palamos-prose ul,
.palamos-prose ol {
	margin: 0 0 1rem;
	padding-left: 1.25rem;
	color: inherit;
}

.palamos-prose h2 {
	margin: 1.5rem 0 0.75rem;
	font-size: var(--wp--preset--font-size--large, 1.5rem);
	font-weight: 600;
	line-height: 1.25;
	color: var(--palamos-color-primary);
}

.palamos-prose h3 {
	margin: 1.25rem 0 0.5rem;
	font-size: 1.125rem;
	font-weight: 600;
	line-height: 1.3;
	color: var(--palamos-color-primary);
}

.palamos-prose a {
	color: var(--wp--preset--color--blau-institucional, #1a4f7a);
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

.palamos-prose a:hover,
.palamos-prose a:focus-visible {
	color: #000;
}

/* Arxiu del CPT servei (/serveis/). */
.palamos-servei-archive > .wp-block-heading {
	margin: 0 0 var(--wp--preset--spacing--60, 2rem);
	font-size: var(--wp--preset--font-size--x-large, 2rem);
	font-weight: 700;
	line-height: 1.2;
	color: var(--palamos-color-primary);
}

.palamos-servei-archive .wp-block-query {
	width: 100%;
}

.palamos-servei-archive__item {
	box-sizing: border-box;
	height: 100%;
	padding: 1.1rem 1.2rem;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--blau-institucional, #1a4f7a) 18%, #fff);
	border-radius: 0.75rem;
	background: #fff;
}

.palamos-servei-archive__item .wp-block-post-title {
	margin: 0 0 0.5rem;
	font-size: 1.125rem;
}

.palamos-servei-archive__item .wp-block-post-title a {
	color: var(--palamos-color-primary);
	text-decoration: none;
}

.palamos-servei-archive__item .wp-block-post-title a:hover {
	color: color-mix(in srgb, var(--palamos-color-primary) 75%, #000);
}

.palamos-servei-archive__item .wp-block-post-excerpt {
	margin: 0;
	font-size: 0.9375rem;
	color: var(--wp--preset--color--text-corporatiu, #4a4a4a);
}

/*
 * Mòbil: marges laterals al contingut (el hero segueix a pantalla completa).
 */
@media (max-width: 781px) {
	header .wp-block-group.alignwide.palamos-header-inner,
	main .wp-block-group.alignwide.palamos-page-shell,
	main .wp-block-group.alignwide.palamos-servei-fitxa,
	main .palamos-servei-archive,
	main .palamos-servei-archive.alignwide {
		padding-left: var(--palamos-page-gutter) !important;
		padding-right: var(--palamos-page-gutter) !important;
		box-sizing: border-box;
	}

	body.page:not(:has(.palamos-hero-carrusel)):not(.palamos-has-hero-main):not(.home) main.wp-block-group,
	body.single:not(.single-servei):not(:has(.palamos-hero-carrusel)):not(.palamos-has-hero-main) main.wp-block-group {
		margin-top: 1.25rem !important;
		margin-block-start: 1.25rem !important;
	}

	/* Blocs de graella / seccions: no enganxar als vores del shell */
	.palamos-serveis-grid-section__header,
	.palamos-serveis-grid-section__footer,
	.palamos-distributiva-serveis__fallback {
		padding-left: 0;
		padding-right: 0;
	}

	/* Separació entre hero i la resta de blocs del contingut (excepte distributiva de serveis). */
	body:has(.palamos-hero-carrusel) .wp-block-post-content > .palamos-hero-carrusel:first-child + *:not(.palamos-distributiva-serveis):not(.wp-block-palamos-distributiva-serveis):not(.palamos-noticies-recents):not(.wp-block-palamos-noticies-recents),
	body:has(.palamos-hero-carrusel) .wp-block-post-content > .wp-block-palamos-hero-carrusel:first-child + *:not(.palamos-distributiva-serveis):not(.wp-block-palamos-distributiva-serveis):not(.palamos-noticies-recents):not(.wp-block-palamos-noticies-recents),
	body.palamos-has-hero-main .wp-block-post-content > .palamos-hero-carrusel:first-child + *:not(.palamos-distributiva-serveis):not(.wp-block-palamos-distributiva-serveis):not(.palamos-noticies-recents):not(.wp-block-palamos-noticies-recents),
	body.palamos-has-hero-main .wp-block-post-content > .wp-block-palamos-hero-carrusel:first-child + *:not(.palamos-distributiva-serveis):not(.wp-block-palamos-distributiva-serveis):not(.palamos-noticies-recents):not(.wp-block-palamos-noticies-recents) {
		margin-top: var(--wp--preset--spacing--50, 1.5rem) !important;
	}

	/* Paràgrafs i blocs del nucli sense marge propi */
	main .palamos-page-shell > .wp-block-post-content > :where(:not(.alignfull):not(.alignwide)) {
		max-width: 100%;
	}
}

/* Hero: breakout 100vw encara amb shell amb gutter */
@media (max-width: 781px) {
	body.page main .palamos-page-shell .wp-block-post-content > .alignfull,
	body.page main .palamos-page-shell > .wp-block-post-content > .alignfull,
	body.single:not(.single-servei) main .palamos-page-shell .wp-block-post-content > .alignfull,
	body.single:not(.single-servei) main .palamos-page-shell > .wp-block-post-content > .alignfull {
		width: 100vw !important;
		max-width: 100vw !important;
		margin-left: calc(50% - 50vw) !important;
		margin-right: calc(50% - 50vw) !important;
	}
}
