.error-message {
  display: none;
  color: #dc3545;
  font-size: 0.875rem;
  margin-top: 0.25rem;
}

.error-message.d-block {
  display: block;
}

/* Separatore visivo tra famiglie di campi (spaziatura in .registration-form-section-gap) */
.section-spacer {
  display: block;
  height: 0;
  width: 100%;
  margin: 0;
  border: 0;
}

.form-check-label {
  color: #000;
}

/* Layout e sfondo */
html, body {
  min-height: 100vh;
  width: 100%;
  touch-action: auto;
}
body {
  display: flex;
  flex-direction: column;
}
.page-wrapper {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}
footer {
  margin-top: auto;
}

.header-main-background-wrapper.brand-header-active {
  padding-top: 0 !important;
}

.header-main-background-wrapper.brand-header-active > main {
  margin-top: 0 !important;
}

.header-main-background-wrapper.brand-header-only .registration-card {
  margin-top: 24px !important;
}

.logo-max-120 {
  max-height: 120px;
}

.card-logo-wrapper {
  width: 100%;
  max-width: 840px;
  margin: 0 auto -1px auto;
  padding: 0;
  position: relative;
  z-index: 2;
  display: flex;
  justify-content: center;
}
.card-logo-wrapper picture {
  display: block;
  width: 100%;
  max-width: 100%;
}

.brand-visual-stack {
  flex-direction: column;
  gap: 12px;
  align-items: center;
}

.card-logo-img {
  width: 100% !important;
  max-width: 100% !important;
  height: auto;
  display: block;
  margin: 0 auto;
  object-fit: contain;
}

.brand-header-img {
  width: 100vw !important;
  max-width: 100vw !important;
  height: auto;
  max-height: none;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  border-radius: 0;
  object-fit: contain;
  object-position: center;
}

.logo-attached-card {
  margin-top: -1px;
  border: none;
  position: relative;
  z-index: 1;
  width: 100%;
}

.logo-stack {
  width: 100%;
  max-width: 840px;
  margin-left: auto;
  margin-right: auto;
}

/* Contenitori pagina registrazione */
.registration-shell {
  max-width: 1200px;
  margin: 0 auto;
  padding-inline: 0;
}

.registration-card {
  width: 100%;
  max-width: 840px;
  margin: 0 auto;
}

.card.registration-card .card-body {
  padding-left: 0 !important;
  padding-right: 0 !important;
  --bs-card-spacer-x: 0 !important;
}

