/* ============================================================
   COMPONENTI — Engicam Design System

   SISTEMA TEMI
   Le variabili --theme-* sono definite in variables.css.
   Aggiungendo .theme-dark a qualsiasi contenitore i colori
   si ribaltano automaticamente a cascata.

   BREAKPOINT (valori px diretti — le var() non funzionano nei @media)
   --bp-sm:  576px
   --bp-md:  768px
   --bp-lg:  992px
   --bp-xl:  1200px

   DIPENDE DA: variables.css, bootstrap 4
   ============================================================ */


/* ============================================================
   COMPONENTE: Header

   STRUTTURA:
   <header class="fixed-header">
     <section class="info_txt_testata container">
       <div class="social_links">...</div>
       <div id="login-area">...</div>
       <div id="search_area">...</div>
     </section>
     <section class="fascia-menu">
       <div class="container" id="box-top">...</div>
     </section>
   </header>

   COLORI: controllati dai token --bg-header-*, --text-header*
   definiti in variables.css. Per cambiare tema header
   modificare quei token, non aggiungere classi qui.
   ============================================================ */

.fixed-header {
  position: sticky;
  top: 0;
  width: 100%;
  z-index: var(--z-sticky);
  background-color: var(--bg-header-nav);
  color: var(--text-header);
  border-bottom: 1px solid var(--border-header);
}

@media (max-width: 992px) {
  .fixed-header {
    position: initial;
  }
}


/* ------------------------------------------------------------
   FASCIA SUPERIORE — social / login / search
   ------------------------------------------------------------ */

.info_txt_testata {
  display: flex;
  align-items: center;
  gap: var(--gap-sm);
  padding-block: var(--space-2);
  background-color: var(--bg-header-top);
  border-bottom: 1px solid var(--border-header);
}

.info_txt_testata .social_links {
  flex-grow: 1;
}


/* ------------------------------------------------------------
   LOGIN AREA
   Stato non loggato: link login/register testuali
   Stato loggato: avatar con iniziali + dropdown menu
   ------------------------------------------------------------ */

#login-area {
  display: flex;
  align-items: center;
  gap: var(--gap-sm);
}

/* Stato non loggato — link testuali */
#login-area button,
#login-area .register-link {
  font-family: var(--font-family-base);
  font-size: var(--font-size-nav);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--letter-spacing-nav);
  color: var(--text-header-muted);
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  transition: color var(--transition-fast);
  text-decoration: none;
}

#login-area button:hover,
#login-area .register-link:hover {
  color: var(--text-header);
  text-decoration: none;
}

/* ------------------------------------------------------------
   STATO LOGGATO — avatar + dropdown
   ------------------------------------------------------------ */

#button-info-utente {
  position: relative;
}

/* Avatar con iniziali */
#iniziali-utente {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--radius-full);
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
  font-family: var(--font-family-base);
  font-size: 11px;
  font-weight: var(--font-weight-bold);
  letter-spacing: 0.05em;
  cursor: pointer;
  user-select: none;
  transition: background-color var(--transition-fast);
  flex-shrink: 0;
}

#iniziali-utente:hover {
  background-color: var(--interactive-primary-hover);
}

/* Dropdown — nascosto di default */
#info-utente {
  display: none;
  position: absolute;
  top: calc(100% + var(--space-2));
  right: 0;
  min-width: 200px;
  background-color: var(--bg-header-nav);
  border: 1px solid var(--border-header);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  z-index: var(--z-dropdown);
  overflow: hidden;
}
@media (max-width: 992px) {
  #info-utente {
    right: auto;
  }
}

/* Aperto al click — JS toggling class .open su #button-info-utente */
#button-info-utente.open #info-utente {
  display: block;
}

/* Header dropdown — nome e username */
#info-utente h1 {
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-bold);
  color: var(--text-header);
  padding: var(--space-4) var(--space-4) var(--space-1);
  margin: 0;
}

#info-utente h2 {
  font-size: var(--font-size-abstract);
  font-weight: var(--font-weight-regular);
  color: var(--text-header-muted);
  padding: 0 var(--space-4) var(--space-3);
  margin: 0;
  border-bottom: 1px solid var(--border-header);
}

/* Voci menu */
#info-utente ul {
  list-style: none;
  padding: var(--space-2) 0;
  margin: 0;
}

#info-utente ul li a {
  display: block;
  padding: var(--space-2) var(--space-4);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-regular);
  color: var(--text-header-muted);
  text-decoration: none;
  transition: color var(--transition-fast),
              background-color var(--transition-fast);
}

#info-utente ul li a:hover {
  color: var(--text-header);
  background-color: rgba(255, 255, 255, 0.06);
  text-decoration: none;
}

/* Nasconde voci con link vuoto (es. tessera) */
#info-utente ul li a:not([href=""]):not([href="#"]) {
  display: block;
}

#info-utente ul li:has(a[href=""]),
#info-utente ul li:has(a[href="#"]) {
  display: none;
}

/* Logout — evidenziato */
#info-utente ul li:last-child a {
  color: var(--text-header-muted);
  border-top: 1px solid var(--border-header);
  margin-top: var(--space-2);
  padding-top: var(--space-3);
}

#info-utente ul li:last-child a:hover {
  color: #e53e3e;
  background-color: rgba(229, 62, 62, 0.08);
}


/* ------------------------------------------------------------
   SEARCH AREA
   Desktop: input espanso all'hover/focus.
   Mobile (< 992px): input sempre visibile.
   ------------------------------------------------------------ */

#search_area {
  display: flex;
  align-items: center;
  position: relative;
}

#search_area::before {
  content: '\f002';
  font-family: 'Font Awesome 7 Free';
  font-weight: 900;
  font-size: 14px;
  color: var(--text-header-muted);
  position: relative;
  z-index: 1;
  pointer-events: none;
  transition: color var(--transition-fast);
}

#search_area:hover::before,
#search_area:focus-within::before {
  color: var(--text-header);
}

#search_area input {
  width: 0;
  overflow: hidden;
  background: transparent;
  border: none;
  border-bottom: 1px solid transparent;
  color: var(--text-header);
  font-family: var(--font-family-base);
  font-size: var(--font-size-nav);
  padding: 0;
  margin-left: 0;
  transition: width var(--transition-base),
              margin-left var(--transition-base),
              border-color var(--transition-base);
  outline: none;
}

#search_area:hover input,
#search_area:focus-within input {
  width: 160px;
  margin-left: var(--space-2);
  border-bottom-color: var(--border-header);
}

#search_area input::placeholder {
  color: var(--text-header-muted);
  font-size: var(--font-size-nav);
}


/* ------------------------------------------------------------
   FASCIA MENU — logo + navigazione
   ------------------------------------------------------------ */

.fascia-menu {
  background-color: var(--bg-header-nav);
}

.fascia-menu #box-top {
  padding-block: var(--space-4);
}

.fascia-menu .navbar-nav .nav-item:last-child {
  /* margin-left: var(--space-2); */
}
.fascia-menu .navbar-nav .nav-item:last-child .nav-link {
  border-radius: var(--radius-sm);
}

.cont-elem-testata {
  display: flex;
  align-items: center;
  gap: var(--gap-md);
  justify-content: space-between;
}

#logo {
  flex-shrink: 0;
}

#logo a {
  display: block;
}

#logo img {
  height: 40px;
  width: auto;
}

.menu-link {
  flex-grow: 1;
}


/* ------------------------------------------------------------
   NAVBAR BOOTSTRAP — override per design system
   ------------------------------------------------------------ */

.navbar {
  padding: 0;
  width: auto;
}
.navbar .submenu_complete {
  width: 100%;
}

.navbar-expand-lg .navbar-nav {
  gap: var(--space-2);
  justify-content: space-between;
}

.nav-item {
  display: flex;
}

.nav-link,
.nav-link span.menu-text {
  font-family: var(--font-family-base);
  font-size: var(--font-size-nav);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--letter-spacing-nav);
  color: var(--text-header-light) !important;  /* !important necessario contro Bootstrap 4 */
  padding-inline: var(--space-4);
  padding-block: var(--space-2);
  transition: color var(--transition-fast);
  white-space: nowrap;
}

.nav-link:hover,
.nav-link:focus,
.nav-item.active .nav-link {
  color: var(--text-header) !important;
  text-decoration: none;
}
.nav-link:hover, .nav-link span.menu-text:hover {
  color: var(--text-header) !important;
}

.current_menu .nav-link .menu-text, .current_menu .nav-link {
	color: var(--text-menu-current) !important;
}
.current_menu .nav-link[style*="background-color"] .menu-text {
	color: var(--text-header-light) !important;
}


/* .separator {
  display: inline-block;
  width: 1px;
  height: 14px;
  background-color: var(--border-header);
  flex-shrink: 0;
} */

.dropdown-menu {
  background-color: var(--bg-header-nav);
  border: 1px solid var(--border-header);
  border-radius: var(--radius-md);
  padding-block: var(--space-2);
  margin-top: var(--space-1);
  box-shadow: var(--shadow-lg);
}

.dropdown-menu .nav-link {
  padding-block: var(--space-2);
  display: block;
}

.dropdown-menu .nav-link:hover {
  background-color: rgba(255, 255, 255, 0.06);
}

.navbar-toggler {
  border-color: var(--border-header);
  padding: var(--space-1) var(--space-2);
}

/* Icona hamburger — colore ricavato da --text-header (#ffffff → %23ffffff) */
.navbar-toggler-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='%23ffffff' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}

/* Mobile — 992px = --bp-lg */
@media (max-width: 992px) {
  .info_txt_testata .social_links {
    display: none;
  }

  #search_area input {
    width: 120px;
    margin-left: var(--space-2);
    border-bottom-color: var(--border-header);
  }

  .cont-elem-testata {
    flex-wrap: wrap;
  }

  .navbar {
    order: 3;
    width: 100%;
    align-items: flex-start;
  }

  .navbar-collapse {
    background-color: var(--bg-header-nav);
    padding-block: var(--space-4);
  }

  .navbar-collapse .dropdown {
    flex-direction: column;
  }

  .nav-link {
    padding-inline: var(--space-2);
  }

  .separator {
    display: none;
  }
}


/* ============================================================
   COMPONENTE: Back to top

   Pulsante fisso in basso a destra, appare dopo scroll con fade.
   La visibilità è gestita via JS che imposta opacity e pointer-events.
   La transition CSS gestisce il fade su tutti i browser.

   RICHIEDE JS:
   (function() {
     const btn = document.querySelector('.totop');
     if (!btn) return;
     function toggleBtn() {
       const visible = window.scrollY > 200;
       btn.style.opacity = visible ? '1' : '0';
       btn.style.pointerEvents = visible ? 'auto' : 'none';
     }
     toggleBtn(); // stato iniziale al caricamento
     window.addEventListener('scroll', toggleBtn, { passive: true });
   })();

   NOTA: verificare che nell'HTML .totop NON abbia style="display:none".
   scroll-behavior: smooth è già in reset.css.

   HTML di riferimento:
   <div class="totop">
     <a href="#top" title="Back to top">
       <i class="fa-solid fa-chevron-up" aria-hidden="true"></i>
     </a>
   </div>
   ============================================================ */

.totop {
  position: fixed;
  bottom: var(--space-6);
  right: var(--space-6);
  z-index: var(--z-toast);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--transition-base);
}

.totop a,
.totop a:visited {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
  border-radius: var(--radius-full);
  text-decoration: none;
  font-size: var(--font-size-body);
  box-shadow: var(--shadow-md);
  transition: background-color var(--transition-fast),
              transform var(--transition-fast);
}

.totop a:hover {
  background-color: var(--interactive-primary-hover);
  color: var(--primitive-white);
  text-decoration: none;
  transform: translateY(-2px);
}


/* ============================================================
   COMPONENTE: Social Links

   <div class="social_links">
     <a href="..." target="_blank" title="Linkedin">
       <i class="fa-brands fa-linkedin" aria-hidden="true"></i>
     </a>
   </div>
   ============================================================ */

.social_links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gap-xs);
}

.social_links a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  color: var(--text-header-muted);
  border-radius: var(--radius-full);
  transition: color var(--transition-fast),
              background-color var(--transition-fast);
}

.social_links a:hover,
.social_links a:focus-visible {
  color: var(--interactive-primary);
  background-color: color-mix(in srgb, var(--interactive-primary) 10%, transparent);
  text-decoration: none;
}

.social_links i {
  font-size: 16px;
  line-height: 1;
}


