/* ==========================================================================
   Terra — foglio di stile principale
   1. Token          5. Hero
   2. Reset / base   6. Sezioni home
   3. Utility        7. Footer
   4. Header         8. Pagine interne + WooCommerce
   9. Responsive
   ========================================================================== */

/* 1. Token ---------------------------------------------------------------- */
:root {
	--cream: #f7f5f1;
	--cream-2: #eeeae3;
	--cream-3: #f1eee7;
	--card: #faf8f4;
	--ink: #292923;
	--ink-2: #56544c;
	--muted: #8c8981;
	--muted-2: #a6a29a;
	--olive: #3f4533;
	--olive-dark: #343a28;
	--olive-deep: #303723;
	--btn-dark: #3a3930;
	--ink-btn: #31332a;
	--line: #e3ded5;
	--line-2: #eae5dd;

	--serif: "Cormorant Garamond", "Iowan Old Style", Garamond, Georgia, serif;
	--sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

	--container: 1140px;
	--container-wide: 1316px;
	--gutter: 24px;
	--gap: 24px;
	--radius: 10px;
	--radius-lg: 14px;

	--shadow-sm: 0 1px 2px rgba(41, 41, 35, .04), 0 6px 18px rgba(41, 41, 35, .05);
	--shadow-md: 0 2px 6px rgba(41, 41, 35, .06), 0 14px 34px rgba(41, 41, 35, .09);
}

