/*
Theme Name: Hello Elementor Child
Theme URI: https://github.com/elementor/hello-theme-child/
Description: Studio Legale Biocca — child theme of Hello Elementor (header, footer, page transitions, hero and image treatments).
Author: Andrea Veramonti Design Studio
Author URI: https://andreaveramonti.it/
Template: hello-elementor
Version: 2.7.0
Text Domain: hello-elementor-child
License: GNU General Public License v3 or later.
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Tags: flexible-header, custom-colors, custom-menu, custom-logo, editor-style, featured-images, rtl-language-support, threaded-comments, translation-ready
*/

/* ==========================================================================
   Tokens
   ========================================================================== */
:root {
	--slb-ink: #0c1f26;
	--slb-petrol: #123f47;
	--slb-paper: #f4f0e9;
	--slb-brass: #b88a4a;
	--slb-brass-soft: #d3b27c;
	--slb-serif: "Cormorant Garamond", Georgia, "Times New Roman", serif;
	--slb-sans: "Hanken Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;
	--slb-ease: cubic-bezier(.22, 1, .36, 1);
	--slb-ease-io: cubic-bezier(.76, 0, .24, 1);
	--slb-header-h: 5rem;
	--slb-gutter: clamp(1.25rem, 4vw, 3.5rem);
}

html { scroll-behavior: smooth; }
body.slb-theme { margin: 0; background: var(--slb-ink); overflow-x: hidden; }
.screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Anchors under the fixed header */
section[id], [data-elementor-type="wp-page"] > [id], [data-elementor-type="wp-post"] > [id] { scroll-margin-top: 6rem; }

/* Focus */
.slb-theme a:focus-visible,
.slb-theme button:focus-visible {
	outline: 2px solid var(--slb-brass);
	outline-offset: 4px;
}

.slb-skip {
	position: fixed; left: 1rem; top: -4rem; z-index: 10001;
	padding: .75rem 1.25rem; background: var(--slb-paper); color: var(--slb-ink);
	font: 600 .875rem var(--slb-sans); text-decoration: none;
	transition: top .2s var(--slb-ease);
}
.slb-skip:focus { top: 1rem; }

/* ==========================================================================
   Header
   ========================================================================== */
.slb-header {
	position: fixed; inset: 0 0 auto 0; z-index: 9000;
	color: var(--slb-paper);
	transition: transform .6s var(--slb-ease), background-color .5s var(--slb-ease), box-shadow .5s var(--slb-ease);
}
.admin-bar .slb-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .slb-header { top: 46px; } }

.slb-header.is-scrolled {
	background: rgba(12, 31, 38, .88);
	-webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
	box-shadow: 0 1px 0 rgba(244, 240, 233, .08);
}
.slb-header.is-hidden { transform: translateY(calc(-100% - 80px)); }
.slb-header:has(:focus-visible) { transform: none; }

.slb-header__inner {
	display: flex; align-items: center; justify-content: space-between; gap: 2rem;
	min-height: var(--slb-header-h); padding: 0 var(--slb-gutter);
	max-width: 1680px; margin: 0 auto;
}

.slb-brand { display: inline-flex; align-items: center; gap: .9rem; color: inherit; text-decoration: none; }
.slb-brand__mark {
	display: grid; place-items: center; width: 2.6rem; height: 2.6rem;
	border: 1px solid var(--slb-brass); color: var(--slb-brass);
	font: 500 .8rem/1 var(--slb-sans); letter-spacing: .16em;
	transition: background-color .4s var(--slb-ease), color .4s var(--slb-ease);
}
.slb-brand:hover .slb-brand__mark { background: var(--slb-brass); color: var(--slb-ink); }
.slb-brand__name { font: 400 1.35rem/1 var(--slb-serif); letter-spacing: .02em; }
.slb-brand__name em { font-style: italic; color: var(--slb-brass-soft); }
.slb-brand img { max-height: 2.6rem; width: auto; }

.slb-nav .slb-menu { display: flex; align-items: center; gap: clamp(1.25rem, 2.6vw, 2.75rem); list-style: none; margin: 0; padding: 0; }
.slb-nav .slb-menu a {
	position: relative; display: inline-block; padding: .5rem 0;
	color: var(--slb-paper); text-decoration: none;
	font: 400 .78rem/1 var(--slb-sans); letter-spacing: .18em; text-transform: uppercase;
}
.slb-nav .slb-menu a::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: .1rem; height: 1px;
	background: var(--slb-brass); transform: scaleX(0); transform-origin: right;
	transition: transform .5s var(--slb-ease);
}
.slb-nav .slb-menu a:hover::after,
.slb-nav .slb-menu a[aria-current="page"]::after,
.slb-nav .slb-menu .current-menu-item > a::after { transform: scaleX(1); transform-origin: left; }

.slb-nav .slb-menu .is-cta a,
.slb-nav .slb-menu li:last-child.menu-item a { color: var(--slb-brass-soft); padding-right: 1.75rem; }
.slb-nav .slb-menu .is-cta a::before {
	content: ""; position: absolute; right: 0; top: 50%; width: 1.05rem; height: .5rem; margin-top: -.25rem;
	background: currentColor; opacity: .85; transform: translateX(-.3rem);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21 10' fill='none' stroke='%23000' stroke-width='1.5'%3E%3Cpath d='M0 5h19.5M15 .6 19.8 5 15 9.4'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 21 10' fill='none' stroke='%23000' stroke-width='1.5'%3E%3Cpath d='M0 5h19.5M15 .6 19.8 5 15 9.4'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
	transition: transform .5s var(--slb-ease), opacity .4s var(--slb-ease);
}
.slb-nav .slb-menu .is-cta a:hover { color: var(--slb-paper); }
.slb-nav .slb-menu .is-cta a:hover::before { transform: translateX(0); opacity: 1; }
.slb-nav .slb-menu .is-cta a::after { transform: scaleX(1); transform-origin: left; opacity: .55; }
.slb-nav .slb-menu .is-cta a:hover::after { opacity: 1; }