/* ============================================================
   COMPONENTE: Bottoni e CTA link

   Default / .cta-link-light → outlined (bordo accent, testo accent)
   .dark   / .cta-link-dark  → filled  (sfondo accent, testo bianco)

   <a class="cta-link-dark"  href="#">Browse products</a>
   <a class="cta-link-light" href="#">Contact sales</a>
   <button>Outlined</button>
   <button class="dark">Filled</button>
   ============================================================ */

button,
.cta-link-light,
.cta-link-dark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--letter-spacing-nav);
  line-height: 1;
  padding: var(--space-3) var(--space-6);
  border-radius: var(--radius-sm);
  border: 1px solid var(--interactive-primary);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color var(--transition-fast),
              color var(--transition-fast),
              border-color var(--transition-fast);
}

/* OUTLINED */
button,
.cta-link-light {
  background-color: transparent;
  color: var(--interactive-primary);
}

button:hover,
button:focus-visible,
.cta-link-light:hover,
.cta-link-light:focus-visible {
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
  text-decoration: none;
}

/* FILLED */
button.dark,
.cta-link-dark {
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
  border-color: var(--interactive-primary);
}

button.dark:hover,
button.dark:focus-visible,
.cta-link-dark:hover,
.cta-link-dark:focus-visible {
  background-color: var(--interactive-primary-hover);
  border-color: var(--interactive-primary-hover);
  color: var(--primitive-white);
  text-decoration: none;
}

button:disabled,
button.dark:disabled {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}

/* Su sfondo scuro il outlined inverte i colori */
.theme-dark button,
.theme-dark .cta-link-light {
  border-color: var(--primitive-white);
  color: var(--primitive-white);
}

.theme-dark button:hover,
.theme-dark .cta-link-light:hover {
  background-color: var(--primitive-white);
  color: var(--text-primary);
}

/* ------------------------------------------------------------
   READMORE LINK — link "continua →"
   Usato dentro .item-box.readmore quando NON si è in
   .in_cont_art (dove viene gestito diversamente sotto)
   ------------------------------------------------------------ */

.readmore .readmore-link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding-top: var(--space-2);
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-medium);
  color: var(--interactive-text);
  text-decoration: none;
  transition: color var(--transition-fast),
              gap var(--transition-fast);
}

.readmore .readmore-link::after {
  content: '→';
  display: inline-block;
  transition: transform var(--transition-fast);
}

.readmore .readmore-link:hover {
  color: var(--interactive-text-hover);
  text-decoration: none;
}

.readmore .readmore-link:hover::after {
  transform: translateX(3px);
}


/* ============================================================
   COMPONENTE: Visualizzatore articolo

   STRUTTURA HTML:
   <section class="section-full [background-*] [stileN]">
     <div class="container">
       <article class="vis-articolo [stileN] [modificatori]">
         <div class="item-box first-img-articolo">...</div>
         <div class="item-box-content">
           <div class="item-box art_title">...</div>
           <div class="item-box pub_date">...</div>
           <div class="item-box text-art">...</div>
           <div class="item-box readmore">...</div>
         </div>
       </article>
     </div>
   </section>
   ============================================================ */


/* ------------------------------------------------------------
   BASE — comuni a tutti gli stili
   ------------------------------------------------------------ */

article.vis-articolo {
  padding-block: var(--space-16);
}

article.vis-articolo .item-box.art_title {
  margin-bottom: var(--space-2);
}

article.vis-articolo .item-box.pub_date {
  margin-bottom: var(--space-2);
}

article.vis-articolo .item-box.pub_date .data_pubblicazione {
  font-size: var(--font-size-body-small);
  color: var(--text-secondary);
}

article.vis-articolo .item-box.text-art {
  display: block;
  font-size: var(--font-size-desc);
  line-height: var(--line-height-body-small);
  width: 100%;
}
article.vis-articolo .text-art ul {
	list-style: disc;
	padding-left: var(--gap-md);
	margin-top: var(--gap-sm);
}

article.vis-articolo .item-box.text-art p:has(a[class^="cta-link"]) {
  display: inline-flex;
  gap: var(--space-3);
  flex-wrap: wrap;
  margin-top: var(--space-2);
}

article.vis-articolo .item-box.first-img-articolo a {
  display: block;
  text-decoration: none;
}

article.vis-articolo .item-box.first-img-articolo img {
  width: 100%;
  height: auto;
  object-fit: contain;
}


/* ------------------------------------------------------------
   STILE 1 — layout flex a due colonne
   Default: testo sinistra 50% / immagine destra 50%

   MODIFICATORI:
   .rev      → immagine sinistra / testo destra
   .img-sm   → 35% immagine / 65% testo
   .img-xs   → 25% immagine / 75% testo
   .img-lg   → 60% immagine / 40% testo
   .align-top → allinea in alto invece che al centro
   ------------------------------------------------------------ */

article.vis-articolo.stile1 {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: var(--gap-lg);
  padding: var(--space-20) var(--space-2);
}

.in_cont_art article.vis-articolo.stile1 {
  padding: var(--space-2);
}

article.vis-articolo.stile1 .item-box-content {
  flex: 1 1 50%;
  min-width: 0;
}

article.vis-articolo.stile1 .item-box.first-img-articolo {
  flex: 1 1 50%;
  min-width: 0;
  order: 2;
}

article.vis-articolo.stile1.rev .item-box.first-img-articolo { order: -1; }

article.vis-articolo.stile1.img-sm .item-box-content            { flex-basis: 65%; }
article.vis-articolo.stile1.img-sm .item-box.first-img-articolo { flex-basis: 35%; }

article.vis-articolo.stile1.img-xs .item-box-content            { flex-basis: 75%; }
article.vis-articolo.stile1.img-xs .item-box.first-img-articolo { flex-basis: 25%; }

article.vis-articolo.stile1.img-lg .item-box-content            { flex-basis: 40%; }
article.vis-articolo.stile1.img-lg .item-box.first-img-articolo { flex-basis: 60%; }

article.vis-articolo.stile1.align-top { align-items: flex-start; }

/* Tablet — 992px = --bp-lg */
@media (max-width: 992px) {
  article.vis-articolo.stile1 { padding: var(--space-10); }
}

/* Mobile — 768px = --bp-md */
@media (max-width: 768px) {
  article.vis-articolo.stile1 {
    flex-direction: column;
    padding: var(--space-4);
    gap: var(--gap-md);
  }

  article.vis-articolo.stile1 .item-box.first-img-articolo,
  article.vis-articolo.stile1.rev .item-box.first-img-articolo {
    order: unset;
    flex: 0 0 100%;
    width: 100%;
  }

  article.vis-articolo.stile1 .item-box-content {
    flex: 0 0 100%;
    width: 100%;
  }
}


/* ------------------------------------------------------------
   STILE 2 — layout verticale stack
   ------------------------------------------------------------ */

article.vis-articolo.stile2 {
  display: flex;
  flex-direction: column;
  padding: var(--space-8);
  gap: 0;
}

article.vis-articolo.stile2 .item-box.first-img-articolo {
  width: 100%;
  margin-bottom: var(--space-6);
}

article.vis-articolo.stile2 .item-box.first-img-articolo img {
  width: 100%;
  height: auto;
  object-fit: contain;
}

article.vis-articolo.stile2 .item-box-content {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

article.vis-articolo.stile2 .item-box.readmore {
  margin-top: var(--space-2);
}


/* ------------------------------------------------------------
   STILE 3 — layout centrato senza immagine
   ------------------------------------------------------------ */

article.vis-articolo.stile3 {
  text-align: center;
  padding-block: var(--space-24);
  padding-inline: var(--container-padding);
}

article.vis-articolo.stile3 .item-box.art_title {
  margin-bottom: var(--space-4);
}

article.vis-articolo.stile3 .item-box.art_title .arttitle {
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
}

article.vis-articolo.stile3 .item-box.art_subtitle {
  margin-bottom: var(--space-16);
}

article.vis-articolo.stile3 .item-box.art_subtitle .arttitle {
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-regular);
  color: var(--text-secondary);
  max-width: 680px;
  margin-inline: auto;
}

article.vis-articolo.stile3 .item-box.text-art {
  margin-bottom: var(--space-12);
}

article.vis-articolo.stile3 .item-box.text-art h3 {
  font-size: var(--font-size-h3);
  margin-bottom: var(--space-3);
}

article.vis-articolo.stile3 .item-box.text-art p {
  font-size: var(--font-size-body-small);
  color: var(--text-secondary);
}

article.vis-articolo.stile3.background-dark .item-box.art_subtitle .arttitle,
article.vis-articolo.stile3.background-dark .item-box.text-art p,
article.vis-articolo.stile3.background-accent .item-box.art_subtitle .arttitle,
article.vis-articolo.stile3.background-accent .item-box.text-art p,
article.vis-articolo.stile3.background-black .item-box.art_subtitle .arttitle,
article.vis-articolo.stile3.background-black .item-box.text-art p {
  color: var(--text-inverse-muted);
}

/* Mobile — 768px = --bp-md */
@media (max-width: 768px) {
  article.vis-articolo.stile3 {
    padding-block: var(--space-16);
    padding-inline: var(--space-4);
  }
}


/* ------------------------------------------------------------
   MODIFICATORE: .box-shadow
   Da aggiungere su .bloglist o .productlist.
   Applica sfondo, ombra e padding ai figli (card).

   <div class="bloglist grid-3 box-shadow">
   <div class="productlist grid-3 box-shadow">
   ------------------------------------------------------------ */

.box-shadow .cont-art-element,
.box-shadow .product {
  background-color: var(--bg-surface);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  padding: var(--space-8);
  transition: box-shadow var(--transition-base);
}

.box-shadow .cont-art-element:hover,
.box-shadow .product:hover {
  box-shadow: var(--shadow-lg);
}


/* ------------------------------------------------------------
   STILE 4, 5, ... — aggiungere qui i prossimi stili.
   ------------------------------------------------------------ */


/* ============================================================
   COMPONENTE: Contenitore articoli (section_cont_art)
   ============================================================ */

.section_cont_art {
  padding-block: var(--space-16);
}

.striscia-titolo-ist {
  text-align: center;
  margin-bottom: var(--space-12);
}

.striscia-titolo-ist .istanza_titolo {
  line-height: var(--line-height-heading);
  color: var(--text-primary);
  margin-bottom: var(--space-2);
}

.striscia-titolo-ist .istanza_sottotitolo {
  color: var(--text-secondary);
}

.striscia-titolo-ist .istanza_titolo span,
.striscia-titolo-ist .istanza_sottotitolo span {
  display: inline;
  font: inherit;
  color: inherit;
}


/* ------------------------------------------------------------
   READMORE-LINK IN CONTENITORE ARTICOLI
   Il CMS aggiunge cta-link-* su tutti i readmore-link
   (immagine, titolo, testo, bottone readmore).
   Strategia in tre livelli:
   1. Neutralizza cta-link-* su TUTTI i readmore-link in in_cont_art
   2. Rimuove la freccia → del readmore-link base
   3. Riapplica stile bottone SOLO su .item-box.readmore
   ------------------------------------------------------------ */

/* 1. Neutralizza tutto */
.in_cont_art .readmore-link.cta-link-dark,
.in_cont_art .readmore-link.cta-link-light {
  display: inline;
  padding: 0;
  border: none;
  border-radius: 0;
  background-color: transparent;
  color: inherit;
  font-size: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  white-space: normal;
}

.in_cont_art .readmore-link.cta-link-dark:hover,
.in_cont_art .readmore-link.cta-link-light:hover {
  background-color: transparent;
  border-color: transparent;
  color: var(--interactive-text);
  text-decoration: none;
}

/* 2. Rimuove freccia → generata da .readmore .readmore-link */
/* .in_cont_art .readmore-link::after {
  content: none;
} */

/* 3. Riapplica stile bottone FILLED solo su .item-box.readmore .cta-link-dark */
.in_cont_art .item-box.readmore .readmore-link.cta-link-dark {
  display: inline-flex;
  padding: var(--space-3) var(--space-6);
  border: 1px solid var(--interactive-primary);
  border-radius: var(--radius-sm);
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--letter-spacing-nav);
  line-height: 1;
  white-space: nowrap;
  margin-top: var(--space-4);
  transition: background-color var(--transition-fast),
              border-color var(--transition-fast);
}

.in_cont_art .item-box.readmore .readmore-link.cta-link-dark:hover {
  background-color: var(--interactive-primary-hover);
  border-color: var(--interactive-primary-hover);
  color: var(--primitive-white);
}

