/* ==========================================================================
   Logica Informatica — stili globali
   Token di design, font, reset di base e sistema di layout a sezioni/colonne.
   ========================================================================== */

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

/* Roboto: usato solo nella nota di un articolo (nell'originale lo carica il plugin di accessibilità) */
@font-face {
  font-family: 'Roboto';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: local('Roboto'), url('/fonts/roboto-regular.woff2') format('woff2');
}

/* ---- Token ---------------------------------------------------------------- */
:root {
  --c-primary: #1d71b8;
  --c-secondary: #213b87;
  --c-text: #7f92a1;
  --c-accent: #fc3a78;
  --c-green: #00d69d;
  --c-orange: #ffb575;
  --c-blue: #1f50e2;
  --c-social: #2a7dd4;

  --f-title: 'Wellfleet', sans-serif;
  --f-text: 'Didact Gothic', sans-serif;
  --f-alt: 'Cabin', sans-serif;

  --container: 1100px;
  --widget-space: 20px;
}
@media (max-width: 1024px) {
  :root { --container: 1024px; }
}
@media (max-width: 767px) {
  :root { --container: 767px; }
}

/* ---- Reset e tipografia di base ------------------------------------------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}
html {
  line-height: 1.15;
  -webkit-text-size-adjust: 100%;
}
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}
body {
  margin: 0;
  font-family: var(--f-text);
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.5;
  color: var(--c-text);
  background-color: #fff;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
h1, h2, h3, h4, h5, h6 {
  margin-top: 0.5rem;
  margin-bottom: 1rem;
  font-family: inherit;
  font-weight: 500;
  line-height: 1.2;
  color: inherit;
}
h1 { font-family: var(--f-title); font-size: 1.5em; }
h2 { font-family: var(--f-title); font-size: 1em; }
h3 { font-family: var(--f-title); font-size: 1.75rem; }
h4 { font-size: 1.5rem; }
h5 { font-size: 1.25rem; }
h6 { font-size: 1rem; }
p { margin-top: 0; margin-bottom: 0.9rem; }
a {
  background-color: transparent;
  color: var(--c-primary);
  text-decoration: none;
}
b, strong { font-weight: bolder; }
small { font-size: 80%; }
img {
  border-style: none;
  height: auto;
  max-width: 100%;
}
ul, ol, li { margin-top: 0; margin-bottom: 0; }
figure { margin: 0; }
hr { box-sizing: content-box; height: 0; overflow: visible; }
[hidden], template { display: none; }

label {
  display: inline-block;
  line-height: 1;
  vertical-align: middle;
}
button, input, optgroup, select, textarea {
  font-family: inherit;
  font-size: 1rem;
  line-height: 1.5;
  margin: 0;
}
input[type='email'], input[type='number'], input[type='password'], input[type='search'],
input[type='tel'], input[type='text'], input[type='url'], select, textarea {
  width: 100%;
  color: var(--c-text);
  background-color: #f2f4f6d4;
  border: 1px solid #fff;
  border-radius: 30px;
  padding: 11px;
  transition: all 0.3s;
}
textarea { overflow: auto; resize: vertical; }
::-webkit-file-upload-button {
  -webkit-appearance: button;
  font: inherit;
}
button, [type='button'], [type='submit'] {
  display: inline-block;
  font-family: var(--f-title);
  font-size: 1em;
  font-weight: normal;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--c-primary);
  text-align: center;
  white-space: nowrap;
  user-select: none;
  background-color: transparent;
  border: 2px solid var(--c-primary);
  border-radius: 30px;
  padding: 1em 3em;
  transition: all 0.3s;
  -webkit-appearance: button;
}
button:not(:disabled), [type='button']:not(:disabled), [type='submit']:not(:disabled) { cursor: pointer; }
button:hover, button:focus-visible, [type='button']:hover, [type='submit']:hover,
[type='button']:focus-visible, [type='submit']:focus-visible {
  background-color: var(--c-primary);
  color: #fff;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.skip-link {
  position: absolute;
  top: -10000em;
  left: 0;
  z-index: 100000;
  padding: 8px 16px;
  background: #fff;
  color: var(--c-primary);
}
.skip-link:focus { top: 0; }

/* Titolo della pagina nel tema (H1): presente ma nascosto, come nell'originale */
.page-header .entry-title { display: none; }

