/*
Theme Name: FNM Group Child Theme
Theme URI: https://github.com/elementor/hello-theme/
Description: Hello Elementor Child is a child theme of Hello Elementor, created by Elementor team
Author: Adiacent
Author URI: https://www.adiacent.com/
Template: hello-elementor
Version: 1.0.0
Text Domain: fnm-child-theme
License: GNU General Public License v3 or later.
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Tags: flexible-header, custom-colors, custom-menu, custom-logo, editor-style, featured-images, rtl-language-support, threaded-comments, translation-ready
*/

/* =========================================================
   VARIABILI
   ========================================================= */
:root {
  /* ---------- Fluid engine ----------
     --fluid-progress vale 0px a 402px di viewport e 1px a 1728px.
     Si divide per un NUMERO (1326 = 1728 - 402), non per una lunghezza:
     la divisione px / px non è supportata da Firefox e Safari.
     Nelle formule va moltiplicato per numeri SENZA unità
     (es. 45 * var(--fluid-progress) = 0px → 45px).
     Se cambi min/max viewport, aggiorna anche il 1326. */
  --viewport-min: 402px;
  --viewport-max: 1728px;
  --fluid-progress: calc((100vw - var(--viewport-min)) / 1326);

  /* ---------- Colors ---------- */
  --fnm-color-blue: var(--e-global-color-primary, #0068B3);
  --fnm-color-black: var(--e-global-color-text, #000000);
  --fnm-color-white: var(--e-global-color-acb65ef, #FFFFFF);
  --fnm-color-green: var(--e-global-color-secondary, #007834);
  --fnm-color-light-green: var(--e-global-color-accent, #97C74A);
  --fnm-color-gray: var(--e-global-color-0e170a5, #E6E6E6);
  --fnm-color-light-gray: var(--e-global-color-cce3885, #F6F6F6);
  /* Prima puntava allo stesso global color del light-gray (cce3885).
     Se esiste un global color Elementor per il grigio scuro,
     sostituisci con var(--e-global-color-XXXXXXX, #6D6D6D). */
  --fnm-color-dark-gray: #6D6D6D;
  --fnm-color-error-onwhite: #AA0000;
  --fnm-color-error-ondark: #FFE3E3;
  --fnm-color-success-onwhite: var(--fnm-color-green);
  --fnm-color-success-ondark: #97C74A;

  /* ---------- Border radius ---------- */
  --border-radius-S: 5px;
  --border-radius-M: 10px;

  /* ---------- Line height ---------- */
  --line-height-M: 1.5;

  /* ---------- Spacing ---------- */
  --spacing-XS: 5px;
  --spacing-S: 8px;
  --spacing-M: 15px;
  --spacing-L: 30px;
  --spacing-XL: 45px;
  --spacing-XXL: 60px;
  --spacing-XXL-2: 120px;

  /* ---------- Fluid spacing ----------
     Il moltiplicatore è (max - min) senza unità */
  /* XXL → M (15 → 60) */
  --fluid-xxl: clamp(var(--spacing-M), calc(var(--spacing-M) + 45 * var(--fluid-progress)), var(--spacing-XXL));
  /* XXL-2 → XXL (60 → 120) */
  --fluid-xxl-2: clamp(var(--spacing-XXL), calc(var(--spacing-XXL) + 60 * var(--fluid-progress)), var(--spacing-XXL-2));
  /* XXL-2 → XL (45 → 120) */
  --fluid-xxl2-xl: clamp(var(--spacing-XL), calc(var(--spacing-XL) + 75 * var(--fluid-progress)), var(--spacing-XXL-2));
  /* XXL-2 → L (30 → 120) */
  --fluid-xxl2-l: clamp(var(--spacing-L), calc(var(--spacing-L) + 90 * var(--fluid-progress)), var(--spacing-XXL-2));
  /* XXL-2 → M (15 → 120) */
  --fluid-xxl2-m: clamp(var(--spacing-M), calc(var(--spacing-M) + 105 * var(--fluid-progress)), var(--spacing-XXL-2));
  /* XXL → L (30 → 60) */
  --fluid-xxl-l: clamp(var(--spacing-L), calc(var(--spacing-L) + 30 * var(--fluid-progress)), var(--spacing-XXL));
  /* XXL → 0 (0 → 60) */
  --fluid-xxl-0: clamp(0px, calc(60 * var(--fluid-progress)), var(--spacing-XXL));
  /* L → M (15 → 30) */
  --fluid-l-m: clamp(var(--spacing-M), calc(var(--spacing-M) + 15 * var(--fluid-progress)), var(--spacing-L));
  /* L → 0 (0 → 30) */
  --fluid-l-0: clamp(0px, calc(30 * var(--fluid-progress)), var(--spacing-L));

  /* ---------- Paddings ---------- */
  --padding-y-cta: clamp(11px, calc(11px + 4 * var(--fluid-progress)), 15px);
  --padding-x-cta: clamp(25px, calc(25px + 5 * var(--fluid-progress)), 30px);

  /* ---------- Typography ---------- */
  /* H1 */
  --h1-font-size: clamp(50px, calc(50px + 80 * var(--fluid-progress)), 130px);
  --h1-line-height: clamp(48px, calc(48px + 72 * var(--fluid-progress)), 120px);
  --h1-letter-spacing: clamp(-2.6px, calc(-1px - 1.6 * var(--fluid-progress)), -1px);

  /* H2 */
  --h2-font-size: clamp(33px, calc(33px + 37 * var(--fluid-progress)), 70px);
  --h2-line-height: clamp(37px, calc(37px + 38 * var(--fluid-progress)), 75px);
  --h2-letter-spacing: clamp(-1.4px, calc(-0.66px - 0.74 * var(--fluid-progress)), -0.66px);

  /* H3 */
  --h3-font-size: clamp(21px, calc(21px + 9 * var(--fluid-progress)), 30px);
  --h3-line-height: clamp(25px, calc(25px + 12 * var(--fluid-progress)), 37px);
  --h3-letter-spacing: clamp(-0.6px, calc(-0.42px - 0.18 * var(--fluid-progress)), -0.42px);

  /* Body */
  --body-font-size: clamp(18px, calc(18px + 6 * var(--fluid-progress)), 24px);
  --body-line-height: clamp(24px, calc(24px + 8 * var(--fluid-progress)), 32px);
  --body-letter-spacing: clamp(-0.24px, calc(-0.18px - 0.06 * var(--fluid-progress)), -0.18px);

  /* Body 2 */
  --body2-font-size: clamp(15px, calc(15px + 4 * var(--fluid-progress)), 19px);
  --body2-line-height: clamp(21px, calc(21px + 6 * var(--fluid-progress)), 27px);
  --body2-letter-spacing: clamp(-0.19px, calc(-0.15px - 0.04 * var(--fluid-progress)), -0.15px);

  /* Body 3 */
  --body3-font-size: clamp(12px, calc(12px + 3 * var(--fluid-progress)), 15px);
  --body3-line-height: clamp(16px, calc(16px + 4 * var(--fluid-progress)), 20px);
  --body3-letter-spacing: clamp(-0.15px, calc(-0.12px - 0.03 * var(--fluid-progress)), -0.12px);

  /* Cta */
  --cta-font-size: clamp(16px, calc(16px + 3 * var(--fluid-progress)), 19px);
  --cta-line-height: clamp(23px, calc(23px + 1 * var(--fluid-progress)), 24px);
  --cta-letter-spacing: clamp(-0.19px, calc(-0.16px - 0.03 * var(--fluid-progress)), -0.16px);

  /* Tag */
  --tag-font-size: clamp(12px, calc(12px + 3 * var(--fluid-progress)), 15px);
  --tag-line-height: clamp(13px, calc(13px + 4 * var(--fluid-progress)), 17px);
  --tag-letter-spacing: clamp(1.32px, calc(1.32px + 0.33 * var(--fluid-progress)), 1.65px);

  /* Footer */
  --footer-font-size: clamp(15px, calc(15px + 4 * var(--fluid-progress)), 19px);
  --footer-line-height: clamp(17px, calc(17px + 6 * var(--fluid-progress)), 23px);
  --footer-letter-spacing: clamp(-0.19px, calc(-0.15px - 0.04 * var(--fluid-progress)), -0.15px);

  /* Dropdown */
  --dropdown-arrow-size: clamp(24px, calc(32px - 8 * var(--fluid-progress)), 32px);

  /* Input */
  --input-height: clamp(57px, calc(57px + 5 * var(--fluid-progress)), 62px);}


/* =========================================================
   UTILITY CONTAINER
   ========================================================= */
.no-padding-top > .e-con-inner {
  padding-top: 0 !important;
}

.no-padding-bottom > .e-con-inner {
  padding-bottom: 0 !important;
}

.padding-bottom-xxl > .e-con-inner {
  padding-bottom: var(--spacing-XXL) !important;
}


/* =========================================================
   CTA - LINK
   ========================================================= */
main a:not(.elementor-button),
main .underline-link a {
  opacity: 1;
  transition: opacity .3s ease, color .3s ease;
}

main a:not(.elementor-button):is(:hover, :focus),
main .underline-link a:is(:hover, :focus) {
  opacity: 0.7;
}

/* Link con sottolineatura animata */
main .underline-link a {
  position: relative;
}

main .underline-link a::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform: scaleX(1);
  transform-origin: left;
  transition: transform .35s ease;
}

main .underline-link a:is(:hover, :focus)::after {
  transform: scaleX(0);
  transform-origin: right;
}

main .underline-link a.elementor-button {
  background: none !important;
  border-radius: 0;
  padding: 5px 0;
}

main .underline-link a.elementor-button .elementor-button-icon {
  font-size: var(--tag-font-size);
}

main .underline-link a.elementor-button .elementor-button-icon > svg > path {
  fill: var(--fnm-color-blue);
}

/* Varianti link */
main a:not(.elementor-button).white {
  color: var(--fnm-color-white);
  border-bottom-color: var(--fnm-color-white);
}

main a:not(.elementor-button).icon {
  display: inline-block;
  padding-right: 1rem;
  background-size: 0.625rem;
  background-repeat: no-repeat;
  background-position: right center;
}

main a:not(.elementor-button).icon.external {
  background-image: url("./assets/img/icon-external.svg");
}

main a:not(.elementor-button).plus::after {
  content: "+";
  padding-left: 0.25rem;
}


/* MOBILE HAMBURGER PAGINE DETTAGLIO ARTICOLO */

.single-post button.emm-burger span {
    background: var(--e-global-color-primary) !important;
}

/* =========================================================
   CTA - BUTTON
   ========================================================= */
.elementor-widget-button .elementor-button {
  box-shadow: none;
  background-clip: padding-box;
}

/* Button 2 - variante bianca */
.elementor-widget-button.white :is(button, input[type="button"], input[type="submit"], .elementor-button):not(:is(:hover, :focus)) {
  background: transparent;
  border-color: var(--fnm-color-white);
}

.elementor-widget-button.white :is(button, input[type="button"], input[type="submit"], .elementor-button):is(:hover, :focus) {
  background-image: linear-gradient(251deg, var(--fnm-color-light-green) 1.2%, var(--fnm-color-green) 100%);
}

/* Freccia a destra */
.arrow-link svg > path:first-child {
  fill: var(--fnm-color-gray);
}

/* bottone cerca */
button.jet-search-filter__submit.apply-filters__button:is(:hover, :focus) {
    background-image: unset;
}


.btn-blue .elementor-button {
	background: transparent;
    border: 1px solid #0068b3;
    color: #0068b3;
}

.btn-blue .elementor-button:hover {
	background: #0068b3;
    border: 1px solid #0068b3;
    color: #fff;
}


/* =========================================================
   MEGA MENU
   ========================================================= */
.emm-nav .elementor-heading-title a,
.emm-panel .elementor-heading-title a {
  font-weight: 600;
}

.emm-slide-panel .e-n-accordion a {
  font-weight: 400;
}

.em-menu-item-normal.elementor-widget.elementor-widget-heading:hover,
.em-menu-item.elementor-widget.elementor-widget-heading:hover,
.em-menu-item.elementor-widget.elementor-widget-heading.active-item,
.em-submenu .elementor-widget.elementor-widget-heading:hover {
  border-radius: var(--border-radius-S);
  background: rgba(0, 104, 179, 0.10);
}


/* =========================================================
   DROPDOWN
   ========================================================= */
.fnm-dropdown select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-image: url("/wp-content/uploads/2026/09/Freccia-dropdown.svg");
  background-size: var(--dropdown-arrow-size);
  background-repeat: no-repeat;
  background-position: right 37px center;
}
.fnm-dropdown .jet-select select {
  height: var(--input-height);
}

.fnm-dropdown select:focus {
  background-image: url("/wp-content/uploads/2026/09/Freccia-dropdown-up.svg");
}

@media screen and (max-width: 767px) {
  .fnm-dropdown select {
    background-position: right 10px center;
  }
}


/* =========================================================
   INPUT
   ========================================================= */
.fnm-input .button-icon-position-right .jet-search-filter__input-wrapper {
    max-width: calc(75% - calc(30px + 24px + 30px));
    min-height: var(--input-height);
}
.fnm-input input {
    height: 100%;
}
.fnm-input input::placeholder,
.fnm-input button:hover .fa-search {
    opacity: 0.5;
}
.fnm-input button {
    background-image: none;
    display: flex;
    align-items: center;
}
.fnm-input button .fa-search {
    width: clamp(18px, calc(24px - 6 * var(--fluid-progress)), 24px);
    height: clamp(18px, calc(24px - 6 * var(--fluid-progress)), 24px);
    background-image: url(/wp-content/uploads/2026/09/icon-search.svg);
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}
.fnm-input button .fa-search:before {
    visibility: hidden;
}

@media screen and (max-width: 1024px) {
    .fnm-input .button-icon-position-right .jet-search-filter__input-wrapper {
        max-width: 100%;
    }
}


/* =========================================================
   CARD PRIMO PIANO (zoom sfondo)
   ========================================================= */
.bg-zoom-external {
  position: relative;
  overflow: hidden !important;
  aspect-ratio: 1 / 1;
  cursor: pointer;
}

.bg-zoom-external a {
  opacity: 1 !important;
}

/* Overlay scuro */
.bg-zoom-external::after {
  content: "";
  position: absolute;
  inset: 0; /* equivale a top:0; right:0; bottom:0; left:0 */
  background: var(--Black, #00060);
  opacity: 0.25;
  z-index: 1;
  pointer-events: none; /* così non blocca i click */
}


/* Variante senza overlay */
.bg-zoom-external.no-opacity {
  cursor: auto;
  border-radius: var(--border-radius-M);
}

.bg-zoom-external.no-opacity::after {
  background: transparent;
}

/* Variante verticale */
.bg-zoom-external.verticale {
  aspect-ratio: 3 / 4 !important;
}

/* Selettore con due classi: deve battere "main a:not(.elementor-button)"
   quando il contenitore interno è renderizzato come <a> (container con link) */
.bg-zoom-external .bg-zoom-internal {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  transform: scale(1);
  transition: transform 1.2s ease;
}

.bg-zoom-external:hover .bg-zoom-internal,
.bg-zoom-external:has(a:hover) .bg-zoom-internal {
  transform: scale(1.1);
}

.container-testi {
  position: relative;
  z-index: 2;
  pointer-events: none;
}

.container-testi a,
.container-testi button {
  pointer-events: auto; /* rimane cliccabile */
}



/* =========================================================
   JET COLOR IMAGE LIST
   ========================================================= */
.jet-color-image-list__button:hover,
.jet-color-image-list__button:focus {
  background-color: transparent;
  background-image: linear-gradient(255deg, var(--e-global-color-accent) -1.29%, var(--e-global-color-secondary) 132.21%);
}


/* =========================================================
   IMMAGINE MOBILE FORZATA ORIZZONTALE
   (il nome classe "image-mobile-foce" è lasciato invariato
   perché è già usato in Elementor)
   ========================================================= */
@media screen and (max-width: 767px) {
  .image-mobile-foce img {
    object-fit: cover;
    align-self: stretch;
    aspect-ratio: 342 / 228.03;
  }
}




/* =========================================================
   FORM
   ========================================================= */
form.elementor-form .elementor-field-group {
    align-content: flex-start;
}
.elementor-field-group .elementor-field-textual:focus {
    outline: -webkit-focus-ring-color auto 1px;
}
form.elementor-form .elementor-message,
.fnm-nl-footer .fnm-nl-err, .fnm-nl-footer .fnm-nl-err:before,
.elementor-field-type-acceptance .elementor-acceptance-field + label,
#mailup-privacy-text,
#mpwp-container span.error, #mpwp-container label.error,
#mpwp-container span:is(.error, .success):before, #mpwp-container label:is(.error, .success):before {
    font-size: var(--body3-font-size);
    line-height: var(--body3-line-height);
    letter-spacing: var(--body3-letter-spacing);
}
.elementor-field-type-acceptance .elementor-acceptance-field + label,
#mailup-privacy-text {
    color: inherit;
}
.elementor-field-type-acceptance .elementor-acceptance-field + label a,
#mailup-privacy-text a {
    color: inherit;
    font-size: inherit;
    line-height: inherit;
    position: relative;
    display: inline-block;
    font-weight: 600;
    text-decoration: none;
    padding-bottom: 4px;
}
.elementor-field-type-acceptance.elementor-mark-required .elementor-acceptance-field + label:before,
#mupwp-form-terms input[required] + #mailup-privacy-text:before {
    content: "*";
    padding-inline-end: .2em;
}
.elementor-field-type-acceptance .elementor-acceptance-field + label a:after,
#mailup-privacy-text a:after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 1px;
    background: currentColor;
    transform: scaleX(1);
    transform-origin: left;
    transition: transform .35s ease;
}
.elementor-field-type-acceptance .elementor-acceptance-field + label a:hover:after,
#mailup-privacy-text a:hover:after {
    transform: scaleX(0);
    transform-origin: right;
}
.elementor-mark-required .elementor-field-label:after,
.elementor-field-type-acceptance.elementor-mark-required .elementor-acceptance-field + label:before,
form.elementor-form .elementor-message.elementor-message-danger,
#mupwp-form-terms input[required] + #mailup-privacy-text:before,
#mpwp-container span.error, #mpwp-container label.error,
#mpwp-container span.error:before, #mpwp-container label.error:before {
    color: var(--fnm-color-error-onwhite);
}
.form-ondark .elementor-mark-required .elementor-field-label:after,
.form-ondark .elementor-field-type-acceptance.elementor-mark-required .elementor-acceptance-field + label:before,
.form-ondark form.elementor-form .elementor-message.elementor-message-danger {
    color: var(--fnm-color-error-ondark);
}
form.elementor-form .elementor-message.form-message-success {
    color: var(--fnm-color-success-onwhite);
}
.fnm-nl-footer .fnm-nl-err {
    color: var(--fnm-color-error-ondark);
}
.fnm-nl-footer .fnm-nl-err,
#mpwp-container span:is(.error, .success), #mpwp-container label:is(.error, .success) {
    display: flex;
    align-items: baseline;
}
.fnm-nl-footer .fnm-nl-err:before,
#mpwp-container span:is(.error, .success):before, #mpwp-container label:is(.error, .success):before {
    display: inline-block;
    font-family: eicons;
    font-style: normal;
    font-weight: 400;
    margin-inline-end: 5px;
    vertical-align: middle;
}
#mpwp-container span.success:before, #mpwp-container label.success:before {
    content: "\2714"; /* ? */
}
.fnm-nl-footer input[aria-invalid="true"] + .fnm-nl-err:before,
#mpwp-container span.error:before, #mpwp-container label.error:before {
    content: "\26A0"; /* ? */
}