/* 3b. Riapplica stile bottone OUTLINED solo su .item-box.readmore .cta-link-light */
.in_cont_art .item-box.readmore .readmore-link.cta-link-light {
  display: inline-flex;
  padding: var(--space-3) var(--space-6);
  border: 1px solid var(--interactive-primary);
  border-radius: var(--radius-sm);
  background-color: transparent;
  color: var(--interactive-primary);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--letter-spacing-nav);
  line-height: 1;
  white-space: nowrap;
  margin-top: var(--space-4);
  transition: background-color var(--transition-fast),
              color var(--transition-fast);
}

.in_cont_art .item-box.readmore .readmore-link.cta-link-light:hover {
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
}


/* ------------------------------------------------------------
   BTN-MORE — bottone "vedi tutti" del contenitore articoli

   Supporta varianti dark (filled) e light (outlined)
   tramite classe aggiuntiva sul contenitore o sul link:

   <div class="btn-more">             → filled di default
   <div class="btn-more cta-link-dark"> → filled esplicito
   <div class="btn-more cta-link-light"> → outlined
   ------------------------------------------------------------ */

.btn-more {
  text-align: center;
  margin-top: var(--space-8);
}

/* Base comune */
.btn-more a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--letter-spacing-nav);
  line-height: 1;
  padding: var(--space-3) var(--space-6);
  border-radius: var(--radius-sm);
  border: 1px solid var(--interactive-primary);
  text-decoration: none;
  white-space: nowrap;
  transition: background-color var(--transition-fast),
              color var(--transition-fast),
              border-color var(--transition-fast);
}

/* Default e .cta-link-dark → filled */
.btn-more a,
.btn-more.cta-link-dark a {
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
}

.btn-more a:hover,
.btn-more.cta-link-dark a:hover {
  background-color: var(--interactive-primary-hover);
  border-color: var(--interactive-primary-hover);
  color: var(--primitive-white);
  text-decoration: none;
}

/* .cta-link-light → outlined */
.btn-more.cta-link-light a {
  background-color: transparent;
  color: var(--interactive-primary);
}

.btn-more.cta-link-light a:hover {
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
  text-decoration: none;
}


/* ------------------------------------------------------------
   ARTICOLO IN CONTENITORE — sovrascrive proporzioni standalone
   ------------------------------------------------------------ */

.in_cont_art article.vis-articolo {
  padding: 0;
}

.in_cont_art article.vis-articolo.stile1 {
  display: flex;
  flex-direction: row;
  gap: var(--gap-md);
  padding: var(--space-2) 0;
}

.in_cont_art article.vis-articolo.stile1 .item-box.first-img-articolo {
  flex: 0 0 30%;
}

.in_cont_art article.vis-articolo.stile1 .item-box-content {
  flex: 1 1 0;
  min-width: 0;
}

.in_cont_art article.vis-articolo .item-box.pub_date {
  display: none;
}

.in_cont_art article.vis-articolo .item-box.art_title a,
.in_cont_art article.vis-articolo .item-box.art_subtitle a {
  color: var(--text-primary);
  text-decoration: none;
  transition: color var(--transition-fast);
}

.in_cont_art article.vis-articolo .item-box.art_title a:hover,
.in_cont_art article.vis-articolo .item-box.art_subtitle a:hover {
  color: var(--interactive-text);
}

/* Tablet — 992px = --bp-lg */
@media (max-width: 992px) {
  .in_cont_art article.vis-articolo.stile1 { gap: var(--gap-sm); }
  .in_cont_art article.vis-articolo.stile1 .item-box.first-img-articolo { flex-basis: 35%; }
}

/* Mobile — 768px = --bp-md */
@media (max-width: 768px) {
  .in_cont_art article.vis-articolo.stile1 { flex-direction: column; }

  .in_cont_art article.vis-articolo.stile1 .item-box.first-img-articolo {
    flex-basis: 100%;
    order: unset;
  }

  .in_cont_art article.vis-articolo.stile1 .item-box-content {
    flex-basis: 100%;
  }
}


/* ------------------------------------------------------------
   MODIFICATORE TITOLI SMALL
   ------------------------------------------------------------ */

article.titoli-sm h1 { font-size: var(--font-size-h2); line-height: var(--line-height-heading); }
article.titoli-sm h2 { font-size: var(--font-size-h3); font-weight: var(--font-weight-regular); }
article.titoli-sm h3 { font-size: var(--font-size-body); font-weight: var(--font-weight-regular); }


/* ============================================================
   COMPONENTE: Lista prodotti (prod-list)
   ============================================================ */

.prod-list:not(.pagina_categoria) {
  padding-block: var(--space-16);
}

.prod-list .cont-prodotto {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  height: 100%;
}

.prod-list .fotoProdotto {
  display: block;
  width: 100%;
  margin-bottom: var(--space-6);
}

.prod-list .fotoProdotto a {
  display: block;
  text-decoration: none;
}

.prod-list .fotoProdotto figure {
  margin: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 200px;
}

.prod-list .fotoProdotto img {
  max-width: 100%;
  max-height: 220px;
  width: auto;
  height: auto;
  object-fit: contain;
  transition: transform var(--transition-base);
}

.prod-list .fotoProdotto a:hover img {
  transform: scale(1.03);
}

.prod-list .cont-prodotto-text {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
}

.prod-list .nome-prod {
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-heading);
  margin-bottom: 0;
}

.prod-list .nome-prod a {
  color: var(--text-primary);
  text-decoration: none;
  transition: color var(--transition-fast);
}

.prod-list .nome-prod a:hover { color: var(--interactive-text); }

.prod-list .descr-breve-prod {
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-regular);
  color: var(--text-secondary);
  margin-bottom: 0;
}

.prod-list .descr-breve-prod a {
  color: var(--text-secondary);
  text-decoration: none;
}

.prod-list .descr-breve-prod a:hover { color: var(--interactive-text); }

.prod-list .bt-det-prod { margin-top: var(--space-4); }

.prod-list .cont-prodotto-text .clear { display: none; }

.count_products {
	border-bottom: solid 1px var(--primitive-border);
	font-weight: var(--font-weight-medium);
	color: var(--text-secondary);
}

/* ============================================================
   COMPONENTE: Megamenu

   Si attiva su voci con me_params['in_evidenza']==1
   passando megamenu=1 alla funzione {menu}.

   RICHIEDE JS:
   (function() {
     function posizionaMegamenu(panel) {
       var header = document.querySelector('.fixed-header');
       if (header) panel.style.top = header.offsetHeight + 'px';
     }

     document.querySelectorAll('.megamenu-trigger > .nav-link').forEach(function(toggle) {
       toggle.addEventListener('click', function(e) {
         e.preventDefault();
         e.stopPropagation();
         var panel = this.closest('.megamenu-trigger').querySelector('.megamenu-panel');
         if (!panel) return;
         var isOpen = panel.classList.contains('open');
         document.querySelectorAll('.megamenu-panel.open').forEach(function(p) {
           p.classList.remove('open');
         });
         if (!isOpen) { panel.classList.add('open'); posizionaMegamenu(panel); }
       });
     });

     document.addEventListener('click', function() {
       document.querySelectorAll('.megamenu-panel.open').forEach(function(p) {
         p.classList.remove('open');
       });
     });

     document.querySelectorAll('.megamenu-panel').forEach(function(panel) {
       panel.addEventListener('click', function(e) { e.stopPropagation(); });
     });

     document.querySelectorAll('.megamenu-cat').forEach(function(cat) {
       cat.addEventListener('mouseenter', function() {
         var target = this.dataset.target;
         if (!target) return;
         var panel = this.closest('.megamenu-panel');
         panel.querySelectorAll('.megamenu-cat').forEach(function(c) { c.classList.remove('active'); });
         this.classList.add('active');
         panel.querySelectorAll('.megamenu-sub').forEach(function(s) { s.classList.remove('active'); });
         var sub = panel.querySelector('.megamenu-sub[data-sub="' + target + '"]');
         if (sub) sub.classList.add('active');
       });
     });

     document.querySelectorAll('.megamenu-cat[data-target] > a').forEach(function(link) {
       link.addEventListener('click', function(e) {
         var cat = this.closest('.megamenu-cat');
         if (!cat.classList.contains('active')) {
           e.preventDefault();
           var panel = this.closest('.megamenu-panel');
           panel.querySelectorAll('.megamenu-cat').forEach(function(c) { c.classList.remove('active'); });
           cat.classList.add('active');
           panel.querySelectorAll('.megamenu-sub').forEach(function(s) { s.classList.remove('active'); });
           var sub = panel.querySelector('.megamenu-sub[data-sub="' + cat.dataset.target + '"]');
           if (sub) sub.classList.add('active');
         }
       });
     });
   })();
   ============================================================ */

.megamenu-panel {
  position: fixed;
  left: 0;
  right: 0;
  width: 100%;
  background-color: var(--bg-header-nav);
  border-top: 1px solid var(--border-header);
  box-shadow: var(--shadow-lg);
  padding: var(--space-8) 0;
}

.megamenu-panel.open {
  display: flex;
  flex-direction: row;
  /* Centra con padding calcolato invece di max-width */
  padding-inline: max(var(--space-6), calc((100vw - var(--container-max-width)) / 2));
  gap: 0;
}

.megamenu-trigger .megamenu-panel { display: none; }
.megamenu-trigger .megamenu-panel.open { display: flex; }

.megamenu-trigger > .nav-link::after {
  display: inline-block;
  margin-left: .255em;
  vertical-align: .255em;
  content: "";
  border-top: .3em solid;
  border-right: .3em solid transparent;
  border-bottom: 0;
  border-left: .3em solid transparent;
}

.megamenu-trigger.show .megamenu-panel:not(.open) { display: none !important; }
.megamenu-trigger > .dropdown-menu { display: none !important; }

.megamenu-col {
  flex: 1 1 25%;
  padding-inline: var(--space-8);
  border-right: 1px solid var(--border-header);
}

.megamenu-col:last-child { border-right: none; }

.megamenu-label {
  font-size: var(--font-size-abstract);
  font-weight: var(--font-weight-medium);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-header-muted);
  margin-bottom: var(--space-4);
}

.megamenu-col-categories ul { list-style: none; padding: 0; margin: 0; }
.megamenu-col-categories li { margin-bottom: var(--space-1); }

.megamenu-col-categories .megamenu-cat > a {
  display: block;
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-regular);
  color: var(--text-header);
  padding-block: var(--space-1);
  text-decoration: none;
  transition: color var(--transition-fast);
  cursor: pointer;
}

.megamenu-col-categories .megamenu-cat:hover > a,
.megamenu-col-categories .megamenu-cat.active > a {
  color: var(--text-header);
  font-weight: var(--font-weight-medium);
}

.megamenu-col-categories .megamenu-cat:hover > a, .megamenu-col-categories .megamenu-cat.active > a, .megamenu-col-sub a:hover, .megamenu-col-sub2 a:hover {
	box-shadow: inset 2px 0 0 var(--text-accent);
}
.megamenu-col-categories .megamenu-cat > a {
	color: var(--text-header-light);
}

.megamenu-col-categories .megamenu-cat.current_menu a {
  color: var(--text-menu-current);
}

.megamenu-col-sub { position: relative; }
.megamenu-sub { display: none; }
.megamenu-sub.active { display: block; }
.megamenu-col-sub ul { list-style: none; padding: 0; margin: 0; }
.megamenu-col-sub li { margin-bottom: var(--space-1); }

.megamenu-col-sub a {
  display: block;
  font-size: var(--font-size-body-small);
  color: var(--text-header);
  padding-block: var(--space-2);
  text-decoration: none;
  transition: color var(--transition-fast);
}

.megamenu-col-sub a:hover { color: var(--text-header); text-decoration: none; }

.megamenu-col-sub .megamenu-sub-cat.current_menu a {
  color: var(--text-menu-current);
}


.megamenu-col-featured .megamenu-label { margin-bottom: var(--space-6); }

.megamenu-featured-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}

.megamenu-featured-item img {
  width: 56px;
  height: 56px;
  object-fit: contain;
  flex-shrink: 0;
  border-radius: var(--radius-sm);
}

.megamenu-featured-item-text {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.megamenu-featured-item-label {
  font-size: var(--font-size-abstract);
  font-weight: var(--font-weight-medium);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-header-muted);
}

.megamenu-featured-item-title {
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-bold);
  color: var(--text-header);
  text-decoration: none;
  transition: color var(--transition-fast);
}