/* 2. Reset / base --------------------------------------------------------- */
*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body {
	margin: 0;
	background: var(--cream);
	color: var(--ink);
	font-family: var(--sans);
	font-size: 14px;
	font-weight: 400;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4 {
	margin: 0;
	font-family: var(--serif);
	font-weight: 400;
	letter-spacing: -.005em;
	color: var(--ink);
}

p {
	margin: 0;
}

a {
	color: inherit;
	text-decoration: none;
}

img {
	max-width: 100%;
	height: auto;
	display: block;
}

ul, ol {
	margin: 0;
	padding: 0;
	list-style: none;
}

button {
	font: inherit;
	color: inherit;
	background: none;
	border: 0;
	padding: 0;
	cursor: pointer;
}

input,
select,
textarea {
	font: inherit;
	color: inherit;
}

svg {
	display: block;
}

:focus-visible {
	outline: 2px solid var(--olive);
	outline-offset: 3px;
}

/* 3. Utility -------------------------------------------------------------- */
.container {
	width: 100%;
	max-width: calc(var(--container) + var(--gutter) * 2);
	margin-inline: auto;
	padding-inline: var(--gutter);
}

/* Il catalogo usa una griglia più larga (sidebar + 3 colonne). */
.container--wide {
	max-width: calc(var(--container-wide) + var(--gutter) * 2);
}

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.skip-link:focus {
	position: fixed;
	top: 12px;
	left: 12px;
	z-index: 999;
	width: auto;
	height: auto;
	clip: auto;
	padding: 10px 16px;
	background: var(--ink);
	color: #fff;
	border-radius: 999px;
}

.media-placeholder {
	position: absolute;
	inset: 0;
	background:
		radial-gradient(120% 90% at 70% 15%, #efe9de 0%, transparent 60%),
		linear-gradient(160deg, #e6e0d4 0%, #d9d2c3 55%, #cfc7b6 100%);
}

.media-placeholder--warm {
	position: absolute;
	inset: 0;
	background:
		radial-gradient(110% 80% at 30% 20%, #e8dfcd 0%, transparent 62%),
		linear-gradient(150deg, #cdc3ae 0%, #8f8672 60%, #5f5949 100%);
}

.eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	font-size: 10.5px;
	font-weight: 500;
	letter-spacing: .17em;
	text-transform: uppercase;
	color: var(--muted-2);
}

.eyebrow .terra-leaf {
	color: #a9a893;
}

.eyebrow--light {
	color: rgba(241, 238, 229, .68);
}

.eyebrow--light .terra-leaf {
	color: rgba(241, 238, 229, .7);
}

.eyebrow__rule {
	display: block;
	width: 16px;
	height: 1px;
	background: currentColor;
	opacity: .7;
}

/* Bottoni */
.btn {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	height: 48px;
	padding: 0 8px 0 26px;
	border-radius: 999px;
	font-size: 13px;
	font-weight: 500;
	letter-spacing: .005em;
	white-space: nowrap;
	transition: background-color .25s ease, color .25s ease, border-color .25s ease, transform .25s ease;
}

.btn--dark {
	background: var(--btn-dark);
	color: #f4f1ea;
}

.btn--dark:hover {
	background: #2e2d26;
}

.btn--bare {
	padding: 0 6px 0 14px;
	color: var(--ink);
}

.btn--bare:hover {
	color: var(--olive);
}

.btn--green {
	background: var(--olive);
	color: #f4f1ea;
	padding: 0 30px;
	justify-content: center;
}

.btn--green:hover {
	background: var(--olive-dark);
}

.btn--ink {
	background: var(--ink-btn);
	color: #f4f1ea;
	padding: 0 30px;
	justify-content: center;
}

.btn--ink:hover {
	background: #24261f;
}

/* Bottone chiaro: l'unico leggibile sulle bande verde scuro. */
.btn--cream {
	background: var(--cream);
	color: var(--ink);
	padding: 0 30px;
	justify-content: center;
}

.btn--cream:hover {
	background: #fff;
	color: var(--olive-dark);
}

.btn--outline-light {
	padding: 0 28px;
	height: 44px;
	border: 1px solid rgba(244, 241, 233, .45);
	color: #f4f1ea;
}

.btn--outline-light:hover {
	background: rgba(244, 241, 233, .12);
	border-color: rgba(244, 241, 233, .7);
}

.btn--sm {
	height: 42px;
	font-size: 12.5px;
}

.btn__circle {
	display: grid;
	place-items: center;
	width: 32px;
	height: 32px;
	border-radius: 999px;
	background: #f0ece4;
	color: var(--btn-dark);
	flex: none;
}

.btn__circle--light {
	width: 34px;
	height: 34px;
	background: #fff;
	box-shadow: var(--shadow-sm);
	color: var(--ink);
}

.btn--bare:hover .btn__circle--light {
	transform: translateX(2px);
}

.link-arrow {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	font-size: 12.5px;
	font-weight: 500;
	color: var(--ink);
}

.link-arrow .terra-icon {
	transition: transform .25s ease;
}

.link-arrow:hover .terra-icon {
	transform: translateX(3px);
}

.link-arrow--sm {
	font-size: 11.5px;
	color: var(--ink-2);
}

/* 4. Header --------------------------------------------------------------- */
.site-header {
	position: absolute;
	inset: 0 0 auto;
	z-index: 40;
	padding-top: 26px;
}

.topbar__inner {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 20px;
	width: 100%;
	max-width: calc(1340px + var(--gutter) * 2);
	margin-inline: auto;
	padding-inline: 34px;
}

.topbar__note {
	font-size: 11.5px;
	letter-spacing: .01em;
	color: var(--ink-2);
}

.brand {
	display: inline-flex;
	align-items: flex-start;
	gap: 5px;
	justify-self: center;
}

.brand__word {
	font-family: var(--serif);
	font-size: clamp(19px, 1.75vw, 25px);
	font-weight: 400;
	line-height: 1;
	letter-spacing: -.004em;
	color: var(--ink);
	white-space: nowrap;
}

.brand .terra-leaf {
	color: #7d8a63;
	margin-top: 2px;
}

.topbar__actions {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 16px;
}

.icon-btn {
	position: relative;
	display: grid;
	place-items: center;
	width: 30px;
	height: 30px;
	border-radius: 999px;
	color: var(--ink);
	transition: color .2s ease, background-color .2s ease;
}

.icon-btn:hover {
	color: var(--olive);
}

.icon-btn__badge {
	position: absolute;
	top: -3px;
	right: -4px;
	min-width: 15px;
	height: 15px;
	padding: 0 4px;
	border-radius: 999px;
	background: var(--olive);
	color: #f4f1ea;
	font-size: 9px;
	font-weight: 600;
	line-height: 15px;
	text-align: center;
}

.primary-nav {
	margin-top: 52px;
}

.primary-nav__list {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 34px;
}

.primary-nav__list a {
	position: relative;
	display: inline-block;
	padding-bottom: 3px;
	font-size: 13px;
	font-weight: 400;
	letter-spacing: .015em;
	color: var(--ink);
}

.primary-nav__list a::after {
	content: "";
	position: absolute;
	left: 0;
	right: 100%;
	bottom: 0;
	height: 1px;
	background: currentColor;
	transition: right .3s ease;
}

.primary-nav__list a:hover::after {
	right: 0;
}

.nav-toggle {
	display: none;
	width: 30px;
	height: 30px;
	place-items: center;
	gap: 5px;
	flex-direction: column;
}

.nav-toggle span {
	display: block;
	width: 18px;
	height: 1.4px;
	background: var(--ink);
	transition: transform .25s ease, opacity .25s ease;
}

.header-search {
	margin-top: 16px;
	border-top: 1px solid var(--line-2);
	background: rgba(247, 245, 241, .96);
	backdrop-filter: blur(6px);
}

.header-search__inner {
	max-width: calc(var(--container) + var(--gutter) * 2);
	margin-inline: auto;
	padding: 16px var(--gutter);
}

.header-search__form {
	display: flex;
	align-items: center;
	gap: 12px;
}

.header-search__form input[type="search"] {
	flex: 1;
	height: 42px;
	padding: 0 6px;
	border: 0;
	border-bottom: 1px solid var(--line);
	background: transparent;
	font-size: 14px;
}

.header-search__form input[type="search"]:focus {
	outline: none;
	border-bottom-color: var(--olive);
}

/* Header su pagine interne: sfondo pieno */
body:not(.terra-home) .site-header {
	position: relative;
	background: var(--cream);
	padding-bottom: 16px;
	border-bottom: 1px solid var(--line-2);
}

.site-header.is-stuck {
	position: fixed;
	top: 0;
	background: rgba(247, 245, 241, .94);
	backdrop-filter: blur(10px);
	padding-block: 14px 10px;
	box-shadow: 0 1px 0 rgba(41, 41, 35, .06);
	animation: terra-drop .35s ease both;
}

@keyframes terra-drop {
	from { transform: translateY(-100%); }
	to   { transform: translateY(0); }
}

/* 5. Hero ----------------------------------------------------------------- */
.hero {
	position: relative;
	display: flex;
	align-items: center;
	min-height: clamp(600px, 76vh, 830px);
	padding: 190px 0 150px;
	background: var(--cream-2);
	overflow: hidden;
}

.hero__media {
	position: absolute;
	inset: 0 0 0 auto;
	width: 61%;
	background-color: #e5e0d6;
	background-position: center right;
	background-size: cover;
	background-repeat: no-repeat;
}

.hero__media:not([style]) {
	background-image:
		radial-gradient(80% 70% at 62% 28%, #f2ece0 0%, transparent 58%),
		linear-gradient(155deg, #e9e3d6 0%, #d8d2c2 48%, #b9b6a2 100%);
}

.hero__fade {
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, var(--cream-2) 0%, rgba(238, 234, 227, .92) 16%, rgba(238, 234, 227, .35) 38%, rgba(238, 234, 227, 0) 62%);
}

.hero__inner {
	position: relative;
	z-index: 2;
}

.hero__content {
	max-width: 470px;
	margin-left: 57px;
}

.hero__title {
	font-size: clamp(42px, 5vw, 72px);
	line-height: 1.13;
	letter-spacing: -.012em;
}

.hero__lede {
	margin-top: 26px;
	max-width: 330px;
	font-size: 13.5px;
	line-height: 1.78;
	color: var(--ink-2);
}

.hero__actions {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-top: 34px;
	flex-wrap: wrap;
}

.hero__counter {
	position: absolute;
	left: 34px;
	top: 50%;
	transform: translateY(-50%);
	z-index: 3;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	font-size: 10px;
	letter-spacing: .12em;
	color: var(--muted);
}

.hero__counter-current {
	color: var(--ink);
}

.hero__counter-rule {
	width: 1px;
	height: 54px;
	background: var(--muted-2);
	opacity: .6;
}

.scroll-cue {
	position: absolute;
	left: 50%;
	bottom: 30px;
	transform: translateX(-50%);
	z-index: 3;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
}

.scroll-cue__pill {
	display: grid;
	place-items: center;
	width: 30px;
	height: 44px;
	border-radius: 999px;
	background: #fff;
	color: var(--ink);
	box-shadow: var(--shadow-sm);
	transition: transform .25s ease;
}

.scroll-cue:hover .scroll-cue__pill {
	transform: translateY(3px);
}

.scroll-cue__label {
	font-size: 9.5px;
	font-weight: 500;
	letter-spacing: .2em;
	text-transform: uppercase;
	color: var(--ink-2);
}

/* 6. Sezioni home --------------------------------------------------------- */
.section--selection {
	padding-top: 96px;
}

.section--tight,
.section--collections,
.section--newsletter {
	margin-top: 48px;
}

.section--collections {
	margin-top: 58px;
}

.section--newsletter {
	padding-bottom: 8px;
}

.section__head {
	display: grid;
	grid-template-columns: 1fr 400px;
	gap: 48px;
}

.section__head--baseline {
	grid-template-columns: 1fr auto;
	align-items: flex-end;
}

/* Nel mockup eyebrow e titolo sono rientrati rispetto alla griglia delle card. */
.section__head-left {
	padding-left: 52px;
}

.section__title {
	margin-top: 10px;
	font-size: clamp(30px, 3.2vw, 46px);
	line-height: 1.17;
}

.section__title--sm {
	font-size: clamp(28px, 2.7vw, 38px);
}

.section__head-right {
	padding-top: 36px;
}

.section__text {
	max-width: 330px;
	font-size: 13px;
	line-height: 1.8;
	color: var(--ink-2);
}

.section__head-right .link-arrow {
	margin-top: 18px;
}

/* Carosello prodotti */
.carousel {
	position: relative;
	margin-top: 52px;
}

.carousel__track {
	display: flex;
	gap: var(--gap);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	padding-bottom: 4px;
}

.carousel__track::-webkit-scrollbar {
	display: none;
}

.carousel__nav {
	position: absolute;
	top: 40%;
	z-index: 5;
	display: grid;
	place-items: center;
	width: 46px;
	height: 46px;
	border-radius: 999px;
	background: #fff;
	color: var(--ink);
	box-shadow: var(--shadow-md);
	transform: translateY(-50%);
	transition: background-color .2s ease, color .2s ease;
}

.carousel__nav:hover {
	background: var(--ink);
	color: #f4f1ea;
}

.carousel__nav--prev {
	left: max(10px, calc(50% - 617px));
}

.carousel__nav--next {
	right: max(10px, calc(50% - 617px));
}

.product-card {
	position: relative;
	flex: 0 0 calc((100% - var(--gap) * 2) / 3);
	scroll-snap-align: start;
	background: var(--card);
	border-radius: var(--radius);
	overflow: hidden;
	box-shadow: 0 1px 2px rgba(41, 41, 35, .03);
	transition: box-shadow .3s ease, transform .3s ease;
}

.product-card:hover {
	box-shadow: var(--shadow-md);
	transform: translateY(-3px);
}

.product-card__media {
	position: relative;
	aspect-ratio: 5 / 6;
	overflow: hidden;
	background: var(--cream-2);
}

.product-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .6s ease;
}

.product-card:hover .product-card__media img {
	transform: scale(1.035);
}

.product-card__badge {
	position: absolute;
	top: 14px;
	right: 14px;
	padding: 5px 13px;
	border-radius: 999px;
	background: var(--olive);
	color: #f4f1ea;
	font-size: 10px;
	font-weight: 500;
	letter-spacing: .02em;
}

.product-card__body {
	padding: 18px 18px 20px;
}

.product-card__title {
	font-family: var(--sans);
	font-size: 14.5px;
	font-weight: 500;
	line-height: 1.4;
	letter-spacing: 0;
}

.product-card__meta {
	margin-top: 5px;
	font-size: 11.5px;
	color: var(--muted);
	/* Una riga sola: con i dati reali le descrizioni hanno lunghezze molto
	   diverse e le card della stessa riga perderebbero l'allineamento. */
	display: -webkit-box;
	-webkit-line-clamp: 1;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.product-card__foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	/* Il tondo "+" e fuori dal link della card e sta qui sopra in assoluto:
	   lo spazio a destra glielo riserva il padding. */
	min-height: 30px;
	padding-right: 40px;
	margin-top: 18px;
}

.product-card__price {
	font-size: 14px;
	font-weight: 600;
	letter-spacing: -.01em;
}

.product-card__price--muted {
	font-size: 12.5px;
	font-weight: 500;
	color: var(--muted);
}

.product-card__price del {
	margin-right: 6px;
	color: var(--muted-2);
	font-weight: 400;
}

.product-card__add {
	position: absolute;
	right: 18px;
	bottom: 20px;
	z-index: 2;
	display: grid;
	place-items: center;
	width: 30px;
	height: 30px;
	border-radius: 999px;
	background: var(--cream-3);
	color: var(--ink);
	transition: background-color .2s ease, color .2s ease, transform .2s ease;
}

.product-card:hover .product-card__add,
.product-card__add:focus-visible {
	background: var(--ink);
	color: #f4f1ea;
}

.product-card__add:hover {
	background: var(--olive);
	color: #f4f1ea;
	transform: scale(1.06);
}

/* Stato "aggiunto" gestito da WooCommerce sul pulsante AJAX. */
.product-card__add.loading {
	opacity: .5;
	pointer-events: none;
}

.product-card__add.added {
	background: var(--olive);
	color: #f4f1ea;
}

/* WooCommerce inserisce da solo il link "vedi la prenotazione" dopo il
   pulsante: nella card diventa una riga di conferma sotto il prezzo. */
.product-card .added_to_cart {
	position: absolute;
	right: 18px;
	bottom: 4px;
	font-size: 10.5px;
	color: var(--olive);
	text-decoration: underline;
	text-underline-offset: 2px;
}

/* Pulsanti express (Apple Pay / Google Pay / PayPal): si disegnano da soli sulla
   scheda prodotto, fuori dal flusso "aggiungi al carrello", quindi il filtro sui
   gateway in cassa non li ferma. Finora li copriva YITH Catalog Mode: la rete di
   sicurezza va tenuta anche senza quel plugin, perche qui non si incassa nulla. */
.terra-booking-mode .ppc-button-wrapper,
.terra-booking-mode .wc-ppcp-paylater-msg__container,
.terra-booking-mode .wcpay-payment-request-wrapper,
.terra-booking-mode #wcpay-express-checkout-element,
.terra-booking-mode .wcpay-express-checkout-wrapper,
.terra-booking-mode .wc-block-components-express-payment,
.terra-booking-mode .wc-block-components-express-payment-continue-rule {
	display: none !important;
}

.terra-catalog-mode .product-card__add {
	display: none;
}

/* Bande split (sostenibilita / storia) */
.split {
	position: relative;
	display: grid;
	grid-template-columns: 44% 56%;
	border-radius: var(--radius-lg);
	overflow: hidden;
	min-height: 310px;
}

.split--green {
	background: var(--olive);
}

.split__panel {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	padding: 46px 46px 46px 56px;
}

.split__title {
	margin-top: 18px;
	font-size: clamp(26px, 2.5vw, 36px);
	line-height: 1.22;
	color: #f4f1ea;
}

.split__title--dark {
	color: var(--ink);
}

.split__text {
	margin-top: 14px;
	max-width: 340px;
	font-size: 12.5px;
	line-height: 1.7;
	color: rgba(244, 241, 233, .72);
}

.split__text--dark {
	color: var(--ink-2);
}

.split__panel .btn,
.split__panel .link-arrow {
	margin-top: 26px;
}

.split__media {
	position: relative;
	background-color: #ded8cb;
	background-position: center;
	background-size: cover;
	background-repeat: no-repeat;
}

.split__media:not([style]) {
	background-image:
		radial-gradient(90% 80% at 55% 30%, #efe9dd 0%, transparent 60%),
		linear-gradient(140deg, #e4ddce 0%, #cfc8b6 55%, #b3ac98 100%);
}

.split__media-fade {
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, var(--olive) 0%, rgba(71, 86, 58, .5) 9%, rgba(71, 86, 58, 0) 26%);
}

.split--story {
	grid-template-columns: 42% 58%;
	background: #f1ede6;
}

.split__media--story:not([style]) {
	background-image:
		radial-gradient(70% 90% at 60% 40%, #cfc8b6 0%, transparent 62%),
		linear-gradient(120deg, #efeae1 0%, #cec7b5 58%, #6f6a59 100%);
}

/* La foto sfuma verso il pannello di testo, non verso il verde. */
.split__media-fade--story {
	background: linear-gradient(90deg, #f1ede6 0%, rgba(241, 237, 230, .72) 14%, rgba(241, 237, 230, .2) 30%, rgba(241, 237, 230, 0) 46%);
}

.split__panel--light {
	position: relative;
	z-index: 2;
	padding-block: 32px;
}

/* Collezioni */
.collection-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--gap);
	margin-top: 34px;
}

.collection-card {
	position: relative;
	border-radius: var(--radius);
	overflow: hidden;
}

.collection-card__link {
	position: relative;
	display: block;
	aspect-ratio: 4 / 3;
}

.collection-card__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .7s ease;
}

.collection-card:hover .collection-card__img {
	transform: scale(1.045);
}

.collection-card__scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(0deg, rgba(22, 22, 18, .78) 0%, rgba(22, 22, 18, .34) 40%, rgba(22, 22, 18, 0) 72%);
}

.collection-card__glyph {
	position: absolute;
	left: 18px;
	bottom: 74px;
	display: grid;
	place-items: center;
	width: 30px;
	height: 30px;
	border-radius: 999px;
	background: rgba(255, 255, 255, .16);
	border: 1px solid rgba(255, 255, 255, .22);
	color: #fff;
	backdrop-filter: blur(3px);
}

.collection-card__body {
	position: absolute;
	left: 18px;
	right: 74px;
	bottom: 18px;
	display: block;
	color: #fff;
}

.collection-card__title {
	display: block;
	font-size: 14.5px;
	font-weight: 500;
}

.collection-card__meta {
	display: block;
	margin-top: 3px;
	font-size: 11px;
	color: rgba(255, 255, 255, .74);
}

.collection-card__cta {
	position: absolute;
	right: 18px;
	bottom: 18px;
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	border-radius: 999px;
	background: rgba(255, 255, 255, .92);
	color: var(--ink);
	transition: background-color .2s ease, transform .2s ease;
}

.collection-card:hover .collection-card__cta {
	background: #fff;
	transform: translateX(2px);
}

/* Newsletter */
.newsletter {
	display: flex;
	align-items: center;
	gap: 18px;
	padding: 20px 24px;
	border-radius: 12px;
	background: var(--cream-3);
}

.newsletter__icon {
	display: grid;
	place-items: center;
	width: 42px;
	height: 42px;
	border-radius: 10px;
	background: #e5dfd4;
	color: var(--ink-2);
	flex: none;
}

.newsletter__title {
	font-size: 13.5px;
	font-weight: 600;
}

.newsletter__text {
	margin-top: 2px;
	font-size: 12px;
	color: var(--muted);
}

.newsletter__form {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-left: auto;
}

.newsletter__form input[type="email"] {
	width: 380px;
	height: 42px;
	padding: 0 20px;
	border: 1px solid var(--line);
	border-radius: 999px;
	background: #fff;
	font-size: 12.5px;
}

.newsletter__form input[type="email"]::placeholder {
	color: var(--muted-2);
}

.newsletter__form input[type="email"]:focus {
	outline: none;
	border-color: var(--olive);
}

/* Variante scura usata nel catalogo. */
.newsletter--dark {
	margin-top: 50px;
	padding: 30px 40px;
	border-radius: 18px;
	background: var(--olive-deep);
}

.newsletter--dark .newsletter__form input[type="email"],
.newsletter--dark .newsletter__form .btn {
	height: 48px;
}

.newsletter--dark .newsletter__form .btn {
	min-width: 132px;
}

.newsletter--dark .newsletter__icon {
	background: rgba(244, 241, 233, .1);
	color: #f4f1ea;
}

.newsletter--dark .newsletter__title {
	color: #f7f5ef;
}

.newsletter--dark .newsletter__text {
	color: rgba(244, 241, 233, .62);
}

.newsletter--dark .newsletter__form input[type="email"] {
	width: 460px;
	border-color: transparent;
}

.newsletter--dark .newsletter__form input[type="email"]:focus {
	border-color: rgba(244, 241, 233, .5);
}

/* 7. Footer --------------------------------------------------------------- */
.site-footer {
	padding: 46px 0 24px;
}

.footer-top {
	display: grid;
	grid-template-columns: 1.55fr 1fr 1fr 1fr 1.5fr;
	gap: 34px;
	align-items: start;
}

.brand--footer .brand__word {
	font-size: 23px;
}

.footer-brand__tagline {
	margin-top: 14px;
	font-size: 12px;
	line-height: 1.75;
	color: var(--muted);
}

/* Logo aziendale: colori accesi rispetto alla palette del tema, quindi resta
   piccolo e defilato sotto il wordmark. */
.footer-logo {
	margin-top: 20px;
}

.footer-logo__img {
	width: 132px;
	height: auto;
}

.social {
	display: flex;
	gap: 8px;
	margin-top: 16px;
}

.social a {
	display: grid;
	place-items: center;
	width: 30px;
	height: 30px;
	border-radius: 999px;
	border: 1px solid var(--line);
	color: var(--ink-2);
	transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}

.social a:hover {
	background: var(--olive);
	border-color: var(--olive);
	color: #f4f1ea;
}

.footer-col__title {
	font-family: var(--sans);
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: .01em;
}

.footer-col__list {
	margin-top: 11px;
}

.footer-col__list li + li {
	margin-top: 4px;
}

.footer-col__list a {
	font-size: 12px;
	color: var(--muted);
	transition: color .2s ease;
}

.footer-col__list a:hover {
	color: var(--ink);
}

.footer-perks {
	padding: 18px 20px;
	border-radius: var(--radius);
	background: var(--cream-3);
}

.footer-perks li {
	display: flex;
	align-items: center;
	gap: 11px;
}

.footer-perks li + li {
	margin-top: 14px;
}

.footer-perks__icon {
	display: grid;
	place-items: center;
	width: 28px;
	height: 28px;
	border-radius: 999px;
	background: #fff;
	color: var(--ink-2);
	flex: none;
}

.footer-perks__text {
	font-size: 11.5px;
	line-height: 1.5;
	color: var(--ink-2);
}

.footer-bottom {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	margin-top: 18px;
	padding-top: 18px;
	border-top: 1px solid var(--line-2);
	font-size: 11px;
	color: var(--muted);
}

.footer-bottom a:hover {
	color: var(--ink);
}

.footer-bottom .sep {
	margin-inline: 4px;
	opacity: .6;
}

.footer-bottom__locale {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

/* 8. Catalogo (archivio prodotti) ---------------------------------------- */
.shop {
	padding-bottom: 64px;
}

/* Header trasparente sopra la banda hero, come in home.
   Il selettore include `body` per battere `body:not(.terra-home) .site-header`. */
body.terra-hero-page .site-header {
	position: absolute;
	background: transparent;
	border-bottom: 0;
	padding-bottom: 0;
}

.primary-nav__list .current-menu-item > a::after {
	right: 0;
}

.shop-hero {
	position: relative;
	padding: 225px 0 85px;
	background: var(--cream-2);
	overflow: hidden;
}

.shop-hero__media {
	position: absolute;
	inset: 150px 0 0 auto;
	width: 51%;
	background-color: #e7e2d8;
	background-position: center;
	background-size: cover;
	background-repeat: no-repeat;
}

.shop-hero__media:not([style]) {
	background-image:
		radial-gradient(80% 80% at 60% 40%, #f1ebdf 0%, transparent 62%),
		linear-gradient(150deg, #e9e3d6 0%, #d5cfbf 100%);
}

.shop-hero__fade {
	position: absolute;
	inset: 0;
	background: linear-gradient(90deg, var(--cream-2) 0%, rgba(238, 234, 227, .72) 12%, rgba(238, 234, 227, 0) 34%);
}

.shop-hero__inner {
	position: relative;
	z-index: 2;
}

.breadcrumb {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 11.5px;
	color: var(--muted);
}

.breadcrumb a:hover {
	color: var(--ink);
}

.breadcrumb span[aria-current] {
	color: var(--ink-2);
}

.breadcrumb__sep {
	display: inline-flex;
	color: var(--muted-2);
	transform: rotate(-90deg);
}

.shop-hero__title {
	margin-top: 56px;
	font-size: clamp(40px, 4.5vw, 65px);
	line-height: 1.1;
}

.shop-hero__text {
	margin-top: 38px;
	max-width: 320px;
	font-size: 13.5px;
	line-height: 1.8;
	color: var(--ink-2);
}

/* Barra filtri */
.toolbar {
	display: flex;
	align-items: stretch;
	gap: 20px;
	margin-top: 34px;
}

.toolbar__bar {
	flex: 1;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	min-height: 56px;
	padding: 8px 26px;
	border-radius: 14px;
	background: var(--cream-3);
	flex-wrap: wrap;
}

.toolbar__filters {
	display: flex;
	align-items: center;
	gap: 40px;
	flex-wrap: wrap;
}

.select {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-size: 12.5px;
	color: var(--ink);
	cursor: pointer;
}

.select select {
	appearance: none;
	-webkit-appearance: none;
	max-width: 155px;
	padding: 0;
	border: 0;
	background: none;
	font: inherit;
	color: inherit;
	cursor: pointer;
	text-overflow: ellipsis;
}

.select select:focus {
	outline: none;
}

.select:focus-within {
	color: var(--olive);
}

.select .terra-icon {
	color: var(--ink-2);
	flex: none;
}

.select__label {
	color: var(--muted);
}

.toolbar__views {
	display: flex;
	align-items: center;
	gap: 4px;
	padding: 0 13px;
	border-radius: 14px;
	background: var(--cream-3);
}

.view-btn {
	display: grid;
	place-items: center;
	width: 32px;
	height: 32px;
	border-radius: 8px;
	color: var(--muted-2);
	transition: color .2s ease, background-color .2s ease;
}

.view-btn:hover {
	color: var(--ink-2);
}

.view-btn.is-active {
	color: var(--ink);
}

/* Layout sidebar + griglia */
.shop-layout {
	display: grid;
	grid-template-columns: 263px minmax(0, 1fr);
	gap: 53px;
	align-items: start;
	margin-top: 43px;
}

.shop-side {
	display: flex;
	flex-direction: column;
	gap: 26px;
}

.side-card {
	padding: 24px 26px;
	border-radius: 12px;
	background: var(--cream-3);
}

.side-card__title {
	font-size: 21px;
	line-height: 1.2;
}

.cat-list {
	margin-top: 14px;
}

.cat-list a {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 13px 0;
	font-size: 12.5px;
	color: var(--ink-2);
	transition: color .2s ease;
}

.cat-list a:hover,
.cat-list__item.is-current a {
	color: var(--ink);
}

.cat-list__icon {
	display: grid;
	place-items: center;
	color: var(--ink-2);
	flex: none;
}

.cat-list__item.is-current .cat-list__icon {
	color: var(--olive);
}

.side-perks li {
	display: flex;
	align-items: center;
	gap: 13px;
}

.side-perks li + li {
	margin-top: 24px;
}

.side-perks__icon {
	display: grid;
	place-items: center;
	color: var(--ink-2);
	flex: none;
}

.side-perks__text {
	font-size: 11.5px;
	line-height: 1.5;
	color: var(--ink-2);
}

.side-promo {
	position: relative;
	display: flex;
	flex-direction: column;
	min-height: 460px;
	border-radius: 12px;
	overflow: hidden;
	background: var(--olive-deep);
}

.side-promo__body {
	position: relative;
	z-index: 2;
	padding: 26px 24px 0;
}

.side-promo__title {
	font-family: var(--serif);
	font-size: 25.5px;
	line-height: 1.26;
	color: #f4f1ea;
}

.side-promo__body .link-arrow {
	margin-top: 18px;
}

.link-arrow--light {
	color: #f4f1ea;
	font-size: 12px;
}

.side-promo__media {
	position: absolute;
	inset: auto 0 0 0;
	height: 64%;
	background-color: #2b3120;
	background-position: center;
	background-size: cover;
	background-repeat: no-repeat;
}

.side-promo__media:not([style]) {
	background-image: linear-gradient(160deg, #4a5539 0%, #2b3120 100%);
}

.side-promo__fade {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, var(--olive-deep) 0%, rgba(48, 55, 35, .55) 22%, rgba(48, 55, 35, 0) 52%);
}

/* Griglia prodotti */
.product-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 21px 16px;
}

.product-grid .product-card {
	flex: none;
}

.product-grid .product-card__media {
	aspect-ratio: 7 / 6;
}

.product-grid .product-card__body {
	padding: 17px 18px 20px;
}

/* Vista elenco */
.product-grid--list {
	grid-template-columns: minmax(0, 1fr);
	gap: 12px;
}

.product-grid--list .product-card__link {
	display: grid;
	grid-template-columns: 200px minmax(0, 1fr);
	align-items: center;
}

.product-grid--list .product-card__media {
	aspect-ratio: 4 / 3;
}

.product-grid--list .product-card__body {
	padding: 18px 24px;
}

.product-grid--list .product-card__foot {
	margin-top: 12px;
}

.shop-empty {
	padding: 40px 0;
	font-size: 14px;
	color: var(--ink-2);
}

.shop-empty a {
	color: var(--olive);
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* Paginazione */
.pagination {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	margin-top: 42px;
}

.pagination .page-numbers {
	display: grid;
	place-items: center;
	min-width: 34px;
	height: 34px;
	padding: 0 6px;
	border-radius: 999px;
	font-size: 12.5px;
	color: var(--ink-2);
	transition: background-color .2s ease, color .2s ease;
}

.pagination a.page-numbers:hover {
	background: var(--cream-3);
	color: var(--ink);
}

.pagination .page-numbers.current {
	background: var(--olive);
	color: #f4f1ea;
	font-weight: 500;
}

.pagination .page-numbers.dots {
	color: var(--muted-2);
	letter-spacing: .06em;
}

.pagination .prev,
.pagination .next {
	background: #fff;
	color: var(--ink);
	box-shadow: var(--shadow-sm);
}

.pagination .prev:hover,
.pagination .next:hover {
	background: var(--ink);
	color: #f4f1ea;
}

/* Banda valori */
.values {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	margin-top: 50px;
	padding: 32px 22px;
	border-radius: 16px;
	background: var(--cream-3);
}

.values__item {
	display: flex;
	align-items: flex-start;
	gap: 15px;
	padding-inline: 22px;
}

.values__item + .values__item {
	border-left: 1px solid rgba(41, 41, 35, .07);
}

.values__icon {
	display: grid;
	place-items: center;
	color: var(--ink);
	flex: none;
	margin-top: 2px;
}

.values__title {
	display: block;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--ink);
}

.values__text {
	display: block;
	margin-top: 6px;
	max-width: 230px;
	font-size: 11.5px;
	line-height: 1.75;
	color: var(--muted);
}

/* 9. Pagine interne + WooCommerce ---------------------------------------- */
.page-hero {
	padding: 62px 0 8px;
}

.page-hero__title {
	font-size: clamp(30px, 3.2vw, 46px);
	line-height: 1.15;
}

.page-hero__meta {
	margin-top: 12px;
	font-size: 12.5px;
	color: var(--muted);
}

.entry-content {
	max-width: 720px;
	padding: 32px 0 72px;
	font-size: 15px;
	line-height: 1.8;
	color: var(--ink-2);
}

.entry-content > * + * {
	margin-top: 20px;
}

.entry-content h2,
.entry-content h3 {
	margin-top: 40px;
	font-size: 28px;
	line-height: 1.25;
}

.entry-content a {
	color: var(--olive);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.post-list {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--gap);
	padding: 32px 0 72px;
}

.post-card {
	background: var(--card);
	border-radius: var(--radius);
	overflow: hidden;
}

.post-card__media {
	position: relative;
	aspect-ratio: 4 / 3;
	background: var(--cream-2);
}

.post-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.post-card__body {
	padding: 20px;
}

.post-card__title {
	font-size: 20px;
	line-height: 1.3;
}

.post-card__excerpt {
	margin-top: 10px;
	font-size: 12.5px;
	color: var(--muted);
}

.woo-main {
	padding: 56px 0 80px;
}

.woocommerce ul.products {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--gap);
	margin: 0;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after {
	content: none;
}

.woocommerce ul.products li.product {
	width: 100% !important;
	margin: 0 !important;
	float: none !important;
	background: var(--card);
	border-radius: var(--radius);
	overflow: hidden;
	text-align: left;
}

.woocommerce ul.products li.product a img {
	margin: 0;
	aspect-ratio: 5 / 6;
	object-fit: cover;
}

.woocommerce ul.products li.product .woocommerce-loop-product__title {
	padding: 18px 18px 0;
	font-family: var(--sans);
	font-size: 14.5px;
	font-weight: 500;
}

.woocommerce ul.products li.product .price {
	display: block;
	padding: 6px 18px 18px;
	color: var(--ink);
	font-size: 14px;
	font-weight: 600;
}

/* Bottoni WooCommerce: sempre fondo scuro + testo chiaro. Le varianti .alt
   ereditano dal foglio di stile del plugin un viola con testo scuro, quindi
   vanno riscritte esplicitamente insieme agli stati disabilitati. */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce #respond input#submit.alt,
.woocommerce .woocommerce-Button,
.wc-block-components-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 44px;
	padding: 11px 26px;
	border: 0;
	border-radius: 999px;
	background: var(--btn-dark);
	color: #f4f1ea;
	font-size: 12.5px;
	font-weight: 500;
	line-height: 1.2;
	text-align: center;
	transition: background-color .25s ease, color .25s ease;
}

.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover,
.woocommerce #respond input#submit.alt:hover,
.woocommerce .woocommerce-Button:hover {
	background: #2e2d26;
	color: #f4f1ea;
}

/* Azione principale della pagina: verde oliva. */
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce .checkout-button,
.woocommerce #place_order {
	background: var(--olive);
	color: #f4f1ea;
}

.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover,
.woocommerce .checkout-button:hover,
.woocommerce #place_order:hover {
	background: var(--olive-dark);
	color: #f4f1ea;
}

.woocommerce a.button.disabled,
.woocommerce button.button:disabled,
.woocommerce button.button:disabled[disabled],
.woocommerce button.button.alt:disabled,
.woocommerce button.button.alt:disabled[disabled],
.woocommerce input.button:disabled,
.woocommerce input.button:disabled[disabled] {
	background: #b6b1a6;
	color: #fff;
	opacity: 1;
	cursor: not-allowed;
}

/* Nel loop il bottone e il tondo "+" della card: niente stile pulsante. */
.woocommerce ul.products li.product .button {
	margin: 0 18px 18px;
}

.product-card__add.button,
.product-card .button.product-card__add {
	min-height: 0;
	padding: 0;
	margin: 0;
	background: var(--cream-3);
	color: var(--ink);
}

.woocommerce .woocommerce-breadcrumb {
	margin-bottom: 26px;
	font-size: 11.5px;
	color: var(--muted);
}

.woocommerce .page-title,
.woocommerce-products-header__title {
	font-family: var(--serif);
	font-size: clamp(30px, 3.2vw, 44px);
	font-weight: 400;
	line-height: 1.15;
}

.woocommerce div.product .product_title {
	font-family: var(--serif);
	font-size: clamp(28px, 2.8vw, 40px);
	font-weight: 400;
}

.woocommerce div.product p.price {
	color: var(--ink);
	font-size: 20px;
	font-weight: 600;
}

.woocommerce span.onsale {
	background: var(--olive);
	color: #f4f1ea;
	font-size: 11px;
	font-weight: 500;
	min-height: 0;
	min-width: 0;
	padding: 5px 13px;
	border-radius: 999px;
	line-height: 1.2;
}

/* 10. Componenti UI ------------------------------------------------------ */

/* Dropdown: sostituisce via JS i select nativi dei filtri catalogo.
   Senza JS in pagina resta il .select nativo, che funziona lo stesso. */
.dropdown {
	position: relative;
	display: inline-flex;
}

.dropdown__toggle {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	height: 34px;
	padding: 0 12px;
	border-radius: 999px;
	font-size: 12.5px;
	color: var(--ink);
	transition: background-color .2s ease, box-shadow .2s ease;
}

.dropdown__toggle:hover {
	background: rgba(41, 41, 35, .05);
}

.dropdown.is-open .dropdown__toggle {
	background: #fff;
	box-shadow: var(--shadow-sm);
}

.dropdown__label {
	color: var(--muted);
	white-space: nowrap;
}

.dropdown__value {
	max-width: 155px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.dropdown__toggle .terra-icon {
	flex: none;
	color: var(--ink-2);
	transition: transform .2s ease;
}

.dropdown.is-open .dropdown__toggle .terra-icon {
	transform: rotate(180deg);
}

.dropdown__menu {
	position: absolute;
	top: calc(100% + 8px);
	left: 0;
	z-index: 60;
	display: none;
	min-width: 224px;
	max-height: 320px;
	overflow-y: auto;
	padding: 6px;
	border: 1px solid var(--line-2);
	border-radius: 12px;
	background: #fff;
	box-shadow: var(--shadow-md);
}

.dropdown--sort .dropdown__menu {
	left: auto;
	right: 0;
}

.dropdown.is-open .dropdown__menu {
	display: block;
}

.dropdown__option {
	display: block;
	padding: 9px 12px;
	border-radius: 8px;
	font-size: 12.5px;
	line-height: 1.4;
	color: var(--ink-2);
}

.dropdown__option:hover,
.dropdown__option:focus-visible {
	background: var(--cream-3);
	color: var(--ink);
}

.dropdown__option.is-selected {
	background: var(--cream-2);
	color: var(--ink);
	font-weight: 500;
}

/* Sottomenu del menu principale */
.primary-nav__list > li {
	position: relative;
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	justify-content: center;
}

.nav-sub-toggle {
	display: inline-grid;
	place-items: center;
	width: 20px;
	height: 20px;
	color: var(--ink-2);
}

.nav-sub-toggle .terra-icon {
	transition: transform .2s ease;
}

.menu-item-has-children.is-open > .nav-sub-toggle .terra-icon {
	transform: rotate(180deg);
}

.primary-nav__list .sub-menu {
	position: absolute;
	top: 100%;
	left: 50%;
	z-index: 70;
	display: none;
	min-width: 212px;
	margin-top: 14px;
	padding: 7px;
	border: 1px solid var(--line-2);
	border-radius: 12px;
	background: #fff;
	box-shadow: var(--shadow-md);
	transform: translateX(-50%);
	text-align: left;
}

/* Ponte invisibile: passando dal titolo al menu il puntatore non esce. */
.primary-nav__list .menu-item-has-children::after {
	content: "";
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	height: 16px;
}

.primary-nav__list .menu-item-has-children:hover > .sub-menu,
.primary-nav__list .menu-item-has-children:focus-within > .sub-menu,
.primary-nav__list .menu-item-has-children.is-open > .sub-menu {
	display: block;
}

.primary-nav__list .sub-menu a {
	display: block;
	padding: 8px 12px;
	border-radius: 8px;
	font-size: 12.5px;
	color: var(--ink-2);
}

.primary-nav__list .sub-menu a::after {
	content: none;
}

.primary-nav__list .sub-menu a:hover {
	background: var(--cream-3);
	color: var(--ink);
}

/* Ricerca prodotti */
.product-search {
	display: flex;
	align-items: center;
	gap: 8px;
	height: 42px;
	padding: 0 6px 0 13px;
	border: 1px solid var(--line);
	border-radius: 999px;
	background: #fff;
	transition: border-color .2s ease, box-shadow .2s ease;
}

.product-search--side {
	margin-top: 14px;
}

.product-search--empty {
	max-width: 420px;
	margin-top: 18px;
}

.product-search:focus-within {
	border-color: var(--olive);
	box-shadow: 0 0 0 3px rgba(63, 69, 51, .1);
}

.product-search__icon {
	display: grid;
	place-items: center;
	flex: none;
	color: var(--muted);
}

.product-search__field {
	flex: 1;
	min-width: 0;
	height: 100%;
	border: 0;
	background: none;
	font-size: 12.5px;
	color: var(--ink);
}

.product-search__field:focus {
	outline: none;
}

.product-search__field::placeholder {
	color: var(--muted-2);
}

.product-search__submit {
	display: grid;
	place-items: center;
	flex: none;
	width: 30px;
	height: 30px;
	border-radius: 999px;
	background: var(--ink);
	color: #f4f1ea;
	transition: background-color .2s ease;
}

.product-search__submit:hover {
	background: var(--olive);
}

.shop-empty {
	padding: 40px 0;
}

.shop-empty__text {
	font-size: 14px;
	line-height: 1.7;
	color: var(--ink-2);
}

.shop-empty__link {
	display: inline-block;
	margin-top: 12px;
	color: var(--olive);
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* Barra della prenotazione in corso */
.booking-bar {
	border-bottom: 1px solid var(--line-2);
	background: var(--cream-3);
}

.booking-bar.is-empty {
	display: none;
}

.booking-bar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding-block: 10px;
}

.booking-bar__text {
	display: flex;
	align-items: center;
	gap: 9px;
	font-size: 12.5px;
	color: var(--ink-2);
}

.booking-bar__text .terra-icon {
	flex: none;
	color: var(--olive);
}

/* Dove l'header e sovrapposto alla banda hero (home, shop, categorie, ricerca e
   pagine istituzionali) e `position: absolute`, quindi fuori dal flusso: una
   barra statica risalirebbe sotto la navbar. In quei casi va in fondo allo
   schermo. Sulle altre pagine l'header e relativo e la barra sta gia al posto
   giusto sotto di lui. */
.terra-home .booking-bar,
.terra-hero-page .booking-bar {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 80;
	border-top: 1px solid var(--line-2);
	border-bottom: 0;
	background: rgba(247, 245, 241, .97);
	backdrop-filter: blur(8px);
}

.icon-btn__badge.is-empty {
	background: var(--muted-2);
}

.product-grid--list .product-card__add {
	right: 24px;
	bottom: 18px;
}

/* 11. Carrello, cassa, conferma ------------------------------------------ */
.woocommerce-cart .woo-main,
.woocommerce-checkout .woo-main,
.woocommerce-account .woo-main,
.woocommerce-order-received .woo-main {
	padding-top: 44px;
}

.woocommerce table.shop_table {
	width: 100%;
	margin: 0;
	border: 0;
	border-radius: 14px;
	border-collapse: separate;
	border-spacing: 0;
	background: var(--card);
	overflow: hidden;
}

.woocommerce table.shop_table th {
	padding: 15px 18px;
	border: 0;
	border-bottom: 1px solid var(--line-2);
	font-size: 10.5px;
	font-weight: 500;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--muted);
	text-align: left;
}

.woocommerce table.shop_table td {
	padding: 16px 18px;
	border: 0;
	border-top: 1px solid var(--line-2);
	font-size: 13px;
	color: var(--ink-2);
	vertical-align: middle;
}

.woocommerce table.shop_table tr:first-child td {
	border-top: 0;
}

.woocommerce table.shop_table .product-name a,
.woocommerce table.shop_table .product-name {
	color: var(--ink);
	font-weight: 500;
}

.woocommerce table.shop_table img {
	width: 62px;
	height: auto;
	border-radius: 8px;
}

.woocommerce table.shop_table .product-remove {
	width: 46px;
}

.woocommerce a.remove {
	display: grid;
	place-items: center;
	width: 24px;
	height: 24px;
	border-radius: 999px;
	background: var(--cream-2);
	color: var(--ink-2) !important;
	font-size: 15px;
	line-height: 1;
	transition: background-color .2s ease, color .2s ease;
}

.woocommerce a.remove:hover {
	background: var(--ink);
	color: #f4f1ea !important;
}

.woocommerce .quantity input.qty {
	width: 66px;
	height: 40px;
	padding: 0 6px;
	border: 1px solid var(--line);
	border-radius: 999px;
	background: #fff;
	font-size: 13px;
	text-align: center;
}

.woocommerce .cart-collaterals,
.woocommerce-cart .cart-collaterals .cart_totals {
	float: none;
	width: 100%;
}

.woocommerce-cart .cart-collaterals {
	display: flex;
	justify-content: flex-end;
	margin-top: 32px;
}

.woocommerce-cart .cart_totals {
	max-width: 420px;
	padding: 24px 26px;
	border-radius: 16px;
	background: var(--cream-3);
}

.woocommerce .cart_totals h2,
.woocommerce-checkout #order_review_heading {
	margin-bottom: 14px;
	font-family: var(--serif);
	font-size: 26px;
	line-height: 1.2;
}

.woocommerce .cart_totals table.shop_table {
	background: transparent;
}

.woocommerce .cart_totals table.shop_table th,
.woocommerce .cart_totals table.shop_table td {
	padding: 12px 0;
	background: transparent;
}

.woocommerce-cart .wc-proceed-to-checkout {
	padding: 18px 0 0;
}

.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
	display: flex;
	width: 100%;
	font-size: 13px;
}

/* Campi dei moduli */
.woocommerce form .form-row {
	padding: 0;
	margin: 0 0 16px;
}

.woocommerce form .form-row label {
	display: block;
	margin-bottom: 6px;
	font-size: 11.5px;
	font-weight: 500;
	letter-spacing: .01em;
	color: var(--ink-2);
}

.woocommerce form .form-row .required {
	color: #9c5240;
	text-decoration: none;
}

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce div.product form.cart .variations select,
.woocommerce-account form input.input-text {
	width: 100%;
	height: 46px;
	padding: 0 16px;
	border: 1px solid var(--line);
	border-radius: 10px;
	background: #fff;
	font-family: var(--sans);
	font-size: 13px;
	line-height: 1.4;
	color: var(--ink);
	transition: border-color .2s ease, box-shadow .2s ease;
}

.woocommerce form .form-row textarea {
	height: auto;
	min-height: 108px;
	padding: 14px 16px;
	line-height: 1.65;
	resize: vertical;
}

/* I select nativi restano tali (WooCommerce ci lavora sopra con il suo JS)
   ma prendono la freccia del tema al posto di quella di sistema. */
.woocommerce form .form-row select,
.woocommerce div.product form.cart .variations select {
	appearance: none;
	-webkit-appearance: none;
	padding-right: 42px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2356544c' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
	background-size: 16px 16px;
	cursor: pointer;
}

.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus,
.woocommerce div.product form.cart .variations select:focus {
	border-color: var(--olive);
	outline: none;
	box-shadow: 0 0 0 3px rgba(63, 69, 51, .12);
}

.woocommerce form .form-row.woocommerce-invalid input.input-text,
.woocommerce form .form-row.woocommerce-invalid select {
	border-color: #c0705a;
}

.woocommerce form .form-row select:disabled {
	background-color: var(--cream-3);
	color: var(--muted);
	cursor: not-allowed;
}

/* Due colonne al posto dei float di WooCommerce. */
.woocommerce .woocommerce-billing-fields__field-wrapper,
.woocommerce .woocommerce-additional-fields__field-wrapper {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0 18px;
}

.woocommerce form .form-row-first,
.woocommerce form .form-row-last,
.woocommerce form .form-row-wide {
	float: none;
	width: auto;
}

.woocommerce form .form-row-wide,
.woocommerce form #order_comments_field,
.woocommerce form .notes {
	grid-column: 1 / -1;
}

/* Cassa */
.woocommerce-checkout form.checkout {
	display: grid;
	grid-template-columns: minmax(0, 1.02fr) minmax(0, .98fr);
	gap: 26px 44px;
	align-items: start;
}

/* Avvisi e blocchi extra (login, coupon) occupano tutta la riga: la prima
   riga resta libera per loro, i dati e il riepilogo partono dalla seconda. */
.woocommerce-checkout form.checkout > * {
	grid-column: 1 / -1;
}

.woocommerce-checkout form.checkout #customer_details {
	grid-column: 1;
	grid-row: 2 / span 2;
}

