/* Plastictac — personalizzazioni sopra il tema Lexend.
   Palette presa dal tema: verde #12715B, crema #F5EEE9, scuro #101013.
   Tipografia: Graphik, gia' caricata dal tema. */

:root {
  --pt-green: #12715b;
  --pt-green-dark: #0d5544;
  --pt-green-soft: rgba(18, 113, 91, .08);
  --pt-cream: #f5eee9;
  --pt-ink: #101013;
  --pt-muted: #6b6b70;
  --pt-line: rgba(16, 16, 19, .12);
  --pt-radius: 16px;
  --pt-radius-sm: 10px;
  --pt-shadow: 0 1px 2px rgba(16, 16, 19, .04), 0 12px 32px rgba(16, 16, 19, .08);
  --pt-shadow-lg: 0 2px 4px rgba(16, 16, 19, .05), 0 24px 60px rgba(16, 16, 19, .14);
  --pt-font: Graphik, "IBM Plex Sans Arabic", -apple-system, "Segoe UI", sans-serif;
}

/* ============================================================ form wizard */

.pt-form {
  font-family: var(--pt-font);
  background: #fff;
  border: 1px solid var(--pt-line);
  border-radius: var(--pt-radius);
  box-shadow: var(--pt-shadow);
  padding: 28px;
  max-width: 640px;
  margin-inline: auto;
  text-align: left;
  position: relative;
  overflow: hidden;
}

.pt-form--compact { padding: 20px; border-radius: var(--pt-radius-sm); box-shadow: none; }

/* barra di avanzamento */
.pt-steps {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 22px;
  padding: 0;
  list-style: none;
}

.pt-steps__item {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
  min-width: 0;
}

.pt-steps__dot {
  flex: none;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 12px;
  font-weight: 500;
  color: var(--pt-muted);
  background: var(--pt-cream);
  border: 1px solid transparent;
  transition: background .25s ease, color .25s ease, border-color .25s ease;
}

.pt-steps__label {
  font-size: 12px;
  color: var(--pt-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: color .25s ease;
}

.pt-steps__bar {
  flex: 1;
  height: 2px;
  background: var(--pt-line);
  border-radius: 2px;
  position: relative;
  overflow: hidden;
}

.pt-steps__bar::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--pt-green);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .4s cubic-bezier(.4, 0, .2, 1);
}

.pt-steps__item.is-done .pt-steps__bar::after { transform: scaleX(1); }

.pt-steps__item.is-active .pt-steps__dot {
  background: #fff;
  color: var(--pt-green);
  border-color: var(--pt-green);
  box-shadow: 0 0 0 4px var(--pt-green-soft);
}

.pt-steps__item.is-active .pt-steps__label { color: var(--pt-ink); font-weight: 500; }

.pt-steps__item.is-done .pt-steps__dot { background: var(--pt-green); color: #fff; }
.pt-steps__item.is-done .pt-steps__dot::before { content: "✓"; }
.pt-steps__item.is-done .pt-steps__dot span { display: none; }

@media (max-width: 575px) {
  .pt-steps__label { display: none; }
  .pt-steps__item { flex: 1; }
}

/* i passi — senza javascript restano tutti visibili e il form invia normalmente */
.pt-steps { display: none; }
.pt-form.is-wizard .pt-steps { display: flex; }
.pt-form.is-wizard .pt-step { display: none; }
.pt-form.is-wizard .pt-step.is-current { display: block; animation: pt-step-in .32s cubic-bezier(.2, .7, .3, 1); }
.pt-form:not(.is-wizard) .pt-actions .pt-btn--nav { display: none; }

@keyframes pt-step-in {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  .pt-form.is-wizard .pt-step.is-current { animation: none; }
  .pt-steps__bar::after { transition: none; }
}

.pt-step__title {
  font-size: 20px;
  /* il tema colora gli h3: lo ridichiariamo o dentro al form sparisce */
  line-height: 1.25;
  font-weight: 700;
  color: var(--pt-ink);
  margin: 0 0 4px;
}

.pt-step__hint {
  font-size: 14px;
  color: var(--pt-muted);
  margin: 0 0 18px;
}

/* campi */
.pt-field { position: relative; margin-bottom: 14px; }

.pt-field__input,
.pt-field__textarea,
.pt-field__select {
  width: 100%;
  font-family: inherit;
  font-size: 15px;
  color: var(--pt-ink);
  background: #fff;
  border: 1px solid var(--pt-line);
  border-radius: var(--pt-radius-sm);
  padding: 22px 14px 8px;
  transition: border-color .2s ease, box-shadow .2s ease;
  appearance: none;
}

.pt-field__textarea { min-height: 116px; resize: vertical; line-height: 1.5; }

.pt-field__select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23101013' stroke-width='1.6' d='M1 1.5 6 6.5 11 1.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  padding-right: 36px;
  cursor: pointer;
}