.megamenu-featured-item-title:hover { color: var(--interactive-primary); text-decoration: none; }

.megamenu-featured-item-desc {
  font-size: var(--font-size-abstract);
  color: var(--text-header-muted);
  line-height: var(--line-height-abstract);
}

.megamenu-col-help p:not(.megamenu-label) {
  font-size: var(--font-size-body);
  color: var(--text-header);
  margin-bottom: var(--space-6);
  line-height: var(--line-height-body);
}

/* COL 3 — pronipoti, stesso stile di col2 */
.megamenu-col-sub2 { position: relative; }
.megamenu-sub2 { display: none; }
.megamenu-sub2.active { display: block; }
.megamenu-col-sub2 ul { list-style: none; padding: 0; margin: 0; }
.megamenu-col-sub2 li { margin-bottom: var(--space-1); }
.megamenu-col-sub2 a {
  display: block;
  font-size: var(--font-size-body-small);
  color: var(--text-header);
  padding-block: var(--space-2);
  text-decoration: none;
  transition: color var(--transition-fast);
}
.megamenu-col-sub2 a:hover { color: var(--text-header); }

/* Freccia › sui nipoti che hanno pronipoti */
.megamenu-sub-cat {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.megamenu-sub-arrow {
  font-size: 14px;
  color: var(--text-header-muted);
  flex-shrink: 0;
}
.megamenu-sub-cat.active .megamenu-sub-arrow,
.megamenu-sub-cat:hover .megamenu-sub-arrow {
  color: var(--text-header);
}
.megamenu-sub2 li.current_menu a {
  color: var(--text-menu-current);
}


.megamenu-cat {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.megamenu-cat-arrow {
  font-size: 14px;
  color: var(--text-header-muted);
  flex-shrink: 0;
  margin-left: var(--space-2);
}

.megamenu-cat.active .megamenu-cat-arrow,
.megamenu-cat:hover .megamenu-cat-arrow {
  color: var(--text-header);
}

/* Mobile — 992px = --bp-lg */
@media (max-width: 992px) {
  .megamenu-panel { display: none !important; }
}

/* ------------------------------------------------------------
   ARTICOLO DENTRO MEGAMENU COL-FEATURED
   Override compatto del vis-articolo.stile1
   senza toccare le regole originali
   ------------------------------------------------------------ */

.megamenu-col-featured article.vis-articolo {
  padding: 0;
  gap: var(--gap-sm);
  align-items: flex-start;
}

/* Immagine piccola — override img-xs */
.megamenu-col-featured article.vis-articolo .item-box.first-img-articolo {
  flex: 0 0 56px;
}

.megamenu-col-featured article.vis-articolo .item-box.first-img-articolo img {
  width: 56px;
  height: 56px;
  object-fit: cover;
  border-radius: var(--radius-sm);
}

/* Colonna testo */
.megamenu-col-featured article.vis-articolo .item-box-content {
  flex: 1 1 0;
  min-width: 0;
  gap: var(--space-1);
}

/* Titolo — colore accent invece del primario su sfondo chiaro */
.megamenu-col-featured article.vis-articolo .item-box.art_title .arttitle,
.megamenu-col-featured article.vis-articolo .item-box.art_title .arttitle a {
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-bold);
  color: var(--text-inverse);
  line-height: var(--line-height-body-small);
  text-decoration: none;
}

.megamenu-col-featured article.vis-articolo .item-box.art_title .arttitle a:hover {
  color: var(--interactive-primary-hover);
}

/* Testo body */
.megamenu-col-featured article.vis-articolo .item-box.text-art {
  font-size: var(--font-size-desc);
  color: var(--text-header-muted);
  line-height: var(--line-height-body-small);
}


/* ============================================================
   COMPONENTE: Footer

   STRUTTURA:
   <footer class="site-footer">
     <div class="footer-nav">...</div>        ← menu di navigazione
     <div class="footer-newsletter">...</div> ← newsletter CTA
     <div class="footer-info">...</div>       ← logo + contatti
     <div class="footer-legal">...</div>      ← dati legali
   </footer>

   Sfondo: --bg-header-nav (stesso dell'header)
   Testi: variabili --text-header* per coerenza con header scuro
   ============================================================ */

.site-footer {
  background-color: var(--bg-header-nav);
  color: var(--text-header);
}

/* Reset stili navbar Bootstrap ereditati dal {menu} nel footer */
.footer-nav .nav-link,
.footer-nav .nav-link span.menu-text {
  padding-inline: 0;
  padding-block: var(--space-1);
  color: var(--text-header-muted) !important;
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-regular);
  letter-spacing: 0;
  white-space: normal;
}

.footer-nav .nav-link:hover {
  color: var(--text-header) !important;
  text-decoration: none;
}

.footer-nav .separator {
  display: none;
}

.footer-nav .nav-item {
  display: block;
}

.footer-nav .navbar-nav {
  flex-direction: column;
  gap: 0;
}
 
/* ------------------------------------------------------------
   FASCIA 1 — navigazione a colonne
   ------------------------------------------------------------ */

.footer-nav {
  padding-block: var(--space-16);
}

.footer-nav-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--gap-xs);
}

.footer-nav-title {
  font-size: var(--font-size-h2);
  font-weight: var(--font-weight-bold);
  color: var(--text-header);
  margin-bottom: var(--space-1);
  letter-spacing: 0;
}

/* Gap tra due titoli nella stessa colonna (es. Services + Support) */
.footer-nav-title--gap {
  margin-top: var(--space-8);
}

/* Voci di menu generate da {menu} */
.footer-nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.footer-nav ul li a {
  font-size: var(--font-size-body-small);
  color: var(--text-header-muted);
  text-decoration: none;
  transition: color var(--transition-fast);
  display: block;
  padding-block: var(--space-1);
}

.footer-nav ul li a:hover {
  color: var(--text-header);
  text-decoration: none;
}

/* Separatore tra fascia nav e newsletter */
.footer-nav {
  border-bottom: 1px solid var(--border-header);
}

/* Tablet — 992px = --bp-lg */
@media (max-width: 992px) {
  .footer-nav-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--gap-md);
  }
}

/* Mobile — 576px = --bp-sm */
@media (max-width: 576px) {
  .footer-nav-grid {
    grid-template-columns: 1fr;
  }
}


/* ------------------------------------------------------------
   FASCIA 2 — newsletter
   ------------------------------------------------------------ */

.footer-newsletter {
  padding-block: var(--space-16);
  border-bottom: 1px solid var(--border-header);
  text-align: center;
}

.footer-newsletter .container {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
}

.footer-newsletter-title {
  font-size: var(--font-size-title);
  font-weight: var(--font-weight-bold);
  color: var(--text-header);
  margin: 0;
}

.footer-newsletter-sub {
  font-size: var(--font-size-body);
  color: var(--text-header-muted);
  margin: 0;
  max-width: 480px;
}

/* Il bottone riusa .cta-link-dark già definito */
.footer-newsletter .cta-link-dark {
  margin-top: var(--space-2);
}


/* ------------------------------------------------------------
   FASCIA 3 — logo + contatti + info destra
   ------------------------------------------------------------ */

.footer-info {
  padding-block: var(--space-12);
  border-bottom: 1px solid var(--border-header);
}

.footer-info-grid {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: var(--gap-lg);
}

/* Contatti — sinistra */
.footer-info-contacts {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.footer-info-contacts p {
  font-size: var(--font-size-body-small);
  color: var(--text-header-muted);
  margin: 0;
}

/* Logo — centro */
.footer-info-logo {
  display: flex;
  justify-content: center;
}

.footer-info-logo a {
  display: block;
}

.footer-info-logo img {
  height: 40px;
  width: auto;
}

/* Info destra */
.footer-info-right {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  text-align: right;
}

.footer-info-right p,
.footer-info-right a {
  font-size: var(--font-size-body-small);
  color: var(--text-header-muted);
  margin: 0;
  text-decoration: none;
  transition: color var(--transition-fast);
}

.footer-info-right a:hover {
  color: var(--text-header);
}

/* Mobile — 768px = --bp-md */
@media (max-width: 768px) {
  .footer-info-grid {
    grid-template-columns: 1fr;
    text-align: center;
    gap: var(--gap-md);
  }

  .footer-info-logo {
    order: -1;
  }

  .footer-info-right {
    text-align: center;
  }
}


/* ------------------------------------------------------------
   FASCIA 4 — dati legali
   ------------------------------------------------------------ */

.footer-legal {
  padding-block: var(--space-6);
  text-align: center;
}

.footer-legal p,
.footer-legal a {
  font-size: var(--font-size-abstract);
  color: var(--text-header-muted);
  margin: 0;
  text-decoration: none;
}

.footer-legal a:hover {
  color: var(--text-header);
}


/* ============================================================
   COMPONENTE: Contenitore categorie prodotti (cont_categorie_prodotti)
 
   STRUTTURA HTML (generata dal CMS, non modificabile):
   <section class="cont_categorie_prodotti [stileN] [modificatori]">
     <div class="container cat_catalogo">
       <div class="grid-3">
         <ul class="ul0">
           <li>
             <div class="cont_info_cat">
               <div class="cat_nome"><a>...</a></div>      ← wrappati in .cat_testo
               <div class="img_cat"><a><figure><img></figure></a></div>
               <div class="descr_cat"><a><p>...</p></a></div>  ← wrappati in .cat_testo
             </div>
             <ul class="ul1">  ← sottocategorie opzionali
               <li><div class="cont_info_cat"><div class="cat_nome">...</div></div></li>
             </ul>
           </li>
           <span class="separator"></span>  ← nascosto da grid.css
           <li>...</li>
         </ul>
       </div>
     </div>
   </section>
 
   MODIFICATORI (stessi del vis-articolo):
   .stile1    → layout affiancato (immagine + testo)
   .rev       → immagine a sinistra
   .img-xs    → 25% immagine / 75% testo
   .img-sm    → 35% immagine / 65% testo
   .img-lg    → 60% immagine / 40% testo
   .align-top → allinea in alto invece che al centro
   .titoli-sm → titoli ridotti
   .text-small → testo ridotto
 
   RICHIEDE jQuery (solo per .stile1):
   $('.cont_categorie_prodotti.stile1 .cont_info_cat').each(function() {
     $('.cat_nome, .descr_cat', $(this)).wrapAll("<div class='cat_testo'>");
   });
 
   NOTA: la griglia è gestita da grid.css tramite ul.ul0 (display:contents).
   ============================================================ */
 
 
/* ------------------------------------------------------------
   BASE — comuni a tutti gli stili
   ------------------------------------------------------------ */


section.cont_categorie_prodotti,
div.cont_categorie_prodotti {
  padding: var(--space-20) var(--space-2);
}

.smoothmenu-subcat:has(> .clear:only-child) {
  display: none;
}

/* Immagine */
.cont_categorie_prodotti .img_cat a {
  display: block;
  text-decoration: none;
}
 
.cont_categorie_prodotti .img_cat figure {
  margin: 0;
}
 
.cont_categorie_prodotti .img_cat img {
  width: 100%;
  height: auto;
  object-fit: contain;
}
 
/* Nome categoria */
.cont_categorie_prodotti .cat_nome a {
  color: var(--text-primary);
  text-decoration: none;
  font-weight: var(--font-weight-bold);
  font-size: var(--font-size-h3);
  line-height: var(--line-height-heading);
  transition: color var(--transition-fast);
  display: block;
}
 
.cont_categorie_prodotti .cat_nome a:hover {
  color: var(--interactive-text);
}
 
/* Rimuove il div interno generato dal CMS dentro cat_nome */
.cont_categorie_prodotti .cat_nome > a > div {
  display: contents;
}
 
/* Descrizione */
.cont_categorie_prodotti .descr_cat {
  font-size: var(--font-size-body-small);
  color: var(--text-secondary);
}
 
.cont_categorie_prodotti .descr_cat a {
  color: inherit;
  text-decoration: none;
}
 
.cont_categorie_prodotti .descr_cat p {
  margin: 0;
  font-size: inherit;
  color: inherit;
}

.cont_categorie_prodotti .separator {
  display: none;
}
 
 
/* ------------------------------------------------------------
   STILE 1 — layout flex a due colonne
   Richiede jQuery wrapAll per generare .cat_testo
 
   MODIFICATORI:
   .rev       → immagine a sinistra
   .img-xs    → 25% immagine / 75% testo
   .img-sm    → 35% immagine / 65% testo
   .img-lg    → 60% immagine / 40% testo
   .align-top → allinea in alto invece che al centro
   ------------------------------------------------------------ */
 
.cont_categorie_prodotti.stile1 .cont_info_cat {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: var(--gap-md);
}
 
/* Colonna testo — wrapper generato da jQuery */
.cont_categorie_prodotti.stile1 .cat_testo {
  flex: 1 1 50%;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
 
/* Colonna immagine — default a destra */
.cont_categorie_prodotti.stile1 .img_cat {
  flex: 1 1 50%;
  min-width: 0;
  order: 2;
}
 
/* --- .rev — immagine a sinistra --- */
.cont_categorie_prodotti.stile1.rev .img_cat { order: -1; }
 
/* --- .img-xs — 25% immagine / 75% testo --- */
.cont_categorie_prodotti.stile1.img-xs .cat_testo { flex-basis: 75%; }
.cont_categorie_prodotti.stile1.img-xs .img_cat   { flex-basis: 25%; }
 
/* --- .img-sm — 35% immagine / 65% testo --- */
.cont_categorie_prodotti.stile1.img-sm .cat_testo { flex-basis: 65%; }
.cont_categorie_prodotti.stile1.img-sm .img_cat   { flex-basis: 35%; }
 
/* --- .img-lg — 60% immagine / 40% testo --- */
.cont_categorie_prodotti.stile1.img-lg .cat_testo { flex-basis: 40%; }
.cont_categorie_prodotti.stile1.img-lg .img_cat   { flex-basis: 60%; }
 
/* --- .align-top --- */
.cont_categorie_prodotti.stile1.align-top .cont_info_cat {
  align-items: flex-start;
}
 
/* Tablet — 992px = --bp-lg */
@media (max-width: 992px) {
  .cont_categorie_prodotti.stile1 .cat_testo { flex-basis: 60%; }
  .cont_categorie_prodotti.stile1 .img_cat   { flex-basis: 40%; }
}
 
/* Mobile — 768px = --bp-md */
@media (max-width: 768px) {
  .cont_categorie_prodotti.stile1 .cont_info_cat {
    flex-direction: column;
  }
 
  .cont_categorie_prodotti.stile1 .img_cat {
    order: -1;
    flex-basis: 100%;
  }
 
  .cont_categorie_prodotti.stile1 .cat_testo {
    flex-basis: 100%;
  }
}
 
 
/* ------------------------------------------------------------
   MODIFICATORI TESTO
   ------------------------------------------------------------ */
 
.cont_categorie_prodotti.titoli-sm .cat_nome a {
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-bold);
}
 
.cont_categorie_prodotti.text-small .descr_cat {
  font-size: var(--font-size-abstract);
}
 
 
/* ------------------------------------------------------------
   SOTTOCATEGORIE — ul.ul1
   Lista semplice indentata sotto la categoria padre
   ------------------------------------------------------------ */
 
.cont_categorie_prodotti .ul1 {
  display: none; /* Per adesso nascosto */
  list-style: none;
  padding: 0;
  margin-top: var(--space-2);
  padding-left: var(--space-4);
  border-left: 2px solid var(--border-default);
}
 
.cont_categorie_prodotti .ul1 li {
  margin-bottom: var(--space-1);
}
 
.cont_categorie_prodotti .ul1 .cat_nome a {
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-regular);
  color: var(--text-secondary);
}
 
