/* ==========================================================================
   Tafuno – stili base del tema
   REGOLA D'ORO: quasi tutto è dentro :where() (specificità 0) e NON c'è nessun !important.
   Qualsiasi impostazione fatta in Elementor (Impostazioni sito o singolo widget) vince sempre.
   Colori e font arrivano dalle variabili globali di Elementor (--e-global-*), con fallback.
   ========================================================================== */

:root{
	--tf-black: var(--e-global-color-primary, #000);
	--tf-text: var(--e-global-color-text, #1a1a1a);
	--tf-muted: var(--e-global-color-secondary, #6b6b6b);
	--tf-white: var(--e-global-color-accent, #fff);
	--tf-beige: var(--e-global-color-tf_beige, #f8f6f5);
	--tf-line: var(--e-global-color-tf_line, #e5e5e5);
	--tf-font-title: var(--e-global-typography-primary-font-family, "Italiana"), serif;
	--tf-font-body: var(--e-global-typography-text-font-family, "Jost"), sans-serif;
	--tf-font-label: var(--e-global-typography-accent-font-family, "Jost"), sans-serif;
	--tf-ease: cubic-bezier(.16,1,.3,1);
	--tf-ease-io: cubic-bezier(.65,0,.35,1);
	--tf-container: 1300px;
	--tf-gutter: clamp(20px, 3vw, 40px);
	--tf-header-h: 0px;
}

/* ---------- Reset leggero ---------- */
:where(*,*::before,*::after){box-sizing:border-box;}
:where(html){-webkit-text-size-adjust:100%;scroll-behavior:auto;}
:where(body){margin:0;background:#fff;color:var(--tf-text);font-family:var(--tf-font-body);font-size:16px;line-height:1.7;letter-spacing:.02em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
:where(img,svg,video){max-width:100%;height:auto;vertical-align:middle;}
:where(a){color:inherit;text-decoration:none;transition:color .3s var(--tf-ease);}
:where(p){margin:0 0 1em;}
:where(h1,h2,h3,h4){font-family:var(--tf-font-title);font-weight:400;text-transform:uppercase;letter-spacing:.04em;line-height:1.1;color:var(--tf-black);margin:0 0 .5em;}
:where(h1){font-size:clamp(52px, 1.5rem + 6vw, 120px);line-height:1;}
:where(h2){font-size:clamp(36px, 2.2rem + 1.6vw, 56px);}
:where(h3){font-size:clamp(30px, 1.8rem + 1.2vw, 46px);}
:where(h4){font-size:clamp(26px, 1.5rem + .6vw, 35px);}
:where(h5){font-family:var(--e-global-typography-secondary-font-family,"Jost"),sans-serif;font-size:20px;font-weight:400;line-height:1.4;margin:0 0 .5em;color:var(--tf-black);}
:where(h6){font-family:var(--tf-font-label);font-size:14px;font-weight:500;text-transform:uppercase;letter-spacing:.2em;margin:0 0 .5em;}
:where(::selection){background:var(--tf-black);color:#fff;}
:where(:focus-visible){outline:2px solid var(--tf-black);outline-offset:4px;}
:where(.screen-reader-text){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}

:where(.tf-skip-link){position:fixed;left:16px;top:-60px;z-index:10000;background:#000;color:#fff;padding:12px 18px;font:500 12px/1 var(--tf-font-label);letter-spacing:.2em;text-transform:uppercase;transition:top .3s;}
:where(.tf-skip-link:focus){top:16px;}

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

/* ---------- Header (wrapper del layout Elementor) ---------- */
:where(.tf-site-header){position:relative;z-index:900;width:100%;background:#fff;transition:transform .55s var(--tf-ease),background-color .4s ease,box-shadow .4s ease;}
:where(.tf-header-sticky .tf-site-header){position:fixed;top:0;left:0;right:0;}
:where(.admin-bar.tf-header-sticky .tf-site-header){top:32px;}
@media (max-width:782px){:where(.admin-bar.tf-header-sticky .tf-site-header){top:46px;}}
:where(.tf-header-sticky .tf-main){padding-top:var(--tf-header-h);}
:where(.tf-header-sticky.tf-header-transparent .tf-main){padding-top:0;}
:where(.tf-site-header.is-scrolled){box-shadow:0 1px 0 var(--tf-line);}
:where(.tf-site-header.is-hidden){transform:translateY(-100%);}
:where(.tf-menu-open .tf-site-header){transform:none;}
/* Header trasparente: il contenuto si inverte sul colore dello sfondo (bianco su foto scure) finché non si scorre */
:where(.tf-header-transparent .tf-site-header:not(.is-scrolled)){background:transparent;box-shadow:none;}
:where(.tf-header-transparent .tf-site-header:not(.is-scrolled)) :where(.e-con,.elementor-section){background-color:transparent;}
:where(.tf-header-transparent .tf-site-header:not(.is-scrolled) > .elementor){filter:invert(1);}
:where(.tf-menu-open .tf-site-header > .elementor){filter:none;}
/* L'overlay del menu fullscreen è position:fixed dentro l'header: nessun transform/filter sugli antenati quando è aperto */
:where(.tf-site-header--fallback){display:flex;align-items:center;justify-content:space-between;padding:24px var(--tf-gutter);}
:where(.tf-site-header--fallback ul){display:flex;gap:28px;list-style:none;margin:0;padding:0;font:500 12px/1 var(--tf-font-label);letter-spacing:.2em;text-transform:uppercase;}
:where(.tf-fallback-logo){font:400 28px/1 var(--tf-font-title);letter-spacing:.3em;text-transform:uppercase;}

/* ---------- Bottoni interni ai widget Tafuno ----------
   Il kit Elementor (Impostazioni sito › Pulsanti) stila TUTTI i <button> con `.elementor-kit-N button` (0,1,1).
   I bottoni-icona dei widget Tafuno (hamburger, frecce, filtri, fisarmonica) non devono ereditarlo:
   questo reset ha specificità (0,2,1)/(0,3,1), comunque inferiore ai controlli Stile del widget ({{WRAPPER}} …). */
.elementor-widget[class*="elementor-widget-tafuno-"] button:not(.elementor-button),
.elementor-widget[class*="elementor-widget-tafuno-"] button:not(.elementor-button):is(:hover,:focus){border:0;padding:0;background:none;border-radius:0;box-shadow:none;color:inherit;}
.elementor-widget-tafuno-accordion .tf-accordion button.tf-accordion__head{padding:22px 0;width:100%;text-align:left;font:inherit;text-transform:none;letter-spacing:inherit;}
.tf-newsletter .wpcf7 input[type="submit"],.tf-newsletter .wpcf7 input[type="submit"]:is(:hover,:focus){min-width:44px;width:44px;min-height:44px;padding:0;border:0;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 14' fill='none' stroke='%23000'%3E%3Crect x='.5' y='.5' width='17' height='13'/%3E%3Cpath d='m1 1 8 7 8-7'/%3E%3C/svg%3E") center/18px no-repeat;color:transparent;font-size:0;}

/* Elementor applica `.elementor img{height:auto}` (0,1,1): le immagini a riempimento dei widget Tafuno
   (object-fit:cover) devono vincere, altrimenti restano alla loro altezza naturale. */
.elementor .tf-hero-slider__bg,.elementor .tf-hero-slider__inset img,.elementor .tf-portfolio-slider__media img,
.elementor .tf-portfolio-grid__media img,.elementor .tf-posts-grid__media img{height:100%;max-width:none;}
.elementor .tf-hero-slider__bg{width:100%;}

/* ---------- Footer ---------- */
:where(.tf-site-footer){position:relative;z-index:1;}
:where(.tf-site-footer--fallback){padding:40px var(--tf-gutter);text-align:center;font-size:14px;}

/* ---------- Bottoni Elementor: riempimento che scorre (solo se il bottone non ha colore hover personalizzato diverso) ---------- */
:where(.elementor-button){position:relative;overflow:hidden;isolation:isolate;transition:color .45s var(--tf-ease),border-color .45s var(--tf-ease),background-color .45s var(--tf-ease);}
:where(.tf-btn-fill .elementor-button)::before,:where(.tf-btn)::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--tf-black);transform:scaleX(0);transform-origin:right center;transition:transform .55s var(--tf-ease);}
:where(.tf-btn-fill .elementor-button:hover)::before,:where(.tf-btn:hover)::before{transform:scaleX(1);transform-origin:left center;}
:where(.tf-btn){position:relative;overflow:hidden;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:18px 42px;border:1px solid var(--tf-black);color:var(--tf-black);font:500 12px/1 var(--tf-font-label);letter-spacing:.2em;text-transform:uppercase;transition:color .45s var(--tf-ease);}
:where(.tf-btn:hover){color:#fff;}

/* Link con linea che si disegna: classe tf-link-line su widget testo / icon list */
:where(.tf-link-line a, .tf-site-footer .elementor-icon-list-item a){background:linear-gradient(currentColor,currentColor) 0 100% / 0 1px no-repeat;transition:background-size .45s var(--tf-ease),color .3s;}
:where(.tf-link-line a:hover, .tf-site-footer .elementor-icon-list-item a:hover){background-size:100% 1px;}

/* ---------- Parole outline decorative (classe tf-outline su un Titolo Elementor) ---------- */
:where(.tf-outline .elementor-heading-title){color:transparent;-webkit-text-stroke:1px var(--tf-line);}

/* ---------- Immagini con hover zoom (classe tf-hover-zoom su widget Immagine / Box immagine) ---------- */
:where(.tf-hover-zoom .elementor-image, .tf-hover-zoom .elementor-widget-container, .tf-hover-zoom figure){overflow:hidden;}
:where(.tf-hover-zoom img){transition:transform 1.1s var(--tf-ease),filter .6s ease;}
:where(.tf-hover-zoom:hover img){transform:scale(1.06);}
:where(.tf-team .elementor-image-box-img){overflow:hidden;display:block;}
:where(.tf-team img){transition:transform 1.1s var(--tf-ease),filter .6s ease;filter:grayscale(.15);}
:where(.tf-team:hover img){transform:scale(1.06);filter:grayscale(0);}

/* ---------- Contatori (widget Contatore Elementor) ---------- */
:where(.tf-counter .elementor-counter-number-wrapper){justify-content:flex-start;}

/* ---------- Contact Form 7 ---------- */
:where(.wpcf7 form){display:grid;gap:28px;}
:where(.wpcf7 .tf-form-row){display:grid;grid-template-columns:1fr 1fr;gap:28px;}
:where(.wpcf7 .tf-form-row > p){display:contents;}
:where(.wpcf7 .tf-form-row br, .wpcf7 label > br){display:none;}
@media (max-width:767px){:where(.wpcf7 .tf-form-row){grid-template-columns:1fr;}}
:where(.wpcf7 label){display:block;font:400 15px/1.4 var(--tf-font-body);color:var(--tf-text);}
:where(.wpcf7 input:not([type=submit]):not([type=checkbox]):not([type=radio]), .wpcf7 textarea, .wpcf7 select){width:100%;border:0;border-bottom:1px solid var(--tf-black);background:transparent;padding:12px 0;font:400 16px/1.5 var(--tf-font-body);color:var(--tf-text);border-radius:0;transition:border-color .3s;}
:where(.wpcf7 textarea){height:110px;resize:vertical;}
:where(.wpcf7 input:focus, .wpcf7 textarea:focus){outline:0;border-bottom-width:2px;}
:where(.wpcf7 ::placeholder){color:var(--tf-muted);opacity:1;}
:where(.wpcf7 input[type=submit], .wpcf7 button[type=submit]){justify-self:end;min-width:200px;min-height:56px;padding:18px 42px;border:1px solid var(--tf-black);background:var(--tf-black);color:#fff;font:500 12px/1 var(--tf-font-label);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:background-color .4s var(--tf-ease),color .4s var(--tf-ease);}
:where(.wpcf7 input[type=submit]:hover, .wpcf7 button[type=submit]:hover){background:transparent;color:var(--tf-black);}
:where(.wpcf7 .wpcf7-spinner){position:absolute;}
:where(.wpcf7 .wpcf7-not-valid-tip){font-size:13px;color:#b3261e;margin-top:6px;}
:where(.wpcf7 .wpcf7-response-output){margin:0;padding:14px 18px;border:1px solid var(--tf-line);font-size:14px;}
:where(.wpcf7 .wpcf7-acceptance label){display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--tf-muted);}
/* Newsletter (form a una riga con freccia) */
:where(.tf-newsletter .wpcf7 form){display:flex;align-items:flex-end;gap:0;border-bottom:1px solid var(--tf-black);position:relative;}
:where(.tf-newsletter .wpcf7 form > p, .tf-newsletter .wpcf7-form-control-wrap){flex:1;margin:0;}
:where(.tf-newsletter .wpcf7 input[type=email]){border:0;padding:14px 50px 14px 0;}
:where(.tf-newsletter .wpcf7 input[type=submit], .tf-newsletter .wpcf7 button[type=submit]){min-width:44px;width:44px;min-height:44px;padding:0;border:0;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 14' fill='none' stroke='%23000'%3E%3Crect x='.5' y='.5' width='17' height='13'/%3E%3Cpath d='m1 1 8 7 8-7'/%3E%3C/svg%3E") center/18px no-repeat;color:transparent;font-size:0;}
:where(.tf-newsletter .wpcf7 .wpcf7-response-output){position:absolute;top:100%;left:0;right:0;margin-top:10px;border:0;padding:0;}
:where(.tf-newsletter .wpcf7 form p){margin:0;display:flex;align-items:center;flex:1;}
:where(.tf-newsletter .wpcf7 form p br){display:none;}

/* ---------- Selettore lingua [tafuno_lang] ---------- */
:where(.tf-lang){display:flex;gap:14px;list-style:none;margin:0;padding:0;font:500 12px/1 var(--tf-font-label);letter-spacing:.2em;text-transform:uppercase;}
:where(.tf-lang .current-lang a){text-decoration:underline;text-underline-offset:4px;}

/* ---------- Archivi / card ---------- */
:where(.tf-archive){padding-block:clamp(70px, 10vw, 140px);}
:where(.tf-archive__header){margin-bottom:clamp(40px,6vw,80px);}
:where(.tf-grid){display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,40px);}
@media (max-width:1024px){:where(.tf-grid){grid-template-columns:repeat(2,1fr);}}
@media (max-width:767px){:where(.tf-grid){grid-template-columns:1fr;}}
:where(.tf-card__media){display:block;overflow:hidden;margin-bottom:22px;aspect-ratio:3/4;background:var(--tf-beige);}
:where(.tf-card__media img){width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--tf-ease);}
:where(.tf-card:hover .tf-card__media img){transform:scale(1.06);}
:where(.tf-card__meta){font-size:14px;color:var(--tf-muted);display:flex;gap:8px;align-items:center;margin-bottom:10px;}
:where(.tf-card__title){font-size:clamp(26px,1.5rem + .6vw,35px);margin-bottom:18px;}
:where(.tf-card__arrow svg){width:34px;height:10px;fill:none;stroke:var(--tf-black);stroke-width:1;transition:transform .45s var(--tf-ease);}
:where(.tf-card:hover .tf-card__arrow svg){transform:translateX(10px);}
:where(.tf-pagination){margin-top:60px;}
:where(.tf-pagination .nav-links){display:flex;gap:18px;font:500 12px/1 var(--tf-font-label);letter-spacing:.2em;}
:where(.tf-pagination .current){border-bottom:1px solid currentColor;}

/* ---------- Pagine/articoli senza Elementor ---------- */
:where(.tf-entry){padding-block:clamp(60px,9vw,130px);max-width:960px;}
:where(.tf-entry__media){margin:40px 0;overflow:hidden;}
:where(.tf-entry__content) > * + *{margin-top:1.2em;}
:where(.tf-entry__content a){text-decoration:underline;text-underline-offset:3px;}
:where(.tf-postnav){display:flex;justify-content:space-between;gap:20px;margin-top:70px;padding-top:30px;border-top:1px solid var(--tf-line);font:500 12px/1 var(--tf-font-label);letter-spacing:.2em;text-transform:uppercase;}

/* ---------- Singolo progetto (fallback) ---------- */
:where(.tf-project){display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(30px,8vw,140px);padding-block:clamp(60px,8vw,120px);}
:where(.tf-project__gallery){display:grid;gap:30px;}
:where(.tf-project__gallery figure){margin:0;overflow:hidden;}
:where(.tf-project__info){position:sticky;top:calc(var(--tf-header-h) + 40px);align-self:start;}
:where(.tf-project__title){font-size:clamp(40px,2rem + 2.4vw,72px);}
:where(.tf-project__meta){display:grid;gap:4px;margin:30px 0 0;}
:where(.tf-project__meta dt){font:500 16px/1.4 var(--tf-font-body);color:var(--tf-black);margin-top:16px;}
:where(.tf-project__meta dd){margin:0;font-size:14px;color:var(--tf-muted);}
@media (max-width:1024px){:where(.tf-project){grid-template-columns:1fr;} :where(.tf-project__info){position:static;}}
:where(.tf-project-nav){display:flex;justify-content:space-between;align-items:center;padding-block:60px;font:500 12px/1 var(--tf-font-label);letter-spacing:.2em;text-transform:uppercase;}
:where(.tf-project-nav a){display:inline-flex;align-items:center;gap:14px;}
:where(.tf-project-nav__all){display:grid;grid-template-columns:repeat(2,4px);gap:4px;}
:where(.tf-project-nav__all span){width:4px;height:4px;background:var(--tf-black);transition:transform .4s var(--tf-ease);}
:where(.tf-project-nav__all:hover span){transform:scale(1.6);}
:where(.tf-arrow){display:inline-block;width:30px;height:1px;background:currentColor;position:relative;transition:width .4s var(--tf-ease);}
:where(.tf-arrow)::after{content:"";position:absolute;right:0;top:-4px;width:8px;height:8px;border-top:1px solid;border-right:1px solid;transform:rotate(45deg);}
:where(.tf-arrow--left)::after{right:auto;left:0;transform:rotate(-135deg);}
:where(.tf-project-nav a:hover .tf-arrow){width:44px;}

/* ---------- 404 ---------- */
:where(.tf-404){min-height:70vh;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding-block:120px;}
:where(.tf-404__code){font:400 clamp(120px,22vw,320px)/.9 var(--tf-font-title);color:transparent;-webkit-text-stroke:1px var(--tf-line);margin:0;}

/* ---------- Cursore personalizzato ---------- */
:where(.tf-cursor){position:fixed;left:0;top:0;z-index:9999;pointer-events:none;display:none;}
:where(.tf-has-cursor .tf-cursor){display:block;}
:where(.tf-cursor__ring){position:absolute;left:-20px;top:-20px;width:40px;height:40px;border:1px solid var(--tf-black);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:width .45s var(--tf-ease),height .45s var(--tf-ease),left .45s var(--tf-ease),top .45s var(--tf-ease),background-color .35s,border-color .35s,opacity .3s;}
:where(.tf-cursor__dot){position:absolute;left:-3px;top:-3px;width:6px;height:6px;border-radius:50%;background:var(--tf-black);transition:opacity .3s;}
:where(.tf-cursor__label){font:500 10px/1 var(--tf-font-label);letter-spacing:.2em;text-transform:uppercase;color:#fff;opacity:0;transition:opacity .3s;}
:where(.tf-cursor.is-link .tf-cursor__ring){width:60px;height:60px;left:-30px;top:-30px;background:rgba(0,0,0,.06);}
:where(.tf-cursor.is-label .tf-cursor__ring){width:92px;height:92px;left:-46px;top:-46px;background:var(--tf-black);}
:where(.tf-cursor.is-label .tf-cursor__label){opacity:1;}
:where(.tf-cursor.is-label .tf-cursor__dot, .tf-cursor.is-hidden){opacity:0;}
:where(.tf-cursor.is-light .tf-cursor__ring){border-color:#fff;}
:where(.tf-cursor.is-light .tf-cursor__dot){background:#fff;}

/* ---------- Torna su ---------- */
:where(.tf-totop){position:fixed;right:28px;bottom:28px;z-index:800;width:48px;height:48px;opacity:0;visibility:hidden;transform:translateY(20px);transition:opacity .4s,transform .5s var(--tf-ease),visibility .4s;background:#fff;border-radius:50%;}
:where(.tf-totop.is-visible){opacity:1;visibility:visible;transform:none;}
:where(.tf-totop svg){width:100%;height:100%;fill:none;stroke:var(--tf-black);stroke-width:1;}
:where(.tf-totop__track){stroke:var(--tf-line);}
:where(.tf-totop__bar){stroke-dasharray:132;stroke-dashoffset:var(--tf-progress,132);transform:rotate(-90deg);transform-origin:center;}

/* ---------- Preloader ---------- */
:where(.tf-preloader){position:fixed;inset:0;z-index:10001;background:var(--tf-beige);display:flex;align-items:flex-end;justify-content:space-between;padding:var(--tf-gutter);}
:where(.tf-no-preloader .tf-preloader, html:not(.tf-js) .tf-preloader){display:none;}
:where(.tf-preloader__inner){display:flex;justify-content:space-between;align-items:flex-end;width:100%;}
:where(.tf-preloader__name){font:400 clamp(24px,3vw,40px)/1 var(--tf-font-title);letter-spacing:.3em;text-transform:uppercase;color:var(--tf-black);}
:where(.tf-preloader__count){font:400 clamp(90px,16vw,220px)/.8 var(--tf-font-title);color:var(--tf-black);}

/* ---------- Transizione pagine ---------- */
:where(.tf-transition){position:fixed;inset:0;z-index:10000;background:var(--tf-beige);transform:scaleY(0);transform-origin:bottom;pointer-events:none;}

/* ---------- Stati iniziali animazioni (solo con JS attivo, mai nell'editor) ---------- */
:where(.tf-js:not(.tf-reduced) body:not(.elementor-editor-active)) :where([data-tf-anim="fade-up"],[data-tf-anim="fade-in"],[data-tf-anim="scale-in"],[data-tf-anim="blur-in"],.tf-fade-up):not(.tf-in){opacity:0;}
:where(.tf-js:not(.tf-reduced) body:not(.elementor-editor-active)) :where([data-tf-anim^="split"],.tf-split-lines,.tf-split-chars):not(.tf-split-ready){visibility:hidden;}
:where(.tf-js:not(.tf-reduced) body:not(.elementor-editor-active)) :where([data-tf-anim^="reveal"],.tf-reveal):not(.tf-in){clip-path:inset(100% 0 0 0);}
:where(.tf-line){display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em;}
:where(.tf-line-inner, .tf-char){display:inline-block;will-change:transform;}
:where(.tf-word){display:inline-block;white-space:nowrap;}

/* ---------- Ridotto movimento ---------- */
@media (prefers-reduced-motion: reduce){
	:where(*){animation-duration:.01ms;transition-duration:.01ms;}
	:where(.tf-cursor, .tf-preloader){display:none;}
}

/* ---------- Editor Elementor: anteprima layout ---------- */
:where(.tf-layout-preview){background:#f3f3f3;}
:where(.tf-layout-preview .tf-site-header, .tf-layout-preview .tf-site-footer){background:#fff;}
