/**
Theme Name: Astra Child
Author: Brainstorm Force
Author URI: http://wpastra.com/about/
Description: Astra is the fastest, fully customizable & beautiful theme suitable for blogs, personal portfolios and business websites. It is very lightweight (less than 50KB on frontend) and offers unparalleled speed. Built with SEO in mind, Astra comes with schema.org code integrated so search engines will love your site. Astra offers plenty of sidebar options and widget areas giving you a full control for customizations. Furthermore, we have included special features and templates so feel free to choose any of your favorite page builder plugin to create pages flexibly. Some of the other features: # WooCommerce Ready # Responsive # Compatible with major plugins # Translation Ready # Extendible with premium addons # Regularly updated # Designed, Developed, Maintained & Supported by Brainstorm Force. Looking for a perfect base theme? Look no further. Astra is fast, fully customizable and beautiful theme!
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: astra-child
Template: astra
*/

/* Video aziendale, Social media, Meta Ads, Fotografo e Landing page: tra 977
   e 1139px il riquadro della fascia si restringe per non toccare il testo
   della colonna di destra */
@media (min-width: 977px) and (max-width: 1139px) {
	body .wp-block-uagb-container.uagb-block-e4b9a162,
	body .wp-block-uagb-container.uagb-block-7d2c5e81,
	body .wp-block-uagb-container.uagb-block-b36f09d4,
	body .wp-block-uagb-container.uagb-block-2f8a6c17,
	body .wp-block-uagb-container.uagb-block-c81e4a3f {
		max-width: 50vw !important;
	}
}

/* Link nel testo di articoli e pagine (servizi, schede progetto, hub):
   sottolineatura sottile nel colore d'accento. Solo nei paragrafi e negli
   elenchi del contenuto; esclusi pulsanti, link che avvolgono immagini,
   breadcrumb, griglie e schede di articoli, indici e menu */
:is(.single-post, .page) .entry-content :is(p, li) a:not(.wp-block-button__link, .uagb-buttons-repeater, .ast-button, .button, :has(img, picture, svg, video)):not(.rank-math-breadcrumb a, .wp-block-latest-posts a, .wp-block-uagb-post-grid a, .uagb-post-grid a, [class*="uagb-post__"] a, .wp-block-rank-math-toc-block a, .wp-block-navigation a, .wp-block-social-links a, .wp-block-page-list a) {
	text-decoration: underline;
	text-decoration-color: var(--ast-global-color-0);
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
}
:is(.single-post, .page) .entry-content :is(p, li) a:not(.wp-block-button__link, .uagb-buttons-repeater, .ast-button, .button, :has(img, picture, svg, video)):not(.rank-math-breadcrumb a, .wp-block-latest-posts a, .wp-block-uagb-post-grid a, .uagb-post-grid a, [class*="uagb-post__"] a, .wp-block-rank-math-toc-block a, .wp-block-navigation a, .wp-block-social-links a, .wp-block-page-list a):hover {
	color: var(--ast-global-color-0);
}

/* Pulsante "Analisi" nell'header: stessa misura del menu, parola mai spezzata.
   Colori e bordo sono nelle opzioni di Astra; qui si corregge il preset di
   dimensione, che impone 40px di margine e riduce il testo su smartphone */
body .ast-header-button-1[data-section*="section-hb-button-"] .ast-builder-button-wrap .ast-custom-button {
	font-size: 15px;
	line-height: 1.2;
	padding: 8px 18px;
	white-space: nowrap;
	overflow-wrap: normal;
}
@media (max-width: 921px) {
	body .ast-header-button-1[data-section*="section-hb-button-"] .ast-builder-button-wrap .ast-custom-button {
		font-size: 14px;
		padding: 6px 12px;
	}
}
/* Motion delle parentesi (regole nel CLAUDE.md): una sola curva e una sola
   durata per tutto il sito, lenta in apertura e decisa in chiusura.
   Forma: le parentesi originali del logo (img/logo-shot/), usate come
   maschera e colorate con il giallo d'accento della palette */
:root {
	--shot-parentesi-curva: cubic-bezier(0.6, 0, 0.85, 0.25);
	--shot-parentesi-durata: 400ms;
	--shot-parentesi-sx: url("img/logo-shot/parentesi-sx.svg");
	--shot-parentesi-dx: url("img/logo-shot/parentesi-dx.svg");
}