.cont_categorie_prodotti .ul1 .cat_nome a:hover {
  color: var(--interactive-text);
}
 
/* Nasconde immagine e descrizione nelle sottocategorie */
.cont_categorie_prodotti .ul1 .img_cat,
.cont_categorie_prodotti .ul1 .descr_cat {
  display: none;
}
 



/* ------------------------------------------------------------
   PAGINAZIONE
   Occupa tutta la larghezza sotto la griglia prodotti
   ------------------------------------------------------------ */
 
.pagination {
	align-items: center;
	justify-content: center;
	gap: var(--space-2);
	padding-top: var(--space-8);
	margin-top: var(--space-4);
	border-top: 1px solid var(--border-default);
	flex-wrap: wrap;
	width: 100%;
}
 
.pagination .info-paginazione {
  font-size: var(--font-size-body-small);
  color: var(--text-secondary);
  margin-right: var(--space-4);
}
 
/* Numero di pagina — link */
.pagination .pagination-link,
.pagination a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding-inline: var(--space-2);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  color: var(--text-secondary);
  text-decoration: none;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  transition: background-color var(--transition-fast),
              color var(--transition-fast),
              border-color var(--transition-fast);
}
 
.pagination .pagination-link:hover,
.pagination a:hover {
  background-color: var(--bg-section-light);
  color: var(--text-primary);
  border-color: var(--border-strong);
  text-decoration: none;
}
 
/* Pagina corrente */
.pagination .current {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding-inline: var(--space-2);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-bold);
  color: var(--primitive-white);
  background-color: var(--interactive-primary);
  border: 1px solid var(--interactive-primary);
  border-radius: var(--radius-sm);
}
 
/* Prev / Next */
.pagination .prev,
.pagination .next {
  font-size: var(--font-size-body-small);
  color: var(--text-secondary);
  text-decoration: none;
  padding-inline: var(--space-3);
}
 

/* ------------------------------------------------------------
   Pagina 404 / Page not found
   ------------------------------------------------------------ */

#pageNotFoundError {
  padding-block: var(--space-20);
  text-align: center;
}

#pageNotFoundError h1 {
  font-size: var(--font-size-h2);
  font-weight: var(--font-weight-bold);
  color: var(--text-primary);
  margin-bottom: var(--space-4);
}

#pageNotFoundError p {
  font-size: var(--font-size-body);
  color: var(--text-secondary);
  margin-bottom: var(--space-6);
}

#pageNotFoundError hr {
  margin-block: var(--space-10);
  border-color: var(--border-default);
  opacity: 1;
}

#pageNotFoundError img {
  max-width: 320px;
  width: 100%;
  margin-inline: auto;
  margin-top: var(--space-8);
  opacity: 0.7;
}

/* ============================================================
   COMPONENTE: Lista prodotti — stile1 (layout affiancato)

   Aggiungere la classe .stile1 sul wrapper .prod-list
   o sulla .productlist per attivare il layout affiancato.

   MODIFICATORI (stessi di vis-articolo e cont_categorie_prodotti):
   .rev       → immagine a sinistra (default: destra)
   .img-xs    → 25% immagine / 75% testo
   .img-sm    → 35% immagine / 65% testo
   .img-lg    → 60% immagine / 40% testo
   .align-top → allinea in alto invece che al centro

   RICHIEDE jQuery wrapAll:
   $('.prod-list.stile1 .cont-prodotto, .productlist.stile1 .cont-prodotto').each(function() {
     $('.cont-prodotto-text', $(this)).wrapAll("<div class='cont-prodotto-testo'>");
   });

   In alternativa il wrapAll può essere fatto sul singolo product:
   $('.prod-list.stile1 .product').each(function() {
     $('.nome-prod, .descr-breve-prod, .bt-det-prod', $(this)).wrapAll("<div class='cont-prodotto-testo'>");
   });
   ============================================================ */


/* ------------------------------------------------------------
   GRIGLIA — stile1 usa 2 colonne invece di 3
   ------------------------------------------------------------ */

.prod-list.stile1,
.productlist.stile1 {
  display: flex;
  flex-direction: column;
  gap: var(--gap-lg);
}

/* Singolo prodotto — layout flex a due colonne */
.prod-list.stile1 .cont-prodotto,
.productlist.stile1 .cont-prodotto {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: var(--gap-lg);
  text-align: left;
}

/* Colonna immagine — default a sinistra */
.prod-list.stile1 .fotoProdotto,
.productlist.stile1 .fotoProdotto {
  flex: 0 0 40%;
  min-width: 0;
  margin-bottom: 0;
}

.prod-list.stile1 .fotoProdotto figure,
.productlist.stile1 .fotoProdotto figure {
  min-height: auto;
}

.prod-list.stile1 .fotoProdotto img,
.productlist.stile1 .fotoProdotto img {
  max-height: none;
  width: 100%;
  height: auto;
  object-fit: contain;
}

/* Colonna testo — wrapper generato da jQuery */
.prod-list.stile1 .cont-prodotto-testo,
.productlist.stile1 .cont-prodotto-testo {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  align-items: flex-start;
}

/* Testo non centrato in stile1 */
.prod-list.stile1 .cont-prodotto-text,
.productlist.stile1 .cont-prodotto-text {
  align-items: flex-start;
  text-align: left;
  width: 100%;
}

/* Nome prodotto */
.prod-list.stile1 .nome-prod,
.productlist.stile1 .nome-prod {
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-bold);
}

/* Descrizione breve */
.prod-list.stile1 .descr-breve-prod,
.productlist.stile1 .descr-breve-prod {
  font-size: var(--font-size-body-small);
  color: var(--text-secondary);
}

/* Link "View product →" — usa lo stile readmore */
.prod-list.stile1 .bt-det-prod,
.productlist.stile1 .bt-det-prod {
  margin-top: var(--space-2);
}

/* Separatore tra prodotti */
.prod-list.stile1 .product,
.productlist.stile1 .product {
  flex: 0 0 100%;
  padding-bottom: var(--gap-lg);
  border-bottom: 1px solid var(--border-default);
}

.prod-list.stile1 .product:last-of-type,
.productlist.stile1 .product:last-of-type {
  border-bottom: none;
  padding-bottom: 0;
}


/* --- .rev — immagine a destra --- */
.prod-list.stile1.rev .fotoProdotto,
.productlist.stile1.rev .fotoProdotto {
  order: 2;
}

.prod-list.stile1.rev .cont-prodotto-testo,
.productlist.stile1.rev .cont-prodotto-testo {
  order: 1;
}


/* --- .img-xs — 25% immagine / 75% testo --- */
.prod-list.stile1.img-xs .fotoProdotto,
.productlist.stile1.img-xs .fotoProdotto  { flex: 0 0 25%; }
.prod-list.stile1.img-xs .cont-prodotto-testo,
.productlist.stile1.img-xs .cont-prodotto-testo { flex: 0 0 75%; }

/* --- .img-sm — 35% immagine / 65% testo --- */
.prod-list.stile1.img-sm .fotoProdotto,
.productlist.stile1.img-sm .fotoProdotto  { flex: 0 0 35%; }
.prod-list.stile1.img-sm .cont-prodotto-testo,
.productlist.stile1.img-sm .cont-prodotto-testo { flex: 0 0 65%; }

/* --- .img-lg — 60% immagine / 40% testo --- */
.prod-list.stile1.img-lg .fotoProdotto,
.productlist.stile1.img-lg .fotoProdotto  { flex: 0 0 60%; }
.prod-list.stile1.img-lg .cont-prodotto-testo,
.productlist.stile1.img-lg .cont-prodotto-testo { flex: 0 0 40%; }

/* --- .align-top --- */
.prod-list.stile1.align-top .cont-prodotto,
.productlist.stile1.align-top .cont-prodotto {
  align-items: flex-start;
}


/* ------------------------------------------------------------
   GRIGLIA A DUE COLONNE — modificatore .grid-2
   Mostra i prodotti in 2 colonne affiancate come nel mockup
   ------------------------------------------------------------ */

.prod-list.stile1.grid-2,
.productlist.stile1.grid-2 {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--gap-xl);
}

.prod-list.stile1.grid-2 .product,
.productlist.stile1.grid-2 .product {
  border-bottom: none;
  padding-bottom: 0;
}


/* ------------------------------------------------------------
   RESPONSIVE
   ------------------------------------------------------------ */

/* Tablet — 992px = --bp-lg */
@media (max-width: 992px) {
  .prod-list.stile1.grid-2,
  .productlist.stile1.grid-2 {
    grid-template-columns: 1fr;
  }
}

/* Mobile — 768px = --bp-md */
@media (max-width: 768px) {
  .prod-list.stile1 .cont-prodotto,
  .productlist.stile1 .cont-prodotto {
    flex-direction: column;
  }

  .prod-list.stile1 .fotoProdotto,
  .productlist.stile1 .fotoProdotto,
  .prod-list.stile1.rev .fotoProdotto,
  .productlist.stile1.rev .fotoProdotto {
    order: unset;
    flex: 0 0 100%;
    width: 100%;
  }

  .prod-list.stile1 .cont-prodotto-testo,
  .productlist.stile1 .cont-prodotto-testo,
  .prod-list.stile1.rev .cont-prodotto-testo,
  .productlist.stile1.rev .cont-prodotto-testo {
    order: unset;
    flex: 0 0 100%;
  }
}