.woocommerce-checkout form.checkout #order_review_heading {
	grid-column: 2;
	grid-row: 2;
}

.woocommerce-checkout form.checkout #order_review {
	grid-column: 2;
	grid-row: 3;
	padding: 24px 26px;
	border-radius: 16px;
	background: var(--cream-3);
}

.woocommerce-checkout form.checkout .col2-set .col-1,
.woocommerce-checkout form.checkout .col2-set .col-2 {
	float: none;
	width: 100%;
}

.woocommerce-checkout h3 {
	margin: 0 0 16px;
	font-family: var(--serif);
	font-size: 25px;
	font-weight: 400;
	line-height: 1.2;
}

.woocommerce-checkout .woocommerce-additional-fields {
	margin-top: 30px;
}

.terra-pickup-note {
	margin: 0 0 18px;
	padding: 14px 16px;
	border-radius: 12px;
	background: var(--cream-3);
	font-size: 12.5px;
	line-height: 1.6;
	color: var(--ink-2);
}

.woocommerce-checkout #order_review table.shop_table {
	background: transparent;
}

.woocommerce-checkout #order_review table.shop_table th,
.woocommerce-checkout #order_review table.shop_table td {
	padding: 12px 0;
}

/* Pagamento: qui non si incassa nulla, il blocco e solo una nota. */
.woocommerce-checkout #payment {
	margin-top: 18px;
	border-radius: 12px;
	background: transparent;
}