/* ---- Sistema di layout ------------------------------------------------------
   .sec  = fascia a tutta larghezza (eventualmente con sfondo)
   .row  = contenitore flessibile; con .sec--boxed è centrato e limitato a --container
   .col  = colonna; larghezza da --w (desktop), --wt (tablet), --wm (mobile)
   .col > .stack = contenuto della colonna, con 10px di spaziatura interna
   Ogni blocco dentro .stack è separato dal successivo da --widget-space.
   Breakpoint: tablet <= 1024px, mobile <= 767px.
   --------------------------------------------------------------------------- */
.sec { position: relative; }
.sec > .row {
  display: flex;
  margin-inline: auto;
  position: relative;
}
/* Su desktop le colonne restano sulla stessa riga (e si restringono se serve); da tablet in giù vanno a capo. */
@media (max-width: 1024px) {
  .sec > .row { flex-wrap: wrap; }
}
.sec--boxed > .row { max-width: var(--container); }
.sec--middle > .row { align-items: center; }
.sec--top > .row { align-items: flex-start; }
.sec--bottom > .row { align-items: flex-end; }

.col {
  position: relative;
  display: flex;
  min-height: 1px;
  width: 100%;
}
@media (min-width: 768px) {
  .col { width: var(--w, 100%); }
}
@media (min-width: 768px) and (max-width: 1024px) {
  .col { width: var(--wt, var(--w, 100%)); }
}
@media (max-width: 767px) {
  .col { width: var(--wm, 100%); }
}
.stack {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  width: 100%;
  padding: 10px;
}
.stack--middle { align-content: center; align-items: center; }
.stack--bottom { align-content: flex-end; align-items: flex-end; }
.stack > * { width: 100%; position: relative; }
.stack > *:not(:last-child) { margin-block-end: var(--widget-space); }
.stack > .w-auto { width: auto; max-width: 100%; margin-block-end: 0; }
/* Le sezioni annidate (come le "inner section" di Elementor) non hanno lo spazio sotto dei blocchi */
.stack > .sec:not(:last-child) { margin-block-end: 0; }

/* Contenitore delle pagine senza impaginazione a sezioni (archivio news, pagina 404),
   con le stesse larghezze del tema del sito originale */
.page-main {
  width: 100%;
  margin-inline: auto;
}
@media (max-width: 575px) {
  .page-main { padding-inline: 10px; }
}
@media (min-width: 576px) {
  .page-main { max-width: 500px; }
}
@media (min-width: 768px) {
  .page-main { max-width: 600px; }
}
@media (min-width: 992px) {
  .page-main { max-width: 800px; }
}
@media (min-width: 1200px) {
  .page-main { max-width: 960px; }
}

/* Su smartphone le colonne della riga si dispongono in ordine inverso */
@media (max-width: 767px) {
  .row--reverse-m { flex-direction: column-reverse; }
}

/* Visibilità per dispositivo */
@media (min-width: 1025px) {
  .hide-d { display: none !important; }
}
@media (min-width: 768px) and (max-width: 1024px) {
  .hide-t { display: none !important; }
}
@media (max-width: 767px) {
  .hide-m { display: none !important; }
}

/* Testi e immagini dei blocchi */
.t-center { text-align: center; }
.t-right { text-align: right; }
.t-left { text-align: left; }
.media { line-height: 0; }
.media img { display: inline-block; }
.title {
  margin: 0;
  padding: 0;
  line-height: 1;
}
.prose p:last-child { margin-bottom: 0.9rem; }