/* ============================================================
   COMPONENTE: Modal Login
 
   Struttura Bootstrap 4 modal con form CMS interno.
   Stilizzato per coerenza con il design system.
   ============================================================ */
 
/* ------------------------------------------------------------
   OVERLAY E DIALOG
   ------------------------------------------------------------ */
 
.modal-content {
  border: none;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
}
 
.modal-header {
  background-color: var(--bg-header-nav);
  border-bottom: 1px solid var(--border-header);
  padding: var(--space-5) var(--space-6);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
 
.modal-title {
  font-family: var(--font-family-base);
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-bold);
  color: var(--text-header);
  text-transform: capitalize;
  margin: 0;
}
 
/* Pulsante chiudi × */
.modal-header .close {
  background: none;
  border: none;
  font-size: 20px;
  line-height: 1;
  color: var(--text-header-muted);
  cursor: pointer;
  padding: 0;
  transition: color var(--transition-fast);
  opacity: 1;
  margin: 0;
}
 
.modal-header .close:hover {
  color: var(--text-header);
}
 
.modal-body {
  padding: var(--space-8);
  background-color: var(--bg-surface);
}
 
 
/* ------------------------------------------------------------
   FORM FIELDS — campi generati dal CMS
   ------------------------------------------------------------ */
 
.modal-body .input_element {
  margin-bottom: var(--space-5);
}
 
.modal-body .input_element.class_hidden {
  display: none;
}
 
/* Label */
.modal-body .form_label {
  display: block;
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  color: var(--text-primary);
  margin-bottom: var(--space-2);
}
 
/* Input testo e password */
.modal-body .form_input {
  display: block;
  width: 100%;
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-small);
  color: var(--text-primary);
  background-color: var(--bg-page);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  padding: var(--space-3) var(--space-4);
  outline: none;
  transition: border-color var(--transition-fast),
              box-shadow var(--transition-fast);
  box-sizing: border-box;
}
 
.modal-body .form_input:focus {
  border-color: var(--interactive-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--interactive-primary) 15%, transparent);
}
 
/* Icona mostra/nascondi password */
#pass_occhio {
  position: absolute;
  right: var(--space-3);
  top: 50%;
  transform: translateY(-50%);
  cursor: pointer;
  color: var(--text-disabled);
  font-size: 14px;
  transition: color var(--transition-fast);
}
 
#pass_occhio:hover {
  color: var(--text-secondary);
}
 
/* Wrapper input password con icona */
#divcont_pass {
  position: relative;
}
 
#divcont_pass .form_input {
  padding-right: var(--space-10);
}
 
/* Link recupero password */
#link-rec-pwd {
  display: block;
  font-size: var(--font-size-body-small);
  color: var(--interactive-primary);
  text-decoration: none;
  margin-top: calc(-1 * var(--space-2));
  margin-bottom: var(--space-5);
  transition: color var(--transition-fast);
}
 
#link-rec-pwd:hover {
  color: var(--interactive-primary-hover);
  text-decoration: underline;
}
 
/* Errori validazione */
.modal-body .show-error.error {
  font-size: var(--font-size-body-small);
  color: #e53e3e;
  margin-bottom: var(--space-3);
}
 
/* Legenda nascosta */
.modal-body .form_legend {
  display: none;
}
 
/* Intestazione form nascosta se vuota */
.modal-body .testata-principale:empty {
  display: none;
}

/* ============================================================
   PAGINA: Visualizzatore articolo (VIS_ART)

   Attivato da: body.pagina_interna.VIS_ART

   STRUTTURA HTML:
   <body class="pagina_interna VIS_ART">
     <div id="slogan-header-int">   ← immagine hero con overlay testo
       <h1>titolo pagina</h1>       ← nascosto (duplica titolo articolo)
     </div>
     <section id="fascia_area1">
       <section class="section_vis_art"> ← articolo principale (~70%)
         <article class="vis-articolo">
           <div class="item-box tag-art">NEWS</div>
           <div class="item-box art_title">...</div>
           <div class="item-box art_subtitle">...</div>
           <div class="item-box first-img-articolo">...</div>
           <div class="item-box text-art">...</div>
         </article>
       </section>
       <section class="section_cont_art"> ← sidebar news (~30%)
         <div class="striscia-titolo-ist">...</div>
         <div class="bloglist">
           <div class="cont-art-element">
             <article class="vis-articolo no-images">
               <div class="item-box art_title"><a>...</a></div>
               <div class="item-box readmore"><a>...continue</a></div>
             </article>
           </div>
         </div>
       </section>
     </section>
   </body>

   OVERLAY TITOLO SU HERO:
   Tag, titolo e sottotitolo dell'articolo vengono duplicati
   nell'hero via JS (posizione CSS assoluta sull'immagine).
   Aggiungere al JS comune:
   $(document).ready(function() {
     if ($('body').hasClass('VIS_ART')) {
       var tag     = $('.section_vis_art .item-box.tag-art').clone();
       var titolo  = $('.section_vis_art .item-box.art_title').clone();
       var sottot  = $('.section_vis_art .item-box.art_subtitle').clone();
       var overlay = $('<div class="vis-art-hero-overlay">');
       overlay.append(tag).append(titolo).append(sottot);
       $('#slogan-header-int').append(overlay);
     }
   });
   ============================================================ */


/* ------------------------------------------------------------
   HERO — immagine di pagina con overlay
   ------------------------------------------------------------ */

body.pagina_interna.VIS_ART #slogan-header-int {
  position: relative;
  height: 380px !important;  /* sovrascrive lo style inline */
  display: flex;
  align-items: center;
  overflow: hidden;
  /* Gradiente scuro tendente al blu — stesso registro di bg-gradient-2 */
  background-blend-mode: multiply;
}

/* Gradiente scuro blu su tutta l'immagine */
body.pagina_interna.VIS_ART #slogan-header-int::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    135deg,
    rgba(19, 49, 68, 0.88) 0%,
    rgba(30, 34, 39, 0.80) 100%
  );
  z-index: 1;
}

/* Titolo h1 generato dal CMS — nascosto */
body.pagina_interna.VIS_ART #slogan-header-int > h1 {
  display: none;
}

/* Overlay — allineato a sinistra, centrato verticalmente */
.vis-art-hero-overlay {
	position: relative;
	z-index: 2;
	/* padding-inline: max(var(--space-6), calc((100vw - var(--container-max-width)) / 2)); */
	padding-block: var(--space-12);
	width: 100%;
	max-width: 1050px;
}

/* Tag — testo uppercase senza sfondo */
.vis-art-hero-overlay .item-box.tag-art span {
  display: inline-block;
  font-size: var(--font-size-abstract);
  font-weight: var(--font-weight-medium);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.7);
  margin-bottom: var(--space-4);
}

/* Titolo — grande e bold */
.vis-art-hero-overlay .item-box.art_title .arttitle {
  font-size: var(--font-size-h1-huge);
  font-weight: var(--font-weight-bold);
  color: var(--primitive-white);
  line-height: var(--line-height-heading);
  margin-bottom: var(--space-4);
}

/* Sottotitolo */
.vis-art-hero-overlay .item-box.art_subtitle .arttitle {
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-regular);
  color: rgba(255, 255, 255, 0.75);
  line-height: var(--line-height-body);
}


/* ------------------------------------------------------------
   LAYOUT PRINCIPALE — articolo + sidebar
   ------------------------------------------------------------ */

body.pagina_interna.VIS_ART #fascia_area1 {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: var(--gap-xl);
  max-width: var(--container-max-width);
  margin-inline: auto;
  padding-inline: var(--container-padding);
  padding-block: var(--space-12);
}

/* Articolo principale — 70% */
body.pagina_interna.VIS_ART #fascia_area1 > .section_vis_art {
  flex: 1 1 0;
  min-width: 0;
}

/* Rimuove il container interno per evitare doppio padding */
body.pagina_interna.VIS_ART .section_vis_art:not(.in_cont_art) > .container {
  padding: 0;
  max-width: none;
}

/* Sidebar news — 30% */
body.pagina_interna.VIS_ART #fascia_area1 > .section_cont_art {
  flex: 0 0 280px;
  min-width: 0;
  position: sticky;
  top: calc(var(--space-4) + 80px);
}

body.pagina_interna.VIS_ART .section_cont_art > .container {
  padding: 0;
  max-width: none;
}


/* ------------------------------------------------------------
   ARTICOLO PRINCIPALE — override spaziature
   ------------------------------------------------------------ */

body.pagina_interna.VIS_ART .section_vis_art:not(.in_cont_art) article.vis-articolo {
  padding-block: 0;
}

/* Tag articolo — nascosto nell'articolo (duplicato nell'hero) */
body.pagina_interna.VIS_ART .section_vis_art:not(.in_cont_art) .item-box.tag-art {
  display: none;
}

/* Titolo e sottotitolo — nascosti nell'articolo (duplicati nell'hero) */
body.pagina_interna.VIS_ART .section_vis_art:not(.in_cont_art) .item-box.art_title,
body.pagina_interna.VIS_ART .section_vis_art:not(.in_cont_art) .item-box.art_subtitle {
  display: none;
}

/* Immagine principale articolo */
body.pagina_interna.VIS_ART .section_vis_art:not(.in_cont_art) .item-box.first-img-articolo {
  margin-bottom: var(--space-8);
}

body.pagina_interna.VIS_ART .section_vis_art:not(.in_cont_art) .item-box.first-img-articolo img {
  width: 100%;
  height: auto;
  border-radius: var(--radius-md);
}

/* Testo articolo */
body.pagina_interna.VIS_ART .section_vis_art:not(.in_cont_art) .item-box.text-art {
  font-size: var(--font-size-body);
  line-height: var(--line-height-body);
  color: var(--text-primary);
}

body.pagina_interna.VIS_ART .section_vis_art:not(.in_cont_art) .item-box.text-art p {
  margin-bottom: var(--space-5);
}

body.pagina_interna.VIS_ART .section_vis_art:not(.in_cont_art) .item-box.text-art img {
  max-width: 100%;
  height: auto;
  border-radius: var(--radius-sm);
  margin-block: var(--space-4);
}

/* CTA contact us nel testo */
body.pagina_interna.VIS_ART .section_vis_art:not(.in_cont_art) .puls_request_info {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--letter-spacing-nav);
  padding: var(--space-3) var(--space-6);
  border-radius: var(--radius-sm);
  border: 1px solid var(--interactive-primary);
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
  text-decoration: none;
  transition: background-color var(--transition-fast);
  margin-top: var(--space-2);
}

body.pagina_interna.VIS_ART .section_vis_art:not(.in_cont_art) .puls_request_info:hover {
  background-color: var(--interactive-primary-hover);
  color: var(--primitive-white);
}


/* ------------------------------------------------------------
   SIDEBAR NEWS — titolo + lista articoli
   ------------------------------------------------------------ */

body.pagina_interna.VIS_ART .section_cont_art .striscia-titolo-ist {
  text-align: left;
  margin-bottom: var(--space-6);
}

body.pagina_interna.VIS_ART .section_cont_art .striscia-titolo-ist .istanza_titolo {
  font-size: var(--font-size-abstract);
  font-weight: var(--font-weight-medium);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-secondary);
  margin: 0;
}

/* Lista articoli nella sidebar */
body.pagina_interna.VIS_ART .section_cont_art .bloglist {
  display: flex;
  flex-direction: column;
  gap: var(--gap-sm);
}

/* Ogni articolo in un card con bordo */
body.pagina_interna.VIS_ART .section_cont_art .cont-art-element {
  background-color: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  padding: var(--space-5);
}

/* Articolo sidebar */
body.pagina_interna.VIS_ART .section_cont_art article.vis-articolo {
  padding: 0;
}

/* Nasconde container interni sidebar */
body.pagina_interna.VIS_ART .section_cont_art .section_vis_art > .container {
  padding: 0;
  max-width: none;
}

body.pagina_interna.VIS_ART .section_cont_art .item-box.art_title {
  margin-bottom: var(--space-3);
}

body.pagina_interna.VIS_ART .section_cont_art .item-box.art_title .arttitle {
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-body);
  margin: 0;
}

body.pagina_interna.VIS_ART .section_cont_art .item-box.art_title a {
  color: var(--text-primary);
  text-decoration: none;
  transition: color var(--transition-fast);
}

