/* REVITIME - foglio di stile del sito. Colori e caratteri dal Design System 1.0 (28/09/2026). */

@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('../fonts/montserrat-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('../fonts/montserrat-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --rv-navy: #1B2A41;
  --rv-navy-scuro: #131F31;
  --rv-gold: #A8864F;
  --rv-slate: #5B6472;
  --rv-ink: #1F2933;
  --rv-paper: #FFFFFF;
  --rv-ivory: #FAF8F4;
  --rv-line: #D9DDE3;
  --rv-mist: #C9CED6;
  --rv-font: 'Montserrat', 'Segoe UI', sans-serif;
  --rv-radius: 2px;
  --larghezza: 1200px;
  --gutter: clamp(16px, 4vw, 40px);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--rv-font);
  font-size: 1.0625rem;
  line-height: 1.7;
  color: var(--rv-ink);
  background: var(--rv-paper);
  -webkit-font-smoothing: antialiased;
}
img, svg { display: block; max-width: 100%; }
a { color: var(--rv-navy); text-underline-offset: 3px; }
a:hover { color: var(--rv-gold); }
h1, h2, h3, h4 { color: var(--rv-navy); font-weight: 600; line-height: 1.2; margin: 0 0 .6em; letter-spacing: -.01em; overflow-wrap: break-word; }
/* Le ancore (#sezione) non finiscono sotto la testata fissa */
[id] { scroll-margin-top: 112px; }
a, button { -webkit-tap-highlight-color: rgba(168, 134, 79, .2); touch-action: manipulation; }
h1 { font-size: clamp(2.2rem, 5vw, 3.6rem); }
h2 { font-size: clamp(1.7rem, 3.2vw, 2.5rem); }
h3 { font-size: 1.25rem; }
p { margin: 0 0 1.1em; }
ul { padding-left: 1.2em; }
:focus-visible { outline: 2px solid var(--rv-gold); outline-offset: 3px; }