/* Analisi SHOT, "Come funziona": gesto "scansione" (script in js/analisi.js).
   Le parentesi sono forme SVG, non testo; lo spazio attorno al nome della
   fase le accoglie */
.shot-fasi.shot-fasi-attive {
	position: relative;
}
.shot-fasi-attive .shot-fase-nome {
	position: relative;
	display: inline-block;
	padding: 0 0.7em;
}
/* Spectra dà larghezza piena a ogni elemento dei contenitori: il nome deve
   restare largo quanto la parola, le parentesi fuori dall'impaginazione */
body .shot-fasi-attive .shot-fase > .shot-fase-nome {
	width: auto !important;
}
body .shot-fasi .shot-par {
	position: absolute !important;
	width: 0.52em !important;
}
.shot-par {
	top: 50%;
	height: 1.2em;
	margin-top: -0.6em;
	background-color: var(--ast-global-color-0);
	pointer-events: none;
}
.shot-par-sx {
	-webkit-mask: var(--shot-parentesi-sx) center / contain no-repeat;
	mask: var(--shot-parentesi-sx) center / contain no-repeat;
}
.shot-par-dx {
	-webkit-mask: var(--shot-parentesi-dx) center / contain no-repeat;
	mask: var(--shot-parentesi-dx) center / contain no-repeat;
}

/* Computer: una coppia sola, che scorre da una fase all'altra */
.shot-fasi > .shot-par {
	left: 0;
	font-size: 30px;
}
.shot-fasi-pronte > .shot-par {
	transition: transform var(--shot-parentesi-durata) var(--shot-parentesi-curva);
}

/* Smartphone e tablet: parentesi aperte che si chiudono sul nome */
.shot-fase-nome .shot-par-sx {
	left: 0.1em;
	transform: translateX(-10px);
}
.shot-fase-nome .shot-par-dx {
	right: 0.1em;
	transform: translateX(10px);
}
.shot-fase-nome .shot-par {
	transition: transform var(--shot-parentesi-durata) var(--shot-parentesi-curva);
}
.shot-fase-nome.shot-chiusa .shot-par {
	transform: none;
}
@media (prefers-reduced-motion: reduce) {
	.shot-par,
	.shot-fasi-pronte > .shot-par {
		transition: none;
	}
}

/* Mission, "Il segno che ci rappresenta": il logotipo originale
   (img/logo-shot/logo-shot-bianco.svg, inserito da js/mission.js) si compone
   sotto il testo, gesto "composizione". Si muovono solo i gruppi delle
   parentesi, in orizzontale; STUDIO compare dopo. Le parentesi partono da
   fuori del disegno, che le nasconde finché non entrano */
.shot-firma {
	margin-top: 40px;
	width: 100%;
	line-height: 0;
}
.shot-firma svg {
	display: block;
	width: 300px;
	max-width: 100%;
	height: auto;
	overflow: hidden;
}
/* Il giallo del logo segue la palette del sito */
.shot-firma #parentesi {
	fill: var(--ast-global-color-0);
}
/* Stato iniziale: parentesi fuori dai lati, STUDIO non visibile */
.shot-firma-pronta #par-sx {
	transform: translateX(var(--shot-firma-da-sx, -40px));
}
.shot-firma-pronta #par-dx {
	transform: translateX(var(--shot-firma-da-dx, 110px));
}
.shot-firma-pronta .shot-firma-studio {
	opacity: 0;
}
/* Composizione: 1,2 s di movimento con la curva comune, poi 0,6 s di dissolvenza */
.shot-firma-pronta.shot-firma-composta #par-sx,
.shot-firma-pronta.shot-firma-composta #par-dx {
	transform: none;
	transition: transform 1.2s var(--shot-parentesi-curva);
}
.shot-firma-pronta.shot-firma-composta .shot-firma-studio {
	opacity: 1;
	transition: opacity 0.6s ease-out 1.2s;
}
@media (max-width: 767px) {
	.shot-firma {
		margin-top: 30px;
	}
	.shot-firma svg {
		width: 220px;
	}
}

/* Stampa e PDF: le misure per smartphone e tablet di Spectra valgono solo a
   schermo, quindi su un foglio A4 l'H1 delle testate resta a 130px e spezza
   le parole lunghe ("marketin/g"). In stampa lo riduciamo e non lo spezziamo */