body.pagina_interna.VIS_ART .section_cont_art .item-box.art_title a:hover {
  color: var(--interactive-primary);
}

/* CTA "Read more →" */
body.pagina_interna.VIS_ART .section_cont_art .item-box.readmore {
  margin-top: var(--space-2);
}

body.pagina_interna.VIS_ART .section_cont_art .item-box.readmore a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  color: var(--interactive-primary);
  text-decoration: none;
  transition: color var(--transition-fast),
              gap var(--transition-fast);
}

body.pagina_interna.VIS_ART .section_cont_art .item-box.readmore a::after {
  content: '→';
  display: inline-block;
  transition: transform var(--transition-fast);
}

body.pagina_interna.VIS_ART .section_cont_art .item-box.readmore a:hover {
  color: var(--interactive-primary-hover);
  gap: var(--space-2);
}

body.pagina_interna.VIS_ART .section_cont_art .item-box.readmore a:hover::after {
  transform: translateX(3px);
}


/* ------------------------------------------------------------
   RESPONSIVE — 992px = --bp-lg
   ------------------------------------------------------------ */

@media (max-width: 992px) {
  body.pagina_interna.VIS_ART #fascia_area1 {
    flex-direction: column;
    gap: var(--gap-lg);
  }

  body.pagina_interna.VIS_ART #fascia_area1 > .section_cont_art {
    flex: 0 0 100%;
    position: static;
    border-top: 1px solid var(--border-default);
    padding-top: var(--space-8);
  }

  body.pagina_interna.VIS_ART #slogan-header-int {
    height: 280px !important;
  }

  .vis-art-hero-overlay .item-box.art_title .arttitle {
    font-size: var(--font-size-h2);
  }
}

/* Mobile — 576px = --bp-sm */
@media (max-width: 576px) {
  body.pagina_interna.VIS_ART #slogan-header-int {
    height: 220px !important;
  }

  body.pagina_interna.VIS_ART #fascia_area1 {
    padding-inline: var(--space-4);
  }

  .vis-art-hero-overlay {
    padding: var(--space-4);
  }
}
 
 
/* ------------------------------------------------------------
   BOTTONE SUBMIT
   ------------------------------------------------------------ */
 
.modal-body .actions_link {
  margin-top: var(--space-6);
}
 
.modal-body .actions_link .bottone {
  width: 100%;
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--letter-spacing-nav);
  padding: var(--space-3) var(--space-6);
  border-radius: var(--radius-sm);
  border: none;
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
  cursor: pointer;
  transition: background-color var(--transition-fast);
}
 
.modal-body .actions_link .bottone:hover {
  background-color: var(--interactive-primary-hover);
}
 
.modal-body .actions_link .bottone:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
 
 
/* ------------------------------------------------------------
   SEPARATORE E LINK REGISTRAZIONE
   ------------------------------------------------------------ */
 
.modal-body hr {
  border: none;
  border-top: 1px solid var(--border-default);
  margin-block: var(--space-6);
}
 
#link_pulsante_registrazione {
  display: block;
  text-align: center;
  font-size: var(--font-size-body-small);
  color: var(--interactive-primary);
  text-decoration: none;
  transition: color var(--transition-fast);
}
 
#link_pulsante_registrazione:hover {
  color: var(--interactive-primary-hover);
  text-decoration: underline;
}
 
/* Nasconde link registrazione se vuoto */
#link_pulsante_registrazione:empty {
  display: none;
}
 


/* ============================================================
   COMPONENTE: Form generico (.webform)

   Wrapper generico per tutti i form del sito.
   Non sovrappone il form login (scoped sotto .modal-body).
   ============================================================ */

.webform {
  /* max-width: 640px; */
  margin-inline: auto;
  padding-block: var(--space-4);
}

.webform h1,
.webform h2 {
  font-weight: var(--font-weight-bold);
  color: var(--text-primary);
  margin-bottom: var(--space-8);
}

.webform h1 { font-size: var(--font-size-h2); }
.webform h2 { font-size: var(--font-size-h3); }

.webform .leftcontact,
.webform .rightcontact {
  display: block;
  float: none;
  width: 100%;
  padding: 0;
  margin: 0;
}

.webform .leftcontact > div,
.webform .rightcontact > div {
  margin-bottom: var(--space-5);
}

/* .webform br { display: none; } */

.webform .red-small {
  font-size: var(--font-size-abstract);
  color: var(--text-secondary);
  margin-bottom: var(--space-6);
}

.webform .color-red { color: #e53e3e; }

.webform label {
  display: block;
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  color: var(--text-primary);
  margin-bottom: var(--space-2);
  text-align: left;
}

.webform input[type="text"],
.webform input[type="email"],
.webform input[type="tel"],
.webform input[type="number"],
.webform input[type="password"],
.webform input[type="search"],
.webform .comment-input,
.webform select {
  display: block;
  width: 100%;
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-small);
  color: var(--text-primary);
  background-color: var(--bg-page);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  padding: var(--space-3) var(--space-4);
  outline: none;
  box-sizing: border-box;
  transition: border-color var(--transition-fast),
              box-shadow var(--transition-fast);
}

.webform input[type="text"]:focus,
.webform input[type="email"]:focus,
.webform input[type="tel"]:focus,
.webform input[type="number"]:focus,
.webform input[type="password"]:focus,
.webform input[type="search"]:focus,
.webform .comment-input:focus,
.webform select:focus {
  border-color: var(--interactive-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--interactive-primary) 15%, transparent);
}

.webform input[name="indirizzo_utente"] { display: none !important; }

.webform textarea,
.webform .contact-textarea {
  display: block;
  width: 100%;
  min-height: 160px;
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-small);
  color: var(--text-primary);
  background-color: var(--bg-page);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  padding: var(--space-3) var(--space-4);
  outline: none;
  resize: vertical;
  box-sizing: border-box;
  transition: border-color var(--transition-fast),
              box-shadow var(--transition-fast);
}

.webform textarea:focus,
.webform .contact-textarea:focus {
  border-color: var(--interactive-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--interactive-primary) 15%, transparent);
}

.webform input::placeholder,
.webform textarea::placeholder {
  color: var(--text-disabled);
  font-size: var(--font-size-body-small);
}


/* ------------------------------------------------------------
   CAPTCHA — altcha widget
   ------------------------------------------------------------ */

.webform .altcha_captcha {
  margin-top: var(--space-6);
}

.webform altcha-widget {
  --altcha-border-width: 1px;
  --altcha-border-color: var(--border-default);
  --altcha-border-radius: var(--radius-sm);
  --altcha-color-base: var(--bg-page);
  --altcha-color-text: var(--text-primary);
  --altcha-color-border-focus: var(--interactive-primary);
  --altcha-color-brand: var(--interactive-primary);
  display: block;
  width: 100%;
}


/* ------------------------------------------------------------
   PRIVACY
   ------------------------------------------------------------ */

.webform #read_privacy {
  display: inline-block;
  font-size: var(--font-size-body-small);
  color: var(--interactive-primary);
  text-decoration: none;
  margin-block: var(--space-4);
  transition: color var(--transition-fast);
}

.webform #read_privacy:hover {
  color: var(--interactive-primary-hover);
  text-decoration: underline;
}
.webform #privacy_text,
.webform #div_read_privacy {
  font-size: var(--font-size-body-small);
  margin: var(--gap-md) 0;
}

.webform #div_privacy,
.webform #divcont__privacy {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  margin-top: var(--space-2);
  margin-bottom: var(--space-6);
}

/* Override necessario: il selettore generico sopra imposta
   display:block e width:100% su tutti gli input */
.webform #div_privacy input[type="checkbox"].privacy,
.webform #divcont__privacy input[type="checkbox"].privacy {
  -webkit-appearance: checkbox;
  appearance: checkbox;
  display: inline-block !important;
  width: 16px !important;
  height: 16px;
  flex-shrink: 0;
  margin-top: 2px;
  padding: 0 !important;
  border: none !important;
  box-shadow: none !important;
  background: none !important;
  cursor: pointer;
  accent-color: var(--interactive-primary);
}

.webform #div_privacy input[type="checkbox"].privacy:focus,
.webform #divcont__privacy input[type="checkbox"].privacy:focus {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--interactive-primary) 15%, transparent) !important;
  outline: none;
}

.webform #label_privacy {
  font-size: var(--font-size-body-small);
  color: var(--text-secondary);
  line-height: var(--line-height-body);
  cursor: pointer;
  font-weight: var(--font-weight-regular);
}

/* Overlay e div privacy — gestiti dal CMS, sempre nascosti */
.webform #overlay,
.webform #privacy { display: none !important; }


/* ------------------------------------------------------------
   SUBMIT
   ------------------------------------------------------------ */

.webform .submitbutton { margin-top: var(--space-8); }

.webform .submitbutton input[type="submit"],
.webform .actions_link button[type="submit"],
.webform .submitbutton .bottone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--letter-spacing-nav);
  padding: var(--space-3) var(--space-8);
  border-radius: var(--radius-sm);
  border: 1px solid var(--interactive-primary);
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
  cursor: pointer;
  transition: background-color var(--transition-fast),
              border-color var(--transition-fast);
}
.webform .submitbutton .bottone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-family-base);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--letter-spacing-nav);
  padding: var(--space-3) var(--space-8);
  border-radius: var(--radius-sm);
  border: 1px solid var(--interactive-primary);
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
  cursor: pointer;
  transition: background-color var(--transition-fast),
              border-color var(--transition-fast);
}

.webform .submitbutton input[type="submit"]:hover,
.webform .submitbutton .bottone:hover {
  background-color: var(--interactive-primary-hover);
  border-color: var(--interactive-primary-hover);
}

.webform .submitbutton input[type="submit"]:disabled,
.webform .submitbutton .bottone:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ------------------------------------------------------------
   FILE INPUT — .c_d_inputfile
   Nasconde l'input nativo e usa la label come area cliccabile
   ------------------------------------------------------------ */

.webform .c_d_inputfile {
  margin-bottom: var(--space-5);
}

/* Nasconde input nativo */
.webform .c_d_inputfile input[type="file"] {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  /* override display:block del webform generico */
  display: block !important;
  padding: 0 !important;
  border: none !important;
  box-shadow: none !important;
}

/* Label come area drop / click */
.webform .c_d_inputfile label {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-6) var(--space-4);
  border: 2px dashed var(--border-default);
  border-radius: var(--radius-md);
  background-color: var(--bg-section-light);
  cursor: pointer;
  text-align: center;
  transition: border-color var(--transition-fast),
              background-color var(--transition-fast);
  margin-bottom: 0;
  margin-top: var(--gap-md);
  font-weight: var(--font-weight-regular);
}

.webform .c_d_inputfile label:hover {
  border-color: var(--interactive-primary);
  background-color: color-mix(in srgb, var(--interactive-primary) 5%, transparent);
}

/* Testo descrizione */
.webform .c_d_inputfile .inputfile-text {
  font-size: var(--font-size-abstract);
  color: var(--text-secondary);
  line-height: var(--line-height-body);
}

/* Bottone "choose a file" */
.webform .c_d_inputfile .button_browser {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  color: var(--interactive-primary);
  border: 1px solid var(--interactive-primary);
  border-radius: var(--radius-sm);
  padding: var(--space-2) var(--space-4);
  transition: background-color var(--transition-fast),
              color var(--transition-fast);
}

.webform .c_d_inputfile label:hover .button_browser {
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
}

/* Icona upload via FA7 */
.webform .c_d_inputfile .button_browser::before {
  content: '\f574'; /* fa-file-arrow-up */
  font-family: 'Font Awesome 7 Free';
  font-weight: 900;
  font-size: 13px;
}

.webform .c_d_inputfile .selected-files {
  font-size: var(--font-size-abstract);
  color: var(--text-secondary);
  min-height: 1em;
}

.webform .c_d_inputfile .selected-files:not(:empty) {
  color: var(--interactive-primary);
  font-weight: var(--font-weight-medium);
}
.webform .c_d_inputfile .remove-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  font-size: 10px;
  font-weight: var(--font-weight-bold);
  font-family: var(--font-family-base);
  color: var(--primitive-white);
  background-color: var(--text-disabled);
  border-radius: var(--radius-full);
  cursor: pointer;
  text-decoration: none;
  line-height: 1;
  flex-shrink: 0;
  transition: background-color var(--transition-fast);
  margin-left: var(--space-2);
}