.woocommerce-checkout #payment ul.payment_methods {
	padding: 0;
	border: 0;
}

.woocommerce-checkout #payment ul.payment_methods li {
	list-style: none;
}

.woocommerce-checkout #payment ul.payment_methods label {
	font-size: 12.5px;
	font-weight: 500;
	color: var(--ink);
}

.woocommerce-checkout #payment div.payment_box {
	margin: 10px 0 0;
	padding: 14px 16px;
	border-radius: 12px;
	background: #fff;
	font-size: 12.5px;
	line-height: 1.6;
	color: var(--ink-2);
}

.woocommerce-checkout #payment div.payment_box::before {
	content: none;
}

/* Casella di accettazione dei termini: compare solo se la pagina e impostata. */
.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper {
	margin-top: 16px;
	font-size: 12.5px;
	line-height: 1.6;
	color: var(--ink-2);
}

.woocommerce-checkout .woocommerce-privacy-policy-text p {
	margin-bottom: 12px;
}

.woocommerce form .form-row.woocommerce-validated .checkbox,
.woocommerce-checkout .form-row.validate-required > label.checkbox,
.woocommerce-checkout .woocommerce-terms-and-conditions-checkbox-text {
	display: inline;
	font-size: 12.5px;
	font-weight: 400;
}