/* Burger */
.slb-burger {
	display: none; position: relative; z-index: 9100;
	width: 3rem; height: 3rem; padding: 0; background: transparent; border: 0; color: var(--slb-paper); cursor: pointer;
}
.slb-burger__bars { position: absolute; inset: 0; }
.slb-burger__bars i {
	position: absolute; left: .75rem; right: .75rem; height: 1px; background: currentColor;
	transition: transform .5s var(--slb-ease), top .5s var(--slb-ease);
}
.slb-burger__bars i:first-child { top: 1.1rem; }
.slb-burger__bars i:last-child { top: 1.75rem; }
.slb-burger[aria-expanded="true"] .slb-burger__bars i:first-child { top: 1.45rem; transform: rotate(45deg); }
.slb-burger[aria-expanded="true"] .slb-burger__bars i:last-child { top: 1.45rem; transform: rotate(-45deg); }

/* Mobile overlay */
.slb-overlay {
	position: fixed; inset: 0; z-index: 9050;
	display: flex; flex-direction: column; justify-content: center; gap: 3rem;
	padding: 6rem var(--slb-gutter) 3rem;
	background: var(--slb-ink); color: var(--slb-paper);
	clip-path: inset(0 0 100% 0); visibility: hidden;
	transition: clip-path .8s var(--slb-ease-io), visibility 0s linear .8s;
}
.slb-overlay.is-open { clip-path: inset(0); visibility: visible; transition: clip-path .8s var(--slb-ease-io), visibility 0s; }
.slb-overlay .slb-menu { display: flex; flex-direction: column; gap: .5rem; list-style: none; margin: 0; padding: 0; }
.slb-overlay .slb-menu li { overflow: hidden; }
.slb-overlay .slb-menu a {
	display: block; padding: .25rem 0; color: var(--slb-paper); text-decoration: none;
	font: 300 clamp(2.25rem, 9vw, 3.5rem)/1.15 var(--slb-serif);
	transform: translateY(110%); transition: transform .9s var(--slb-ease), color .3s;
}
.slb-overlay.is-open .slb-menu a { transform: none; }
.slb-overlay.is-open .slb-menu li:nth-child(1) a { transition-delay: .25s; }
.slb-overlay.is-open .slb-menu li:nth-child(2) a { transition-delay: .32s; }
.slb-overlay.is-open .slb-menu li:nth-child(3) a { transition-delay: .39s; }
.slb-overlay.is-open .slb-menu li:nth-child(4) a { transition-delay: .46s; }
.slb-overlay .slb-menu a:hover { color: var(--slb-brass-soft); }
.slb-overlay__foot { margin: 0; font: 400 .75rem var(--slb-sans); letter-spacing: .2em; text-transform: uppercase; color: var(--slb-brass-soft); }

body.slb-menu-open { overflow: hidden; }

@media (max-width: 900px) {
	.slb-nav { display: none; }
	.slb-burger { display: block; }
}

/* ==========================================================================
   Footer
   ========================================================================== */