/* =========================================================
   ACCESSIBILITA
   ========================================================= */
    
 /*.emm-topbar,
.emm-header--transparent {
  background-image: linear-gradient(180deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,0) 100%);
}*/

.emm-header--transparent, .emm-topbar {
  background-color: rgba(0, 0, 0, 0.01) !important;
}

.single-post .emm-header--transparent, .single-post .emm-topbar {
  background-color: transparent !important;
}
   
.bg-zoom-internal:focus-visible {
    outline: 5px solid #000000;
    outline-offset: -5px;
    border-radius: 5px;
}

/* Contorno rettangolare quando il link riceve il focus da tastiera */
.e-loop-item .elementor-heading-title:has(a:focus-visible) {
    outline: 2px solid #000000;
    outline-offset: 4px;
    border-radius: 2px;
}

/* Evita il contorno sul solo testo */
.e-loop-item .elementor-heading-title a:focus-visible {
    outline: none;
}

.elementor-icon-list-item:has(a:focus-visible) {
    outline: 2px solid #000000;
    outline-offset: 4px;
    border-radius: 2px;
}

/* Rimuove l'outline dal solo link */
.elementor-icon-list-item > a:focus-visible {
    outline: none;
}

#progetti .e-loop-item:has(a:focus-visible) {
    outline: 5px solid #000000;
    outline-offset: -5px;
    border-radius: 5px;
}