.woocommerce-checkout .woocommerce-form__label-for-checkbox {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 0;
}

.woocommerce-checkout input[type="checkbox"] {
	width: 17px;
	height: 17px;
	margin: 2px 0 0;
	accent-color: var(--olive);
	flex: none;
}

.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper a {
	color: var(--olive);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.woocommerce-checkout #payment .form-row.place-order {
	padding: 18px 0 0;
	margin: 0;
}

.woocommerce-checkout #place_order {
	width: 100%;
	min-height: 52px;
	font-size: 13.5px;
}

/* Conferma */
.woocommerce .woocommerce-order,
.woocommerce-order-received .entry-content {
	max-width: 780px;
}

.woocommerce ul.order_details {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 16px;
	margin: 24px 0 30px;
	padding: 22px 26px;
	border-radius: 16px;
	background: var(--cream-3);
}

.woocommerce ul.order_details li {
	float: none;
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 10.5px;
	font-weight: 500;
	letter-spacing: .13em;
	text-transform: uppercase;
	color: var(--muted);
}

.woocommerce ul.order_details li strong {
	display: block;
	margin-top: 6px;
	font-size: 14px;
	font-weight: 500;
	letter-spacing: 0;
	text-transform: none;
	color: var(--ink);
}

.terra-pickup-recap {
	margin-top: 28px;
	padding: 20px 26px;
	border-radius: 16px;
	background: var(--cream-3);
}