.pt-field__label {
  position: absolute;
  left: 15px;
  top: 17px;
  font-size: 15px;
  color: var(--pt-muted);
  pointer-events: none;
  transform-origin: left top;
  transition: transform .18s ease, color .18s ease;
}

.pt-field__input:focus,
.pt-field__textarea:focus,
.pt-field__select:focus {
  outline: none;
  border-color: var(--pt-green);
  box-shadow: 0 0 0 4px var(--pt-green-soft);
}

.pt-field__input:focus + .pt-field__label,
.pt-field__input:not(:placeholder-shown) + .pt-field__label,
.pt-field__textarea:focus + .pt-field__label,
.pt-field__textarea:not(:placeholder-shown) + .pt-field__label,
.pt-field__select:focus + .pt-field__label,
.pt-field__select.has-value + .pt-field__label {
  transform: translateY(-10px) scale(.78);
  color: var(--pt-green);
}

.pt-field__textarea + .pt-field__label { top: 15px; }

.pt-field.is-invalid .pt-field__input,
.pt-field.is-invalid .pt-field__textarea,
.pt-field.is-invalid .pt-field__select {
  border-color: #c0392b;
  box-shadow: 0 0 0 4px rgba(192, 57, 43, .08);
}

.pt-field__error {
  display: none;
  font-size: 12.5px;
  color: #c0392b;
  margin: 6px 0 0 2px;
}

.pt-field.is-invalid .pt-field__error { display: block; }

.pt-field--row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 0; }
.pt-field--row > .pt-field { margin-bottom: 14px; }

@media (max-width: 575px) { .pt-field--row { grid-template-columns: 1fr; } }

/* consenso */
.pt-consent {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  font-size: 13px;
  line-height: 1.45;
  color: var(--pt-muted);
  margin: 4px 0 18px;
}

.pt-consent input[type=checkbox] {
  flex: none;
  width: 18px;
  height: 18px;
  margin-top: 1px;
  accent-color: var(--pt-green);
  cursor: pointer;
}

.pt-consent a { color: var(--pt-green); text-decoration: underline; }
.pt-consent-wrap.is-invalid .pt-consent { color: #c0392b; }

/* riepilogo */
.pt-recap {
  background: var(--pt-cream);
  border-radius: var(--pt-radius-sm);
  padding: 14px 16px;
  margin-bottom: 16px;
}

.pt-recap__row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  font-size: 13.5px;
  padding: 5px 0;
  border-bottom: 1px solid rgba(16, 16, 19, .07);
}

.pt-recap__row:last-child { border-bottom: 0; }
.pt-recap__k { color: var(--pt-muted); flex: none; }
.pt-recap__v { color: var(--pt-ink); font-weight: 500; text-align: right; word-break: break-word; }

/* azioni */
.pt-actions { display: flex; gap: 10px; align-items: center; }

.pt-btn {
  font-family: inherit;
  font-size: 15px;
  font-weight: 500;
  border-radius: 999px;
  padding: 12px 26px;
  border: 1px solid transparent;
  cursor: pointer;
  transition: background .2s ease, color .2s ease, border-color .2s ease, transform .12s ease;
}

.pt-btn:active { transform: translateY(1px); }

