/*
Theme Name: Anello & Partners Blue
Theme URI: https://example.com/anello-partners
Author: Tommaso Pierucci
Author URI: https://example.com
Description: Tema WordPress snello per studi legali e tributari, ispirato alla grafica del sito Orsingher (orsingher.com): hero a piena pagina, ticker notizie, aree di attivita con switcher, press & news, riconoscimenti, sedi, contatti. Monogramma A come logo.
Version: 2.0.0
Requires at least: 5.9
Tested up to: 6.5
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: anello
Tags: legal, business, one-column, custom-menu, custom-logo, featured-images, translation-ready
*/

/* =========================================================
   Anello & Partners v2 — ispirato a Orsingher
   Palette: teal scuro, bianco, grigio; font Inter
   ========================================================= */

:root {
  --color-navy: #144555;
  --color-blue: #144555;
  --color-blue-2: #1b5a6d;
  --color-blue-dark: #0c3542;
  --color-teal: #144555;
  --color-teal-2: #1b5a6d;
  --color-teal-3: #2f5a6b;
  --color-gold: #c9a227;
  --color-gold-soft: #e6cf8a;
  --color-ink: #111;
  --color-muted: #585e6a;
  --color-bg: #ffffff;
  --color-soft: #f4f4f2;
  --color-line: #e8e8e6;
  --font: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
  --container: 1320px;
  --radius: 12px;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.6;
  color: var(--color-ink);
  background: var(--color-bg);
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 { line-height: 1.15; margin: 0 0 .5em; }

p { margin: 0 0 1em; }

a { color: var(--color-teal-3); text-decoration: none; transition: color .2s ease; }
a:hover { color: var(--color-gold); }

img { max-width: 100%; height: auto; }

.container { max-width: var(--container); margin: 0 auto; padding: 0 24px; }

.section { padding: 96px 0; position: relative; overflow: hidden; }
.section > .container { position: relative; z-index: 1; }
section[id] { scroll-margin-top: 104px; }
.area-acc { scroll-margin-top: 104px; }
.section--soft { background: var(--color-soft); }
.section--white { background: #fff; }
@keyframes flow-x { to { background-position: -170px 0; } }

/* Blob animati di sfondo (ispirati al design del sito di riferimento) */
.section-bg { position: absolute; inset: 0; overflow: hidden; z-index: 0; pointer-events: none; }
.section-bg .blob {
  position: absolute;
  border-radius: 42% 58% 60% 40% / 45% 45% 55% 55%;
  filter: blur(48px);
  opacity: .8;
  animation: blob-move 16s ease-in-out infinite alternate;
  will-change: transform, border-radius;
}
@keyframes blob-move {
  0%   { transform: translate(0, 0) rotate(0deg) scale(1);      border-radius: 42% 58% 60% 40% / 45% 45% 55% 55%; }
  50%  { transform: translate(34px, -22px) rotate(9deg) scale(1.12); border-radius: 60% 40% 35% 65% / 55% 60% 40% 45%; }
  100% { transform: translate(-20px, 26px) rotate(-7deg) scale(1.18); border-radius: 35% 65% 55% 45% / 60% 40% 60% 40%; }
}

/* Titoli "is" stile Orsingher: leggeri e grandi */
.home-title, .section-title {
  font-weight: 200;
  letter-spacing: -.02em;
  font-size: clamp(1.9rem, 3.6vw, 3rem);
  color: var(--color-teal);
  max-width: 820px;
}
.section-title em { font-style: italic; color: var(--color-gold); }

.eyebrow {
  display: block;
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--color-teal-3);
  margin-bottom: 14px;
}

/* Pulsante "Leggi" con freccia (stile RoundButton) */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 11px 26px;
  border-radius: 999px;
  border: 1px solid transparent;
  font-weight: 500;
  font-size: .95rem;
  cursor: pointer;
  background: none;
  transition: all .25s ease;
}
.btn svg { width: 22px; height: 16px; transition: transform .25s ease; }
.btn:hover svg { transform: translateX(4px); }
.btn--pill { border-color: var(--color-teal); color: var(--color-teal); }
.btn--pill:hover { background: var(--color-teal); color: #fff; }
.btn--solid { background: var(--color-teal-2); color: #fff; fill: #fff; }
.btn--solid:hover { background: var(--color-teal); color: #fff; }
.btn--gold { background: var(--color-gold); color: #fff; fill: #fff; }
.btn--gold:hover { background: var(--color-teal-3); color: #fff; }
.btn--light { border-color: rgba(255,255,255,.5); color: #fff; }
.btn--light:hover { background: #fff; color: var(--color-teal); }

/* ---------- Header (minimal) ---------- */
.site-header {
  position: relative;
  z-index: 900;
  background: #ffffff;
  border-bottom: 1px solid var(--color-line);
}
.header-inner { display: flex; align-items: center; justify-content: space-between; min-height: 72px; gap: 24px; }

.site-logo { display: flex; align-items: center; gap: 12px; font-weight: 700; font-size: 1.35rem; color: var(--color-teal); letter-spacing: -.01em; }
.site-logo img { max-height: 34px; width: auto; display: block; }
.logo-mark {
  width: 38px; height: 38px; flex: none;
  display: grid; place-items: center;
  border-radius: 50%;
  background: var(--color-teal);
  color: #fff;
  font-family: var(--font);
  font-weight: 600;
  font-size: 1.15rem;
}
.header-right { display: flex; align-items: center; gap: 22px; }

.main-nav ul { display: flex; flex-wrap: nowrap; gap: 4px; list-style: none; margin: 0; padding: 0; }
.main-nav a {
  display: block; padding: 10px 14px;
  font-size: .95rem; font-weight: 500;
  color: var(--color-ink); border-radius: 8px;
  white-space: nowrap;
}
.main-nav a:hover { color: #ffffff; background: var(--color-blue); }
.main-nav .current-menu-item > a { color: var(--color-teal-3); background: var(--color-soft); }

.header-langs { display: flex; align-items: center; gap: 6px; font-size: .85rem; font-weight: 600; }
.header-langs a { color: var(--color-muted); padding: 4px 6px; }
.header-langs a.active, .header-langs a:hover { color: var(--color-teal); }

/* Dropdown lingue con bandierine */
.lang-dropdown { position: relative; }
.lang-current { display: flex; align-items: center; gap: 8px; background: #fff; border: 1px solid var(--color-line); border-radius: 999px; padding: 6px 12px 6px 8px; font-family: var(--font); font-size: .9rem; font-weight: 600; color: var(--color-teal); cursor: pointer; }
.lang-current:hover { border-color: var(--color-gold); }
.flag { width: 22px; height: 15px; border-radius: 3px; overflow: hidden; display: inline-flex; flex: none; box-shadow: 0 1px 3px rgba(0,0,0,.25); vertical-align: middle; }
.flag svg { width: 100%; height: 100%; display: block; }
.lang-caret { font-size: .7rem; color: var(--color-muted); transition: transform .2s ease; }
.lang-dropdown.open .lang-caret { transform: rotate(180deg); }
.lang-list { position: absolute; top: calc(100% + 8px); right: 0; min-width: 185px; list-style: none; margin: 0; padding: 8px; background: #ffffff; border: 1px solid var(--color-line); border-radius: 14px; box-shadow: 0 18px 44px rgba(3,3,5,.25); opacity: 0; transform: translateY(6px); pointer-events: none; transition: opacity .2s ease, transform .2s ease; z-index: 1300; }
.lang-dropdown.open .lang-list { opacity: 1; transform: none; pointer-events: auto; }
.lang-list li a { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 9px; color: #111111; font-size: .92rem; font-weight: 500; text-decoration: none; }
.lang-list li a:hover, .lang-list li.active a { background: var(--color-soft); color: var(--color-teal); }

.nav-toggle { display: none; background: none; border: 0; cursor: pointer; padding: 8px; }
.nav-toggle span { display: block; width: 22px; height: 2px; background: var(--color-teal); margin: 5px 0; border-radius: 2px; transition: .25s; }

/* ---------- Header flottante (stile footer: verde + bianco) su tutte le pagine ---------- */
.site-header {
  position: fixed;
  top: 72px; left: 0; right: 0;
  overflow: visible;
  padding: 0 24px;
  background: transparent;
  border-bottom-color: transparent;
  transition: background .35s ease, border-color .35s ease, box-shadow .35s ease;
}
.site-header.shrunk {
  background: rgba(20,69,85,.9);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(255,255,255,.14);
  box-shadow: 0 12px 30px rgba(12,53,66,.35);
}
.site-header .header-inner { min-height: 0; justify-content: space-between; gap: 24px; flex-wrap: nowrap; }
.site-header .site-logo { color: #fff; display: flex; align-items: center; flex: 0 1 auto; min-width: 0; }
.site-header .site-logo img,
.site-header .logo-img { height: auto; max-height: 46px; width: auto; max-width: 380px; opacity: 1; transition: max-height .2s ease; }
.site-header .logo-img.logo--light { filter: brightness(0) invert(1); opacity: .95; }

/* Ellisse bianca che contiene menu + selettore lingua (sopra il video) */
.site-header .header-right {
  background: #fff;
  border: 1px solid rgba(255,255,255,.65);
  border-radius: 999px;
  padding: 6px 14px 6px 12px;
  gap: 10px;
  box-shadow: 0 10px 28px rgba(12,53,66,.28);
  flex: 0 1 auto;
  min-width: 0;
  max-width: 100%;
  align-items: center;
}
.site-header .lang-current { display: flex; align-items: center; padding: 4px 10px 4px 6px; white-space: nowrap; }
.site-header .main-nav a { color: var(--color-teal-3); padding: 8px 12px; margin: 0 4px; white-space: nowrap; }
.site-header .main-nav ul { gap: 12px; }
.site-header .main-nav a:hover,
.site-header .main-nav ul > li.menu-active > a { color: #fff; background: var(--color-blue); }
.site-header .main-nav .current-menu-item > a { color: #fff; background: var(--color-blue); }
.site-header .lang-current { background: transparent; border: 0; color: var(--color-teal); white-space: nowrap; }
.site-header .lang-caret { color: var(--color-teal); }
.site-header .nav-toggle span { background: var(--color-teal); }

/* Hero sulla homepage: parte da top:0, dietro l'header fisso */
body.home .home-hero {
  min-height: 100vh;
  padding-top: 96px;
}

/* ---------- Hero (a piena pagina) ---------- */
.home-hero {
  position: relative;
  min-height: calc(100vh - 72px);
  display: flex; align-items: center;
  background:
    radial-gradient(700px 400px at 85% 15%, rgba(27,90,109,.35), transparent 60%),
    linear-gradient(150deg, var(--color-blue) 0%, var(--color-blue-dark) 55%, #082b37 100%);
  color: #fff;
  overflow: hidden;
  padding: 72px 0;
}
.home-hero .container { position: relative; z-index: 2; }
.home-hero::before {
  content: "";
  position: absolute; right: -140px; bottom: -140px;
  width: 420px; height: 420px; border-radius: 50%;
  border: 60px solid rgba(255,255,255,.05);
  z-index: 1;
}

/* Video di sfondo in loop (stile riferimento) */
.hero-video { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.hero-video video { width: 100%; height: 100%; object-fit: cover; will-change: transform; }
.hero-video::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20,69,85,.42) 0%, rgba(20,69,85,.20) 38%, rgba(8,43,53,.62) 100%); }
.home-hero.has-video { background: var(--color-blue); }

/* Animazione ad anello (fallback e richiamo al brand "Anello") */
.hero-anello { position: absolute; z-index: 1; right: -180px; top: 50%; margin-top: -260px; width: 520px; height: 520px; pointer-events: none; opacity: .55; }
.hero-anello .ring { position: absolute; border-radius: 50%; }
.hero-anello .ring--1 { inset: 0; border: 2px dashed rgba(201,162,39,.7); animation: spin 34s linear infinite; }
.hero-anello .ring--2 { inset: 70px; border: 54px solid rgba(255,255,255,.05); animation: spin 60s linear infinite reverse; }
.hero-anello .ring--3 { inset: 150px; border: 1px solid rgba(201,162,39,.35); }
@keyframes spin { to { transform: rotate(360deg); } }

/* ---------- Dettaglio aree (sezione dedicata) ---------- */
.areas-detail { border-top: 1px solid var(--color-line); }
.area-detail {
  display: grid; grid-template-columns: 90px 1fr;
  gap: 30px;
  padding: 46px 0;
  border-bottom: 1px solid var(--color-line);
  scroll-margin-top: 96px;
}
.area-detail .area-detail-num { font-size: 2rem; font-weight: 200; color: var(--color-teal); line-height: 1; }
.area-detail h3 { font-weight: 400; font-size: clamp(1.2rem, 2.4vw, 1.6rem); color: var(--color-teal); margin-bottom: 12px; }
.area-detail p { color: var(--color-muted); white-space: pre-line; }

.home-hero .hero-eyebrow { color: var(--color-gold-soft); font-size: .82rem; letter-spacing: .28em; text-transform: uppercase; font-weight: 600; }
.home-hero h1 {
  font-weight: 200;
  font-size: clamp(2.6rem, 7vw, 5.6rem);
  line-height: 1.03;
  letter-spacing: -.03em;
  margin: 22px 0 8px;
  color: #fff;
  max-width: 900px;
}
.home-hero h1 em { font-style: italic; font-weight: 300; color: var(--color-gold-soft); }
.home-hero .hero-sub { color: rgba(255,255,255,.82); font-size: 1.05rem; max-width: 560px; margin-bottom: 30px; }
.home-hero .hero-cta { display: flex; gap: 14px; flex-wrap: wrap; }

/* Ticker "Featured articles" */
.hero-featured { margin-top: 56px; border-top: 1px solid rgba(255,255,255,.2); padding-top: 22px; }
.hero-featured ._label { font-size: .8rem; letter-spacing: .2em; text-transform: uppercase; color: var(--color-gold-soft); margin-bottom: 12px; }
.marquee { overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }
.marquee-track { display: inline-flex; gap: 48px; white-space: nowrap; animation: marquee 32s linear infinite; }
.marquee:hover .marquee-track { animation-play-state: paused; }
.marquee-track a { color: rgba(255,255,255,.85); font-size: .98rem; font-weight: 300; }
.marquee-track a:hover { color: var(--color-gold-soft); }
.marquee-track span { color: var(--color-gold); margin-left: 48px; }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ---------- Intro / missione ---------- */
.home-intro { text-align: center; }
.home-intro .home-title { margin: 0 auto 24px; }
.home-intro .intro-text { max-width: 680px; margin: 0 auto; color: var(--color-muted); font-size: 1.05rem; }

/* ---------- Aree di attività / Sector (switcher) ---------- */
.home-switch { display: inline-flex; gap: 6px; background: var(--color-soft); border: 1px solid var(--color-line); padding: 5px; border-radius: 999px; margin-top: 34px; }
.home-switch button {
  border: 0; background: none; cursor: pointer;
  padding: 10px 22px; border-radius: 999px;
  font-family: var(--font); font-size: .92rem; font-weight: 500;
  color: var(--color-muted); transition: all .25s ease;
}
.home-switch button.active { background: var(--color-blue); color: #fff; }

.activity-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; margin-top: 44px; }
.activity-panel { display: none; }
.activity-panel.active { display: grid; }

.activity-item {
  display: flex; flex-direction: column; align-items: center; text-align: center;
  gap: 18px;
  background: #fff;
  border: 1px solid var(--color-line);
  border-radius: var(--radius);
  padding: 34px 22px 26px;
  color: inherit;
  transition: transform .35s cubic-bezier(.22,.61,.36,1), box-shadow .35s ease, border-color .35s ease;
}
a.activity-item { text-decoration: none; }
.activity-item:hover { transform: translateY(-7px); box-shadow: 0 18px 40px rgba(10,10,12,.10); border-color: rgba(201,162,39,.75); }

.activity-item ._icon {
  position: relative;
  width: 108px; height: 108px; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--color-soft);
  color: var(--color-blue);
  flex: none;
  transition: color .35s ease, background .35s ease, transform .45s cubic-bezier(.22,.61,.36,1);
}
.activity-item ._icon::before {
  content: ""; position: absolute; inset: -8px; border-radius: 50%;
  border: 1px solid rgba(201,162,39,0);
  opacity: 0;
  transition: border-color .4s ease, transform .5s ease, opacity .4s ease;
}
.activity-item ._icon svg { width: 82px; height: 82px; transition: transform .5s cubic-bezier(.22,.61,.36,1); }
.activity-item:hover ._icon { background: transparent; transform: translateY(-2px); }
.activity-item:hover ._icon::before { opacity: 1; border-color: rgba(201,162,39,.65); transform: scale(1.14); }
.activity-item:hover ._icon svg { transform: rotate(8deg) scale(1.08); }

.activity-item h3 { font-size: 1.02rem; font-weight: 500; line-height: 1.3; color: var(--color-blue); letter-spacing: .01em; }
.activity-item ._go {
  margin-top: auto; display: inline-flex; align-items: center; gap: 9px;
  font-weight: 600; font-size: .86rem; letter-spacing: .04em;
  color: var(--color-teal-3);
  padding: 8px 16px;
  border: 1px solid var(--color-line);
  border-radius: 999px;
  transition: color .3s ease, border-color .3s ease, background .3s ease;
}
.activity-item ._go svg { width: 20px; height: 14px; transition: transform .3s ease; }
.activity-item:hover ._go { color: #fff; background: var(--color-blue); border-color: var(--color-blue); }
.activity-item:hover ._go svg { transform: translateX(4px); }

/* ---------- Aree: accordion approfondimenti ---------- */
.areas-accordion { border-top: 1px solid var(--color-line); }
.area-acc { border-bottom: 1px solid var(--color-line); scroll-margin-top: 96px; }
.area-acc ._head {
  width: 100%; border: 0; background: none; cursor: pointer;
  display: flex; align-items: center; gap: 22px;
  padding: 24px 4px; text-align: left;
  font-family: var(--font);
}
.area-acc ._head:hover h3 { color: var(--color-gold); }
.area-acc ._num { font-size: 1.6rem; font-weight: 200; color: var(--color-gold); line-height: 1; flex: none; width: 48px; }
.area-acc ._ic-area { width: 64px; height: 64px; border-radius: 14px; background: var(--color-soft); color: var(--color-teal); display: grid; place-items: center; flex: none; transition: background .25s ease, color .25s ease; }
.area-acc ._ic-area svg { width: 46px; height: 46px; }
.area-acc.open ._ic-area, .area-acc ._head:hover ._ic-area { background: var(--color-teal); color: #fff; }
.area-acc ._head h3 { font-weight: 400; font-size: clamp(1.1rem, 2.2vw, 1.45rem); color: var(--color-teal); margin: 0; transition: color .2s ease; }
.area-acc ._chev { margin-left: auto; flex: none; width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--color-line); display: grid; place-items: center; color: var(--color-teal); transition: transform .3s ease, background .3s ease, color .3s ease; }
.area-acc.open ._chev { transform: rotate(180deg); background: var(--color-teal); color: #fff; }
.area-acc ._panel { max-height: 0; overflow: hidden; transition: max-height .5s ease; }
.area-acc ._panel ._inner { padding: 2px 4px 34px; }
.area-acc ._panel p { color: var(--color-muted); white-space: pre-line; margin: 0 0 20px; }
.area-servizi-title { font-size: .82rem; font-weight: 700; text-transform: uppercase; letter-spacing: .14em; color: var(--color-gold); margin: 0 0 10px; }
.area-servizi { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px 26px; list-style: none; margin: 0 0 22px; padding: 0; }
.area-servizi li { position: relative; padding-left: 20px; color: var(--color-muted); font-size: .95rem; }
.area-servizi li::before { content: ""; position: absolute; left: 0; top: .55em; width: 7px; height: 7px; border-radius: 50%; background: var(--color-gold); }
@media (max-width: 560px) { .area-servizi { grid-template-columns: 1fr; } }

/* ---------- Press & News ---------- */
.news-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 40px; flex-wrap: wrap; }
.news-grid { list-style: none; margin: 0; padding: 0; }
.news-item {
  border-top: 1px solid var(--color-line);
  padding: 22px 4px;
  transition: background .2s ease;
}
.news-item:last-child { border-bottom: 1px solid var(--color-line); }
.news-item:hover { background: #fbfbfa; }
.news-item ._meta { font-size: .8rem; color: var(--color-muted); letter-spacing: .06em; text-transform: uppercase; margin-bottom: 8px; }
.news-item ._meta .cat { color: var(--color-teal-3); font-weight: 600; margin-right: 10px; }
.news-item h3 { font-size: clamp(1.05rem, 2vw, 1.35rem); font-weight: 500; margin: 0; }
.news-item h3 a { color: var(--color-ink); }
.news-item h3 a:hover { color: var(--color-teal-3); }
.news-item ._arrow { float: right; color: var(--color-gold); font-size: 1.4rem; margin: 2px 6px 0 16px; }

/* ---------- Riconoscimenti ---------- */
.awards { display: flex; flex-wrap: wrap; justify-content: center; gap: 34px 64px; align-items: center; margin-top: 48px; }
.award {
  font-size: 1.25rem; font-weight: 200; letter-spacing: -.01em;
  color: #9aa1a8; white-space: nowrap;
  display: inline-flex; align-items: center; gap: 8px;
}
.award::before { content: ""; width: 8px; height: 8px; background: var(--color-gold); border-radius: 50%; }

/* ---------- Sedi ---------- */
.offices-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.office-card {
  background: #fff; border: 1px solid var(--color-line); border-radius: var(--radius);
  padding: 30px 24px; cursor: pointer;
  transition: transform .25s ease, box-shadow .25s ease;
}
.office-card:hover { transform: translateY(-4px); box-shadow: 0 14px 34px rgba(10,10,12,.10); }
.office-card .office-avatar {
  width: 76px; height: 76px; border-radius: 50%; overflow: hidden;
  display: grid; place-items: center;
  background: var(--color-soft); margin-bottom: 16px; flex: none;
  box-shadow: 0 0 0 1px var(--color-line), 0 8px 20px rgba(10,10,12,.08);
}
.office-card .office-avatar img {
  width: 100%; height: 100%; object-fit: cover; object-position: center; display: block;
  filter: saturate(.95) contrast(1.02);
  transition: transform .4s ease;
}
.office-card .office-avatar span {
  font-size: 1.2rem; font-weight: 600; color: var(--color-teal);
}
.office-card:hover .office-avatar img { transform: scale(1.06); }
.office-card h3 { font-weight: 500; font-size: 1.15rem; margin-bottom: 6px; }
.office-card p { color: var(--color-muted); font-size: .9rem; margin: 0; }
.office-card .office-open { margin-top: 14px; display: inline-block; font-weight: 600; font-size: .85rem; color: var(--color-teal-3); }

/* ---------- Statistiche ---------- */
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; text-align: center; padding: 24px 0 28px; }
.stat .stat-num { font-size: clamp(2.4rem, 5vw, 3.6rem); font-weight: 200; color: var(--color-teal); }
.stat .stat-label { color: var(--color-muted); text-transform: uppercase; letter-spacing: .14em; font-size: .8rem; }

/* ---------- Professionisti ---------- */
.partners-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.partner-card { background: #fff; border: 1px solid var(--color-line); border-radius: var(--radius); overflow: hidden; transition: transform .25s ease, box-shadow .25s ease; }
.partner-card:hover { transform: translateY(-4px); box-shadow: 0 14px 34px rgba(10,10,12,.10); }
.partner-card .partner-avatar { height: 140px; display: grid; place-items: center; background: linear-gradient(135deg, var(--color-blue-2), var(--color-blue)); }
.partner-card .partner-avatar span { width: 76px; height: 76px; display: grid; place-items: center; border-radius: 50%; border: 2px solid rgba(255,255,255,.4); color: #fff; font-size: 1.4rem; font-weight: 500; }
.partner-card .partner-photo { height: 220px; overflow: hidden; position: relative; background: var(--color-soft); }
.partner-card .partner-photo::after { content: ""; position: absolute; inset: 0; pointer-events: none; box-shadow: inset 0 -1px 0 rgba(201,162,39,.18); }
.partner-card .partner-photo img { width: 100%; height: 100%; object-fit: cover; object-position: top center; display: block; filter: grayscale(.22) saturate(.96) contrast(1.02); transition: transform .45s ease, filter .45s ease; }
.partner-card:hover .partner-photo img { transform: scale(1.04); filter: grayscale(0) saturate(1.05); }
.partner-card .partner-body { padding: 20px; }
.partner-card h3 { font-size: 1.05rem; font-weight: 500; margin-bottom: 2px; }
.partner-card .partner-role { color: var(--color-gold); font-size: .78rem; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; margin-bottom: 10px; }
.partner-card p { color: var(--color-muted); font-size: .88rem; margin: 0; }
.partner-preview { color: var(--color-muted); font-size: .88rem; margin: 8px 0 0 !important; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.partner-cat { display: inline-block; font-size: .7rem; font-weight: 600; text-transform: uppercase; letter-spacing: .14em; color: var(--color-gold); margin-bottom: 6px; }
.person-more { display: inline-block; margin-top: 10px; font-weight: 600; font-size: .9rem; color: var(--color-teal-3); }
.person-more:hover { color: var(--color-gold); }

/* Filtri Professionisti per categoria */
.prof-filter { display: flex; flex-wrap: wrap; gap: 8px; }
.prof-filter button {
  border: 1px solid var(--color-line); background: #fff; color: var(--color-ink);
  border-radius: 999px; padding: 9px 22px;
  font-family: var(--font); font-size: .9rem; font-weight: 500;
  cursor: pointer; line-height: 1.2;
  transition: color .25s ease, background .25s ease, border-color .25s ease, box-shadow .25s ease;
}
.prof-filter button.active,
.prof-filter button:hover,
.prof-filter button:focus-visible { background: var(--color-blue); border-color: var(--color-blue); color: #fff; box-shadow: 0 6px 16px rgba(20,69,85,.22); outline: none; }

/* Transizione fluida tra categorie (il fade usa Web Animations API in JS, rispetto prefers-reduced-motion) */
.js-prof-card.is-hidden { display: none; }

/* Pagina singolo professionista */
.person-media { position: relative; border-radius: 18px; overflow: hidden; box-shadow: 0 24px 60px rgba(10,10,12,.18); aspect-ratio: 3 / 3.6; }
.person-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: top center; }
.person-avatar-fallback { position: absolute; inset: 0; display: grid; place-items: center; background: radial-gradient(400px 300px at 20% 10%, rgba(201,162,39,.25), transparent 60%), linear-gradient(150deg, var(--color-blue-2), var(--color-blue)); color: #fff; font-size: 5rem; font-weight: 600; }
.person-media + ._text .partner-role { color: var(--color-gold); text-transform: uppercase; letter-spacing: .1em; font-weight: 600; margin-bottom: 10px; }

/* ---------- Contatti ---------- */
.contact-grid { display: grid; grid-template-columns: 1fr 1.1fr; gap: 44px; align-items: start; }
.contact-info .contact-line { display: flex; gap: 14px; margin-bottom: 16px; color: var(--color-muted); align-items: flex-start; }
.contact-info .contact-line .ic { color: var(--color-teal-3); flex-shrink: 0; display: inline-flex; align-items: center; }
.contact-info .contact-line .ic svg { flex: none; }
.footer-linkedin { display: inline-flex; align-items: center; gap: 8px; }
.footer-linkedin svg { flex: none; }
.contact-map { position: relative; margin-top: 26px; border-radius: var(--radius); overflow: hidden; box-shadow: 0 10px 30px rgba(10,10,12,.10); border: 1px solid var(--color-line); }
.contact-map iframe { position: relative; z-index: 1; display: block; width: 100%; height: 250px; border: 0; }

.contact-form { background: #fff; border: 1px solid var(--color-line); border-radius: var(--radius); padding: 32px; }
.contact-form label { display: block; font-size: .84rem; font-weight: 600; margin-bottom: 6px; color: var(--color-teal); }
.contact-form input[type="text"], .contact-form input[type="email"], .contact-form textarea {
  width: 100%; padding: 13px 14px;
  border: 1px solid var(--color-line); border-radius: 8px;
  font: inherit; color: var(--color-ink); background: var(--color-soft);
  margin-bottom: 18px; transition: border-color .2s ease, background .2s ease;
}
.contact-form input:focus, .contact-form textarea:focus { outline: none; border-color: var(--color-teal-2); background: #fff; }
.contact-form textarea { resize: vertical; min-height: 120px; }
.contact-form .form-msg { padding: 12px 14px; border-radius: 8px; margin-bottom: 16px; font-size: .92rem; }
.contact-form .form-msg.ok { background: #e7f4ec; color: #1d7a43; }
.contact-form .form-msg.err { background: #fdecec; color: #b3261e; }

/* ---------- Footer (scuro) ---------- */
.site-footer { background: var(--color-blue); color: rgba(255,255,255,.75); }
.footer-top { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1.2fr; gap: 44px; padding: 70px 0 46px; }
.site-footer .site-logo, .site-footer h4 { color: #fff; }
.site-footer .logo-mark { background: #fff; color: var(--color-teal); }
.site-footer .logo-img.logo--light { filter: brightness(0) invert(1); opacity: .95; }
.site-footer h4 { font-weight: 600; font-size: .95rem; letter-spacing: .08em; text-transform: uppercase; margin-bottom: 18px; }
.site-footer a { color: rgba(255,255,255,.75); }
.site-footer a:hover { color: var(--color-gold-soft); }
.site-footer ul { list-style: none; margin: 0; padding: 0; }
.site-footer li { margin-bottom: 10px; font-size: .92rem; }
.footer-brand p { font-size: .92rem; max-width: 300px; }
.footer-bottom { border-top: 1px solid rgba(255,255,255,.14); padding: 22px 0; display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; font-size: .84rem; }

/* ---------- Modal sedi ---------- */
.modal { position: fixed; inset: 0; z-index: 1000; display: none; align-items: center; justify-content: center; padding: 20px; }
.modal.show { display: flex; }
.modal-overlay { position: absolute; inset: 0; background: rgba(8,43,53,.6); backdrop-filter: blur(3px); }
.modal-box { position: relative; z-index: 1; background: #fff; border-radius: 14px; max-width: 480px; width: 100%; padding: 34px; box-shadow: 0 24px 60px rgba(3,3,5,.35); animation: modal-in .25s ease; }
@keyframes modal-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.modal-box h3 { font-size: 1.4rem; color: var(--color-teal); }
.modal-box p { color: var(--color-muted); margin-bottom: 12px; }
.modal-box .modal-close { position: absolute; top: 14px; right: 16px; background: none; border: 0; font-size: 1.5rem; color: var(--color-muted); cursor: pointer; line-height: 1; }

.modal-map { position: relative; margin-top: 16px; border-radius: 12px; overflow: hidden; box-shadow: 0 8px 24px rgba(10,10,12,.15); border: 1px solid var(--color-line); }
.modal-map iframe { position: relative; z-index: 1; display: block; width: 100%; height: 200px; border: 0; }

.office-map { position: relative; margin-top: 18px; border-radius: 14px; overflow: hidden; border: 1px solid var(--color-line); box-shadow: 0 14px 34px rgba(10,10,12,.10); aspect-ratio: 16 / 9; max-height: 380px; background: var(--color-soft); }
.office-map iframe { position: relative; z-index: 1; display: block; width: 100%; height: 100%; border: 0; }
.office-directions { display: inline-block; margin-top: 12px; font-weight: 600; font-size: .88rem; color: var(--color-teal-3); }
.office-directions:hover { color: var(--color-gold); }

/* Segnaposto personalizzato (foto della città in tondino con punta dorata) */
.map-pin {
  position: absolute; z-index: 5; left: 50%; top: 50%;
  transform: translate(-50%, -100%);
  width: clamp(46px, 8vw, 62px); height: auto;
  pointer-events: none;
  opacity: 0;
  animation: map-pin-enter .7s cubic-bezier(.22,.61,.36,1) .25s forwards;
}
.map-pin .map-pin-media { position: relative; display: block; width: 100%; }
.map-pin .map-pin-media img {
  width: 100%; height: auto; aspect-ratio: 1; object-fit: cover; object-position: center;
  border-radius: 50%;
  border: 2px solid var(--color-bg);
  box-shadow: 0 0 0 2px var(--color-gold), 0 10px 20px rgba(0,0,0,.35);
  background: var(--color-soft);
}
.map-pin .map-pin-media::after {
  content: ""; position: absolute; left: 50%; bottom: -6px; transform: translateX(-50%);
  width: 0; height: 0;
  border-left: 8px solid transparent; border-right: 8px solid transparent;
  border-top: 10px solid var(--color-gold);
  filter: drop-shadow(0 4px 4px rgba(0,0,0,.28));
}
.map-pin .map-pin-fallback {
  width: 100%; aspect-ratio: 1; border-radius: 50%; display: grid; place-items: center;
  font-family: var(--font); font-weight: 700; color: var(--color-bg);
  background: linear-gradient(150deg, var(--color-teal-2), var(--color-teal));
  border: 2px solid var(--color-bg); box-shadow: 0 0 0 2px var(--color-gold), 0 10px 20px rgba(0,0,0,.3);
}
@keyframes map-pin-enter { from { opacity: 0; transform: translate(-50%, -58%) scale(.55); } to { opacity: 1; transform: translate(-50%, -100%) scale(1); } }
.office-map:hover .map-pin,
.modal-map:hover .map-pin,
.contact-map:hover .map-pin { animation: none; opacity: 1; transform: translate(-50%, -103%) scale(1.06); transition: transform .35s ease; }
.contact-map .map-pin { width: clamp(42px, 7vw, 54px); }
@media (prefers-reduced-motion: reduce) {
  .map-pin { animation: none; opacity: 1; }
  .office-map:hover .map-pin,
  .modal-map:hover .map-pin,
  .contact-map:hover .map-pin { transform: translate(-50%, -100%); }
}

/* ---------- Notizie & Pubblicazioni (stile anello.it) ---------- */
.news-filter { margin-bottom: 8px; }

/* Notch (selettore Notizie / Pubblicazioni) */
.news-notch { display: inline-flex; gap: 6px; background: var(--color-soft); border: 1px solid var(--color-line); padding: 5px; border-radius: 999px; margin-bottom: 34px; }
.news-notch button { border: 0; background: none; cursor: pointer; padding: 9px 28px; border-radius: 999px; font-family: var(--font); font-weight: 600; font-size: .95rem; color: var(--color-muted); transition: all .25s ease; }
.news-notch button.active { background: #fff; color: var(--color-teal); box-shadow: 0 4px 14px rgba(10,10,12,.14); }
.news-panel { display: none; }
.news-panel.active { display: block; }
.news-panel .home-title { font-size: 1.4rem; margin-bottom: 4px; }
.news-panel .news-filter { display: flex; gap: 8px; flex-wrap: wrap; margin: 10px 0 28px; }
.news-panel .news-filter button { border: 1px solid var(--color-line); background: #fff; color: var(--color-ink); border-radius: 999px; padding: 7px 18px; font-family: var(--font); font-size: .88rem; font-weight: 500; cursor: pointer; transition: all .2s ease; }
.news-panel .news-filter button.active, .news-panel .news-filter button:hover { background: var(--color-teal); border-color: var(--color-teal); color: #fff; }
.news-banner-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; margin-top: 30px; }
.news-banner-item { display: flex; flex-direction: column; gap: 12px; }
.news-banner-item ._thumb { display: block; border-radius: 10px; overflow: hidden; }
.news-banner-item ._thumb img { display: block; width: 100%; height: auto; transition: opacity .3s ease, transform .4s ease; }
.news-banner-item:hover ._thumb img { opacity: .92; transform: scale(1.02); }
.news-banner-item h3 { font-size: 1.02rem; font-weight: 500; line-height: 1.3; }
.news-banner-item h3 a { color: var(--color-ink); }
.news-banner-item h3 a:hover { color: var(--color-teal-3); }
.news-banner-item ._meta { font-size: .8rem; color: var(--color-muted); text-transform: uppercase; letter-spacing: .04em; }
.news-banner-item ._meta .cat { color: var(--color-teal-3); font-weight: 600; margin-right: 8px; }
.news-banner-item ._more { font-weight: 600; font-size: .88rem; margin-top: auto; }
.js-filter-item { transition: opacity .25s ease, transform .25s ease; }
.news-filter-canvas { position: relative; }

/* ---------- Pagine interne ---------- */
.page-hero { position: relative; overflow: hidden; background-color: var(--color-blue); color: #fff; padding: 140px 0 72px; }

/* Lavora con noi — curve animate (dall'html di riferimento) */
.curved-lines { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: 0; }
.curve {
  position: absolute; right: -240px; bottom: -520px;
  border: var(--bw, 1px) solid var(--cc, rgba(201,162,39,.82));
  border-radius: 50%;
  transform-origin: 50% 50%;
  will-change: transform, width, height, border-radius, right, bottom;
  animation: curve-morph 14s ease-in-out infinite, curve-drift 24s ease-in-out infinite;
}
.curve:nth-child(1) { width: 620px;  height: 430px;  animation-delay: -1s, -2s; }
.curve:nth-child(2) { width: 700px;  height: 490px;  animation-delay: -2s, -4s; }
.curve:nth-child(3) { width: 780px;  height: 545px;  animation-delay: -3s, -6s; }
.curve:nth-child(4) { width: 860px;  height: 600px;  animation-delay: -4s, -8s; }
.curve:nth-child(5) { width: 940px;  height: 655px;  animation-delay: -5s, -10s; }
.curve:nth-child(6) { width: 1020px; height: 710px;  animation-delay: -6s, -12s; }
.curve:nth-child(7) { width: 1100px; height: 770px;  animation-delay: -7s, -14s; }
.curve:nth-child(8) { width: 1180px; height: 825px;  animation-delay: -8s, -16s; }
.curve:nth-child(9) { width: 1260px; height: 880px;  animation-delay: -9s, -18s; }
.curve:nth-child(odd)  { animation-duration: 18s, 28s; }
.curve:nth-child(even) { animation-duration: 21s, 30s; }

/* Spessore progressivo delle curve (esterna più spessa → interna più fine) */
.curve:nth-child(1) { --bw: 1px; }
.curve:nth-child(2) { --bw: 1.5px; }
.curve:nth-child(3) { --bw: 2px; }
.curve:nth-child(4) { --bw: 2.5px; }
.curve:nth-child(5) { --bw: 3px; }
.curve:nth-child(6) { --bw: 3.6px; }
.curve:nth-child(7) { --bw: 4.4px; }
.curve:nth-child(8) { --bw: 5.2px; }
.curve:nth-child(9) { --bw: 6px; }

/* Luccichio al passaggio: ogni curva si illumina in sequenza */
.curved-lines .curve { transition: border-color .4s ease, filter .4s ease; }
.curved-lines:hover .curve { border-color: rgba(255,238,196,.95); filter: drop-shadow(0 0 6px rgba(230,207,138,.9)); }
.curved-lines .curve:nth-child(1) { transition-delay: .0s; }
.curved-lines .curve:nth-child(2) { transition-delay: .07s; }
.curved-lines .curve:nth-child(3) { transition-delay: .14s; }
.curved-lines .curve:nth-child(4) { transition-delay: .21s; }
.curved-lines .curve:nth-child(5) { transition-delay: .28s; }
.curved-lines .curve:nth-child(6) { transition-delay: .35s; }
.curved-lines .curve:nth-child(7) { transition-delay: .42s; }
.curved-lines .curve:nth-child(8) { transition-delay: .49s; }
.curved-lines .curve:nth-child(9) { transition-delay: .56s; }

/* Al click si agitano (turbinio calmo e dolce) */
.curved-lines.intensify .curve { animation: curve-morph 3.6s ease-in-out infinite, wiggle 1.4s ease-in-out infinite; }
.curved-lines.intensify .curve:nth-child(odd)  { animation-duration: 3.6s, 1.2s; }
.curved-lines.intensify .curve:nth-child(even) { animation-duration: 4.2s, 1.6s; }
@keyframes wiggle {
  0%   { transform: rotate(-1.2deg) scale(1.01); }
  50%  { transform: rotate(1.2deg) scale(1.02); }
  100% { transform: rotate(-1.2deg) scale(1.01); }
}

@keyframes curve-morph {
  0%   { border-radius: 50%;                 transform: rotate(0deg) scale(1); }
  25%  { border-radius: 48% 52% 51% 49% / 51% 49% 51% 49%; transform: rotate(-1.5deg) scale(1.005); }
  50%  { border-radius: 52% 48% 49% 51% / 48% 52% 49% 51%; transform: rotate(1.5deg) scale(0.998); }
  75%  { border-radius: 49% 51% 52% 48% / 51% 49% 51% 49%; transform: rotate(-1deg) scale(1.005); }
  100% { border-radius: 50%;                 transform: rotate(0deg) scale(1); }
}
@keyframes curve-drift {
  0%   { right: -240px; bottom: -520px; }
  25%  { right: -236px; bottom: -526px; }
  50%  { right: -244px; bottom: -514px; }
  75%  { right: -238px; bottom: -524px; }
  100% { right: -240px; bottom: -520px; }
}

@media (max-width: 768px) {
  .curve { right: -130px; bottom: -340px; border-width: 2px; }
  .curve:nth-child(1) { width: 340px; height: 240px; }
  .curve:nth-child(2) { width: 390px; height: 275px; }
  .curve:nth-child(3) { width: 440px; height: 310px; }
  .curve:nth-child(4) { width: 490px; height: 345px; }
  .curve:nth-child(5) { width: 540px; height: 380px; }
  .curve:nth-child(6) { width: 590px; height: 415px; }
  .curve:nth-child(7) { width: 640px; height: 450px; }
  .curve:nth-child(8) { width: 690px; height: 485px; }
  .curve:nth-child(9) { width: 740px; height: 520px; }
  @keyframes curve-drift {
    0%   { right: -130px; bottom: -340px; }
    25%  { right: -112px; bottom: -350px; }
    50%  { right: -148px; bottom: -324px; }
    75%  { right: -120px; bottom: -346px; }
    100% { right: -130px; bottom: -340px; }
  }
}

@media (prefers-reduced-motion: reduce) { .curve { animation: none; } }

/* Ondine verticali/orizzontali (singola ondina in rilievo) */
.curved-lines .waves { position: absolute; left: 0; right: 0; top: 0; bottom: 0; width: 100%; height: 100%; overflow: visible; }
.curved-lines .wave { fill: none; stroke-linecap: round; stroke: rgba(201,162,39,.5); }
.curved-lines .wave.v { animation: wave-v 26s ease-in-out infinite alternate; stroke: rgba(201,162,39,.68); }
.curved-lines .wave.h { animation: wave-h 28s ease-in-out infinite alternate; }
@keyframes wave-v { from { transform: translateX(-8px); } to { transform: translateX(8px); } }
@keyframes wave-h { from { transform: translateY(-6px); } to { transform: translateY(6px); } }

/* Ondine: si illuminano singolarmente al passaggio, continuano a muoversi, e alla pressa si espandono */
.curved-lines .wave { transition: stroke .35s ease, filter .35s ease; }
.curved-lines .waves { transition: transform .35s ease; transform-origin: 50% 50%; }
.curved-lines:hover .wave { stroke: rgba(255,238,196,.95); filter: drop-shadow(0 0 7px rgba(230,207,138,.95)); }
.curved-lines .wave:nth-child(1) { transition-delay: 0s; }
.curved-lines .wave:nth-child(2) { transition-delay: .07s; }
.curved-lines .wave:nth-child(3) { transition-delay: .14s; }
.curved-lines .wave:nth-child(4) { transition-delay: .21s; }
.curved-lines .wave:nth-child(5) { transition-delay: .28s; }
.curved-lines .wave:nth-child(6) { transition-delay: .35s; }
.curved-lines .wave:nth-child(7) { transition-delay: .42s; }
.curved-lines .wave:nth-child(8) { transition-delay: .49s; }
.curved-lines .wave:nth-child(9) { transition-delay: .56s; }
.curved-lines:active .waves { transform: scale(1.18); }

/* Click: si agitano (gestito dalle regole wiggle di .intensify) */
.curved-lines { pointer-events: auto; cursor: pointer; }
.curved-lines.intensify .wave.v { animation-duration: .9s !important; }
.curved-lines.intensify .wave.h { animation-duration: 1s !important; }
@media (prefers-reduced-motion: reduce) {
  .curved-lines .wave.v, .curved-lines .wave.h { animation: none; }
  .curved-lines.intensify .curve, .curved-lines.intensify .wave.v, .curved-lines.intensify .wave.h { animation: none !important; }
  .curved-lines:active .waves { transform: none !important; }
  .curve { animation: none; }
}

/* Varianti curve per le sezioni della homepage (colore + angolo) */
.curved-lines--gold  { --cc: rgba(201,162,39,.82); }
.curved-lines--teal  { --cc: rgba(201,162,39,.66); }
.curved-lines--terra { --cc: rgba(201,162,39,.60); }
.curved-lines--light { --cc: rgba(230,207,138,.55); }

.curved-lines--bl .curve { right: auto; left: -240px; bottom: -520px; animation: curve-morph-tall 14s ease-in-out infinite, curve-drift-bl 24s ease-in-out infinite; }
.curved-lines--tr .curve { right: -240px; top: -520px; bottom: auto; animation: curve-morph-wide 15s ease-in-out infinite, curve-drift-tr 26s ease-in-out infinite; }
.curved-lines--tl .curve { right: auto; left: -240px; top: -520px; bottom: auto; animation: curve-morph-wide 16s ease-in-out infinite, curve-drift-tl 28s ease-in-out infinite; }

/* Intensità curve: soft (meno ondulate) / wavy (più ondulate), per ogni angolo */
.curved-lines--soft .curve { animation: curve-morph-soft 17s ease-in-out infinite, curve-drift 27s ease-in-out infinite; }
.curved-lines--soft.curved-lines--bl .curve { animation: curve-morph-soft 17s ease-in-out infinite, curve-drift-bl 27s ease-in-out infinite; }
.curved-lines--soft.curved-lines--tr .curve { animation: curve-morph-soft 17s ease-in-out infinite, curve-drift-tr 27s ease-in-out infinite; }
.curved-lines--soft.curved-lines--tl .curve { animation: curve-morph-soft 17s ease-in-out infinite, curve-drift-tl 27s ease-in-out infinite; }
.curved-lines--wavy .curve { animation: curve-morph-wavy 13s ease-in-out infinite, curve-drift 21s ease-in-out infinite; }
.curved-lines--wavy.curved-lines--bl .curve { animation: curve-morph-wavy 13s ease-in-out infinite, curve-drift-bl 21s ease-in-out infinite; }
.curved-lines--wavy.curved-lines--tr .curve { animation: curve-morph-wavy 13s ease-in-out infinite, curve-drift-tr 21s ease-in-out infinite; }
.curved-lines--wavy.curved-lines--tl .curve { animation: curve-morph-wavy 13s ease-in-out infinite, curve-drift-tl 21s ease-in-out infinite; }

@keyframes curve-morph-soft {
  0%   { border-radius: 50%;                 transform: rotate(0deg) scale(1); }
  25%  { border-radius: 49% 51% 50% 50% / 51% 49% 50% 50%; transform: rotate(-.8deg) scale(1.002); }
  50%  { border-radius: 51% 49% 50% 50% / 49% 51% 50% 50%; transform: rotate(.8deg) scale(.999); }
  75%  { border-radius: 50% 50% 51% 49% / 50% 50% 50% 50%; transform: rotate(-.5deg) scale(1.002); }
  100% { border-radius: 50%;                 transform: rotate(0deg) scale(1); }
}
@keyframes curve-morph-wavy {
  0%   { border-radius: 50%;                 transform: rotate(0deg) scale(1); }
  25%  { border-radius: 38% 62% 55% 45% / 60% 40% 45% 55%; transform: rotate(-4deg) scale(1.02); }
  50%  { border-radius: 62% 38% 45% 55% / 40% 60% 55% 45%; transform: rotate(4deg) scale(.99); }
  75%  { border-radius: 45% 55% 62% 38% / 55% 45% 40% 60%; transform: rotate(-3deg) scale(1.015); }
  100% { border-radius: 50%;                 transform: rotate(0deg) scale(1); }
}

/* Intensità onde: soft / wavy */
.curved-lines--soft .wave.v { animation: wave-v-soft 32s ease-in-out infinite alternate; }
.curved-lines--soft .wave.h { animation: wave-h-soft 34s ease-in-out infinite alternate; }
.curved-lines--wavy .wave.v { animation: wave-v-wavy 18s ease-in-out infinite alternate; }
.curved-lines--wavy .wave.h { animation: wave-h-wavy 20s ease-in-out infinite alternate; }

/* Onde: al passaggio del cursore si muovono di più e si illuminano (non al click) */
.curved-lines--waves .waves { transition: transform .45s ease, filter .45s ease; transform-origin: 50% 50%; }
.curved-lines--waves:hover .waves { transform: scale(1.045); }
.curved-lines--waves:hover .wave { animation-duration: 6s !important; }
.curved-lines--waves:hover .wave.h, .curved-lines--waves:hover .wave.v { stroke: rgba(255,238,196,.96); }
@keyframes wave-v-soft { from { transform: translateX(-4px); } to { transform: translateX(4px); } }
@keyframes wave-h-soft { from { transform: translateY(-3px); } to { transform: translateY(3px); } }
@keyframes wave-v-wavy { from { transform: translateX(-16px); } to { transform: translateX(16px); } }
@keyframes wave-h-wavy { from { transform: translateY(-11px); } to { transform: translateY(11px); } }

/* Curve luccicanti al passaggio del cursore */
.curved-lines .curve { transition: border-color .4s ease, filter .4s ease; }
.curved-lines:hover .curve { border-color: rgba(255,238,196,.95); filter: drop-shadow(0 0 5px rgba(230,207,138,.85)); }

@keyframes curve-morph-wide {
  0%   { border-radius: 40% 60% 55% 45% / 62% 38% 45% 55%; transform: rotate(0deg) scale(1); }
  25%  { border-radius: 58% 42% 47% 53% / 55% 45% 55% 45%; transform: rotate(1.2deg) scale(1.004); }
  50%  { border-radius: 45% 55% 62% 38% / 50% 50% 50% 50%; transform: rotate(-1.2deg) scale(0.998); }
  75%  { border-radius: 55% 45% 40% 60% / 46% 54% 48% 52%; transform: rotate(0.8deg) scale(1.004); }
  100% { border-radius: 40% 60% 55% 45% / 62% 38% 45% 55%; transform: rotate(0deg) scale(1); }
}
@keyframes curve-morph-tall {
  0%   { border-radius: 62% 38% 45% 55% / 40% 60% 55% 45%; transform: rotate(0deg) scale(1); }
  25%  { border-radius: 45% 55% 53% 47% / 58% 42% 48% 52%; transform: rotate(-1.2deg) scale(1.004); }
  50%  { border-radius: 55% 45% 42% 58% / 46% 54% 52% 48%; transform: rotate(1.2deg) scale(0.998); }
  75%  { border-radius: 48% 52% 58% 42% / 52% 48% 44% 56%; transform: rotate(0.8deg) scale(1.004); }
  100% { border-radius: 62% 38% 45% 55% / 40% 60% 55% 45%; transform: rotate(0deg) scale(1); }
}

@keyframes curve-drift-bl {
  0%   { left: -240px; bottom: -520px; }
  25%  { left: -236px; bottom: -526px; }
  50%  { left: -244px; bottom: -514px; }
  75%  { left: -238px; bottom: -524px; }
  100% { left: -240px; bottom: -520px; }
}
@keyframes curve-drift-tr {
  0%   { right: -240px; top: -520px; }
  25%  { right: -236px; top: -526px; }
  50%  { right: -244px; top: -514px; }
  75%  { right: -238px; top: -524px; }
  100% { right: -240px; top: -520px; }
}
@keyframes curve-drift-tl {
  0%   { left: -240px; top: -520px; }
  25%  { left: -236px; top: -526px; }
  50%  { left: -244px; top: -514px; }
  75%  { left: -238px; top: -524px; }
  100% { left: -240px; top: -520px; }
}

/* Linee di design multi-design animate (Lavora con noi / Career) */
.dl { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; overflow: hidden; }
.dl svg { width: 100%; height: 100%; }
.dl .dl-path, .dl .dl-arc { fill: none; stroke-linecap: round; }
.dl .dl-gold { stroke: #c9a227; stroke-width: 1.6; }
.dl .dl-terra { stroke: #be8066; stroke-width: 1.6; }
.dl .dl-thin { stroke: rgba(230,207,138,.5); stroke-width: 1; }
.dl .dl-white1 { stroke: rgba(255,255,255,.40); stroke-width: 1; }
.dl .dl-white2 { stroke: rgba(255,255,255,.55); stroke-width: 1.4; }
.dl .dl-dash { stroke-dasharray: 6 14; animation: dl-flow 26s linear infinite; }
.dl .dl-white1, .dl .dl-white2 { stroke-dasharray: 3 12; }
.dl .dl-terra { animation: dl-flow-rev 32s linear infinite; }
.dl .dl-thin { opacity: .7; }
.dl .dl-g1, .dl .dl-g2 { animation: dl-slide 24s ease-in-out infinite alternate; }
.dl .dl-g2 { animation-direction: alternate-reverse; }
@keyframes dl-flow { to { stroke-dashoffset: -800; } }
@keyframes dl-flow-rev { to { stroke-dashoffset: 800; } }
@keyframes dl-slide { from { transform: translateX(-14px); } to { transform: translateX(14px); } }
.page-hero .container { position: relative; z-index: 1; }
.page-hero h1 { color: #fff; font-weight: 200; font-size: clamp(2rem, 5vw, 3.4rem); letter-spacing: -.02em; }
.page-hero .eyebrow { color: var(--color-gold-soft); }
.page-hero p { color: rgba(255,255,255,.7); }
.breadcrumbs { font-size: .85rem; color: rgba(255,255,255,.6); }
.breadcrumbs a { color: #fff; }

.entry-content { max-width: 820px; margin: 0 auto; }
.entry-content h2 { margin-top: 1.6em; font-weight: 300; color: var(--color-teal); }

.pagination { display: flex; gap: 10px; justify-content: center; margin-top: 40px; }
.pagination .page-numbers { padding: 8px 14px; border: 1px solid var(--color-line); border-radius: 8px; color: var(--color-teal); }
.pagination .page-numbers.current { background: var(--color-teal); color: #fff; border-color: var(--color-teal); }

.aligncenter { text-align: center; }

/* =========================================================
   Pagine interne: Chi Siamo / Aree / Professionisti / Contatti
   (allineate al design Orsingher: teal, titoli sottili, spazi ampi)
   ========================================================= */
.hero-chips { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }
.hero-chip { background: rgba(255,255,255,.10); border: 1px solid rgba(255,255,255,.26); color: rgba(255,255,255,.9); border-radius: 999px; padding: 8px 18px; font-size: .86rem; }
.hero-chip b { color: var(--color-gold-soft); font-weight: 600; }

.splits { display: grid; grid-template-columns: 1.15fr 1fr; gap: 56px; align-items: center; }
.splits ._text p { color: var(--color-muted); font-size: 1.02rem; }
.splits ._media { position: relative; border-radius: 18px; overflow: hidden; box-shadow: 0 24px 60px rgba(10,10,12,.18); aspect-ratio: 4 / 4.4; }
.splits ._media ._bg { position: absolute; inset: 0; background: radial-gradient(400px 300px at 20% 10%, rgba(201,162,39,.25), transparent 60%), linear-gradient(150deg, var(--color-blue-2), var(--color-blue)); }
.splits ._media ._mono { position: absolute; inset: 0; display: grid; place-items: center; font-size: 7rem; font-weight: 600; color: rgba(255,255,255,.9); text-shadow: 0 10px 40px rgba(0,0,0,.25); }
.splits ._media ._stats { position: absolute; left: 18px; right: 18px; bottom: 18px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.splits ._media ._stat { background: rgba(255,255,255,.92); border-radius: 12px; padding: 14px 10px; text-align: center; }
.splits ._media ._stat b { display: block; font-size: 1.5rem; font-weight: 300; color: var(--color-teal); }
.splits ._media ._stat span { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--color-muted); }

.values-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top: 44px; }
.value-card { background: #fff; border: 1px solid var(--color-line); border-radius: var(--radius); padding: 26px; transition: transform .3s ease, box-shadow .3s ease; }
.value-card:hover { transform: translateY(-4px); box-shadow: 0 16px 36px rgba(10,10,12,.10); }
.value-card ._ic { width: 46px; height: 46px; border-radius: 50%; background: var(--color-soft); color: var(--color-teal); display: grid; place-items: center; font-size: 1.2rem; margin-bottom: 16px; }
.value-card h3 { font-size: 1.04rem; font-weight: 500; color: var(--color-teal); margin-bottom: 8px; }
.value-card p { color: var(--color-muted); font-size: .9rem; margin: 0; }

.cta-band { border-radius: 18px; background: radial-gradient(500px 300px at 85% 10%, rgba(201,162,39,.18), transparent 60%), linear-gradient(150deg, var(--color-blue-2), var(--color-blue)); color: #fff; padding: 54px 60px; display: flex; align-items: center; justify-content: space-between; gap: 30px; flex-wrap: wrap; }
.cta-band h2 { color: #fff; font-weight: 200; margin: 0 0 6px; font-size: clamp(1.4rem, 3vw, 2rem); }
.cta-band p { color: rgba(255,255,255,.8); margin: 0; }

.office-detail { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
.office-fullcard { background: #fff; border: 1px solid var(--color-line); border-radius: var(--radius); padding: 28px; transition: transform .3s ease, box-shadow .3s ease; }
.office-fullcard:hover { transform: translateY(-4px); box-shadow: 0 16px 36px rgba(10,10,12,.10); }
.office-fullcard ._top { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; }
.office-fullcard ._top .office-avatar {
  width: 68px; height: 68px; border-radius: 50%; overflow: hidden; flex: none;
  display: grid; place-items: center; background: var(--color-soft);
  box-shadow: 0 0 0 1px var(--color-line), 0 8px 20px rgba(10,10,12,.08);
}
.office-fullcard ._top .office-avatar img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; filter: saturate(.95) contrast(1.02); }
.office-fullcard ._top .office-avatar span { font-size: 1.15rem; font-weight: 600; color: var(--color-teal); }
.office-fullcard h3 { font-size: 1.15rem; font-weight: 500; color: var(--color-teal); margin: 0; }
.office-fullcard ul { list-style: none; margin: 0 0 18px; padding: 0; }
.office-fullcard li { font-size: .95rem; color: var(--color-muted); padding: 6px 0; border-bottom: 1px solid var(--color-line); }
.office-fullcard li:last-child { border-bottom: 0; }
.office-fullcard li a { color: var(--color-teal-3); }

.partner-page-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }

.areas-index { display: flex; flex-wrap: wrap; gap: 8px; }
.areas-index a { display: inline-block; padding: 9px 18px; border: 1px solid var(--color-line); background: #fff; color: var(--color-ink); border-radius: 999px; font-size: .9rem; font-weight: 500; text-decoration: none; transition: all .25s ease; }
.areas-index a:hover { background: var(--color-teal); border-color: var(--color-teal); color: #fff; transform: translateY(-2px); }

.areas-intro { max-width: 720px; }
.areas-intro .home-title { font-size: clamp(1.5rem, 3vw, 2.2rem); }
.areas-intro p { color: var(--color-muted); }
.areas-stats { display: flex; gap: 40px; flex-wrap: wrap; margin-top: 34px; }
.areas-stats .as { display: flex; flex-direction: column; }
.areas-stats b { font-size: 1.9rem; font-weight: 200; color: var(--color-teal); line-height: 1; }
.areas-stats span { font-size: .8rem; text-transform: uppercase; letter-spacing: .08em; color: var(--color-muted); margin-top: 6px; }

@media (max-width: 992px) {
  .splits { grid-template-columns: 1fr; }
  .values-grid { grid-template-columns: repeat(2, 1fr); }
  .office-detail { grid-template-columns: 1fr; }
  .partner-page-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .values-grid { grid-template-columns: 1fr; }
  .partner-page-grid { grid-template-columns: 1fr; }
  .cta-band { padding: 40px 28px; }
}

/* Reveal on scroll */
[data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity .7s ease var(--rd, 0ms), transform .7s ease var(--rd, 0ms); }
[data-reveal="up"] { transform: translateY(30px); }
[data-reveal="left"] { transform: translateX(-34px); }
[data-reveal="right"] { transform: translateX(34px); }
[data-reveal="zoom"] { transform: scale(.92); }
[data-reveal].is-revealed { opacity: 1; transform: none; }

/* =========================================================
   Animazioni & extra
   ========================================================= */

/* Barra di avanzamento scroll */
.scroll-progress { position: fixed; top: 0; left: 0; right: 0; height: 3px; z-index: 1200; pointer-events: none; background: rgba(201,162,39,.15); }
.scroll-progress .bar { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--color-gold), var(--color-gold-soft)); transition: width .08s linear; box-shadow: 0 0 8px rgba(201,162,39,.6); }

/* Back to top */
.to-top {
  position: fixed; right: 22px; bottom: 22px; z-index: 1100;
  width: 46px; height: 46px; border-radius: 50%;
  border: 0; cursor: pointer;
  background: var(--color-teal); color: #fff; font-size: 1.1rem;
  display: grid; place-items: center;
  opacity: 0; transform: translateY(16px); pointer-events: none;
  transition: opacity .35s ease, transform .35s ease, background .25s ease;
  box-shadow: 0 10px 24px rgba(10,10,12,.35);
}
.to-top.show { opacity: 1; transform: none; pointer-events: auto; }
.to-top:hover { background: var(--color-teal-3); }

/* Banner cookie (formale, poco invadente, animato) */
.cookie-banner { position: fixed; left: 18px; right: 18px; bottom: 18px; z-index: 1300; display: flex; justify-content: center; pointer-events: none; opacity: 0; transform: translateY(26px); transition: opacity .55s ease, transform .55s ease; }
.cookie-banner.show { opacity: 1; transform: none; pointer-events: auto; }
.cookie-inner { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; max-width: 780px; width: 100%; background: rgba(255,255,255,.98); border: 1px solid var(--color-line); border-radius: 14px; padding: 16px 18px; box-shadow: 0 18px 48px rgba(10,10,12,.18); }
.cookie-text { margin: 0; font-size: .92rem; color: var(--color-muted); flex: 1 1 320px; }
.cookie-text strong { color: var(--color-teal); }
.cookie-actions { display: flex; align-items: center; gap: 12px; }
.cookie-link { font-size: .9rem; font-weight: 600; color: var(--color-teal-3); white-space: nowrap; background: none; border: 0; cursor: pointer; padding: 0; font-family: var(--font); }
@media (max-width: 520px) { .cookie-banner { left: 10px; right: 10px; bottom: 10px; } .cookie-inner { gap: 12px; } }

/* Informativa cookie estesa (modal) */
.cookie-modal { position: fixed; inset: 0; z-index: 1400; display: none; align-items: center; justify-content: center; padding: 20px; }
.cookie-modal.show { display: flex; }
.cookie-modal-overlay { position: absolute; inset: 0; background: rgba(8,43,53,.55); backdrop-filter: blur(3px); opacity: 0; transition: opacity .3s ease; }
.cookie-modal.show .cookie-modal-overlay { opacity: 1; }
.cookie-modal-box { position: relative; z-index: 1; background: #fff; border-radius: 16px; max-width: 680px; width: 100%; max-height: 85vh; overflow: auto; padding: 34px; box-shadow: 0 24px 60px rgba(3,3,5,.35); opacity: 0; transform: translateY(14px) scale(.98); transition: opacity .35s ease, transform .35s ease; }
.cookie-modal.show .cookie-modal-box { opacity: 1; transform: none; }
.cookie-modal-box h3 { font-size: 1.5rem; color: var(--color-teal); margin-bottom: 12px; }
.cookie-modal-box h4 { font-size: 1.05rem; color: var(--color-teal); margin: 22px 0 8px; }
.cookie-modal-box p { color: var(--color-muted); font-size: .94rem; }
.cookie-modal-close { position: absolute; top: 14px; right: 16px; background: none; border: 0; font-size: 1.6rem; color: var(--color-muted); cursor: pointer; line-height: 1; }
.cookie-modal-close:hover { color: var(--color-teal); }
.cookie-table { width: 100%; border-collapse: collapse; margin-top: 10px; font-size: .86rem; }
.cookie-table th, .cookie-table td { text-align: left; padding: 9px 10px; border-bottom: 1px solid var(--color-line); color: var(--color-muted); }
.cookie-table th { color: var(--color-teal); font-weight: 600; background: var(--color-soft); }
.cookie-table td:first-child { font-family: ui-monospace, Consolas, monospace; color: var(--color-teal-3); }
.cookie-modal-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 26px; justify-content: flex-end; }

/* Hero: ingresso degli elementi (sopra la piega) */
.hero-anim { opacity: 0; animation: riseIn .9s cubic-bezier(.22,.61,.36,1) forwards; }
.hero-anim--1 { animation-delay: .1s; }
.hero-anim--2 { animation-delay: .28s; }
.hero-anim--3 { animation-delay: .46s; }
.hero-anim--4 { animation-delay: .64s; }
@keyframes riseIn { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: none; } }

/* Indicatore di scroll */
.hero-scroll { display: inline-flex; align-items: center; gap: 10px; margin-top: 54px; color: rgba(255,255,255,.6); font-size: .82rem; letter-spacing: .22em; text-transform: uppercase; }
.hero-scroll a { color: currentColor; display: inline-flex; align-items: center; gap: 10px; }
.hero-scroll .mouse { width: 22px; height: 34px; border: 2px solid rgba(201,162,39,.8); border-radius: 12px; position: relative; }
.hero-scroll .mouse::after { content: ""; position: absolute; left: 50%; top: 6px; width: 3px; height: 7px; margin-left: -1.5px; border-radius: 2px; background: var(--color-gold); animation: wheel 1.6s ease-in-out infinite; }
@keyframes wheel { 0% { transform: translateY(0); opacity: 1; } 70% { transform: translateY(10px); opacity: 0; } 100% { opacity: 0; } }

/* Ticker notizie sotto "Scorri" (stile sottotitolo TG / Orsingher) */
.home-hero { padding-bottom: 132px; }
.hero-ticker { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; display: flex; align-items: stretch; background: linear-gradient(90deg, rgba(8,43,53,.94), rgba(20,69,85,.88)); border-top: 1px solid rgba(201,162,39,.35); }
.hero-ticker-label { flex: none; display: inline-flex; align-items: center; background: var(--color-gold); color: #0d1c22; font-weight: 700; font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; padding: 0 16px; white-space: nowrap; }
.hero-ticker .marquee { flex: 1; overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); }
.hero-ticker .marquee-track { display: inline-flex; align-items: center; white-space: nowrap; animation: marquee 42s linear infinite; }
.hero-ticker .marquee-track a { color: rgba(255,255,255,.9); font-size: .95rem; padding: 15px 22px; font-weight: 300; }
.hero-ticker .marquee-track a:hover { color: var(--color-gold-soft); }
.hero-ticker .marquee-sep { color: var(--color-gold); font-size: .6rem; }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (max-width: 640px) {
  .hero-ticker-label { font-size: .68rem; padding: 0 10px; }
  .hero-ticker .marquee-track a { padding: 14px 16px; font-size: .86rem; }
  .home-hero { padding-bottom: 118px; }
}
@media (prefers-reduced-motion: reduce) { .hero-ticker .marquee-track { animation: none; } }

/* Sottolineatura animata voci menu */
.main-nav a { position: relative; }
.main-nav a::after { content: ""; position: absolute; left: 14px; right: 14px; bottom: 5px; height: 2px; background: var(--color-gold); transform: scaleX(0); transform-origin: left; transition: transform .28s ease; }
.main-nav a:hover::after, .main-nav .current-menu-item > a::after { transform: scaleX(1); }

/* Effetto "vetro": la voce si ingrandisce e un riflesso lucido la attraversa */
.main-nav ul > li { position: relative; }
.main-nav ul > li > a { transition: transform .35s cubic-bezier(.22,.61,.36,1), color .3s ease, background .3s ease; will-change: transform; z-index: 1; }
.main-nav ul > li > a::before {
  content: ""; position: absolute; top: 0; left: -80%;
  width: 60%; height: 100%;
  background: linear-gradient(110deg, transparent, rgba(255,255,255,.55), transparent);
  transform: skewX(-22deg);
  opacity: 0; pointer-events: none;
  transition: left .55s ease, opacity .25s ease;
}
.main-nav ul > li > a:hover,
.main-nav ul > li.menu-active > a,
.main-nav ul > li > a:focus { transform: scale(1.08); z-index: 3; }
.main-nav ul > li > a:hover::before,
.main-nav ul > li.menu-active > a::before,
.main-nav ul > li > a:focus::before { left: 130%; opacity: 1; }

/* Pulsanti: lift + shine */
.btn { position: relative; overflow: hidden; }
.btn::before { content: ""; position: absolute; top: 0; left: -60%; width: 50%; height: 100%; background: linear-gradient(120deg, transparent, rgba(255,255,255,.35), transparent); transform: skewX(-20deg); transition: left .5s ease; }
.btn:hover::before { left: 130%; }

/* Riconoscimenti: pallino pulsante */
.award::before { animation: pulseDot 2.4s ease-in-out infinite; }
@keyframes pulseDot { 0%,100% { transform: scale(1); opacity: .6; } 50% { transform: scale(1.5); opacity: 1; } }

/* =============================
   Animazioni dinamiche extra
   ============================= */

/* Contatori: anello pulsante dietro il numero */
.stat { position: relative; }
.stat::before { content: ""; position: absolute; left: 50%; top: 50%; width: 130px; height: 130px; margin: -65px 0 0 -65px; border-radius: 50%; border: 1px solid rgba(201,162,39,.35); pointer-events: none; animation: ring-pulse 3.2s ease-out infinite; }
.stat:nth-child(2)::before { animation-delay: .5s; }
.stat:nth-child(3)::before { animation-delay: 1s; }
.stat:nth-child(4)::before { animation-delay: 1.5s; }
@keyframes ring-pulse { 0% { transform: scale(.45); opacity: .9; } 70% { transform: scale(1.2); opacity: 0; } 100% { opacity: 0; } }

/* Hero: la riga corsiva si illumina PAROLA PER PAROLA al passaggio del cursore */
.home-hero h1 em { color: var(--color-gold-soft); font-style: italic; }
.home-hero h1 em .word {
  display: inline-block;
  transition: color .3s ease, text-shadow .3s ease, transform .3s ease;
  padding: 0 1px;
}
.home-hero h1 em .word:hover {
  color: #ffffff;
  text-shadow: 0 0 10px rgba(230,207,138,.95), 0 0 28px rgba(230,207,138,.6);
  transform: translateY(-2px) scale(1.06);
}

/* Reveal più dinamico (pop) */
[data-reveal] { transform: translateY(24px) scale(.985); }
[data-reveal="up"] { transform: translateY(30px) scale(.985); }
[data-reveal="left"] { transform: translateX(-34px); }
[data-reveal="right"] { transform: translateX(34px); }
[data-reveal="zoom"] { transform: scale(.92); }

/* Icone aree: sollevamento leggero dell'icona al hover (l'SVG ruota/scala) */
.partner-card:hover .partner-avatar span { transform: scale(1.06); transition: transform .3s ease; }

/* Occhiellamento: pequeña dell'eyebrow dorato */
.eyebrow { position: relative; display: inline-block; }
.eyebrow::after { content: ""; position: absolute; left: 0; right: 0; bottom: -6px; height: 2px; background: linear-gradient(90deg, var(--color-gold), transparent); transform: scaleX(0); transform-origin: left; transition: transform .5s ease; }
[data-reveal].is-revealed .eyebrow::after { transform: scaleX(1); }

/* Statistiche: migliora effetto contatore */
.stat-num { display: inline-flex; }

/* Card: ombra più morbida al passaggio (le .partner-card usano la transizione [data-reveal]/.js-prof-card) */
.activity-item, .office-card { transition: transform .35s cubic-bezier(.22,.61,.36,1), box-shadow .35s ease, border-color .35s ease; }

/* Riduzione movimento per accessibilità */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001s !important; transition-duration: .001s !important; }
  .hero-video video, .marquee-track { animation: none !important; }
  [data-reveal] { opacity: 1; transform: none; }
  .hero-anim { opacity: 1; animation: none; }
}

/* Header che si compatta allo scroll */
.header-inner { transition: min-height .3s ease; }
.site-header { transition: box-shadow .3s ease; }
.site-header.shrunk { box-shadow: 0 12px 30px rgba(10,10,12,.14); }
.site-header.shrunk .header-inner { min-height: 60px; }

/* Ripple sui pulsanti */
.ripple { position: absolute; width: 120px; height: 120px; border-radius: 50%; background: rgba(255,255,255,.5); transform: scale(0); animation: ripple-anim .55s ease-out forwards; pointer-events: none; }
@keyframes ripple-anim { from { opacity: .5; transform: scale(0); } to { opacity: 0; transform: scale(4); } }

/* Back-to-top con anello di avanzamento */
.to-top { --p: 0%; background: conic-gradient(var(--color-gold) var(--p), rgba(255,255,255,.20) 0); }
.to-top::before { content: ""; position: absolute; inset: 5px; border-radius: 50%; background: var(--color-teal-3); }
.to-top:hover { background: conic-gradient(var(--color-gold-soft) var(--p), var(--color-teal-3) 0); }
.to-top span { position: relative; z-index: 1; }

/* ---------- Responsive ---------- */
@media (max-width: 992px) {
  .activity-grid, .partners-grid { grid-template-columns: repeat(3, 1fr); }
  .news-banner-grid { grid-template-columns: repeat(2, 1fr); }
  .offices-grid { grid-template-columns: repeat(2, 1fr); }
  .footer-top { grid-template-columns: 1fr 1fr; }
  .contact-grid { grid-template-columns: 1fr; }
  .stats { grid-template-columns: repeat(2, 1fr); gap: 40px; }
}

@media (max-width: 1600px) {
  .site-header { top: 56px; padding: 0 16px; }
  .site-header .header-inner { justify-content: space-between; }
  .site-header .site-logo img,
  .site-header .logo-img { max-height: 40px; max-width: 320px; }
  .site-header .main-nav a { padding: 7px 9px; margin: 0 2px; font-size: .86rem; }
  .site-header .main-nav ul { gap: 6px; }
  .site-header .header-right { flex: 0 1 auto; }
  .site-header .lang-name { display: none; }
}

@media (max-width: 768px) {
  .section { padding: 64px 0; }
  .home-hero { min-height: 0; padding: 64px 0; }
  .header-langs { display: none; }
  .activity-grid, .partners-grid { grid-template-columns: repeat(2, 1fr); }
  .hero-anello { display: none; }
  .area-detail { grid-template-columns: 1fr; gap: 10px; }
  .site-header { top: 28px; padding: 0 12px; overflow: visible; }
  .site-header .header-inner { max-width: 100%; justify-content: space-between; gap: 12px; flex-wrap: nowrap; }
  .site-header .site-logo img,
  .site-header .logo-img { max-height: 34px; max-width: 34vw; }
  .site-header .header-right { background: #fff; padding: 5px 6px 5px 10px; }
  .nav-toggle { display: block; }
  .main-nav {
    display: none;
    position: absolute; top: calc(100% + 8px); left: 0; right: 0;
    background: #fff; border: 1px solid var(--color-line); border-radius: 14px;
    box-shadow: 0 20px 40px rgba(3,3,5,.14); padding: 12px 16px;
    max-width: calc(100vw - 24px);
  }
  .main-nav.open { display: block; }
  .main-nav ul { flex-direction: column; flex-wrap: nowrap; gap: 2px; }
  .main-nav ul > li > a { display: block; padding: 10px 12px; font-size: 1rem; color: var(--color-ink); border-radius: 8px; }
  .main-nav ul > li > a:hover,
  .main-nav .current-menu-item > a { color: #fff; background: var(--color-blue); }
  .home-hero { min-height: 100vh; padding-top: 96px; }
}

@media (max-width: 560px) {
  .offices-grid, .activity-grid, .partners-grid { grid-template-columns: 1fr; }
  .news-banner-grid { grid-template-columns: 1fr; }
  .footer-top { grid-template-columns: 1fr; }
  .site-header { top: 22px; padding: 0 8px; }
  .site-header .site-logo img,
  .site-header .logo-img { max-height: 30px; max-width: 28vw; }
  .site-header .header-right { gap: 4px; padding: 4px 4px 4px 8px; }
  .site-header .main-nav a { padding: 10px 10px; margin: 0; font-size: .95rem; }
  .site-header .lang-name { display: none; }
  .home-hero, body.home .home-hero { padding-top: 84px; }
}

/* =========================================================
   Animazioni premium — ispirazione HLC (Hogan Lovells Cadwalader)
   ========================================================= */

/* Corsivo dorato/editoriale nelle parole enfatizzate dei titoli */
.news-head h2 em,
.areas-intro .home-title em,
.splits ._text .home-title em,
.page-hero h1 em,
.home-intro .home-title em { font-style: italic; color: var(--color-gold); }

/* Reveal titolo per riga: ogni riga dentro una maschera */
.mask-line { display: block; overflow: hidden; }

/* Underline animati sui link di testo (firma HLC) */
.person-more,
.office-directions,
.news-item h3 a,
.news-banner-item h3 a,
.contact-info a,
.breadcrumbs a,
.footer-top a {
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0% 1.5px;
  padding-bottom: 2px;
  transition: background-size .4s cubic-bezier(.22,.61,.36,1);
}
.person-more:hover,
.office-directions:hover,
.news-item h3 a:hover,
.news-banner-item h3 a:hover,
.contact-info a:hover,
.breadcrumbs a:hover,
.footer-top a:hover { background-size: 100% 1.5px; }

