.text-xs {
  font-size: 0.75rem !important;
}

.text-sm {
  font-size: 0.875rem !important;
}

.text-md {
  font-size: 1rem !important;
}

.text-lg {
  font-size: 1.25rem !important;
}

.text-xl {
  font-size: 2rem !important;
}

.text-lightblue {
  color: #3c8dbc !important;
}

.text-navy {
  color: #001f3f !important;
}

.text-olive {
  color: #3d9970 !important;
}

.text-lime {
  color: #01ff70 !important;
}

.text-fuchsia {
  color: #f012be !important;
}

.text-maroon {
  color: #d81b60 !important;
}

.text-blue {
  color: #007bff !important;
}

.text-indigo {
  color: #6610f2 !important;
}

.text-purple {
  color: #6f42c1 !important;
}

.text-pink {
  color: #e83e8c !important;
}

.text-red {
  color: #dc3545 !important;
}

.text-orange {
  color: #fd7e14 !important;
}

.text-yellow {
  color: #ffc107 !important;
}

.text-green {
  color: #28a745 !important;
}

.text-teal {
  color: #20c997 !important;
}

.text-cyan {
  color: #17a2b8 !important;
}

.text-white {
  color: #fff !important;
}

.text-gray {
  color: #6c757d !important;
}

.text-gray-dark {
  color: #343a40 !important;
}


.float-left {
  float: left !important;
}

.float-right {
  float: right !important;
}

.float-none {
  float: none !important;
}

.m-0 {
  margin: 0 !important;
}

.mt-0,
.my-0 {
  margin-top: 0 !important;
}

.mr-0,
.mx-0 {
  margin-right: 0 !important;
}

.mb-0,
.my-0 {
  margin-bottom: 0 !important;
}

.ml-0,
.mx-0 {
  margin-left: 0 !important;
}

.m-1 {
  margin: 0.25rem !important;
}

.mt-1,
.my-1 {
  margin-top: 0.25rem !important;
}

.mr-1,
.mx-1 {
  margin-right: 0.25rem !important;
}

.mb-1,
.my-1 {
  margin-bottom: 0.25rem !important;
}

.ml-1,
.mx-1 {
  margin-left: 0.25rem !important;
}

.m-2 {
  margin: 0.5rem !important;
}

.mt-2,
.my-2 {
  margin-top: 0.5rem !important;
}

.mr-2,
.mx-2 {
  margin-right: 0.5rem !important;
}

.mb-2,
.my-2 {
  margin-bottom: 0.5rem !important;
}

.ml-2,
.mx-2 {
  margin-left: 0.5rem !important;
}

.m-3 {
  margin: 1rem !important;
}

.mt-3,
.my-3 {
  margin-top: 1rem !important;
}

.mr-3,
.mx-3 {
  margin-right: 1rem !important;
}

.mb-3,
.my-3 {
  margin-bottom: 1rem !important;
}

.ml-3,
.mx-3 {
  margin-left: 1rem !important;
}

.m-4 {
  margin: 1.5rem !important;
}

.mt-4,
.my-4 {
  margin-top: 1.5rem !important;
}

.mr-4,
.mx-4 {
  margin-right: 1.5rem !important;
}

.mb-4,
.my-4 {
  margin-bottom: 1.5rem !important;
}

.ml-4,
.mx-4 {
  margin-left: 1.5rem !important;
}

.m-5 {
  margin: 3rem !important;
}

.mt-5,
.my-5 {
  margin-top: 3rem !important;
}

.mr-5,
.mx-5 {
  margin-right: 3rem !important;
}

.mb-5,
.my-5 {
  margin-bottom: 3rem !important;
}

.ml-5,
.mx-5 {
  margin-left: 3rem !important;
}

.p-0 {
  padding: 0 !important;
}

.pt-0,
.py-0 {
  padding-top: 0 !important;
}

.pr-0,
.px-0 {
  padding-right: 0 !important;
}

.pb-0,
.py-0 {
  padding-bottom: 0 !important;
}

.pl-0,
.px-0 {
  padding-left: 0 !important;
}

.p-1 {
  padding: 0.25rem !important;
}

.pt-1,
.py-1 {
  padding-top: 0.25rem !important;
}

.pr-1,
.px-1 {
  padding-right: 0.25rem !important;
}

.pb-1,
.py-1 {
  padding-bottom: 0.25rem !important;
}

.pl-1,
.px-1 {
  padding-left: 0.25rem !important;
}

.p-2 {
  padding: 0.5rem !important;
}

.pt-2,
.py-2 {
  padding-top: 0.5rem !important;
}

.pr-2,
.px-2 {
  padding-right: 0.5rem !important;
}

.pb-2,
.py-2 {
  padding-bottom: 0.5rem !important;
}

.pl-2,
.px-2 {
  padding-left: 0.5rem !important;
}

.p-3 {
  padding: 1rem !important;
}

.pt-3,
.py-3 {
  padding-top: 1rem !important;
}

.pr-3,
.px-3 {
  padding-right: 1rem !important;
}

.pb-3,
.py-3 {
  padding-bottom: 1rem !important;
}

.pl-3,
.px-3 {
  padding-left: 1rem !important;
}

.p-4 {
  padding: 1.5rem !important;
}

.pt-4,
.py-4 {
  padding-top: 1.5rem !important;
}

.pr-4,
.px-4 {
  padding-right: 1.5rem !important;
}

.pb-4,
.py-4 {
  padding-bottom: 1.5rem !important;
}

