/*
Theme Name: Bordignon Group
Theme URI: https://zincherie.com
Author: Webbys
Author URI: https://webbys.it
Description: Tema custom per Bordignon Group — Total Quality Company. Replica fedele del sito statico, con contenuti editabili tramite ACF e Custom Post Type (plugin bordignon-core).
Version: 1.2.2
Requires at least: 6.4
Requires PHP: 8.1
License: GNU General Public License v2 or later
Text Domain: bordignon
*/

/* ============ FONTS ============ */
@font-face{font-family:'League Spartan';src:url('assets/fonts/LeagueSpartan-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'League Spartan';src:url('assets/fonts/LeagueSpartan-SemiBold.ttf') format('truetype');font-weight:600;font-style:normal;font-display:swap;}
@font-face{font-family:'League Spartan';src:url('assets/fonts/LeagueSpartan-Bold.ttf') format('truetype');font-weight:700;font-style:normal;font-display:swap;}
@font-face{font-family:'League Spartan';src:url('assets/fonts/LeagueSpartan-ExtraBold.ttf') format('truetype');font-weight:800;font-style:normal;font-display:swap;}
@font-face{font-family:'League Spartan';src:url('assets/fonts/LeagueSpartan-Black.ttf') format('truetype');font-weight:900;font-style:normal;font-display:swap;}
@font-face{font-family:'Questrial';src:url('assets/fonts/Questrial-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap;}

/* ============ TOKENS ============ */
:root{
  --red:#ED1C24;
  --red-deep:#c4231e;
  --black:#000;
  --white:#fff;
  --ink:#161616;
  --body:rgba(255,255,255,.80);
  --body-dim:rgba(255,255,255,.72);
  --footer-bg:#efefef;
  --footer-ink:#1b1b1b;
  --head:'League Spartan',sans-serif;
  --text:'Questrial',sans-serif;
  --maxw:1366px;
  --pad:85px;
}

/* ============ RESET ============ */
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  background:var(--black);
  color:var(--white);
  font-family:var(--text);
  font-size:17px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad);}

h1,h2,h3,h4{font-family:var(--head);font-weight:800;line-height:1.04;letter-spacing:-.01em;}

/* ============ HEADER ============ */
.site-header{
  position:fixed;top:0;left:0;right:0;z-index:50;
  transition:background .3s ease, box-shadow .3s ease, backdrop-filter .3s ease;
}
.site-header.scrolled{
  background:rgba(12,12,12,.9);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  box-shadow:0 1px 0 rgba(255,255,255,.08);
}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;height:140px;transition:height .3s ease;}
.site-header.scrolled .wrap{height:88px;}
.logo{height:50px;width:auto;transition:height .3s ease;}
.site-header.scrolled .logo{height:40px;}
.header-right{display:flex;align-items:center;gap:34px;}
.btn-pill{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--red);color:#fff;font-family:var(--text);font-size:18px;
  padding:14px 34px;border:none;border-radius:34px 34px 34px 34px;cursor:pointer;
  border-radius:36px;transition:transform .25s ease,background .25s ease;
}
.btn-pill:hover{background:#ff2730;transform:translateY(-2px);}
.hamburger{display:flex;flex-direction:column;gap:7px;background:none;border:none;cursor:pointer;padding:6px;}
.hamburger span{width:34px;height:3px;background:#fff;border-radius:2px;transition:.3s;}
.site-header.on-light .hamburger span{background:#fff;}

/* mobile menu */
.nav-drawer{
  position:fixed;inset:0;z-index:60;background:rgba(10,10,10,.97);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  opacity:0;visibility:hidden;transition:opacity .3s ease;
}
.nav-drawer.open{opacity:1;visibility:visible;}
.nav-drawer a{font-family:var(--head);font-weight:700;font-size:34px;color:#fff;padding:10px 0;letter-spacing:-.01em;}
.nav-drawer a:hover{color:var(--red);}
.nav-drawer ul{list-style:none;display:flex;flex-direction:column;align-items:center;gap:8px;}
/* long nav labels shed their tail on phones (see bg_nav_label) */
@media (max-width:860px){.lbl-tail{display:none;}}
.nav-close{position:absolute;top:42px;right:60px;font-size:40px;background:none;border:none;color:#fff;cursor:pointer;font-family:var(--text);}

/* language switcher — header and mobile menu (printed only with Polylang and 2+ languages) */
.lang-switch{list-style:none;display:flex;align-items:center;gap:2px;margin:0;padding:0;}
.lang-switch li{display:flex;}
.lang-switch a{display:block;padding:9px 7px 7px;font-family:var(--text);font-size:14px;line-height:1;letter-spacing:.12em;color:rgba(255,255,255,.6);border-bottom:2px solid transparent;transition:color .2s ease,border-color .2s ease;}
.lang-switch a:hover,.lang-switch a:focus-visible{color:#fff;}
.lang-switch a.is-current{color:#fff;border-bottom-color:var(--red);}
/* .nav-drawer ul stacks lists in a column: the switcher stays on one row */
.nav-drawer .lang-switch--drawer{flex-direction:row;margin-top:38px;gap:10px;}
.nav-drawer .lang-switch--drawer a{font-family:var(--text);font-weight:400;font-size:18px;letter-spacing:.14em;padding:10px 8px 8px;}

/* ============ HERO ============ */
.hero{
  position:relative;
  background:#a81e1f;
  background-image:linear-gradient(115deg,rgba(150,24,26,.55) 0%,rgba(150,24,26,.15) 55%,rgba(120,20,22,.35) 100%),url('assets/img/hero-bg.jpg');
  background-size:cover;background-position:center;
  overflow:hidden;
}
.hero .wrap{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center;padding-top:200px;padding-bottom:90px;}
.hero h1{font-size:52px;font-weight:800;color:#fff;margin-bottom:38px;}
.hero p{color:rgba(255,255,255,.92);max-width:540px;margin-bottom:22px;}
.hero-img{align-self:stretch;}
.hero-img img{width:100%;height:100%;object-fit:cover;min-height:560px;}
.hero-right{position:relative;height:100%;}

/* arrow text button */
.btn-arrow{display:inline-flex;align-items:center;gap:26px;margin-top:26px;cursor:pointer;background:none;border:none;}
.btn-arrow .lbl{font-family:var(--text);font-size:15px;letter-spacing:.13em;text-transform:uppercase;color:#fff;}
.btn-arrow .circle{
  width:58px;height:58px;flex:none;border-radius:50%;background:var(--red);
  display:flex;align-items:center;justify-content:center;transition:transform .25s ease,background .25s ease;
}
.btn-arrow .circle svg{width:24px;height:24px;}
.btn-arrow:hover .circle{transform:translateX(6px);background:#ff2730;}

/* ============ GENERIC DARK SECTION ============ */
.section{padding:120px 0;}
.section-sm{padding:90px 0;}
.eyebrow{font-size:17px;color:var(--body);}
h2.block{font-size:42px;font-weight:800;color:#fff;}

.two-col{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center;}
.col-text p{color:var(--body);margin-bottom:20px;max-width:540px;}

/* video */
.video-card{position:relative;display:block;border-radius:2px;overflow:hidden;}
.video-card img{width:100%;}
.video-card::after{content:"";position:absolute;inset:0;background:rgba(0,0,0,0);transition:background .3s;}
.video-card:hover::after{background:rgba(0,0,0,.12);}

/* video-card as a button: plays the YouTube embed inline instead of leaving */
button.video-card{width:100%;padding:0;border:none;background:none;font:inherit;color:inherit;cursor:pointer;}
.video-card .play{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;
  width:74px;height:74px;border-radius:50%;background:var(--red);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 12px 40px rgba(0,0,0,.35);transition:transform .25s ease,background .25s ease;
}
.video-card .play svg{width:28px;height:28px;margin-left:4px;}
.video-card:hover .play{transform:translate(-50%,-50%) scale(1.08);background:#ff2730;}
.video-card:focus-visible{outline:2px solid var(--red);outline-offset:4px;}
/* A poster that plays in place: any page's poster class (video-card, appr-video,
   valb-video, process-video, lp-reel) keeps its box, the player fills it. */
button[data-yt]{width:100%;padding:0;border:none;background:none;font:inherit;color:inherit;cursor:pointer;display:block;text-align:inherit;}
.is-playing{position:relative;display:block;background:#000;cursor:default;}
/* no poster image to give the box its size: fall back to the video's shape */
.is-playing:not(:has(> img)){aspect-ratio:16/9;}
.is-playing::after{display:none;}
.is-playing .play,.is-playing .meta{display:none;}
.is-playing iframe{position:absolute;inset:0;width:100%;height:100%;display:block;border:0;}
/* shown only when the browser allowed the video to start muted */
.yt-unmute{
  position:absolute;left:14px;bottom:14px;z-index:2;
  display:inline-flex;align-items:center;gap:8px;
  padding:9px 16px;border:none;border-radius:30px;cursor:pointer;
  background:var(--red);color:#fff;font-family:var(--text);font-size:14px;line-height:1;
  box-shadow:0 6px 18px rgba(0,0,0,.35);
}
.yt-unmute:hover{background:#ff2730;}

/* ============ MANAGEMENT ============ */
.mgmt-head{margin-bottom:60px;}
/* horizontal scroller: three cards visible, the rest reached by scrolling.
   width:fit-content + max-width:100% is what keeps three or fewer centred
   (the row shrinks to its content) while a longer list fills the width and
   scrolls from the left — justify-content:center would make the first card
   unreachable once the content overflows. */
.team-slider{position:relative;}
.team-row{
  position:relative;display:flex;gap:22px;
  width:fit-content;max-width:100%;margin-left:auto;margin-right:auto;
  overflow-x:auto;overflow-y:hidden;
  scroll-snap-type:x mandatory;scroll-behavior:smooth;
  scrollbar-width:none;-ms-overflow-style:none;
}
.team-row::-webkit-scrollbar{display:none;}
.team-row:focus-visible{outline:2px solid var(--red);outline-offset:6px;}
.team-card{position:relative;overflow:hidden;background:#111;flex:0 0 360px;scroll-snap-align:start;}

/* ============ SLIDER ARROWS (management + timeline) ============ */
.slider-nav{
  position:absolute;top:50%;transform:translateY(-50%);z-index:3;
  width:52px;height:52px;border-radius:50%;border:none;cursor:pointer;background:var(--red);
  display:flex;align-items:center;justify-content:center;
  transition:opacity .25s ease,background .25s ease;
}
.slider-nav svg{width:22px;height:22px;}
.slider-nav:hover{background:#ff2730;}
.slider-nav:disabled{opacity:.25;cursor:default;background:var(--red);}
.slider-nav[hidden]{display:none;}
.slider-nav--prev{left:-70px;}
.slider-nav--prev svg{transform:rotate(180deg);}
.slider-nav--next{right:-70px;}
.team-card img{width:100%;height:auto;display:block;transform:scale(1.08);transition:transform .5s ease,filter .4s ease;}
.team-card .ov{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;background:rgba(0,0,0,.55);opacity:0;transition:opacity .35s ease;text-align:center;padding:10px;
}
.team-card .ov .nm{font-family:var(--text);font-size:18px;letter-spacing:.06em;color:#fff;}
.team-card .ov .rl{font-family:var(--text);font-size:16px;color:rgba(255,255,255,.85);}
.team-card:hover img{transform:scale(1.13);}
/* the built-in third photo is framed wider and needs more zoom; scoped so it
   does not hit whoever happens to be third once the CPT drives the list */
.team-row--default .team-card:nth-child(3) img{transform:scale(1.18);}
.team-row--default .team-card:nth-child(3):hover img{transform:scale(1.23);}
.team-card:hover .ov{opacity:1;}
.center-btn{display:flex;justify-content:center;margin-top:56px;}
.btn-pill.lg{font-size:18px;padding:17px 42px;}

/* ============ QUOTE ============ */
.quote{
  position:relative;padding:150px 0;text-align:center;
  background-image:linear-gradient(rgba(0,0,0,.55),rgba(0,0,0,.55)),url('assets/img/quote-bg.jpg');
  background-size:cover;background-position:center;
}
.quote blockquote{
  font-family:var(--head);font-weight:800;font-size:40px;line-height:1.12;color:#fff;
  max-width:1130px;margin:0 auto;letter-spacing:-.01em;text-wrap:balance;
}

/* ============ APPROACH 3-COL ============ */
.approach .lead{color:var(--body);margin:18px 0 70px;}
.cols-3{display:grid;grid-template-columns:repeat(3,1fr);gap:56px;}
.sq{width:15px;height:15px;background:var(--red);margin-bottom:30px;}
.cols-3 h3{font-size:30px;font-weight:800;color:#fff;margin-bottom:24px;line-height:1.08;}
.cols-3 p{color:var(--body);}
.approach .btn-arrow{margin-top:64px;}

/* ============ COSA SIGNIFICA ============ */
.illu-card{border-radius:0;overflow:hidden;width:100%;}
.illu-card svg{display:block;width:100%;height:auto;}

/* ============ GALLERY STRIP ============ */
.gallery-strip{display:flex;width:100%;gap:16px;background:#000;}
.gallery-strip img{flex:1 1 0;min-width:0;width:100%;height:290px;object-fit:cover;display:block;}

/* ============ NUMBERED ============ */
.numbered{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:start;}
.num-list{display:flex;flex-direction:column;gap:72px;padding-top:10px;}
.num-item .num-head{display:flex;align-items:baseline;gap:26px;margin-bottom:22px;}
.num-item .nm{font-family:var(--head);font-weight:800;font-size:40px;color:#fff;}
.num-item h3{font-size:38px;font-weight:800;color:#fff;}
.num-item p{color:var(--body);max-width:560px;padding-left:0;}
.num-body{padding-left:66px;}
.wire-img{height:100%;}
.wire-img img{width:100%;height:100%;object-fit:cover;border-radius:2px;}

/* ============ VALUES 2x2 ============ */
.values-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px 90px;}
.value h3{font-family:var(--head);font-weight:800;font-size:23px;letter-spacing:.04em;color:#fff;margin:24px 0 26px;}
.value p{color:var(--body);}
.value p + p{margin-top:18px;}

/* ============ WORKERS FULLBLEED ============ */
.workers{position:relative;width:100%;line-height:0;}
.workers img{width:100%;height:auto;object-fit:cover;}
.workers::before{content:"";position:absolute;top:0;left:0;right:0;height:34%;background:linear-gradient(#000,rgba(0,0,0,0));z-index:2;}

/* ============ TIMELINE ============ */
.timeline-sec h2.block{margin-bottom:30px;}
.timeline-sec .intro{color:var(--body);max-width:1180px;margin-bottom:80px;}
/* horizontal scroller. The red rule sits on the inner track, not on the
   scroll box: on the scroll box it would only ever be as wide as the visible
   area, so it would stop dead at the fourth node instead of running under
   every one of them. */
.timeline-slider{position:relative;}
/* the rule bleeds 85px into the page margin, as in the original. Drawn here,
   outside the scroll box: inside it, those 85px would become phantom scroll. */
.timeline-slider::after{content:"";position:absolute;top:14px;right:-85px;width:85px;height:4px;background:var(--red);}
.timeline{
  overflow-x:auto;overflow-y:hidden;
  scroll-snap-type:x mandatory;scroll-behavior:smooth;
  scrollbar-width:none;-ms-overflow-style:none;
}
.timeline::-webkit-scrollbar{display:none;}
.timeline:focus-visible{outline:2px solid var(--red);outline-offset:6px;}
.timeline-track{position:relative;display:flex;gap:30px;width:max-content;min-width:100%;}
.timeline-track::before{content:"";position:absolute;top:14px;left:0;right:0;height:4px;background:var(--red);}
/* 276.5 = (1196 − 3×30) / 4 — the exact width of the original four columns */
.tl-node{flex:0 0 276.5px;scroll-snap-align:start;}
.tl-node{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;}
.tl-marker{width:30px;height:30px;border-radius:50%;background:#000;border:4px solid var(--red);position:relative;z-index:2;}
.tl-stem{width:2px;height:120px;background:rgba(255,255,255,.55);}
.tl-photo{width:168px;height:168px;border-radius:50%;overflow:hidden;margin-bottom:26px;}
.tl-photo img{width:100%;height:100%;object-fit:cover;}
.tl-year{font-family:var(--head);font-weight:800;font-size:38px;color:#fff;margin-bottom:14px;}
.tl-year.small{font-size:30px;}
.tl-label{font-family:var(--text);font-size:15px;letter-spacing:.05em;color:#fff;margin-bottom:22px;text-transform:uppercase;}
.tl-desc{color:var(--body);font-size:15.5px;line-height:1.5;max-width:250px;}

/* ============ SEDI ============ */
.sedi-head .intro{color:var(--body);max-width:1180px;margin-bottom:14px;}
.sede{display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:center;margin-top:90px;}
.sede.img-left .sede-text{order:2;}
.sede.img-left .sede-media{order:1;}
.sede-media img{width:100%;height:auto;object-fit:cover;border-radius:2px;}
.sede-text h3{font-family:var(--head);font-weight:800;font-size:25px;letter-spacing:.04em;color:#fff;margin:22px 0 26px;display:flex;align-items:center;gap:22px;}
.sede-text h3 .sq{margin:0;flex:none;}
.sede-text p{color:var(--body);margin-bottom:20px;}
.sede-text .btn-pill{margin-top:14px;}

/* ============ FOOTER ============ */
.footer{background:var(--footer-bg);color:var(--footer-ink);padding:70px 0 60px;font-size:15.5px;}
.footer-logo{display:flex;justify-content:center;margin-bottom:60px;}
.footer-logo img{height:62px;width:auto;}
.contact-row{display:grid;grid-template-columns:repeat(4,1fr);gap:30px;justify-items:center;margin-bottom:70px;}
/* justify-items:center sizes each block to its content, so on narrow columns
   it would spill out of its track instead of wrapping */
.contact{max-width:100%;min-width:0;}
.contact h4{font-family:var(--head);font-weight:700;font-size:16px;letter-spacing:.02em;color:#111;margin-bottom:20px;}
.contact .line{display:flex;align-items:center;gap:12px;margin-bottom:14px;color:#1b1b1b;}
.contact .line svg{width:20px;height:20px;flex:none;}
.footer-cols{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:30px;align-items:start;}
.footer-cols h4{font-family:var(--head);font-weight:700;font-size:15px;letter-spacing:.05em;color:#111;margin-bottom:18px;}
.fc-about p{color:#222;margin-bottom:18px;max-width:280px;line-height:1.5;}
.flist{list-style:none;display:flex;flex-direction:column;gap:11px;}
.flist li{display:flex;align-items:center;gap:11px;color:#1b1b1b;}
.flist li svg{width:16px;height:16px;flex:none;}
.flist li.gap{margin-top:13px;}
.flist li a{color:inherit;text-decoration:none;}
.fc-zinc-row{display:flex;justify-content:space-between;align-items:flex-start;gap:30px;}
.footer-social{display:flex;gap:14px;align-items:flex-start;}
.footer-social a{display:flex;}
.footer-social svg{width:30px;height:30px;}
.footer-social .yt{width:34px;height:24px;}

/* ============ SOSTENIBILITÀ — BANNER HERO ============ */
.hero-banner{position:relative;width:100%;min-height:650px;overflow:hidden;background:#000;display:flex;align-items:center;justify-content:center;}
.hero-banner img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1);}
.hero-banner::after{content:"";position:absolute;left:0;right:0;bottom:0;height:55%;background:linear-gradient(rgba(0,0,0,0),#000);}
.hero-banner .ttl{
  position:relative;z-index:3;text-align:center;
  font-family:var(--head);font-weight:800;font-size:46px;color:#fff;letter-spacing:-.01em;text-shadow:0 2px 24px rgba(0,0,0,.4);
}

/* ============ SOSTENIBILITÀ — HEAD INTRO ============ */
.sost-lede h2.block{font-size:42px;line-height:1.08;margin-bottom:40px;}
.sost-lede-text{max-width:none;}
.sost-lede-text p{max-width:880px;}
.sost-media-wide{margin:90px 0 0;width:100%;border-radius:2px;overflow:hidden;}
.sost-media-wide img{display:block;width:100%;height:520px;object-fit:cover;}
.sost-media-sq img{width:100%;height:100%;object-fit:cover;border-radius:2px;}
.sost-media-sq{align-self:stretch;min-height:400px;}

/* ============ SOSTENIBILITÀ — PROCESS LIST ============ */
.process{display:grid;grid-template-columns:1.55fr 1fr;gap:70px;align-items:start;}
.process h2.block{font-size:42px;line-height:1.08;margin-bottom:38px;}
.process .intro{color:var(--body);margin-bottom:54px;max-width:640px;}
.sost-list{list-style:none;display:flex;flex-direction:column;gap:38px;}
.sost-list li{display:grid;grid-template-columns:15px 1fr;gap:26px;align-items:start;}
.sost-list li::before{content:"";width:15px;height:15px;background:var(--red);margin-top:4px;}
.sost-list li span{
  font-family:var(--text);font-size:15.5px;letter-spacing:.06em;line-height:1.5;
  text-transform:uppercase;color:var(--body);max-width:560px;
}
.process-video{position:relative;display:block;overflow:hidden;border-radius:2px;max-width:330px;justify-self:end;}
.process-video img{width:100%;display:block;}
.process-video .play{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:64px;height:64px;border-radius:50%;background:var(--red);
  display:flex;align-items:center;justify-content:center;transition:transform .25s ease,background .25s ease;
}
.process-video .play svg{width:24px;height:24px;margin-left:3px;}
.process-video:hover .play{transform:translate(-50%,-50%) scale(1.08);background:#ff2730;}

/* ============ SOSTENIBILITÀ — REPORT CTA ============ */
.report-cta{
  position:relative;padding:150px 0;text-align:center;
  background-image:linear-gradient(rgba(0,0,0,.62),rgba(0,0,0,.62)),url('assets/img/sost-report.jpg');
  background-size:cover;background-position:center;
}
.report-cta h2{font-size:42px;font-weight:800;color:#fff;margin-bottom:24px;letter-spacing:-.01em;}
.report-cta p{color:rgba(255,255,255,.86);max-width:620px;margin:0 auto 40px;}
.report-cta .btn-pill{font-size:18px;padding:17px 40px;}

@media (max-width:860px){
  .hero-banner{min-height:420px;}
  .hero-banner .ttl{font-size:34px;}
  .process{grid-template-columns:1fr;gap:46px;}
  .process-video{justify-self:start;max-width:300px;}
  .sost-media-sq{min-height:300px;}
  .sost-media-wide{margin-top:40px;}
  .sost-media-wide img{height:300px;}
  .report-cta{padding:100px 0;}
}

/* ============ REVEAL ============ */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .8s ease,transform .8s ease;}
.reveal.in{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;}}

/* ============ WP EXTRAS ============ */
.screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}
.admin-bar .site-header{top:32px;}
@media screen and (max-width:782px){.admin-bar .site-header{top:46px;}}

/* Contact Form 7 adjustments (form contatti + report) */
.contact-form .wpcf7-form-control-wrap{display:block;width:100%;}
.contact-form .wpcf7-not-valid-tip{color:#ffb3b6;font-size:13px;margin-top:6px;}
.wpcf7 form .wpcf7-response-output{border-color:var(--red);color:#fff;margin:24px 0 0;padding:12px 16px;font-family:var(--text);}
.rf-form .wpcf7-form-control-wrap{display:block;width:100%;}
.rf-form .wpcf7-not-valid-tip{color:#ffb3b6;font-size:13px;margin-top:6px;}
/* CF7 nests its controls deeper than the static markup: acceptance goes
   wrap > control > list-item > label > input + span, and the submit gets a
   spinner glued after it. These line the rendered output up with the design. */
.contact-form .consent .wpcf7-list-item{margin:0;}
.contact-form .consent label{display:flex;align-items:flex-start;gap:12px;margin:0;cursor:pointer;}
.contact-form .consent input[type=checkbox]{flex:none;margin-top:3px;}
.contact-form .consent .wpcf7-list-item-label{font-size:14px;line-height:1.5;color:var(--body);}
.rf-form .rf-consent .wpcf7-list-item{margin:0;}
.rf-form .rf-consent label{display:flex;align-items:flex-start;gap:14px;margin:0;cursor:pointer;}
.rf-form .rf-consent .wpcf7-list-item-label{font-size:14px;line-height:1.5;color:var(--body);text-transform:none;letter-spacing:0;}
/* native file input dressed like the mock-up's "Scegli file" button */
.contact-form input[type=file]{padding:0;background:none;border:none;}
.contact-form input[type=file]::file-selector-button{
  background:#fff;border:1px solid #d9d9d9;border-radius:3px;padding:11px 16px;margin-right:14px;
  font-family:var(--text);font-size:14px;color:#1b1b1b;cursor:pointer;
}
.wpcf7-spinner{margin:0 0 0 14px;}
.contact-form .wpcf7-form-control-wrap{position:relative;}
/* CF7's own stylesheet hides this block; repeated here so a deferred or
   minified CF7 stylesheet can never leave it occupying a grid cell */
.contact-form .screen-reader-response,.rf-form .screen-reader-response{
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0;
}
/* shown to logged-in editors only, where a form is still a placeholder */
.bg-form-notice{max-width:840px;margin:0 auto 26px;padding:14px 18px;border:1px solid var(--red);border-radius:4px;background:rgba(237,28,36,.12);color:#fff;font-size:14px;line-height:1.5;}

/* ============ RESPONSIVE ============ */
@media (max-width:1100px){
  :root{--pad:48px;}
  /* --pad drops to 48px here: at -70px the arrows would fall off screen */
  .slider-nav--prev{left:8px;}
  .slider-nav--next{right:8px;}
  .hero h1{font-size:42px;}
  h2.block{font-size:34px;}
  /* these two pin 42px with a higher specificity further up and would keep a
     desktop-sized title on a phone (same defect as the static prototype) */
  .sost-lede h2.block,.process h2.block{font-size:34px;}
  .quote blockquote{font-size:32px;}
}
@media (max-width:860px){
  :root{--pad:26px;}
  /* bigger touch areas — padding only, the graphics do not move */
  .hamburger{padding:10px 6px;}
  .nav-close{padding:6px 14px;}
  .site-header .wrap{height:96px;}
  .header-right .btn-pill{display:none;}
  .header-right{gap:18px;}
  .hero .wrap{grid-template-columns:1fr;padding-top:150px;gap:36px;}
  .hero-img img{min-height:340px;}
  .two-col,.numbered,.values-grid,.cols-3,.sede,.footer-cols{grid-template-columns:1fr;gap:40px;}

  /* Sedi — reading order becomes title, photo, copy, button. All three of those
     sit inside .sede-text while the photo is its sibling, so no amount of order
     on .sede-text alone can interleave them: display:contents drops that box
     out of the tree and promotes its children to items of .sede. */
  /* align-items:center comes from the desktop grid rule; left as is it would
     centre and shrink-wrap every row of this column */
  .sede{display:flex;flex-direction:column;align-items:stretch;gap:18px;}
  .sede-text{display:contents;}
  .sede-text h3{order:1;margin:0;}
  .sede-media,.sede.img-left .sede-media{order:2;}
  .sede-text p{order:3;margin:0;}
  .sede-text .btn-pill{order:4;margin-top:6px;align-self:flex-start;}

  /* a partial card peeking at the edge signals that the row scrolls */
  .team-card{flex:0 0 clamp(200px,62vw,300px);}
  .slider-nav{display:none;}

  /* Gallery — five or six photos side by side collapse to slivers on a phone.
     One per screen, swiped, with the next one peeking: same gesture as the
     management row. */
  .gallery-strip{
    gap:10px;overflow-x:auto;overflow-y:hidden;
    scroll-snap-type:x mandatory;scroll-behavior:smooth;
    scrollbar-width:none;-ms-overflow-style:none;
  }
  .gallery-strip::-webkit-scrollbar{display:none;}
  .gallery-strip > img,.gallery-strip > .gcell{flex:0 0 88%;scroll-snap-align:start;}
  .gallery-strip > img{height:clamp(240px,38vw,300px);}
  /* Same treatment as desktop — red rule, marker, stem — but one event per
     screen. The width is expressed in vw because the track is max-content:
     a percentage basis would be circular and collapse to content width. */
  .timeline-track{gap:0;}
  .tl-node{flex:0 0 calc(100vw - var(--pad) * 2);}
  /* the rule's tail must stop at the screen edge, not 85px past it */
  .timeline-slider::after{width:var(--pad);right:calc(var(--pad) * -1);}
  /* no arrows on the timeline either: .slider-nav above hides every slider */
  /* ---- footer: smaller logo, everything flush left ---- */
  .footer-logo{justify-content:flex-start;margin-bottom:42px;}
  .footer-logo img{height:42px;}
  .contact-row{grid-template-columns:repeat(2,1fr);gap:36px;justify-items:start;}
  .contact .line{align-items:flex-start;}
  .contact .line svg{margin-top:3px;}
  /* Reading order: sedi, BORDIGNON GROUP, social, INFORMAZIONI, ZINCATURA.
     The social block is nested two levels down inside .fc-zinc, out of reach of
     order — display:contents lifts both wrappers away so its two boxes become
     siblings of .fc-about and .fc-info. */
  .footer-cols{display:flex;flex-direction:column;gap:34px;}
  .fc-zinc,.fc-zinc-row{display:contents;}
  .fc-about{order:1;}
  .footer-social{order:2;}
  .fc-info{order:3;}
  .fc-zinc-links{order:4;}
  .num-body{padding-left:0;}
  .section{padding:80px 0;}
}

@media (max-width:480px){
  /* two 150px columns are too narrow for phone numbers and plant names */
  .contact-row{grid-template-columns:1fr;gap:30px;}
}

@media (max-width:480px){
  /* logo and hamburger only; the languages are in the menu */
  .lang-switch--header{display:none;}
}