.contenitore { max-width: var(--larghezza); margin: 0 auto; padding: 0 var(--gutter); }
.nascosto { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.salta { position: absolute; left: -999px; top: 8px; background: var(--rv-navy); color: #fff; padding: 8px 16px; z-index: 100; }
.salta:focus { left: 8px; }

/* Barra istituzionale e testata */
.barra-istituzionale { background: var(--rv-navy-scuro); color: var(--rv-mist); font-size: .8125rem; letter-spacing: .02em; }
.barra-istituzionale .contenitore { display: flex; justify-content: space-between; gap: 16px; padding-top: 8px; padding-bottom: 8px; }
.barra-istituzionale a { color: var(--rv-mist); text-decoration: none; }
.barra-contatti { display: flex; gap: 24px; }
.barra-istituzionale a:hover { color: #fff; }

.testata { position: sticky; top: 0; z-index: 50; background: rgba(255,255,255,.97); backdrop-filter: blur(8px); border-bottom: 1px solid var(--rv-line); }
.testata .contenitore { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 84px; }
.logo img { width: 168px; height: auto; }
#menu-principale { display: flex; align-items: center; gap: 28px; }
.menu { display: flex; gap: 4px; list-style: none; margin: 0; padding: 0; }
.menu > li > a, .menu > li > button {
  display: flex; align-items: center; gap: 6px; padding: 10px 12px;
  font: 500 .92rem var(--rv-font); color: var(--rv-ink); text-decoration: none;
  background: none; border: 0; cursor: pointer; position: relative;
}
.menu > li > a::after, .menu > li > button::after {
  content: ''; position: absolute; left: 12px; right: 12px; bottom: 2px; height: 2px;
  background: var(--rv-gold); transform: scaleX(0); transform-origin: left; transition: transform .25s;
}
.menu > li > a:hover::after, .menu > li > button:hover::after,
.menu > li > [aria-current="page"]::after, .menu > li > .attivo::after { transform: scaleX(1); }
.sottomenu [aria-current="page"] { background: var(--rv-ivory); box-shadow: inset 3px 0 0 var(--rv-gold); }
.menu > li > button svg { width: 12px; height: 12px; }
.con-sottomenu { position: relative; }
.sottomenu {
  position: absolute; top: calc(100% + 12px); left: -8px; width: 340px; list-style: none; margin: 0; padding: 12px;
  background: #fff; border: 1px solid var(--rv-line); border-top: 3px solid var(--rv-gold);
  box-shadow: 0 20px 40px -20px rgba(27,42,65,.35);
  opacity: 0; visibility: hidden; transform: translateY(-6px); transition: .2s;
}
.con-sottomenu:hover .sottomenu, .con-sottomenu.aperto .sottomenu { opacity: 1; visibility: visible; transform: none; }
.sottomenu a { display: block; padding: 12px 14px; text-decoration: none; }
.sottomenu a:hover { background: var(--rv-ivory); }
.sottomenu strong { display: block; color: var(--rv-navy); font-weight: 600; font-size: .95rem; }
.sottomenu span { color: var(--rv-slate); font-size: .83rem; }
.apri-menu { display: none; }

/* Pulsanti */
.pulsante {
  display: inline-flex; align-items: center; gap: 10px; padding: 15px 28px;
  font: 600 .92rem var(--rv-font); letter-spacing: .02em; text-decoration: none;
  color: #fff; background: var(--rv-navy); border: 1px solid var(--rv-navy); border-radius: var(--rv-radius);
  transition: background .2s, color .2s, border-color .2s;
}
.pulsante:hover { background: var(--rv-gold); border-color: var(--rv-gold); color: #fff; }
.pulsante-piccolo { padding: 11px 20px; }
.pulsante-chiaro { background: #fff; color: var(--rv-navy); border-color: #fff; }
.pulsante-bordo { background: transparent; color: #fff; border-color: rgba(255,255,255,.5); }
.pulsante-bordo:hover { background: #fff; color: var(--rv-navy); border-color: #fff; }
.pulsante .icona { width: 18px; height: 18px; }
.collegamento {
  display: inline-flex; align-items: flex-end; gap: 8px; font-weight: 600; font-size: .92rem; min-height: 44px;
  text-decoration: none; color: var(--rv-navy); border-bottom: 1px solid var(--rv-gold); padding-bottom: 4px;
}
.collegamento .icona { width: 16px; height: 16px; transition: transform .2s; }
.collegamento:hover .icona { transform: translateX(4px); }

/* Occhiello: barretta oro + testo ardesia (l'oro non si usa per il testo piccolo) */
.occhiello {
  display: flex; align-items: center; gap: 12px; margin-bottom: 20px;
  font-size: .8125rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--rv-slate);
}
.occhiello { align-items: flex-start; line-height: 1.5; }
.occhiello::before { content: ''; width: 36px; height: 3px; background: var(--rv-gold); flex: none; margin-top: .6em; }
.scuro .occhiello, .eroe .occhiello { color: var(--rv-mist); }

/* Eroe della home */
.eroe { position: relative; overflow: hidden; background: var(--rv-navy); color: #fff; }
.eroe .contenitore { position: relative; z-index: 1; padding-top: clamp(80px, 12vw, 150px); padding-bottom: clamp(80px, 12vw, 150px); }
.eroe h1 { color: #fff; max-width: 15ch; font-size: clamp(2.4rem, 6vw, 4.3rem); }
.eroe p { max-width: 58ch; font-size: 1.15rem; color: #DCE1E8; }
.eroe .azioni { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 36px; }
.eroe-grafica { position: absolute; right: -6%; top: 50%; transform: translateY(-50%); width: min(62vw, 760px); opacity: .9; pointer-events: none; }

/* Testata delle pagine interne */
.intestazione-pagina { background: var(--rv-navy); color: #fff; position: relative; overflow: hidden; }
.intestazione-pagina .contenitore { position: relative; z-index: 1; padding-top: clamp(64px, 9vw, 110px); padding-bottom: clamp(56px, 8vw, 96px); }
.intestazione-pagina h1 { color: #fff; max-width: 20ch; }
.intestazione-pagina p { max-width: 62ch; font-size: 1.12rem; color: #DCE1E8; margin: 0; }
.intestazione-pagina .occhiello { color: var(--rv-mist); }
.intestazione-pagina::after {
  content: ''; position: absolute; right: -120px; bottom: -220px; width: 520px; height: 520px;
  border: 28px solid rgba(255,255,255,.05); border-radius: 50%;
}

/* Fascia delle credenziali */
.credenziali { background: var(--rv-navy-scuro); color: #fff; }
.credenziali ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); }
.credenziali li { padding: 30px 24px; border-left: 1px solid rgba(255,255,255,.1); }
.credenziali li:first-child { border-left: 0; padding-left: 0; }
.credenziali strong { display: block; font-size: 1.05rem; font-weight: 600; margin-bottom: 4px; }
.credenziali strong::before { content: ''; display: block; width: 24px; height: 3px; background: var(--rv-gold); margin-bottom: 14px; }
.credenziali span { font-size: .86rem; color: var(--rv-mist); line-height: 1.5; display: block; }

/* Sezioni */
.sezione { padding: clamp(72px, 10vw, 128px) 0; }
.sezione-avorio { background: var(--rv-ivory); }
.scuro { background: var(--rv-navy); color: #DCE1E8; }
.scuro h2, .scuro h3 { color: #fff; }
.titolo-sezione { max-width: 760px; margin-bottom: clamp(40px, 6vw, 64px); }
.titolo-sezione p { font-size: 1.12rem; color: var(--rv-slate); }
.scuro .titolo-sezione p { color: var(--rv-mist); }
.due-colonne { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(32px, 6vw, 96px); align-items: start; }
.testo-ampio { font-size: 1.12rem; }

/* Schede */
.griglia { display: grid; gap: 24px; }
.griglia-2 { grid-template-columns: repeat(2, 1fr); }
.griglia-3 { grid-template-columns: repeat(3, 1fr); }
.griglia-4 { grid-template-columns: repeat(4, 1fr); }
.scheda {
  position: relative; background: #fff; border: 1px solid var(--rv-line); border-radius: var(--rv-radius);
  padding: 36px 32px; display: flex; flex-direction: column; transition: border-color .25s, box-shadow .25s, transform .25s;
}
.scheda::before { content: ''; position: absolute; left: -1px; right: -1px; top: -1px; height: 3px; background: var(--rv-gold); transform: scaleX(0); transform-origin: left; transition: transform .3s; }
a.scheda { text-decoration: none; color: inherit; }
a.scheda:hover { border-color: var(--rv-mist); box-shadow: 0 24px 48px -28px rgba(27,42,65,.4); transform: translateY(-3px); }
a.scheda:hover::before { transform: scaleX(1); }
.scheda .icona { width: 40px; height: 40px; color: var(--rv-navy); margin-bottom: 24px; }
.scheda h3 { margin-bottom: .5em; }
.scheda p { color: var(--rv-slate); font-size: .98rem; }
.scheda .collegamento { margin-top: auto; align-self: flex-start; }
.sezione-avorio .scheda { background: #fff; }
.scuro .scheda { background: rgba(255,255,255,.04); border-color: rgba(255,255,255,.12); }
.scuro .scheda p { color: var(--rv-mist); }
.scuro .scheda .icona { color: #fff; }

/* Passi numerati */
.passi { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; counter-reset: passo; }
.passi li { counter-increment: passo; padding: 0 28px 0 0; border-top: 1px solid var(--rv-line); }
.passi li::before {
  content: counter(passo, decimal-leading-zero); display: block; padding-top: 24px; margin-bottom: 12px;
  font-size: 2.6rem; font-weight: 300; color: var(--rv-gold); line-height: 1;
  background: linear-gradient(var(--rv-navy), var(--rv-navy)) top left / 48px 3px no-repeat;
}
.passi h3 { font-size: 1.1rem; }
.passi p { color: var(--rv-slate); font-size: .96rem; }
.scuro .passi li { border-color: rgba(255,255,255,.15); }
.scuro .passi li::before { background-image: linear-gradient(#fff, #fff); }
.scuro .passi p { color: var(--rv-mist); }

/* Elenco con spunte */
.elenco { list-style: none; padding: 0; margin: 0 0 1.2em; }
.elenco li { position: relative; padding: 14px 0 14px 36px; border-bottom: 1px solid var(--rv-line); }
.elenco li::before {
  content: ''; position: absolute; left: 4px; top: 22px; width: 14px; height: 8px;
  border-left: 2px solid var(--rv-gold); border-bottom: 2px solid var(--rv-gold); transform: rotate(-45deg);
}

/* Riquadro in evidenza */
.riquadro { background: var(--rv-ivory); border-left: 4px solid var(--rv-gold); padding: 36px 40px; }
.riquadro h3 { margin-top: 0; }
.riquadro p:last-child { margin-bottom: 0; }

/* Fascia sostenibilità */
.fascia-esg { position: relative; overflow: hidden; }
.fascia-esg .contenitore { display: grid; grid-template-columns: 7fr 5fr; gap: 64px; align-items: center; }
.fascia-esg p { font-size: 1.12rem; }
.cifre-esg { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.12); }
.cifre-esg div { background: var(--rv-navy); padding: 28px; }
.cifre-esg strong { display: block; color: #fff; font-size: 1.5rem; font-weight: 600; margin-bottom: 4px; }
.cifre-esg span { font-size: .85rem; color: var(--rv-mist); }

/* Settori */
.settore { display: grid; grid-template-columns: 56px 1fr; gap: 20px; padding: 32px 0; border-top: 1px solid var(--rv-line); }
.settore .icona { width: 40px; height: 40px; color: var(--rv-navy); }
.settore h2 { font-size: 1.25rem; margin-bottom: .35em; }
.settore p { color: var(--rv-slate); margin: 0; }
.settore .temi { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; list-style: none; padding: 0; }
.settore .temi li { font-size: .8125rem; font-weight: 500; color: var(--rv-navy); background: var(--rv-ivory); border: 1px solid var(--rv-line); padding: 4px 12px; }

/* Articoli */
.articolo { max-width: 780px; }
.articolo + .articolo { margin-top: 88px; padding-top: 88px; border-top: 1px solid var(--rv-line); }
.articolo h2 { font-size: clamp(1.6rem, 3vw, 2.1rem); }
.articolo h3 { margin-top: 1.6em; font-size: 1.15rem; }
.etichetta { display: inline-block; font-size: .8125rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--rv-navy); border: 1px solid var(--rv-line); padding: 4px 10px; margin-bottom: 18px; }
.scheda .etichetta { align-self: flex-start; }

/* Contatti */
.contatto { display: grid; grid-template-columns: 48px 1fr; gap: 16px; padding: 24px 0; border-bottom: 1px solid var(--rv-line); }
.contatto .icona { width: 28px; height: 28px; color: var(--rv-gold); margin-top: 4px; }
.contatto h2 { font-size: 1rem; margin: 0 0 4px; }
.riquadro h2 { font-size: 1.25rem; }
.articolo-legale h2 { font-size: 1.15rem; margin-top: 1.8em; }
.contatto p { margin: 0; color: var(--rv-slate); }
.dati-societari { width: 100%; border-collapse: collapse; font-size: .95rem; }
.dati-societari th, .dati-societari td { text-align: left; padding: 14px 0; border-bottom: 1px solid var(--rv-line); vertical-align: top; }
.dati-societari th { width: 42%; font-weight: 600; color: var(--rv-navy); padding-right: 16px; }

/* Segnaposto della bozza: da sostituire prima della pubblicazione */
.da-completare { background: #FFF3C4; color: #6B4E00; padding: 1px 6px; font-weight: 600; font-size: .9em; }

/* Invito finale */
.invito { background: var(--rv-ivory); border-top: 1px solid var(--rv-line); }
.invito .contenitore { display: flex; align-items: center; justify-content: space-between; gap: 40px; padding-top: 88px; padding-bottom: 88px; }
.invito h2 { max-width: 22ch; margin-bottom: .3em; }
.invito p { color: var(--rv-slate); margin: 0; max-width: 60ch; }

/* Piè di pagina */
.piede { background: var(--rv-navy-scuro); color: var(--rv-mist); font-size: .92rem; }
.piede .contenitore { padding-top: 80px; padding-bottom: 40px; }
.piede-griglia { display: grid; grid-template-columns: 2fr 1fr 1fr 1.2fr; gap: 48px; padding-bottom: 56px; border-bottom: 1px solid rgba(255,255,255,.1); }
.piede-marchio img { width: 180px; height: auto; margin-bottom: 20px; }
.piede-marchio p { max-width: 36ch; }
.piede h2 { color: #fff; font-size: .8125rem; letter-spacing: .16em; text-transform: uppercase; margin-bottom: 20px; }
.piede ul { list-style: none; padding: 0; margin: 0; }
.piede li { margin-bottom: 2px; }
.piede li a { display: inline-block; padding: 5px 0; }
.piede a { color: var(--rv-mist); text-decoration: none; }
.piede a:hover { color: #fff; }
.piede address { font-style: normal; line-height: 1.8; }
.piede address a { display: inline-block; padding: 5px 0; }
.piede-legale { padding-top: 28px; font-size: .8125rem; line-height: 1.6; }
.piede-legale p { margin: 0 0 8px; }

/* Responsive */
@media (max-width: 1080px) {
  .apri-menu {
    display: flex; flex-direction: column; justify-content: center; gap: 5px; width: 44px; height: 44px;
    background: none; border: 1px solid var(--rv-line); cursor: pointer; padding: 0 11px;
  }
  .apri-menu span:not(.nascosto) { display: block; height: 2px; background: var(--rv-navy); transition: .2s; }
  .apri-menu[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .apri-menu[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .apri-menu[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
  #menu-principale {
    display: none; position: absolute; top: 100%; left: 0; right: 0; flex-direction: column; align-items: stretch; gap: 0;
    background: #fff; border-bottom: 1px solid var(--rv-line); padding: 8px var(--gutter) 24px;
    max-height: calc(100vh - 84px); max-height: calc(100dvh - 84px); overflow-y: auto; overscroll-behavior: contain;
    box-shadow: 0 24px 40px -24px rgba(27,42,65,.35);
  }
  #menu-principale.aperto { display: flex; }
  body.menu-aperto { overflow: hidden; }
  .sottomenu a { padding: 12px 0 12px 14px; }
  .menu { flex-direction: column; }
  .menu > li > a, .menu > li > button { width: 100%; padding: 14px 0; font-size: 1rem; border-bottom: 1px solid var(--rv-line); justify-content: space-between; }
  .menu > li > a::after, .menu > li > button::after { display: none; }
  .sottomenu { position: static; width: auto; opacity: 1; visibility: visible; transform: none; box-shadow: none; border: 0; padding: 0 0 8px 12px; display: none; }
  .con-sottomenu:hover .sottomenu { display: none; }
  .con-sottomenu.aperto .sottomenu { display: block; }
  #menu-principale .pulsante { margin-top: 20px; justify-content: center; }
  .griglia-4, .credenziali ul, .passi { grid-template-columns: repeat(2, 1fr); }
  .passi { row-gap: 40px; }
  .credenziali li:nth-child(3) { border-left: 0; padding-left: 0; }
  .piede-griglia { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 820px) {
  .griglia-2, .griglia-3, .due-colonne, .fascia-esg .contenitore { grid-template-columns: 1fr; }
  .eroe-grafica { width: 110vw; right: -40%; opacity: .2; }
  .invito .contenitore { flex-direction: column; align-items: flex-start; padding-top: 64px; padding-bottom: 64px; }
  .barra-istituzionale .contenitore > span:first-child { display: none; }
  .barra-istituzionale .contenitore { justify-content: center; padding-top: 0; padding-bottom: 0; }
  .barra-contatti { gap: 20px; flex-wrap: wrap; justify-content: center; }
  .barra-contatti a { display: inline-flex; align-items: center; min-height: 40px; }
  /* Collegamenti dentro i testi di contatto: area di tocco più ampia */
  .contatto p a, .dati-societari a { display: inline-block; padding: 8px 0; }
  .titolo-sezione { margin-bottom: 36px; }
}
@media (max-width: 560px) {
  body { font-size: 1rem; }
  .griglia-4, .credenziali ul, .passi, .piede-griglia, .cifre-esg { grid-template-columns: 1fr; }
  .credenziali li { border-left: 0; padding-left: 0; border-top: 1px solid rgba(255,255,255,.1); }
  .credenziali li:first-child { border-top: 0; }
  .scheda { padding: 28px 24px; }
  .riquadro { padding: 28px 24px; }
  .logo img { width: 140px; }
  .occhiello { letter-spacing: .1em; gap: 10px; }
  .occhiello::before { width: 24px; }
  .testata .contenitore { min-height: 72px; }
  #menu-principale { max-height: calc(100vh - 72px); max-height: calc(100dvh - 72px); }
  .settore { grid-template-columns: 1fr; gap: 12px; }
  .eroe .azioni .pulsante, .invito .pulsante { width: 100%; justify-content: center; }
  .eroe p, .intestazione-pagina p, .testo-ampio, .fascia-esg p { font-size: 1.05rem; }
  .passi li { padding-right: 0; }
  .contatto { grid-template-columns: 36px 1fr; gap: 12px; }
  /* Tabelle dei dati societari: etichetta sopra, valore sotto */
  .dati-societari, .dati-societari tbody, .dati-societari tr, .dati-societari th, .dati-societari td { display: block; width: 100%; }
  .dati-societari tr { padding: 12px 0; border-bottom: 1px solid var(--rv-line); }
  .dati-societari th, .dati-societari td { border: 0; padding: 0; }
  .dati-societari th { font-size: .875rem; margin-bottom: 2px; }
  .piede .contenitore { padding-top: 56px; }
  .piede-griglia { gap: 32px; padding-bottom: 40px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; scroll-behavior: auto !important; }
}