.pl-4,
.px-4 {
  padding-left: 1.5rem !important;
}

.p-5 {
  padding: 3rem !important;
}

.pt-5,
.py-5 {
  padding-top: 3rem !important;
}

.pr-5,
.px-5 {
  padding-right: 3rem !important;
}

.pb-5,
.py-5 {
  padding-bottom: 3rem !important;
}

.pl-5,
.px-5 {
  padding-left: 3rem !important;
}

.overflow-auto {
  overflow: auto !important;
}

.overflow-hidden {
  overflow: hidden !important;
}

.hidden {
    display: none;
}

#successMessage {
    margin-top: 20px;
    padding: 10px;
    background-color: #d4edda;
    color: #155724;
    border: 1px solid #c3e6cb;
    border-radius: 4px;
    text-align: center;
    font-size: 1.2em;
    transition: opacity 0.5s ease;
}
#successMessage.show {
    display: block;
    opacity: 1;
}

#dangerMessage {
    margin-top: 20px;
    padding: 10px;
    background-color: #fda6a8;
    color: #155724;
    border: 1px solid #c3e6cb;
    border-radius: 4px;
    text-align: center;
    font-size: 1.2em;
    transition: opacity 0.5s ease;
}
#dangerMessage.show {
    display: block;
    opacity: 1;
}
.bg-gray {
	background-color: #eee;
}

.bg-gray:hover {
  color: #fff;
}

/* ------------------------------------ */

/* --- VARIABILI GLOBALI --- */
:root { 
  --fab-gap: 16px; 
  --btn-size: 56px;
  --panel-radius: 14px;
  --btn-radius: 50%;
  --btn-inner-size: 48px;
}

/* BOTTONI PRINCIPALI (FAB e PRO) */
.fab, .pro {
  position: fixed;
  bottom: calc(var(--fab-gap) + env(safe-area-inset-bottom));
  width: var(--btn-size);
  height: var(--btn-size);
  border-radius: var(--btn-radius);
  color: #fff;
  font-size: 9px;
  border: none;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  background-color: #fff;
  /* box-shadow: 0 8px 20px rgba(37,63,118,0.25); */
  z-index: 3000;
  transition: transform .12s ease;
}
.fab { right: calc(var(--fab-gap) + env(safe-area-inset-right)); }
.pro { right: calc(80px + env(safe-area-inset-right)); }

.fab:active, .pro:active { transform: scale(.98); }
.fab:focus { outline: 3px solid rgba(255,255,255,0.2); outline-offset: 2px; }
.pro:focus { outline: 3px solid rgba(255,255,255,0.2); outline-offset: 2px; }

/* PANNELLI (lingue e PRO) */
.lang-panel, .pro-panel {
  position: fixed;
  bottom: calc(90px + env(safe-area-inset-bottom));
  display: flex;
  gap: 8px;
  padding: 12px;
  background: #fff;
  border-radius: var(--panel-radius);
  box-shadow: 0 12px 30px rgba(12,24,48,0.18);
  z-index: 2999;
  transition: opacity .18s ease, transform .18s ease;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.lang-panel { 
  right: calc(var(--fab-gap) + env(safe-area-inset-right)); 
  transform-origin: bottom right; 
}
.pro-panel { 
  right: calc(50px + env(safe-area-inset-right)); 
  transform-origin: bottom center; 
}

/* Stato aperto */
.lang-panel.open, .pro-panel.open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0) scale(1);
}

/* BOTTONI INTERNI */
.lang-btn, .pro-btn {
  width: var(--btn-inner-size);
  height: var(--btn-inner-size);
  border-radius: var(--btn-radius);
  border: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: transform .1s ease, box-shadow .1s ease;
}

/* Differenze stilistiche */
.lang-btn {
  background: transparent;
  padding: 0px;
  box-shadow: 0 4px 14px rgba(12,24,48,0.06);
}
.pro-btn {
  background: #f4f6f9;
  padding:0px;
  font-size: 12px;
}
.pro-btn.profile { color: #2b6edb; }
.pro-btn.password { color: #e85a0c; }

/* Hover & Focus */
.lang-btn:hover, .pro-btn:hover { transform: translateY(-3px); }
.lang-btn:focus { outline: 3px solid rgba(43,110,219,0.24); outline-offset: 2px; }
.pro-btn:focus { outline: 3px solid rgba(232,90,12,0.3); outline-offset: 2px; }

/* Stato attivo lingua */
.lang-btn.active {
  box-shadow: 0 0 0 3px #2b6edb;
  transform: scale(1.05);
}

/* Icone bandiera */
.lang-btn .flag-icon {
  display: inline-block;
  width: 28px;
  height: 20px;
  line-height: 20px;
}

/* Mobile: centra il lang panel */
@media (max-width: 420px) {
  .lang-panel {
    left: 50%;
    right: auto;
    transform: translateX(-50%);
    bottom: calc(86px + env(safe-area-inset-bottom));
  }
}


/* MODALE PER REGOLAMENTO / PRIVACY */

.modal {
  display: none; 
  position: fixed; 
  z-index: 2229000; 
  left: 0; top: 0;
  width: 100%; height: 100%; 
  overflow: auto; 
  background-color: rgba(0,0,0,0.5);
}
.modal-content {
  background: #fff;
  margin: 2% auto;
  padding: 20px;
  border-radius: 10px;
  width: 98%;
  max-width: 600px;
}
.close {
  float: right;
  font-size: 24px;
  cursor: pointer;
}

/* FINE MODALE PER REGOLAMENTO / PRIVACY */