.slb-footer { background: var(--slb-ink); color: rgba(244, 240, 233, .78); font: 300 .95rem/1.7 var(--slb-sans); }
.slb-footer a { color: inherit; text-decoration: none; transition: color .3s; }
.slb-footer a:hover { color: var(--slb-brass-soft); }
.slb-footer__grid {
	display: grid; grid-template-columns: 1.3fr 1.2fr .8fr 1fr; gap: clamp(2rem, 4vw, 4rem);
	max-width: 1680px; margin: 0 auto; padding: clamp(4rem, 8vw, 7rem) var(--slb-gutter) 3.5rem;
}
.slb-footer__logo { margin: 0 0 1rem; font: 400 1.9rem/1.1 var(--slb-serif); color: var(--slb-paper); }
.slb-footer__logo em { font-style: italic; color: var(--slb-brass-soft); }
.slb-footer__tagline { margin: 0 0 1.5rem; max-width: 28ch; }
.slb-footer__iso { display: inline-block; padding-bottom: .15rem; border-bottom: 1px solid rgba(184, 138, 74, .6); font-size: .8rem; letter-spacing: .06em; }
.slb-footer__title { margin: 0 0 1.25rem; font: 400 .72rem/1 var(--slb-sans); letter-spacing: .22em; text-transform: uppercase; color: var(--slb-brass); }
.slb-footer__address { font-style: normal; }
.slb-footer__address p, .slb-footer__col p { margin: 0 0 1rem; }
.slb-footer__address strong { font-weight: 600; color: var(--slb-paper); }
.slb-footer__links { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.slb-footer__bar {
	display: flex; flex-wrap: wrap; justify-content: space-between; gap: .75rem 2rem;
	max-width: 1680px; margin: 0 auto; padding: 1.5rem var(--slb-gutter) 2rem;
	border-top: 1px solid rgba(244, 240, 233, .1); font-size: .8rem;
}
.slb-footer__bar p { margin: 0; }
@media (max-width: 1000px) { .slb-footer__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .slb-footer__grid { grid-template-columns: 1fr; } .slb-footer__bar { flex-direction: column; } }

/* ==========================================================================
   Page transition curtain
   ========================================================================== */
.slb-curtain {
	position: fixed; inset: 0; z-index: 10000; pointer-events: none;
	display: grid; place-items: center;
	background: var(--slb-ink); color: var(--slb-brass);
	transform: translateY(100%);
}
.slb-curtain span { position: relative; display: block; font: 300 clamp(2.5rem, 8vw, 5rem)/1 var(--slb-serif); letter-spacing: .3em; padding: 0 0 1.6rem .3em; opacity: 0; transition: opacity .4s; }
.slb-curtain__mark img { display: block; width: clamp(9rem, 20vw, 16rem); height: auto; }
.slb-curtain__mark::after {
	content: ""; position: absolute; left: 50%; bottom: 0; width: min(12rem, 60%); height: 1px;
	background: var(--slb-brass); transform: translateX(-50%);
}
/* The logo is "written" once, on the first page of the visit; later transitions show it still. */
@keyframes slb-write { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes slb-rule { from { transform: translateX(-50%) scaleX(0); } to { transform: translateX(-50%) scaleX(1); } }
html.slb-intro.slb-enter:not(.slb-exit) .slb-curtain__mark img { animation: slb-write .85s var(--slb-ease-io) .05s both; }
html.slb-intro.slb-enter:not(.slb-exit) .slb-curtain__mark::after { transform-origin: left; animation: slb-rule .8s var(--slb-ease-io) .25s both; }
html.slb-enter .slb-curtain { transform: none; }
html.slb-enter .slb-curtain span { opacity: 1; }
html.slb-exit .slb-curtain { transform: translateY(-100%); transition: transform .95s var(--slb-ease-io); }
html.slb-exit .slb-curtain span { opacity: 0; transition: opacity .3s; }
html.slb-leave .slb-curtain { transform: none; transition: transform .6s var(--slb-ease-io); pointer-events: all; }
html.slb-leave .slb-curtain span { opacity: 1; transition: opacity .4s .25s; }

/* ==========================================================================
   Hero (first section of each page; class added by slb.js)
   ========================================================================== */
.slb-hero {
	position: relative; isolation: isolate; overflow: hidden;
	background-color: var(--slb-ink) !important;
	background-image:
		linear-gradient(180deg, rgba(12, 31, 38, .72) 0%, rgba(12, 31, 38, .86) 55%, rgba(12, 31, 38, .98) 100%),
		var(--slb-band-img, var(--slb-hero-img, none)) !important;
	background-size: cover !important;
	background-position: center calc(50% + var(--py, 0px)) !important;
	background-repeat: no-repeat !important;
}
.slb-hero > * { position: relative; z-index: 2; }
.slb-hero::before {
	content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
	background: radial-gradient(520px circle at var(--mx, 70%) var(--my, 30%), rgba(184, 138, 74, .22), transparent 70%);
	mix-blend-mode: screen;
}
.slb-hero::after {
	content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
	background-image: repeating-linear-gradient(90deg, rgba(244, 240, 233, .05) 0 1px, transparent 1px 25%);
	-webkit-mask-image: linear-gradient(180deg, transparent, #000 25%, #000 75%, transparent);
	mask-image: linear-gradient(180deg, transparent, #000 25%, #000 75%, transparent);
}
.slb-hero__mark {
	position: absolute !important; z-index: 1 !important; right: -2vw; bottom: -4vw;
	font: 300 clamp(10rem, 28vw, 30rem)/.8 var(--slb-serif); letter-spacing: -.02em;
	color: transparent; -webkit-text-stroke: 1px rgba(184, 138, 74, .35);
	transform: translateY(var(--py, 0px)); pointer-events: none; user-select: none;
}

/* Hero images per page (post IDs on staging: 7 home, 31 aree, 32 partners, 33 contatti, 34 lavora) */
.page-id-7  { --slb-hero-img: url("https://images.unsplash.com/photo-1531429745839-827a6a45e040?auto=format&fit=crop&w=2200&q=70"); }
.page-id-7 { --slb-band-img: url("https://images.unsplash.com/photo-1780445333332-3abb7dde9ad1?auto=format&fit=crop&w=2200&q=70"); }
.page-id-31 { --slb-hero-img: url("https://images.unsplash.com/photo-1780445333332-3abb7dde9ad1?auto=format&fit=crop&w=2200&q=70"); }
.page-id-32 { --slb-hero-img: url("https://images.unsplash.com/photo-1698360308566-5e2e8353dbf2?auto=format&fit=crop&w=2200&q=70"); }
.page-id-33 { --slb-hero-img: url("https://images.unsplash.com/photo-1575399877732-9363881b907e?auto=format&fit=crop&w=2200&q=70"); }
.page-id-81 { --slb-hero-img: url("https://images.unsplash.com/photo-1531429745839-827a6a45e040?auto=format&fit=crop&w=2200&q=70"); }
.page-id-82 { --slb-hero-img: url("https://images.unsplash.com/photo-1780445333332-3abb7dde9ad1?auto=format&fit=crop&w=2200&q=70"); }
.page-id-34 { --slb-hero-img: url("https://images.unsplash.com/photo-1531429745839-827a6a45e040?auto=format&fit=crop&w=2200&q=70"); }

/* Closing bands get the same treatment, lighter */
.slb-band {
	background-image:
		linear-gradient(90deg, rgba(18, 63, 71, .96), rgba(12, 31, 38, .88)),
		var(--slb-band-img, var(--slb-hero-img, none)) !important;
	background-size: cover !important; background-position: center !important;
}
.slb-band h1, .slb-band h2, .slb-band h3 { color: var(--slb-paper) !important; }
.slb-band p { color: rgba(244, 240, 233, .78) !important; }

/* ==========================================================================
   Photos: tone + reveal
   ========================================================================== */
.slb-photo { filter: saturate(.82) contrast(1.03); }

html.js .slb-photo { clip-path: inset(0 0 100% 0); transition: clip-path .85s var(--slb-ease); }
html.js .slb-photo.is-in { clip-path: inset(0); }

/* ==========================================================================
   Reduced motion
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; transition-delay: 0s !important; }
	.slb-curtain { display: none; }
	html.js .slb-photo { clip-path: none; }
	.slb-hero::before { display: none; }
}

/* Logo */
.slb-header .slb-brand__logo { display: block; height: 2.75rem !important; width: auto !important; max-width: 11rem; object-fit: contain; }
.slb-footer .slb-footer__logoimg { display: block; height: 3.25rem !important; width: auto !important; max-width: 11rem; margin: 0 0 1.25rem; object-fit: contain; }
.slb-footer .slb-footer__iso { display: flex; flex-direction: column; align-items: flex-start; gap: .75rem; border-bottom: 0; }
.slb-footer .slb-footer__isoimg { height: 3.5rem !important; width: auto !important; max-width: 9rem; background: #fff; padding: .3rem; border-radius: 3px; }

/* ==========================================================================
   Buttons — minimal text links with an animated rule and arrow
   ========================================================================== */
a.e-button-base,
.slb-footer a.slb-footer__cta {
	--slb-btn-ink: var(--slb-paper);
	--slb-gap: 1rem;
	display: inline-flex !important; align-items: center; gap: var(--slb-gap);
	width: auto !important; min-height: 0 !important; margin-top: .5rem;
	padding: .55rem 0 .65rem !important;
	background-color: transparent !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important;
	color: var(--slb-btn-ink) !important; text-decoration: none !important;
	font: 500 .78rem/1.2 var(--slb-sans) !important; letter-spacing: .2em !important; text-transform: uppercase !important;
	background-image:
		linear-gradient(var(--slb-brass), var(--slb-brass)),
		linear-gradient(color-mix(in srgb, var(--slb-btn-ink) 38%, transparent), color-mix(in srgb, var(--slb-btn-ink) 38%, transparent)) !important;
	background-repeat: no-repeat !important;
	background-position: 0 100%, 0 100% !important;
	background-size: 0% 1px, 100% 1px !important;
	transition: background-size .7s var(--slb-ease), color .4s var(--slb-ease) !important;
}
a.e-button-base::after,
.slb-footer a.slb-footer__cta::after {
	content: ""; flex: none; width: 2.6rem; height: 1.5px; background: currentColor; position: relative;
	transition: width .6s var(--slb-ease), background-color .4s var(--slb-ease);
	-webkit-mask: none; mask: none;
}
a.e-button-base:hover, a.e-button-base:focus-visible,
.slb-footer a.slb-footer__cta:hover { background-size: 100% 1px, 100% 1px !important; color: var(--slb-brass-soft) !important; }
a.e-button-base:hover::after, .slb-footer a.slb-footer__cta:hover::after { width: 3.8rem; background: var(--slb-brass); }
/* arrow head — sits at the end of the growing rule */
a.e-button-base::before, .slb-footer a.slb-footer__cta::before {
	content: ""; order: 2; flex: none; align-self: center;
	width: .62rem; height: .62rem; margin-left: calc(-1 * var(--slb-gap) - .76rem);
	border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor;
	transform: rotate(45deg);
	transition: border-color .4s var(--slb-ease), transform .6s var(--slb-ease);
}
a.e-button-base::after, .slb-footer a.slb-footer__cta::after { order: 1; align-self: center; }
a.e-button-base:hover::before, .slb-footer a.slb-footer__cta:hover::before { border-color: var(--slb-brass); }
a.e-button-base.btn-solid::before { border-color: var(--slb-brass); }
a.e-button-base.slb-on-light:hover::before { border-color: var(--slb-ink); }
/* primary: brass rule always on */
a.e-button-base.btn-solid { background-size: 100% 1px, 100% 1px !important; }
a.e-button-base.btn-solid::after { background: var(--slb-brass); }
/* on light sections */
a.e-button-base.slb-on-light { --slb-btn-ink: var(--slb-ink); }
a.e-button-base.slb-on-light:hover, a.e-button-base.slb-on-light:focus-visible { color: var(--slb-petrol) !important; }
a.e-button-base.slb-on-light.btn-solid { background-image: linear-gradient(var(--slb-brass), var(--slb-brass)), linear-gradient(var(--slb-brass), var(--slb-brass)) !important; }
a.e-button-base.slb-on-light:hover::after { width: 3.4rem; background: var(--slb-ink); }

/* Closing band — typography and button */
.slb-band { position: relative; }
.slb-band::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1px; background: linear-gradient(90deg, var(--slb-brass), rgba(184,138,74,0) 70%); }
.slb-band h2 { font-size: clamp(2.4rem, 5vw, 4.4rem) !important; line-height: 1.04 !important; color: var(--slb-paper) !important; }
.slb-band p { color: rgba(244, 240, 233, .72) !important; }
.slb-band a.e-button-base, a.e-button-base, .slb-footer a.slb-footer__cta { white-space: nowrap !important; flex: none; }
.slb-band a.e-button-base { font-size: .86rem !important; --slb-btn-ink: var(--slb-paper); --slb-gap: 1.4rem; }
.slb-band a.e-button-base::after { width: 4.4rem; }
.slb-band a.e-button-base:hover::after { width: 6.4rem; }
.slb-footer a.slb-footer__cta { margin-top: 1rem; }

/* ==========================================================================
   Forms
   ========================================================================== */
.slb-form { --slb-ink-f: var(--slb-paper); --slb-line: rgba(244, 240, 233, .28); width: 100%; max-width: 44rem; color: var(--slb-ink-f); }
.slb-form.slb-on-light { --slb-ink-f: var(--slb-ink); --slb-line: rgba(12, 31, 38, .28); }
.slb-form__hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.slb-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 2rem; }
@media (max-width: 640px) { .slb-form__grid { grid-template-columns: 1fr; } }

.slb-field { position: relative; margin: 0 0 1.6rem; padding-top: 1.1rem; }
.slb-field input[type="text"], .slb-field input[type="email"], .slb-field input[type="tel"],
.slb-field select, .slb-field textarea {
	display: block; width: 100%; margin: 0; padding: .55rem 0 .6rem; border: 0; border-radius: 0; background: transparent !important;
	border-bottom: 1px solid var(--slb-line); color: inherit; font: 400 1.05rem/1.4 var(--slb-sans); outline: 0; box-shadow: none; resize: vertical;
	transition: border-color .4s var(--slb-ease); -webkit-appearance: none; appearance: none;
}
.slb-field textarea { min-height: 7rem; }
.slb-field select { cursor: pointer; padding-right: 1.5rem; background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%) !important; background-position: calc(100% - 9px) 55%, calc(100% - 4px) 55% !important; background-size: 5px 5px !important; background-repeat: no-repeat !important; }
.slb-field select option { color: #0c1f26; }
.slb-field > label {
	position: absolute; left: 0; top: 1.65rem; pointer-events: none; transform-origin: left top;
	font: 400 1rem/1.2 var(--slb-sans); color: color-mix(in srgb, var(--slb-ink-f) 62%, transparent);
	transition: transform .45s var(--slb-ease), color .3s var(--slb-ease);
}
.slb-field > label em { font-style: normal; opacity: .7; }
.slb-field input:focus ~ label, .slb-field input:not(:placeholder-shown) ~ label,
.slb-field textarea:focus ~ label, .slb-field textarea:not(:placeholder-shown) ~ label,
.slb-field select ~ label { transform: translateY(-1.45rem) scale(.78); letter-spacing: .06em; }
.slb-field input:focus ~ label, .slb-field textarea:focus ~ label, .slb-field select:focus ~ label { color: var(--slb-brass); }
.slb-field input:focus, .slb-field textarea:focus, .slb-field select:focus { border-bottom-color: var(--slb-brass); }
.slb-field.is-invalid input, .slb-field.is-invalid textarea, .slb-field.is-invalid select { border-bottom-color: #c0553a; }
.slb-field__error { display: block; min-height: 0; max-height: 0; overflow: hidden; margin-top: 0; color: #c0553a; font-size: .8rem; line-height: 1.3; opacity: 0; transition: max-height .4s var(--slb-ease), opacity .4s var(--slb-ease), margin .4s var(--slb-ease); }
.slb-field.is-invalid .slb-field__error { max-height: 3rem; margin-top: .4rem; opacity: 1; }
.slb-form.slb-on-light .slb-field__error, .slb-form:not(.slb-on-light) .slb-field__error { color: #d9694b; }
.slb-form.slb-on-light .slb-field__error { color: #b2432a; }

/* file */
.slb-field--file { padding-top: 0; }
.slb-field--file input[type="file"] { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.slb-field--file > label {
	position: static; display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem 1.25rem; transform: none !important; pointer-events: none;
	padding: 1.1rem 0; border-bottom: 1px dashed var(--slb-line); color: var(--slb-ink-f); transition: border-color .4s var(--slb-ease);
}
.slb-field--file:hover > label, .slb-field--file:focus-within > label { border-bottom-color: var(--slb-brass); }
.slb-file__label { font: 500 .78rem/1.2 var(--slb-sans); letter-spacing: .2em; text-transform: uppercase; }
.slb-file__hint { font-size: .85rem; opacity: .6; }
.slb-file__name { flex-basis: 100%; font-size: .95rem; color: var(--slb-brass); }

/* consent */
.slb-field--check { padding-top: 0; display: grid; grid-template-columns: auto 1fr; gap: .15rem 1rem; align-items: start; }
.slb-field--check input { position: absolute; opacity: 0; width: 1.25rem; height: 1.25rem; margin: .1rem 0 0; cursor: pointer; }
.slb-field--check > label { position: static; display: block; grid-column: 2; transform: none !important; pointer-events: auto; font-size: .88rem; line-height: 1.55; color: color-mix(in srgb, var(--slb-ink-f) 78%, transparent); cursor: pointer; }
.slb-field--check > label::before {
	content: ""; position: absolute; left: 0; top: .18rem; width: 1.15rem; height: 1.15rem; border: 1px solid var(--slb-line);
	transition: background-color .3s var(--slb-ease), border-color .3s var(--slb-ease);
}
.slb-field--check > label::after {
	content: ""; position: absolute; left: .4rem; top: .3rem; width: .3rem; height: .62rem; border: solid var(--slb-ink); border-width: 0 1.5px 1.5px 0;
	transform: rotate(40deg) scale(0); transition: transform .3s var(--slb-ease);
}
.slb-field--check { padding-left: 2.1rem; display: block; }
.slb-field--check > label { grid-column: auto; }
.slb-field--check input:checked ~ label::before { background: var(--slb-brass); border-color: var(--slb-brass); }
.slb-field--check input:checked ~ label::after { transform: rotate(40deg) scale(1); }
.slb-field--check input:focus-visible ~ label::before { outline: 2px solid var(--slb-brass); outline-offset: 3px; }
.slb-field--check a { color: inherit; text-decoration: underline; text-decoration-color: var(--slb-brass); text-underline-offset: .2em; }
.slb-field--check .slb-field__error { position: static; }

/* submit — same language as the site's text buttons */
.slb-form__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 2rem; margin-top: 2rem; }
button.slb-form__submit {
	--slb-gap: 1.2rem;
	display: inline-flex; align-items: center; gap: var(--slb-gap); padding: .55rem 0 .65rem; margin: 0; cursor: pointer;
	background: transparent; border: 0; border-radius: 0; color: var(--slb-ink-f); white-space: nowrap;
	font: 500 .8rem/1.2 var(--slb-sans); letter-spacing: .2em; text-transform: uppercase;
	background-image: linear-gradient(var(--slb-brass), var(--slb-brass)), linear-gradient(var(--slb-brass), var(--slb-brass));
	background-repeat: no-repeat; background-position: 0 100%, 0 100%; background-size: 100% 1px, 100% 1px;
	transition: color .4s var(--slb-ease);
}
button.slb-form__submit::after { content: ""; order: 1; flex: none; width: 3rem; height: 1.5px; background: var(--slb-brass); transition: width .6s var(--slb-ease); }
button.slb-form__submit::before {
	content: ""; order: 2; flex: none; width: .62rem; height: .62rem; margin-left: calc(-1 * var(--slb-gap) - .76rem);
	border-top: 1.5px solid var(--slb-brass); border-right: 1.5px solid var(--slb-brass); transform: rotate(45deg);
}
/* neutralizza il rosa del reset di Hello su button:hover / :focus */
button.slb-form__submit:hover, button.slb-form__submit:focus, button.slb-form__submit:active {
	background-color: transparent !important; color: var(--slb-ink-f) !important; text-decoration: none;
}
button.slb-form__submit:hover { color: var(--slb-brass) !important; }
button.slb-form__submit:hover::after, button.slb-form__submit:focus-visible::after { width: 4.4rem; }
button.slb-form__submit:focus-visible { outline: 2px solid var(--slb-brass); outline-offset: 6px; }
.slb-form.is-sending button.slb-form__submit { opacity: .5; pointer-events: none; }
.slb-form.is-sending button.slb-form__submit span::after { content: "…"; }
.slb-form__status { margin: 0; font-size: .95rem; line-height: 1.5; opacity: 0; transform: translateY(.4rem); transition: opacity .5s var(--slb-ease), transform .5s var(--slb-ease); }
.slb-form__status.is-visible { opacity: 1; transform: none; }
.slb-form__status.is-ok { color: var(--slb-brass); }
.slb-form__status.is-error { color: #b2432a; }
.slb-form:not(.slb-on-light) .slb-form__status.is-error { color: #e08a70; }
.slb-form.is-done .slb-form__grid, .slb-form.is-done .slb-field, .slb-form.is-done button.slb-form__submit { display: none; }
.slb-form.is-done .slb-form__status { font: 400 1.6rem/1.3 var(--slb-serif); color: var(--slb-ink-f); }

/* Politica della qualità — list items get a brass rule (border-left is not available in atomic styles) */
.page-id-81 .elementor-element-46f76a1d > p:is(:nth-child(2), :nth-child(3), :nth-child(4), :nth-child(10), :nth-child(11), :nth-child(12), :nth-child(17), :nth-child(18), :nth-child(19), :nth-child(20)) { box-shadow: inset 1px 0 0 var(--slb-brass); }

/* Long-form text pages */
.page-id-81 a, .page-id-82 a { text-decoration: underline; text-decoration-color: var(--slb-brass); text-underline-offset: .2em; }

/* Long-form pages: theme typography (font-family isn't kept in atomic inline styles) */
.page-id-81 [data-elementor-type] h1, .page-id-81 [data-elementor-type] h2,
.page-id-82 [data-elementor-type] h1, .page-id-82 [data-elementor-type] h2 { font-family: var(--slb-serif) !important; }
.page-id-81 [data-elementor-type] p, .page-id-82 [data-elementor-type] p { font-family: var(--slb-sans) !important; }
.page-id-81 [data-elementor-type] h1, .page-id-82 [data-elementor-type] h1 { font-weight: 300; }
.page-id-81 [data-elementor-type] h2, .page-id-82 [data-elementor-type] h2 { font-weight: 400; }
.page-id-81 [data-elementor-type] strong, .page-id-82 [data-elementor-type] strong { font-weight: 600; color: var(--slb-ink); }

/* Aree di attività: il testo parte alla stessa altezza del titolo (non dell'etichetta) */
@media (min-width: 1025px) {
	.page-id-31 [data-elementor-type] > section:not(:first-child):not(:last-child) > :nth-child(2) { padding-top: 50px; }
}

/* ==========================================================================
   Mappa "Dove operiamo"
   ========================================================================== */
.e-flexbox-base:has(> .slb-map) {
	position: relative;
	color: var(--slb-paper);
	background:
		radial-gradient(58% 62% at 72% 52%, rgba(18, 63, 71, .55), rgba(18, 63, 71, 0) 72%),
		linear-gradient(180deg, #0a191f 0%, var(--slb-ink) 100%);
	overflow: hidden;
}
.e-flexbox-base:has(> .slb-map) .eyebrow { color: var(--slb-brass-soft); }
.e-flexbox-base:has(> .slb-map) .h2-section { color: var(--slb-paper); }
.e-flexbox-base:has(> .slb-map) .body-text { color: rgba(244, 240, 233, .72); max-width: 36rem; }

.slb-map {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
	gap: clamp(2rem, 6vw, 6rem);
	align-items: center;
	width: 100%;
}

/* Pannello */
.slb-map__panel { display: flex; flex-direction: column; justify-content: space-between; gap: 2.5rem; min-height: 27rem; }
.slb-map__view { display: flex; flex-direction: column; }
.slb-map__view > * { margin: 0; }
.slb-map__kicker { font: 500 .72rem/1 var(--slb-sans); letter-spacing: .24em; text-transform: uppercase; color: var(--slb-brass-soft); }
.slb-map__big { display: flex; align-items: baseline; gap: 1rem; margin-top: 1.1rem !important; }
.slb-map__num { font: 300 clamp(4.2rem, 7.6vw, 7.2rem)/.9 "Newsreader", var(--slb-serif); color: var(--slb-paper); letter-spacing: -.02em; font-variant-numeric: lining-nums; }
.slb-map__unit { font: 400 clamp(1.4rem, 2vw, 1.9rem)/1 var(--slb-serif); color: var(--slb-brass-soft); font-style: italic; }
.slb-map__name { font: 300 clamp(2.6rem, 4.4vw, 4rem)/1.04 var(--slb-serif); color: var(--slb-paper); margin-top: 1rem !important; letter-spacing: -.01em; }
.slb-map__sub { font: 500 .72rem/1 var(--slb-sans); letter-spacing: .2em; text-transform: uppercase; color: rgba(244, 240, 233, .5); margin-top: 1.8rem !important; }
.slb-map__cities { list-style: none; padding: 0; margin: 1rem 0 0 !important; display: grid; grid-template-columns: 1fr 1fr; column-gap: 2rem; }
.slb-map__cities li {
	position: relative; padding: .7rem 0 .7rem 0; font: 400 1.12rem/1.3 var(--slb-sans); color: rgba(244, 240, 233, .9);
	border-top: 1px solid rgba(244, 240, 233, .13);
}
.slb-map__cities li.is-sede { color: var(--slb-brass-soft); padding-left: 1.15rem; }
.slb-map__cities li.is-sede::before {
	content: ""; position: absolute; left: 0; top: 50%; width: .5rem; height: .5rem; margin-top: -.25rem; border-radius: 50%; background: var(--slb-brass-soft);
}
.slb-map__cities li.is-sede::after {
	content: "sede"; margin-left: .7rem; font: 500 .62rem/1 var(--slb-sans); letter-spacing: .2em; text-transform: uppercase; color: rgba(211, 178, 124, .65);
}
.slb-map__hint { font: 400 .9rem/1.5 var(--slb-sans); color: rgba(244, 240, 233, .5); margin-top: 1.6rem !important; }
.slb-map__hint-touch { display: none; }
@media (hover: none) { .slb-map__hint-pointer { display: none; } .slb-map__hint-touch { display: inline; } }

.slb-map__legend { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .6rem 2rem; font: 400 .82rem/1 var(--slb-sans); color: rgba(244, 240, 233, .55); }
.slb-map__legend li { display: inline-flex; align-items: center; gap: .6rem; }
.slb-map__key { display: inline-block; width: .7rem; height: .7rem; }
.slb-map__key--sede { border-radius: 50%; background: var(--slb-brass-soft); box-shadow: 0 0 0 4px rgba(211, 178, 124, .18); }
.slb-map__key--reg { background: rgba(184, 138, 74, .45); border: 1px solid var(--slb-brass-soft); }

/* Animazione di cambio vista */
.slb-map__view.is-anim .slb-map__kicker,
.slb-map__view.is-anim .slb-map__big,
.slb-map__view.is-anim .slb-map__name,
.slb-map__view.is-anim .slb-map__sub,
.slb-map__view.is-anim .slb-map__hint { animation: slb-map-rise .6s var(--slb-ease) both; }
.slb-map__view.is-anim .slb-map__cities li { animation: slb-map-rise .6s var(--slb-ease) both; animation-delay: var(--d, 0ms); }
@keyframes slb-map-rise { from { opacity: 0; transform: translateY(.7rem); } to { opacity: 1; transform: none; } }

/* Mappa */
.slb-map__stage { position: relative; display: flex; justify-content: center; }
.slb-map__stage::before {
	content: ""; position: absolute; inset: 6% 8%; border-radius: 50%;
	background: radial-gradient(closest-side, rgba(211, 178, 124, .09), rgba(211, 178, 124, 0));
	pointer-events: none;
}
.slb-map__svg { position: relative; width: 100%; max-width: 560px; height: auto; max-height: 78vh; overflow: visible; }
.slb-map__r {
	fill: rgba(244, 240, 233, .035); stroke: rgba(244, 240, 233, .22); stroke-width: .8; stroke-linejoin: round;
	stroke-dasharray: 1; stroke-dashoffset: 0; vector-effect: none; outline: none;
}
.slb-map__r.is-active { fill: rgba(184, 138, 74, .30); stroke: rgba(211, 178, 124, .75); cursor: pointer; transition: fill .45s var(--slb-ease), stroke .45s, filter .45s; }
.slb-map__r.is-active:hover, .slb-map__r.is-active.is-on, .slb-map__r.is-active:focus-visible { fill: rgba(211, 178, 124, .62); stroke: #f1dcb4; filter: drop-shadow(0 0 14px rgba(211, 178, 124, .35)); }

/* Disegno dei contorni all'ingresso */
html.js .slb-map:not(.is-in) .slb-map__r { stroke-dashoffset: 1; fill-opacity: 0; }
html.js .slb-map .slb-map__r { transition: stroke-dashoffset 1.1s var(--slb-ease-io) calc(var(--i, 0) * 25ms), fill-opacity .7s ease calc(.45s + var(--i, 0) * 25ms); }
html.js .slb-map .slb-map__r.is-active { transition: stroke-dashoffset 1.1s var(--slb-ease-io) calc(var(--i, 0) * 25ms), fill-opacity .7s ease calc(.45s + var(--i, 0) * 25ms), fill .45s var(--slb-ease), stroke .45s, filter .45s; }

/* Sedi */
.slb-map__sede { opacity: 1; transition: opacity .6s ease 1s; }
html.js .slb-map:not(.is-in) .slb-map__sede { opacity: 0; }
.slb-map__sede circle { transform-box: fill-box; transform-origin: center; }
.slb-map__dot { fill: #f1dcb4; stroke: var(--slb-ink); stroke-width: 1.4; }
.slb-map__ring { fill: rgba(211, 178, 124, .45); animation: slb-map-pulse 2.8s ease-out infinite; animation-delay: calc(var(--k, 0) * .7s); }
@keyframes slb-map-pulse { 0% { transform: scale(.8); opacity: .8; } 100% { transform: scale(4.2); opacity: 0; } }
.slb-map__label { font: 500 10.5px/1 var(--slb-sans); letter-spacing: .18em; text-transform: uppercase; fill: var(--slb-paper); paint-order: stroke; stroke: var(--slb-ink); stroke-width: 3.2px; stroke-linejoin: round; pointer-events: none; }

.slb-map__sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

@media (max-width: 900px) {
	.slb-map { grid-template-columns: 1fr; gap: 2.5rem; }
	.slb-map__stage { order: -1; }
	.slb-map__svg { max-width: 420px; max-height: none; }
	.slb-map__panel { min-height: 0; }
	.slb-map__view { min-height: 23rem; }
	.slb-map__label { font-size: 12px; }
}
@media (max-width: 480px) {
	.slb-map__cities { grid-template-columns: 1fr 1fr; column-gap: 1.2rem; }
	.slb-map__cities li { font-size: 1rem; }
}
@media (prefers-reduced-motion: reduce) {
	.slb-map__ring, .slb-map__view.is-anim * { animation: none !important; }
	html.js .slb-map:not(.is-in) .slb-map__r { stroke-dashoffset: 0; fill-opacity: 1; }
	html.js .slb-map:not(.is-in) .slb-map__sede { opacity: 1; }
}
.e-flexbox-base:has(> .slb-map) > p:empty { display: none; }

/* ==========================================================================
   Effetti: Aree (Home), Chi siamo, Partners, magnetico, schede sede
   ========================================================================== */

/* --- Aree in Home: riga evidenziata, le altre si attenuano, anteprima foto --- */
.slb-arealist > a { transition: opacity .5s var(--slb-ease), padding .6s var(--slb-ease); }
.slb-arealist > a h3, .slb-arealist > a span:last-child { transition: transform .7s var(--slb-ease), color .4s; }
.slb-arealist.has-hot > a:not(.is-hot) { opacity: .3 !important; }
.slb-arealist > a.is-hot h3 { transform: translateX(1.1rem); }
.slb-arealist > a.is-hot span:last-child { transform: translateX(.7rem); color: var(--slb-brass); }

/* --- Chi siamo: parole che si accendono --- */
.slb-words .slb-w { opacity: var(--o, .16); transition: opacity .35s linear; }

/* --- Partners: b/n che si colora, zoom, sottolineatura sul nome --- */
@media (hover: hover) and (pointer: fine) {
	.page-id-32 [data-elementor-type] img {
		filter: grayscale(1) contrast(1.04); transform: translateY(0); box-shadow: 0 0 0 rgba(12, 31, 38, 0);
		transition: filter .8s var(--slb-ease), transform .9s var(--slb-ease), box-shadow .9s var(--slb-ease);
	}
	.page-id-32 [data-elementor-type] div:hover > img { filter: grayscale(0) saturate(.95); transform: translateY(-6px); box-shadow: 0 22px 44px rgba(12, 31, 38, .22); }
	.page-id-32 [data-elementor-type] h3 {
		display: inline-block; justify-self: start; width: fit-content;
		background: linear-gradient(var(--slb-brass), var(--slb-brass)) 0 100% / 0 1px no-repeat;
		padding-bottom: .12em; transition: background-size .8s var(--slb-ease), transform .7s var(--slb-ease);
	}
	.page-id-32 [data-elementor-type] div:hover > h3 { background-size: 100% 1px; transform: translateX(.35rem); }
}

/* --- Cursore magnetico --- */

/* --- Contatti: schede sede selezionabili --- */
.slb-sede { position: relative; cursor: pointer; transition: background-color .5s var(--slb-ease), padding .6s var(--slb-ease); outline: 0; }
.slb-sede::before {
	content: ""; position: absolute; left: 0; top: -1px; height: 2px; width: 0; background: var(--slb-brass); transition: width .8s var(--slb-ease);
}
.slb-sede::after {
	content: "Scrivi a questa sede  \2192"; display: block; margin-top: .9rem; font: 500 .68rem/1 var(--slb-sans); letter-spacing: .2em; text-transform: uppercase;
	color: var(--slb-brass); opacity: 0; transform: translateY(.4rem); transition: opacity .5s ease, transform .6s var(--slb-ease);
}
.slb-sede:hover::before, .slb-sede:focus-visible::before, .slb-sede.is-selected::before { width: 100%; }
.slb-sede:hover::after, .slb-sede:focus-visible::after { opacity: 1; transform: none; }
.slb-sede.is-selected::after { content: "Sede selezionata nel modulo  \2713"; opacity: 1; transform: none; }
.slb-sede:focus-visible { box-shadow: 0 0 0 2px rgba(184, 138, 74, .55); }
@media (hover: none) { .slb-sede::after { opacity: .85; transform: none; } }

@media (prefers-reduced-motion: reduce) {
	.slb-arealist > a, .slb-arealist > a h3, .slb-sede::before, .slb-sede::after { transition: none !important; }
}

/* Aree in Home: niente spostamento/riquadro nativo della riga, nessuno sfondo: si accende solo la scritta */
.slb-arealist > a, .slb-arealist > a:hover, .slb-arealist > a:focus-visible {
	transform: none !important; background: transparent !important; position: relative; isolation: isolate;
}
/* ==========================================================================
   Cursore personalizzato (solo mouse): pallino, anello sui link, pillola magnetica sui pulsanti
   ========================================================================== */
.slb-cursor {
	position: fixed; left: 0; top: 0; z-index: 99999; width: 10px; height: 10px; border-radius: 50%;
	background: #c9a05c; box-shadow: 0 0 0 1px rgba(12, 31, 38, .35), 0 0 0 4px rgba(201, 160, 92, .18);
	pointer-events: none; opacity: 1; will-change: transform, width, height;
	transition: width .45s var(--slb-ease), height .45s var(--slb-ease), border-radius .45s var(--slb-ease),
		background-color .35s ease, box-shadow .35s ease, opacity .25s ease;
}
.slb-cursor.is-off { opacity: 0; }
.slb-cursor.is-down { width: 7px; height: 7px; }
.slb-cursor.is-ring { width: 44px; height: 44px; background: rgba(201, 160, 92, .14); box-shadow: 0 0 0 1px rgba(201, 160, 92, .9); }
.slb-cursor.is-pill { border-radius: 999px; background: rgba(201, 160, 92, .16); box-shadow: 0 0 0 1px rgba(201, 160, 92, .85); }
.slb-cursor.is-pill.is-down { transform-origin: center; }
@media (hover: hover) and (pointer: fine) {
	html.slb-cur-on, html.slb-cur-on *:not(input):not(textarea):not(select):not(option) { cursor: none !important; }
	html.slb-cur-on #wpadminbar, html.slb-cur-on #wpadminbar * { cursor: auto !important; }
}
@media (prefers-reduced-motion: reduce) { .slb-cursor { transition: none; } }

/* Indirizzi delle sedi -> Google Maps: sottolineatura ottone in hover */
a.e-paragraph-link-base[href*="google.com/maps"] {
	background: linear-gradient(var(--slb-brass), var(--slb-brass)) 0 100% / 0 1px no-repeat;
	padding-bottom: .15em; transition: background-size .6s var(--slb-ease), color .3s;
}
a.e-paragraph-link-base[href*="google.com/maps"]:hover, a.e-paragraph-link-base[href*="google.com/maps"]:focus-visible { background-size: 100% 1px; color: var(--slb-brass); }