.terra-pickup-recap h2 {
	font-family: var(--sans);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .13em;
	text-transform: uppercase;
	color: var(--muted);
}

.terra-pickup-recap p {
	margin-top: 8px;
	font-size: 15px;
	color: var(--ink);
}

/* Avvisi */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error,
.woocommerce-notice {
	margin: 0 0 26px;
	padding: 15px 20px 15px 48px;
	border: 0;
	border-radius: 12px;
	background: var(--cream-3);
	font-size: 13px;
	line-height: 1.6;
	color: var(--ink-2);
}

.woocommerce-message::before,
.woocommerce-info::before {
	color: var(--olive);
}

.woocommerce-error {
	background: #f6ebe6;
	color: #7d3d2a;
}

.woocommerce-error::before {
	color: #a4553f;
}

.woocommerce-message .button,
.woocommerce-info .button {
	min-height: 36px;
	padding: 8px 18px;
	font-size: 12px;
}

/* Scheda prodotto */
.woocommerce div.product {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 20px 48px;
	align-items: start;
}

.woocommerce div.product div.images,
.woocommerce div.product div.summary {
	float: none;
	width: 100%;
	margin: 0;
}

.woocommerce div.product div.images img {
	border-radius: var(--radius-lg);
}

.woocommerce div.product .woocommerce-tabs,
.woocommerce div.product .related,
.woocommerce div.product .upsells {
	grid-column: 1 / -1;
	margin-top: 20px;
}

.woocommerce div.product .woocommerce-product-details__short-description {
	margin-top: 14px;
	font-size: 14px;
	line-height: 1.75;
	color: var(--ink-2);
}

.woocommerce div.product form.cart {
	margin-top: 24px;
}

.woocommerce div.product form.cart table.variations {
	width: 100%;
	margin-bottom: 18px;
	border: 0;
}

.woocommerce div.product form.cart table.variations th,
.woocommerce div.product form.cart table.variations td {
	padding: 0 0 12px;
	border: 0;
	background: transparent;
	text-align: left;
	vertical-align: middle;
}

.woocommerce div.product form.cart table.variations th.label label {
	font-size: 11.5px;
	font-weight: 500;
	color: var(--ink-2);
}

.woocommerce div.product form.cart .reset_variations {
	display: inline-block;
	margin-top: 8px;
	font-size: 11.5px;
	color: var(--olive);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.woocommerce div.product form.cart .single_variation_wrap {
	margin-top: 4px;
}

/* Quantita e pulsante sulla stessa riga: `div.quantity` e un blocco, quindi
   senza il float di WooCommerce il pulsante finirebbe a capo. Il prodotto
   variabile ha la stessa coppia dentro .woocommerce-variation-add-to-cart,
   mentre il raggruppato usa una tabella e va lasciato stare. */
.woocommerce div.product form.cart:not(.variations_form):not(.grouped_form),
.woocommerce div.product form.cart .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
}

.woocommerce div.product form.cart div.quantity {
	float: none;
	margin: 0;
}

.woocommerce div.product form.cart div.quantity input.qty {
	height: 48px;
}

.woocommerce div.product form.cart .button {
	min-height: 48px;
	padding: 12px 30px;
}

/* Schede prodotto (Descrizione / Recensioni).
   Il plugin Smart Tabs inietta CSS inline con !important (fondo bianco, angoli
   vivi, riga grigia): i selettori qui sotto lo superano per specificita, quindi
   il !important serve davvero e non e pigrizia. Se un giorno Smart Tabs venisse
   disattivato, queste regole restano valide da sole. */
.woocommerce div.product .woocommerce-tabs {
	margin-top: 56px;
	padding-top: 34px;
	border-top: 1px solid var(--line);
}

html body.woocommerce div.product .woocommerce-tabs ul.tabs.wc-tabs,
.woocommerce div.product .woocommerce-tabs ul.tabs {
	position: relative;
	padding: 0;
	margin: 0 0 26px;
	display: flex;
	flex-wrap: wrap;
	gap: 8px !important;
	border: 0 !important;
}

.woocommerce div.product .woocommerce-tabs ul.tabs::before,
.woocommerce div.product .woocommerce-tabs ul.tabs::after,
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after,
html body.woocommerce.sptpro-smart-tabs div.product .woocommerce-tabs ul.tabs li.active::before {
	content: none !important;
	background: none !important;
	border: 0 !important;
}

html body.woocommerce div.product .woocommerce-tabs ul.tabs.wc-tabs li,
.woocommerce div.product .woocommerce-tabs ul.tabs li {
	margin: 0;
	padding: 0;
	border: 0 !important;
	border-radius: 999px !important;
	background: var(--cream-3) !important;
	box-shadow: none;
	transition: background-color .2s ease, color .2s ease;
}

html body.woocommerce div.product .woocommerce-tabs ul.tabs.wc-tabs li:hover,
.woocommerce div.product .woocommerce-tabs ul.tabs li:hover {
	background: var(--cream-2) !important;
}

html body.woocommerce div.product .woocommerce-tabs ul.tabs.wc-tabs li.active,
.woocommerce div.product .woocommerce-tabs ul.tabs li.active {
	background: var(--ink) !important;
}

html body.woocommerce div.product .woocommerce-tabs ul.tabs.wc-tabs li a,
.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	display: block;
	padding: 10px 22px !important;
	font-family: var(--sans);
	font-size: 12.5px !important;
	font-weight: 500;
	line-height: 1.4;
	letter-spacing: .01em;
	text-transform: none !important;
	color: var(--ink-2);
}

html body.woocommerce div.product .woocommerce-tabs ul.tabs.wc-tabs li.active a,
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
	color: #f4f1ea;
}

/* Pannelli: card color panna, non rettangoli bianchi. */
html body.woocommerce div.product .woocommerce-tabs .woocommerce-Tabs-panel,
html body.woocommerce.sptpro-smart-tabs .woocommerce-tabs.wc-tabs-wrapper #tab-description,
html body.woocommerce.sptpro-smart-tabs .woocommerce-tabs.wc-tabs-wrapper .woocommerce-Tabs-panel#tab-additional_information,
html body.woocommerce.sptpro-smart-tabs .woocommerce-tabs.wc-tabs-wrapper .woocommerce-Tabs-panel#tab-reviews,
html body.woocommerce.sptpro-smart-tabs .woocommerce-tabs.wc-tabs-wrapper .woocommerce-Tabs-panel .sp-tab__tab-content {
	padding: 34px 38px !important;
	border: 1px solid var(--line-2) !important;
	border-radius: var(--radius-lg) !important;
	background: var(--card) !important;
	font-size: 14px;
	line-height: 1.85;
	color: var(--ink-2);
}

.woocommerce div.product .woocommerce-tabs .woocommerce-Tabs-panel > h2 {
	/* Il titolo "Descrizione" ripete la linguetta gia attiva. */
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.woocommerce div.product .woocommerce-tabs .woocommerce-Tabs-panel p + p {
	margin-top: 14px;
}

.woocommerce div.product .woocommerce-tabs .woocommerce-Tabs-panel strong {
	color: var(--ink);
	font-weight: 600;
}

/* Recensioni */
.woocommerce div.product #reviews #comments > h2,
.woocommerce div.product #reviews #respond .comment-reply-title {
	display: block;
	font-family: var(--serif);
	font-size: 24px;
	line-height: 1.3;
	color: var(--ink);
}

.woocommerce div.product #reviews .woocommerce-noreviews {
	margin: 0;
	padding: 22px 24px;
	border-radius: var(--radius);
	background: var(--cream-3);
	font-size: 13px;
	color: var(--ink-2);
}

.woocommerce div.product #reviews ol.commentlist {
	margin: 0;
	padding: 0;
}

.woocommerce div.product #reviews ol.commentlist li .comment_container {
	padding: 22px 24px;
	border: 1px solid var(--line-2);
	border-radius: var(--radius);
	background: #fff;
}