@media print {
	.wp-block-uagb-advanced-heading h1.uagb-heading-text {
		font-size: 64px !important;
		line-height: 1.1 !important;
		overflow-wrap: normal !important;
		word-break: normal !important;
		hyphens: none !important;
	}
}

/* Smartphone e tablet: velo scuro sulle foto di sfondo dove il testo non
   raggiunge un contrasto di 4.5:1 (misurato a 390px sui pixel sotto ogni testo,
   settembre 2026). Il velo è un'ombra interna: scurisce l'immagine e resta
   sotto il testo. Computer invariato. Le regole usano gli identificativi dei
   blocchi Spectra: se una sezione viene ricostruita vanno aggiornate */
@media (max-width: 921px) {
	.page-id-472 .entry-content .uagb-block-c8a634a7,
	.page-id-472 .entry-content .uagb-block-e560d270,
	.page-id-472 .entry-content .uagb-block-64a2705d,
	.page-id-472 .entry-content .uagb-block-d86a348a,
	.page-id-472 .entry-content .uagb-block-9b4b5c57,
	.page-id-1315 .entry-content .uagb-block-03c69616,
	.page-id-1555 .entry-content .uagb-block-8c715fb3,
	.page-id-1611 .entry-content .uagb-block-8c715fb3,
	.page-id-1767 .entry-content .uagb-block-9024d707,
	.page-id-2391 .entry-content .uagb-block-8c715fb3,
	.page-id-2508 .entry-content .uagb-block-8c715fb3,
	.page-id-3226 .entry-content .uagb-block-8c715fb3,
	.page-id-6878 .entry-content .uagb-block-a17e5c01,
	.page-id-6881 .entry-content .uagb-block-b27f6d01 {
		box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.05);
	}
	.page-id-3 .entry-content .uagb-block-8c715fb3,
	.page-id-472 .entry-content .uagb-block-981e346c,
	.page-id-472 .entry-content .uagb-block-8b1c6903,
	.page-id-1315 .entry-content .uagb-block-b85b8e90,
	.page-id-1315 .entry-content .uagb-block-1fc4fe49,
	.page-id-1773 .entry-content .uagb-block-8c715fb3,
	.page-id-1789 .entry-content .uagb-block-8c715fb3,
	.page-id-2967 .entry-content .uagb-block-8c715fb3,
	.page-id-3026 .entry-content .uagb-block-8c715fb3,
	.page-id-5318 .entry-content .uagb-block-8c715fb3,
	.page-id-5333 .entry-content .uagb-block-8c715fb3,
	.page-id-5379 .entry-content .uagb-block-8c715fb3 {
		box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.10);
	}
	.page-id-472 .entry-content .uagb-block-8b648eed,
	.page-id-472 .entry-content .uagb-block-ac9b9181,
	.page-id-472 .entry-content .uagb-block-e6f7079c,
	.page-id-472 .entry-content .uagb-block-1fbe5171,
	.page-id-1315 .entry-content .uagb-block-4aa6e514 {
		box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.15);
	}
	.page-id-1868 .entry-content .uagb-block-8c715fb3 {
		box-shadow: inset 0 0 0 9999px rgba(0, 0, 0, 0.25);
	}
}

/* Rebranding aziendale, caso Buemi: il vecchio marchio (sole) diventa il nuovo
   (ulivo). Il sole si sposta e diventa il centro, le foglie la chioma, i raggi
   il tronco. Struttura nel blocco HTML della pagina, avvio in js/rebranding.js.
   Senza script e con movimento ridotto restano i due marchi affiancati, fermi */