.webform .c_d_inputfile .remove-button:hover {
  background-color: #e53e3e;
  text-decoration: none;
}


/* ------------------------------------------------------------
   CHECKBOX CONDIZIONI — .c_d_conditions
   ------------------------------------------------------------ */

.webform .c_d_conditions {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: var(--space-3);
  margin-bottom: var(--space-5);
}

.webform .c_d_conditions .form_label {
  margin-bottom: 0;
  cursor: pointer;
  order: 2;
}

.webform .c_d_conditions .checkbox_slideThree {
  order: 1;
  flex-shrink: 0;
  margin-top: 1px; /* allineamento ottico con prima riga testo */
}

/* Ripristina checkbox nativo — annulla il toggle switch */
.webform .c_d_conditions .checkbox_slideThree input[type="checkbox"] {
  position: static !important;
  width: 16px !important;
  height: 16px !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  display: inline-block !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  cursor: pointer;
  accent-color: var(--interactive-primary);
  -webkit-appearance: checkbox;
  appearance: checkbox;
}

/* Nasconde la label vuota del toggle */
.webform .c_d_conditions .checkbox_slideThree label {
  display: none;
}

/* .webform .c_d_required > label::after { */
.c_l_required::after {
  content: ' *';
  color: #e53e3e;
  font-weight: var(--font-weight-bold);
}


/* ------------------------------------------------------------
   MESSAGGI ESITO
   ------------------------------------------------------------ */

.webform .success {
  display: none;
  margin-top: var(--space-6);
  padding: var(--space-4) var(--space-5);
  background-color: color-mix(in srgb, #38a169 12%, transparent);
  border: 1px solid #38a169;
  border-radius: var(--radius-sm);
  font-size: var(--font-size-body-small);
  color: #276749;
  font-weight: var(--font-weight-medium);
}

.webform .error.show-error:not(:empty) {
  margin-top: var(--space-4);
  padding: var(--space-4) var(--space-5);
  background-color: color-mix(in srgb, #e53e3e 10%, transparent);
  border: 1px solid #e53e3e;
  border-radius: var(--radius-sm);
  font-size: var(--font-size-body-small);
  color: #c53030;
  font-weight: var(--font-weight-medium);
}

/* Campi con errore di validazione */
.webform input.error,
.webform select.error,
.webform textarea.error {
  border-color: #e53e3e;
  box-shadow: 0 0 0 3px color-mix(in srgb, #e53e3e 15%, transparent);
}

.webform input.error:focus,
.webform select.error:focus,
.webform textarea.error:focus {
  border-color: #e53e3e;
  box-shadow: 0 0 0 3px color-mix(in srgb, #e53e3e 20%, transparent);
}

/* Radio e checkbox: evidenzia il wrapper, non l'elemento nativo */
.webform .input_element:has(input[type="radio"].error),
.webform .input_element:has(input[type="checkbox"].error) {
  border: 1px solid #e53e3e;
  border-radius: var(--radius-sm);
  padding: var(--space-2) var(--space-3);
  background-color: color-mix(in srgb, #e53e3e 5%, transparent);
}

/* ------------------------------------------------------------
   RADIO GROUP — .div_cont_input_radio
   ------------------------------------------------------------ */

.webform .div_cont_input_radio {
  margin-bottom: var(--space-5);
}

/* Label domanda */
.webform .div_cont_input_radio .p_label_radio {
  font-size: var(--font-size-body-small);
  font-weight: var(--font-weight-medium);
  color: var(--text-primary);
  margin-bottom: var(--space-3);
}

/* Wrapper opzioni in riga */
.webform .divcont_elem {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--gap-sm);
}

/* Singola opzione radio */
.webform .divcont_elem .input_element {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: 0;
}

/* Input radio nativo — override display:block del webform */
.webform input[type="radio"].form_radio {
  -webkit-appearance: radio;
  appearance: radio;
  display: inline-block !important;
  width: 16px !important;
  height: 16px !important;
  flex-shrink: 0;
  padding: 0 !important;
  border: none !important;
  box-shadow: none !important;
  background: none !important;
  cursor: pointer;
  accent-color: var(--interactive-primary);
  margin-top: 0;
}

/* Label testo opzione */
.webform .form_radio_text {
  font-size: var(--font-size-body-small);
  color: var(--text-secondary);
  cursor: pointer;
  font-weight: var(--font-weight-regular);
  transition: color var(--transition-fast);
}

.webform input[type="radio"].form_radio:checked + .form_radio_text {
  color: var(--text-primary);
  font-weight: var(--font-weight-medium);
}

/* ------------------------------------------------------------
   RESPONSIVE — 576px = --bp-sm
   ------------------------------------------------------------ */

@media (max-width: 576px) {
  .webform {
    padding-block: var(--space-10);
    padding-inline: var(--space-2);
  }
}



/* ============================================================
   ALLEGATI ARTICOLO — .item-box.authorbox
   Lista file scaricabili in coda all'articolo
   ============================================================ */
 
article.vis-articolo .item-box.authorbox {
  margin: var(--space-10) 0;
  padding: var(--space-6) 0;
  border-top: 1px solid var(--border-default);
}
 
article.vis-articolo .item-box.authorbox .checklist {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
 
/* Singola riga allegato */
article.vis-articolo .item-box.authorbox .item-allegato {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}
 
article.vis-articolo .item-box.authorbox .item-allegato a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-3);
  font-size: var(--font-size-desc);
  font-weight: var(--font-weight-medium);
  color: var(--interactive-primary);
  text-decoration: none;
  transition: color var(--transition-fast);
}
 
article.vis-articolo .item-box.authorbox .item-allegato a:hover {
  color: var(--interactive-primary-hover);
  text-decoration: underline;
}
 
/* Icona file — l'img del CMS viene nascosta,
   sostituita da icona FA7 via pseudo-element */
article.vis-articolo .item-box.authorbox .icon-download {
  display: none;
}
 
article.vis-articolo .item-box.authorbox .item-allegato a::before {
  content: '\f56d'; /* fa-file-arrow-down */
  font-family: 'Font Awesome 7 Free';
  font-weight: 900;
  font-size: 16px;
  color: var(--interactive-primary);
  flex-shrink: 0;
}
 
/* Dimensione file */
article.vis-articolo .item-box.authorbox .dim-allegato {
  font-size: var(--font-size-abstract);
  color: var(--text-secondary);
  white-space: nowrap;
}
 
/* Mobile — 576px = --bp-sm */
@media (max-width: 576px) {
  article.vis-articolo .item-box.authorbox .item-allegato {
    flex-wrap: wrap;
  }
}
 

/* ============================================================
   NEWSLETTER PREFERENCES — .choose_newsletter_form
   Lista di toggle per le distribution list + azioni
   ============================================================ */

.choose_newsletter_form {
  max-width: 560px;
  margin-inline: auto;
  padding-block: var(--space-16);
  text-align: left;   /* annulla il .text-center del container CMS */
}

/* Titolo del form */
.choose_newsletter_form .form_legend {
  display: block;
  width: 100%;
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-bold);
  color: var(--text-primary);
  text-align: center;
  margin-bottom: var(--space-8);
  padding: 0;
  border: none;
}

.choose_newsletter_form fieldset {
  border: none;
  padding: 0;
  margin: 0;
}

.choose_newsletter_form .testata-principale:empty {
  display: none;
}


/* ------------------------------------------------------------
   LISTA DISTRIBUZIONI
   ------------------------------------------------------------ */

.choose_newsletter_form #mailinglist_type_box {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin-bottom: var(--space-8);
}

/* Riga singola: label a sinistra, toggle a destra */
.choose_newsletter_form .c_d_mailinglist_type {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gap-md);
  padding: var(--space-4) var(--space-5);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background-color: var(--bg-surface);
  transition: border-color var(--transition-fast);
}

.choose_newsletter_form .c_d_mailinglist_type:hover {
  border-color: var(--interactive-primary);
}

.choose_newsletter_form .c_d_mailinglist_type .form_label {
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-medium);
  color: var(--text-primary);
  margin: 0;
  cursor: pointer;
  flex: 1 1 auto;
}

.choose_newsletter_form .area_icone_label {
  display: none;
}


/* ------------------------------------------------------------
   TOGGLE SWITCH
   ------------------------------------------------------------ */

.choose_newsletter_form .checkbox_slideThree {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
}

.choose_newsletter_form .checkbox_slideThree input[type="checkbox"] {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.choose_newsletter_form .checkbox_slideThree label {
  display: inline-block;
  width: 44px;
  height: 24px;
  background-color: var(--border-default);
  border-radius: var(--radius-full);
  position: relative;
  cursor: pointer;
  margin: 0;
  transition: background-color var(--transition-base);
}

.choose_newsletter_form .checkbox_slideThree label::after {
  content: '';
  position: absolute;
  top: 3px;
  left: 3px;
  width: 18px;
  height: 18px;
  border-radius: var(--radius-full);
  background-color: var(--primitive-white);
  box-shadow: var(--shadow-sm);
  transition: transform var(--transition-base);
}

.choose_newsletter_form .checkbox_slideThree input:checked + label {
  background-color: var(--interactive-primary);
}

.choose_newsletter_form .checkbox_slideThree input:checked + label::after {
  transform: translateX(20px);
}

.choose_newsletter_form .checkbox_slideThree input:focus-visible + label {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--interactive-primary) 20%, transparent);
}


/* ------------------------------------------------------------
   AZIONI
   ------------------------------------------------------------ */

.choose_newsletter_form #form_argument_list_button_box {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  width: 100% !important;   /* annulla lo style inline width:fit-content */
  margin: 0 !important;
}

.choose_newsletter_form #form_argument_list_button_box .input_element {
  margin: 0;
  width: 100%;
}

.choose_newsletter_form .bottone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  float: none !important;   /* annulla .float-left del CMS */
  font-family: var(--font-family-base);
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--letter-spacing-nav);
  padding: var(--space-3) var(--space-6);
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: background-color var(--transition-fast),
              border-color var(--transition-fast),
              color var(--transition-fast);
}

/* Azione primaria — salva preferenze */
.choose_newsletter_form #form_argument_list_button_OK {
  border: 1px solid var(--interactive-primary);
  background-color: var(--interactive-primary);
  color: var(--primitive-white);
}

.choose_newsletter_form #form_argument_list_button_OK:hover {
  background-color: var(--interactive-primary-hover);
  border-color: var(--interactive-primary-hover);
}

/* Azione distruttiva — rimuovi tutto */
.choose_newsletter_form #button_reset {
  border: 1px solid var(--border-default);
  background-color: transparent;
  color: var(--text-secondary);
}

.choose_newsletter_form #button_reset:hover {
  border-color: #e53e3e;
  color: #e53e3e;
  background-color: color-mix(in srgb, #e53e3e 6%, transparent);
}

.choose_newsletter_form .clear {
  display: none;
}


/* ------------------------------------------------------------
   RESPONSIVE — 576px = --bp-sm
   ------------------------------------------------------------ */

@media (max-width: 576px) {
  .choose_newsletter_form {
    padding-block: var(--space-10);
    padding-inline: var(--space-4);
  }

  .choose_newsletter_form .c_d_mailinglist_type {
    padding: var(--space-3) var(--space-4);
  }
}

/* ============================================================
   NEWSLETTER — messaggi di esito
   ============================================================ */

.newsletter-feedback {
  max-width: 560px;
  margin-inline: auto;
  padding-block: var(--space-10);
}

#newsletter_success,
#newsletter_error {
  padding: var(--space-5) var(--space-6);
  border-radius: var(--radius-md);
  border: 1px solid;
  font-size: var(--font-size-body);
  line-height: var(--line-height-body);
}

#newsletter_success h3,
#newsletter_error h3 {
  font-size: var(--font-size-title);
  font-weight: var(--font-weight-bold);
  margin: 0 0 var(--space-2) 0;
  color: inherit;
}

/* Successo */
#newsletter_success {
  background-color: color-mix(in srgb, #38a169 10%, transparent);
  border-color: #38a169;
  color: #276749;
}

/* Errore */
#newsletter_error {
  background-color: color-mix(in srgb, #e53e3e 10%, transparent);
  border-color: #e53e3e;
  color: #c53030;
}

/* Nasconde i box vuoti */
#newsletter_success:empty,
#newsletter_error:empty {
  display: none !important;
}

/* Nasconde il wrapper se entrambi vuoti */
.newsletter-feedback:not(:has(#newsletter_success:not(:empty))):not(:has(#newsletter_error:not(:empty))) {
  display: none;
}