.woocommerce div.product #reviews ol.commentlist li img.avatar {
	position: static;
	width: 40px;
	border: 0;
	border-radius: 999px;
	padding: 0;
	background: var(--cream-2);
}

.woocommerce div.product #reviews ol.commentlist li .comment-text {
	margin: 0 0 0 58px;
	padding: 0;
	border: 0;
	border-radius: 0;
}

.woocommerce div.product #reviews #respond {
	margin-top: 26px;
	padding-top: 26px;
	border-top: 1px solid var(--line);
}

.woocommerce div.product #reviews #respond .comment-form-rating label,
.woocommerce div.product #reviews #respond .comment-form-comment label,
.woocommerce div.product #reviews #respond .comment-form-author label,
.woocommerce div.product #reviews #respond .comment-form-email label {
	display: block;
	margin-bottom: 6px;
	font-size: 11.5px;
	font-weight: 500;
	color: var(--ink-2);
}

.woocommerce div.product #reviews #respond input[type="text"],
.woocommerce div.product #reviews #respond input[type="email"],
.woocommerce div.product #reviews #respond textarea {
	width: 100%;
	padding: 12px 16px;
	border: 1px solid var(--line);
	border-radius: 10px;
	background: #fff;
	font-family: var(--sans);
	font-size: 13px;
	line-height: 1.6;
	color: var(--ink);
	transition: border-color .2s ease, box-shadow .2s ease;
}

.woocommerce div.product #reviews #respond textarea {
	min-height: 120px;
	resize: vertical;
}

.woocommerce div.product #reviews #respond input[type="text"]:focus,
.woocommerce div.product #reviews #respond input[type="email"]:focus,
.woocommerce div.product #reviews #respond textarea:focus {
	border-color: var(--olive);
	outline: none;
	box-shadow: 0 0 0 3px rgba(63, 69, 51, .12);
}

.woocommerce div.product #reviews #respond .stars a {
	color: var(--olive);
}

.woocommerce div.product #reviews #respond .form-submit input#submit {
	border-radius: 999px;
	background: var(--btn-dark);
	color: #f4f1ea;
	padding: 12px 28px;
	font-size: 12.5px;
	font-weight: 500;
}

.woocommerce div.product #reviews #respond .form-submit input#submit:hover {
	background: var(--ink);
}

@media (max-width: 620px) {
	html body.woocommerce div.product .woocommerce-tabs .woocommerce-Tabs-panel,
	html body.woocommerce.sptpro-smart-tabs .woocommerce-tabs.wc-tabs-wrapper #tab-description,
	html body.woocommerce.sptpro-smart-tabs .woocommerce-tabs.wc-tabs-wrapper .woocommerce-Tabs-panel#tab-reviews {
		padding: 24px 20px !important;
	}
}

/* 11b. Pagine istituzionali (Chi siamo, Contattaci) ----------------------- */
/* Riusano la banda hero del catalogo: stesso header trasparente, stessa foto
   sfumata. Cambia solo il respiro del testo, che qui e piu lungo. */
.shop-hero--page {
	padding: 205px 0 70px;
}

.shop-hero--page .shop-hero__title {
	margin-top: 22px;
}

.page-logo {
	margin-top: 26px;
}

.page-logo__img {
	width: 168px;
	height: auto;
}

.page-logo + .shop-hero__title {
	margin-top: 18px;
}

.shop-hero--page .shop-hero__text {
	margin-top: 24px;
	max-width: 470px;
}

/* Due colonne di racconto: "cosa facciamo" e "come lo facciamo". */
.pillars {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--gap);
	margin-top: 34px;
}

.pillar {
	padding: 34px 34px 38px;
	border-radius: var(--radius-lg);
	background: var(--card);
	border: 1px solid var(--line-2);
}

.pillar__icon {
	display: grid;
	place-items: center;
	width: 42px;
	height: 42px;
	border-radius: 999px;
	background: var(--cream-3);
	color: var(--olive);
}

.pillar__title {
	margin-top: 20px;
	font-size: 24px;
	line-height: 1.25;
}

.pillar__text {
	margin-top: 12px;
	font-size: 13px;
	line-height: 1.8;
	color: var(--ink-2);
}

.page-figure {
	margin: 34px 0 0;
	border-radius: var(--radius-lg);
	overflow: hidden;
	background: var(--cream-2);
}

.page-figure img {
	width: 100%;
	aspect-ratio: 16 / 7;
	object-fit: cover;
}

/* Testo lungo spezzato in colonne: a piena larghezza sarebbe illeggibile. */
.page-columns {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 34px;
	margin-top: 34px;
	font-size: 13px;
	line-height: 1.85;
	color: var(--ink-2);
}

.split__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-top: 26px;
}

.split__panel .split__actions .btn {
	margin-top: 0;
}

/* Come funziona: i tre passaggi */
.steps {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--gap);
	margin-top: 34px;
	counter-reset: none;
}

.step {
	position: relative;
	padding: 34px 32px 36px;
	border-radius: var(--radius-lg);
	background: var(--card);
	border: 1px solid var(--line-2);
}

.step__num {
	position: absolute;
	top: 26px;
	right: 30px;
	font-family: var(--serif);
	font-size: 30px;
	line-height: 1;
	color: var(--line);
}

.step__icon {
	display: grid;
	place-items: center;
	width: 42px;
	height: 42px;
	border-radius: 999px;
	background: var(--cream-3);
	color: var(--olive);
}

.step__title {
	margin-top: 20px;
	font-size: 22px;
	line-height: 1.28;
}

.step__text {
	margin-top: 10px;
	font-size: 13px;
	line-height: 1.8;
	color: var(--ink-2);
}

/* Domande frequenti: <details> nativo, nessun JS da caricare. */
.faq {
	margin-top: 34px;
}

.faq__group + .faq__group {
	margin-top: 40px;
}

.faq__group-title {
	font-family: var(--sans);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--muted-2);
}

.faq__item {
	border-bottom: 1px solid var(--line);
}

.faq__group-title + .faq__item {
	border-top: 1px solid var(--line);
	margin-top: 16px;
}

.faq__q {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	padding: 20px 4px;
	cursor: pointer;
	list-style: none;
	font-family: var(--serif);
	font-size: 19px;
	line-height: 1.35;
	color: var(--ink);
	transition: color .2s ease;
}

.faq__q::-webkit-details-marker {
	display: none;
}

.faq__q:hover {
	color: var(--olive);
}

.faq__mark {
	display: grid;
	place-items: center;
	flex: none;
	width: 28px;
	height: 28px;
	border-radius: 999px;
	background: var(--cream-3);
	color: var(--ink-2);
	transition: transform .25s ease, background-color .2s ease;
}

.faq__item[open] .faq__mark {
	transform: rotate(180deg);
	background: var(--ink);
	color: #f4f1ea;
}

.faq__a {
	padding: 0 46px 22px 4px;
	font-size: 13.5px;
	line-height: 1.85;
	color: var(--ink-2);
}

/* Recapiti */
.contact-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--gap);
}

.contact-card {
	padding: 30px 30px 34px;
	border-radius: var(--radius-lg);
	background: var(--card);
	border: 1px solid var(--line-2);
}

.contact-card__icon {
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border-radius: 999px;
	background: var(--cream-3);
	color: var(--olive);
}

.contact-card__title {
	margin-top: 18px;
	font-size: 20px;
	line-height: 1.3;
}

.contact-card__text {
	margin-top: 8px;
	font-size: 13px;
	line-height: 1.75;
	color: var(--ink-2);
}

.contact-card__text a:hover {
	color: var(--olive);
}

/* Modulo di contatto */
.contact-panel {
	display: grid;
	grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr);
	gap: 44px;
	align-items: start;
	padding: 44px;
	border-radius: var(--radius-lg);
	background: var(--cream-3);
}

.contact-panel__intro .section__title {
	margin-top: 16px;
}

.contact-panel__text {
	margin-top: 16px;
	font-size: 13px;
	line-height: 1.8;
	color: var(--ink-2);
}

.contact-panel__note {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin-top: 24px;
	padding-top: 20px;
	border-top: 1px solid var(--line);
	font-size: 11.5px;
	line-height: 1.7;
	color: var(--muted);
}

.contact-panel__note .terra-icon {
	flex: none;
	margin-top: 2px;
}

.contact-form {
	padding: 30px;
	border-radius: var(--radius);
	background: #fff;
	border: 1px solid var(--line-2);
}

.contact-form__fallback {
	margin-bottom: 18px;
	font-size: 13px;
	line-height: 1.75;
	color: var(--ink-2);
}

/* SureForms calcola tutti i suoi colori da due variabili di Astra
   (--ast-global-color-0 e -2) che con il vecchio tema sono sparite. Le sue
   dichiarazioni diventano cosi invalide e il risultato non e un colore
   sbagliato: e il bordo che non viene disegnato affatto. Qui le variabili
   vengono ridefinite con i token di Terra, sul contenitore stesso (due classi,
   quindi vince sullo stile inline del plugin che ne usa una). Cosi il form si
   ridisegna da solo con la palette giusta, senza dover superare a colpi di
   specificita le sue regole a cinque classi. */
.contact-form .srfm-form-container {
	--srfm-color-scheme-primary: var(--olive);
	--srfm-color-scheme-text: var(--ink);
	--srfm-color-scheme-text-on-primary: #f4f1ea;
	--srfm-quill-editor-color: var(--ink);

	--srfm-color-input-label: var(--ink-2);
	--srfm-color-input-description: var(--muted);
	--srfm-color-input-placeholder: var(--muted);
	--srfm-color-input-text: var(--ink);
	--srfm-color-input-prefix: var(--muted);
	--srfm-color-input-background: #fff;
	--srfm-color-input-background-hover: #fff;
	--srfm-color-input-background-disabled: var(--cream-3);
	--srfm-color-input-border: var(--line);
	--srfm-color-input-border-disabled: var(--line-2);
	--srfm-color-input-border-hover: var(--olive);
	--srfm-color-input-border-focus-glow: rgba(63, 69, 51, .14);
	--srfm-color-input-selected: rgba(63, 69, 51, .1);
	--srfm-color-multi-choice-svg: var(--ink-2);

	--srfm-btn-color-hover: var(--ink);
	--srfm-btn-color-disabled: var(--muted-2);

	--srfm-dropdown-input-background-hover: var(--cream-3);
	--srfm-dropdown-option-background-hover: var(--cream-2);
	--srfm-dropdown-option-background-selected: var(--cream-3);
	--srfm-dropdown-option-selected-icon: var(--olive);
	--srfm-dropdown-option-text-color: var(--ink-2);
	--srfm-dropdown-option-selected-text: var(--ink);
	--srfm-dropdown-badge-background: var(--cream-3);
	--srfm-dropdown-badge-background-hover: var(--cream-2);
	--srfm-dropdown-menu-border-color: var(--line);
	--srfm-dropdown-placeholder-color: var(--muted);
	--srfm-dropdown-icon-color: var(--ink-2);
	--srfm-dropdown-icon-disabled: var(--muted-2);

	--srfm-input-field-border-radius: 10px;

	padding: 0 !important;
	background: transparent !important;
	border-radius: 0 !important;
}