.shot-buemi-motion {
	width: 100%;
	margin-bottom: 30px;
}
.shot-buemi-motion .etichette {
	display: grid;
	grid-template-columns: 1fr 1fr;
	margin: 0 0 8px;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.shot-buemi-motion .etichette span { text-align: center; }
.shot-buemi-motion .palco {
	position: relative;
	width: 100%;
	aspect-ratio: 2120 / 860;
	background: #fff;
	border-radius: 10px;
	overflow: hidden;
}
.shot-buemi-motion .palco img {
	position: absolute;
	top: 0;
	width: 50%;
	height: 100%;
	max-width: none;
	display: block;
}
.shot-buemi-motion .L { left: 0; }
.shot-buemi-motion .R { left: 50%; }
.shot-buemi-motion .mSun {
	-webkit-mask: radial-gradient(ellipse 9.4% 11.6% at 50% 41.3%, #000 97%, transparent 100%);
	mask: radial-gradient(ellipse 9.4% 11.6% at 50% 41.3%, #000 97%, transparent 100%);
	transform-origin: 50% 41.3%;
}
.shot-buemi-motion .mLeaves {
	clip-path: inset(16% 35.8% 58.5% 35.2%);
	-webkit-mask: radial-gradient(ellipse 9.4% 11.6% at 50% 41.3%, transparent 97%, #000 100%);
	mask: radial-gradient(ellipse 9.4% 11.6% at 50% 41.3%, transparent 97%, #000 100%);
	transform-origin: 49.2% 29%;
}
.shot-buemi-motion .mRays {
	clip-path: inset(41.5% 0 18% 0);
	-webkit-mask: radial-gradient(ellipse 9.4% 11.6% at 50% 41.3%, transparent 97%, #000 100%);
	mask: radial-gradient(ellipse 9.4% 11.6% at 50% 41.3%, transparent 97%, #000 100%);
	transform-origin: 50% 60.5%;
}
.shot-buemi-motion .bSun {
	-webkit-mask: radial-gradient(ellipse 5.2% 6.4% at 49.5% 42.4%, #000 97%, transparent 100%);
	mask: radial-gradient(ellipse 5.2% 6.4% at 49.5% 42.4%, #000 97%, transparent 100%);
}
.shot-buemi-motion .bLeaves {
	clip-path: inset(0 0 53.5% 0);
	-webkit-mask: radial-gradient(ellipse 5.2% 6.4% at 49.5% 42.4%, transparent 97%, #000 100%);
	mask: radial-gradient(ellipse 5.2% 6.4% at 49.5% 42.4%, transparent 97%, #000 100%);
}
.shot-buemi-motion .bTrunk { clip-path: inset(46.5% 0 27% 0); }
.shot-buemi-motion .bText { clip-path: inset(73% 0 0 0); }
/* Stato di base (senza script, movimento ridotto): i due marchi completi */
.shot-buemi-motion .mSun,
.shot-buemi-motion .mLeaves,
.shot-buemi-motion .mRays { opacity: 0; }
/* Pronta a partire: a destra ancora niente */
.shot-buemi-motion.pronta .R { opacity: 0; }
/* In corso: 10 secondi, una volta */
.shot-buemi-motion.via .p {
	animation-duration: 10s;
	animation-fill-mode: both;
	animation-timing-function: cubic-bezier(0.45, 0, 0.2, 1);
}
.shot-buemi-motion.via .Abase { animation-name: shotBuemiBase; }
.shot-buemi-motion.via .mSun { animation-name: shotBuemiSole; }
.shot-buemi-motion.via .mLeaves { animation-name: shotBuemiFoglie; }
.shot-buemi-motion.via .mRays { animation-name: shotBuemiRaggi; }
.shot-buemi-motion.via .bSun { animation-name: shotBuemiCentro; }
.shot-buemi-motion.via .bLeaves { animation-name: shotBuemiChioma; }
.shot-buemi-motion.via .bTrunk { animation-name: shotBuemiTronco; }
.shot-buemi-motion.via .bText { animation-name: shotBuemiNome; }
@keyframes shotBuemiBase { 0%, 8% { opacity: 1; } 12%, 90% { opacity: 0.35; } 98%, 100% { opacity: 1; } }
@keyframes shotBuemiSole { 0%, 12% { transform: none; opacity: 0; } 13% { opacity: 1; transform: none; } 16% { transform: scale(1.12); } 30% { transform: translate(99.5%, 1.16%) scale(0.55); opacity: 1; } 36%, 100% { transform: translate(99.5%, 1.16%) scale(0.55); opacity: 0; } }
@keyframes shotBuemiFoglie { 0%, 34% { transform: none; opacity: 0; } 35% { opacity: 1; transform: none; } 52% { transform: translate(100.85%, -1.5%) scale(1.7, 1.45); opacity: 1; } 58%, 100% { transform: translate(100.85%, -1.5%) scale(1.7, 1.45); opacity: 0; } }
@keyframes shotBuemiRaggi { 0%, 56% { transform: none; opacity: 0; } 57% { opacity: 1; transform: none; } 72% { transform: translate(100%, -1.8%) scale(0.19, 0.64); opacity: 1; } 78%, 100% { transform: translate(100%, -1.8%) scale(0.19, 0.64); opacity: 0; } }
@keyframes shotBuemiCentro { 0%, 29% { opacity: 0; } 36%, 100% { opacity: 1; } }
@keyframes shotBuemiChioma { 0%, 51% { opacity: 0; } 58%, 100% { opacity: 1; } }
@keyframes shotBuemiTronco { 0%, 71% { opacity: 0; } 78%, 100% { opacity: 1; } }
@keyframes shotBuemiNome { 0%, 80% { opacity: 0; } 90%, 100% { opacity: 1; } }
.shot-buemi-motion .didascalia {
	margin: 14px 0 0;
	text-align: center;
}
.shot-buemi-motion .wp-block-buttons {
	display: flex;
	justify-content: center;
	margin-top: 14px;
}
@media (prefers-reduced-motion: reduce) {
	.shot-buemi-motion .p { animation: none !important; }
	.shot-buemi-motion .R { opacity: 1 !important; }
	.shot-buemi-motion .mSun,
	.shot-buemi-motion .mLeaves,
	.shot-buemi-motion .mRays { opacity: 0 !important; }
	.shot-buemi-motion .wp-block-buttons { display: none; }
}

/* Pulsante principale accanto a un pulsante a contorno (es. "Come si
   comincia" in Fotografo aziendale): fondo giallo d'accento, testo scuro */
.entry-content .wp-block-button.shot-pulsante-principale .wp-block-button__link {
	background-color: var(--ast-global-color-0);
	border-color: var(--ast-global-color-0);
	color: var(--ast-global-color-4);
}
.entry-content .wp-block-button.shot-pulsante-principale .wp-block-button__link:hover,
.entry-content .wp-block-button.shot-pulsante-principale .wp-block-button__link:focus-visible {
	background-color: var(--ast-global-color-2);
	border-color: var(--ast-global-color-2);
	color: var(--ast-global-color-4);
}

/* Ancore dei casi studio (link "Leggi il caso" e "Casi raccontati" dal
   Portfolio): il titolo si ferma sotto l'header fisso, non dietro */
.entry-content [id^="case-study"] {
	scroll-margin-top: 120px;
}

/* Home, sezione "Cosa facciamo": pulsanti delle sei card uniformi. Tutta la
   larghezza della colonna, testo centrato, stessa altezza (quella
   dell'etichetta più lunga, su tre righe) e stessa distanza tra un pulsante e
   l'altro. I colori restano quelli dei blocchi. !important perché Spectra
   scrive misure e margini blocco per blocco nel suo file di stile */
.uagb-block-f86a227f .wp-block-uagb-buttons,
.uagb-block-f86a227f .uagb-buttons__wrap,
.uagb-block-f86a227f .wp-block-uagb-buttons-child,
.uagb-block-f86a227f .uagb-button__wrapper {
	width: 100% !important;
	margin: 0 !important;
}
.uagb-block-f86a227f .wp-block-uagb-buttons-child {
	margin-top: 12px !important;
}
.uagb-block-f86a227f .uagb-buttons-repeater {
	display: flex !important;
	width: 100% !important;
	min-height: 64px;
	box-sizing: border-box;
	justify-content: center !important;
	align-items: center !important;
	margin: 0 !important;
	padding: 10px 14px !important;
	text-align: center !important;
}
.uagb-block-f86a227f .uagb-buttons-repeater .uagb-button__link {
	text-align: center !important;
}

/* Pulsante WhatsApp (plugin Chaty).
   Quando si apre la finestrella di chat, Chaty le mette come sfondo
   decorativo l'immagine /images/whatsapp.png, che sul sito non esiste:
   ogni apertura produceva un errore 404.
   Quello sfondo era quasi invisibile (opacità 3,5%), quindi lo togliamo.
   Il pulsante verde resta com'è: è un'icona SVG del plugin. */
.chaty-whatsapp-form::before {
	background-image: none !important;
}