.card.registration-card .card-body.py-4,
.card.registration-card .card-body.py-md-5 {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

.card.registration-card .card-body .p-3 {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

.card.registration-card .card-body p:has(.btn) {
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 0;
}

.card.registration-card .card-body p .btn {
  margin: 0;
  flex-shrink: 0;
  width: auto;
  max-width: 100%;
  align-self: center;
}

/* Contenu page attesa / form : bouton toujours sous le texte */
.waiting-page-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}

.waiting-page-content a.btn,
.waiting-page .registration-card .card-body .waiting-page-content a.btn,
.waiting-ended-page .registration-card .card-body .waiting-page-content a.btn {
  display: block;
  width: fit-content;
  max-width: 100%;
  margin-top: 0.75rem;
  clear: both;
}

/* Tipografia e pulsanti più contenuti nelle pagine con logo */
.thank-you-page .registration-card,
.waiting-page .registration-card,
.waiting-ended-page .registration-card {
  padding: clamp(1.25rem, 3vw, 2.25rem);
}
.thank-you-page .registration-card h1,
.waiting-page .registration-card h1,
.waiting-ended-page .registration-card h1 {
  font-size: clamp(1.05rem, 2vw, 1.45rem) !important;
  line-height: 1.18;
}
.thank-you-page .registration-card h2,
.waiting-page .registration-card h2,
.waiting-ended-page .registration-card h2,
.thank-you-page .registration-card h3,
.waiting-page .registration-card h3,
.waiting-ended-page .registration-card h3 {
  font-size: clamp(0.95rem, 1.8vw, 1.15rem) !important;
  line-height: 1.18;
}
.thank-you-page .registration-card p,
.waiting-page .registration-card p,
.waiting-ended-page .registration-card p,
.thank-you-page .registration-card .alert,
.waiting-page .registration-card .alert,
.waiting-ended-page .registration-card .alert {
  font-size: clamp(0.88rem, 1.7vw, 0.98rem) !important;
}
.thank-you-page .registration-card .btn-lg,
.waiting-page .registration-card .btn-lg,
.waiting-ended-page .registration-card .btn-lg {
  font-size: 0.9rem !important;
  padding: 0.55rem 1.3rem !important;
}

/* Tipografia e pulsanti fluidi nelle pagine con logo */
.logo-stack .registration-card {
  padding: clamp(1.25rem, 3vw, 2.25rem);
}
.logo-stack .registration-card .fs-1,
.logo-stack .registration-card h1,
.logo-stack .registration-card .h1 {
  font-size: clamp(1.05rem, 1.4vw + 0.7rem, 1.55rem) !important;
  line-height: 1.18;
}
.logo-stack .registration-card .fs-2,
.logo-stack .registration-card h2,
.logo-stack .registration-card .h2 {
  font-size: clamp(0.95rem, 1vw + 0.55rem, 1.25rem) !important;
  line-height: 1.18;
}
.logo-stack .registration-card .fs-3,
.logo-stack .registration-card h3,
.logo-stack .registration-card .h3 {
  font-size: clamp(0.93rem, 0.9vw + 0.5rem, 1.2rem) !important;
  line-height: 1.2;
}
.logo-stack .registration-card .fs-4,
.logo-stack .registration-card h4,
.logo-stack .registration-card .h4 {
  font-size: clamp(0.9rem, 0.8vw + 0.45rem, 1.1rem) !important;
  line-height: 1.22;
}
.logo-stack .registration-card p,
.logo-stack .registration-card .fs-5,
.logo-stack .registration-card .alert,
.logo-stack .registration-card .accordion-body {
  font-size: clamp(0.9rem, 0.7vw + 0.4rem, 1.05rem) !important;
}
.logo-stack .registration-card .fs-6,
.logo-stack .registration-card small {
  font-size: clamp(0.88rem, 0.6vw + 0.35rem, 0.98rem) !important;
}
.logo-stack .registration-card .btn-lg {
  font-size: clamp(0.88rem, 0.75vw + 0.35rem, 1.02rem) !important;
  padding: clamp(0.55rem, 1vw, 0.8rem) clamp(1.2rem, 1.6vw, 1.7rem) !important;
}

@media (max-width: 768px) {
  .logo-stack {
    max-width: 520px;
    padding-left: 1rem;
    padding-right: 1rem;
    margin-left: auto;
    margin-right: auto;
  }
  .logo-attached-card {
    width: 100%;
  }
}

@media (max-width: 576px) {
  .logo-stack {
    max-width: 480px;
    padding-left: 1.25rem;
    padding-right: 1.25rem;
  }
  .thank-you-page main.row.justify-content-center {
    margin-left: 0;
    margin-right: 0;
  }
}

/* Select2 - stile coerente con Bootstrap */
.select2-wrapper {
  position: relative;
  width: 100%;
}

.select2-container {
  width: 100% !important;
  z-index: 1050;
  position: relative;
}
.select2-container--open {
  z-index: 20000 !important;
}
.select2-container--default .select2-selection--single {
  border: 1px solid #ced4da;
  border-radius: 0.375rem;
  min-height: 38px;
  padding: 6px 12px;
  display: flex;
  align-items: center;
}
.select2-container--default .select2-selection--single .select2-selection__arrow {
  height: 36px;
  top: 1px;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
  line-height: 1.5;
  padding-left: 0;
  padding-right: 0;
  color: #495057;
}
.select2-container--default.select2-container--focus .select2-selection--single {
  border-color: var(--contest-primary) !important;
  box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--contest-primary) 25%, transparent) !important;
}
.select2-container .select2-dropdown {
  position: absolute !important;
  top: 100% !important;
  left: 0 !important;
  right: auto !important;
  width: 100% !important;
  min-width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
  max-height: 260px;
  overflow: hidden;
  z-index: 9999 !important;
  background: #ffffff;
  border: 1px solid #ced4da;
  box-shadow: 0 6px 18px rgba(0,0,0,0.15);
}
.select2-container .select2-results {
  max-height: 240px;
  overflow-y: auto;
}
.select2-container--default .select2-results__option {
  color: #495057;
}
.select2-container--default .select2-results__option--highlighted,
.select2-container--default .select2-results__option--highlighted[aria-selected],
.select2-container--default .select2-results__option[aria-selected="true"],
.select2-container--default .select2-results__option:hover {
  background-color: color-mix(in srgb, var(--contest-primary) 80%, var(--contest-surface)) !important;
  color: var(--contest-primary-contrast) !important;
}
.select2-search--dropdown .select2-search__field {
  border: 1px solid #ced4da;
  border-radius: 4px;
}
.select2-search--dropdown .select2-search__field:focus {
  border-color: var(--contest-primary) !important;
  box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--contest-primary) 25%, transparent) !important;
  outline: none;
}
.form-select.is-invalid + .select2-container .select2-selection--single,
.select2-hidden-accessible.is-invalid + .select2-container .select2-selection--single {
  border-color: #dc3545 !important;
  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25) !important;
}

/* Evita che Select2 o controlli form blocchino pinch/zoom */
input, select, textarea, button,
.select2-container, .select2-container * {
  touch-action: auto !important;
}


.form-check-input:checked {
  background-color: var(--contest-secondary) !important;
  border-color: var(--contest-secondary) !important;
}

.form-check-input.is-valid:checked {
  background-color: var(--contest-primary) !important;
  border-color: var(--contest-primary) !important;
}

.was-validated .form-check-input:valid:checked {
  background-color: var(--contest-primary) !important;
  border-color: var(--contest-primary) !important;
}

.form-check-input.is-valid:focus {
  box-shadow: 0 0 0 0.25rem color-mix(in srgb, var(--contest-primary) 25%, transparent) !important;
}.was-validated .form-check-input:valid:focus {
  box-shadow: 0 0 0 0.25rem color-mix(in srgb, var(--contest-primary) 25%, transparent) !important;
}