/* ---- Animazioni d'ingresso (stesse durate e keyframe del sito originale) ---- */
.js [data-anim]:not(.anim-done) { visibility: hidden; }
.anim-play { animation-duration: 1.25s; animation-fill-mode: both; }
.anim-play.anim-slow { animation-duration: 2s; }
.anim-play.anim-fast { animation-duration: 0.75s; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes fadeInDown { from { opacity: 0; transform: translate3d(0, -100%, 0); } to { opacity: 1; transform: none; } }
@keyframes fadeInLeft { from { opacity: 0; transform: translate3d(-100%, 0, 0); } to { opacity: 1; transform: none; } }
@keyframes fadeInRight { from { opacity: 0; transform: translate3d(100%, 0, 0); } to { opacity: 1; transform: none; } }
@keyframes fadeInUp { from { opacity: 0; transform: translate3d(0, 100%, 0); } to { opacity: 1; transform: none; } }
@keyframes zoomIn { from { opacity: 0; transform: scale3d(0.3, 0.3, 0.3); } 50% { opacity: 1; } }
@keyframes pulse { 25% { transform: scale(1.1); } 75% { transform: scale(0.9); } }
@media (prefers-reduced-motion: reduce) {
  .anim-play { animation: none !important; }
  html * { transition-delay: 0s !important; transition-duration: 0s !important; }
}

/* Effetti al passaggio del mouse */
.hover-lift { transition: transform 0.4s; }
.hover-lift:hover { transform: translateY(-7px); }
.hover-grow { transition: transform 0.3s; }
.hover-grow:hover { transform: scale(1.1); }
.hover-pulse:hover, .hover-pulse:focus-visible {
  animation: pulse 1s linear infinite;
}

/* Separatore a puntini (larghezza, altezza e colore personalizzabili) */
.dots {
  display: flex;
  padding-block: 2px;
}
.dots__line {
  display: flex;
  width: var(--dots-width, 100%);
  min-height: var(--dots-height, 24px);
  margin: 0 auto;
  background-color: var(--dots-color, var(--c-primary));
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='xMidYMid meet' overflow='visible' height='100%25' viewBox='0 0 126 26' fill='black' stroke='none'%3E%3Cpath d='M3,10.2c2.6,0,2.6,2,2.6,3.2S4.4,16.5,3,16.5s-3-1.4-3-3.2S0.4,10.2,3,10.2z M18.8,10.2c1.7,0,3.2,1.4,3.2,3.2s-1.4,3.2-3.2,3.2c-1.7,0-3.2-1.4-3.2-3.2S17,10.2,18.8,10.2z M34.6,10.2c1.5,0,2.6,1.4,2.6,3.2s-0.5,3.2-1.9,3.2c-1.5,0-3.4-1.4-3.4-3.2S33.1,10.2,34.6,10.2z M50.5,10.2c1.7,0,3.2,1.4,3.2,3.2s-1.4,3.2-3.2,3.2c-1.7,0-3.3-0.9-3.3-2.6S48.7,10.2,50.5,10.2z M66.2,10.2c1.5,0,3.4,1.4,3.4,3.2s-1.9,3.2-3.4,3.2c-1.5,0-2.6-0.4-2.6-2.1S64.8,10.2,66.2,10.2z M82.2,10.2c1.7,0.8,2.6,1.4,2.6,3.2s-0.1,3.2-1.6,3.2c-1.5,0-3.7-1.4-3.7-3.2S80.5,9.4,82.2,10.2zM98.6,10.2c1.5,0,2.6,0.4,2.6,2.1s-1.2,4.2-2.6,4.2c-1.5,0-3.7-0.4-3.7-2.1S97.1,10.2,98.6,10.2z M113.4,10.2c1.2,0,2.2,0.9,2.2,3.2s-0.1,3.2-1.3,3.2s-3.1-1.4-3.1-3.2S112.2,10.2,113.4,10.2z'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='xMidYMid meet' overflow='visible' height='100%25' viewBox='0 0 126 26' fill='black' stroke='none'%3E%3Cpath d='M3,10.2c2.6,0,2.6,2,2.6,3.2S4.4,16.5,3,16.5s-3-1.4-3-3.2S0.4,10.2,3,10.2z M18.8,10.2c1.7,0,3.2,1.4,3.2,3.2s-1.4,3.2-3.2,3.2c-1.7,0-3.2-1.4-3.2-3.2S17,10.2,18.8,10.2z M34.6,10.2c1.5,0,2.6,1.4,2.6,3.2s-0.5,3.2-1.9,3.2c-1.5,0-3.4-1.4-3.4-3.2S33.1,10.2,34.6,10.2z M50.5,10.2c1.7,0,3.2,1.4,3.2,3.2s-1.4,3.2-3.2,3.2c-1.7,0-3.3-0.9-3.3-2.6S48.7,10.2,50.5,10.2z M66.2,10.2c1.5,0,3.4,1.4,3.4,3.2s-1.9,3.2-3.4,3.2c-1.5,0-2.6-0.4-2.6-2.1S64.8,10.2,66.2,10.2z M82.2,10.2c1.7,0.8,2.6,1.4,2.6,3.2s-0.1,3.2-1.6,3.2c-1.5,0-3.7-1.4-3.7-3.2S80.5,9.4,82.2,10.2zM98.6,10.2c1.5,0,2.6,0.4,2.6,2.1s-1.2,4.2-2.6,4.2c-1.5,0-3.7-0.4-3.7-2.1S97.1,10.2,98.6,10.2z M113.4,10.2c1.2,0,2.2,0.9,2.2,3.2s-0.1,3.2-1.3,3.2s-3.1-1.4-3.1-3.2S112.2,10.2,113.4,10.2z'/%3E%3C/svg%3E");
  -webkit-mask-repeat: repeat-x;
  mask-repeat: repeat-x;
  -webkit-mask-size: auto 100%;
  mask-size: auto 100%;
}

/* Sfondo sfumato e sfocato delle sezioni con i moduli
   (posizione regolabile con --blur-pos, --blur-pos-t per tablet e --blur-pos-m per smartphone) */
.blur-bg { background-color: #7f92a10f; }
.blur-bg__overlay {
  position: absolute;
  inset: 0;
  background: url('/wp-content/uploads/2022/05/Rettangolo-114.svg') var(--blur-pos, 50% -11px) / 1100px auto no-repeat;
  opacity: 0.15;
  filter: blur(10px);
}
@media (max-width: 1024px) {
  .blur-bg__overlay { background-position: var(--blur-pos-t, 0% -242px); }
}
@media (max-width: 767px) {
  .blur-bg__overlay { background-position: var(--blur-pos-m, 0% -26px); }
}

/* Finestre (dialog) delle schede prodotto e delle posizioni aperte */
.modal {
  max-width: none;
  max-height: calc(100vh - 150px);
  margin: auto;
  padding: 0;
  overflow: auto;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 6px;
  background-color: #fff;
  color: var(--c-text);
}
/* A fine animazione non resta alcuna trasformazione (stessa resa del testo dell'originale) */
.modal[open] { animation: fadeInDown 0.75s backwards; }
/* All'apertura il fuoco va sulla finestra stessa, senza scorrere il contenuto */
.modal:focus { outline: none; }
.modal::backdrop { background: rgba(0, 0, 0, 0.5); }
.modal__body {
  position: relative;
  padding: 15px;
}
@media (prefers-reduced-motion: reduce) {
  .modal[open] { animation: none; }
}

/* Bordo inferiore "a punta" delle sezioni */
.shape-bottom {
  position: absolute;
  left: 0;
  bottom: -1px;
  z-index: 2;
  width: 100%;
  overflow: hidden;
  line-height: 0;
  direction: ltr;
  pointer-events: none;
}
.shape-bottom svg {
  display: block;
  position: relative;
  left: 50%;
  transform: translateX(-50%);
}

/* Riquadro con icona */
.ib__wrap {
  display: flex;
  flex-direction: column;
  text-align: center;
}
.ib--inline-start .ib__wrap {
  flex-direction: row;
  text-align: start;
}
.ib__icon {
  display: inline-block;
  flex: 0 0 auto;
  line-height: 0;
}
.ib__content {
  flex-grow: 1;
  width: 100%;
}
.ib__title {
  color: var(--c-primary);
  font-family: var(--f-title);
}
.ib__desc { margin: 0; }
.ib__glyph {
  display: inline-block;
  color: var(--ib-color, var(--c-green));
  font-size: 50px;
  line-height: 1;
  text-align: center;
  transition: all 0.3s;
}
/* (più specifico degli stili generali delle icone) */
.ib .ib__glyph svg {
  display: block;
  width: 1em;
  height: 1em;
}
.ib--stacked .ib__glyph {
  padding: 0.5em;
  border-radius: 50%;
  background-color: var(--ib-bg, var(--c-primary));
  color: #fff;
}
/* Al passaggio del mouse l'icona diventa blu */
.ib--default:hover .ib__glyph { color: var(--c-primary); }
@media (max-width: 767px) {
  .ib--m-block-start .ib__wrap {
    flex-direction: column;
    align-items: unset !important;
    text-align: center;
  }
  .ib--m-inline-start .ib__wrap {
    flex-direction: row;
    text-align: start;
  }
}

/* Separatore ondulato ("montagne") in cima ad alcune sezioni */
.shape-top {
  position: absolute;
  left: 0;
  width: 100%;
  overflow: hidden;
  line-height: 0;
  direction: ltr;
  top: -1px;
  pointer-events: none;
}
.shape-top svg {
  display: block;
  position: relative;
  left: 50%;
  transform: translateX(-50%);
  width: calc(100% + 1.3px);
}