/* Rete di sicurezza: se un domani il plugin cambiasse nomi alle variabili, il
   bordo resta comunque disegnato. Stessa specificita delle sue regole. */
.contact-form .srfm-form-container .srfm-form .srfm-block .srfm-input-common {
	border: 1px solid var(--line);
	border-radius: 10px;
	background: #fff;
	color: var(--ink);
}

.contact-form .srfm-form-container .srfm-form .srfm-block .srfm-input-common:focus {
	border-color: var(--olive);
	outline: none;
	box-shadow: 0 0 0 3px rgba(63, 69, 51, .14);
}

.contact-form .srfm-input-label,
.contact-form .srfm-block label {
	font-family: var(--sans);
	font-size: 11.5px;
	font-weight: 500;
	color: var(--ink-2);
}

.contact-form input[type="text"],
.contact-form input[type="email"],
.contact-form input[type="tel"],
.contact-form input[type="url"],
.contact-form input[type="number"],
.contact-form select,
.contact-form textarea {
	width: 100%;
	padding: 12px 16px;
	border: 1px solid var(--line);
	border-radius: 10px;
	background: #fff;
	font-family: var(--sans);
	font-size: 13px;
	line-height: 1.5;
	color: var(--ink);
	transition: border-color .2s ease, box-shadow .2s ease;
}

.contact-form textarea {
	min-height: 128px;
	resize: vertical;
}

.contact-form input:focus,
.contact-form select:focus,
.contact-form textarea:focus {
	border-color: var(--olive);
	outline: none;
	box-shadow: 0 0 0 3px rgba(63, 69, 51, .12);
}

.contact-form button[type="submit"],
.contact-form .srfm-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 44px;
	padding: 0 26px;
	border: 0;
	border-radius: 999px;
	background: var(--btn-dark);
	color: #f4f1ea;
	font-family: var(--sans);
	font-size: 12.5px;
	font-weight: 500;
	cursor: pointer;
	transition: background-color .2s ease;
}

.contact-form button[type="submit"]:hover,
.contact-form .srfm-button:hover {
	background: var(--ink);
}

/* Mappa */
.map-embed {
	margin-top: 34px;
	border-radius: var(--radius-lg);
	overflow: hidden;
	background: var(--cream-2);
	border: 1px solid var(--line-2);
}

.map-embed iframe {
	display: block;
	width: 100%;
	height: 420px;
	border: 0;
}

@media (max-width: 1024px) {
	.contact-panel {
		grid-template-columns: minmax(0, 1fr);
		gap: 30px;
		padding: 34px;
	}

	.page-columns {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 28px;
	}
}

@media (max-width: 860px) {
	.shop-hero--page {
		padding: 165px 0 56px;
	}

	.pillars,
	.contact-grid,
	.page-columns,
	.steps {
		grid-template-columns: minmax(0, 1fr);
	}

	.faq__q {
		font-size: 17px;
	}

	.faq__a {
		padding-right: 8px;
	}

	.map-embed iframe {
		height: 320px;
	}
}

@media (max-width: 620px) {
	.pillar,
	.contact-card,
	.step {
		padding: 26px 22px 28px;
	}

	.contact-panel {
		padding: 26px 20px;
	}

	.contact-form {
		padding: 22px 18px;
	}
}

/* 12. Responsive --------------------------------------------------------- */
@media (max-width: 1180px) {
	.topbar__inner {
		padding-inline: var(--gutter);
	}

	.hero__counter {
		display: none;
	}

	.shop-layout {
		grid-template-columns: 232px minmax(0, 1fr);
		gap: 34px;
	}

	.toolbar__filters {
		gap: 26px;
	}
}

@media (max-width: 1024px) {
	.hero {
		padding: 170px 0 130px;
		min-height: 640px;
	}

	.hero__media {
		width: 74%;
	}

	.hero__content {
		margin-left: 0;
	}

	.section__head,
	.section__head--baseline {
		grid-template-columns: 1fr;
		gap: 22px;
	}

	.section__head-right {
		padding-top: 0;
	}

	.section__head-left {
		padding-left: 0;
	}

	.split,
	.split--green {
		grid-template-columns: 1fr;
	}

	.split__media {
		min-height: 260px;
	}

	.split__media-fade {
		background: linear-gradient(0deg, var(--olive) 0%, rgba(71, 86, 58, 0) 30%);
	}

	.split--story {
		grid-template-columns: 1fr;
	}

	.split__media-fade--story {
		background: linear-gradient(0deg, #f1ede6 0%, rgba(241, 237, 230, 0) 28%);
	}

	.product-card {
		flex-basis: calc((100% - var(--gap)) / 2);
	}

	.collection-grid,
	.post-list,
	.woocommerce ul.products {
		grid-template-columns: repeat(2, 1fr);
	}

	.shop-hero {
		padding: 200px 0 60px;
	}

	.shop-hero__media {
		inset: 150px 0 0 auto;
		width: 100%;
		opacity: .45;
	}

	.shop-hero__fade {
		background: linear-gradient(90deg, var(--cream-2) 0%, rgba(238, 234, 227, .78) 40%, rgba(238, 234, 227, .3) 100%);
	}

	.shop-layout {
		grid-template-columns: minmax(0, 1fr);
		gap: 30px;
	}

	.shop-side {
		display: grid;
		grid-template-columns: repeat(2, 1fr);
		align-items: start;
	}

	.side-promo {
		grid-column: 1 / -1;
		min-height: 320px;
	}

	.product-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.values {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		row-gap: 24px;
	}

	.values__item:nth-child(3) {
		border-left: 0;
	}

	.newsletter--dark .newsletter__form input[type="email"] {
		width: auto;
	}

	.footer-top {
		grid-template-columns: 1.4fr 1fr 1fr;
		row-gap: 44px;
	}

	.footer-perks {
		grid-column: 1 / -1;
	}
}

@media (max-width: 860px) {
	.nav-toggle {
		display: inline-grid;
	}

	.primary-nav {
		display: none;
		margin-top: 16px;
		padding-block: 8px 14px;
		border-top: 1px solid var(--line-2);
		background: rgba(247, 245, 241, .97);
		backdrop-filter: blur(8px);
	}

	.primary-nav.is-open {
		display: block;
	}

	.primary-nav__list {
		flex-direction: column;
		align-items: center;
		gap: 14px;
	}

	.topbar__note {
		display: none;
	}

	.topbar__inner {
		grid-template-columns: auto 1fr;
	}

	.brand {
		justify-self: start;
	}

	.hero {
		padding: 150px 0 120px;
	}

	.hero__media {
		width: 100%;
		opacity: .55;
	}

	.hero__fade {
		background: linear-gradient(90deg, var(--cream-2) 0%, rgba(238, 234, 227, .8) 45%, rgba(238, 234, 227, .35) 100%);
	}

	.newsletter {
		flex-wrap: wrap;
	}

	.newsletter__form {
		margin-left: 0;
		width: 100%;
	}

	.newsletter__form input[type="email"] {
		flex: 1;
		width: auto;
	}

	.footer-bottom {
		flex-direction: column;
		align-items: flex-start;
	}
}

@media (max-width: 620px) {
	.section--selection {
		padding-top: 66px;
	}

	.carousel__nav {
		display: none;
	}

	.product-card {
		flex-basis: 78%;
	}

	.collection-grid,
	.post-list,
	.woocommerce ul.products {
		grid-template-columns: 1fr;
	}

	.split__panel {
		padding: 34px 26px;
	}

	.shop-hero {
		padding: 175px 0 50px;
	}

	.shop-hero__title {
		margin-top: 32px;
	}

	.toolbar {
		flex-wrap: wrap;
	}

	.toolbar__bar {
		order: 2;
		flex-basis: 100%;
	}

	.toolbar__views {
		order: 1;
		margin-left: auto;
	}

	.shop-side {
		grid-template-columns: minmax(0, 1fr);
		gap: 18px;
	}

	.product-grid,
	.values {
		grid-template-columns: minmax(0, 1fr);
	}

	.values__item + .values__item {
		border-left: 0;
	}

	.product-grid--list .product-card__link {
		grid-template-columns: 130px minmax(0, 1fr);
	}

	.footer-top {
		grid-template-columns: 1fr 1fr;
	}

	.hero__actions .btn {
		width: 100%;
		justify-content: space-between;
	}
}

/* Componenti UI e pagine WooCommerce sotto i 1024px */
@media (max-width: 1024px) {
	.woocommerce-checkout form.checkout {
		grid-template-columns: minmax(0, 1fr);
	}

	.woocommerce-checkout form.checkout #customer_details,
	.woocommerce-checkout form.checkout #order_review_heading,
	.woocommerce-checkout form.checkout #order_review {
		grid-column: 1;
		grid-row: auto;
	}

	.woocommerce div.product {
		grid-template-columns: minmax(0, 1fr);
	}

	.woocommerce-cart .cart_totals {
		max-width: none;
	}
}

@media (max-width: 860px) {
	/* Sottomenu a fisarmonica: si aprono solo con il pulsante. */
	.primary-nav__list .sub-menu {
		position: static;
		width: 100%;
		min-width: 0;
		margin-top: 8px;
		padding: 0;
		border: 0;
		border-radius: 0;
		background: transparent;
		box-shadow: none;
		transform: none;
		text-align: center;
	}

	.primary-nav__list .menu-item-has-children::after {
		content: none;
	}

	.primary-nav__list .menu-item-has-children:hover > .sub-menu,
	.primary-nav__list .menu-item-has-children:focus-within > .sub-menu {
		display: none;
	}

	.primary-nav__list .menu-item-has-children.is-open > .sub-menu {
		display: block;
	}

	.booking-bar__inner {
		flex-direction: column;
		align-items: stretch;
		gap: 10px;
	}

	.booking-bar .btn {
		justify-content: center;
	}

	.woocommerce .woocommerce-billing-fields__field-wrapper,
	.woocommerce .woocommerce-additional-fields__field-wrapper {
		grid-template-columns: minmax(0, 1fr);
	}

	.woocommerce table.shop_table img {
		width: 48px;
	}
}

@media (max-width: 620px) {
	.toolbar__filters {
		gap: 4px;
	}

	.dropdown__menu {
		left: 0;
		right: auto;
		min-width: 200px;
	}

	.dropdown--sort .dropdown__menu {
		left: 0;
		right: auto;
	}
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: .01ms !important;
		transition-duration: .01ms !important;
	}
}