.pt-btn--primary { background: var(--pt-green); color: #fff; margin-left: auto; }
.pt-btn--primary:hover { background: var(--pt-green-dark); }
.pt-btn--primary[disabled] { opacity: .6; cursor: default; }

.pt-btn--ghost { background: transparent; color: var(--pt-muted); border-color: var(--pt-line); }
.pt-btn--ghost:hover { color: var(--pt-ink); border-color: var(--pt-ink); }

.pt-note { font-size: 12px; color: var(--pt-muted); margin: 14px 0 0; }

/* esito */
.pt-result { display: none; text-align: center; padding: 18px 6px; }
.pt-result.is-visible { display: block; animation: pt-step-in .32s ease; }
.pt-result__icon {
  width: 54px; height: 54px; border-radius: 50%;
  display: grid; place-items: center; margin: 0 auto 14px;
  background: var(--pt-green); color: #fff; font-size: 26px;
}
.pt-result--error .pt-result__icon { background: #c0392b; }
.pt-result__title { font-size: 19px; font-weight: 700; color: var(--pt-ink); margin: 0 0 6px; }
.pt-result__text { font-size: 14.5px; color: var(--pt-muted); margin: 0; }

.pt-form.is-sending { pointer-events: none; }
.pt-form.is-sending::after {
  content: "";
  position: absolute; inset: 0;
  background: rgba(255, 255, 255, .6);
}

/* il riepilogo esiste solo con javascript */
.pt-form:not(.is-wizard) .pt-recap { display: none; }

/* il wizard dentro il pannello del menu sta stretto */
.uc-navbar-dropdown .pt-form,
.uc-offcanvas .pt-form { border: 0; box-shadow: none; padding: 4px 0; max-width: none; }
.uc-navbar-dropdown .pt-step__title { font-size: 17px; }

/* ============================================= banner cookie (Complianz) */

#cmplz-cookiebanner-container .cmplz-cookiebanner {
  font-family: var(--pt-font) !important;
  border: 0 !important;
  border-radius: var(--pt-radius) !important;
  box-shadow: var(--pt-shadow-lg) !important;
  padding: 26px !important;
  max-width: 460px !important;
  background: #fff !important;
  overflow: hidden;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-header {
  margin-bottom: 8px !important;
  align-items: center;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-title {
  font-size: 18px !important;
  font-weight: 700 !important;
  color: var(--pt-ink) !important;
  letter-spacing: -.01em;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-message {
  font-size: 13.5px !important;
  line-height: 1.55 !important;
  color: var(--pt-muted) !important;
  margin-bottom: 16px !important;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-buttons {
  display: flex !important;
  flex-wrap: wrap;
  gap: 8px !important;
  margin-bottom: 12px !important;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn {
  font-family: inherit !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  border-radius: 999px !important;
  padding: 11px 20px !important;
  min-width: 0 !important;
  border: 1px solid transparent !important;
  transition: background .2s ease, color .2s ease, border-color .2s ease;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn.cmplz-accept {
  flex: 1 1 100%;
  background: var(--pt-green) !important;
  color: #fff !important;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn.cmplz-accept:hover {
  background: var(--pt-green-dark) !important;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn.cmplz-deny,
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn.cmplz-view-preferences {
  flex: 1 1 0;
  background: transparent !important;
  color: var(--pt-ink) !important;
  border-color: var(--pt-line) !important;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn.cmplz-deny:hover,
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn.cmplz-view-preferences:hover {
  border-color: var(--pt-ink) !important;
  background: var(--pt-cream) !important;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn.cmplz-save-preferences {
  background: var(--pt-green) !important;
  color: #fff !important;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-links {
  font-size: 12px !important;
  gap: 4px 14px;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-link,
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-documents a {
  color: var(--pt-muted) !important;
  text-decoration: none !important;
  border-bottom: 1px solid var(--pt-line);
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-link:hover,
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-documents a:hover {
  color: var(--pt-green) !important;
  border-bottom-color: var(--pt-green);
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-categories { gap: 2px; }

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-category {
  background: var(--pt-cream) !important;
  border: 0 !important;
  border-radius: var(--pt-radius-sm) !important;
  padding: 10px 12px !important;
  margin-bottom: 6px !important;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-category-title {
  font-size: 13.5px !important;
  font-weight: 500 !important;
  color: var(--pt-ink) !important;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-description {
  font-size: 12.5px !important;
  color: var(--pt-muted) !important;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-banner-checkbox .cmplz-label::before,
#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-banner-checkbox input:checked + .cmplz-label::before {
  border-radius: 999px !important;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-banner-checkbox input:checked + .cmplz-label::before {
  background-color: var(--pt-green) !important;
}

#cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-close { color: var(--pt-muted) !important; }

/* Su telefono il banner non deve superare lo schermo: si stringe ai bordi,
   i tre bottoni si impilano e il corpo scorre se il testo e' lungo. */
@media (max-width: 575px) {
  #cmplz-cookiebanner-container .cmplz-cookiebanner {
    inset-inline: 10px !important;
    bottom: 10px !important;
    width: auto !important;
    max-width: none !important;
    max-height: 86vh !important;
    padding: 20px !important;
    overflow-y: auto !important;
  }

  /* Complianz nasconde il titolo sul telefono: senza, il pannello si apre
     e non dice nemmeno di cosa sta parlando */
  #cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-title {
    display: block !important;
    font-size: 17px !important;
  }

  #cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-message {
    font-size: 13px !important;
    margin-bottom: 14px !important;
  }

  /* in colonna il wrap di Complianz creava colonne affiancate fuori schermo:
     serve nowrap, e i bottoni non devono crescere in altezza */
  #cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-buttons {
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    gap: 7px !important;
  }

  #cmplz-cookiebanner-container .cmplz-cookiebanner .cmplz-btn {
    flex: 0 0 auto !important;
    width: 100% !important;
    min-height: 0 !important;
    height: auto !important;
    padding: 12px 16px !important;
  }
}

/* il bottone flottante "Gestisci consenso" */
.cmplz-manage-consent-container #cmplz-manage-consent,
#cmplz-manage-consent {
  font-family: var(--pt-font) !important;
  border-radius: 999px 999px 0 0 !important;
  background: var(--pt-ink) !important;
  color: #fff !important;
  font-size: 12px !important;
  padding: 8px 16px !important;
  border: 0 !important;
}

/* ==================================================== selettore di lingua */

.pt-lang { position: relative; display: inline-flex; align-items: center; }

.pt-lang__list {
  display: flex;
  align-items: center;
  gap: 2px;
  list-style: none;
  margin: 0;
  padding: 3px;
  background: var(--pt-cream);
  border-radius: 999px;
}

.pt-lang__link {
  display: block;
  font-family: var(--pt-font);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--pt-muted);
  text-decoration: none;
  padding: 5px 10px;
  border-radius: 999px;
  transition: background .2s ease, color .2s ease;
}

.pt-lang__link:hover { color: var(--pt-ink); }

.pt-lang__link.is-current {
  background: #fff;
  color: var(--pt-green);
  box-shadow: 0 1px 2px rgba(16, 16, 19, .10);
}

/* Versione compatta per la barra in alto: la barra e' gia' piena, il
   selettore esteso mandava il menu a capo. Qui si vede solo la lingua
   corrente e le altre scendono in tendina, senza javascript. */
.pt-lang--compact { position: relative; }

.pt-lang__btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-family: var(--pt-font);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--pt-ink);
  background: var(--pt-cream);
  border: 0;
  border-radius: 999px;
  padding: 7px 12px;
  cursor: pointer;
  transition: background .2s ease;
}

.pt-lang__btn:hover { background: #ece2db; }

.pt-lang__caret {
  width: 0;
  height: 0;
  border-left: 3.5px solid transparent;
  border-right: 3.5px solid transparent;
  border-top: 4px solid currentColor;
  opacity: .55;
}

.pt-lang--compact .pt-lang__list {
  position: absolute;
  top: calc(100% + 6px);
  inset-inline-end: 0;
  flex-direction: column;
  gap: 1px;
  padding: 5px;
  background: #fff;
  border: 1px solid var(--pt-line);
  border-radius: 12px;
  box-shadow: var(--pt-shadow);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-4px);
  transition: opacity .18s ease, transform .18s ease, visibility .18s;
  z-index: 100;
}

.pt-lang--compact:hover .pt-lang__list,
.pt-lang--compact:focus-within .pt-lang__list {
  opacity: 1;
  visibility: visible;
  transform: none;
}

.pt-lang--compact .pt-lang__link { text-align: center; padding: 6px 14px; }

/* ================================================ pagina "Lavora con noi" */

.pt-page { font-family: var(--pt-font); color: var(--pt-ink); }

.pt-hero {
  background: var(--pt-cream);
  padding: 96px 0 72px;
  text-align: center;
}

.pt-wrap { width: min(1120px, calc(100% - 40px)); margin-inline: auto; }
.pt-wrap--narrow { width: min(760px, calc(100% - 40px)); }

.pt-eyebrow {
  font-size: 12px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--pt-green);
  font-weight: 500;
  margin: 0 0 14px;
}

.pt-hero__title {
  color: var(--pt-ink);
  font-size: clamp(30px, 5vw, 50px);
  line-height: 1.08;
  letter-spacing: -.02em;
  font-weight: 700;
  margin: 0 0 18px;
}

.pt-hero__lead {
  font-size: clamp(15px, 1.5vw, 18px);
  line-height: 1.6;
  color: var(--pt-muted);
  max-width: 620px;
  margin: 0 auto 26px;
}

.pt-hero__cta {
  display: inline-block;
  background: var(--pt-green);
  color: #fff;
  font-size: 15px;
  font-weight: 500;
  text-decoration: none;
  border-radius: 999px;
  padding: 13px 30px;
  transition: background .2s ease;
}

.pt-hero__cta:hover { background: var(--pt-green-dark); color: #fff; }

.pt-section { padding: 72px 0; }
.pt-section--cream { background: var(--pt-cream); }
.pt-section--dark { background: var(--pt-ink); color: #fff; }

.pt-section__title {
  font-size: clamp(24px, 3.2vw, 34px);
  line-height: 1.15;
  letter-spacing: -.015em;
  font-weight: 700;
  color: var(--pt-ink);
  margin: 0 0 14px;
}

.pt-section--dark .pt-section__title,
.pt-section--dark .pt-card__title,
.pt-section--dark .pt-list li { color: #fff; }

.pt-section__lead {
  font-size: 16px;
  line-height: 1.65;
  color: var(--pt-muted);
  max-width: 680px;
  margin: 0 0 36px;
}

.pt-section--dark .pt-section__lead { color: rgba(255, 255, 255, .72); }

.pt-grid { display: grid; gap: 18px; grid-template-columns: repeat(3, 1fr); }
.pt-grid--2 { grid-template-columns: repeat(2, 1fr); }

@media (max-width: 900px) { .pt-grid, .pt-grid--2 { grid-template-columns: 1fr; } }

.pt-card {
  background: #fff;
  border: 1px solid var(--pt-line);
  border-radius: var(--pt-radius);
  padding: 26px 24px;
  transition: transform .25s ease, box-shadow .25s ease;
}

.pt-card:hover { transform: translateY(-3px); box-shadow: var(--pt-shadow); }

.pt-section--cream .pt-card { border-color: transparent; }
.pt-section--dark .pt-card { background: rgba(255, 255, 255, .05); border-color: rgba(255, 255, 255, .12); }

.pt-card__num {
  font-size: 12px;
  font-weight: 500;
  color: var(--pt-green);
  letter-spacing: .1em;
  display: block;
  margin-bottom: 12px;
}

.pt-section--dark .pt-card__num { color: #6fd0b3; }

.pt-card__title { font-size: 17px; font-weight: 700; color: var(--pt-ink); margin: 0 0 8px; letter-spacing: -.01em; }
.pt-card__text { font-size: 14.5px; line-height: 1.6; color: var(--pt-muted); margin: 0; }
.pt-section--dark .pt-card__text { color: rgba(255, 255, 255, .70); }

.pt-list { list-style: none; margin: 0; padding: 0; }

.pt-list li {
  position: relative;
  padding: 12px 0 12px 30px;
  border-bottom: 1px solid var(--pt-line);
  font-size: 15.5px;
  line-height: 1.55;
}

.pt-list li:last-child { border-bottom: 0; }

.pt-list li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 19px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--pt-green);
}

.pt-zones { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }

.pt-zones li {
  font-size: 14px;
  background: #fff;
  border: 1px solid var(--pt-line);
  border-radius: 999px;
  padding: 8px 16px;
}

.pt-section--dark .pt-zones li {
  background: rgba(255, 255, 255, .06);
  border-color: rgba(255, 255, 255, .14);
  color: #fff;
}

.pt-form-section { padding: 72px 0 88px; background: var(--pt-cream); }
.pt-form-section .pt-section__title { text-align: center; }
.pt-form-section .pt-section__lead { text-align: center; margin-inline: auto; }

/* avviso lingua sulle pagine legali non tradotte: lo distingue il fondo,
   non un filetto colorato di lato */
.pt-lang-notice {
  font-family: var(--pt-font);
  background: var(--pt-cream);
  border-radius: var(--pt-radius-sm);
  padding: 14px 18px;
  /* la barra in alto e' fissa: senza questo margine la prima riga
     dell'avviso finisce nascosta sotto il logo */
  margin: 96px 0 24px;
  font-size: 14px;
  line-height: 1.55;
  color: var(--pt-muted);
}

.pt-lang-notice a { color: var(--pt-green); }

/* ======================================= barra in alto con la voce in più

   Il menu del tema era tarato sulle tre voci originali: aggiungendo "Lavora
   con noi" la somma logo + menu supera lo spazio a sinistra e la lista va a
   capo, raddoppiando l'altezza della barra. Qui stringiamo passo e margine
   quanto basta, senza toccare corpo e peso del testo. */
@media (min-width: 992px) {
  .uc-navbar-nav {
    gap: clamp(12px, 1.1vw, 24px) !important;
    margin-inline-start: clamp(14px, 1.4vw, 28px) !important;
  }
  .uc-navbar-nav .nav-links { white-space: nowrap; }
  .uc-navbar-left { flex-wrap: nowrap; }

  /* la parte destra (lingua, "Richiedi un preventivo", bottone catalogo)
     prende lo spazio che le serve e non va mai a capo: e' il menu a sinistra
     a stringersi, non i bottoni a impilarsi */
  .uc-navbar-right { flex: none; flex-wrap: nowrap; gap: 12px; }
}

/* =============================================================== la finestra

   Il richiamo al preventivo apriva una tendina larga 300 px agganciata alla
   barra: stretta da compilare e impossibile da tenere su schermi medi. Ora e'
   un <dialog>, che porta gratis la chiusura con Esc e la trappola del focus. */

.pt-modal {
  width: min(560px, calc(100vw - 32px));
  max-height: min(88vh, 780px);
  padding: 0;
  border: 0;
  border-radius: 20px;
  background: #fff;
  box-shadow: var(--pt-shadow-lg);
  overflow: visible;
}

.pt-modal::backdrop {
  background: rgba(16, 16, 19, .45);
  backdrop-filter: saturate(140%) blur(6px);
  animation: pt-fade .28s ease;
}

.pt-modal[open] { animation: pt-modal-in .34s cubic-bezier(.2, .7, .3, 1); }

@keyframes pt-fade { from { opacity: 0 } to { opacity: 1 } }

@keyframes pt-modal-in {
  from { opacity: 0; transform: translateY(14px) scale(.985); }
  to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  .pt-modal[open], .pt-modal::backdrop { animation: none; }
}

.pt-modal-aperto { overflow: hidden; }

.pt-modal__chiudi-form { margin: 0; }

.pt-modal__chiudi {
  position: absolute;
  inset-inline-end: 12px;
  top: 12px;
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  font-size: 22px;
  line-height: 1;
  color: var(--pt-muted);
  background: transparent;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
  transition: background .2s ease, color .2s ease;
  z-index: 2;
}

.pt-modal__chiudi:hover { background: var(--pt-cream); color: var(--pt-ink); }

.pt-modal__testa {
  padding: 30px 30px 0;
  font-family: var(--pt-font);
}

.pt-modal__titolo {
  font-size: 24px;
  line-height: 1.2;
  letter-spacing: -.02em;
  font-weight: 700;
  color: var(--pt-ink);
  margin: 0 0 6px;
}

.pt-modal__sottotitolo {
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--pt-muted);
  margin: 0;
}

.pt-modal .pt-form {
  border: 0;
  box-shadow: none;
  border-radius: 0;
  max-width: none;
  padding: 22px 30px 30px;
  overflow: visible;
}

.pt-modal .pt-step__title { font-size: 17px; }

@media (max-width: 575px) {
  .pt-modal { width: calc(100vw - 20px); border-radius: 16px; }
  .pt-modal__testa { padding: 24px 20px 0; }
  .pt-modal .pt-form { padding: 18px 20px 24px; }
  .pt-modal__titolo { font-size: 21px; }
}

/* Il richiamo nella barra è un pulsante, con il contorno invece del pieno:
   accanto a "Scarica il catalogo" due pill piene farebbero a gara, così
   resta chiaro qual è l'azione principale. */
.pt-navcta {
  font-family: var(--pt-font);
  font-size: 14.5px;
  font-weight: 500;
  line-height: 1;
  color: var(--pt-ink);
  background: transparent;
  border: 1px solid rgba(16, 16, 19, .22);
  border-radius: 999px;
  padding: 11px 22px;
  cursor: pointer;
  white-space: nowrap;
  transition: color .2s var(--pt-ease), border-color .2s var(--pt-ease),
              background-color .2s var(--pt-ease), transform .15s var(--pt-ease);
}

.pt-navcta:hover {
  color: var(--pt-green);
  border-color: var(--pt-green);
  background: rgba(18, 113, 91, .06);
  transform: translateY(-1px);
}

.pt-navcta:active { transform: translateY(0); }

@media (max-width: 991.98px) { .pt-navcta { display: none; } }

/* ================================================================= il footer

   Al posto di quello di Elementor, che usava tre foto di prodotto ritagliate
   come icone dei link. */

.pt-footer {
  font-family: var(--pt-font);
  background: var(--pt-ink);
  color: rgba(255, 255, 255, .72);
  padding: 72px 0 0;
}

.pt-footer__inner,
.pt-footer__base {
  width: min(1180px, calc(100% - 48px));
  margin-inline: auto;
}

.pt-footer__inner {
  display: grid;
  grid-template-columns: minmax(260px, 1.15fr) 2fr;
  gap: 56px;
  padding-bottom: 56px;
}

.pt-footer__logo { display: inline-block; }
.pt-footer__logo img { width: 168px; height: auto; }

.pt-footer__claim {
  font-size: 14.5px;
  line-height: 1.65;
  margin: 18px 0 22px;
  max-width: 38ch;
}

.pt-footer__cta {
  font-family: inherit;
  font-size: 14.5px;
  font-weight: 500;
  color: #fff;
  background: var(--pt-green);
  border: 0;
  border-radius: 999px;
  padding: 12px 24px;
  cursor: pointer;
  transition: background .2s ease, transform .15s ease;
}

/* schiarendo il verde al passaggio del mouse il bianco scendeva a 4,28:1:
   sotto la soglia AA. Meglio scurire: 8,75:1, e il verso e' lo stesso. */
.pt-footer__cta:hover { background: var(--pt-green-dark); }
.pt-footer__cta:active { transform: translateY(1px); }

.pt-footer__cols {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px;
}

.pt-footer__titolo {
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .45);
  margin: 0 0 16px;
}

.pt-footer__lista { list-style: none; margin: 0; padding: 0; }
.pt-footer__lista li { margin-bottom: 11px; }

.pt-footer__link {
  font-size: 14.5px;
  line-height: 1.5;
  color: rgba(255, 255, 255, .78);
  text-decoration: none;
  background: none;
  border: 0;
  padding: 0;
  font-family: inherit;
  cursor: pointer;
  transition: color .18s ease;
}

.pt-footer__link:hover { color: #fff; text-decoration: underline; text-underline-offset: 3px; }
.pt-footer__link--btn { text-align: start; }

.pt-footer__lista--dati li { display: flex; flex-direction: column; gap: 2px; margin-bottom: 15px; }

.pt-footer__etichetta {
  font-size: 11.5px;
  letter-spacing: .05em;
  text-transform: uppercase;
  /* era .40, cioe' 3,84:1 sul fondo scuro: sotto la soglia AA per il testo
     piccolo. A .56 sale a 6,4:1 e resta comunque piu' tenue del valore */
  color: rgba(255, 255, 255, .56);
}

.pt-footer__valore { font-size: 14.5px; line-height: 1.5; color: rgba(255, 255, 255, .78); }

.pt-footer__base {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px 32px;
  padding: 22px 0 30px;
  border-top: 1px solid rgba(255, 255, 255, .10);
}

/* in basso a destra stanno il tasto WhatsApp e il "torna su": senza questo
   margine il copyright ci finisce sotto */
.pt-footer { padding-bottom: 22px; }
.pt-footer__copy { padding-inline-end: 96px; }

@media (max-width: 767.98px) {
  .pt-footer__copy { padding-inline-end: 0; }
  .pt-footer__base { padding-bottom: 86px; }
}

.pt-footer__legale,
.pt-footer__copy {
  font-size: 12.5px;
  line-height: 1.6;
  color: rgba(255, 255, 255, .45);
  margin: 0;
}

.pt-footer__lingue { display: flex; gap: 6px; list-style: none; margin: 0; padding: 0; }

.pt-footer__lingua {
  font-size: 12.5px;
  color: rgba(255, 255, 255, .55);
  text-decoration: none;
  padding: 5px 12px;
  border-radius: 999px;
  transition: background .2s ease, color .2s ease;
}

.pt-footer__lingua:hover { color: #fff; background: rgba(255, 255, 255, .08); }
.pt-footer__lingua.is-current { color: #fff; background: rgba(255, 255, 255, .12); }

@media (max-width: 900px) {
  .pt-footer { padding-top: 56px; }
  .pt-footer__inner { grid-template-columns: 1fr; gap: 40px; padding-bottom: 40px; }
  .pt-footer__cols { grid-template-columns: repeat(2, 1fr); gap: 32px; }
}

@media (max-width: 575px) {
  .pt-footer__inner, .pt-footer__base { width: calc(100% - 40px); }
  .pt-footer__cols { grid-template-columns: 1fr; gap: 28px; }
  .pt-footer__base { flex-direction: column; align-items: flex-start; }
}

/* ================================================ rifiniture di interfaccia

   Spunti presi da apple.com, adattati al marchio: barra sottile e translucida
   che lascia passare la pagina, tipografia stretta sui titoli grandi, una sola
   curva di movimento per tutto, stati di focus visibili. Nessuna modifica alla
   struttura del tema: solo pelle. */

:root {
  /* la curva del movimento: partenza decisa, arrivo morbido */
  --pt-ease: cubic-bezier(.28, .11, .32, 1);
}

@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}

::selection { background: rgba(18, 113, 91, .16); }

/* un anello di focus che si vede, ma solo da tastiera */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--pt-green);
  outline-offset: 3px;
  border-radius: 6px;
}

/* --- la barra in alto ---------------------------------------------------- */

.uc-navbar-container {
  background: rgba(255, 255, 255, .72);
  backdrop-filter: saturate(180%) blur(20px);
  -webkit-backdrop-filter: saturate(180%) blur(20px);
  border-bottom: 1px solid rgba(16, 16, 19, .08);
  transition: background .3s var(--pt-ease), border-color .3s var(--pt-ease);
}

/* finche' si e' in cima la barra e' trasparente e si appoggia alla pagina */
.uc-navbar-transparent {
  background: rgba(255, 255, 255, .55);
  border-bottom-color: transparent;
}

.uc-navbar-nav .nav-links {
  font-size: 14.5px;
  letter-spacing: -.01em;
  color: var(--pt-ink);
  transition: color .2s var(--pt-ease);
}

.uc-navbar-nav .nav-links:hover { color: var(--pt-green); }

/* il bottone del catalogo: pill piena, con la spinta appena percettibile */
.uc-navbar-right .btn.btn-primary {
  border-radius: 999px;
  letter-spacing: -.01em;
  transition: background-color .2s var(--pt-ease), transform .15s var(--pt-ease);
}

.uc-navbar-right .btn.btn-primary:hover { transform: translateY(-1px); }
.uc-navbar-right .btn.btn-primary:active { transform: translateY(0); }

/* --- tipografia ---------------------------------------------------------- */

/* i titoli grandi respirano meglio con il passo stretto: sotto i 24px la
   correzione si nota in negativo, quindi resta solo sui grandi */
h1, h2, .uc-h1, .uc-h2 { letter-spacing: -.022em; }
h3, h4 { letter-spacing: -.014em; }

/* --- movimento condiviso ------------------------------------------------- */

.pt-btn,
.pt-hero__cta,
.pt-footer__cta,
.pt-lang__link,
.pt-lang__btn {
  transition: background-color .2s var(--pt-ease), color .2s var(--pt-ease),
              border-color .2s var(--pt-ease), transform .15s var(--pt-ease),
              box-shadow .2s var(--pt-ease);
}

.pt-hero__cta:hover { transform: translateY(-1px); box-shadow: 0 8px 22px rgba(18, 113, 91, .22); }
.pt-card { transition: transform .3s var(--pt-ease), box-shadow .3s var(--pt-ease); }

/* le immagini del tema si alzano appena al passaggio del mouse */
@media (prefers-reduced-motion: no-preference) and (hover: hover) {
  .elementor-widget-image img,
  .media-cover {
    transition: transform .5s var(--pt-ease);
  }
  .elementor-widget-image:hover img { transform: scale(1.012); }
}

/* --- link di salto, per chi naviga da tastiera --------------------------- */

.pt-skip {
  position: absolute;
  inset-inline-start: 12px;
  top: -60px;
  z-index: 1000;
  font-family: var(--pt-font);
  font-size: 14px;
  color: #fff;
  background: var(--pt-ink);
  border-radius: 0 0 10px 10px;
  padding: 10px 18px;
  text-decoration: none;
  transition: top .2s var(--pt-ease);
}

.pt-skip:focus { top: 0; color: #fff; }

/* il richiamo al preventivo dentro il pannello del menu, dove sotto i 992 px
   la barra non ha piu' spazio per mostrarlo */
.pt-panel-cta {
  display: block;
  width: 100%;
  margin-top: 22px;
  font-family: var(--pt-font);
  font-size: 15px;
  font-weight: 500;
  color: #fff;
  background: var(--pt-green);
  border: 0;
  border-radius: 999px;
  padding: 13px 24px;
  cursor: pointer;
  transition: background .2s var(--pt-ease);
}

.pt-panel-cta:hover { background: var(--pt-green-dark); }

/* ======================================================== pagine legali */

/* Il testo della privacy lo scriviamo noi, quindi qui non ereditiamo nulla
   dal plugin: leggibilita' prima di tutto, misura di riga corta. */
.pt-legale {
  font-family: var(--pt-font);
  color: var(--pt-ink);
  font-size: 16.5px;
  line-height: 1.72;
}

.pt-legale__titolo {
  font-family: var(--pt-font);
  font-size: clamp(30px, 4.4vw, 44px);
  line-height: 1.1;
  letter-spacing: -.02em;
  margin: 0 0 28px;
}

.pt-legale h2 {
  font-size: clamp(20px, 2.4vw, 25px);
  line-height: 1.25;
  letter-spacing: -.01em;
  margin: 44px 0 12px;
  padding-top: 20px;
  border-top: 1px solid var(--pt-line);
}

.pt-legale h3 {
  font-size: 17.5px;
  font-weight: 600;
  margin: 26px 0 8px;
}

.pt-legale p { margin: 0 0 14px; }
.pt-legale ul { margin: 0 0 16px; padding-inline-start: 22px; }
.pt-legale li { margin-bottom: 8px; }

.pt-legale a { color: var(--pt-green); text-decoration: underline; text-underline-offset: 2px; }
.pt-legale a:hover { color: var(--pt-green-dark); }

.pt-legale code {
  font-size: .92em;
  background: var(--pt-green-soft);
  border-radius: 5px;
  padding: 1px 6px;
}

/* la tabella delle basi giuridiche: su telefono scorre da sola, non spinge
   la pagina di lato */
.pt-legale table {
  display: block;
  overflow-x: auto;
  width: 100%;
  border-collapse: collapse;
  margin: 0 0 22px;
  font-size: 15.5px;
}

.pt-legale th,
.pt-legale td {
  border: 1px solid var(--pt-line);
  padding: 12px 14px;
  text-align: left;
  vertical-align: top;
  min-width: 190px;
}

.pt-legale th { background: var(--pt-cream); font-weight: 600; }

.pt-grazie__cta { margin: 22px 0 0; }

/* =========================================================== pagina 404 */

.pt-404 {
  font-family: var(--pt-font);
  color: var(--pt-ink);
  background: var(--pt-cream);
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  padding: 24px;
}

.pt-404__box {
  background: #fff;
  border-radius: var(--pt-radius);
  box-shadow: var(--pt-shadow);
  padding: 44px 36px;
  max-width: 540px;
  text-align: center;
}

.pt-404__logo { width: 190px; height: auto; margin-bottom: 26px; }

.pt-404__box h1 {
  font-size: clamp(26px, 4vw, 34px);
  line-height: 1.15;
  letter-spacing: -.02em;
  margin: 0 0 12px;
}

.pt-404__box p { color: var(--pt-muted); line-height: 1.65; margin: 0 0 14px; }

.pt-404__link {
  display: inline-block;
  margin-top: 10px;
  font-weight: 500;
  color: #fff;
  background: var(--pt-green);
  border-radius: 999px;
  padding: 12px 26px;
  text-decoration: none;
}

.pt-404__link:hover { background: var(--pt-green-dark); color: #fff; }

/* lo slot dell'errore della casella consenso, che prima non c'era */
.pt-consent-wrap { margin-top: 14px; }
.pt-consent-wrap .pt-consent { margin-top: 0; }
.pt-consent-wrap .pt-field__error { margin: 4px 0 0; }
.pt-consent-wrap.is-invalid .pt-field__error { display: block; }

/* il pulsante per riprovare dopo un invio fallito */
.pt-result [data-pt="riprova"] { margin-top: 16px; }

/* senza javascript il wizard non si costruisce: resta questo bottone */
.pt-form noscript button { margin-top: 18px; }
