/* ============================================================
   NutryBuddy v95 - STILI ORGANIZZATI
   File CSS principale: colori, layout, dashboard, cards, modali, grafici e responsive.
   Nota: formattazione e commenti senza modificare la logica dell’app.
   ============================================================ */

/* Variabili globali: colori, bordi e ombre principali */
:root {
  --green: #2f9e68;
  --green2: #65d99c;
  --dark: #10261d;
  --soft: #eef8f1;
  --white: #fff;
  --text: #17352a;
  --muted: #6a7c74;
  --border: #dce9df;
  --red: #ff6b6b;
  --orange: #ffb84d;
  --shadow: 0 14px 36px rgba(16, 38, 29, 0.08);
}
/* Reset base e impostazioni comuni */
* {
  box-sizing: border-box;
}
body {
  margin: 0;
  background: #f7faf8;
  font-family: "Inter", Arial, Helvetica, sans-serif;
  color: var(--text);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
button,
input,
select,
textarea {
  font-family: inherit;
}
button {
  cursor: pointer;
}
.hidden {
  display: none !important;
}
/* Layout principale dell’app */
.wrap {
  min-height: 100vh;
  padding: 18px;
}
.module {
  width: calc(100vw - 36px);
  max-width: 1680px;
  margin: auto;
  background: linear-gradient(135deg, #fff, #f4fbf6);
  border: 1px solid rgba(23, 53, 42, 0.08);
  border-radius: 32px;
  box-shadow: var(--shadow);
  overflow: hidden;
}
/* Barra superiore e branding */
.topbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  padding: 18px 22px;
  background: rgba(255, 255, 255, 0.9);
  border-bottom: 1px solid var(--border);
}
.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  font-weight: 800;
}
.logo {
  width: 52px;
  height: 52px;
  min-width: 52px;
  border-radius: 16px;
  background: #ffffff;
  border: 2px solid rgba(61, 194, 129, 0.95);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  box-shadow: 0 8px 18px rgba(61, 194, 129, 0.16);
}
.logo img {
  width: 42px;
  height: 42px;
  object-fit: contain;
  display: block;
}
.brand small {
  display: block;
  color: var(--muted);
  font-weight: 600;
  margin-top: 2px;
}
.actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
/* Bottoni e varianti */
.btn {
  border: 0;
  border-radius: 15px;
  padding: 11px 15px;
  font-weight: 700;
  display: inline-flex;
  gap: 8px;
  align-items: center;
  justify-content: center;
  transition: 0.2s;
}
.btn:hover {
  transform: translateY(-2px);
}
.primary {
  background: linear-gradient(135deg, var(--green), var(--green2));
  color: white;
  box-shadow: 0 10px 22px rgba(47, 158, 104, 0.18);
}
.dark {
  background: var(--dark);
  color: white;
}
.ghost {
  background: white;
  border: 1px solid var(--border);
  color: var(--text);
}
.soft {
  background: var(--soft);
  border: 1px solid #ccecd6;
  color: var(--green);
}
.danger {
  background: #fff0f0;
  border: 1px solid #ffd1d1;
  color: #b42318;
}
.view {
  padding: 26px;
}
.grid2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px;
}
.grid3 {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}
/* Card e contenitori principali */
.card {
  background: white;
  border: 1px solid var(--border);
  border-radius: 28px;
  padding: 24px;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.045);
}
.hero {
  background: linear-gradient(145deg, #143629, #0f241c);
  color: white;
  position: relative;
  overflow: hidden;
}
.hero p {
  color: rgba(255, 255, 255, 0.75);
}
.kicker {
  display: inline-flex;
  padding: 8px 12px;
  border-radius: 999px;
  background: var(--soft);
  color: var(--green);
  font-size: 13px;
  font-weight: 800;
}
h1 {
  font-size: clamp(34px, 5vw, 58px);
  line-height: 0.98;
  letter-spacing: -0.06em;
  margin: 18px 0 14px;
}
h2 {
  font-size: 30px;
  letter-spacing: -0.04em;
  margin: 0 0 6px;
}
p {
  color: var(--muted);
  line-height: 1.5;
}
.formgrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.field {
  display: grid;
  gap: 6px;
}
.full {
  grid-column: 1/-1;
}
label {
  font-size: 13px;
  font-weight: 800;
  color: #365247;
}
.input,
.select,
.textarea {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 13px;
  background: #fbfdfb;
  color: var(--text);
  outline: none;
}
.textarea {
  min-height: 86px;
  resize: vertical;
}
.row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 18px;
}
.note {
  font-size: 13px;
  color: var(--muted);
}
/* KPI e riepiloghi numerici */
.kpis {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-bottom: 16px;
}
.kpi {
  background: white;
  border: 1px solid var(--border);
  border-radius: 22px;
  padding: 16px;
}
.kpi b {
  font-size: 25px;
}
.kpi span {
  display: block;
  color: var(--muted);
  font-size: 13px;
  margin-top: 4px;
}
/* Area nutrizionista: sidebar pazienti + contenuto */
.doctor {
  display: grid;
  grid-template-columns: 330px minmax(0, 1fr);
  gap: 22px;
}
.list {
  display: grid;
  gap: 10px;
  margin-top: 16px;
}
/* Riga paziente nella lista del nutrizionista */
.patientrow {
  display: grid;
  grid-template-columns: auto 1fr auto auto;
  gap: 10px;
  align-items: center;
  padding: 12px;
  border-radius: 18px;
  background: #f8fcf9;
  border: 1px solid #e5f0e8;
  text-align: left;
  width: 100%;
  position: relative;
}
.avatar {
  width: 38px;
  height: 38px;
  border-radius: 14px;
  background: var(--soft);
  display: grid;
  place-items: center;
}
.patientrow b {
  display: block;
  font-size: 14px;
}
.patientrow span {
  display: block;
  font-size: 12px;
  color: var(--muted);
  margin-top: 2px;
  line-height: 1.15;
}
.risk {
  font-size: 11px;
  font-weight: 800;
  padding: 7px 9px;
  border-radius: 999px;
}
.ok {
  background: #e8fbed;
  color: #1b8f55;
}
.mid {
  background: #fff5df;
  color: #a86700;
}
.high {
  background: #fff0f0;
  color: #b42318;
}
.patientLegend {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
  margin: 10px 0 4px;
  font-size: 11px;
  color: var(--muted);
  font-weight: 800;
}
.legendDot,
.statusDot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  display: inline-block;
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.9);
}
.legendItem {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.dotOk {
  background: #1dbf73;
}
.dotMid {
  background: #ffb84d;
}
.dotHigh {
  background: #ff6b6b;
}
.statusDot {
  width: 11px;
  height: 11px;
  margin-right: 2px;
}
.patientSettings {
  border: 0;
  background: #fff;
  border: 1px solid #dce9df;
  width: 34px;
  height: 34px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  font-size: 16px;
  color: #365247;
  transition: 0.2s;
}
.patientSettings:hover {
  background: #eef8f1;
  transform: translateY(-1px);
}
.patientMenu {
  position: absolute;
  right: 10px;
  top: 50px;
  z-index: 20;
  background: #fff;
  border: 1px solid #dce9df;
  border-radius: 16px;
  box-shadow: 0 18px 45px rgba(16, 38, 29, 0.16);
  padding: 8px;
  min-width: 170px;
  display: none;
}
.patientMenu.open {
  display: grid;
  gap: 5px;
}
.patientMenu button {
  border: 0;
  background: #fff;
  text-align: left;
  border-radius: 10px;
  padding: 6px 8px;
  font-weight: 800;
  color: #365247;
  font-size: 12px;
  line-height: 1.2;
}
.patientMenu button:hover {
  background: #f8fcf9;
}
.patientMenu .delete {
  color: #b42318;
}
.patientMenu .delete:hover {
  background: #fff0f0;
}
.portalMenu {
  display: grid;
  grid-template-columns: repeat(8, minmax(105px, 1fr));
  gap: 10px;
  margin: 18px 0;
}
.portalTab {
  border: 1px solid #dce9df;
  background: #fff;
  border-radius: 14px;
  padding: 12px 10px;
  font-weight: 800;
  color: #365247;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
}
.portalTab.active {
  background: #10261d;
  color: #fff;
  border-color: #10261d;
}
.portalSection {
  display: none;
}
.portalSection.active {
  display: block;
}
.fullSectionCard {
  background: white;
  border: 1px solid #dce9df;
  border-radius: 24px;
  padding: 18px;
  margin-top: 14px;
}
.chart {
  height: 300px;
  background: #f8fcf9;
  border: 1px solid #e5f0e8;
  border-radius: 22px;
  padding: 14px;
}
.chart svg {
  width: 100%;
  height: 100%;
}
.table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 12px;
}
.table th,
.table td {
  text-align: left;
  padding: 12px;
  border-bottom: 1px solid #ecf2ee;
  font-size: 14px;
}
.table th {
  font-size: 12px;
  color: var(--muted);
  text-transform: uppercase;
}
/* Schermata login e autenticazione */
.lock {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: linear-gradient(135deg, #10261d, #17382b);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.lockcard {
  width: min(460px, 100%);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.14);
  backdrop-filter: blur(18px);
  border-radius: 30px;
  padding: 34px;
  color: white;
  text-align: center;
  box-shadow: 0 25px 80px rgba(0, 0, 0, 0.35);
}
.lockcard h1 {
  margin: 0 0 12px;
}
.lockcard p {
  color: rgba(255, 255, 255, 0.72);
}
.toast {
  position: fixed;
  left: 50%;
  bottom: 22px;
  transform: translateX(-50%) translateY(20px);
  background: var(--dark);
  color: white;
  border-radius: 18px;
  padding: 14px 18px;
  z-index: 99999;
  font-weight: 800;
  box-shadow: 0 18px 50px rgba(16, 38, 29, 0.25);
  opacity: 0;
  pointer-events: none;
  transition: 0.25s;
}
.toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.deleteRequestOverlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.42);
  z-index: 99990;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
}
.deleteRequestOverlay.open {
  display: flex;
}
.deleteRequestModal {
  width: min(520px, 96vw);
  background: #fff;
  border: 1px solid #fee2e2;
  border-radius: 24px;
  box-shadow: 0 24px 70px rgba(16, 38, 29, 0.28);
  padding: 22px;
}
.deleteRequestModal h3 {
  margin: 0 0 8px;
  font-size: 22px;
  color: #7f1d1d;
}
.deleteRequestModal p {
  margin: 0 0 12px;
  color: #5f6f67;
  line-height: 1.45;
}
.deleteRequestModal textarea {
  width: 100%;
  min-height: 110px;
  border: 1px solid #ffd8a8;
  border-radius: 16px;
  padding: 12px;
  font: inherit;
  resize: vertical;
}
.deleteRequestModal input {
  width: 100%;
  border: 1px solid #ffd8a8;
  border-radius: 14px;
  padding: 12px;
  font: inherit;
  margin-top: 6px;
}
.deleteConfirmHint {
  font-size: 12px;
  color: #7c2d12;
  font-weight: 800;
  margin: 12px 0 6px;
}
.deleteRequestActions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 14px;
}
.deleteRequestActions .danger {
  background: #b42318;
  color: #fff;
  border-color: #b42318;
}
.deleteRequestMeta {
  background: #fff7ed;
  border: 1px solid #fed7aa;
  border-radius: 16px;
  padding: 10px;
  margin: 10px 0;
  color: #7c2d12;
  font-weight: 800;
  font-size: 13px;
}
.deleteRequestBadge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: #fff1f2;
  color: #b42318;
  border: 1px solid #fecdd3;
  border-radius: 999px;
  padding: 3px 8px;
  font-size: 11px;
  font-weight: 900;
}
.superAdminDeleteRequests {
  border: 1px solid #fecdd3;
  background: #fff8f8;
}
.superAdminDeleteRequests h3 {
  color: #991b1b;
}
/* Responsive: ottimizzazioni per tablet e mobile */
@media (max-width: 1100px) {
  .grid2,
  .doctor {
    grid-template-columns: 1fr;
  }
  .kpis,
  .grid3 {
    grid-template-columns: 1fr 1fr;
  }
  .portalMenu {
    grid-template-columns: repeat(4, 1fr);
  }
}
@media (max-width: 650px) {
  .wrap {
    padding: 10px;
  }
  .module {
    width: calc(100vw - 20px);
  }
  .formgrid,
  .kpis,
  .grid3,
  .portalMenu {
    grid-template-columns: 1fr;
  }
  .actions {
    width: 100%;
  }
  .actions .btn {
    flex: 1;
  }
}

/* HOME PREMIUM + PRO MODULES */
.homeHero {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: 22px;
  align-items: stretch;
}
.homeBig {
  background: linear-gradient(145deg, #10261d, #17382b);
  color: #fff;
  border-radius: 30px;
  padding: 34px;
  position: relative;
  overflow: hidden;
}
.homeBig:before {
  content: "";
  position: absolute;
  right: -80px;
  top: -80px;
  width: 260px;
  height: 260px;
  border-radius: 50%;
  background: rgba(101, 217, 156, 0.15);
}
.homeBig > * {
  position: relative;
}
.homeBig p {
  color: rgba(255, 255, 255, 0.75);
}
.homeFeatures {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-top: 20px;
}
.homeFeature {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 18px;
  padding: 14px;
}
.homeFeature b {
  display: block;
  margin-bottom: 4px;
}
.homeFeature span {
  color: rgba(255, 255, 255, 0.68);
  font-size: 13px;
  line-height: 1.35;
}
.demoSteps {
  display: grid;
  gap: 12px;
}
.demoStep {
  background: white;
  border: 1px solid var(--border);
  border-radius: 22px;
  padding: 16px;
  display: flex;
  gap: 12px;
  align-items: flex-start;
}
.demoNum {
  width: 34px;
  height: 34px;
  border-radius: 12px;
  background: var(--soft);
  display: grid;
  place-items: center;
  font-weight: 800;
  color: var(--green);
}
.proGrid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-top: 16px;
}
.proCard {
  background: #fff;
  border: 1px solid #dce9df;
  border-radius: 22px;
  padding: 16px;
  box-shadow: 0 8px 24px rgba(16, 38, 29, 0.04);
}
.proCard h3 {
  margin: 0 0 10px;
  font-size: 20px;
  letter-spacing: -0.03em;
}
.proCard p {
  margin: 0;
  color: var(--muted);
}
.smartList {
  display: grid;
  gap: 8px;
  max-height: 360px;
  overflow: auto;
}
.smartItem {
  display: flex;
  justify-content: space-between;
  align-items: center;
  border: 1px solid #e5f0e8;
  background: #f8fcf9;
  border-radius: 16px;
  padding: 12px;
  width: 100%;
  text-align: left;
}
.smartItem.active {
  background: #dcf7e7;
  border-color: #65d99c;
}
.smartItem span {
  display: block;
  font-size: 12px;
  color: var(--muted);
  margin-top: 2px;
}
.tagCloud {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.tag {
  display: inline-flex;
  padding: 9px 12px;
  border-radius: 999px;
  background: #eef8f1;
  border: 1px solid #caecd6;
  font-weight: 800;
  font-size: 13px;
}
.tag.warn {
  background: #fff5df;
  border-color: #ffdf99;
}
.tag.danger {
  background: #fff0f0;
  border-color: #ffd1d1;
}
.visitProGrid,
.planGrid,
.buddyGrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.measureGrid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
.measureGrid .full {
  grid-column: 1/-1;
}
.metricGrid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}
.metricBox {
  background: #f8fcf9;
  border: 1px solid #e5f0e8;
  border-radius: 18px;
  padding: 14px;
}
.metricBox b {
  display: block;
  font-size: 23px;
}
.metricBox span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  margin-top: 4px;
}
.alertBox2 {
  padding: 12px;
  border-radius: 16px;
  border: 1px solid #e5f0e8;
  background: #f8fcf9;
  font-weight: 800;
  margin-bottom: 8px;
}
.alertBox2.warn {
  background: #fff5df;
  border-color: #ffdf99;
  color: #9a6400;
}
.alertBox2.danger {
  background: #fff0f0;
  border-color: #ffd1d1;
  color: #b42318;
}
.miniTabs {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin: 12px 0;
}
.miniTab {
  border: 1px solid #dce9df;
  background: #fff;
  border-radius: 999px;
  padding: 10px 14px;
  font-weight: 800;
  color: #365247;
}
.miniTab.active {
  background: #10261d;
  color: #fff;
}
.buddyPanel {
  background: linear-gradient(135deg, #10261d, #17382b);
  color: #fff;
  border-radius: 24px;
  padding: 18px;
}
.buddyPanel p,
.buddyPanel li {
  color: rgba(255, 255, 255, 0.76);
}
.switchLine {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 14px;
  background: #f8fcf9;
  border: 1px solid #e5f0e8;
  border-radius: 18px;
  margin-bottom: 10px;
}
.fakeSwitch {
  width: 48px;
  height: 26px;
  border-radius: 999px;
  background: #65d99c;
  position: relative;
  flex: 0 0 auto;
}
.fakeSwitch:before {
  content: "";
  position: absolute;
  right: 3px;
  top: 3px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: white;
}
.dayPlan {
  background: #f8fcf9;
  border: 1px solid #e5f0e8;
  border-radius: 18px;
  padding: 14px;
  margin-bottom: 10px;
}
.dayPlan h4 {
  margin: 0 0 10px;
}
.mealGrid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}
@media (max-width: 1100px) {
  .homeHero,
  .visitProGrid,
  .planGrid,
  .buddyGrid {
    grid-template-columns: 1fr;
  }
  .proGrid,
  .metricGrid {
    grid-template-columns: 1fr 1fr;
  }
  .measureGrid {
    grid-template-columns: 1fr 1fr;
  }
}
@media (max-width: 700px) {
  .homeFeatures,
  .proGrid,
  .metricGrid,
  .measureGrid,
  .mealGrid {
    grid-template-columns: 1fr;
  }
}

/* HOME COLORATA PREMIUM - stile verde naturale */
body {
  background:
    radial-gradient(
      circle at 8% 10%,
      rgba(101, 217, 156, 0.28),
      transparent 28%
    ),
    radial-gradient(
      circle at 92% 18%,
      rgba(47, 158, 104, 0.18),
      transparent 30%
    ),
    linear-gradient(135deg, #f3f1ea 0%, #eef8f1 48%, #e8f5ed 100%);
}
.module {
  background: linear-gradient(135deg, #f8fff9 0%, #eef8f1 45%, #fffaf0 100%);
  border: 1px solid rgba(47, 158, 104, 0.14);
}
.topbar {
  background: linear-gradient(
    90deg,
    rgba(255, 255, 255, 0.92),
    rgba(238, 248, 241, 0.94)
  );
  border-bottom: 1px solid rgba(47, 158, 104, 0.18);
}
#home {
  background:
    radial-gradient(
      circle at 12% 18%,
      rgba(101, 217, 156, 0.2),
      transparent 24%
    ),
    radial-gradient(
      circle at 88% 72%,
      rgba(201, 164, 92, 0.14),
      transparent 28%
    ),
    linear-gradient(135deg, #f8fff9 0%, #eef8f1 52%, #fff7e8 100%);
}
#home .homeBig {
  background:
    radial-gradient(
      circle at 92% 6%,
      rgba(101, 217, 156, 0.28),
      transparent 30%
    ),
    linear-gradient(145deg, #082418 0%, #0f3a28 54%, #1f704a 100%);
  box-shadow: 0 22px 60px rgba(15, 58, 40, 0.24);
  border: 1px solid rgba(255, 255, 255, 0.14);
}
#home .homeBig:before {
  background: rgba(255, 255, 255, 0.1);
}
#home .card,
#home .proCard {
  background: rgba(255, 255, 255, 0.82);
  backdrop-filter: blur(14px);
  border: 1px solid rgba(47, 158, 104, 0.18);
  box-shadow: 0 16px 45px rgba(16, 38, 29, 0.08);
}
#home .demoStep {
  background: linear-gradient(135deg, #ffffff, #f3fbf5);
  border-color: rgba(47, 158, 104, 0.18);
}
#home .demoNum {
  background: linear-gradient(135deg, #dcf7e7, #ffffff);
  color: #16824f;
}
#home .homeFeature {
  background: rgba(255, 255, 255, 0.13);
  border-color: rgba(255, 255, 255, 0.18);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
}
#home .kicker {
  background: rgba(255, 255, 255, 0.92);
  color: #16824f;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.1);
}
#home h2,
#home h3 {
  color: #082418;
}
#home .proCard h3 {
  color: #0f3a28;
}
#home .btn.ghost {
  background: rgba(255, 255, 255, 0.95);
}
#home .btn.dark {
  background: #082418;
}
#home .primary {
  background: linear-gradient(135deg, #32b978, #78e2a8);
  box-shadow: 0 14px 30px rgba(47, 158, 104, 0.26);
}

/* HOME REDESIGN - hub condiviso per nutrizionista e paziente */
#home {
  background:
    radial-gradient(
      circle at 13% 18%,
      rgba(47, 158, 104, 0.1),
      transparent 26%
    ),
    radial-gradient(
      circle at 88% 62%,
      rgba(101, 217, 156, 0.16),
      transparent 28%
    ),
    linear-gradient(135deg, #fbfffc 0%, #f5fbf7 58%, #ffffff 100%);
}
#home .homeHero {
  grid-template-columns: 1fr;
  gap: 22px;
}
.homeIntro {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: 34px;
  align-items: center;
  padding: 42px 44px 34px;
  border-radius: 30px;
  background: rgba(255, 255, 255, 0.88);
  border: 1px solid rgba(47, 158, 104, 0.16);
  box-shadow: 0 20px 55px rgba(16, 38, 29, 0.08);
  overflow: hidden;
  position: relative;
}
.homeIntro:before {
  content: "";
  position: absolute;
  right: -90px;
  top: -90px;
  width: 280px;
  height: 280px;
  border-radius: 50%;
  background: rgba(101, 217, 156, 0.16);
}
.homeIntroText,
.homeVisual {
  position: relative;
  z-index: 1;
}
.homeIntro h1 {
  font-size: clamp(36px, 4vw, 58px);
  line-height: 1.03;
  letter-spacing: -0.055em;
  margin: 0 0 18px;
  color: #082418;
}
.homeIntro .lead {
  font-size: 20px;
  line-height: 1.45;
  color: #40564a;
  max-width: 620px;
  margin: 0 0 24px;
}
.homeIntro .bodyText {
  font-size: 16px;
  line-height: 1.7;
  color: #5f7168;
  max-width: 630px;
  margin: 0 0 26px;
}
.homeTrust {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  margin-top: 8px;
}
.homeTrust span {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 800;
  color: #2a4438;
  font-size: 14px;
}
.homeTrust i {
  width: 18px;
  height: 18px;
  border-radius: 999px;
  background: linear-gradient(135deg, #20a85f, #65d99c);
  color: white;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-style: normal;
  font-size: 11px;
}
.homeVisual {
  min-height: 330px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.visualPanel {
  width: min(520px, 100%);
  min-height: 250px;
  border-radius: 24px;
  background: linear-gradient(180deg, #ffffff, #f7fcf9);
  border: 1px solid rgba(47, 158, 104, 0.16);
  box-shadow: 0 26px 65px rgba(16, 38, 29, 0.12);
  padding: 28px;
  position: relative;
}
.chartLine {
  height: 150px;
  border-radius: 18px;
  background:
    linear-gradient(180deg, rgba(47, 158, 104, 0.14), rgba(47, 158, 104, 0.02)),
    repeating-linear-gradient(
      to right,
      transparent 0 78px,
      rgba(10, 38, 27, 0.06) 79px 80px
    ),
    repeating-linear-gradient(
      to bottom,
      transparent 0 36px,
      rgba(10, 38, 27, 0.06) 37px 38px
    );
  position: relative;
  overflow: hidden;
}
.chartLine:before {
  content: "";
  position: absolute;
  inset: 30px 18px 34px;
  background: linear-gradient(
    135deg,
    transparent 0 8%,
    #12a35c 8% 10%,
    transparent 10% 23%,
    #12a35c 23% 25%,
    transparent 25% 37%,
    #12a35c 37% 39%,
    transparent 39% 54%,
    #12a35c 54% 56%,
    transparent 56% 70%,
    #12a35c 70% 72%,
    transparent 72% 85%,
    #12a35c 85% 87%,
    transparent 87%
  );
  filter: drop-shadow(0 4px 5px rgba(18, 163, 92, 0.18));
}
.floatingMetric {
  position: absolute;
  background: #fff;
  border: 1px solid rgba(47, 158, 104, 0.14);
  border-radius: 18px;
  box-shadow: 0 18px 42px rgba(16, 38, 29, 0.12);
  padding: 16px 18px;
  min-width: 135px;
}
.floatingMetric b {
  display: block;
  font-size: 24px;
  color: #082418;
  margin: 2px 0;
}
.floatingMetric span {
  font-size: 12px;
  color: #718179;
  font-weight: 800;
}
.floatingMetric small {
  font-size: 12px;
  color: #16a05a;
  font-weight: 800;
}
.metricWeight {
  right: -20px;
  top: 72px;
}
.metricVisit {
  right: 36px;
  bottom: -22px;
}
.metricBody {
  left: -24px;
  bottom: 22px;
}
.homeSectionTitle {
  text-align: center;
  margin: 28px 0 18px;
}
.homeSectionTitle h2 {
  font-size: 25px;
  letter-spacing: -0.03em;
  margin: 0;
  color: #082418;
}
.homeFunctionGrid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 14px;
}
.homeFunctionCard {
  background: rgba(255, 255, 255, 0.9);
  border: 1px solid rgba(47, 158, 104, 0.15);
  border-radius: 22px;
  padding: 24px 16px;
  text-align: center;
  box-shadow: 0 14px 38px rgba(16, 38, 29, 0.06);
  transition: 0.18s ease;
}
.homeFunctionCard:hover {
  transform: translateY(-2px);
  box-shadow: 0 18px 44px rgba(47, 158, 104, 0.12);
  border-color: rgba(47, 158, 104, 0.28);
}
.homeFunctionIcon {
  width: 58px;
  height: 58px;
  border-radius: 18px;
  background: linear-gradient(135deg, #e8f9ef, #ffffff);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 14px;
  font-size: 28px;
}
.homeFunctionCard h3 {
  font-size: 16px;
  margin: 0 0 8px;
  color: #082418;
}
.homeFunctionCard p {
  font-size: 13px;
  line-height: 1.45;
  color: #64786d;
  margin: 0;
}
.homeFlow {
  background: rgba(255, 255, 255, 0.86);
  border: 1px solid rgba(47, 158, 104, 0.15);
  border-radius: 26px;
  box-shadow: 0 14px 38px rgba(16, 38, 29, 0.06);
  padding: 24px 26px;
  margin-top: 26px;
}
.homeFlow h2 {
  text-align: center;
  font-size: 24px;
  margin: 0 0 22px;
  color: #082418;
}
.flowItems {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr;
  align-items: center;
  gap: 14px;
}
.flowItem {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 14px;
  align-items: center;
}
.flowNum {
  width: 28px;
  height: 28px;
  border-radius: 999px;
  background: #16a05a;
  color: white;
  font-weight: 800;
  font-size: 13px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.flowIcon {
  width: 58px;
  height: 58px;
  border-radius: 999px;
  background: #e8f9ef;
  color: #16a05a;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 26px;
}
.flowItem b {
  display: block;
  color: #082418;
  margin-bottom: 4px;
}
.flowItem p {
  margin: 0;
  color: #64786d;
  font-size: 13px;
  line-height: 1.4;
}
.flowArrow {
  font-size: 34px;
  color: #7a8d83;
}
.homeBenefitGrid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  margin-top: 24px;
}
.homeBenefitCard {
  background: rgba(255, 255, 255, 0.88);
  border: 1px solid rgba(47, 158, 104, 0.15);
  border-radius: 24px;
  padding: 24px;
  box-shadow: 0 14px 38px rgba(16, 38, 29, 0.06);
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 18px;
  align-items: start;
}
.homeBenefitIcon {
  width: 66px;
  height: 66px;
  border-radius: 24px;
  background: #e8f9ef;
  color: #16a05a;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 30px;
}
.homeBenefitCard h3 {
  margin: 0 0 8px;
  color: #082418;
  font-size: 20px;
}
.homeBenefitCard p {
  margin: 0 0 12px;
  color: #64786d;
  line-height: 1.5;
}
.benefitTags {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.benefitTags span {
  font-size: 12px;
  font-weight: 800;
  color: #16824f;
  background: #e8f9ef;
  border-radius: 999px;
  padding: 6px 10px;
}
.homeSecurity {
  text-align: center;
  color: #50665a;
  font-weight: 800;
  margin: 18px 0 0;
  font-size: 14px;
}
@media (max-width: 1200px) {
  .homeIntro {
    grid-template-columns: 1fr;
  }
  .homeFunctionGrid {
    grid-template-columns: repeat(3, 1fr);
  }
  .flowItems {
    grid-template-columns: 1fr;
  }
  .flowArrow {
    display: none;
  }
  .homeBenefitGrid {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 700px) {
  .homeIntro {
    padding: 28px 22px;
  }
  .homeFunctionGrid {
    grid-template-columns: 1fr;
  }
  .homeTrust {
    gap: 10px;
  }
  .floatingMetric {
    position: static;
    margin-top: 12px;
  }
  .visualPanel {
    min-height: auto;
  }
  .homeVisual {
    min-height: auto;
  }
}

/* HERO IMAGE MOCKUP V14 */
.homeVisual {
  min-height: 330px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: visible;
}
.heroMockupImg {
  width: min(720px, 100%);
  height: auto;
  display: block;
  object-fit: contain;
  filter: drop-shadow(0 30px 45px rgba(16, 38, 29, 0.13));
  transform: translateX(14px);
}
@media (max-width: 1200px) {
  .heroMockupImg {
    transform: none;
    width: min(680px, 100%);
  }
}
@media (max-width: 700px) {
  .homeVisual {
    min-height: auto;
  }
  .heroMockupImg {
    width: 100%;
    filter: drop-shadow(0 18px 26px rgba(16, 38, 29, 0.1));
  }
}

/* HOME REDESIGN V12 - closer to preview */
#home {
  background: #fff;
  padding: 42px 36px 26px;
}
#home .homeHero {
  max-width: 1560px;
  margin: 0 auto;
  gap: 30px;
}
.homeIntro {
  grid-template-columns: 1.03fr 1fr;
  min-height: 360px;
  padding: 56px 70px;
  border-radius: 28px;
  background: linear-gradient(180deg, #fff 0%, #fbfffd 100%);
  border: 1px solid rgba(20, 148, 86, 0.12);
  box-shadow: none;
}
.homeIntro:before {
  right: -65px;
  top: -75px;
  width: 310px;
  height: 310px;
  background: rgba(101, 217, 156, 0.13);
}
.homeIntro:after {
  content: "";
  position: absolute;
  right: 380px;
  top: 105px;
  width: 90px;
  height: 90px;
  opacity: 0.25;
  background-image: radial-gradient(#30b96e 2px, transparent 2px);
  background-size: 16px 16px;
}
.homeIntro h1 {
  font-size: 54px;
  line-height: 1.03;
  letter-spacing: -0.06em;
  margin-bottom: 24px;
  color: #071f18;
}
.homeIntro .lead {
  font-size: 21px;
  max-width: 600px;
  margin-bottom: 28px;
  color: #293b34;
  line-height: 1.48;
}
.homeIntro .bodyText {
  font-size: 16px;
  max-width: 650px;
  line-height: 1.75;
  color: #52675d;
  margin-bottom: 28px;
}
.homeTrust {
  gap: 34px;
}
.homeTrust span {
  font-size: 15px;
  color: #213b31;
}
.homeTrust i {
  width: 17px;
  height: 17px;
  background: #0bad63;
  font-size: 11px;
}
.homeVisual {
  min-height: 325px;
  justify-content: flex-start;
  padding-left: 8px;
}
.visualPanel {
  width: 560px;
  min-height: 250px;
  border-radius: 22px;
  background: #fff;
  border: 1px solid rgba(13, 38, 27, 0.08);
  box-shadow: 0 28px 70px rgba(16, 38, 29, 0.12);
  padding: 28px;
  transform: translateY(-2px);
}
.visualPanel:before {
  content: "";
  position: absolute;
  left: -90px;
  top: 24px;
  width: 78px;
  height: 168px;
  border-radius: 22px;
  background: #fff;
  border: 1px solid rgba(13, 38, 27, 0.06);
  box-shadow: 0 16px 44px rgba(16, 38, 29, 0.08);
}
.visualPanel:after {
  content: "👤";
  position: absolute;
  left: -63px;
  top: 50px;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: #e8f9ef;
  color: #0bad63;
  display: grid;
  place-items: center;
  font-size: 22px;
}
.chartLine {
  height: 170px;
  border-radius: 16px;
  background:
    linear-gradient(180deg, rgba(23, 174, 99, 0.13), rgba(23, 174, 99, 0.02)),
    repeating-linear-gradient(
      to bottom,
      transparent 0 39px,
      rgba(9, 37, 26, 0.07) 40px 41px
    );
}
.chartLine:before {
  display: none;
}
.chartLine:after {
  content: "";
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 520 170'%3E%3Cpath d='M8 118 C55 100 64 86 105 97 C145 108 155 53 205 63 C251 72 258 110 306 90 C351 71 356 44 405 58 C450 71 452 25 512 20' fill='none' stroke='%230cad62' stroke-width='5' stroke-linecap='round'/%3E%3Cg fill='%230cad62'%3E%3Ccircle cx='105' cy='97' r='5'/%3E%3Ccircle cx='205' cy='63' r='5'/%3E%3Ccircle cx='306' cy='90' r='5'/%3E%3Ccircle cx='405' cy='58' r='5'/%3E%3Ccircle cx='512' cy='20' r='5'/%3E%3C/g%3E%3C/svg%3E")
    center/100% 100% no-repeat;
}
.floatingMetric {
  border: none;
  border-radius: 18px;
  box-shadow: 0 22px 55px rgba(16, 38, 29, 0.14);
  padding: 17px 18px;
}
.floatingMetric b {
  font-size: 26px;
}
.floatingMetric span {
  color: #5e7068;
}
.metricWeight {
  right: -88px;
  top: 83px;
}
.metricVisit {
  right: -145px;
  bottom: -36px;
}
.metricBody {
  left: -220px;
  bottom: -2px;
  min-width: 205px;
}
.metricBody:before {
  content: "";
  float: left;
  width: 64px;
  height: 64px;
  margin-right: 13px;
  border-radius: 50%;
  background: conic-gradient(#0cad62 0 72%, #cdeedb 72% 100%);
}
.homeSectionTitle {
  margin: 36px 0 20px;
}
.homeSectionTitle h2 {
  font-size: 25px;
  letter-spacing: -0.04em;
  color: #071f18;
}
.homeFunctionGrid {
  grid-template-columns: repeat(7, 1fr);
  gap: 16px;
}
.homeFunctionCard {
  min-height: 170px;
  border-radius: 20px;
  padding: 28px 17px;
  background: #fff;
  border: 1px solid rgba(13, 38, 27, 0.08);
  box-shadow: 0 12px 34px rgba(16, 38, 29, 0.045);
}
.homeFunctionIcon {
  width: 58px;
  height: 58px;
  border-radius: 18px;
  background: #eaf9f0;
  font-size: 31px;
  margin-bottom: 16px;
}
.homeFunctionCard h3 {
  font-size: 16px;
  color: #071f18;
}
.homeFunctionCard p {
  font-size: 13.5px;
  color: #50635a;
  line-height: 1.5;
}
.homeFlow {
  margin-top: 30px;
  padding: 28px 34px;
  border-radius: 24px;
  background: #fff;
  border: 1px solid rgba(13, 38, 27, 0.08);
  box-shadow: 0 12px 34px rgba(16, 38, 29, 0.045);
}
.homeFlow h2 {
  font-size: 24px;
  margin-bottom: 24px;
}
.flowItems {
  gap: 18px;
}
.flowItem {
  grid-template-columns: auto auto 1fr;
  gap: 14px;
}
.flowIcon {
  width: 66px;
  height: 66px;
  background: #e8f9ef;
  font-size: 31px;
}
.flowNum {
  width: 26px;
  height: 26px;
  background: #0bad63;
}
.flowItem b {
  font-size: 16px;
}
.flowItem p {
  font-size: 13.5px;
  line-height: 1.45;
}
.flowArrow {
  color: #60756b;
  font-size: 42px;
}
.homeBenefitGrid {
  gap: 22px;
  margin-top: 28px;
}
.homeBenefitCard {
  border-radius: 22px;
  padding: 24px;
  background: linear-gradient(180deg, #fff, #fbfffd);
  border: 1px solid rgba(13, 38, 27, 0.08);
  box-shadow: 0 12px 34px rgba(16, 38, 29, 0.045);
}
.homeBenefitIcon {
  width: 68px;
  height: 68px;
}
.homeSecurity {
  font-size: 15px;
  margin-top: 18px;
}
@media (max-width: 1200px) {
  .homeIntro {
    grid-template-columns: 1fr;
    padding: 36px;
  }
  .homeFunctionGrid {
    grid-template-columns: repeat(3, 1fr);
  }
  .metricWeight,
  .metricVisit,
  .metricBody {
    position: static;
    margin-top: 12px;
  }
  .visualPanel:before,
  .visualPanel:after {
    display: none;
  }
  .flowItems {
    grid-template-columns: 1fr;
  }
  .flowArrow {
    display: none;
  }
  .homeBenefitGrid {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 700px) {
  #home {
    padding: 24px 16px;
  }
  .homeIntro h1 {
    font-size: 38px;
  }
  .homeIntro {
    padding: 28px 20px;
  }
  .homeFunctionGrid {
    grid-template-columns: 1fr;
  }
}

/* ACCESSO PAZIENTE - versione card green simile preview */
.patientPremiumHero {
  padding: 8px 0 4px;
}
.patientPremiumHero h2 {
  margin-bottom: 2px;
}
.patientAccent {
  color: #149456;
  font-weight: 800;
  margin: 0 0 8px;
}
.progressTrack {
  height: 10px;
  background: #e5f0e8;
  border-radius: 999px;
  overflow: hidden;
  max-width: 260px;
  margin-top: 10px;
}
.progressFill {
  height: 100%;
  background: linear-gradient(90deg, #2f9e68, #65d99c);
  border-radius: 999px;
  transition: 0.3s;
}
.patientDashGrid {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 18px;
  align-items: start;
  margin-top: 14px;
}
.buddyColumn {
  background: linear-gradient(160deg, #e8fbee, #cff6dd);
  border: 1px solid #bfead0;
  border-radius: 26px;
  padding: 20px;
  box-shadow: 0 12px 34px rgba(47, 158, 104, 0.1);
}
.buddyStage {
  height: 220px;
  display: grid;
  place-items: center;
  position: relative;
}
.buddyShadow {
  position: absolute;
  bottom: 38px;
  width: 210px;
  height: 58px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.62);
}
.nbMascot {
  width: 142px;
  height: 160px;
  position: relative;
  z-index: 2;
  animation: nbFloat 3s ease-in-out infinite;
}
@keyframes nbFloat {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-7px);
  }
}
.nbMascot .mBody {
  position: absolute;
  inset: 28px 14px 0;
  background: linear-gradient(145deg, #ffc44d, #ffb02e);
  border-radius: 48% 48% 43% 43%;
  box-shadow:
    inset -13px -13px 0 rgba(0, 0, 0, 0.06),
    0 18px 28px rgba(47, 158, 104, 0.12);
}
.nbMascot .mBelly {
  position: absolute;
  left: 50%;
  top: 84px;
  width: 70px;
  height: 58px;
  transform: translateX(-50%);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.58);
}
.nbMascot .mEye {
  position: absolute;
  top: 55px;
  width: 12px;
  height: 16px;
  border-radius: 50%;
  background: #10261d;
}
.nbMascot .mEye.l {
  left: 50px;
}
.nbMascot .mEye.r {
  right: 50px;
}
.nbMascot .mMouth {
  position: absolute;
  left: 50%;
  top: 80px;
  width: 30px;
  height: 13px;
  transform: translateX(-50%);
  border-bottom: 4px solid #10261d;
  border-radius: 0 0 30px 30px;
}
.nbMascot .mArm {
  position: absolute;
  top: 82px;
  width: 32px;
  height: 12px;
  background: #2f9e68;
  border-radius: 999px;
}
.nbMascot .mArm.l {
  left: 2px;
  transform: rotate(-25deg);
}
.nbMascot .mArm.r {
  right: 2px;
  transform: rotate(25deg);
}
.nbMascot .mLeg {
  position: absolute;
  bottom: -1px;
  width: 22px;
  height: 14px;
  background: #2f9e68;
  border-radius: 999px;
}
.nbMascot .mLeg.l {
  left: 43px;
}
.nbMascot .mLeg.r {
  right: 43px;
}
.buddyBubble {
  background: white;
  border-radius: 18px;
  padding: 13px 15px;
  font-weight: 800;
  color: #365247;
  box-shadow: 0 10px 25px rgba(16, 38, 29, 0.08);
  margin-bottom: 14px;
}
.todayCard,
.pathCard {
  background: white;
  border: 1px solid #dce9df;
  border-radius: 22px;
  padding: 16px;
  margin-top: 12px;
}
.todayGrid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-top: 12px;
}
.todayMini {
  background: #f8fcf9;
  border: 1px solid #e5f0e8;
  border-radius: 15px;
  padding: 12px;
  min-height: 70px;
}
.todayMini b {
  display: block;
}
.todayMini span {
  font-size: 12px;
  color: var(--muted);
}
.pathList {
  display: grid;
  gap: 9px;
  margin-top: 12px;
}
.pathItem {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 10px;
  align-items: start;
  padding: 11px;
  background: #f8fcf9;
  border: 1px solid #e5f0e8;
  border-radius: 15px;
}
.pathIcon {
  width: 32px;
  height: 32px;
  border-radius: 10px;
  background: #e8fbed;
  display: grid;
  place-items: center;
}
.pathItem span {
  font-size: 12px;
  color: var(--muted);
}
.patientRightStack {
  display: grid;
  gap: 14px;
}
.patientCheckCard,
.patientChartCard,
.nutritionistUpdate {
  background: white;
  border: 1px solid var(--border);
  border-radius: 24px;
  padding: 20px;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.045);
}
.nutritionistUpdate {
  margin-top: 16px;
}
.visitMessage {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  background: #fff;
  border: 1px solid #e5f0e8;
  border-radius: 18px;
  padding: 14px;
  margin-top: 12px;
}
.visitAvatar {
  width: 38px;
  height: 38px;
  border-radius: 12px;
  background: #e8fbed;
  display: grid;
  place-items: center;
  font-size: 18px;
  flex: 0 0 auto;
}
.visitMessage p {
  margin: 4px 0;
}
.floatingUpdate {
  position: fixed;
  right: 22px;
  bottom: 22px;
  z-index: 999;
  border: 0;
  border-radius: 999px;
  padding: 14px 20px;
  font-weight: 800;
  background: linear-gradient(135deg, #2f9e68, #65d99c);
  color: white;
  box-shadow: 0 18px 45px rgba(47, 158, 104, 0.3);
}
@media (max-width: 1000px) {
  .patientDashGrid {
    grid-template-columns: 1fr;
  }
  .todayGrid {
    grid-template-columns: 1fr;
  }
  .floatingUpdate {
    position: static;
    margin-top: 14px;
  }
}

/* ANAGRAFICA PRO - card gestionali compatte */
.registryIntro {
  margin-bottom: 14px;
}
.registryIntro h2 {
  margin: 0 0 4px;
}
.registryIntro p {
  margin: 0;
  color: var(--muted);
}
.registryGrid {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}
.registrySide,
.registryMain {
  display: grid;
  gap: 14px;
  align-content: start;
}
.registryCard {
  background: rgba(255, 255, 255, 0.92);
  border: 1px solid rgba(47, 158, 104, 0.18);
  border-radius: 22px;
  padding: 16px;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.05);
  min-width: 0;
  align-self: start;
}
.registryCard h3 {
  margin: 0 0 12px;
  font-size: 18px;
  letter-spacing: -0.03em;
  color: #082418;
}
.registryCard.wide {
  grid-column: auto;
}
.registryCard.fullWide {
  grid-column: 1/-1;
}
.profilePhotoBox {
  height: 138px;
  border-radius: 19px;
  background: linear-gradient(135deg, #eef8f1, #d8f5e4);
  display: grid;
  place-items: center;
  font-size: 54px;
  margin-bottom: 10px;
  border: 1px solid #dce9df;
}
.registryMiniActions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-bottom: 10px;
}
.registryRow {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 12px;
}
.registryRow.pathCompact {
  grid-template-columns: repeat(4, minmax(130px, 1fr));
  gap: 8px 10px;
}
.registryRow.pathCompact .registryField {
  margin-bottom: 4px;
}
.registryRow.pathCompact .registryField input,
.registryRow.pathCompact .registryField select {
  padding: 8px 10px;
  border-radius: 11px;
  min-height: 36px;
}
.registryRow.pathCompact .span2 {
  grid-column: span 2;
}
.registryRow.pathCompact .span4 {
  grid-column: 1/-1;
}
.pathNotes textarea {
  min-height: 56px;
}
.registryTwin {
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  gap: 14px;
  align-items: start;
}
.registrySubCard {
  background: #f8fcf9;
  border: 1px solid #e5f0e8;
  border-radius: 18px;
  padding: 14px;
}
.registrySubCard h3 {
  margin: 0 0 12px;
  font-size: 17px;
}
.registryTwin .registryField {
  margin-bottom: 8px;
}
.registrySaveLine {
  display: flex;
  justify-content: flex-end;
  margin-top: 12px;
}
.registryField {
  display: grid;
  gap: 5px;
  margin-bottom: 9px;
}
.registryField label {
  font-size: 12px;
  font-weight: 800;
  color: #365247;
}
.registryField input,
.registryField select,
.registryField textarea {
  width: 100%;
  border: 1px solid #dce9df;
  border-radius: 13px;
  padding: 11px;
  background: #fbfdfb;
  color: #17352a;
  outline: none;
}
.registryField textarea {
  min-height: 70px;
  resize: vertical;
}
.registryField input:focus,
.registryField select:focus,
.registryField textarea:focus {
  border-color: #65d99c;
  box-shadow: 0 0 0 4px rgba(101, 217, 156, 0.16);
}
.profileBadge {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 10px;
  border-radius: 999px;
  background: #e8fbed;
  color: #1b8f55;
  font-weight: 800;
  font-size: 12px;
  margin-bottom: 10px;
}
.profileStats {
  display: grid;
  gap: 8px;
}
.profileStat {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  padding: 9px 0;
  border-bottom: 1px solid #ecf2ee;
  font-size: 13px;
}
.profileStat:last-child {
  border-bottom: 0;
}
.profileStat b {
  color: #082418;
}
.docLine {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid #ecf2ee;
  font-size: 13px;
}
.docLine:last-child {
  border-bottom: 0;
}
.docStatus {
  font-weight: 800;
  color: #1b8f55;
}
.docStatus.todo {
  color: #a86700;
}
@media (max-width: 1250px) {
  .registryGrid {
    grid-template-columns: 240px minmax(0, 1fr);
  }
}
@media (max-width: 1050px) {
  .registryRow.pathCompact {
    grid-template-columns: repeat(2, minmax(150px, 1fr));
  }
  .registryRow.pathCompact .span2,
  .registryRow.pathCompact .span4 {
    grid-column: 1/-1;
  }
}
@media (max-width: 800px) {
  .registryGrid,
  .registryRow,
  .registryTwin,
  .registryRow.pathCompact {
    grid-template-columns: 1fr;
  }
  .registryRow.pathCompact .span2,
  .registryRow.pathCompact .span4 {
    grid-column: auto;
  }
  .registryCard.wide {
    grid-column: auto;
  }
  .registrySaveLine {
    justify-content: stretch;
  }
  .registrySaveLine .btn {
    width: 100%;
  }
}

.docLine.docAction {
  display: grid;
  grid-template-columns: 1fr 160px 160px;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border-bottom: 1px solid #ecf2ee;
  background: #fff;
}
.docLine.docAction:first-of-type {
  border-top: 1px solid #ecf2ee;
  border-radius: 16px 16px 0 0;
}
.docLine.docAction:last-child {
  border-bottom: 1px solid #ecf2ee;
  border-radius: 0 0 16px 16px;
}
.docState {
  font-weight: 800;
  color: #b96700;
  text-align: center;
}
.docState.signed {
  color: #149456;
}
.docSignBtn {
  border: 1px solid #86d6aa;
  background: #fff;
  color: #149456;
  border-radius: 10px;
  padding: 9px 18px;
  font-weight: 800;
  min-width: 120px;
}
.docSignBtn.signed {
  background: #e8fbed;
}
.docSignBtn:hover {
  background: #eef8f1;
}
@media (max-width: 800px) {
  .docLine.docAction {
    grid-template-columns: 1fr;
    align-items: start;
  }
  .docState {
    text-align: left;
  }
  .docSignBtn {
    width: 100%;
  }
}

/* PROFILO - bottoni foto più compatti */
.registryMiniActions {
  display: flex !important;
  gap: 8px !important;
  margin-bottom: 10px !important;
}
.registryMiniActions .btn {
  flex: 1;
  min-height: 38px;
  padding: 9px 10px !important;
  border-radius: 13px !important;
  font-size: 12px !important;
  line-height: 1.1;
  box-shadow: none !important;
}
.registryMiniActions .btn.soft {
  background: #eef8f1 !important;
  border: 1px solid #ccecd6 !important;
  color: #149456 !important;
}
.registryMiniActions .btn.ghost {
  background: #fff !important;
  border: 1px solid #dce9df !important;
  color: #17352a !important;
}
.profilePhotoBox {
  height: 120px !important;
  margin-bottom: 9px !important;
  overflow: hidden;
  position: relative;
}
.profilePhotoBox img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

.profilePhotoImg {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 19px;
  display: block;
}
.profilePhotoBox {
  overflow: hidden;
}

/* FOTO PROFILO - adattamento reale senza deformazioni */
.profilePhotoBox {
  height: 120px !important;
  margin-bottom: 9px !important;
  overflow: hidden !important;
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  background: linear-gradient(135deg, #eef8f1, #d8f5e4);
}
.profilePhotoBox.hasPhoto {
  background-size: cover !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
}
.profilePhotoBox.hasPhoto .profilePlaceholder {
  display: none !important;
}
.profilePlaceholder {
  font-size: 54px;
  line-height: 1;
}

/* ANAMNESI PRO - stile clinico */
.clinicalAnamnesis {
  display: grid;
  grid-template-columns: 320px minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
.clinicalSide,
.clinicalMain {
  display: grid;
  gap: 12px;
}
.clinicalPanel {
  background: #fff;
  border: 1px solid rgba(47, 158, 104, 0.18);
  border-radius: 22px;
  padding: 16px;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.05);
}
.clinicalTitle {
  display: flex;
  align-items: center;
  gap: 10px;
  color: #149456;
  font-size: 18px;
  font-weight: 800;
  margin: 0 0 12px;
}
.clinicalSearch {
  width: 100%;
  border: 1px solid #dce9df;
  border-radius: 14px;
  padding: 12px 13px;
  background: #fbfdfb;
  color: #17352a;
  outline: none;
  margin-bottom: 12px;
}
.clinicalCategory {
  margin: 12px 0 6px;
  padding: 9px 11px;
  border-radius: 12px;
  background: #eef8f1;
  color: #149456;
  font-size: 12px;
  font-weight: 800;
}
.clinicalCondition {
  width: 100%;
  border: 0;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 11px 10px;
  border-radius: 12px;
  text-align: left;
  color: #17352a;
  font-weight: 800;
}
.clinicalCondition:hover {
  background: #f8fcf9;
}
.clinicalCondition.active {
  background: linear-gradient(135deg, #2f9e68, #65d99c);
  color: #fff;
}
.clinicalPlus {
  width: 24px;
  height: 24px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  background: #e8fbed;
  color: #149456;
  font-weight: 800;
  flex: 0 0 auto;
}
.clinicalCondition.active .clinicalPlus {
  background: rgba(255, 255, 255, 0.22);
  color: #fff;
}
.clinicalInfoBox {
  border: 1px solid #e5f0e8;
  border-radius: 18px;
  overflow: hidden;
  background: #fff;
  margin-bottom: 12px;
}
.clinicalInfoHead {
  background: #42667f;
  color: #fff;
  padding: 11px 14px;
  font-weight: 800;
}
.clinicalInfoBody {
  padding: 14px 16px;
  color: #365247;
  line-height: 1.45;
}
.clinicalInfoBody ul {
  margin: 8px 0 0 18px;
  padding: 0;
}
.clinicalSelected {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.clinicalChip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 12px;
  border-radius: 999px;
  background: #e8fbed;
  border: 1px solid #ccecd6;
  color: #149456;
  font-weight: 800;
  font-size: 13px;
}
.clinicalNotesGrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.clinicalNotesGrid .full {
  grid-column: 1/-1;
}
@media (max-width: 1000px) {
  .clinicalAnamnesis {
    grid-template-columns: 1fr;
  }
  .clinicalNotesGrid {
    grid-template-columns: 1fr;
  }
}

/* GRAFICO PESO PREMIUM SAFE */
.chart {
  height: auto !important;
  min-height: 0 !important;
  background: white !important;
  border: 0 !important;
  border-radius: 0 !important;
  padding: 0 !important;
}
.weightChartPremium {
  background: #fff;
  border: 1px solid #dce9df;
  border-radius: 28px;
  padding: 18px;
}
.weightKpiGrid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-bottom: 16px;
}
.weightKpi {
  border: 1px solid #dce9df;
  border-radius: 20px;
  padding: 16px 18px;
  background: #fff;
}
.weightKpi b {
  display: block;
  font-size: 25px;
  letter-spacing: -0.04em;
  color: #082418;
}
.weightKpi.good b {
  color: #149456;
}
.weightKpi.warn b {
  color: #b96700;
}
.weightKpi span {
  display: block;
  color: #6a7c74;
  font-size: 13px;
  margin-top: 4px;
}
.weightSvgWrap {
  border: 1px solid #dce9df;
  border-radius: 24px;
  padding: 18px;
  background: #fff;
  overflow: hidden;
}
.weightSvgWrap svg {
  width: 100%;
  height: 360px;
  display: block;
  overflow: visible;
}
.weightFooter {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border: 1px solid #dce9df;
  border-radius: 22px;
  overflow: hidden;
  margin-top: 16px;
  background: #fff;
}
.weightFooterItem {
  display: flex;
  gap: 13px;
  align-items: center;
  padding: 18px;
  border-right: 1px solid #e5f0e8;
}
.weightFooterItem:last-child {
  border-right: 0;
}
.weightFooterIcon {
  width: 44px;
  height: 44px;
  border-radius: 16px;
  display: grid;
  place-items: center;
  background: #e8fbed;
  color: #149456;
  font-weight: 800;
  font-size: 20px;
  flex: 0 0 auto;
}
.weightFooterItem b {
  display: block;
  font-size: 17px;
  color: #082418;
}
.weightFooterItem span {
  display: block;
  font-size: 13px;
  color: #6a7c74;
  margin-top: 3px;
}
@media (max-width: 800px) {
  .weightKpiGrid,
  .weightFooter {
    grid-template-columns: 1fr;
  }
  .weightFooterItem {
    border-right: 0;
    border-bottom: 1px solid #e5f0e8;
  }
  .weightFooterItem:last-child {
    border-bottom: 0;
  }
  .weightSvgWrap svg {
    height: 300px;
  }
}

/* ANDAMENTO CHARTS FULL WIDTH FIX */
.andamentoChartsFull {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 16px !important;
  width: 100% !important;
}
.andamentoChartsFull .fullSectionCard {
  width: 100% !important;
  max-width: none !important;
  margin-top: 0 !important;
  overflow: hidden !important;
}
.andamentoChartsFull .chart {
  width: 100% !important;
  max-width: none !important;
}
.andamentoChartsFull .weightChartPremium,
.andamentoChartsFull .weightSvgWrap {
  width: 100% !important;
  max-width: none !important;
  box-sizing: border-box !important;
}
.andamentoChartsFull .weightSvgWrap svg {
  width: 100% !important;
  min-width: 0 !important;
  height: 360px !important;
}
.andamentoChartsFull .weightChartPremium > .weightSvgWrap svg {
  height: 390px !important;
}
@media (max-width: 900px) {
  .andamentoChartsFull .weightSvgWrap svg,
  .andamentoChartsFull .weightChartPremium > .weightSvgWrap svg {
    height: 300px !important;
  }
}

/* AVATAR FIX DEFINITIVO - IMG VISIBILE + CROP */
.profilePhotoBox {
  height: 120px !important;
  margin-bottom: 9px !important;
  overflow: hidden !important;
  position: relative !important;
  background: linear-gradient(135deg, #eef8f1, #d8f5e4) !important;
  display: grid !important;
  place-items: center !important;
  font-size: 54px !important;
  border-radius: 19px !important;
  border: 1px solid #dce9df !important;
}
.profilePhotoBox img.profilePhotoImg {
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
  object-position: center !important;
  display: block !important;
  position: absolute !important;
  inset: 0 !important;
  padding: 6px !important;
}
.profilePhotoBox.hasPhoto .profilePlaceholder {
  display: none !important;
}
.hiddenFileInput {
  display: none !important;
}

/* LISTA PAZIENTI - STATUS DOT + SETTINGS MENU FIX */
.patientrow {
  grid-template-columns: auto 1fr auto auto !important;
  position: relative !important;
}
.statusDot {
  width: 11px;
  height: 11px;
  border-radius: 999px;
  display: inline-block;
  box-shadow: 0 0 0 4px rgba(47, 158, 104, 0.08);
}
.statusDot.ok {
  background: #20b26b;
}
.statusDot.mid {
  background: #ffb84d;
}
.statusDot.high {
  background: #ff6b6b;
}
.patientLegend {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  align-items: center;
  margin: 10px 0 12px;
  font-size: 12px;
  color: #6a7c74;
  font-weight: 800;
}
.patientLegend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.patientSettingsBtn {
  width: 34px;
  height: 34px;
  border: 1px solid #dce9df;
  background: #fff;
  border-radius: 12px;
  display: grid;
  place-items: center;
  font-size: 16px;
  cursor: pointer;
}
.patientSettingsBtn:hover {
  background: #eef8f1;
}
.patientMenu {
  position: absolute;
  right: 10px;
  top: 48px;
  z-index: 50;
  width: 170px;
  background: #fff;
  border: 1px solid #dce9df;
  border-radius: 16px;
  box-shadow: 0 18px 45px rgba(16, 38, 29, 0.16);
  padding: 7px;
  display: none;
}
.patientMenu.open {
  display: grid;
}
.patientMenu button {
  border: 0;
  background: #fff;
  border-radius: 11px;
  padding: 10px 11px;
  text-align: left;
  font-weight: 800;
  color: #17352a;
}
.patientMenu button:hover {
  background: #eef8f1;
}
.patientMenu button.delete {
  color: #b42318;
}

/* FIX DEFINITIVO LISTA PAZIENTI */
.patientLegend + .patientLegend {
  display: none !important;
}
.patientrow {
  display: grid !important;
  grid-template-columns: auto 1fr auto auto !important;
  gap: 10px !important;
  align-items: center !important;
  padding: 12px !important;
  border-radius: 18px !important;
  background: #f8fcf9 !important;
  border: 1px solid #e5f0e8 !important;
  text-align: left !important;
  width: 100% !important;
  position: relative !important;
  overflow: visible !important;
  cursor: pointer !important;
}
.patientSettingsBtn {
  width: 34px !important;
  height: 34px !important;
  min-width: 34px !important;
  border: 1px solid #dce9df !important;
  background: #fff !important;
  border-radius: 12px !important;
  display: grid !important;
  place-items: center !important;
  font-size: 16px !important;
  cursor: pointer !important;
  padding: 0 !important;
  z-index: 20 !important;
}
.patientSettingsBtn:hover {
  background: #eef8f1 !important;
}
.patientMenu {
  position: absolute !important;
  right: 10px !important;
  top: 52px !important;
  z-index: 9999 !important;
  width: 180px !important;
  background: #fff !important;
  border: 1px solid #dce9df !important;
  border-radius: 16px !important;
  box-shadow: 0 18px 45px rgba(16, 38, 29, 0.2) !important;
  padding: 7px !important;
  display: none !important;
}
.patientMenu.open {
  display: grid !important;
}
.patientMenu button {
  border: 0 !important;
  background: #fff !important;
  border-radius: 11px !important;
  padding: 10px 11px !important;
  text-align: left !important;
  font-weight: 800 !important;
  color: #17352a !important;
  cursor: pointer !important;
}
.patientMenu button:hover {
  background: #eef8f1 !important;
}
.patientMenu button.delete {
  color: #b42318 !important;
}
.statusDot {
  width: 11px !important;
  height: 11px !important;
  border-radius: 999px !important;
  display: inline-block !important;
}
.statusDot.ok {
  background: #20b26b !important;
}
.statusDot.mid {
  background: #ffb84d !important;
}
.statusDot.high {
  background: #ff6b6b !important;
}
.patientLegend {
  display: flex !important;
  gap: 10px !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  margin: 10px 0 12px !important;
  font-size: 12px !important;
  color: #6a7c74 !important;
  font-weight: 800 !important;
}
.patientLegend span {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
}

/* NASCONDI EVENTUALI LEGGENDE VECCHIE DUPLICATE */
.patientLegendOld,
.patientLegend.legacy,
.patientLegend + .patientLegend {
  display: none !important;
}

/* SITUAZIONE PAZIENTE */
.situationGrid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-top: 14px;
}
.situationCard {
  background: #fff;
  border: 1px solid #dce9df;
  border-radius: 22px;
  padding: 18px;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.04);
}
.situationCard b {
  display: block;
  font-size: 28px;
  letter-spacing: -0.04em;
  color: #149456;
}
.situationCard span {
  display: block;
  font-size: 13px;
  color: #6a7c74;
  margin-top: 4px;
}
.situationPanel {
  background: #fff;
  border: 1px solid #dce9df;
  border-radius: 24px;
  padding: 18px;
  margin-top: 14px;
}
.situationMiniChart {
  height: 190px;
  border: 1px solid #e5f0e8;
  border-radius: 18px;
  background: linear-gradient(180deg, #fff, #f8fcf9);
  display: grid;
  place-items: center;
  color: #6a7c74;
  font-weight: 800;
}
@media (max-width: 900px) {
  .situationGrid {
    grid-template-columns: 1fr 1fr;
  }
}
@media (max-width: 600px) {
  .situationGrid {
    grid-template-columns: 1fr;
  }
}

/* KPI COMPATTI + PANORAMICA STUDIO */
.adminTopRow {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.adminQuickActions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.kpis.compactKpis {
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}
.compactKpis .kpi {
  padding: 12px 15px;
  border-radius: 18px;
  min-height: 72px;
}
.compactKpis .kpi b {
  font-size: 21px;
}
.compactKpis .kpi span {
  font-size: 12px;
  margin-top: 2px;
}
.studioDashGrid {
  display: grid;
  grid-template-columns: 1.1fr 2fr 1.2fr;
  gap: 14px;
}
.studioDashGrid2 {
  display: grid;
  grid-template-columns: 1fr 1.4fr 1.1fr;
  gap: 14px;
  margin-top: 14px;
}
.studioDashCard {
  background: #fff;
  border: 1px solid #dce9df;
  border-radius: 24px;
  padding: 18px;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.05);
  min-height: 230px;
}
.studioDashCard h3 {
  margin: 0 0 6px;
  font-size: 20px;
  color: #082418;
}
.studioDashCard p {
  margin: 0 0 12px;
  font-size: 13px;
}
.todayStats {
  display: grid;
  gap: 14px;
  margin-top: 14px;
}
.todayStat {
  display: flex;
  align-items: center;
  gap: 12px;
}
.todayIcon {
  width: 44px;
  height: 44px;
  border-radius: 16px;
  display: grid;
  place-items: center;
  background: #eef8f1;
  color: #149456;
  font-weight: 800;
  font-size: 18px;
}
.todayStat b {
  display: block;
  font-size: 24px;
  color: #149456;
}
.todayStat span {
  display: block;
  font-size: 13px;
  color: #365247;
}
.fakeBarChart {
  height: 170px;
  border: 1px solid #e5f0e8;
  border-radius: 18px;
  padding: 18px;
  display: flex;
  align-items: end;
  gap: 14px;
  background: linear-gradient(180deg, #fff, #f8fcf9);
}
.fakeBar {
  flex: 1;
  min-width: 18px;
  border-radius: 12px 12px 0 0;
  background: linear-gradient(180deg, #65d99c, #2f9e68);
  opacity: 0.9;
  position: relative;
}
.fakeBar small {
  position: absolute;
  bottom: -24px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 11px;
  color: #6a7c74;
}
.donutWrap {
  display: grid;
  place-items: center;
  min-height: 170px;
}
.donut {
  width: 150px;
  height: 150px;
  border-radius: 50%;
  background: conic-gradient(#2f9e68 0 75%, #e5f0e8 75% 100%);
  position: relative;
}
.donut:after {
  content: "";
  position: absolute;
  inset: 38px;
  background: #fff;
  border-radius: 50%;
}
.emptyChart {
  height: 170px;
  border: 1px solid #e5f0e8;
  border-radius: 18px;
  display: grid;
  place-items: center;
  text-align: center;
  color: #9aa9a1;
  font-weight: 800;
  background: #fff;
}
.monthStats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-top: 14px;
}
.monthStat b {
  display: block;
  font-size: 24px;
  color: #149456;
}
.monthStat span {
  font-size: 13px;
  color: #365247;
}
@media (max-width: 1100px) {
  .studioDashGrid,
  .studioDashGrid2 {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 800px) {
  .kpis.compactKpis {
    grid-template-columns: 1fr 1fr;
  }
}
@media (max-width: 550px) {
  .kpis.compactKpis {
    grid-template-columns: 1fr;
  }
}

/* VISITE BILLING */
.visitBillingGrid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 12px;
  margin-top: 14px;
}
.billingBadge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
}
.billingBadge.paid {
  background: #eaf8f0;
  color: #149456;
}
.billingBadge.unpaid {
  background: #fff1f1;
  color: #d64545;
}
@media (max-width: 700px) {
  .visitBillingGrid {
    grid-template-columns: 1fr;
  }
}

/* CAMPI PAGAMENTO VISITA */
.visitBillingGrid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 10px;
  margin: 12px 0 4px;
}
.visitBillingGrid .field label {
  font-size: 13px;
  font-weight: 800;
  color: #365247;
}
.visitBillingGrid input,
.visitBillingGrid select {
  width: 100%;
  border: 1px solid #dce9df;
  border-radius: 16px;
  padding: 13px;
  background: #fbfdfb;
  color: #17352a;
  outline: none;
}
@media (max-width: 800px) {
  .visitBillingGrid {
    grid-template-columns: 1fr;
  }
}

/* DASHBOARD DINAMICA */
.financeSummary {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-top: 14px;
}
.financeBox {
  border: 1px solid #e5f0e8;
  background: #f8fcf9;
  border-radius: 18px;
  padding: 14px;
}
.financeBox b {
  display: block;
  font-size: 24px;
  color: #149456;
}
.financeBox.unpaid b {
  color: #d64545;
}
.financeBox span {
  display: block;
  margin-top: 4px;
  color: #6a7c74;
  font-size: 13px;
}
.realBarChart {
  height: 190px;
  border: 1px solid #e5f0e8;
  border-radius: 18px;
  padding: 18px 14px 30px;
  display: flex;
  align-items: end;
  gap: 10px;
  background: linear-gradient(180deg, #fff, #f8fcf9);
  position: relative;
}
.realBar {
  flex: 1;
  min-width: 16px;
  border-radius: 12px 12px 0 0;
  background: linear-gradient(180deg, #65d99c, #2f9e68);
  position: relative;
  min-height: 4px;
}
.realBar small {
  position: absolute;
  bottom: -22px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 11px;
  color: #6a7c74;
}
.realBar em {
  position: absolute;
  top: -22px;
  left: 50%;
  transform: translateX(-50%);
  font-style: normal;
  font-size: 11px;
  font-weight: 800;
  color: #149456;
  white-space: nowrap;
}
.paymentMethodList {
  display: grid;
  gap: 10px;
  margin-top: 10px;
}
.paymentMethodRow {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  border: 1px solid #e5f0e8;
  border-radius: 14px;
  padding: 11px 12px;
  background: #f8fcf9;
}
.paymentMethodRow b {
  color: #082418;
}
.paymentMethodRow span {
  color: #149456;
  font-weight: 800;
}
@media (max-width: 800px) {
  .financeSummary {
    grid-template-columns: 1fr;
  }
}

/* STATO PAGAMENTO - STORICO VISITE */
.payCell {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.payBadge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 8px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
  border: 1px solid transparent;
  letter-spacing: 0.02em;
}
.payBadge.paid {
  background: #e8fbed;
  border-color: #ccecd6;
  color: #149456;
}
.payBadge.unpaid {
  background: #fff0f0;
  border-color: #ffd1d1;
  color: #b42318;
}
.payMethod {
  font-size: 11px;
  color: #6a7c74;
  font-weight: 800;
}
.amountStrong {
  font-weight: 800;
  color: #082418;
}
.amountStrong.paid {
  color: #149456;
}
.amountStrong.unpaid {
  color: #b42318;
}

/* AGENDA INTERNA + GOOGLE CALENDAR OPTIONAL */
.appointmentGrid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 10px;
  margin: 12px 0;
}
.appointmentGrid input,
.appointmentGrid select {
  width: 100%;
  border: 1px solid #dce9df;
  border-radius: 16px;
  padding: 13px;
  background: #fbfdfb;
  color: #17352a;
  outline: none;
}
.appointmentList {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}
.appointmentCard {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 12px;
  align-items: center;
  border: 1px solid #e5f0e8;
  background: #f8fcf9;
  border-radius: 18px;
  padding: 13px;
}
.appointmentIcon {
  width: 42px;
  height: 42px;
  border-radius: 15px;
  display: grid;
  place-items: center;
  background: #e8fbed;
  color: #149456;
  font-size: 18px;
  font-weight: 800;
}
.appointmentCard b {
  display: block;
  color: #082418;
}
.appointmentCard span {
  display: block;
  font-size: 12px;
  color: #6a7c74;
  margin-top: 3px;
}
.agendaBadge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 9px;
  border-radius: 999px;
  background: #e8fbed;
  color: #149456;
  font-size: 11px;
  font-weight: 800;
}
@media (max-width: 900px) {
  .appointmentGrid {
    grid-template-columns: 1fr;
  }
  .appointmentCard {
    grid-template-columns: auto 1fr;
  }
  .appointmentCard .btn {
    grid-column: 1/-1;
    width: 100%;
  }
}

/* FILE PAZIENTE + MATERIALI FISIOPATOLOGIE */
.fileGrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: start;
}
.fileBox {
  background: #fff;
  border: 1px solid #dce9df;
  border-radius: 24px;
  padding: 18px;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.05);
}
.fileBox h2 {
  font-size: 24px;
  margin: 0 0 6px;
  color: #082418;
}
.fileUploadArea {
  border: 2px dashed #ccecd6;
  background: #f8fcf9;
  border-radius: 20px;
  padding: 18px;
  text-align: center;
  margin-top: 12px;
}
.fileList {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}
.fileItem {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 12px;
  align-items: center;
  border: 1px solid #e5f0e8;
  background: #f8fcf9;
  border-radius: 18px;
  padding: 13px;
}
.fileIcon {
  width: 42px;
  height: 42px;
  border-radius: 15px;
  background: #e8fbed;
  color: #149456;
  display: grid;
  place-items: center;
  font-size: 20px;
  font-weight: 800;
}
.fileItem b {
  display: block;
  color: #082418;
}
.fileItem span {
  display: block;
  font-size: 12px;
  color: #6a7c74;
  margin-top: 3px;
}
.fileActions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.protocolCard {
  border: 1px solid #e5f0e8;
  background: linear-gradient(135deg, #fff, #f8fcf9);
  border-radius: 20px;
  padding: 15px;
  margin-top: 10px;
}
.protocolCardHeader {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}
.protocolBadge {
  display: inline-flex;
  padding: 6px 9px;
  border-radius: 999px;
  background: #e8fbed;
  color: #149456;
  font-size: 11px;
  font-weight: 800;
  margin-top: 6px;
}
.protocolPreview {
  margin-top: 12px;
  color: #365247;
  font-size: 13px;
  line-height: 1.45;
}
.protocolPreview ul {
  margin: 8px 0 0 18px;
  padding: 0;
}
.visibilityToggle {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 800;
  color: #365247;
  margin-top: 10px;
}
.patientMaterials {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 24px;
  padding: 20px;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.045);
  margin-bottom: 14px;
}
.materialList {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}
.materialCard {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 12px;
  align-items: center;
  border: 1px solid #e5f0e8;
  background: #f8fcf9;
  border-radius: 18px;
  padding: 13px;
}
.materialIcon {
  width: 42px;
  height: 42px;
  border-radius: 15px;
  background: #e8fbed;
  color: #149456;
  display: grid;
  place-items: center;
  font-size: 19px;
}
.materialCard b {
  display: block;
  color: #082418;
}
.materialCard span {
  display: block;
  font-size: 12px;
  color: #6a7c74;
  margin-top: 3px;
}
@media (max-width: 1000px) {
  .fileGrid {
    grid-template-columns: 1fr;
  }
  .fileItem,
  .materialCard {
    grid-template-columns: auto 1fr;
  }
  .fileActions,
  .materialCard .btn {
    grid-column: 1/-1;
    width: 100%;
  }
  .fileActions .btn {
    flex: 1;
  }
}

/* LIBRERIA FILE GLOBALE + ASSEGNAZIONE MATERIALI */
.libraryGrid {
  display: grid;
  grid-template-columns: 380px minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}
.libraryPanel {
  background: #fff;
  border: 1px solid #dce9df;
  border-radius: 24px;
  padding: 20px;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.05);
}
.libraryPanel h2 {
  margin: 0 0 6px;
}
.libraryUploadArea {
  border: 2px dashed #bfead0;
  border-radius: 22px;
  padding: 22px;
  text-align: center;
  background: #f8fcf9;
  margin-top: 14px;
}
.libraryList {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}
.libraryItem {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 12px;
  align-items: center;
  border: 1px solid #e5f0e8;
  background: #f8fcf9;
  border-radius: 18px;
  padding: 13px;
}
.libraryIcon {
  width: 42px;
  height: 42px;
  border-radius: 15px;
  background: #e8fbed;
  color: #149456;
  display: grid;
  place-items: center;
  font-size: 19px;
}
.libraryItem b {
  display: block;
  color: #082418;
}
.libraryItem span {
  display: block;
  font-size: 12px;
  color: #6a7c74;
  margin-top: 3px;
}
.libraryActions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.assignBox {
  border: 1px solid #dce9df;
  border-radius: 18px;
  background: #fff;
  padding: 12px;
  margin-top: 12px;
}
.assignRow {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 10px;
  align-items: center;
  border: 1px solid #e5f0e8;
  background: #f8fcf9;
  border-radius: 15px;
  padding: 12px;
  margin-bottom: 9px;
}
.assignRow:last-child {
  margin-bottom: 0;
}
.assignRow input {
  width: 18px;
  height: 18px;
  accent-color: #2f9e68;
}
.assignRow b {
  display: block;
  color: #082418;
}
.assignRow span {
  display: block;
  color: #6a7c74;
  font-size: 12px;
  margin-top: 3px;
}
.assignTag {
  font-size: 11px;
  font-weight: 800;
  background: #e8fbed;
  color: #149456;
  border-radius: 999px;
  padding: 6px 9px;
}
.libraryEmpty {
  color: var(--muted);
  padding: 24px;
  text-align: center;
  border: 1px dashed #dce9df;
  border-radius: 18px;
  background: #f8fcf9;
}
@media (max-width: 1000px) {
  .libraryGrid {
    grid-template-columns: 1fr;
  }
  .libraryItem {
    grid-template-columns: auto 1fr;
  }
  .libraryActions {
    grid-column: 1/-1;
  }
  .libraryActions .btn {
    flex: 1;
  }
  .assignRow {
    grid-template-columns: auto 1fr;
  }
  .assignTag {
    grid-column: 1/-1;
    justify-self: start;
  }
}

/* AUTH APP VERA */
.authTabs {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 10px;
  margin: 14px auto 28px;
  width: 100%;
}
.authTab {
  border: 1px solid rgba(255, 255, 255, 0.18);
  background: rgba(255, 255, 255, 0.08);
  color: white;
  border-radius: 14px;
  padding: 12px 20px;
  font-weight: 800;
  min-width: 122px;
  text-align: center;
}
.authTab.active {
  background: linear-gradient(135deg, var(--green), var(--green2));
  border-color: transparent;
}
.authForm {
  display: none;
  gap: 10px;
  text-align: left;
}
.authForm.active {
  display: grid;
}
.authLabel {
  font-size: 12px;
  font-weight: 800;
  color: rgba(255, 255, 255, 0.72);
}
.authInput {
  width: 100%;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 15px;
  padding: 13px;
  background: rgba(255, 255, 255, 0.08);
  color: white;
  outline: none;
}
.authInput::placeholder {
  color: rgba(255, 255, 255, 0.45);
}
.authHint {
  font-size: 12px;
  color: rgba(255, 255, 255, 0.66);
  line-height: 1.45;
}
.userBadge {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid #dce9df;
  background: #fff;
  border-radius: 999px;
  padding: 9px 12px;
  font-weight: 800;
  color: #365247;
}

/* SUPER ADMIN PANEL */
.superAdminGrid {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 16px;
  align-items: start;
}
.superAdminPanel {
  background: #fff;
  border: 1px solid #dce9df;
  border-radius: 24px;
  padding: 18px;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.05);
}
.superAdminPanel h3 {
  margin: 0 0 8px;
  color: #082418;
  font-size: 21px;
}
.superAdminTable {
  width: 100%;
  border-collapse: collapse;
  margin-top: 12px;
}
.superAdminTable th,
.superAdminTable td {
  text-align: left;
  padding: 11px;
  border-bottom: 1px solid #ecf2ee;
  font-size: 14px;
  vertical-align: middle;
}
.superAdminTable th {
  font-size: 12px;
  text-transform: uppercase;
  color: #6a7c74;
}
.roleBadge {
  display: inline-flex;
  padding: 6px 9px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  background: #eef8f1;
  color: #149456;
}
.roleBadge.super_admin {
  background: #10261d;
  color: #fff;
}
.roleBadge.patient {
  background: #fff5df;
  color: #a86700;
}

.superAdminPatientLayout {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  gap: 16px;
  align-items: start;
  margin-top: 12px;
}
.superAdminSideList {
  background: #f8fcf9;
  border: 1px solid #e5f0e8;
  border-radius: 18px;
  padding: 10px;
  display: grid;
  gap: 8px;
}
.superAdminSideBtn {
  border: 1px solid #dce9df;
  background: #fff;
  border-radius: 14px;
  padding: 12px;
  text-align: left;
  font-weight: 800;
  color: #17352a;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  gap: 8px;
  align-items: center;
}
.superAdminSideBtn:hover {
  background: #eef8f1;
}
.superAdminSideBtn.active {
  background: #10261d;
  color: #fff;
  border-color: #10261d;
}
.superAdminSideBtn small {
  display: block;
  font-weight: 700;
  opacity: 0.75;
  margin-top: 2px;
}
.superAdminCount {
  background: #e8fbed;
  color: #149456;
  border-radius: 999px;
  padding: 5px 8px;
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
}
.superAdminSideBtn.active .superAdminCount {
  background: rgba(255, 255, 255, 0.16);
  color: #fff;
}
@media (max-width: 900px) {
  .superAdminPatientLayout {
    grid-template-columns: 1fr;
  }
}
.adminNotice {
  padding: 13px 14px;
  border-radius: 16px;
  background: #eef8f1;
  border: 1px solid #ccecd6;
  color: #365247;
  font-weight: 800;
  margin: 12px 0;
}
.adminCode {
  background: #10261d;
  color: #fff;
  border-radius: 18px;
  padding: 14px;
  overflow: auto;
  font-size: 12px;
  line-height: 1.55;
  white-space: pre-wrap;
}
@media (max-width: 1000px) {
  .superAdminGrid {
    grid-template-columns: 1fr;
  }
}

.superAdminHeroStats {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
  margin: 0 0 18px;
}
.superAdminHeroStat {
  background: linear-gradient(135deg, #f8fffb, #eefbf3);
  border: 1px solid #d7eddf;
  border-radius: 20px;
  padding: 16px;
  box-shadow: 0 10px 24px rgba(16, 38, 29, 0.05);
}
.superAdminHeroStat b {
  display: block;
  font-size: 28px;
  line-height: 1;
  color: #082418;
  margin-bottom: 6px;
}
.superAdminHeroStat span {
  font-size: 12px;
  color: #60746a;
  font-weight: 800;
}
.superAdminHeroStat small {
  display: block;
  margin-top: 6px;
  color: #7d8f87;
  font-size: 11px;
}
.superAdminQuickGrid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 0 0 18px;
}
.superAdminQuickCard {
  border: 1px solid #dce9df;
  background: #fff;
  border-radius: 18px;
  padding: 14px;
  text-align: left;
  cursor: pointer;
  font-weight: 900;
  color: #0a3926;
  box-shadow: 0 8px 20px rgba(16, 38, 29, 0.04);
}
.superAdminQuickCard:hover {
  background: #f4fcf7;
  transform: translateY(-1px);
}
.superAdminQuickCard span {
  display: block;
  color: #6a7c74;
  font-size: 12px;
  font-weight: 700;
  margin-top: 4px;
}
.superAdminTable .miniMuted {
  color: #6a7c74;
  font-size: 12px;
}
.superAdminTable .linkMetric {
  font-weight: 900;
  color: #13985b;
  cursor: pointer;
  text-decoration: none;
}
.superAdminTable .statusDot {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: 5px 10px;
  font-size: 11px;
  font-weight: 900;
  border: 1px solid #dce9df;
  background: #f8fcf9;
  color: #0a3926;
}
.superAdminTable .statusDot.warn {
  background: #fff7e6;
  border-color: #ffe0a6;
  color: #8a5a00;
}
.superAdminTable .statusDot.ok {
  background: #eafbf0;
  border-color: #c9efd5;
  color: #078345;
}
.superAdminTable .statusDot.bad {
  background: #fff1f1;
  border-color: #ffc7c7;
  color: #b42323;
}
.superAdminTable .plainAccountStatus {
  display: inline;
  white-space: nowrap;
  font-size: 12px;
  font-weight: 900;
  color: #0a3926;
}
.superAdminTable .plainAccountStatus.is-pending {
  color: #8a5a00;
}
.superAdminTable .plainAccountStatus.is-active {
  color: #078345;
}
.superAdminCreateActions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 10px;
}
.superAdminPasswordRow {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 10px;
  align-items: end;
}
.superAdminPasswordRow .field {
  min-width: 0;
}
.btn.generatePasswordBtn {
  height: 44px;
  padding: 0 16px;
  border-radius: 14px;
  white-space: nowrap;
}
.superAdminCreateHint {
  background: #f8fcf9;
  border: 1px solid #e5f0e8;
  border-radius: 14px;
  padding: 16px 18px;
  color: #60746a;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.45;
  margin-top: 14px;
  min-height: 74px;
  display: flex;
  align-items: center;
}
.superAdminCreateHint .dangerText {
  color: #d92d20;
  font-weight: 900;
}

.superAdminPolicyWarn {
  background: #fff7e6;
  border: 1px solid #ffd591;
  color: #7a4b00;
  border-radius: 16px;
  padding: 14px 16px;
  margin: 0 0 14px;
  font-weight: 800;
  line-height: 1.45;
}
.superAdminPolicyWarn button {
  margin-left: 10px;
}
@media (max-width: 1100px) {
  .superAdminHeroStats {
    grid-template-columns: repeat(2, 1fr);
  }
  .superAdminQuickGrid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 650px) {
  .superAdminHeroStats,
  .superAdminQuickGrid {
    grid-template-columns: 1fr;
  }
}

/* SUPER ADMIN CREATE NUTRITIONIST - layout compatto */
.superAdminPanel .adminNotice {
  padding: 10px 12px !important;
  border-radius: 12px !important;
  font-size: 12px !important;
  line-height: 1.35 !important;
  margin: 8px 0 10px !important;
}
.superAdminPanel h3 {
  line-height: 1.15;
}
.superAdminPanel .formgrid {
  gap: 8px !important;
}
.superAdminPanel .field {
  gap: 4px !important;
}
.superAdminPanel .input {
  padding: 10px 12px !important;
  border-radius: 13px !important;
}
.superAdminPanel .row {
  margin-top: 10px !important;
}
.superAdminPanel .flowCompactTitle {
  margin-top: 10px !important;
  font-size: 17px !important;
}
.superAdminPanel .flowCompactText {
  margin: 4px 0 0 !important;
  font-size: 12px !important;
  line-height: 1.38 !important;
}

/* FIX SUPER ADMIN UX */
body.super-admin-mode .topbar .btn.dark[onclick*="doctor"],
body.super-admin-mode .topbar .btn.dark[onclick*="APP.doctor"],
body.super-admin-mode .topbar button.dark {
  background: #fff !important;
  color: #082418 !important;
  border: 1px solid #dce9df !important;
  box-shadow: none !important;
}
body.super-admin-mode .topbar .btn.dark:hover {
  background: #eef8f1 !important;
}
.refreshLoading {
  opacity: 0.75 !important;
  pointer-events: none !important;
}

.patientTabs {
  display: flex;
  gap: 8px;
  margin: 12px 0 10px;
  flex-wrap: wrap;
}
.patientTab {
  border: 1px solid #dce9df;
  background: #fff;
  border-radius: 999px;
  padding: 8px 12px;
  font-weight: 800;
  color: #365247;
  cursor: pointer;
}
.patientTab.active {
  background: #0f2f22;
  color: #fff;
  border-color: #0f2f22;
}
.patientArchivedNotice {
  background: #fff8e8;
  border: 1px solid #f2dba2;
  color: #6d4f00;
  border-radius: 14px;
  padding: 10px 12px;
  margin: 10px 0;
  font-size: 13px;
  font-weight: 800;
}
.patientSearchBox {
  display: flex;
  gap: 8px;
  align-items: center;
  margin: 8px 0 12px;
}
.patientSearchBox input {
  flex: 1;
  min-width: 0;
  border: 1px solid #dce9df;
  background: #fff;
  border-radius: 14px;
  padding: 10px 12px;
  font-size: 13px;
  font-weight: 700;
  color: #0f2f22;
  outline: none;
}
.patientSearchBox input:focus {
  border-color: #46c985;
  box-shadow: 0 0 0 3px rgba(70, 201, 133, 0.12);
}
.patientSearchBox button {
  border: 0;
  background: #0f2f22;
  color: #fff;
  border-radius: 14px;
  padding: 10px 13px;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
  white-space: nowrap;
}
.patientSearchBox button:hover {
  filter: brightness(1.05);
}
.patientMenu {
  min-width: 136px !important;
  padding: 5px !important;
  border-radius: 13px !important;
}
.patientMenu.open {
  gap: 3px !important;
}
.patientMenu button {
  font-size: 10px !important;
  padding: 5px 6px !important;
  line-height: 1.05 !important;
  border-radius: 8px !important;
}

/* PREMIUM UI TUNING - v6 */
:root {
  --text: #102a21;
  --muted: #62746b;
  --border: #dfece4;
  --shadow: 0 16px 44px rgba(16, 38, 29, 0.09);
}
body {
  font-family: "Inter", Arial, Helvetica, sans-serif !important;
  background: radial-gradient(
    circle at top left,
    #effaf2 0,
    #f7f8f4 42%,
    #f3f1ea 100%
  ) !important;
  letter-spacing: -0.01em;
}
button,
input,
select,
textarea {
  font-family: "Inter", Arial, Helvetica, sans-serif !important;
}
.module {
  box-shadow: 0 18px 48px rgba(16, 38, 29, 0.08) !important;
  border-radius: 26px !important;
}
.card {
  border-radius: 24px !important;
  padding: 22px !important;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.045) !important;
}
h2 {
  font-size: 27px !important;
  letter-spacing: -0.035em !important;
  font-weight: 850 !important;
  color: #09261c !important;
}
p {
  font-size: 14px !important;
  line-height: 1.48 !important;
  color: #62746b !important;
}
.btn {
  border-radius: 12px !important;
  padding: 10px 14px !important;
  font-size: 13px !important;
  font-weight: 750 !important;
  box-shadow: none !important;
}
.btn.primary {
  box-shadow: 0 10px 22px rgba(47, 158, 104, 0.18) !important;
}
.kpi {
  border-radius: 20px !important;
  padding: 15px 16px !important;
  background: rgba(255, 255, 255, 0.88) !important;
  box-shadow: none !important;
}
.kpi b {
  font-size: 23px !important;
  font-weight: 850 !important;
  letter-spacing: -0.035em !important;
}
.kpi span {
  font-size: 12px !important;
  font-weight: 500 !important;
  color: #63766c !important;
}
.portalTab {
  font-size: 13px !important;
  font-weight: 760 !important;
  padding: 11px 10px !important;
  border-radius: 12px !important;
}
.portalTab.active {
  box-shadow: 0 10px 22px rgba(15, 47, 34, 0.15) !important;
}
.input,
.select,
.textarea,
.registryField input,
.registryField select,
.registryField textarea {
  border-radius: 13px !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  padding: 11px 12px !important;
  background: #fbfdfb !important;
}
label,
.registryField label {
  font-size: 12px !important;
  font-weight: 750 !important;
  color: #263f34 !important;
}

/* Sidebar pazienti più pulita */
.patientTabs {
  gap: 8px !important;
  margin: 12px 0 14px !important;
}
.patientTab {
  padding: 8px 12px !important;
  font-size: 12px !important;
  font-weight: 800 !important;
  border-radius: 999px !important;
  box-shadow: none !important;
}
.patientTab.active {
  background: #0d3325 !important;
  border-color: #0d3325 !important;
  box-shadow: 0 8px 18px rgba(13, 51, 37, 0.16) !important;
}
.patientSearchBox {
  display: grid !important;
  grid-template-columns: 1fr auto !important;
  gap: 8px !important;
  margin: 4px 0 15px !important;
  align-items: center !important;
}
.patientSearchBox input {
  height: 38px !important;
  border-radius: 12px !important;
  padding: 0 12px !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  color: #102a21 !important;
}
.patientSearchBox input::placeholder {
  color: #667b71 !important;
  font-weight: 500 !important;
  opacity: 0.95 !important;
}
.patientSearchBox button {
  height: 38px !important;
  border-radius: 12px !important;
  padding: 0 13px !important;
  font-size: 12px !important;
  font-weight: 800 !important;
  background: #0d3325 !important;
}
.patientLegend {
  gap: 12px !important;
  margin: 10px 0 12px !important;
  font-size: 12px !important;
  font-weight: 750 !important;
  color: #63766c !important;
}
.patientLegend span {
  gap: 6px !important;
}
.statusDot {
  width: 12px !important;
  height: 12px !important;
  box-shadow: 0 0 0 5px rgba(47, 158, 104, 0.08) !important;
}
.patientrow {
  grid-template-columns: auto 1fr auto auto !important;
  gap: 10px !important;
  min-height: 46px !important;
  padding: 10px 10px !important;
  border-radius: 18px !important;
  background: #fbfefb !important;
  border: 1px solid #e3efe8 !important;
  box-shadow: none !important;
}
.patientrow:hover {
  background: #f5fbf7 !important;
  border-color: #cfebd8 !important;
  transform: translateY(-1px);
  transition: 0.18s;
}
.avatar {
  width: 34px !important;
  height: 34px !important;
  border-radius: 13px !important;
  font-size: 17px !important;
}
.patientrow b {
  font-size: 13px !important;
  font-weight: 850 !important;
  letter-spacing: -0.015em !important;
  color: #0b261c !important;
}
.patientrow span {
  font-size: 12px !important;
  font-weight: 500 !important;
  color: #63766c !important;
  line-height: 1.2 !important;
}
.patientSettingsBtn,
.patientSettings {
  width: 32px !important;
  height: 32px !important;
  border-radius: 12px !important;
  font-size: 14px !important;
  background: #fff !important;
  border: 1px solid #dfece4 !important;
  color: #2c4539 !important;
}
.patientMenu {
  min-width: 132px !important;
  padding: 6px !important;
  border-radius: 12px !important;
  box-shadow: 0 14px 34px rgba(16, 38, 29, 0.13) !important;
  border: 1px solid #e0ebe4 !important;
}
.patientMenu.open {
  gap: 4px !important;
}
.patientMenu button {
  font-size: 10.5px !important;
  padding: 6px 7px !important;
  line-height: 1.1 !important;
  border-radius: 9px !important;
  font-weight: 750 !important;
  color: #263f34 !important;
}
.patientMenu button.delete {
  color: #b42318 !important;
}

/* Profilo e form più premium */
.registryIntro h2 {
  font-size: 26px !important;
}
.profileBadge {
  font-size: 12px !important;
  font-weight: 750 !important;
  padding: 7px 10px !important;
}
.profileStat {
  font-size: 12.5px !important;
}
.grid3 {
  gap: 12px !important;
}
.risk {
  font-size: 10.5px !important;
  font-weight: 800 !important;
  padding: 6px 9px !important;
}
@media (max-width: 760px) {
  h2 {
    font-size: 24px !important;
  }
  .patientSearchBox {
    grid-template-columns: 1fr !important;
  }
  .patientSearchBox button {
    width: 100% !important;
  }
}

/* FIX menu impostazioni paziente: sempre sopra e cliccabile */
#patientList,
.patientrow {
  overflow: visible !important;
}
.patientrow {
  position: relative !important;
}
.patientrow:has(.patientMenu.open) {
  z-index: 9998 !important;
}
.patientMenu.open {
  display: grid !important;
  position: absolute !important;
  right: 8px !important;
  top: 44px !important;
  z-index: 99999 !important;
  box-shadow: 0 22px 55px rgba(16, 38, 29, 0.22) !important;
}

/* Fix card paziente: ultimo accesso in italiano su una sola riga */
.patientrow {
  grid-template-columns: 34px minmax(0, 1fr) 12px 32px !important;
}
.patientInfo {
  min-width: 0 !important;
  overflow: hidden !important;
}
.patientInfo b {
  display: block !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
.patientInfo span {
  display: block !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  font-size: 11.2px !important;
  line-height: 1.15 !important;
}

/* TOP NAV PREMIUM: pulsanti bianchi, attivo verde come + Crea scheda */
.topbar .actions .btn {
  background: #fff !important;
  color: #082418 !important;
  border: 1px solid var(--border) !important;
  box-shadow: none !important;
}
.topbar .actions .btn:hover {
  background: #eef8f1 !important;
  transform: translateY(-1px) !important;
}
.topbar .actions .btn.navActive,
.topbar .actions .btn.primary.navActive {
  background: linear-gradient(135deg, var(--green), var(--green2)) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 22px rgba(47, 158, 104, 0.18) !important;
}
.topbar .actions .btn.navActive:hover {
  background: linear-gradient(135deg, var(--green), var(--green2)) !important;
}
.patientInfo span {
  font-size: 10.6px !important;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
}
.patientrow {
  grid-template-columns: auto minmax(0, 1fr) auto auto !important;
  gap: 8px !important;
}

/* GREEN ACTIVE STATE UNIFICATO: top menu, tab pazienti e sezioni scheda */
.patientTab.active,
.portalTab.active,
.topbar .actions .btn.navActive,
.topbar .actions .btn.primary.navActive {
  background: linear-gradient(135deg, var(--green), var(--green2)) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 22px rgba(47, 158, 104, 0.18) !important;
}
.patientTab.active:hover,
.portalTab.active:hover,
.topbar .actions .btn.navActive:hover {
  background: linear-gradient(135deg, var(--green), var(--green2)) !important;
  color: #fff !important;
  transform: translateY(-1px) !important;
}
.patientTab:not(.active),
.portalTab:not(.active) {
  background: #fff !important;
  color: #082418 !important;
  border: 1px solid var(--border) !important;
  box-shadow: none !important;
}
.patientTab:not(.active):hover,
.portalTab:not(.active):hover {
  background: #eef8f1 !important;
  transform: translateY(-1px) !important;
}
.patientTab,
.portalTab {
  transition: 0.2s ease !important;
}

/* HOME IMAGE ONLY V17 - pulita e leggera */
#home {
  background: #ffffff !important;
  padding: 0 !important;
}
.homeImageOnly {
  width: 100%;
  background: #fff;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  overflow: hidden;
}
.homeImageOnly img {
  width: 100%;
  max-width: 1680px;
  height: auto;
  display: block;
  object-fit: contain;
}
@media (max-width: 700px) {
  .homeImageOnly {
    overflow-x: auto;
    justify-content: flex-start;
  }
  .homeImageOnly img {
    min-width: 980px;
  }
}

/* INDEX CLEANUP V17 - tipografia e UI più leggere */
h1,
h2,
h3,
.brand,
.btn,
label {
  letter-spacing: -0.025em;
}
h1 {
  font-weight: 800 !important;
}
h2 {
  font-weight: 750 !important;
}
h3 {
  font-weight: 700 !important;
}
p,
.note,
.authHint {
  font-weight: 400;
}
.topbar {
  background: rgba(255, 255, 255, 0.94) !important;
  backdrop-filter: blur(10px);
}
.card {
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.045) !important;
}
.btn.primary,
.btn.active,
.patientTab.active,
.portalTab.active,
.detailTab.active,
.authTab.active {
  background: linear-gradient(135deg, var(--green), var(--green2)) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 22px rgba(47, 158, 104, 0.18) !important;
}
.btn.ghost,
.patientTab,
.portalTab,
.detailTab,
.authTab {
  background: #fff;
  color: var(--text);
  border: 1px solid var(--border);
}
.input,
.select,
.textarea {
  background: #fff;
  border-color: #dfece3;
}

/* ANDAMENTO ULTRA COMPACT CHARTS V26 */
.andamentoChartsFull {
  gap: 10px !important;
}
.andamentoChartsFull .fullSectionCard {
  padding: 16px !important;
  border-radius: 20px !important;
}
.andamentoChartsFull .fullSectionCard h2 {
  font-size: 21px !important;
  line-height: 1.05 !important;
  margin: 0 0 9px !important;
}
.andamentoChartsFull .metricGrid {
  gap: 8px !important;
}
.andamentoChartsFull .chart {
  margin: 0 !important;
}
.andamentoChartsFull .weightChartPremium {
  padding: 10px !important;
  border-radius: 18px !important;
}
.andamentoChartsFull .weightKpiGrid {
  gap: 8px !important;
  margin-bottom: 8px !important;
}
.andamentoChartsFull .weightKpi {
  padding: 9px 11px !important;
  border-radius: 12px !important;
  min-height: auto !important;
}
.andamentoChartsFull .weightKpi b {
  font-size: 19px !important;
  line-height: 1 !important;
}
.andamentoChartsFull .weightKpi span {
  font-size: 11px !important;
  line-height: 1.15 !important;
  margin-top: 3px !important;
}
.andamentoChartsFull .weightSvgWrap {
  padding: 8px !important;
  border-radius: 15px !important;
}
.andamentoChartsFull .weightSvgWrap svg {
  height: 175px !important;
}
.andamentoChartsFull .weightChartPremium > .weightSvgWrap svg {
  height: 190px !important;
}
.andamentoChartsFull .weightFooter {
  margin-top: 8px !important;
  border-radius: 15px !important;
}
.andamentoChartsFull .weightFooterItem {
  padding: 9px 11px !important;
  gap: 8px !important;
}
.andamentoChartsFull .weightFooterIcon {
  width: 30px !important;
  height: 30px !important;
  border-radius: 11px !important;
  font-size: 14px !important;
}
.andamentoChartsFull .weightFooterItem b {
  font-size: 13px !important;
  line-height: 1.1 !important;
}
.andamentoChartsFull .weightFooterItem span {
  font-size: 11px !important;
  line-height: 1.15 !important;
}
@media (max-width: 900px) {
  .andamentoChartsFull .fullSectionCard {
    padding: 14px !important;
  }
  .andamentoChartsFull .fullSectionCard h2 {
    font-size: 18px !important;
  }
  .andamentoChartsFull .weightSvgWrap svg,
  .andamentoChartsFull .weightChartPremium > .weightSvgWrap svg {
    height: 180px !important;
  }
}

/* ANDAMENTO GRID 2x2 COMPACT V27 */
.andamentoChartsGrid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 10px !important;
  width: 100% !important;
  align-items: start !important;
}
.andamentoChartsGrid .andamentoCard {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 12px !important;
  border-radius: 18px !important;
  overflow: hidden !important;
}
.andamentoChartsGrid .andamentoCard h2 {
  font-size: 18px !important;
  line-height: 1.05 !important;
  margin: 0 0 8px !important;
}
.andamentoChartsGrid .chart {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
}
.andamentoChartsGrid .chart svg {
  width: 100% !important;
  max-width: 100% !important;
}
.andamentoChartsGrid .weightChartPremium {
  padding: 8px !important;
  border-radius: 16px !important;
}
.andamentoChartsGrid .weightKpiGrid {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 6px !important;
  margin-bottom: 6px !important;
}
.andamentoChartsGrid .weightKpi {
  padding: 7px 9px !important;
  border-radius: 12px !important;
}
.andamentoChartsGrid .weightKpi b {
  font-size: 14px !important;
  line-height: 1.05 !important;
}
.andamentoChartsGrid .weightKpi span {
  font-size: 9px !important;
  line-height: 1.15 !important;
}
.andamentoChartsGrid .weightSvgWrap {
  padding: 8px !important;
  border-radius: 12px !important;
}
.andamentoChartsGrid .weightSvgWrap svg,
.andamentoChartsGrid .weightChartPremium > .weightSvgWrap svg {
  height: 150px !important;
}
.andamentoChartsGrid .weightFooter {
  margin-top: 6px !important;
  border-radius: 12px !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}
.andamentoChartsGrid .weightFooterItem {
  padding: 7px 8px !important;
  gap: 6px !important;
}
.andamentoChartsGrid .weightFooterIcon {
  width: 24px !important;
  height: 24px !important;
  border-radius: 9px !important;
  font-size: 11px !important;
}
.andamentoChartsGrid .weightFooterItem b {
  font-size: 11px !important;
  line-height: 1.1 !important;
}
.andamentoChartsGrid .weightFooterItem span {
  font-size: 9px !important;
  line-height: 1.1 !important;
}
.andamentoChartsGrid .buddyPanel {
  padding: 12px !important;
  border-radius: 12px !important;
  min-height: 74px !important;
}
.andamentoChartsGrid .buddyPanel b {
  font-size: 12px !important;
}
.andamentoChartsGrid .buddyPanel p {
  font-size: 11px !important;
  line-height: 1.25 !important;
  margin: 5px 0 0 !important;
}
.andamentoChartsGrid .miniAlertTitle {
  margin-top: 10px !important;
}
.andamentoChartsGrid .alertBox2 {
  padding: 9px 10px !important;
  border-radius: 12px !important;
  font-size: 11px !important;
}
.checkinFull {
  margin-top: 10px !important;
}
@media (max-width: 1100px) {
  .andamentoChartsGrid {
    grid-template-columns: 1fr !important;
  }
  .andamentoChartsGrid .weightSvgWrap svg,
  .andamentoChartsGrid .weightChartPremium > .weightSvgWrap svg {
    height: 180px !important;
  }
}

/* ANDAMENTO SPACING FIX V28 - full package */
.andamentoChartsGrid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 24px !important;
  width: 100% !important;
  align-items: stretch !important;
  margin-top: 18px !important;
}
.andamentoChartsGrid .andamentoCard {
  margin: 0 !important;
  padding: 18px !important;
  border-radius: 22px !important;
  min-height: 285px !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
}
.andamentoChartsGrid .andamentoCard h2 {
  font-size: 19px !important;
  line-height: 1.12 !important;
  margin: 0 0 12px !important;
}
.andamentoChartsGrid .chart {
  height: auto !important;
  min-height: 0 !important;
  padding: 10px !important;
  border-radius: 18px !important;
  box-sizing: border-box !important;
}
.andamentoChartsGrid .chart svg {
  width: 100% !important;
  max-width: 100% !important;
  display: block !important;
}
.andamentoChartsGrid .weightChartPremium {
  padding: 12px !important;
  border-radius: 18px !important;
}
.andamentoChartsGrid .weightKpiGrid {
  gap: 9px !important;
  margin-bottom: 10px !important;
}
.andamentoChartsGrid .weightKpi {
  padding: 9px 11px !important;
  border-radius: 12px !important;
}
.andamentoChartsGrid .weightKpi b {
  font-size: 15px !important;
  line-height: 1.1 !important;
}
.andamentoChartsGrid .weightKpi span {
  font-size: 10px !important;
  line-height: 1.15 !important;
}
.andamentoChartsGrid .weightSvgWrap {
  padding: 10px !important;
  border-radius: 16px !important;
}
.andamentoChartsGrid .weightSvgWrap svg,
.andamentoChartsGrid .weightChartPremium > .weightSvgWrap svg {
  height: 165px !important;
}
.andamentoChartsGrid .weightFooter {
  margin-top: 10px !important;
  border-radius: 16px !important;
  gap: 0 !important;
}
.andamentoChartsGrid .weightFooterItem {
  padding: 9px 10px !important;
  gap: 8px !important;
}
.andamentoChartsGrid .weightFooterIcon {
  width: 28px !important;
  height: 28px !important;
  border-radius: 10px !important;
  font-size: 12px !important;
  flex: 0 0 28px !important;
}
.andamentoChartsGrid .weightFooterItem b {
  font-size: 12px !important;
  line-height: 1.1 !important;
}
.andamentoChartsGrid .weightFooterItem span {
  font-size: 10px !important;
  line-height: 1.15 !important;
}
.andamentoChartsGrid .buddyPanel {
  padding: 16px !important;
  border-radius: 16px !important;
  min-height: 96px !important;
}
.andamentoChartsGrid .buddyPanel b {
  font-size: 13px !important;
}
.andamentoChartsGrid .buddyPanel p {
  font-size: 12px !important;
  line-height: 1.35 !important;
  margin: 7px 0 0 !important;
}
.andamentoChartsGrid .miniAlertTitle {
  margin-top: 14px !important;
  margin-bottom: 8px !important;
}
.andamentoChartsGrid .alertBox2 {
  padding: 12px 14px !important;
  border-radius: 12px !important;
  font-size: 12px !important;
}
.checkinFull {
  margin-top: 24px !important;
  border-radius: 22px !important;
}
@media (max-width: 1100px) {
  .andamentoChartsGrid {
    grid-template-columns: 1fr !important;
    gap: 18px !important;
  }
  .andamentoChartsGrid .andamentoCard {
    min-height: auto !important;
  }
  .andamentoChartsGrid .weightSvgWrap svg,
  .andamentoChartsGrid .weightChartPremium > .weightSvgWrap svg {
    height: 185px !important;
  }
}

/* INSIGHT BUDDY STYLE FIX V29 */
.andamentoChartsGrid .insightCard {
  background: #fff !important;
}
.andamentoChartsGrid .insightCard .buddyPanel {
  background: linear-gradient(
    135deg,
    #eefaf3 0%,
    #f7fffb 55%,
    #e8f7ef 100%
  ) !important;
  color: #062c20 !important;
  border: 1px solid rgba(36, 166, 104, 0.22) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.85) !important;
  padding: 16px 18px !important;
  border-radius: 16px !important;
  min-height: auto !important;
}
.andamentoChartsGrid .insightCard .buddyPanel b {
  color: #007a45 !important;
}
.andamentoChartsGrid .insightCard .buddyPanel p {
  color: #25483b !important;
}
.andamentoChartsGrid .insightCard .miniAlertTitle {
  margin-top: 22px !important;
  margin-bottom: 10px !important;
  padding-top: 2px !important;
  display: block !important;
}
.andamentoChartsGrid .insightCard .alertBox2 {
  background: #f7fffb !important;
  border: 1px solid rgba(36, 166, 104, 0.18) !important;
  color: #063b2a !important;
}

/* RADAR BIGGER FIX V31 */
.andamentoChartsGrid .radarCard,
.andamentoChartsGrid .insightCard {
  min-height: 360px !important;
}
.andamentoChartsGrid .radarCard .chart {
  padding: 12px !important;
}
.andamentoChartsGrid .radarCard .weightSvgWrap {
  min-height: 235px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.andamentoChartsGrid .radarCard .weightSvgWrap svg {
  height: 250px !important;
  width: 100% !important;
  max-width: 520px !important;
}
.andamentoChartsGrid .radarCard .weightFooter {
  margin-top: 10px !important;
}
@media (max-width: 1100px) {
  .andamentoChartsGrid .radarCard,
  .andamentoChartsGrid .insightCard {
    min-height: auto !important;
  }
  .andamentoChartsGrid .radarCard .weightSvgWrap {
    min-height: 220px !important;
  }
  .andamentoChartsGrid .radarCard .weightSvgWrap svg {
    height: 230px !important;
  }
}

/* RADAR TRUE SIZE FIX V32 - applicazione reale */
.andamentoChartsGrid .radarCard,
.andamentoChartsGrid .insightCard {
  min-height: 420px !important;
}
.andamentoChartsGrid .radarCard .chart {
  padding: 14px !important;
}
.andamentoChartsGrid .radarCard .weightSvgWrap {
  min-height: 310px !important;
  height: 310px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.andamentoChartsGrid .radarCard .weightSvgWrap svg {
  height: 310px !important;
  width: 100% !important;
  max-width: 620px !important;
}
.andamentoChartsGrid .radarCard .weightFooter {
  margin-top: 12px !important;
}
.andamentoChartsGrid .insightCard {
  display: flex !important;
  flex-direction: column !important;
}
.andamentoChartsGrid .insightCard .buddyPanel {
  min-height: 96px !important;
}
@media (max-width: 1100px) {
  .andamentoChartsGrid .radarCard,
  .andamentoChartsGrid .insightCard {
    min-height: auto !important;
  }
  .andamentoChartsGrid .radarCard .weightSvgWrap {
    min-height: 280px !important;
    height: 280px !important;
  }
  .andamentoChartsGrid .radarCard .weightSvgWrap svg {
    height: 280px !important;
    max-width: 560px !important;
  }
}

/* v34 - Fisiopatologie integrata in Anamnesi completa */
.anamnesiProTabs {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.anamnesiProTab {
  border: 1px solid #cfe7d8;
  background: #f6fbf8;
  border-radius: 999px;
  padding: 8px 12px;
  font-weight: 800;
  color: #0f5f3f;
  font-size: 12px;
  cursor: pointer;
}
.anamnesiProTab.active {
  background: linear-gradient(135deg, var(--green), var(--green2));
  color: white;
  border-color: transparent;
  box-shadow: 0 10px 22px rgba(47, 158, 104, 0.18);
}
.anamnesiProTab:hover {
  border-color: #bfe8cf;
  box-shadow: 0 8px 18px rgba(47, 158, 104, 0.1);
  transform: translateY(-1px);
}
.anamnesiProSection {
  display: block;
}
.anamnesiProSection.hidden {
  display: none;
}
.anamnesiGrid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.anamnesiGrid.three {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.anamnesiField label {
  display: block;
  font-size: 11px;
  font-weight: 900;
  margin-bottom: 6px;
  color: #022d23;
}
.anamnesiField input,
.anamnesiField select,
.anamnesiField textarea {
  width: 100%;
  border: 1px solid #cfe4d6;
  border-radius: 12px;
  background: #fff;
  padding: 10px 12px;
  font-size: 13px;
  outline: none;
}
.anamnesiField textarea {
  min-height: 78px;
  resize: vertical;
}
.anamnesiField.full {
  grid-column: 1/-1;
}
.anamnesiScale {
  display: flex;
  gap: 9px;
  align-items: center;
  flex-wrap: wrap;
}
.scalePill {
  min-width: 116px;
  border-radius: 999px;
  border: 1px solid #d8eee2;
  background: #f4fbf7;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 900;
  cursor: pointer;
  color: #0b5e42;
  padding: 10px 13px;
  font-size: 12.5px;
  line-height: 1;
}
.scalePill input {
  display: none;
}
.scalePill:has(input:checked) {
  background: #149456;
  color: white;
  border-color: #149456;
  box-shadow: 0 8px 18px rgba(20, 148, 86, 0.16);
}
.choicePills {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.choicePill {
  border: 1px solid #d8eee2;
  background: #f4fbf7;
  border-radius: 999px;
  padding: 8px 10px;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}
.choicePill input {
  display: none;
}
.choicePill:has(input:checked) {
  background: #149456;
  color: white;
  border-color: #149456;
}

.substanceSwitchGrid {
  display: grid;
  grid-template-columns: repeat(2, minmax(240px, 1fr));
  gap: 10px 14px;
  margin-top: 10px;
}
.substanceSwitch {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  border: 1px solid #ffc8c8;
  background: #fffafa;
  border-radius: 16px;
  padding: 10px 16px;
  min-height: 48px;
  font-size: 13px;
  font-weight: 900;
  color: #20382f;
  transition: 0.18s ease;
  box-shadow: none;
  cursor: pointer;
}
.substanceSwitch:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 18px rgba(16, 38, 29, 0.045);
}
.substanceSwitch input {
  display: none;
}
.substanceName {
  display: block;
  line-height: 1.2;
  padding-right: 18px;
}
.substanceAction {
  margin-left: auto;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 0;
  background: transparent;
  border-radius: 999px;
  box-shadow: none;
}
.substanceState {
  display: none !important;
}
.substanceToggle {
  width: 38px;
  height: 21px;
  border-radius: 999px;
  background: #ff7b86;
  position: relative;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.04);
  flex: 0 0 auto;
  transition: 0.18s ease;
}
.substanceToggle::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.16);
  transition: 0.18s ease;
}
.substanceSwitch:has(input:checked) {
  border-color: #bcebd0;
  background: #f2fff7;
  color: #075d39;
}
.substanceSwitch:has(input:checked) .substanceToggle {
  background: #17a464;
}
.substanceSwitch:has(input:checked) .substanceToggle::after {
  transform: translateX(17px);
}
.substanceHint {
  margin-top: 12px;
  color: #789186;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.35;
}
@media (max-width: 800px) {
  .substanceSwitchGrid {
    grid-template-columns: 1fr;
  }
  .substanceSwitch {
    min-height: 46px;
    padding: 10px 14px;
  }
}
.workConstraintsSelect {
  position: relative;
  width: 100%;
}
.workConstraintsSelect details {
  position: relative;
  width: 100%;
}
.workConstraintsSelect summary {
  list-style: none;
  min-height: 42px;
  border: 1px solid #cfe4d6;
  border-radius: 12px;
  background: #fff;
  padding: 10px 38px 10px 12px;
  font-size: 13px;
  font-weight: 700;
  color: #0a3b2e;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.workConstraintsSelect summary::-webkit-details-marker {
  display: none;
}
.workConstraintsSelect summary:after {
  content: "⌄";
  position: absolute;
  right: 14px;
  color: #58746a;
  font-size: 13px;
}
.workConstraintsSelect details[open] summary:after {
  content: "⌃";
}
.workConstraintsMenu {
  position: absolute;
  z-index: 30;
  top: 48px;
  left: 0;
  right: 0;
  max-height: 300px;
  overflow: auto;
  background: #fff;
  border: 1px solid #cfe4d6;
  border-radius: 14px;
  box-shadow: 0 18px 45px rgba(0, 50, 35, 0.14);
  padding: 8px;
}
.workConstraintOption {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 10px;
  border-bottom: 1px solid #edf4ef;
  font-size: 13px;
  color: #022d23;
  cursor: pointer;
}
.workConstraintOption:last-child {
  border-bottom: 0;
}
.workConstraintOption:hover {
  background: #f4fbf7;
  border-radius: 10px;
}
.workConstraintOption input {
  width: auto !important;
  accent-color: #149456;
}
.workConstraintsHint {
  font-size: 11px;
  color: #789186;
  margin-top: 5px;
}

/* v36 - Vincoli lavorativi compact dropdown + short numeric row */
.workConstraintsSelect details {
  position: relative;
}
.workConstraintsSelect summary {
  min-height: 38px !important;
  padding: 8px 36px 8px 12px !important;
  font-size: 12px !important;
}
.workConstraintsMenu {
  top: auto !important;
  bottom: 46px !important;
  max-height: 210px !important;
  padding: 6px !important;
  border-radius: 12px !important;
}
.workConstraintOption {
  padding: 7px 9px !important;
  font-size: 12px !important;
  min-height: 32px !important;
}
.workConstraintOption span {
  line-height: 1.25;
}
.workConstraintsHint {
  font-size: 10px !important;
  margin-top: 4px !important;
}
.compactWeightRow {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(130px, 220px));
  gap: 12px;
  align-items: end;
}
.compactWeightRow .anamnesiField {
  min-width: 0;
}
.compactWeightRow .anamnesiField input {
  height: 38px;
  padding: 8px 10px;
}
@media (max-width: 900px) {
  .compactWeightRow {
    grid-template-columns: 1fr;
  }
}

.anamnesiBlockTitle {
  font-size: 14px;
  font-weight: 950;
  color: #022d23;
  margin: 12px 0 8px;
  border-top: 1px solid #e2f0e8;
  padding-top: 12px;
}
.bmiRangeChart {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 18px;
  align-items: center;
}
.bmiLegend {
  display: grid;
  gap: 7px;
  font-size: 12px;
}
.bmiLegendRow {
  display: flex;
  align-items: center;
  gap: 8px;
  font-weight: 700;
}
.bmiSw {
  width: 12px;
  height: 12px;
  border-radius: 3px;
  display: inline-block;
}
.andamentoChartsGrid .bmiStudyCard {
  grid-column: 1/-1;
  min-height: auto !important;
}
.bmiStudyCard .chart {
  height: auto !important;
  min-height: auto !important;
}
.andamentoChartsGrid .radarCard .weightSvgWrap svg {
  height: 310px !important;
  max-height: 310px !important;
}
.andamentoChartsGrid .radarCard .chart {
  min-height: 390px !important;
}
.andamentoChartsGrid .radarCard,
.andamentoChartsGrid .insightCard {
  min-height: 430px !important;
}
@media (max-width: 900px) {
  .anamnesiGrid,
  .anamnesiGrid.three {
    grid-template-columns: 1fr;
  }
  .bmiRangeChart {
    grid-template-columns: 1fr;
  }
  .andamentoChartsGrid .radarCard .weightSvgWrap svg {
    height: 260px !important;
  }
}

/* v34 - Fisiopatologie dentro Anamnesi completa */
.clinicalAnamnesisFull {
  grid-template-columns: 1fr !important;
}
.clinicalAnamnesisFull .clinicalMain {
  width: 100%;
}
.physioTabLayout {
  display: grid;
  gap: 14px;
}
.physioSearchRow {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
}
.physioSearchRow .clinicalTitle {
  margin: 0;
}
.physioSearchRow .clinicalSearch {
  margin: 0;
}
.physioContentGrid {
  display: grid;
  grid-template-columns: minmax(280px, 420px) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
.physioListBox {
  border: 1px solid #d8eee2;
  background: #fbfdfb;
  border-radius: 18px;
  padding: 12px;
  max-height: 620px;
  overflow: auto;
}
.physioDetailBox {
  display: grid;
  gap: 12px;
}
.physioSelectedPanel {
  box-shadow: none;
  background: #f7fcf9;
}
.physioListBox .clinicalCondition {
  background: #fff;
  border: 1px solid transparent;
}
.physioListBox .clinicalCondition:hover {
  border-color: #d8eee2;
}
@media (max-width: 1000px) {
  .physioSearchRow,
  .physioContentGrid {
    grid-template-columns: 1fr;
  }
  .physioListBox {
    max-height: 420px;
  }
}

/* v40 - Insight Buddy AI automatico */
.insightAiPanel {
  background: linear-gradient(160deg, #e8fbee, #f8fffb);
  border: 1px solid #bfead0;
  border-radius: 22px;
  padding: 16px;
  box-shadow: 0 12px 30px rgba(47, 158, 104, 0.08);
}
.insightAiPanel h3 {
  margin: 0 0 8px;
  color: #0f5f3f;
  font-size: 16px;
}
.insightLead {
  font-size: 13px;
  line-height: 1.45;
  color: #365247;
  margin: 0 0 12px;
  font-weight: 700;
}
.insightList {
  display: grid;
  gap: 8px;
  margin-top: 10px;
}
.insightItem {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 8px;
  align-items: start;
  background: #fff;
  border: 1px solid #dcefe4;
  border-radius: 14px;
  padding: 10px 11px;
  font-size: 12px;
  line-height: 1.35;
  color: #17352a;
}
.insightItem b {
  display: block;
  color: #082418;
  margin-bottom: 2px;
  font-size: 12px;
}
.insightItem.warn {
  background: #fff8e8;
  border-color: #f2dba2;
}
.insightItem.danger {
  background: #fff2f2;
  border-color: #ffd1d1;
}
.insightItem.good {
  background: #effcf4;
  border-color: #c9efd7;
}
.insightDot {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #e8fbee;
  font-size: 13px;
}
.insightItem.warn .insightDot {
  background: #fff0c7;
}
.insightItem.danger .insightDot {
  background: #ffe1e1;
}
.insightItem.good .insightDot {
  background: #dff8e8;
}
.patientInsightCard {
  margin-top: 14px;
  background: #f8fffb;
  border: 1px solid #cfe7d8;
  border-radius: 22px;
  padding: 16px;
  box-shadow: 0 12px 28px rgba(47, 158, 104, 0.07);
}
.patientInsightCard h2 {
  margin: 0 0 6px;
  color: #0f5f3f;
}
.patientInsightCard p {
  color: #365247;
  margin: 0 0 10px;
}
.patientInsightGrid {
  display: grid;
  gap: 8px;
}
.patientInsightGrid .insightItem {
  font-size: 12px;
}

/* v43 - Anamnesi femminile premium */
.femaleAnamnesis {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.femaleHero {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: center;
  padding: 18px 20px;
  border: 1px solid #ffd7e7;
  border-radius: 24px;
  background: linear-gradient(135deg, #fff4f9 0%, #ffffff 72%);
  box-shadow: 0 12px 28px rgba(128, 35, 85, 0.06);
}
.femaleHero h4 {
  margin: 0;
  color: #4b1731;
  font-size: 24px;
  line-height: 1.1;
}
.femaleHero p {
  margin: 6px 0 0;
  color: #7f6573;
  font-weight: 800;
  font-size: 13px;
}
.femaleStatus {
  border: 1px solid #ffd0e2;
  background: #fff0f7;
  color: #a3195c;
  font-weight: 1000;
  padding: 10px 14px;
  border-radius: 999px;
  white-space: nowrap;
}
.femaleGrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: start;
}
.femaleCard {
  border: 1px solid #d7efe2;
  border-radius: 22px;
  background: #fff;
  padding: 16px;
  box-shadow: 0 10px 24px rgba(12, 76, 49, 0.05);
}
.femaleCardFull {
  grid-column: 1/-1;
}
.femaleCardBody {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.femaleTwoInputs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.femaleThreeCols {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}
.femaleAnamnesis .choicePills {
  gap: 7px;
}
.femaleAnamnesis .choicePill {
  padding: 7px 10px;
  background: #fffafd;
  border-color: #f3d7e5;
  font-size: 12px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.02);
}
.femaleAnamnesis .choicePill:has(input:checked) {
  background: #ec5a9a;
  border-color: #ec5a9a;
  color: #fff;
  box-shadow: 0 8px 18px rgba(236, 90, 154, 0.2);
}
.femaleAnamnesis .anamnesiField input,
.femaleAnamnesis .anamnesiField select {
  height: 40px;
  background: #fbfffd;
}
.femaleAnamnesis .anamnesiField textarea {
  min-height: 80px;
  background: #fbfffd;
}
@media (max-width: 900px) {
  .femaleGrid,
  .femaleTwoInputs,
  .femaleThreeCols {
    grid-template-columns: 1fr;
  }
  .femaleHero {
    align-items: flex-start;
    flex-direction: column;
  }
  .femaleStatus {
    white-space: normal;
  }
}

/* v45 - Rimozione icone da Anamnesi Personale e Femminile */
.personalCardHead.noIcon {
  display: flex;
  align-items: flex-start;
  gap: 0;
}
.personalCardHead.noIcon > div {
  min-width: 0;
}
.personalCardHead.noIcon h5 {
  margin-left: 0;
}
.personalCardHead.noIcon p {
  margin-left: 0;
}
.femaleStatus,
.personalMiniBadge {
  padding-left: 14px;
  padding-right: 14px;
}

/* v46 - Struttura standard card per tutte le tab Anamnesi */
.anamnesiStandard {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.anamnesiStandardHero {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 20px;
  border: 1px solid #d7efe2;
  border-radius: 24px;
  background: linear-gradient(135deg, #f4fbf7 0%, #ffffff 74%);
  box-shadow: 0 12px 28px rgba(12, 76, 49, 0.055);
}
.anamnesiStandardHero h4 {
  margin: 0;
  color: #0f5f3f;
  font-size: 23px;
  line-height: 1.1;
  letter-spacing: -0.02em;
}
.anamnesiStandardHero p {
  margin: 6px 0 0;
  color: #58746a;
  font-weight: 800;
  font-size: 13px;
  line-height: 1.35;
}
.anamnesiStandardBadge {
  border: 1px solid #cfe7d8;
  background: #effcf4;
  color: #0f5f3f;
  font-weight: 1000;
  padding: 10px 14px;
  border-radius: 999px;
  white-space: nowrap;
  font-size: 12px;
}
.anamnesiCardGrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: start;
}
.anamnesiCard {
  border: 1px solid #d7efe2;
  border-radius: 22px;
  background: #fff;
  padding: 16px;
  box-shadow: 0 10px 24px rgba(12, 76, 49, 0.05);
}
.anamnesiCardFull {
  grid-column: 1/-1;
}
.anamnesiCardHead {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid #edf6f0;
}
.anamnesiCardHead h5 {
  margin: 0;
  color: #0b3f30;
  font-size: 16px;
  line-height: 1.15;
}
.anamnesiCardHead p {
  margin: 5px 0 0;
  color: #789186;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.35;
}
.anamnesiCardBody {
  display: grid;
  gap: 14px;
}
.anamnesiCardBody.twoCols {
  grid-template-columns: 1fr 1fr;
}
.anamnesiCardBody.threeCols {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.anamnesiCardBody.fourCols {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.anamnesiCard .anamnesiField input,
.anamnesiCard .anamnesiField select {
  height: 40px;
  background: #fbfffd;
}
.anamnesiCard .anamnesiField textarea {
  min-height: 86px;
  background: #fbfffd;
}
.anamnesiCard .choicePill {
  padding: 7px 10px;
  font-size: 12px;
}
.anamnesiCard .anamnesiScale {
  gap: 7px;
}
.anamnesiCard .scalePill {
  min-width: 104px;
  padding: 9px 11px;
  font-size: 12px;
}
.compactWeightRow.anamnesiCardBody {
  grid-template-columns: repeat(3, minmax(120px, 1fr)) !important;
}
@media (max-width: 1000px) {
  .anamnesiCardGrid,
  .anamnesiCardBody.twoCols,
  .anamnesiCardBody.threeCols,
  .anamnesiCardBody.fourCols {
    grid-template-columns: 1fr;
  }
  .anamnesiStandardHero {
    flex-direction: column;
  }
  .anamnesiStandardBadge {
    white-space: normal;
  }
  .compactWeightRow.anamnesiCardBody {
    grid-template-columns: 1fr !important;
  }
}

/* v51 - Dipendenze: toggle allineato a destra nelle schede stupefacenti */
.substanceSwitchGrid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(260px, 1fr)) !important;
  gap: 14px 16px !important;
  margin-top: 10px !important;
}
.substanceSwitch {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 18px !important;
  width: 100% !important;
  min-height: 54px !important;
  padding: 10px 16px !important;
  box-sizing: border-box !important;
}
.substanceSwitch .substanceName {
  display: block !important;
  flex: 1 1 auto !important;
  min-width: 0 !important;
  padding-right: 18px !important;
  line-height: 1.2 !important;
}
.substanceSwitch .substanceAction {
  margin-left: auto !important;
  display: flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  flex: 0 0 42px !important;
  width: 42px !important;
  min-width: 42px !important;
}
.substanceSwitch .substanceToggle {
  display: block !important;
  width: 38px !important;
  height: 21px !important;
  flex: 0 0 38px !important;
}
@media (max-width: 800px) {
  .substanceSwitchGrid {
    grid-template-columns: 1fr !important;
  }
  .substanceSwitch {
    min-height: 50px !important;
  }
}

/* Login: tab centrati */
.loginCard .authTabs {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  gap: 10px !important;
  margin: 14px auto 28px !important;
}
.loginCard .authTab {
  width: auto !important;
  min-width: 122px !important;
  padding: 12px 20px !important;
  text-align: center !important;
  line-height: 1.15;
}
.loginCard #patientRegisterTab {
  min-width: 150px !important;
}
@media (max-width: 520px) {
  .loginCard .authTabs {
    gap: 8px !important;
  }
  .loginCard .authTab {
    min-width: 108px !important;
    padding: 11px 14px !important;
    font-size: 13px !important;
  }
  .loginCard #patientRegisterTab {
    min-width: 140px !important;
  }
}

.superAdminSideTitle {
  font-weight: 900;
  color: #06412f;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin: 2px 0 8px;
  padding: 0 8px;
}
.superAdminSideTitle.techTitle {
  margin-top: 14px;
  color: #6b7f78;
}
.superAdminSideBtn.tech {
  opacity: 0.86;
}
.superAdminSideBtn.tech.active {
  opacity: 1;
}

/* Super Admin hard delete modal + compact delete requests */
.superAdminDeleteModalOverlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.42);
  z-index: 99995;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
}
.superAdminDeleteModalOverlay.open {
  display: flex;
}
.superAdminDeleteModal {
  width: min(560px, 96vw);
  max-height: 88vh;
  overflow: auto;
  background: #fff;
  border: 1px solid #fee2e2;
  border-radius: 24px;
  box-shadow: 0 24px 70px rgba(16, 38, 29, 0.28);
  padding: 22px;
}
.superAdminDeleteModal h3 {
  margin: 0 0 8px;
  font-size: 22px;
  color: #7f1d1d;
}
.superAdminDeleteModal p {
  margin: 0 0 12px;
  color: #5f6f67;
  line-height: 1.45;
}
.superAdminDeleteModal .dangerList {
  background: #fff7ed;
  border: 1px solid #fed7aa;
  border-radius: 16px;
  padding: 12px 14px;
  margin: 12px 0;
  color: #7c2d12;
  font-size: 13px;
  line-height: 1.45;
}
.superAdminDeleteModal .dangerList b {
  display: block;
  margin-bottom: 6px;
}
.superAdminDeleteModal input {
  width: 100%;
  border: 1px solid #ffd8a8;
  border-radius: 14px;
  padding: 12px;
  font: inherit;
  margin-top: 6px;
}
.superAdminDeleteActions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 14px;
}
.superAdminDeleteActions .danger {
  background: #b42318;
  color: #fff;
  border-color: #b42318;
}
.deleteRequestInfo {
  display: grid;
  gap: 4px;
  font-size: 12px;
  color: #5f6f67;
  line-height: 1.25;
  max-width: 260px;
}
.deleteRequestInfo b {
  color: #18362b;
}
.deleteRequestActionRow {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 8px;
}
.deleteRequestActionRow .btn {
  padding: 8px 12px;
  border-radius: 14px;
  font-size: 12px;
}
.superAdminTable.deleteRequestsTable th,
.superAdminTable.deleteRequestsTable td {
  padding: 9px 10px;
  font-size: 13px;
}
.superAdminTable.deleteRequestsTable .miniMuted {
  font-size: 11px;
}
.deleteRequestReason {
  max-width: 230px;
  white-space: normal;
  line-height: 1.28;
}

.impersonationBanner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin: 0 0 14px;
  padding: 14px 16px;
  border: 1px solid #bfe8cf;
  border-radius: 18px;
  background: linear-gradient(135deg, #eefbf3, #ffffff);
  box-shadow: 0 10px 24px rgba(12, 76, 49, 0.07);
}
.impersonationBanner b {
  display: block;
  color: #0b5f3d;
  font-size: 15px;
  margin-bottom: 3px;
}
.impersonationBanner span {
  display: block;
  color: #5d756b;
  font-size: 13px;
  font-weight: 800;
  line-height: 1.35;
}
@media (max-width: 700px) {
  .impersonationBanner {
    flex-direction: column;
    align-items: flex-start;
  }
  .impersonationBanner .btn {
    width: 100%;
  }
}

/* Super Admin nutritionist picker modal */
.nutriPickerOverlay {
  position: fixed;
  inset: 0;
  background: rgba(8, 30, 22, 0.42);
  backdrop-filter: blur(10px);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
}
.nutriPickerModal {
  width: min(760px, 96vw);
  max-height: 86vh;
  overflow: hidden;
  background: #fff;
  border: 1px solid #dcebe3;
  border-radius: 28px;
  box-shadow: 0 24px 70px rgba(15, 60, 42, 0.22);
  display: flex;
  flex-direction: column;
}
.nutriPickerHead {
  padding: 22px 24px 16px;
  border-bottom: 1px solid #edf4ef;
  display: flex;
  gap: 16px;
  align-items: flex-start;
  justify-content: space-between;
}
.nutriPickerHead h3 {
  margin: 0;
  color: #123d2b;
  font-size: 21px;
  letter-spacing: -0.02em;
}
.nutriPickerHead p {
  margin: 6px 0 0;
  color: #6f8278;
  font-weight: 700;
  font-size: 13px;
  line-height: 1.45;
}
.nutriPickerBody {
  padding: 18px 24px 22px;
  overflow: auto;
}
.nutriPickerSearch {
  width: 100%;
  border: 1px solid #dbe9e1;
  border-radius: 16px;
  padding: 13px 15px;
  font-weight: 800;
  color: #153b2b;
  background: #fbfefc;
  outline: none;
  margin-bottom: 14px;
}
.nutriPickerList {
  display: grid;
  gap: 10px;
}
.nutriPickerCard {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid #e3efe8;
  border-radius: 18px;
  padding: 14px;
  background: linear-gradient(135deg, #ffffff, #f8fdf9);
}
.nutriPickerCard:hover {
  border-color: #a8dec0;
  box-shadow: 0 10px 24px rgba(20, 148, 86, 0.08);
}
.nutriPickerInfo b {
  display: block;
  color: #153b2b;
  font-size: 15px;
  margin-bottom: 3px;
}
.nutriPickerInfo span {
  display: block;
  color: #6d8077;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.4;
}
.nutriPickerMeta {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.nutriPickerPill {
  font-size: 12px;
  font-weight: 900;
  color: #0d7549;
  background: #eaf8f0;
  border: 1px solid #ccebd8;
  padding: 7px 10px;
  border-radius: 999px;
  white-space: nowrap;
}
@media (max-width: 720px) {
  .nutriPickerModal {
    border-radius: 22px;
  }
  .nutriPickerHead {
    padding: 18px;
  }
  .nutriPickerBody {
    padding: 14px 18px 18px;
  }
  .nutriPickerCard {
    align-items: flex-start;
    flex-direction: column;
  }
  .nutriPickerMeta {
    justify-content: flex-start;
  }
  .nutriPickerMeta .btn {
    width: 100%;
  }
}

/* v50 - Azioni compatte nutrizionisti/admin + popup elimina nutrizionista */
.superAdminActions {
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: flex-start;
  min-width: 104px;
}
.superAdminActions .btn {
  min-width: 92px;
  padding: 7px 10px !important;
  border-radius: 13px !important;
  font-size: 12px !important;
  line-height: 1.05 !important;
  justify-content: center;
  text-align: center;
  box-shadow: none !important;
}
.superAdminActions .btn.dangerLight {
  background: #fff4f4;
  color: #b42318;
  border-color: #ffcaca;
}
.superAdminActions .btn.dangerLight:hover {
  background: #ffecec;
  border-color: #ffb5b5;
}
.superAdminDeleteNutritionistModalOverlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.42);
  z-index: 99996;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
  backdrop-filter: blur(8px);
}
.superAdminDeleteNutritionistModalOverlay.open {
  display: flex;
}
.superAdminDeleteNutritionistModal {
  width: min(600px, 96vw);
  max-height: 88vh;
  overflow: auto;
  background: #fff;
  border: 1px solid #fee2e2;
  border-radius: 24px;
  box-shadow: 0 24px 70px rgba(16, 38, 29, 0.28);
  padding: 22px;
}
.superAdminDeleteNutritionistModal h3 {
  margin: 0 0 8px;
  font-size: 22px;
  color: #7f1d1d;
}
.superAdminDeleteNutritionistModal p {
  margin: 0 0 12px;
  color: #5f6f67;
  line-height: 1.45;
}
.superAdminDeleteNutritionistModal .dangerList {
  background: #fff7ed;
  border: 1px solid #fed7aa;
  border-radius: 16px;
  padding: 12px 14px;
  margin: 12px 0;
  color: #7c2d12;
  font-size: 13px;
  line-height: 1.45;
}
.superAdminDeleteNutritionistModal .dangerList b {
  display: block;
  margin-bottom: 6px;
}
.superAdminDeleteNutritionistModal input {
  width: 100%;
  border: 1px solid #ffd8a8;
  border-radius: 14px;
  padding: 12px;
  font: inherit;
  margin-top: 6px;
}
@media (max-width: 900px) {
  .superAdminActions {
    flex-direction: row;
    flex-wrap: wrap;
  }
  .superAdminActions .btn {
    min-width: auto;
  }
}

.patientHeroActions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.pwaInstallBtn {
  background: linear-gradient(135deg, #24b56f, #67d993) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 24px rgba(36, 181, 111, 0.18);
}
.pwaInstallBtn[disabled] {
  opacity: 0.72;
  cursor: not-allowed;
  background: #eef7f1 !important;
  color: #5f7a68 !important;
  border-color: #d9eadf !important;
  box-shadow: none;
}
.pwaIosHint {
  margin-top: 10px;
  border: 1px solid #cfe8d8;
  background: #f4fbf6;
  border-radius: 14px;
  padding: 12px 14px;
  color: #244232;
  font-size: 13px;
  line-height: 1.45;
}
@media (max-width: 720px) {
  .patientHeroActions {
    justify-content: flex-start;
    width: 100%;
  }
  .pwaInstallBtn {
    width: 100%;
  }
}

/* V74 - Piano: card indipendenti, no stretching tra Piano alimentare Pro e Buddy AI */
.planGrid {
  align-items: start !important;
  grid-auto-rows: auto !important;
}
.planGrid > .fullSectionCard {
  align-self: start !important;
  height: auto !important;
  min-height: 0 !important;
}
.planGrid .planMainCard {
  height: auto !important;
  align-self: start !important;
}
.planGrid .aiDietCard {
  height: auto !important;
  align-self: start !important;
}

/* V75 - Piano: Settimana tipo agganciata solo alla colonna Piano alimentare Pro */
.planGridStable {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: start !important;
}
.planLeftColumn {
  display: flex;
  flex-direction: column;
  gap: 16px;
  align-self: start;
  min-width: 0;
}
.planGridStable > .aiDietCard {
  align-self: start !important;
  height: auto !important;
}
.planLeftColumn > .fullSectionCard {
  height: auto !important;
  align-self: stretch !important;
}
@media (max-width: 1100px) {
  .planGridStable {
    grid-template-columns: 1fr;
  }
  .planLeftColumn {
    gap: 14px;
  }
}

/* V76 - Settimana tipo leggibile: giorno > pasto > suggerimento */
.weekPlanReadable {
  align-self: start;
}
.weekPlanReadable .readableDayPlan {
  padding: 16px 16px 14px;
  margin-bottom: 14px;
  background: #fbfffc;
  border: 1px solid #dcefe4;
  border-radius: 20px;
}
.weekPlanReadable .readableDayPlan h4 {
  font-size: 17px;
  margin: 0 0 12px;
  color: #073b2b;
}
.mealList {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.mealItem {
  display: block;
  background: #fff;
  border: 1px solid #dfeee6;
  border-radius: 16px;
  padding: 10px 12px;
}
.mealItem span {
  display: block;
  font-size: 12px;
  font-weight: 900;
  color: #059669;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  margin-bottom: 6px;
}
.mealItem .input {
  width: 100%;
  height: 42px;
  border-radius: 12px;
  background: #f8fcfa;
}
.mealItem .input:focus {
  background: #fff;
  border-color: #2fbf7b;
  box-shadow: 0 0 0 3px rgba(47, 191, 123, 0.12);
}
@media (max-width: 900px) {
  .weekPlanReadable .readableDayPlan {
    padding: 14px;
  }
  .mealItem .input {
    height: 40px;
  }
}

/* v81 - Bacheca Staff live */
.staffBoardGrid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: 18px;
  align-items: start;
}
.staffBoardCard {
  background: #fff;
  border: 1px solid #dce9df;
  border-radius: 24px;
  padding: 20px;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.05);
}
.staffBoardCard h2,
.staffBoardCard h3 {
  margin: 0 0 6px;
}
.staffBoardCard p {
  color: #64786e;
  margin: 0 0 14px;
  line-height: 1.45;
}
.staffPostList {
  display: grid;
  gap: 12px;
}
.staffPost {
  border: 1px solid #e1efe6;
  background: linear-gradient(180deg, #fff, #f8fcf9);
  border-radius: 20px;
  padding: 16px;
  box-shadow: 0 8px 20px rgba(16, 38, 29, 0.04);
}
.staffPostHead {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
  margin-bottom: 8px;
}
.staffPost h3 {
  font-size: 17px;
  color: #082418;
  margin: 0;
}
.staffPostText {
  white-space: pre-wrap;
  color: #263d31;
  line-height: 1.5;
  font-size: 14px;
}
.staffMeta {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 12px;
}
.staffBadge {
  font-size: 11px;
  font-weight: 900;
  border-radius: 999px;
  padding: 6px 9px;
  background: #eef8f2;
  color: #1d8b55;
  border: 1px solid #d7efdf;
}
.staffBadge.urgent {
  background: #fff1f1;
  color: #c0392b;
  border-color: #ffd2d2;
}
.staffBadge.update {
  background: #eef5ff;
  color: #2563eb;
  border-color: #d9e8ff;
}
.staffBadge.maintenance {
  background: #fff7e8;
  color: #b76b00;
  border-color: #ffe0a8;
}
.staffBadge.pinned {
  background: #113b2b;
  color: #fff;
  border-color: #113b2b;
}
.staffFormGrid {
  display: grid;
  gap: 12px;
}
.staffFormGrid label {
  font-size: 12px;
  font-weight: 800;
  color: #244232;
}
.staffFormGrid input,
.staffFormGrid textarea,
.staffFormGrid select {
  width: 100%;
  border: 1px solid #dce9df;
  border-radius: 14px;
  padding: 12px;
  background: #fbfdfb;
  color: #11251a;
  font-family: inherit;
}
.staffFormGrid textarea {
  min-height: 130px;
  resize: vertical;
}
.staffEmpty {
  border: 1px dashed #cfe3d5;
  border-radius: 18px;
  background: #f7fbf8;
  padding: 24px;
  color: #64786e;
  text-align: center;
}
.staffActions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
  margin-top: 12px;
}
.staffNavBtn {
  background: #eef8f2 !important;
  border-color: #d7efdf !important;
  color: #167046 !important;
}
.staffNavBtn.hasNew::after {
  content: "•";
  color: #e03131;
  font-size: 22px;
  line-height: 0;
  margin-left: 4px;
}
.staffSqlBox {
  font-size: 12px;
  white-space: pre-wrap;
  background: #0f2118;
  color: #d9ffe8;
  border-radius: 14px;
  padding: 12px;
  max-height: 220px;
  overflow: auto;
  margin-top: 10px;
}
@media (max-width: 1000px) {
  .staffBoardGrid {
    grid-template-columns: 1fr;
  }
  .staffBoardCard {
    padding: 16px;
  }
  .staffPostHead {
    flex-direction: column;
  }
}
/* v82 - Richieste allo staff / chat ticket */
.staffTabs {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin: 0 0 16px;
}
.staffTabBtn {
  border: 1px solid #d7efdf;
  background: #f5fbf7;
  color: #176543;
  border-radius: 999px;
  padding: 10px 14px;
  font-weight: 900;
  cursor: pointer;
}
.staffTabBtn.active {
  background: linear-gradient(135deg, #22b873, #68dc98);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 10px 24px rgba(34, 184, 115, 0.18);
}
.staffRequestIntro {
  border: 1px solid #d7efdf;
  background: linear-gradient(180deg, #f7fcf9, #ffffff);
  border-radius: 18px;
  padding: 14px 16px;
  margin-bottom: 14px;
  color: #385547;
  line-height: 1.45;
}
.staffRequestIntro b {
  color: #07452e;
}
.staffTicketLayout {
  display: grid;
  grid-template-columns: 320px minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
.staffTicketList {
  display: grid;
  gap: 10px;
}
.staffTicketItem {
  border: 1px solid #e0efe6;
  background: #fff;
  border-radius: 18px;
  padding: 13px;
  cursor: pointer;
  box-shadow: 0 6px 16px rgba(16, 38, 29, 0.035);
}
.staffTicketItem.active {
  border-color: #22b873;
  box-shadow: 0 0 0 3px rgba(34, 184, 115, 0.12);
}
.staffTicketItem h4 {
  margin: 0 0 5px;
  color: #082d22;
  font-size: 14px;
}
.staffTicketItem small {
  color: #6b8076;
}
.staffTicketMeta {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 8px;
}
.staffTicketBadge {
  font-size: 10px;
  font-weight: 900;
  border-radius: 999px;
  padding: 5px 8px;
  background: #eef8f2;
  color: #1d8b55;
  border: 1px solid #d7efdf;
}
.staffTicketBadge.closed {
  background: #f1f3f5;
  color: #667085;
  border-color: #e4e7ec;
}
.staffTicketBadge.open {
  background: #fff7e8;
  color: #b76b00;
  border-color: #ffe0a8;
}
.staffTicketBadge.unread {
  background: #fff1f1;
  color: #c0392b;
  border-color: #ffd2d2;
}
.staffChatBox {
  border: 1px solid #e0efe6;
  background: #fff;
  border-radius: 20px;
  padding: 16px;
  min-height: 420px;
}
.staffChatHead {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
  border-bottom: 1px solid #edf4ef;
  padding-bottom: 12px;
  margin-bottom: 14px;
}
.staffChatHead h3 {
  margin: 0;
  color: #082d22;
}
.staffChatMessages {
  display: grid;
  gap: 10px;
  max-height: 360px;
  overflow: auto;
  padding-right: 4px;
}
.staffMsg {
  border: 1px solid #edf4ef;
  background: #f8fcf9;
  border-radius: 16px;
  padding: 11px 12px;
}
.staffMsg.me {
  background: #eefaf3;
  border-color: #d5f0df;
}
.staffMsg.admin {
  background: #f4f7ff;
  border-color: #dce6ff;
}
.staffMsgTop {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 6px;
  font-size: 11px;
  font-weight: 900;
  color: #557064;
}
.staffMsgText {
  white-space: pre-wrap;
  color: #1c382b;
  line-height: 1.45;
  font-size: 14px;
}
.staffReplyBox {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}
.staffReplyBox textarea {
  width: 100%;
  min-height: 96px;
  border: 1px solid #dce9df;
  border-radius: 14px;
  padding: 12px;
  background: #fbfdfb;
  font-family: inherit;
  resize: vertical;
}
.staffRequestForm {
  display: grid;
  gap: 10px;
}
.staffRequestForm input,
.staffRequestForm textarea,
.staffRequestForm select {
  width: 100%;
  border: 1px solid #dce9df;
  border-radius: 14px;
  padding: 12px;
  background: #fbfdfb;
  color: #11251a;
  font-family: inherit;
}
.staffRequestForm textarea {
  min-height: 120px;
  resize: vertical;
}
.staffTicketFilter {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.staffMiniBtn {
  border: 1px solid #d7efdf;
  background: #fff;
  border-radius: 999px;
  padding: 8px 10px;
  font-weight: 800;
  color: #29513e;
  cursor: pointer;
}
.staffMiniBtn.active {
  background: #eef8f2;
  color: #0f7a44;
}
.staffResolvedCard {
  margin-top: 16px;
  border: 1px solid #dbe7df;
  background: linear-gradient(180deg, #ffffff, #f9fcfa);
  border-radius: 20px;
  padding: 16px;
  box-shadow: 0 8px 22px rgba(16, 38, 29, 0.04);
}
.staffResolvedCard h3 {
  margin: 0 0 6px;
  color: #082d22;
}
.staffResolvedCard p {
  margin: 0 0 12px;
  color: #64786e;
  font-size: 13px;
  line-height: 1.4;
}
.staffResolvedList {
  display: grid;
  gap: 10px;
}
.staffResolvedItem {
  border: 1px solid #e4eee8;
  background: #fff;
  border-radius: 16px;
  padding: 12px;
  display: grid;
  gap: 8px;
}
.staffResolvedTop {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: flex-start;
}
.staffResolvedTop b {
  color: #082d22;
  font-size: 14px;
}
.staffResolvedTop small {
  color: #6b8076;
}
.staffResolvedReason {
  font-size: 13px;
  color: #385547;
  line-height: 1.42;
  background: #f7fbf8;
  border: 1px solid #edf4ef;
  border-radius: 12px;
  padding: 9px 10px;
}
.staffResolvedActions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  flex-wrap: wrap;
}
.staffDangerBtn {
  background: #fff5f5 !important;
  border-color: #fecaca !important;
  color: #b42318 !important;
}
@media (max-width: 950px) {
  .staffTicketLayout {
    grid-template-columns: 1fr;
  }
  .staffChatBox {
    min-height: auto;
  }
  .staffChatMessages {
    max-height: none;
  }
}

/* v81 - Bacheca Staff live */
.superAdminErrorHero {
  cursor: pointer;
  transition:
    transform 0.15s ease,
    box-shadow 0.15s ease;
}
.superAdminErrorHero:hover {
  transform: translateY(-1px);
  box-shadow: 0 14px 30px rgba(185, 28, 28, 0.1);
}
.superAdminErrorsPanel {
  border-color: #fecaca !important;
  background: linear-gradient(180deg, #fff, #fffafa) !important;
}
.superAdminErrorsPanel h3 {
  color: #991b1b !important;
}
.superAdminErrorActions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}
.superAdminErrorActions .btn {
  padding: 7px 10px !important;
  border-radius: 12px !important;
  font-size: 12px !important;
}
.superAdminErrorTechnical {
  max-width: 420px;
  display: block;
  white-space: normal;
  line-height: 1.35;
}
.superAdminErrorToolbar {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  margin: 10px 0 12px;
  flex-wrap: wrap;
}

/* --- extracted block --- */

.csvImportHistoryList {
  display: grid;
  gap: 10px;
  margin-top: 14px;
  max-height: 420px;
  overflow: auto;
  padding-right: 4px;
}
.csvImportHistoryItem {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid #dce9df;
  border-radius: 16px;
  background: #fff;
  padding: 12px 14px;
  box-shadow: 0 8px 20px rgba(18, 77, 45, 0.05);
}
.csvImportHistoryMain {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}
.csvImportHistoryMain b {
  font-size: 14px;
  color: #163322;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.csvImportHistoryMain span {
  font-size: 12px;
  color: #5f7a68;
}
.csvImportHistoryMain small {
  font-size: 11px;
  color: #7b9184;
}
.csvSmallBtn {
  font-size: 12px !important;
  padding: 8px 10px !important;
  border-radius: 12px !important;
  white-space: nowrap;
}

.csvDeleteConfirmBox {
  margin-top: 14px;
  border: 1px solid #dce9df;
  border-radius: 16px;
  background: #f8fcf9;
  padding: 14px;
  color: #244232;
  font-size: 13px;
  line-height: 1.45;
}
.csvDeleteConfirmBox ul {
  margin: 8px 0 0 18px;
  padding: 0;
}
.csvDeleteConfirmInput {
  width: 100%;
  margin-top: 12px;
  border: 1px solid #cfe0d4;
  border-radius: 14px;
  padding: 12px 14px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: #fff;
  color: #173322;
  outline: none;
}
.csvDeleteConfirmInput:focus {
  border-color: #0cad62;
  box-shadow: 0 0 0 3px rgba(12, 173, 98, 0.12);
}
.emptyState {
  border: 1px dashed #cfe3d6;
  border-radius: 16px;
  padding: 18px;
  text-align: center;
  color: #6b8174;
  background: #fbfefc;
}

.patientHeroActions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.pwaInstallBtn {
  background: linear-gradient(135deg, #24b56f, #67d993) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 24px rgba(36, 181, 111, 0.18);
}
.pwaInstallBtn[disabled] {
  opacity: 0.72;
  cursor: not-allowed;
  background: #eef7f1 !important;
  color: #5f7a68 !important;
  border-color: #d9eadf !important;
  box-shadow: none;
}
.pwaIosHint {
  margin-top: 10px;
  border: 1px solid #cfe8d8;
  background: #f4fbf6;
  border-radius: 14px;
  padding: 12px 14px;
  color: #244232;
  font-size: 13px;
  line-height: 1.45;
}
@media (max-width: 720px) {
  .patientHeroActions {
    justify-content: flex-start;
    width: 100%;
  }
  .pwaInstallBtn {
    width: 100%;
  }
}

/* --- extracted block --- */

.pwaInstallBtn {
  white-space: normal;
  text-align: center;
}
#pwaInstallHelpModal.modalBackdrop {
  position: fixed !important;
  inset: 0 !important;
  z-index: 999999 !important;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: rgba(7, 35, 25, 0.38);
  backdrop-filter: blur(6px);
}
#pwaInstallHelpModal.modalBackdrop.hidden {
  display: none !important;
}
.pwaInstallDialog {
  max-width: 560px;
  width: min(560px, 94vw);
  border-radius: 24px;
}
.pwaInstallBox {
  border: 1px solid var(--line);
  background: #f4fbf7;
  border-radius: 18px;
  padding: 16px 18px;
  color: var(--ink);
  line-height: 1.55;
}
.pwaInstallBox ol {
  margin: 10px 0 0 18px;
  padding: 0;
}
.pwaInstallBox li {
  margin: 7px 0;
}

/* --- extracted block --- */

/* v91 - Privacy & Legale */
#legalNavBtn:hover,
#legalNavBtn.navActive {
  background: linear-gradient(135deg, var(--green), var(--green2)) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 22px rgba(47, 158, 104, 0.18) !important;
}
.legalLayout {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}
.legalSide,
.legalDocCard,
.legalEditCard {
  background: #fff;
  border: 1px solid #dce9df;
  border-radius: 24px;
  padding: 18px;
  box-shadow: 0 10px 28px rgba(16, 38, 29, 0.05);
}
.legalSide h3,
.legalDocCard h3,
.legalEditCard h3 {
  margin: 0 0 8px;
  color: #143827;
}
.legalSide p,
.legalDocCard p {
  color: #64786e;
  line-height: 1.45;
}
.legalDocBtn {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  border: 1px solid #dce9df;
  background: #fff;
  border-radius: 16px;
  padding: 12px 14px;
  margin: 8px 0;
  cursor: pointer;
  font-weight: 900;
  color: #274c39;
  text-align: left;
}
.legalDocBtn:hover,
.legalDocBtn.active {
  background: linear-gradient(135deg, var(--green), var(--green2));
  color: #fff;
  border-color: transparent;
  box-shadow: 0 10px 22px rgba(47, 158, 104, 0.16);
}
.legalDocText {
  white-space: pre-wrap;
  line-height: 1.62;
  color: #29483a;
  font-size: 14px;
  background: #fbfefc;
  border: 1px solid #e4efe7;
  border-radius: 18px;
  padding: 18px;
  max-height: 620px;
  overflow: auto;
}
.legalMeta {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin: 10px 0;
}
.legalBadge {
  font-size: 12px;
  font-weight: 900;
  border-radius: 999px;
  padding: 6px 10px;
  background: #eef8f1;
  color: #176f45;
  border: 1px solid #cfe8d8;
}
.legalNotice {
  border: 1px solid #ffd6d6;
  background: #fff7f7;
  color: #9d2323;
  border-radius: 16px;
  padding: 12px 14px;
  font-weight: 800;
  line-height: 1.35;
  margin: 12px 0;
}
.legalEditGrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.legalEditGrid .full {
  grid-column: 1/-1;
}
.legalTextarea {
  width: 100%;
  min-height: 280px;
  border: 1px solid #dce9df;
  border-radius: 18px;
  padding: 14px;
  font-family: inherit;
  line-height: 1.5;
  resize: vertical;
}
@media (max-width: 900px) {
  .legalLayout {
    grid-template-columns: 1fr;
  }
  .legalEditGrid {
    grid-template-columns: 1fr;
  }
}

/* Evita il flash Login/Home durante il ripristino sessione e posizione */
body:not(.app-ready) .wrap {
  visibility: hidden !important;
  opacity: 0 !important;
}
body.app-ready .wrap {
  visibility: visible !important;
  opacity: 1 !important;
  transition: opacity 0.12s ease;
}
#lock {
  display: none;
}
#staffBoardNavBtn:hover,
#staffBoardNavBtn.navActive {
  background: linear-gradient(135deg, var(--green), var(--green2)) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 22px rgba(47, 158, 104, 0.18) !important;
}

/* --- extracted block --- */

/* Avatar profilo paziente - versione grande e pulita */
.registryGrid {
  grid-template-columns: 300px minmax(0, 1fr) !important;
}
.profilePhotoBox.autoAvatarBox {
  height: 260px !important;
  min-height: 260px !important;
  width: 100% !important;
  padding: 0 !important;
  margin-bottom: 12px !important;
  background: #fff !important;
  border: 1px solid #dce9df !important;
  border-radius: 22px !important;
  overflow: hidden !important;
  display: block !important;
  box-shadow: none !important;
}
.profileAvatarAuto {
  width: 100% !important;
  height: 100% !important;
  border: 0 !important;
  border-radius: 22px !important;
  background: linear-gradient(135deg, #fff, #f7fbf8) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  overflow: hidden !important;
  position: relative !important;
}
.profileAvatarImage img {
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
  object-position: center bottom !important;
  display: block !important;
  padding: 0 !important;
}
.profileAvatarAuto span {
  display: none !important;
}
.avatarHint {
  margin: 8px 0 12px !important;
  font-size: 12px !important;
  line-height: 1.25 !important;
  color: #5f746b !important;
  text-align: center !important;
  font-weight: 700 !important;
}
@media (max-width: 1250px) {
  .registryGrid {
    grid-template-columns: 280px minmax(0, 1fr) !important;
  }
  .profilePhotoBox.autoAvatarBox {
    height: 240px !important;
    min-height: 240px !important;
  }
}
@media (max-width: 800px) {
  .registryGrid {
    grid-template-columns: 1fr !important;
  }
  .profilePhotoBox.autoAvatarBox {
    height: 260px !important;
    min-height: 260px !important;
  }
}

.patientHeroActions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.pwaInstallBtn {
  background: linear-gradient(135deg, #24b56f, #67d993) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 24px rgba(36, 181, 111, 0.18);
}
.pwaInstallBtn[disabled] {
  opacity: 0.72;
  cursor: not-allowed;
  background: #eef7f1 !important;
  color: #5f7a68 !important;
  border-color: #d9eadf !important;
  box-shadow: none;
}
.pwaIosHint {
  margin-top: 10px;
  border: 1px solid #cfe8d8;
  background: #f4fbf6;
  border-radius: 14px;
  padding: 12px 14px;
  color: #244232;
  font-size: 13px;
  line-height: 1.45;
}
@media (max-width: 720px) {
  .patientHeroActions {
    justify-content: flex-start;
    width: 100%;
  }
  .pwaInstallBtn {
    width: 100%;
  }
}

/* --- extracted block --- */

/* CSV import: popup centrale, non blocco in fondo pagina */
body.csv-modal-open {
  overflow: hidden !important;
}
#csvImportModal.modalBackdrop {
  position: fixed !important;
  inset: 0 !important;
  z-index: 2147483000 !important;
  width: 100vw !important;
  height: 100vh !important;
  margin: 0 !important;
  padding: 24px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: rgba(12, 31, 23, 0.48) !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  overflow: auto !important;
}
#csvImportModal.hidden {
  display: none !important;
}
#csvImportModal .csvImportDialog {
  position: relative !important;
  margin: auto !important;
  width: min(920px, 94vw) !important;
  max-height: 88vh !important;
  overflow: auto !important;
  background: #fff !important;
  border: 1px solid #dcefe4 !important;
  border-radius: 26px !important;
  box-shadow: 0 30px 90px rgba(8, 28, 20, 0.32) !important;
  padding: 24px !important;
  transform: none !important;
}

.patientHeroActions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.pwaInstallBtn {
  background: linear-gradient(135deg, #24b56f, #67d993) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 24px rgba(36, 181, 111, 0.18);
}
.pwaInstallBtn[disabled] {
  opacity: 0.72;
  cursor: not-allowed;
  background: #eef7f1 !important;
  color: #5f7a68 !important;
  border-color: #d9eadf !important;
  box-shadow: none;
}
.pwaIosHint {
  margin-top: 10px;
  border: 1px solid #cfe8d8;
  background: #f4fbf6;
  border-radius: 14px;
  padding: 12px 14px;
  color: #244232;
  font-size: 13px;
  line-height: 1.45;
}
@media (max-width: 720px) {
  .patientHeroActions {
    justify-content: flex-start;
    width: 100%;
  }
  .pwaInstallBtn {
    width: 100%;
  }
}

/* --- extracted block --- */

/* FIX: conferma eliminazione importazione CSV usa il popup standard NutryBuddy */
body.csv-modal-open {
  overflow: hidden !important;
}
#csvDeleteImportModal.modalBackdrop {
  position: fixed !important;
  inset: 0 !important;
  width: 100vw !important;
  height: 100vh !important;
  margin: 0 !important;
  padding: 24px !important;
  z-index: 2147483002 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: rgba(12, 31, 23, 0.48) !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  overflow: auto !important;
}
#csvDeleteImportModal.hidden {
  display: none !important;
}
#csvDeleteImportModal .csvDeleteImportDialog,
#csvDeleteImportModal .deleteModal {
  position: relative !important;
  width: min(720px, 94vw) !important;
  max-height: 86vh !important;
  margin: auto !important;
  overflow: auto !important;
  background: #fff !important;
  border: 1px solid #dcefe4 !important;
  border-radius: 26px !important;
  padding: 24px !important;
  box-shadow: 0 28px 80px rgba(16, 38, 29, 0.28) !important;
}
#csvDeleteImportModal .deleteModalHeader {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between !important;
  gap: 16px !important;
  margin-bottom: 12px !important;
}
#csvDeleteImportModal .deleteModalHeader h2 {
  margin: 0 !important;
  color: #082d22 !important;
  font-size: 24px !important;
}
#csvDeleteImportModal .deleteModalHeader p {
  margin: 6px 0 0 !important;
  color: #5f746b !important;
  font-weight: 700 !important;
  line-height: 1.4 !important;
}
#csvDeleteImportModal .deleteModalFooter {
  display: flex !important;
  justify-content: flex-end !important;
  gap: 10px !important;
  margin-top: 18px !important;
  padding-top: 14px !important;
  border-top: 1px solid #edf4ef !important;
}
@media (max-width: 760px) {
  #csvDeleteImportModal {
    padding: 14px !important;
    align-items: flex-start !important;
  }
  #csvDeleteImportModal .csvDeleteImportDialog {
    width: 100% !important;
    padding: 18px !important;
    border-radius: 22px !important;
  }
  #csvDeleteImportModal .deleteModalHeader {
    flex-direction: column !important;
  }
  #csvDeleteImportModal .deleteModalHeader .btn,
  #csvDeleteImportModal .deleteModalFooter .btn {
    width: 100% !important;
  }
  #csvDeleteImportModal .deleteModalFooter {
    flex-direction: column !important;
  }
}

.patientHeroActions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.pwaInstallBtn {
  background: linear-gradient(135deg, #24b56f, #67d993) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 24px rgba(36, 181, 111, 0.18);
}
.pwaInstallBtn[disabled] {
  opacity: 0.72;
  cursor: not-allowed;
  background: #eef7f1 !important;
  color: #5f7a68 !important;
  border-color: #d9eadf !important;
  box-shadow: none;
}
.pwaIosHint {
  margin-top: 10px;
  border: 1px solid #cfe8d8;
  background: #f4fbf6;
  border-radius: 14px;
  padding: 12px 14px;
  color: #244232;
  font-size: 13px;
  line-height: 1.45;
}
@media (max-width: 720px) {
  .patientHeroActions {
    justify-content: flex-start;
    width: 100%;
  }
  .pwaInstallBtn {
    width: 100%;
  }
}

/* --- extracted block --- */

.personalUploadBox {
  margin-top: 24px;
  border-top: 1px solid #dce9df;
  padding-top: 18px;
}
.personalUploadBox h2 {
  margin-bottom: 6px !important;
}
.personalUploadBox p {
  color: #5f746b;
  font-weight: 700;
  line-height: 1.35;
  margin: 0 0 14px;
}
.personalUploadGrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 12px;
}
.personalFileList {
  margin-top: 14px;
}
.personalFileItem {
  background: #f8fcfa;
  border-color: #cfe8d8;
}
.personalPatientMaterial {
  border-color: #bfe8d0 !important;
  background: linear-gradient(135deg, #f6fff9, #ffffff) !important;
}
@media (max-width: 900px) {
  .personalUploadGrid {
    grid-template-columns: 1fr;
  }
}

/* --- extracted block --- */

/* v37 - Vincoli lavorativi: menu completo senza scroll interno */
.workConstraintsSelect {
  position: relative !important;
  z-index: 20 !important;
}
.workConstraintsSelect details {
  position: relative !important;
}
.workConstraintsSelect summary {
  min-height: 36px !important;
  padding: 7px 34px 7px 12px !important;
  font-size: 12px !important;
  border-radius: 12px !important;
  background: #fff !important;
}
.workConstraintsMenu {
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 42px !important;
  top: auto !important;
  max-height: none !important;
  overflow: visible !important;
  background: #fff !important;
  border: 1px solid #cfe4d6 !important;
  border-radius: 12px !important;
  box-shadow: 0 18px 45px rgba(0, 50, 35, 0.16) !important;
  padding: 4px 8px !important;
  z-index: 999 !important;
}
.workConstraintOption {
  min-height: 26px !important;
  padding: 4px 6px !important;
  font-size: 12px !important;
  line-height: 1.15 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 10px !important;
  border-bottom: 1px solid #edf4ef !important;
}
.workConstraintOption span {
  line-height: 1.15 !important;
  font-weight: 600 !important;
}
.workConstraintOption input {
  width: 13px !important;
  height: 13px !important;
  flex: 0 0 auto !important;
}
.workConstraintsHint {
  font-size: 10px !important;
  margin-top: 3px !important;
}
.compactWeightRow {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 10px !important;
  align-items: end !important;
}
.compactWeightRow .anamnesiField input {
  height: 38px !important;
  min-height: 38px !important;
}
@media (max-width: 900px) {
  .compactWeightRow {
    grid-template-columns: 1fr !important;
  }
  .workConstraintsMenu {
    position: static !important;
    margin-top: 6px !important;
  }
}

/* v40 - Insight Buddy AI automatico */
.insightAiPanel {
  background: linear-gradient(160deg, #e8fbee, #f8fffb);
  border: 1px solid #bfead0;
  border-radius: 22px;
  padding: 16px;
  box-shadow: 0 12px 30px rgba(47, 158, 104, 0.08);
}
.insightAiPanel h3 {
  margin: 0 0 8px;
  color: #0f5f3f;
  font-size: 16px;
}
.insightLead {
  font-size: 13px;
  line-height: 1.45;
  color: #365247;
  margin: 0 0 12px;
  font-weight: 700;
}
.insightList {
  display: grid;
  gap: 8px;
  margin-top: 10px;
}
.insightItem {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 8px;
  align-items: start;
  background: #fff;
  border: 1px solid #dcefe4;
  border-radius: 14px;
  padding: 10px 11px;
  font-size: 12px;
  line-height: 1.35;
  color: #17352a;
}
.insightItem b {
  display: block;
  color: #082418;
  margin-bottom: 2px;
  font-size: 12px;
}
.insightItem.warn {
  background: #fff8e8;
  border-color: #f2dba2;
}
.insightItem.danger {
  background: #fff2f2;
  border-color: #ffd1d1;
}
.insightItem.good {
  background: #effcf4;
  border-color: #c9efd7;
}
.insightDot {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #e8fbee;
  font-size: 13px;
}
.insightItem.warn .insightDot {
  background: #fff0c7;
}
.insightItem.danger .insightDot {
  background: #ffe1e1;
}
.insightItem.good .insightDot {
  background: #dff8e8;
}
.patientInsightCard {
  margin-top: 14px;
  background: #f8fffb;
  border: 1px solid #cfe7d8;
  border-radius: 22px;
  padding: 16px;
  box-shadow: 0 12px 28px rgba(47, 158, 104, 0.07);
}
.patientInsightCard h2 {
  margin: 0 0 6px;
  color: #0f5f3f;
}
.patientInsightCard p {
  color: #365247;
  margin: 0 0 10px;
}
.patientInsightGrid {
  display: grid;
  gap: 8px;
}
.patientInsightGrid .insightItem {
  font-size: 12px;
}

/* v42 - Redesign tab Personale anamnesi */
.personalRedesign {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.personalHero {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: center;
  padding: 18px 20px;
  border: 1px solid #d7efe2;
  border-radius: 24px;
  background: linear-gradient(135deg, #f3fbf7 0%, #ffffff 70%);
  box-shadow: 0 12px 28px rgba(12, 76, 49, 0.06);
}
.personalHero h4 {
  margin: 0;
  color: #083b2c;
  font-size: 24px;
  line-height: 1.1;
}
.personalHero p {
  margin: 6px 0 0;
  color: #5e736b;
  font-weight: 700;
  font-size: 13px;
}
.personalEyebrow {
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: #149456;
  font-weight: 1000;
  font-size: 11px;
  margin-bottom: 5px;
}
.personalMiniBadge {
  border: 1px solid #cfeada;
  background: #eaf8f0;
  color: #08733f;
  font-weight: 1000;
  padding: 10px 14px;
  border-radius: 999px;
  white-space: nowrap;
}
.personalCardsGrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: start;
}
.personalCard {
  border: 1px solid #d7efe2;
  border-radius: 22px;
  background: #fff;
  padding: 16px;
  box-shadow: 0 10px 24px rgba(12, 76, 49, 0.05);
}
.personalCardWide,
.personalCardFull {
  grid-column: 1/-1;
}
.personalCardHead {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 14px;
}
.personalCardHead > span {
  width: 38px;
  height: 38px;
  border-radius: 15px;
  background: #ecf9f2;
  border: 1px solid #d7efe2;
  display: grid;
  place-items: center;
  font-size: 18px;
  flex: 0 0 auto;
}
.personalCardHead h5 {
  margin: 0;
  color: #063528;
  font-size: 17px;
  line-height: 1.15;
}
.personalCardHead p {
  margin: 4px 0 0;
  color: #6c8178;
  font-size: 12px;
  font-weight: 700;
}
.personalCardBody {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.personalTwoCols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.personalTwoCols .full {
  grid-column: 1/-1;
}
.personalRedesign .choicePills {
  gap: 7px;
}
.personalRedesign .choicePill {
  padding: 7px 10px;
  background: #f7fcf9;
  border-color: #d6eee1;
  font-size: 12px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.02);
}
.personalRedesign .choicePill:has(input:checked) {
  background: #19a865;
  border-color: #19a865;
  color: #fff;
  box-shadow: 0 8px 18px rgba(20, 148, 86, 0.2);
}
.personalRedesign .anamnesiField input {
  height: 40px;
  background: #fbfffd;
}
.personalRedesign .anamnesiField textarea {
  min-height: 92px;
  background: #fbfffd;
}
.bristolPreview {
  border: 1px solid #e0f0e7;
  background: #f7fcf9;
  border-radius: 16px;
  padding: 12px;
}
.bristolTitle {
  font-weight: 1000;
  color: #063528;
  margin-bottom: 9px;
}
.bristolDots {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
  flex-wrap: wrap;
}
.bristolDots span {
  display: block;
  border-radius: 999px;
  background: #9b6a3f;
  opacity: 0.88;
}
.bristolDots span:nth-child(1) {
  width: 12px;
  height: 12px;
}
.bristolDots span:nth-child(2) {
  width: 20px;
  height: 12px;
}
.bristolDots span:nth-child(3) {
  width: 28px;
  height: 12px;
}
.bristolDots span:nth-child(4) {
  width: 38px;
  height: 10px;
}
.bristolDots span:nth-child(5) {
  width: 24px;
  height: 14px;
}
.bristolDots span:nth-child(6) {
  width: 18px;
  height: 18px;
}
.bristolDots span:nth-child(7) {
  width: 42px;
  height: 8px;
}
.bristolPreview small {
  color: #6c8178;
  font-weight: 700;
}
.sleepHint {
  padding: 12px 14px;
  border-radius: 16px;
  background: #eef9f3;
  color: #49675b;
  font-weight: 800;
  font-size: 12px;
  border: 1px solid #d7efe2;
}
.symptomChips {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin: 0 0 12px;
}
.symptomChips span {
  border: 1px solid #d7efe2;
  background: #f4fbf7;
  color: #08633e;
  border-radius: 999px;
  padding: 7px 10px;
  font-weight: 900;
  font-size: 12px;
}
.personalNotes textarea {
  min-height: 96px !important;
}
@media (max-width: 900px) {
  .personalCardsGrid,
  .personalTwoCols {
    grid-template-columns: 1fr;
  }
  .personalHero {
    align-items: flex-start;
    flex-direction: column;
  }
  .personalMiniBadge {
    white-space: normal;
  }
}

/* v43 - Anamnesi femminile premium */
.femaleAnamnesis {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.femaleHero {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: center;
  padding: 18px 20px;
  border: 1px solid #ffd7e7;
  border-radius: 24px;
  background: linear-gradient(135deg, #fff4f9 0%, #ffffff 72%);
  box-shadow: 0 12px 28px rgba(128, 35, 85, 0.06);
}
.femaleHero h4 {
  margin: 0;
  color: #4b1731;
  font-size: 24px;
  line-height: 1.1;
}
.femaleHero p {
  margin: 6px 0 0;
  color: #7f6573;
  font-weight: 800;
  font-size: 13px;
}
.femaleStatus {
  border: 1px solid #ffd0e2;
  background: #fff0f7;
  color: #a3195c;
  font-weight: 1000;
  padding: 10px 14px;
  border-radius: 999px;
  white-space: nowrap;
}
.femaleGrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: start;
}
.femaleCard {
  border: 1px solid #d7efe2;
  border-radius: 22px;
  background: #fff;
  padding: 16px;
  box-shadow: 0 10px 24px rgba(12, 76, 49, 0.05);
}
.femaleCardFull {
  grid-column: 1/-1;
}
.femaleCardBody {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.femaleTwoInputs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.femaleThreeCols {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}
.femaleAnamnesis .choicePills {
  gap: 7px;
}
.femaleAnamnesis .choicePill {
  padding: 7px 10px;
  background: #fffafd;
  border-color: #f3d7e5;
  font-size: 12px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.02);
}
.femaleAnamnesis .choicePill:has(input:checked) {
  background: #ec5a9a;
  border-color: #ec5a9a;
  color: #fff;
  box-shadow: 0 8px 18px rgba(236, 90, 154, 0.2);
}
.femaleAnamnesis .anamnesiField input,
.femaleAnamnesis .anamnesiField select {
  height: 40px;
  background: #fbfffd;
}
.femaleAnamnesis .anamnesiField textarea {
  min-height: 80px;
  background: #fbfffd;
}
@media (max-width: 900px) {
  .femaleGrid,
  .femaleTwoInputs,
  .femaleThreeCols {
    grid-template-columns: 1fr;
  }
  .femaleHero {
    align-items: flex-start;
    flex-direction: column;
  }
  .femaleStatus {
    white-space: normal;
  }
}

/* v45 - Rimozione icone da Anamnesi Personale e Femminile */
.personalCardHead.noIcon {
  display: flex;
  align-items: flex-start;
  gap: 0;
}
.personalCardHead.noIcon > div {
  min-width: 0;
}
.personalCardHead.noIcon h5 {
  margin-left: 0;
}
.personalCardHead.noIcon p {
  margin-left: 0;
}
.femaleStatus,
.personalMiniBadge {
  padding-left: 14px;
  padding-right: 14px;
}

/* v46 - Struttura standard card per tutte le tab Anamnesi */
.anamnesiStandard {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.anamnesiStandardHero {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 20px;
  border: 1px solid #d7efe2;
  border-radius: 24px;
  background: linear-gradient(135deg, #f4fbf7 0%, #ffffff 74%);
  box-shadow: 0 12px 28px rgba(12, 76, 49, 0.055);
}
.anamnesiStandardHero h4 {
  margin: 0;
  color: #0f5f3f;
  font-size: 23px;
  line-height: 1.1;
  letter-spacing: -0.02em;
}
.anamnesiStandardHero p {
  margin: 6px 0 0;
  color: #58746a;
  font-weight: 800;
  font-size: 13px;
  line-height: 1.35;
}
.anamnesiStandardBadge {
  border: 1px solid #cfe7d8;
  background: #effcf4;
  color: #0f5f3f;
  font-weight: 1000;
  padding: 10px 14px;
  border-radius: 999px;
  white-space: nowrap;
  font-size: 12px;
}
.anamnesiCardGrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: start;
}
.anamnesiCard {
  border: 1px solid #d7efe2;
  border-radius: 22px;
  background: #fff;
  padding: 16px;
  box-shadow: 0 10px 24px rgba(12, 76, 49, 0.05);
}
.anamnesiCardFull {
  grid-column: 1/-1;
}
.anamnesiCardHead {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid #edf6f0;
}
.anamnesiCardHead h5 {
  margin: 0;
  color: #0b3f30;
  font-size: 16px;
  line-height: 1.15;
}
.anamnesiCardHead p {
  margin: 5px 0 0;
  color: #789186;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.35;
}
.anamnesiCardBody {
  display: grid;
  gap: 14px;
}
.anamnesiCardBody.twoCols {
  grid-template-columns: 1fr 1fr;
}
.anamnesiCardBody.threeCols {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.anamnesiCardBody.fourCols {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.anamnesiCard .anamnesiField input,
.anamnesiCard .anamnesiField select {
  height: 40px;
  background: #fbfffd;
}
.anamnesiCard .anamnesiField textarea {
  min-height: 86px;
  background: #fbfffd;
}
.anamnesiCard .choicePill {
  padding: 7px 10px;
  font-size: 12px;
}
.anamnesiCard .anamnesiScale {
  gap: 7px;
}
.anamnesiCard .scalePill {
  min-width: 104px;
  padding: 9px 11px;
  font-size: 12px;
}
.compactWeightRow.anamnesiCardBody {
  grid-template-columns: repeat(3, minmax(120px, 1fr)) !important;
}
@media (max-width: 1000px) {
  .anamnesiCardGrid,
  .anamnesiCardBody.twoCols,
  .anamnesiCardBody.threeCols,
  .anamnesiCardBody.fourCols {
    grid-template-columns: 1fr;
  }
  .anamnesiStandardHero {
    flex-direction: column;
  }
  .anamnesiStandardBadge {
    white-space: normal;
  }
  .compactWeightRow.anamnesiCardBody {
    grid-template-columns: 1fr !important;
  }
}

/* Login: tab centrati */
.loginCard .authTabs {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  gap: 10px !important;
  margin: 14px auto 28px !important;
}
.loginCard .authTab {
  width: auto !important;
  min-width: 122px !important;
  padding: 12px 20px !important;
  text-align: center !important;
  line-height: 1.15;
}
.loginCard #patientRegisterTab {
  min-width: 150px !important;
}
@media (max-width: 520px) {
  .loginCard .authTabs {
    gap: 8px !important;
  }
  .loginCard .authTab {
    min-width: 108px !important;
    padding: 11px 14px !important;
    font-size: 13px !important;
  }
  .loginCard #patientRegisterTab {
    min-width: 140px !important;
  }
}

.superAdminSideTitle {
  font-weight: 900;
  color: #06412f;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin: 2px 0 8px;
  padding: 0 8px;
}
.superAdminSideTitle.techTitle {
  margin-top: 14px;
  color: #6b7f78;
}
.superAdminSideBtn.tech {
  opacity: 0.86;
}
.superAdminSideBtn.tech.active {
  opacity: 1;
}

.patientHeroActions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.pwaInstallBtn {
  background: linear-gradient(135deg, #24b56f, #67d993) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 24px rgba(36, 181, 111, 0.18);
}
.pwaInstallBtn[disabled] {
  opacity: 0.72;
  cursor: not-allowed;
  background: #eef7f1 !important;
  color: #5f7a68 !important;
  border-color: #d9eadf !important;
  box-shadow: none;
}
.pwaIosHint {
  margin-top: 10px;
  border: 1px solid #cfe8d8;
  background: #f4fbf6;
  border-radius: 14px;
  padding: 12px 14px;
  color: #244232;
  font-size: 13px;
  line-height: 1.45;
}
@media (max-width: 720px) {
  .patientHeroActions {
    justify-content: flex-start;
    width: 100%;
  }
  .pwaInstallBtn {
    width: 100%;
  }
}

/* --- extracted block --- */

/* vCSV - Importazione pazienti da CSV */
.csvImportDialog {
  max-width: 880px !important;
  width: min(880px, 94vw) !important;
  max-height: 86vh;
  overflow: auto;
}
.csvImportInfo {
  display: grid;
  gap: 4px;
  background: #fff8e8;
  border: 1px solid #ffd99a;
  color: #6e4300;
  border-radius: 16px;
  padding: 12px 14px;
  margin: 14px 0;
  font-size: 13px;
  line-height: 1.35;
}
.csvImportInfo b {
  color: #7b3b00;
}
.csvImportActions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin: 12px 0;
}
.csvImportSummary {
  background: #f7fcf9;
  border: 1px solid #dcefe4;
  border-radius: 14px;
  padding: 12px 14px;
  color: #365247;
  font-weight: 800;
  margin: 10px 0;
}
.csvImportPreview {
  margin-top: 10px;
}
.csvPreviewTable {
  max-height: 320px;
  overflow: auto;
  border: 1px solid #dcefe4;
  border-radius: 16px;
  background: #fff;
}
.csvPreviewTable table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}
.csvPreviewTable th {
  position: sticky;
  top: 0;
  background: #f3fbf7;
  color: #49675b;
  text-align: left;
  padding: 10px;
  border-bottom: 1px solid #dcefe4;
}
.csvPreviewTable td {
  padding: 9px 10px;
  border-bottom: 1px solid #edf4ef;
  color: #17352a;
}
.csvPreviewTable tr.csvBad td {
  background: #fff5f5;
  color: #8a1d1d;
}
.csvPreviewTable tr.csvOk td:last-child {
  color: #0f7a44;
  font-weight: 900;
}
@media (max-width: 760px) {
  .csvImportActions .btn {
    width: 100%;
  }
  .csvPreviewTable {
    font-size: 11px;
  }
}

/* Avatar automatico paziente: niente upload foto, niente storage extra */
.autoAvatarBox {
  padding: 0 !important;
  overflow: hidden !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  height: 138px !important;
}
.profileAvatarAuto {
  width: 100%;
  height: 100%;
  border-radius: 19px;
  overflow: hidden;
  position: relative;
  border: 1px solid #dce9df;
  background: #eef8f1;
  display: block;
}
.profileAvatarAuto svg {
  width: 100%;
  height: 100%;
  display: block;
}
.profileAvatarImage img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
}
.profileAvatarAuto span {
  position: absolute;
  left: 10px;
  bottom: 9px;
  background: rgba(255, 255, 255, 0.82);
  border: 1px solid rgba(8, 36, 24, 0.08);
  color: #365247;
  border-radius: 999px;
  padding: 5px 9px;
  font-size: 11px;
  font-weight: 800;
  backdrop-filter: blur(6px);
}
.avatarHint {
  margin: -2px 0 10px;
  color: #5f746b;
  font-size: 12px;
  font-weight: 700;
  text-align: center;
}

.patientHeroActions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.pwaInstallBtn {
  background: linear-gradient(135deg, #24b56f, #67d993) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 24px rgba(36, 181, 111, 0.18);
}
.pwaInstallBtn[disabled] {
  opacity: 0.72;
  cursor: not-allowed;
  background: #eef7f1 !important;
  color: #5f7a68 !important;
  border-color: #d9eadf !important;
  box-shadow: none;
}
.pwaIosHint {
  margin-top: 10px;
  border: 1px solid #cfe8d8;
  background: #f4fbf6;
  border-radius: 14px;
  padding: 12px 14px;
  color: #244232;
  font-size: 13px;
  line-height: 1.45;
}
@media (max-width: 720px) {
  .patientHeroActions {
    justify-content: flex-start;
    width: 100%;
  }
  .pwaInstallBtn {
    width: 100%;
  }
}

/* --- extracted block --- */

/* FIX: Importazioni CSV deve aprirsi come popup/modale centrale, non come blocco nella pagina */
body.csv-modal-open {
  overflow: hidden !important;
}
#csvImportHistoryModal.modalBackdrop {
  position: fixed !important;
  inset: 0 !important;
  width: 100vw !important;
  height: 100vh !important;
  margin: 0 !important;
  padding: 24px !important;
  z-index: 2147483001 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: rgba(12, 31, 23, 0.48) !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  overflow: auto !important;
}
#csvImportHistoryModal.hidden {
  display: none !important;
}
#csvImportHistoryModal .csvImportDialog,
#csvImportHistoryModal .csvHistoryDialog {
  position: relative !important;
  width: min(880px, 94vw) !important;
  max-height: 86vh !important;
  margin: auto !important;
  overflow: auto !important;
  background: #fff !important;
  border: 1px solid #dcefe4 !important;
  border-radius: 26px !important;
  padding: 24px !important;
  box-shadow: 0 28px 80px rgba(16, 38, 29, 0.28) !important;
}
#csvImportHistoryModal .deleteModalHeader {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between !important;
  gap: 16px !important;
  margin-bottom: 12px !important;
}
#csvImportHistoryModal .deleteModalHeader h2 {
  margin: 0 !important;
  color: #082d22 !important;
  font-size: 24px !important;
}
#csvImportHistoryModal .deleteModalHeader p {
  margin: 6px 0 0 !important;
  color: #5f746b !important;
  font-weight: 700 !important;
  line-height: 1.4 !important;
}
#csvImportHistoryModal .deleteModalFooter {
  display: flex !important;
  justify-content: flex-end !important;
  margin-top: 16px !important;
}
@media (max-width: 760px) {
  #csvImportHistoryModal {
    padding: 14px !important;
    align-items: flex-start !important;
  }
  #csvImportHistoryModal .csvImportDialog {
    width: 100% !important;
    padding: 18px !important;
    border-radius: 22px !important;
  }
  #csvImportHistoryModal .deleteModalHeader {
    flex-direction: column !important;
  }
  #csvImportHistoryModal .deleteModalHeader .btn,
  #csvImportHistoryModal .deleteModalFooter .btn {
    width: 100% !important;
  }
}

.patientHeroActions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.pwaInstallBtn {
  background: linear-gradient(135deg, #24b56f, #67d993) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 24px rgba(36, 181, 111, 0.18);
}
.pwaInstallBtn[disabled] {
  opacity: 0.72;
  cursor: not-allowed;
  background: #eef7f1 !important;
  color: #5f7a68 !important;
  border-color: #d9eadf !important;
  box-shadow: none;
}
.pwaIosHint {
  margin-top: 10px;
  border: 1px solid #cfe8d8;
  background: #f4fbf6;
  border-radius: 14px;
  padding: 12px 14px;
  color: #244232;
  font-size: 13px;
  line-height: 1.45;
}
@media (max-width: 720px) {
  .patientHeroActions {
    justify-content: flex-start;
    width: 100%;
  }
  .pwaInstallBtn {
    width: 100%;
  }
}

/* --- extracted block --- */

.csvDeleteImportDialog {
  max-width: 720px;
  width: min(720px, calc(100vw - 32px));
}
.csvDeleteWarning {
  border: 1px solid #fecaca;
  background: #fff5f5;
  color: #7f1d1d;
  border-radius: 18px;
  padding: 16px 18px;
  margin: 14px 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
  line-height: 1.45;
}
.csvDeleteWarning b {
  color: #dc2626;
  font-size: 15px;
}
.csvDeleteWarning span {
  font-size: 14px;
  color: #7f1d1d;
}
.csvDeleteConfirmBox {
  border: 1px solid var(--line, #d6eadf);
  background: #f8fffb;
  border-radius: 18px;
  padding: 16px 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 12px;
}
.csvDeleteConfirmBox label {
  font-weight: 800;
  color: #062b1f;
}
.csvDeleteConfirmBox input {
  width: 100%;
  height: 46px;
  border: 1px solid #cfe8d8;
  border-radius: 14px;
  padding: 0 14px;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  background: #fff;
  outline: none;
}
.csvDeleteConfirmBox input:focus {
  border-color: #34c982;
  box-shadow: 0 0 0 3px rgba(52, 201, 130, 0.15);
}
.csvDeleteConfirmBox small {
  font-size: 13px;
  color: #587065;
  line-height: 1.45;
}
#csvDeleteImportConfirmBtn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  filter: grayscale(0.2);
}

.patientHeroActions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.pwaInstallBtn {
  background: linear-gradient(135deg, #24b56f, #67d993) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 24px rgba(36, 181, 111, 0.18);
}
.pwaInstallBtn[disabled] {
  opacity: 0.72;
  cursor: not-allowed;
  background: #eef7f1 !important;
  color: #5f7a68 !important;
  border-color: #d9eadf !important;
  box-shadow: none;
}
.pwaIosHint {
  margin-top: 10px;
  border: 1px solid #cfe8d8;
  background: #f4fbf6;
  border-radius: 14px;
  padding: 12px 14px;
  color: #244232;
  font-size: 13px;
  line-height: 1.45;
}
@media (max-width: 720px) {
  .patientHeroActions {
    justify-content: flex-start;
    width: 100%;
  }
  .pwaInstallBtn {
    width: 100%;
  }
}

/* NutryBuddy v94 - Andamento nutrizionista: grafici più grandi e leggibili */
.andamentoChartsGrid {
  grid-template-columns: 1fr !important;
  gap: 18px !important;
}
.andamentoChartsGrid .andamentoCard {
  padding: 22px !important;
  border-radius: 24px !important;
}
.andamentoChartsGrid .andamentoCard h2 {
  font-size: 24px !important;
  line-height: 1.15 !important;
  margin: 0 0 16px !important;
}
.andamentoChartsGrid .chart {
  min-height: 380px !important;
  padding: 16px !important;
}
.andamentoChartsGrid .chart svg {
  width: 100% !important;
  height: 340px !important;
  max-height: none !important;
}
.andamentoChartsGrid .weightChartPremium {
  padding: 18px !important;
  border-radius: 22px !important;
}
.andamentoChartsGrid .weightKpiGrid {
  gap: 12px !important;
  margin-bottom: 14px !important;
}
.andamentoChartsGrid .weightKpi {
  padding: 14px 18px !important;
  border-radius: 18px !important;
}
.andamentoChartsGrid .weightKpi b {
  font-size: 21px !important;
  line-height: 1.1 !important;
}
.andamentoChartsGrid .weightKpi span {
  font-size: 13px !important;
  line-height: 1.25 !important;
}
.andamentoChartsGrid .weightSvgWrap {
  padding: 16px !important;
  border-radius: 20px !important;
}
.andamentoChartsGrid .weightSvgWrap svg,
.andamentoChartsGrid .weightChartPremium > .weightSvgWrap svg {
  height: 340px !important;
  min-height: 340px !important;
}
.andamentoChartsGrid .weightFooter {
  margin-top: 14px !important;
  border-radius: 18px !important;
}
.andamentoChartsGrid .weightFooterItem {
  padding: 14px 16px !important;
  gap: 12px !important;
}
.andamentoChartsGrid .weightFooterIcon {
  width: 40px !important;
  height: 40px !important;
  border-radius: 12px !important;
  font-size: 17px !important;
}
.andamentoChartsGrid .weightFooterItem b {
  font-size: 16px !important;
  line-height: 1.2 !important;
}
.andamentoChartsGrid .weightFooterItem span {
  font-size: 13px !important;
  line-height: 1.25 !important;
}
.andamentoChartsGrid .bmiRangeChart {
  min-height: 340px !important;
}
.andamentoChartsGrid .bmiRangeChart svg {
  height: 340px !important;
}
@media (max-width: 900px) {
  .andamentoChartsGrid .andamentoCard {
    padding: 16px !important;
  }
  .andamentoChartsGrid .andamentoCard h2 {
    font-size: 21px !important;
  }
  .andamentoChartsGrid .chart {
    min-height: 320px !important;
    padding: 12px !important;
  }
  .andamentoChartsGrid .chart svg,
  .andamentoChartsGrid .weightSvgWrap svg,
  .andamentoChartsGrid .weightChartPremium > .weightSvgWrap svg {
    height: 300px !important;
    min-height: 300px !important;
  }
  .andamentoChartsGrid .weightKpiGrid,
  .andamentoChartsGrid .weightFooter {
    grid-template-columns: 1fr !important;
  }
}


/* =========================================================
   NutryBuddy - SaaS ready Super Admin
========================================================= */

.nb-admin-tabs{
    display:flex;
    gap:10px;
    flex-wrap:wrap;
    margin:18px 0;
}

.nb-admin-tab{
    border:1px solid rgba(45,125,91,.18);
    background:#fff;
    color:#245f49;
    border-radius:999px;
    padding:10px 16px;
    font-weight:700;
    cursor:pointer;
}

.nb-admin-tab.active{
    background:linear-gradient(135deg,#2d7d5b,#48b784);
    color:#fff;
    border-color:transparent;
}

.nb-admin-section{
    display:none;
}

.nb-admin-section.active{
    display:block;
}

.nb-plan-badge{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    border-radius:999px;
    padding:5px 10px;
    font-size:12px;
    font-weight:800;
    background:rgba(72,183,132,.12);
    color:#24644b;
}


/* =========================================================
   NutryBuddy v106 - Super Admin / Nutrizionisti finale
   ---------------------------------------------------------
   Blocco unico e pulito per la gestione commerciale:
   - schede Super Admin separate
   - controlli piano verticali
   - select larghe per mostrare i nomi completi
   - nessuna modifica alle altre aree dell'app
========================================================= */

.nb-admin-tabs,
.super-admin-tabs,
.admin-tabs {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin: 18px 0;
}

.nb-admin-tab,
.super-admin-tab,
.admin-tab {
    border: 1px solid rgba(45, 125, 91, 0.18);
    background: #ffffff;
    color: #245f49;
    border-radius: 999px;
    padding: 10px 16px;
    font-weight: 700;
    cursor: pointer;
    transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}

.nb-admin-tab:hover,
.super-admin-tab:hover,
.admin-tab:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 18px rgba(26, 83, 63, 0.10);
}

.nb-admin-tab.active,
.super-admin-tab.active,
.admin-tab.active {
    background: linear-gradient(135deg, #2d7d5b, #48b784);
    color: #ffffff;
    border-color: transparent;
}

.nb-admin-section,
.super-admin-section,
.admin-section {
    display: none;
}

.nb-admin-section.active,
.super-admin-section.active,
.admin-section.active {
    display: block;
}

.nb-plan-badge,
.nb-account-status {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    padding: 5px 10px;
    font-size: 12px;
    font-weight: 800;
    white-space: nowrap;
}

.nb-plan-badge {
    background: rgba(72, 183, 132, 0.12);
    color: #24644b;
    border: 1px solid rgba(72, 183, 132, 0.22);
}

.nb-account-status {
    background: rgba(52, 152, 219, 0.11);
    color: #24618a;
    border: 1px solid rgba(52, 152, 219, 0.20);
}

.nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls {
    display: flex !important;
    flex-direction: column !important;
    gap: 6px !important;
    width: 245px !important;
    min-width: 245px !important;
    max-width: 245px !important;
}

.nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls .select,
.nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls .nb-plan-select,
.nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls .nb-status-select {
    width: 245px !important;
    min-width: 245px !important;
    max-width: 245px !important;
    height: 38px !important;
    min-height: 38px !important;
    padding: 6px 34px 6px 12px !important;
    border-radius: 12px !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    line-height: 1.1 !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
}

.nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls .btn {
    width: 245px !important;
    min-width: 245px !important;
    max-width: 245px !important;
    height: 38px !important;
    min-height: 38px !important;
    padding: 6px 14px !important;
    border-radius: 12px !important;
    font-size: 13px !important;
    font-weight: 900 !important;
    line-height: 1.1 !important;
    white-space: nowrap !important;
}

.nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable th:nth-child(7),
.nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable td:nth-child(7) {
    width: 265px !important;
    min-width: 265px !important;
    max-width: 265px !important;
}

.nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable td {
    vertical-align: middle !important;
}

.nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminActions {
    display: flex !important;
    flex-direction: column !important;
    gap: 7px !important;
    align-items: stretch !important;
}

.nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminActions .btn {
    min-height: 34px !important;
    padding: 7px 14px !important;
    font-size: 13px !important;
    border-radius: 999px !important;
    white-space: nowrap !important;
}

@media (max-width: 1100px) {
    .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls,
    .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls .select,
    .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls .nb-plan-select,
    .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls .nb-status-select,
    .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls .btn {
        width: 100% !important;
        min-width: 0 !important;
        max-width: none !important;
    }

    .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable th:nth-child(7),
    .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable td:nth-child(7) {
        width: auto !important;
        min-width: 220px !important;
        max-width: none !important;
    }
}


/* =========================================================
   NutryBuddy v107 - Bottone Home nel login
========================================================= */

.authHomeButton,
.loginHomeButton {
    position: absolute;
    top: 18px;
    right: 18px;
    z-index: 20;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 36px;
    padding: 8px 14px;
    border-radius: 999px;
    border: 1px solid rgba(45, 125, 91, 0.16);
    background: rgba(255, 255, 255, 0.92);
    color: #245f49;
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    cursor: pointer;
    box-shadow: 0 8px 22px rgba(25, 84, 61, 0.10);
    backdrop-filter: blur(8px);
}

.authHomeButton:hover,
.loginHomeButton:hover {
    transform: translateY(-1px);
    box-shadow: 0 12px 28px rgba(25, 84, 61, 0.14);
}

.auth,
.authPage,
.loginPage,
#auth,
#login,
[data-page="auth"],
[data-page="login"] {
    position: relative;
}

@media (max-width: 700px) {
    .authHomeButton,
    .loginHomeButton {
        top: 12px;
        right: 12px;
        min-height: 34px;
        padding: 7px 12px;
        font-size: 12px;
    }
}


/* =========================================================
   NutryBuddy v110 - Home button login visible
========================================================= */

.loginTopBar {
    position: absolute;
    top: 18px;
    right: 18px;
    z-index: 50;
}

.authHomeButton {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    padding: 8px 16px;
    border-radius: 999px;
    border: 1px solid rgba(45,125,91,.18);
    background: #ffffff;
    color: #245f49;
    font-size: 13px;
    font-weight: 800;
    cursor: pointer;
    box-shadow: 0 10px 24px rgba(25,84,61,.12);
    transition: all .15s ease;
}

.authHomeButton:hover {
    transform: translateY(-1px);
    box-shadow: 0 14px 28px rgba(25,84,61,.18);
}

.authCard,
.loginCard,
.authBox,
.authContainer,
.loginContainer {
    position: relative !important;
}


/* =========================================================
   NutryBuddy v114 - Popup eliminazione file libreria
========================================================= */

.deleteModalOverlay {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(7, 31, 22, 0.34);
    backdrop-filter: blur(8px);
}

.deleteModalOverlay.open {
    display: flex;
}

.deleteModal {
    width: min(520px, 100%);
    background: #ffffff;
    border: 1px solid rgba(45, 125, 91, 0.14);
    border-radius: 24px;
    padding: 24px;
    box-shadow: 0 24px 70px rgba(18, 65, 47, 0.22);
}

.deleteModal h3 {
    margin: 0 0 10px;
    font-size: 24px;
    color: #061f18;
}

.deleteModal p {
    margin: 0 0 12px;
    line-height: 1.5;
    color: #34564a;
}

.deleteModalActions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 16px;
}

@media (max-width: 620px) {
    .deleteModalActions {
        flex-direction: column-reverse;
    }

    .deleteModalActions .btn {
        width: 100%;
    }
}


/* =========================================================
   NutryBuddy v128 - Agenda interna pulita
========================================================= */

.agendaShell {
    background: rgba(255,255,255,.86);
    border: 1px solid rgba(45,125,91,.13);
    border-radius: 28px;
    padding: 24px;
    box-shadow: 0 18px 50px rgba(18,65,47,.08);
}

.agendaHeader,
.agendaToolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}

.agendaHeader h2 {
    margin: 0 0 6px;
    font-size: 32px;
}

.agendaHeader p {
    margin: 0;
    color: var(--muted);
}

.agendaToolbar {
    margin: 22px 0;
    padding: 12px;
    background: rgba(245,252,248,.9);
    border: 1px solid rgba(45,125,91,.12);
    border-radius: 18px;
}

.agendaPeriodNav,
.agendaModeTabs {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.agendaPeriodNav strong {
    min-width: 220px;
    text-align: center;
    font-size: 18px;
    text-transform: capitalize;
}

.agendaArrow {
    width: 40px;
    height: 40px;
    padding: 0 !important;
    font-size: 22px;
}

.agendaModeBtn {
    border: 1px solid rgba(45,125,91,.16);
    background: #fff;
    color: #245f49;
    border-radius: 12px;
    padding: 10px 14px;
    font-weight: 800;
    cursor: pointer;
}

.agendaModeBtn.active {
    background: linear-gradient(135deg,#2d7d5b,#48b784);
    color: #fff;
    border-color: transparent;
}

.agendaCalendar {
    border: 1px solid rgba(45,125,91,.12);
    border-radius: 22px;
    overflow: hidden;
    background: #fff;
}

.agendaWeekHead {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    background: #f5fbf7;
    border-bottom: 1px solid rgba(45,125,91,.12);
}

.agendaWeekHead div {
    padding: 12px;
    text-align: center;
    font-weight: 900;
    color: #39584b;
    text-transform: uppercase;
    font-size: 12px;
}

.agendaMonthGrid {
    display: grid !important;
    grid-template-columns: repeat(7, minmax(120px, 1fr)) !important;
    align-items: stretch !important;
}

.agendaMonthGrid .agendaDayCell {
    display: block !important;
    width: 100% !important;
    min-height: 135px;
    box-sizing: border-box !important;
    padding: 10px;
    border: 0;
    border-right: 1px solid rgba(45,125,91,.10);
    border-bottom: 1px solid rgba(45,125,91,.10);
    background: #fff;
    text-align: left;
    cursor: pointer;
}

.agendaDayCell:hover,
.agendaHourCell:hover,
.agendaDayHour:hover,
.agendaWeekDayHead:hover {
    background: #f4fbf7;
}

.agendaDayCell.muted {
    background: #fafcfb;
    color: #a5b5ad;
}

.agendaDayCell.today {
    background: #fffde8;
}

.agendaDayNumber {
    display: inline-flex;
    font-weight: 900;
    margin-bottom: 8px;
}

.agendaDayEvents {
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
}

.agendaMiniEvent,
.agendaEventBlock {
    display: block;
    border: 0 !important;
    font-family: inherit !important;
    cursor: pointer !important;
}

.agendaMiniEvent {
    width: 100% !important;
    padding: 5px 7px;
    border-radius: 8px;
    background: #77edbd;
    color: #073523;
    font-size: 11px;
    font-weight: 800;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-align: left !important;
}

.agendaMore {
    font-size: 11px;
    color: #2d7d5b;
    font-weight: 800;
}

.agendaWeekGrid {
    display: grid !important;
    grid-template-columns: 72px repeat(7, minmax(120px, 1fr)) !important;
    align-items: stretch !important;
}

.agendaTimeHead,
.agendaWeekDayHead,
.agendaHourLabel,
.agendaHourCell {
    border: 0;
    border-right: 1px solid rgba(45,125,91,.10);
    border-bottom: 1px solid rgba(45,125,91,.10);
    background: #fff;
}

.agendaWeekDayHead {
    padding: 12px;
    font-weight: 900;
    cursor: pointer;
}

.agendaHourLabel {
    height: 42px !important;
    min-height: 42px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    padding: 8px 10px !important;
    color: #5d7068;
    font-size: 11px !important;
    font-weight: 800;
    text-align: right;
}

.agendaHourCell {
    position: relative !important;
    display: block !important;
    width: 100% !important;
    height: 42px !important;
    min-height: 42px !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    padding: 0 !important;
    cursor: pointer !important;
}

.agendaDayView {
    display: flex;
    flex-direction: column;
}

.agendaDayView .agendaDayHour {
    position: relative !important;
    display: grid !important;
    grid-template-columns: 90px 1fr !important;
    width: 100% !important;
    min-height: 44px !important;
    height: 44px !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    border: 0;
    border-bottom: 1px solid rgba(45,125,91,.10);
    background: #fff;
    cursor: pointer !important;
    text-align: left;
}

.agendaDayHourLabel {
    padding: 10px 14px !important;
    font-weight: 900;
    color: #39584b;
    background: #f8fcfa;
    border-right: 1px solid rgba(45,125,91,.10);
    font-size: 12px !important;
}

.agendaDayHourContent {
    position: relative !important;
    display: block !important;
    width: 100% !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    padding: 7px 10px !important;
}

.agendaHourCell.is-covered,
.agendaDayHour.is-covered {
    background: rgba(119, 237, 189, 0.12) !important;
}

.agendaHourCell .agendaEventSpan,
.agendaDayHourContent .agendaEventSpan {
    position: absolute !important;
    z-index: 20 !important;
    left: 6px !important;
    right: 6px !important;
    top: 4px !important;
    min-height: 0 !important;
    height: 34px !important;
    padding: 8px 10px !important;
    border-radius: 10px !important;
    background: linear-gradient(135deg, #6ee7b7, #55d9a3) !important;
    border-left: 4px solid rgba(9, 116, 73, 0.65) !important;
    color: #063322 !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    line-height: 1.2 !important;
    display: flex !important;
    align-items: flex-start !important;
    white-space: normal !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    text-align: left !important;
    box-shadow: 0 10px 22px rgba(37, 164, 107, 0.22) !important;
}

.agendaEventSpan.span-1 { height: 34px !important; }
.agendaEventSpan.span-2 { height: 76px !important; }
.agendaEventSpan.span-3 { height: 118px !important; }
.agendaEventSpan.span-4 { height: 160px !important; }
.agendaEventSpan.span-5 { height: 202px !important; }
.agendaEventSpan.span-6 { height: 244px !important; }

.agendaAddOverlay {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(7,31,22,.30);
    backdrop-filter: blur(8px);
    padding: 20px;
}

.agendaAddOverlay.open {
    display: flex;
}

.agendaAddModal {
    width: min(780px, 100%);
    background: #fff;
    border-radius: 28px;
    padding: 34px;
    box-shadow: 0 24px 80px rgba(18,65,47,.22);
    position: relative;
    text-align: center;
}

.agendaAddModal h3 {
    margin: 0 0 8px;
    font-size: 24px;
}

.agendaModalClose {
    position: absolute;
    top: 16px;
    right: 16px;
    width: 36px;
    height: 36px;
    border-radius: 999px;
    border: 1px solid rgba(45,125,91,.12);
    background: #fff;
    cursor: pointer;
    font-size: 22px;
}

.agendaChoiceGrid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
    margin-top: 26px;
}

.agendaChoiceCard {
    min-height: 120px;
    border: 1px solid rgba(45,125,91,.12);
    background: #fff;
    border-radius: 18px;
    box-shadow: 0 14px 34px rgba(18,65,47,.08);
    cursor: pointer;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    font-weight: 900;
    color: #10251d;
}

.agendaChoiceCard:hover {
    transform: translateY(-2px);
    box-shadow: 0 20px 44px rgba(18,65,47,.13);
}

.agendaChoiceCard span {
    font-size: 34px;
}

.calendarEventModal {
    text-align: left !important;
}

.calendarEventDetails {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    margin: 18px 0;
}

.calendarEventDetails div {
    padding: 12px;
    border: 1px solid rgba(45,125,91,.12);
    border-radius: 14px;
    background: #f7fcf9;
}

.calendarEventDetails div.full {
    grid-column: 1 / -1;
}

.calendarEventDetails b {
    display: block;
    margin-bottom: 4px;
    color: #0b2a20;
}

.calendarEventDetails span {
    color: #426255;
}

.calendarEventActions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 18px;
}

@media (max-width: 900px) {
    .agendaMonthGrid,
    .agendaWeekHead {
        grid-template-columns: repeat(7, minmax(95px, 1fr)) !important;
    }

    .agendaCalendar {
        overflow-x: auto;
    }

    .agendaChoiceGrid,
    .calendarEventDetails {
        grid-template-columns: 1fr;
    }

    .calendarEventActions {
        flex-direction: column-reverse;
    }

    .calendarEventActions .btn {
        width: 100%;
    }
}


/* =========================================================
   NutryBuddy v130 - Elimina prossimi appuntamenti
========================================================= */

.appointmentActions {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.btn.danger.mini {
    min-width: 96px;
    padding: 8px 12px;
}

.calendarDeleteText {
    margin-top: 18px;
    line-height: 1.6;
}


/* =========================================================
   NutryBuddy v137 - Impegno personale / Day Off
========================================================= */

.agendaEventBlock.dayoff,
.agendaMiniEvent.dayoff {
    background: linear-gradient(135deg, #ff8f8f, #ff5f5f) !important;
    border-left-color: rgba(168, 26, 26, 0.75) !important;
    color: #3a0505 !important;
}

.agendaEventBlock.activity,
.agendaMiniEvent.activity {
    background: linear-gradient(135deg, #ffd56f, #ffb84d) !important;
    border-left-color: rgba(172, 99, 0, 0.75) !important;
    color: #3b2500 !important;
}

.dayOffFormGrid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 14px;
    margin-top: 20px;
    text-align: left;
}

.dayOffFormGrid .full {
    grid-column: 1 / -1;
}

.dayOffAllDayToggle {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    border: 1px solid rgba(45,125,91,.12);
    border-radius: 14px;
    background: #f7fcf9;
    font-weight: 900;
    color: #12372b;
}

.dayOffAllDayToggle input {
    width: 18px;
    height: 18px;
}

@media (max-width: 700px) {
    .dayOffFormGrid {
        grid-template-columns: 1fr;
    }
}


/* =========================================================
   NutryBuddy v138 - Day Off durata rossa
========================================================= */

.agendaHourCell.is-dayoff-covered,
.agendaDayHour.is-dayoff-covered {
    background: rgba(255, 95, 95, 0.14) !important;
}

.agendaHourCell.is-dayoff-covered:hover,
.agendaDayHour.is-dayoff-covered:hover {
    background: rgba(255, 95, 95, 0.20) !important;
}

.agendaHourCell.is-activity-covered,
.agendaDayHour.is-activity-covered {
    background: rgba(255, 184, 77, 0.14) !important;
}

.agendaHourCell.is-activity-covered:hover,
.agendaDayHour.is-activity-covered:hover {
    background: rgba(255, 184, 77, 0.20) !important;
}


/* =========================================================
   NutryBuddy v139 - DayOff full block
========================================================= */

.agendaEventBlock.fullBlock {
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 100% !important;
    border-radius: 0 !important;
    margin: 0 !important;
    display: flex;
    align-items: flex-start;
    justify-content: flex-start;
    padding: 10px 12px !important;
    box-sizing: border-box;
}

.agendaEventBlock.dayoff.fullBlock {
    background: linear-gradient(180deg, rgba(255,95,95,.92), rgba(255,120,120,.82)) !important;
}

.agendaEventBlock.activity.fullBlock {
    background: linear-gradient(180deg, rgba(255,184,77,.92), rgba(255,208,120,.82)) !important;
}


/* =========================================================
   NutryBuddy v140 - DayOff altezza dinamica su durata
========================================================= */

.agendaEventBlock.fullBlock {
    top: 4px !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    min-height: 34px !important;
    border-radius: 10px !important;
    margin: 0 !important;
    display: flex !important;
    align-items: flex-start !important;
    justify-content: flex-start !important;
    padding: 10px 12px !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
}

.agendaEventBlock.dayoff.fullBlock {
    background: linear-gradient(180deg, rgba(255,95,95,.94), rgba(255,120,120,.86)) !important;
    box-shadow: 0 10px 22px rgba(204, 55, 55, 0.22) !important;
}

.agendaEventBlock.activity.fullBlock {
    background: linear-gradient(180deg, rgba(255,184,77,.94), rgba(255,208,120,.86)) !important;
    box-shadow: 0 10px 22px rgba(204, 132, 37, 0.22) !important;
}


/* =========================================================
   NutryBuddy v141 - Visita da agenda
========================================================= */

.agendaEventBlock.visit.fullBlock {
    background: linear-gradient(180deg, rgba(85, 217, 163, .94), rgba(110, 231, 183, .86)) !important;
    box-shadow: 0 10px 22px rgba(37, 164, 107, 0.22) !important;
}

.agendaVisitFormGrid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 14px;
    margin-top: 20px;
    text-align: left;
}

.agendaVisitFormGrid .full {
    grid-column: 1 / -1;
}

@media (max-width: 700px) {
    .agendaVisitFormGrid {
        grid-template-columns: 1fr;
    }
}


/* Forced first-login password change modal */
.forcedPasswordModal{position:fixed;inset:0;z-index:99999;display:none;align-items:center;justify-content:center;background:rgba(15,23,42,.45);backdrop-filter:blur(8px);padding:20px}
.forcedPasswordCard{width:min(460px,100%);background:#fff;border-radius:24px;box-shadow:0 30px 80px rgba(15,23,42,.22);padding:28px}
.forcedPasswordCard h2{margin:0 0 8px;font-size:26px;color:#111827}
.forcedPasswordCard p{margin:0 0 20px;color:#4b5563;line-height:1.5}
.forcedPasswordActions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}


.csvImportLimitAlert {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  background: linear-gradient(135deg, #fff7f8 0%, #fff1f2 100%);
  border: 1px solid #fecdd3;
  border-left: 5px solid #e11d48;
  color: #881337;
  border-radius: 18px;
  padding: 14px 16px;
  margin: 14px 0 12px;
  box-shadow: 0 14px 30px rgba(159, 18, 57, 0.10);
}
.csvImportLimitIcon {
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #ffe4e6;
  border: 1px solid #fecdd3;
  font-size: 17px;
  line-height: 1;
}
.csvImportLimitContent {
  display: grid;
  gap: 4px;
  min-width: 0;
}
.csvImportLimitContent strong {
  display: block;
  color: #9f1239;
  font-size: 15px;
  line-height: 1.25;
  font-weight: 950;
}
.csvImportLimitContent span {
  display: block;
  color: #7f1d1d;
  font-size: 13px;
  line-height: 1.45;
  font-weight: 700;
}
.csvImportLimitAlert.hidden {
  display: none !important;
}

/* NutryBuddy v152 - Legal acceptance modal */
.legalAcceptanceModal{position:fixed;inset:0;z-index:99998;display:none;align-items:center;justify-content:center;background:rgba(5,35,24,.58);backdrop-filter:blur(10px);padding:20px}
.legalAcceptanceCard{width:min(620px,100%);max-height:92vh;overflow:auto;background:#fff;border:1px solid rgba(16,185,129,.16);border-radius:28px;box-shadow:0 34px 90px rgba(6,78,59,.28);padding:30px;color:#0f2f25}
.legalAcceptanceIcon{width:48px;height:48px;border-radius:18px;display:flex;align-items:center;justify-content:center;background:#ecfdf5;border:1px solid #bbf7d0;font-size:24px;margin-bottom:14px}
.legalAcceptanceCard h2{margin:0 0 8px;font-size:30px;letter-spacing:-.03em;color:#0b2f24}
.legalAcceptanceIntro{margin:0 0 18px;color:#587066;line-height:1.55;font-weight:650}
.legalAcceptanceOpenBtn{margin-bottom:14px}
.legalAcceptanceDocs{border:1px solid #d8efe4;border-radius:20px;background:#f8fffb;margin:0 0 16px;overflow:hidden}
.legalAcceptanceDocs.hidden{display:none}
.legalAcceptanceTabs{display:flex;gap:6px;flex-wrap:wrap;padding:10px;border-bottom:1px solid #d8efe4;background:#effaf4}
.legalAcceptanceTabs button{border:1px solid transparent;background:transparent;border-radius:999px;padding:8px 12px;font-weight:800;color:#31574a;cursor:pointer}
.legalAcceptanceTabs button.active{background:#fff;border-color:#bdebd3;color:#05834f;box-shadow:0 6px 16px rgba(6,78,59,.08)}
.legalAcceptanceText{max-height:230px;overflow:auto;padding:16px;white-space:pre-wrap;color:#24483c;line-height:1.55;font-size:14px}
.legalAcceptanceText h3{margin:0 0 10px;font-size:18px;color:#0b2f24}
.legalAcceptanceCheck{display:flex;gap:12px;align-items:flex-start;background:#fff7ed;border:1px solid #fed7aa;border-radius:18px;padding:14px 16px;color:#7c2d12;font-weight:850;line-height:1.4;margin-top:10px}
.legalAcceptanceCheck input{margin-top:3px;min-width:18px;width:18px;height:18px;accent-color:#10b981}
.legalAcceptanceActions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}


/* ============================================================
   NutryBuddy v159 - Super Admin dashboard compatta
   ============================================================ */
#superAdmin .adminTopRow {
  align-items: center !important;
  gap: 10px !important;
  margin-bottom: 10px !important;
}

#superAdmin .adminTopRow h2 {
  margin-bottom: 4px !important;
}

#superAdmin .adminTopRow p {
  margin: 0 !important;
  font-size: 13px !important;
}

#superAdmin .adminQuickActions {
  gap: 8px !important;
  align-items: center !important;
}

#superAdmin .adminQuickActions .btn {
  min-height: 38px !important;
  height: 38px !important;
  padding: 8px 16px !important;
  border-radius: 12px !important;
  font-size: 13px !important;
  line-height: 1 !important;
  box-shadow: 0 8px 18px rgba(16, 38, 29, 0.08) !important;
}

#superAdmin .superAdminHeroStats {
  grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
  gap: 10px !important;
  margin: 0 0 10px !important;
}

#superAdmin .superAdminHeroStat {
  min-height: 86px !important;
  padding: 12px 14px !important;
  border-radius: 18px !important;
  box-shadow: 0 8px 20px rgba(16, 38, 29, 0.045) !important;
}

#superAdmin .superAdminHeroStat b {
  font-size: 24px !important;
  line-height: 1 !important;
  margin-bottom: 5px !important;
}

#superAdmin .superAdminHeroStat span {
  display: block !important;
  font-size: 11.5px !important;
  line-height: 1.15 !important;
  font-weight: 850 !important;
}

#superAdmin .superAdminHeroStat small {
  margin-top: 5px !important;
  font-size: 10.5px !important;
  line-height: 1.2 !important;
}

@media (max-width: 1280px) {
  #superAdmin .superAdminHeroStats {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }
}

@media (max-width: 760px) {
  #superAdmin .superAdminHeroStats {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  #superAdmin .adminQuickActions .btn {
    flex: 1 1 auto !important;
  }
}


/* v162 - Stato Privacy Super Admin */
.nb-privacy-status{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:800;white-space:nowrap}
.nb-privacy-status.is-accepted{background:#ecfdf5;color:#047857;border:1px solid rgba(4,120,87,.18)}
.nb-privacy-status.is-pending{background:#fff7ed;color:#c2410c;border:1px solid rgba(194,65,12,.18)}


/* v177 - hint credenziali compatto e sicuro */
.superAdminCreateHint{
  padding:10px 14px !important;
  min-height:auto !important;
}

.superAdminCreateHint .dangerText{
  display:block !important;
  font-size:12px !important;
  line-height:1.25 !important;
  font-weight:800 !important;
  margin:0 !important;
}

/* Reset password nutritionist modal */
.resetNutritionistPasswordModalOverlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.42);
  z-index: 99997;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
  backdrop-filter: blur(8px);
}
.resetNutritionistPasswordModalOverlay.open {
  display: flex;
}
.resetNutritionistPasswordModal {
  width: min(520px, 96vw);
  background: #fff;
  border: 1px solid #d7f0e2;
  border-radius: 24px;
  box-shadow: 0 24px 70px rgba(16, 38, 29, 0.25);
  padding: 24px;
  text-align: left;
}
.resetNutritionistPasswordModal .resetPasswordIcon {
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  border-radius: 16px;
  background: #ecfdf3;
  border: 1px solid #bbf7d0;
  font-size: 24px;
  margin-bottom: 14px;
}
.resetNutritionistPasswordModal h3 {
  margin: 0 0 8px;
  font-size: 22px;
  color: #10261d;
}
.resetNutritionistPasswordModal p {
  margin: 0 0 14px;
  color: #5f6f67;
  line-height: 1.45;
}
.resetPasswordTarget {
  background: #f6fbf8;
  border: 1px solid #d7f0e2;
  border-radius: 14px;
  padding: 12px 14px;
  font-weight: 800;
  color: #0f5132;
  word-break: break-word;
  margin-bottom: 12px;
}
.resetPasswordNote {
  background: #f8fafc;
  border: 1px solid #e5e7eb;
  border-radius: 14px;
  padding: 12px 14px;
  color: #64748b;
  font-size: 13px;
  line-height: 1.45;
  margin-bottom: 16px;
}
.resetNutritionistPasswordModal button:disabled {
  opacity: 0.7;
  cursor: not-allowed;
}

/* v179 - Super Admin: gestione utenti full width + creazione nutrizionista in modale */
#superAdmin .superAdminGrid.superAdminGridSingle {
  grid-template-columns: minmax(0, 1fr) !important;
}

#superAdmin .superAdminGrid.superAdminGridSingle > .superAdminPanel {
  width: 100% !important;
}

#superAdmin .superAdminPanel {
  padding: 16px !important;
  border-radius: 20px !important;
}

#superAdmin .superAdminPanel h3 {
  font-size: 19px !important;
  margin-bottom: 6px !important;
}

#superAdmin .superAdminPanel > p {
  font-size: 13px !important;
  margin: 0 0 12px !important;
}

#superAdmin .metricGrid {
  gap: 10px !important;
}

#superAdmin .metricBox {
  min-height: 70px !important;
  padding: 12px 14px !important;
  border-radius: 16px !important;
}

#superAdmin .superAdminTable th,
#superAdmin .superAdminTable td {
  padding: 9px 10px !important;
  font-size: 13px !important;
}

#superAdmin .superAdminCommercialControls {
  max-width: 260px !important;
  gap: 7px !important;
}

#superAdmin .superAdminActions {
  gap: 7px !important;
}

#superAdmin .superAdminActions .btn,
#superAdmin .superAdminCommercialControls .btn,
#superAdmin .superAdminCommercialControls .select {
  min-height: 36px !important;
  height: 36px !important;
  font-size: 12.5px !important;
  border-radius: 13px !important;
}

.createNutritionistModalOverlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.42);
  z-index: 99996;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 18px;
  backdrop-filter: blur(8px);
}

.createNutritionistModalOverlay.open {
  display: flex;
}

.createNutritionistModal {
  width: min(620px, 96vw);
  max-height: 92vh;
  overflow: auto;
  background: #fff;
  border: 1px solid #d7f0e2;
  border-radius: 24px;
  box-shadow: 0 24px 70px rgba(16, 38, 29, 0.25);
  padding: 22px;
}

.createNutritionistModalHead {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-start;
  margin-bottom: 12px;
}

.createNutritionistIcon {
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  border-radius: 16px;
  background: #ecfdf3;
  border: 1px solid #bbf7d0;
  font-size: 23px;
  margin-bottom: 12px;
}

.createNutritionistModal h3 {
  margin: 0 0 6px;
  font-size: 22px;
  color: #10261d;
}

.createNutritionistModal p {
  margin: 0;
  color: #5f6f67;
  line-height: 1.45;
  font-size: 14px;
}

.modalCloseBtn {
  width: 38px;
  height: 38px;
  border-radius: 999px;
  border: 1px solid #dce9df;
  background: #fff;
  color: #10261d;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
}

.createNutritionistNotice {
  margin-bottom: 14px !important;
}

.createNutritionistFormGrid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}

.createNutritionistModal .field label {
  font-size: 12px;
  font-weight: 850;
  color: #10261d;
  margin-bottom: 6px;
}

.createNutritionistModal .input,
.createNutritionistModal .select {
  width: 100%;
  min-height: 42px;
}

.createNutritionistActions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 18px;
  flex-wrap: wrap;
}

@media (max-width: 760px) {
  .createNutritionistActions .btn,
  .createNutritionistModal .superAdminPasswordRow .btn {
    width: 100%;
  }
}

.nb-simple-info{display:flex;flex-direction:column;gap:4px}.nb-simple-title{font-weight:600;color:#183B2D;font-size:14px}


/* Notifica Bacheca Staff */
.staffNavBtn{position:relative!important;}
.staffNotifDot{
  position:absolute;
  top:7px;
  right:8px;
  width:10px;
  height:10px;
  background:#e53935;
  border-radius:999px;
  border:2px solid #fff;
  box-shadow:0 0 0 3px rgba(229,57,53,.14),0 4px 10px rgba(229,57,53,.35);
  pointer-events:none;
}

/* =========================================================
   NutryBuddy - Diet Builder visual mock
========================================================= */
.dietManagerCard{border:1px solid rgba(0,128,82,.18);background:linear-gradient(180deg,#fff,#fbfffd)}
.dietManagerHead{display:flex;align-items:center;justify-content:space-between;gap:18px}
.dietManagerHead h2{margin:0 0 6px;color:#022820}
.dietManagerHead p{margin:0;color:var(--muted);line-height:1.45}
.dietEmptyState{margin-top:16px;border:1px dashed rgba(0,128,82,.28);border-radius:16px;padding:18px;background:#f8fffb;display:flex;flex-direction:column;gap:4px;color:#20423b}
.dietEmptyState span{font-size:13px;color:var(--muted)}

.dietBuilderPage{padding:4px 0 32px;color:#12211d}
.dietBuilderTopbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px;padding:18px 20px;border:1px solid rgba(0,128,82,.16);border-radius:22px;background:#fff;box-shadow:0 14px 34px rgba(0,0,0,.06)}
.dietBuilderTopbar h2{margin:0;font-size:28px;color:#01291f}
.dietBuilderTopbar p{margin:4px 0 0;color:var(--muted)}
.dietBuilderSteps{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px}
.dietBuilderSteps span{padding:12px 14px;border:1px solid rgba(0,128,82,.16);border-radius:999px;background:#fff;text-align:center;font-weight:800;font-size:13px;color:#4b635d}
.dietBuilderSteps span.active{background:linear-gradient(135deg,#04a466,#53cf91);color:#fff;border-color:transparent;box-shadow:0 10px 22px rgba(0,128,82,.18)}
.dietBuilderGrid{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:18px;align-items:start}
.dietBuilderMain{display:flex;flex-direction:column;gap:18px}
.dietPanel,.dietSummaryPanel{background:#fff;border:1px solid rgba(0,128,82,.16);border-radius:22px;padding:20px;box-shadow:0 12px 30px rgba(0,0,0,.05)}
.dietPanel h3,.dietSummaryPanel h3{margin:0 0 16px;font-size:22px;color:#042b22}
.dietFormGrid,.targetGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.dietFormGrid label,.targetGrid label{font-weight:800;font-size:13px;color:#334b45;display:flex;flex-direction:column;gap:7px}
.dietDislikeBox{margin-top:18px;padding:16px;border-radius:18px;background:#f7fffb;border:1px solid rgba(0,128,82,.16)}
.dietDislikeHead{display:flex;flex-direction:column;gap:3px;margin-bottom:10px}
.dietDislikeHead b{color:#073329}
.dietDislikeHead span{color:var(--muted);font-size:13px}
.dietDislikeInput{display:grid;grid-template-columns:1fr auto;gap:10px}
.dietChipList{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.dietChip{display:inline-flex;align-items:center;gap:7px;padding:8px 10px;border-radius:999px;background:#e8f8f0;color:#04744b;font-weight:900;font-size:13px}
.dietChip button{border:0;background:transparent;color:#04744b;font-weight:900;cursor:pointer;font-size:16px;line-height:1}
.macroTableWrap{overflow:auto;border-radius:15px;border:1px solid rgba(0,128,82,.14)}
.macroTable{width:100%;border-collapse:collapse;background:#fff}
.macroTable th,.macroTable td{padding:11px 12px;border-bottom:1px solid rgba(0,0,0,.07);text-align:left;font-size:13px}
.macroTable th{background:#f5fbf8;color:#4f665f}
.macroTable tr:last-child td{border-bottom:0;font-weight:900}
.macroWarn td{color:#c0392b;background:#fff8f7}
.dietEditorHead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.dietEditorHead h3{margin:0}
.dietDaysTabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.dietDaysTabs button{border:1px solid rgba(0,128,82,.35);background:#fff;color:#04744b;border-radius:10px;padding:9px 16px;font-weight:900;cursor:pointer}
.dietDaysTabs button.active{background:#dff4ea;box-shadow:0 0 0 2px rgba(0,128,82,.1) inset}
.dietMealsGrid{display:flex;flex-direction:column;gap:12px}
.dietMealCard{border:1px solid rgba(0,0,0,.12);border-radius:18px;background:#fff;padding:16px}
.dietMealCard>div{display:flex;align-items:center;justify-content:space-between;gap:12px}
.dietMealCard b{font-size:17px;color:#12211d}
.dietMealCard button{border:1px solid #00a362;background:#fff;color:#008052;border-radius:9px;padding:7px 12px;font-weight:900;cursor:pointer}
.dietMealCard p{margin:12px 0 0;color:#9a9a9a;border-top:1px solid rgba(0,0,0,.08);padding-top:12px}
.dietSummaryPanel{position:sticky;top:18px}
.summaryKcal{display:flex;align-items:flex-end;gap:6px;border-radius:18px;background:#eaf8f1;padding:18px;margin-bottom:14px;color:#04744b}
.summaryKcal b{font-size:38px;line-height:.9}
.summaryKcal span{font-weight:900}
.summaryLine{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(0,0,0,.08);padding:12px 0;color:#354b45}
.summaryNotice{margin-top:14px;border-radius:14px;background:#fff9e8;border:1px solid #f2dca4;padding:12px;color:#735b10;font-weight:700;font-size:13px;line-height:1.45}
.foodSearchOverlay{position:fixed;inset:0;background:rgba(0,0,0,.38);z-index:9999;align-items:center;justify-content:center;padding:26px}
.foodSearchBox{width:min(980px,96vw);height:min(720px,88vh);background:#fff;border-radius:22px;box-shadow:0 22px 70px rgba(0,0,0,.28);padding:22px;display:flex;flex-direction:column}
.foodSearchHead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}
.foodSearchHead h3{margin:0;font-size:24px;color:#102820}
.foodSearchHead p{margin:4px 0 0;color:var(--muted)}
.foodSearchHead>button{border:0;background:transparent;font-size:30px;line-height:1;cursor:pointer;color:#223b35}
.foodSearchControls{display:grid;grid-template-columns:1fr 260px;gap:14px;margin-bottom:16px}
.foodResults{overflow:auto;display:flex;flex-direction:column;gap:8px;padding-right:4px}
.foodResult{display:flex;align-items:center;gap:12px;border:1px solid rgba(0,0,0,.08);border-radius:14px;padding:12px;background:#fff}
.foodResult button{width:32px;height:32px;border-radius:50%;border:0;background:#e5f7ee;color:#008052;font-size:22px;line-height:1;font-weight:900;cursor:pointer}
.foodResult span{display:flex;flex-direction:column;gap:4px;font-weight:800;color:#3e504b}
.foodResult em{font-style:normal;color:#c57b00;font-size:12px;font-weight:900}
.foodResult.empty{justify-content:center;color:var(--muted)}
@media(max-width:980px){.dietBuilderGrid{grid-template-columns:1fr}.dietSummaryPanel{position:relative;top:auto}.dietFormGrid,.targetGrid,.foodSearchControls{grid-template-columns:1fr}.dietBuilderSteps{grid-template-columns:1fr 1fr}.dietBuilderTopbar{flex-direction:column;align-items:flex-start}}

/* Diet builder step-by-step refinement */
.dietBuilderSteps{grid-template-columns:repeat(3,1fr)!important;}
.dietBuilderSteps button{padding:12px 14px;border:1px solid rgba(0,128,82,.16);border-radius:999px;background:#fff;text-align:center;font-weight:800;font-size:13px;color:#4b635d;cursor:pointer;transition:.18s ease;}
.dietBuilderSteps button.active{background:linear-gradient(135deg,#04a466,#53cf91);color:#fff;border-color:transparent;box-shadow:0 10px 22px rgba(0,128,82,.18);}
.dietBuilderSteps button.done{background:#e8fbf3;color:#007a4e;border-color:rgba(0,128,82,.26);}
.dietStepPanel{min-height:420px;}
.dietStepHint{margin:0 0 14px;color:#55706a;font-size:13px;font-weight:650;}
.dietStepActions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;padding-top:14px;border-top:1px solid rgba(0,128,82,.12);}
.dietEditorHead>div{display:flex;flex-direction:column;gap:2px;}
.dietEditorHead .dietStepHint{margin:0;}
@media(max-width:980px){.dietBuilderSteps{grid-template-columns:1fr!important}.dietStepActions{flex-direction:column}.dietStepActions .btn{width:100%;}}

/* Food category tree refinement */
.foodCategoryTree{margin-top:14px;border:1px solid rgba(0,128,82,.16);border-radius:16px;background:#fff;padding:12px;max-height:360px;overflow:auto;}
.foodCategoryTreeHead{display:flex;align-items:center;gap:8px;margin-bottom:8px;color:#263f38;}
.foodCategoryTreeHead b{font-size:14px;}
.foodCategoryTreeHead span{font-size:12px;color:#78908a;font-weight:700;}
.foodCategorySearch{display:flex;align-items:center;gap:7px;border:1px solid rgba(0,0,0,.18);border-radius:9px;padding:7px 9px;margin-bottom:8px;background:#fbfffd;color:#00a362;}
.foodCategorySearch input{border:0;outline:0;width:100%;background:transparent;font-size:13px;color:#78908a;}
.foodCategoryList{display:flex;flex-direction:column;gap:2px;}
.foodCat{border-radius:9px;}
.foodCat summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:7px;padding:6px 7px;border-radius:9px;color:#425a54;font-weight:750;}
.foodCat summary::-webkit-details-marker{display:none;}
.foodCat[open] summary{background:#edf9f3;color:#007a4e;}
.foodCat .chev{font-size:18px;line-height:1;transition:.15s ease;color:#52655f;}
.foodCat[open] .chev{transform:rotate(90deg);}
.folder{color:#00a362;font-size:14px;line-height:1;}
.folder.small{font-size:12px;}
.foodSubCats{margin-left:28px;padding:3px 0 7px;display:flex;flex-direction:column;gap:2px;}
.foodSubCats div{display:flex;align-items:center;gap:7px;padding:5px 7px;border-radius:8px;color:#5c706b;font-size:13px;font-weight:650;}
.foodSubCats div:hover{background:#f6fbf8;}
.foodSearchBody{display:grid;grid-template-columns:320px minmax(0,1fr);gap:14px;min-height:0;flex:1;}
.foodSearchBody .foodCategoryTree{margin-top:0;max-height:none;height:100%;}
.foodSearchBody .foodResults{min-height:0;}
@media(max-width:760px){.foodSearchBody{grid-template-columns:1fr}.foodSearchBody .foodCategoryTree{max-height:220px}.foodSearchBox{height:92vh}}

/* Food category icons refresh */
.foodEmoji{width:22px;height:22px;min-width:22px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:#eefaf4;font-size:14px;line-height:1;box-shadow:inset 0 0 0 1px rgba(0,128,82,.08);}
.foodEmoji.small{width:20px;height:20px;min-width:20px;font-size:12px;background:#f5fbf8;}
.foodCat summary{gap:8px!important;}
.foodSubCats div{gap:8px!important;}
.folder{display:none;}
.foodResultsEmpty{border:1px dashed rgba(0,128,82,.22);border-radius:18px;background:#fbfffd;align-items:center;justify-content:center;padding:28px;}
.emptyFoodState{text-align:center;max-width:420px;margin:auto;color:#59706a;}
.emptyFoodState>div{font-size:44px;margin-bottom:10px;}
.emptyFoodState h4{margin:0 0 8px;color:#15342b;font-size:19px;}
.emptyFoodState p{margin:0;line-height:1.5;font-weight:650;}

/* NutryBuddy Diet PDF mock cards */
.btn.dangerSoft{background:#fff1f1!important;color:#b42318!important;border:1px solid #ffd1d1!important}
.btn.dangerSoft:hover{background:#ffe6e6!important}
.patientDietList{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.patientDietCard{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:14px;align-items:center;border:1px solid rgba(0,128,82,.16);border-radius:18px;background:#fff;padding:14px;box-shadow:0 10px 22px rgba(0,0,0,.035)}
.patientDietCard.shared{background:linear-gradient(180deg,#fff,#f5fff9);border-color:rgba(0,128,82,.28)}
.patientDietCard.hiddenDiet{background:#fffdf8;border-color:rgba(220,170,70,.22)}
.patientDietIcon{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:#e8f8f0;font-size:24px}
.patientDietInfo{display:flex;flex-direction:column;gap:4px;min-width:0}
.patientDietInfo b{font-size:17px;color:#062d24;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.patientDietInfo span{font-size:13px;color:#536b65}
.patientDietInfo em{font-style:normal;font-weight:900;font-size:12px;color:#007a4e}
.patientDietCard.hiddenDiet .patientDietInfo em{color:#9a6a00}
.patientDietActions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.dietTopbarSpacer{min-width:140px;display:block}
.dietPdfOverlay{position:fixed;inset:0;z-index:10020;background:rgba(0,0,0,.42);display:none;align-items:center;justify-content:center;padding:26px}
.dietPdfModal{width:min(1040px,96vw);height:min(92vh,900px);background:#f7faf8;border-radius:24px;box-shadow:0 25px 80px rgba(0,0,0,.32);display:flex;flex-direction:column;overflow:hidden}
.dietPdfModalTop{display:flex;align-items:center;justify-content:space-between;gap:14px;background:#fff;padding:18px 22px;border-bottom:1px solid rgba(0,128,82,.13)}
.dietPdfModalTop h2{margin:0;color:#062d24;font-size:24px}
.dietPdfModalTop p{margin:3px 0 0;color:#5c706b}
.dietPdfModalActions{display:flex;align-items:center;gap:10px}
.dietPdfClose{width:38px;height:38px;border:0;background:#f2f6f4;border-radius:12px;font-size:26px;line-height:1;cursor:pointer;color:#193c34}
.dietPdfScroll{overflow:auto;padding:24px}
.dietPdfSheet{max-width:820px;margin:0 auto;background:#fff;border-radius:14px;border:1px solid rgba(17,24,39,.12);box-shadow:0 18px 44px rgba(0,0,0,.07);padding:34px;color:#17211d;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.dietPdfHero{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;border-bottom:2px solid #1f6f52;padding-bottom:22px;margin-bottom:22px}
.dietPdfKicker{font-weight:800;text-transform:uppercase;letter-spacing:.08em;font-size:11px;color:#1f6f52}
.dietPdfHero h1{margin:8px 0 8px;font-size:31px;line-height:1.1;color:#12251d;font-weight:850}
.dietPdfHero p{margin:0;color:#566861;line-height:1.55;font-size:14px}
.dietPdfLogo{width:54px;height:54px;border-radius:12px;background:#1f6f52;display:grid;place-items:center;color:#fff;font-weight:900;font-size:18px;letter-spacing:.04em}
.dietPdfPatientGrid,.dietPdfMacroGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:18px 0}
.dietPdfPatientGrid>div,.dietPdfMacroGrid>div{border:1px solid rgba(17,24,39,.1);background:#fbfcfb;border-radius:12px;padding:13px;display:flex;flex-direction:column;gap:6px}
.dietPdfPatientGrid span,.dietPdfMacroGrid span{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#66736e}
.dietPdfPatientGrid b,.dietPdfMacroGrid b{font-size:17px;color:#14251f}
.dietPdfMacroGrid{grid-template-columns:repeat(3,1fr)}
.dietPdfMacroGrid em{font-style:normal;color:#1f6f52;font-weight:850;font-size:12px}
.dietPdfWarn{border:1px solid #e4d7b2;background:#fffaf0;color:#5f4a17;border-radius:12px;padding:13px 15px;margin:18px 0;font-size:13px;line-height:1.5}
.dietPdfDays{display:flex;flex-direction:column;gap:16px;margin-top:20px}
.dietPdfDay{break-inside:avoid;border:1px solid rgba(17,24,39,.12);border-radius:12px;overflow:hidden;background:#fff}
.dietPdfDay h2{margin:0;background:#f2f6f4;color:#14251f;padding:13px 16px;font-size:18px;border-bottom:1px solid rgba(17,24,39,.08)}
.dietPdfMeal{padding:13px 16px;border-top:1px solid rgba(17,24,39,.06)}
.dietPdfMeal:first-of-type{border-top:0}
.dietPdfMeal h3{margin:0 0 7px;color:#1b332a;font-size:15px;font-weight:850}
.dietPdfMeal p{margin:0;color:#66736e;font-size:13px;line-height:1.45}
.dietPdfFooter{margin-top:22px;padding-top:14px;border-top:1px solid rgba(17,24,39,.12);color:#6b7772;font-size:12px;line-height:1.45}
@media(max-width:860px){.patientDietCard{grid-template-columns:1fr}.patientDietIcon{display:none}.patientDietActions{justify-content:flex-start}.dietPdfPatientGrid{grid-template-columns:1fr 1fr}.dietPdfMacroGrid{grid-template-columns:1fr}.dietPdfSheet{padding:22px}.dietPdfHero{flex-direction:column}.dietTopbarSpacer{display:none}}
@media print{body>*:not(#dietPdfPreviewModal){display:none!important}.dietPdfOverlay{position:static!important;display:block!important;background:#fff!important;padding:0!important}.dietPdfModal{height:auto!important;width:100%!important;box-shadow:none!important;border-radius:0!important}.dietPdfModalTop{display:none!important}.dietPdfScroll{overflow:visible!important;padding:0!important}.dietPdfSheet{box-shadow:none!important;border:0!important;max-width:none!important;border-radius:0!important}}

/* Fix layout Super Admin - panoramica pazienti */
#superAdmin .superAdminPatientLayout {
  display: grid !important;
  grid-template-columns: 240px minmax(0, 1fr) !important;
  gap: 18px !important;
  align-items: start !important;
  width: 100% !important;
}

#superAdmin .superAdminSideList {
  width: 240px !important;
  min-width: 240px !important;
  max-width: 240px !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
}

#superAdmin .superAdminSideBtn {
  width: 100% !important;
  box-sizing: border-box !important;
  min-width: 0 !important;
  overflow: hidden !important;
}

#superAdmin .superAdminSideBtn > span:first-child {
  min-width: 0 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  line-height: 1.2 !important;
}

#superAdmin .superAdminSideBtn small {
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

#superAdmin .superAdminCount {
  flex: 0 0 auto !important;
}

#superAdmin .superAdminPatientLayout > div:last-child {
  min-width: 0 !important;
  width: 100% !important;
  overflow-x: auto !important;
}

#superAdmin .superAdminPatientLayout .superAdminTable {
  min-width: 760px !important;
}

#superAdmin .superAdminPanel .metricGrid[style*="repeat(5"] {
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
}

@media (max-width: 1100px) {
  #superAdmin .superAdminPatientLayout {
    grid-template-columns: 1fr !important;
  }
  #superAdmin .superAdminSideList {
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
  }
  #superAdmin .superAdminPanel .metricGrid[style*="repeat(5"] {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

@media (max-width: 620px) {
  #superAdmin .superAdminPanel .metricGrid[style*="repeat(5"] {
    grid-template-columns: 1fr !important;
  }
}

/* Supabase food database connection */
.foodSubCatBtn{width:100%;border:0;background:transparent;display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:9px;color:#526963;font-size:13px;font-weight:750;text-align:left;cursor:pointer;}
.foodSubCatBtn:hover,.foodSubCatBtn.active{background:#edf9f3;color:#007a4e;}
.foodResultCard{display:flex;align-items:flex-start;gap:12px;border:1px solid rgba(0,0,0,.08);border-radius:16px;padding:13px;background:#fff;box-shadow:0 8px 18px rgba(0,0,0,.025);}
.foodResultCard.foodDisliked{border-color:#f1c875;background:#fffaf0;}
.foodAddBtn{width:34px;height:34px;border-radius:50%;border:0;background:#e5f7ee;color:#008052;font-size:22px;line-height:1;font-weight:950;cursor:pointer;flex:0 0 auto;}
.foodResultInfo{display:flex;flex-direction:column;gap:5px;min-width:0;}
.foodResultInfo b{color:#2f4740;font-size:15px;}
.foodResultInfo b small{font-size:12px;color:#77908a;font-weight:800;margin-left:6px;}
.foodResultInfo span{color:#627872;font-size:12px;font-weight:750;line-height:1.35;}
.foodResultInfo em{font-style:normal;color:#b26b00;font-size:12px;font-weight:950;}

/* Fix sottocategorie alimenti: visibili e cliccabili */
.foodSubCats{
  margin-left:30px!important;
  padding:4px 0 8px!important;
  display:flex!important;
  flex-direction:column!important;
  gap:4px!important;
}
.foodSubCatBtn{
  width:100%!important;
  border:0!important;
  background:transparent!important;
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  padding:7px 8px!important;
  border-radius:10px!important;
  color:#4c665f!important;
  font-size:13px!important;
  font-weight:750!important;
  text-align:left!important;
  cursor:pointer!important;
}
.foodSubCatBtn:hover,
.foodSubCatBtn.active{
  background:#eaf8f1!important;
  color:#007a4e!important;
}
.foodSubCatAll{
  color:#78908a!important;
  font-size:12px!important;
}
.foodCatName{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}


/* Diet food tree: subcategory foods preview */
.foodCat summary { cursor: pointer; }
.foodCat:not([open]) .chev { transform: rotate(0deg); }
.foodCat[open] .chev { transform: rotate(90deg); }
.dietDislikedFoodResults { margin-top: 12px; border-top: 1px solid rgba(16, 125, 84, .14); padding-top: 12px; }
.dietDislikedFoodHead { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 8px; color: #103b2c; }
.dietDislikedFoodHead span { font-size: 12px; color: #5b756b; font-weight: 700; }
.dietDislikedFoodList { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 8px; max-height: 260px; overflow: auto; padding-right: 4px; }
.foodResultCard.compact { min-height: 54px; padding: 9px 10px; }
.emptyFoodState.small { min-height: 90px; padding: 14px; }
.emptyFoodState.small div { font-size: 24px; }
.emptyFoodState.small h4 { margin: 6px 0 4px; }
.emptyFoodState.small p { margin: 0; }

/* Diet editor foods inserted in meals */
.dietMealFoodList{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.dietMealFoodRow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid rgba(0,128,83,.18);border-radius:14px;background:#f8fffb}
.dietMealFoodMain{display:flex;flex-direction:column;gap:4px;min-width:0}
.dietMealFoodMain b{color:#10382d;font-size:14px}
.dietMealFoodMain span{color:#547166;font-size:12px;font-weight:700}
.dietMealFoodActions{display:flex;align-items:center;gap:8px;flex-shrink:0}
.dietMealFoodActions input{width:72px;border:1px solid rgba(0,128,83,.25);border-radius:10px;padding:8px 8px;font-weight:800;color:#10382d;background:white}
.dietMealFoodActions button{width:34px;height:34px;border:1px solid rgba(220,38,38,.2);border-radius:10px;background:#fff1f2;color:#b91c1c;font-weight:900;cursor:pointer}
.dietPdfMeal ul{margin:8px 0 0;padding-left:18px;color:#29463c;font-weight:700}

/* vNEXT - Diet editor meal chips full-width + polished */
.dietMealCard > .dietMealFoodList{
  display:flex !important;
  flex-direction:column !important;
  align-items:stretch !important;
  justify-content:flex-start !important;
  width:100% !important;
  gap:10px !important;
  margin-top:14px !important;
  padding-top:12px !important;
  border-top:1px solid rgba(0,0,0,.08) !important;
}
.dietMealFoodRow{
  width:100% !important;
  box-sizing:border-box !important;
  display:grid !important;
  grid-template-columns:minmax(0,1fr) auto !important;
  align-items:center !important;
  gap:14px !important;
  padding:12px 14px !important;
  border:1px solid rgba(0,128,83,.18) !important;
  border-radius:16px !important;
  background:linear-gradient(180deg,#ffffff 0%,#f7fffb 100%) !important;
  box-shadow:0 8px 20px rgba(16,38,29,.045) !important;
}
.dietMealFoodMain{
  display:flex !important;
  flex-direction:column !important;
  align-items:flex-start !important;
  min-width:0 !important;
  gap:5px !important;
}
.dietMealFoodMain b{
  display:block !important;
  color:#073b2b !important;
  font-size:15px !important;
  line-height:1.2 !important;
  max-width:100% !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}
.dietMealFoodMain span{
  display:block !important;
  color:#587267 !important;
  font-size:12px !important;
  font-weight:800 !important;
  line-height:1.25 !important;
}
.dietMealFoodActions{
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
  flex-shrink:0 !important;
}
.dietMealFoodActions input{
  width:78px !important;
  height:38px !important;
  border:1px solid rgba(0,128,83,.22) !important;
  border-radius:12px !important;
  padding:7px 10px !important;
  font-weight:900 !important;
  color:#073b2b !important;
  background:#fff !important;
  text-align:center !important;
}
.dietMealFoodActions button{
  width:36px !important;
  height:36px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  border:1px solid rgba(220,38,38,.18) !important;
  border-radius:12px !important;
  background:#fff5f5 !important;
  color:#b91c1c !important;
  font-weight:900 !important;
  cursor:pointer !important;
  padding:0 !important;
}
@media (max-width:700px){
  .dietMealFoodRow{grid-template-columns:1fr !important;}
  .dietMealFoodActions{justify-content:flex-start !important;}
}

.brand-icon{width:52px;height:52px;min-width:52px;border-radius:14px;background:linear-gradient(135deg,#22c55e,#14b8a6);display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0}.brand-icon img{width:38px;height:38px;object-fit:contain;display:block}

/* NutryBuddy v178 - Login split premium senza immagini generate */
.nbLoginShell.lock {
  min-height: 100vh !important;
  padding: 0 !important;
  background:
    radial-gradient(circle at 18% 15%, rgba(35, 197, 123, .22), transparent 34%),
    radial-gradient(circle at 80% 28%, rgba(10, 140, 95, .14), transparent 30%),
    linear-gradient(135deg, #071f18 0%, #0d3325 52%, #09251d 100%) !important;
  align-items: center !important;
  justify-content: center !important;
}

.nbSplitLogin.lockcard {
  width: min(1080px, calc(100vw - 48px)) !important;
  min-height: 620px !important;
  max-height: none !important;
  overflow: hidden !important;
  display: grid !important;
  grid-template-columns: 55% 45% !important;
  padding: 0 !important;
  border-radius: 26px !important;
  background: rgba(4, 19, 17, .88) !important;
  border: 1px solid rgba(148, 235, 197, .20) !important;
  box-shadow: 0 42px 110px rgba(0, 0, 0, .38), inset 0 1px 0 rgba(255,255,255,.07) !important;
  backdrop-filter: blur(18px) !important;
}

.nbLoginBrandPane {
  position: relative !important;
  min-height: 620px !important;
  color: #fff !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 42px 58px !important;
  overflow: hidden !important;
  background:
    radial-gradient(circle at 50% 20%, rgba(31, 207, 128, .30), transparent 35%),
    linear-gradient(135deg, rgba(4, 42, 33, .92), rgba(2, 22, 21, .96)) !important;
}

.nbLoginBrandPane::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.08) 100%);
  pointer-events: none;
}

.nbBrandGlow {
  position: absolute;
  width: 300px;
  height: 300px;
  top: 38px;
  left: 50%;
  transform: translateX(-50%);
  background: radial-gradient(circle, rgba(45, 227, 142, .28), transparent 62%);
  filter: blur(5px);
  opacity: .95;
}

.nbBrandContent {
  position: relative !important;
  z-index: 2 !important;
  width: min(470px, 100%) !important;
  text-align: center !important;
  margin-top: -8px !important;
}

.nbHeroLogoWrap {
  width: 142px !important;
  height: 142px !important;
  margin: 0 auto 20px !important;
  border-radius: 32px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: radial-gradient(circle at 40% 25%, rgba(255,255,255,.18), rgba(255,255,255,.04)) !important;
  box-shadow: 0 28px 70px rgba(14, 226, 137, .24), 0 0 0 1px rgba(155,255,205,.12) inset !important;
}

.nbHeroLogo {
  width: 112px !important;
  height: 112px !important;
  object-fit: contain !important;
  filter: drop-shadow(0 22px 28px rgba(0,0,0,.32)) drop-shadow(0 0 20px rgba(30, 214, 131, .28)) !important;
}

.nbBrandContent h1 {
  color: #fff !important;
  font-size: clamp(42px, 4.4vw, 56px) !important;
  line-height: .95 !important;
  margin: 0 0 10px !important;
  font-weight: 900 !important;
  letter-spacing: -0.06em !important;
  text-shadow: 0 18px 35px rgba(0,0,0,.42) !important;
}

.nbHeroSubtitle {
  color: #24df88 !important;
  font-size: 18px !important;
  font-weight: 750 !important;
  margin: 0 !important;
}

.nbHeroDivider {
  width: 86px;
  height: 2px;
  margin: 18px auto 22px;
  background: linear-gradient(90deg, transparent, #27e489, transparent);
}

.nbFeatureList {
  display: grid !important;
  gap: 14px !important;
  text-align: left !important;
  margin: 0 auto !important;
  width: min(390px, 100%) !important;
}

.nbFeatureItem {
  display: grid !important;
  grid-template-columns: 54px 1fr !important;
  gap: 14px !important;
  align-items: center !important;
}

.nbFeatureIcon {
  width: 50px !important;
  height: 50px !important;
  border-radius: 16px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 24px !important;
  color: #34f39a !important;
  background: linear-gradient(135deg, rgba(29, 211, 128, .26), rgba(8, 85, 62, .42)) !important;
  box-shadow: 0 12px 28px rgba(0,0,0,.20), inset 0 1px 0 rgba(255,255,255,.10) !important;
}

.nbFeatureItem b {
  display: block !important;
  color: #fff !important;
  font-size: 15px !important;
  font-weight: 850 !important;
  margin-bottom: 3px !important;
}

.nbFeatureItem small {
  display: block !important;
  color: rgba(236, 253, 245, .73) !important;
  font-size: 13px !important;
  line-height: 1.3 !important;
  font-weight: 500 !important;
}

.nbWave {
  display: none !important;
  position: absolute;
  left: -10%;
  right: -8%;
  bottom: -60px;
  height: 210px;
  opacity: .72;
  background:
    radial-gradient(circle at 15% 72%, #4aff91 0 2px, transparent 3px),
    radial-gradient(circle at 30% 60%, #38ef83 0 1px, transparent 2px),
    radial-gradient(circle at 55% 68%, #a7ff65 0 2px, transparent 4px),
    radial-gradient(circle at 80% 58%, #2fe984 0 1px, transparent 3px),
    repeating-radial-gradient(ellipse at 50% 100%, rgba(42, 238, 128, .65) 0 1px, transparent 2px 16px);
  clip-path: polygon(0 54%, 8% 48%, 18% 55%, 27% 42%, 38% 55%, 50% 45%, 63% 58%, 77% 39%, 90% 52%, 100% 46%, 100% 100%, 0 100%);
  filter: drop-shadow(0 -8px 18px rgba(25, 222, 117, .35));
}

.nbLoginPane {
  min-height: 620px !important;
  color: #fff !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 44px 58px !important;
  background:
    radial-gradient(circle at 65% 20%, rgba(46, 212, 133, .08), transparent 34%),
    linear-gradient(135deg, rgba(5, 23, 25, .96), rgba(5, 18, 22, .98)) !important;
  border-left: 1px solid rgba(255,255,255,.11) !important;
}

.nbLoginBox {
  width: min(390px, 100%) !important;
}

.nbLoginBox h2 {
  color: #fff !important;
  text-align: center !important;
  font-size: 28px !important;
  line-height: 1.1 !important;
  margin: 0 0 10px !important;
  font-weight: 900 !important;
  letter-spacing: -0.035em !important;
  text-shadow: 0 12px 30px rgba(0,0,0,.35) !important;
}

.nbLoginIntro {
  color: rgba(235, 248, 243, .73) !important;
  text-align: center !important;
  font-size: 15px !important;
  line-height: 1.4 !important;
  margin: 0 0 24px !important;
}

.nbAuthTabs.authTabs {
  display: grid !important;
  grid-template-columns: 1fr 1.22fr !important;
  gap: 14px !important;
  margin: 0 0 22px !important;
}

.nbAuthTabs .authTab {
  min-width: 0 !important;
  height: 46px !important;
  border-radius: 13px !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  font-size: 15px !important;
  font-weight: 900 !important;
  box-shadow: 0 13px 24px rgba(0,0,0,.18) !important;
}

.nbAuthTabs .authTab.active {
  background: linear-gradient(135deg, #20b96d, #55d894) !important;
  color: #fff !important;
  border-color: transparent !important;
}

.nbAuthTabs .authTab:not(.active) {
  background: #fff !important;
  color: #061812 !important;
}

.nbLoginBox .authForm { width: 100% !important; }

.nbField {
  position: relative !important;
  margin-bottom: 13px !important;
}

.nbFieldIcon {
  position: absolute !important;
  left: 21px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  color: #72f0ae !important;
  font-size: 19px !important;
  z-index: 2 !important;
  opacity: .95 !important;
}

.nbField .authInput {
  height: 54px !important;
  width: 100% !important;
  padding: 0 20px 0 64px !important;
  border-radius: 12px !important;
  border: 1px solid rgba(210, 245, 231, .22) !important;
  background: rgba(255,255,255,.055) !important;
  color: #fff !important;
  font-size: 16px !important;
  outline: none !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05), 0 12px 25px rgba(0,0,0,.14) !important;
}

.nbField .authInput::placeholder { color: rgba(239, 248, 244, .62) !important; }
.nbField .authInput:focus {
  border-color: rgba(53, 222, 139, .66) !important;
  box-shadow: 0 0 0 4px rgba(34,197,94,.12), inset 0 1px 0 rgba(255,255,255,.06) !important;
}

.nbRemember {
  display: flex !important;
  align-items: center !important;
  gap: 11px !important;
  color: rgba(241, 253, 247, .78) !important;
  font-weight: 650 !important;
  margin: 2px 0 17px !important;
}
.nbRemember input { width: 22px !important; height: 22px !important; accent-color: #34c985 !important; }

.nbLoginBtn.btn.primary {
  height: 54px !important;
  border-radius: 12px !important;
  font-size: 17px !important;
  font-weight: 900 !important;
  background: linear-gradient(135deg, #20b96d, #55d894) !important;
  box-shadow: 0 18px 36px rgba(20, 185, 111, .23) !important;
}

.nbForgotBtn.btn.ghost {
  height: 52px !important;
  border-radius: 12px !important;
  font-size: 16px !important;
  font-weight: 900 !important;
  background: #fff !important;
  color: #061812 !important;
  border: 0 !important;
}

.nbOr {
  display: grid !important;
  grid-template-columns: 1fr auto 1fr !important;
  align-items: center !important;
  gap: 14px !important;
  color: rgba(234, 248, 242, .65) !important;
  margin: 19px 0 !important;
  font-style: normal !important;
}
.nbOr span { height: 1px; background: rgba(255,255,255,.18); }
.nbOr em { font-style: normal; font-size: 14px; }

.nbSecureHint {
  display: flex !important;
  align-items: flex-start !important;
  gap: 14px !important;
  margin: 42px 0 0 !important;
  color: rgba(237, 252, 246, .70) !important;
  font-size: 14px !important;
  line-height: 1.55 !important;
}

.nbLoginBox .authHint {
  color: rgba(237, 252, 246, .68) !important;
  text-align: left !important;
}

@media (max-width: 980px) {
  .nbSplitLogin.lockcard { grid-template-columns: 1fr !important; width: min(560px, calc(100vw - 28px)) !important; }
  .nbLoginBrandPane { min-height: auto !important; padding: 38px 28px 34px !important; }
  .nbLoginPane { min-height: auto !important; border-left: 0 !important; border-top: 1px solid rgba(255,255,255,.10) !important; padding: 38px 28px 44px !important; }
  .nbFeatureList { display: none !important; }
  .nbWave { display: none !important; }
  .nbHeroLogoWrap { width: 120px !important; height: 120px !important; margin-bottom: 13px !important; }
  .nbHeroLogo { width: 98px !important; height: 98px !important; }
  .nbBrandContent h1 { font-size: 42px !important; }
}

@media (max-width: 560px) {
  .nbLoginShell.lock { padding: 12px !important; }
  .nbSplitLogin.lockcard { width: 100% !important; border-radius: 24px !important; }
  .nbAuthTabs.authTabs { grid-template-columns: 1fr !important; }
  .nbLoginBox h2 { font-size: 26px !important; }
}


/* NutryBuddy v179 - Login opzione 2 più compatta + rimozione anelli verdi */
.nbWave { display: none !important; }
.nbSplitLogin.lockcard { width: min(1080px, calc(100vw - 48px)) !important; min-height: 620px !important; }
.nbLoginBrandPane, .nbLoginPane { min-height: 620px !important; }
.nbLoginBrandPane { padding: 42px 58px !important; }
.nbLoginPane { padding: 44px 58px !important; }
.nbBrandContent { margin-top: -8px !important; }
.nbHeroLogoWrap { width: 142px !important; height: 142px !important; margin-bottom: 20px !important; }
.nbHeroLogo { width: 112px !important; height: 112px !important; }
.nbFeatureList { gap: 14px !important; width: min(360px, 100%) !important; }
.nbFeatureIcon { width: 50px !important; height: 50px !important; }
.nbLoginBox { width: min(390px, 100%) !important; }
.nbField .authInput, .nbLoginBtn.btn.primary { height: 54px !important; }
.nbForgotBtn.btn.ghost { height: 52px !important; }

/* NutryBuddy v180 - Login più compatto senza modificare il logo */
.nbSplitLogin.lockcard {
  width: min(980px, calc(100vw - 48px)) !important;
  min-height: 560px !important;
}

.nbLoginBrandPane,
.nbLoginPane {
  min-height: 560px !important;
}

.nbLoginBrandPane {
  padding: 34px 48px !important;
}

.nbLoginPane {
  padding: 34px 48px !important;
}

.nbBrandContent {
  margin-top: -4px !important;
}

.nbBrandContent h1 {
  font-size: clamp(36px, 3.6vw, 48px) !important;
  margin-bottom: 8px !important;
}

.nbHeroSubtitle {
  font-size: 16px !important;
}

.nbHeroDivider {
  width: 74px !important;
  margin: 14px auto 18px !important;
}

.nbFeatureList {
  gap: 10px !important;
  width: min(350px, 100%) !important;
}

.nbFeatureItem {
  grid-template-columns: 46px 1fr !important;
  gap: 12px !important;
}

.nbFeatureIcon {
  width: 42px !important;
  height: 42px !important;
  border-radius: 13px !important;
  font-size: 19px !important;
}

.nbFeatureItem b {
  font-size: 13.5px !important;
  margin-bottom: 2px !important;
}

.nbFeatureItem small {
  font-size: 12px !important;
  line-height: 1.25 !important;
}

.nbLoginBox {
  width: min(345px, 100%) !important;
}

.nbLoginBox h2 {
  font-size: 24px !important;
  margin-bottom: 7px !important;
}

.nbLoginIntro {
  font-size: 13px !important;
  margin-bottom: 18px !important;
}

.nbAuthTabs.authTabs {
  gap: 12px !important;
  margin-bottom: 16px !important;
}

.nbAuthTabs .authTab {
  height: 40px !important;
  border-radius: 12px !important;
  font-size: 13px !important;
  line-height: 1.05 !important;
  padding: 0 14px !important;
}

.nbField {
  margin-bottom: 10px !important;
}

.nbFieldIcon {
  left: 18px !important;
  font-size: 16px !important;
}

.nbField .authInput {
  height: 46px !important;
  padding-left: 54px !important;
  padding-right: 16px !important;
  border-radius: 11px !important;
  font-size: 14px !important;
}

.nbRemember {
  gap: 9px !important;
  margin: 0 0 13px !important;
  font-size: 12px !important;
}

.nbRemember input {
  width: 18px !important;
  height: 18px !important;
}

.nbLoginBtn.btn.primary {
  height: 46px !important;
  border-radius: 11px !important;
  font-size: 15px !important;
}

.nbOr {
  margin: 14px 0 !important;
  gap: 11px !important;
}

.nbOr em {
  font-size: 12px !important;
}

.nbForgotBtn.btn.ghost {
  height: 44px !important;
  border-radius: 11px !important;
  font-size: 14px !important;
}

.nbSecureHint {
  margin-top: 30px !important;
  gap: 10px !important;
  font-size: 12px !important;
  line-height: 1.4 !important;
}

@media (max-width: 980px) {
  .nbSplitLogin.lockcard { width: min(520px, calc(100vw - 28px)) !important; }
  .nbLoginBrandPane { padding: 30px 24px 26px !important; }
  .nbLoginPane { padding: 30px 24px 34px !important; }
}


/* NutryBuddy v181 - Logo login 3D senza quadrante CSS + sicurezza su una riga */
.nbHeroLogoWrap {
  width: 150px !important;
  height: auto !important;
  margin: 0 auto 18px !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  overflow: visible !important;
}

.nbHeroLogo {
  width: 150px !important;
  height: auto !important;
  max-height: 130px !important;
  object-fit: contain !important;
  filter: drop-shadow(0 18px 28px rgba(0,0,0,.36)) drop-shadow(0 0 18px rgba(31,224,132,.28)) !important;
}

.nbSecureHint {
  align-items: center !important;
  white-space: nowrap !important;
}

.nbSecureHint span {
  display: inline !important;
}

.nbSecureHint strong {
  color: rgba(255,255,255,.86) !important;
  font-weight: 900 !important;
}

@media (max-width: 560px) {
  .nbSecureHint { white-space: normal !important; }
}

html,body{overflow-x:hidden!important;max-width:100%!important;}
.lock,.nbLoginShell,.nbSplitLogin{overflow-x:hidden!important;max-width:100vw!important;}


/* NutryBuddy v182 - Fix definitivo scroll laterale schermata login */
html.login-lock-active,
body.login-lock-active {
  width: 100% !important;
  max-width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
  overflow: hidden !important;
  position: fixed !important;
  inset: 0 !important;
}

body.login-lock-active #lock.nbLoginShell.lock {
  position: fixed !important;
  inset: 0 !important;
  width: 100vw !important;
  max-width: 100vw !important;
  height: 100vh !important;
  max-height: 100vh !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
}

body.login-lock-active .nbSplitLogin.lockcard {
  width: min(980px, calc(100vw - 48px)) !important;
  max-width: calc(100vw - 48px) !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
}

body.login-lock-active .nbLoginBrandPane,
body.login-lock-active .nbLoginPane,
body.login-lock-active .nbLoginBox,
body.login-lock-active .nbBrandContent {
  max-width: 100% !important;
  box-sizing: border-box !important;
  overflow-x: hidden !important;
}

body.login-lock-active .nbSecureHint {
  white-space: normal !important;
}

@media (max-width: 980px) {
  body.login-lock-active #lock.nbLoginShell.lock {
    overflow-y: auto !important;
    overflow-x: hidden !important;
  }
  body.login-lock-active .nbSplitLogin.lockcard {
    width: min(520px, calc(100vw - 28px)) !important;
    max-width: calc(100vw - 28px) !important;
  }
}

@media (max-width: 560px) {
  body.login-lock-active #lock.nbLoginShell.lock {
    padding: 12px !important;
  }
  body.login-lock-active .nbSplitLogin.lockcard {
    width: 100% !important;
    max-width: 100% !important;
  }
}

/* =========================================================
   NutryBuddy v183 - Fix vista telefono reale login
   Obiettivo: eliminare larghezze desktop, scroll orizzontale e tagli laterali nella preview mobile.
========================================================= */
@media (max-width: 430px) {
  html,
  body {
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
  }

  body.login-lock-active #lock.nbLoginShell.lock,
  #lock.nbLoginShell.lock {
    width: 100vw !important;
    max-width: 100vw !important;
    min-height: 100dvh !important;
    height: auto !important;
    padding: 0 !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
  }

  body.login-lock-active .nbSplitLogin.lockcard,
  .nbSplitLogin.lockcard {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    min-height: 100dvh !important;
    max-height: none !important;
    margin: 0 !important;
    display: grid !important;
    grid-template-columns: 1fr !important;
    border-radius: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
    box-shadow: none !important;
    overflow-x: hidden !important;
  }

  .nbLoginBrandPane,
  body.login-lock-active .nbLoginBrandPane {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    min-height: auto !important;
    padding: 20px 16px 16px !important;
    overflow: hidden !important;
  }

  .nbLoginPane,
  body.login-lock-active .nbLoginPane {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    min-height: auto !important;
    padding: 22px 18px 26px !important;
    border-left: 0 !important;
    border-top: 1px solid rgba(255,255,255,.10) !important;
    overflow-x: hidden !important;
  }

  .nbBrandContent,
  .nbLoginBox {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-left: auto !important;
    margin-right: auto !important;
    overflow-x: hidden !important;
  }

  .nbHeroLogoWrap {
    width: 112px !important;
    height: auto !important;
    margin-bottom: 10px !important;
  }

  .nbHeroLogo {
    width: 112px !important;
    max-height: 94px !important;
  }

  .nbBrandContent h1 {
    font-size: 32px !important;
    line-height: 1 !important;
    margin: 0 0 6px !important;
  }

  .nbHeroSubtitle {
    font-size: 12px !important;
    line-height: 1.2 !important;
  }

  .nbHeroDivider {
    width: 54px !important;
    height: 2px !important;
    margin: 10px auto 0 !important;
  }

  .nbFeatureList,
  .nbWave {
    display: none !important;
  }

  .nbLoginBox h2 {
    font-size: 20px !important;
    line-height: 1.1 !important;
    margin-bottom: 6px !important;
  }

  .nbLoginIntro {
    font-size: 11px !important;
    line-height: 1.35 !important;
    margin-bottom: 14px !important;
  }

  .nbAuthTabs.authTabs {
    width: 100% !important;
    max-width: 100% !important;
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 9px !important;
    margin-bottom: 13px !important;
  }

  .nbAuthTabs .authTab {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: 39px !important;
    padding: 0 10px !important;
    font-size: 12px !important;
    border-radius: 10px !important;
  }

  .nbField {
    width: 100% !important;
    max-width: 100% !important;
    margin-bottom: 9px !important;
  }

  .nbFieldIcon {
    left: 14px !important;
    font-size: 14px !important;
  }

  .nbField .authInput {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: 42px !important;
    padding-left: 44px !important;
    padding-right: 12px !important;
    font-size: 13px !important;
    border-radius: 10px !important;
  }

  .nbRemember {
    margin: 0 0 11px !important;
    font-size: 11px !important;
    gap: 8px !important;
  }

  .nbRemember input {
    width: 16px !important;
    height: 16px !important;
  }

  .nbLoginBtn.btn.primary,
  .nbForgotBtn.btn.ghost {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: 42px !important;
    font-size: 13px !important;
    border-radius: 10px !important;
  }

  .nbOr {
    margin: 11px 0 !important;
    gap: 9px !important;
  }

  .nbOr em {
    font-size: 11px !important;
  }

  .nbSecureHint {
    width: 100% !important;
    max-width: 100% !important;
    margin-top: 18px !important;
    font-size: 11px !important;
    line-height: 1.35 !important;
    white-space: normal !important;
    gap: 8px !important;
  }
}

@media (max-width: 370px) {
  .nbLoginBrandPane,
  body.login-lock-active .nbLoginBrandPane {
    padding-top: 16px !important;
    padding-bottom: 12px !important;
  }

  .nbLoginPane,
  body.login-lock-active .nbLoginPane {
    padding: 18px 14px 22px !important;
  }

  .nbHeroLogoWrap,
  .nbHeroLogo {
    width: 96px !important;
  }

  .nbBrandContent h1 {
    font-size: 28px !important;
  }
}

/* =========================================================
   NutryBuddy v108 - Super Admin mobile full responsive fix
   ---------------------------------------------------------
   Sul desktop la tabella resta invariata.
   Su telefono la tabella Super Admin diventa una lista di card,
   evitando scroll orizzontale e colonne tagliate.
========================================================= */

@media (max-width: 768px) {
  html,
  body,
  #app,
  .appShell,
  main,
  section,
  #superAdmin,
  #superAdminContent {
    max-width: 100% !important;
    overflow-x: hidden !important;
    box-sizing: border-box !important;
  }

  #superAdmin {
    padding-left: 10px !important;
    padding-right: 10px !important;
  }

  #superAdmin .superAdminHeroStats,
  #superAdmin .metricGrid,
  #superAdmin .superAdminPanel .metricGrid,
  #superAdmin .superAdminPanel .metricGrid[style],
  #superAdmin .superAdminPanel .metricGrid[style*="repeat(3"],
  #superAdmin .superAdminPanel .metricGrid[style*="repeat(5"] {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
    width: 100% !important;
    max-width: 100% !important;
  }

  #superAdmin .superAdminHeroStat,
  #superAdmin .metricBox {
    min-width: 0 !important;
    width: 100% !important;
    padding: 13px 12px !important;
    border-radius: 14px !important;
  }

  #superAdmin .superAdminPanel {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    padding: 16px !important;
    border-radius: 18px !important;
    overflow: hidden !important;
    box-sizing: border-box !important;
  }

  #superAdmin .superAdminPanel h3 {
    font-size: 18px !important;
    line-height: 1.2 !important;
  }

  #superAdmin .superAdminPanel p,
  #superAdmin .adminNotice,
  #superAdmin .miniMuted {
    font-size: 12px !important;
    line-height: 1.35 !important;
  }

  #superAdmin .adminNotice {
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    padding: 11px 12px !important;
    border-radius: 12px !important;
  }

  #superAdmin .field,
  #superAdmin .field[style] {
    width: 100% !important;
    max-width: 100% !important;
  }

  #superAdmin .input,
  #superAdmin input,
  #superAdmin select,
  #superAdmin .select {
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  #superAdmin .nb-admin-tabs {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
    width: 100% !important;
  }

  #superAdmin .nb-admin-tab {
    width: 100% !important;
    justify-content: center !important;
    padding: 10px 8px !important;
    font-size: 12px !important;
  }

  #superAdmin .superAdminTable {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    overflow: visible !important;
  }

  #superAdmin .superAdminTable thead {
    display: none !important;
  }

  #superAdmin .superAdminTable tbody {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 12px !important;
    width: 100% !important;
    max-width: 100% !important;
  }

  #superAdmin .superAdminTable tr {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    padding: 14px !important;
    border: 1px solid rgba(26, 83, 63, 0.13) !important;
    border-radius: 16px !important;
    background: #ffffff !important;
    box-shadow: 0 10px 24px rgba(20, 80, 58, 0.06) !important;
    box-sizing: border-box !important;
  }

  #superAdmin .superAdminTable td {
    display: grid !important;
    grid-template-columns: minmax(88px, 38%) minmax(0, 1fr) !important;
    align-items: start !important;
    gap: 8px !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    padding: 7px 0 !important;
    border: 0 !important;
    font-size: 12px !important;
    line-height: 1.3 !important;
    overflow-wrap: anywhere !important;
    box-sizing: border-box !important;
  }

  #superAdmin .superAdminTable td::before {
    content: "";
    color: #6c8178;
    font-size: 11px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .02em;
  }

  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable td:nth-child(1)::before { content: "Nutrizionista"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable td:nth-child(2)::before { content: "Piano"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable td:nth-child(3)::before { content: "Stato"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable td:nth-child(4)::before { content: "Privacy"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable td:nth-child(5)::before { content: "Pazienti"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable td:nth-child(6)::before { content: "Ultimo accesso"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable td:nth-child(7)::before { content: "Creato il"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable td:nth-child(8)::before { content: "Gestione piano"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminTable td:nth-child(9)::before { content: "Azioni"; }

  #superAdmin .nb-admin-section[data-nb-admin-section="admins"] .superAdminTable td:nth-child(1)::before { content: "Admin"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="admins"] .superAdminTable td:nth-child(2)::before { content: "Ruolo"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="admins"] .superAdminTable td:nth-child(3)::before { content: "Ultimo accesso"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="admins"] .superAdminTable td:nth-child(4)::before { content: "Creato il"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="admins"] .superAdminTable td:nth-child(5)::before { content: "Nuovo ruolo"; }
  #superAdmin .nb-admin-section[data-nb-admin-section="admins"] .superAdminTable td:nth-child(6)::before { content: "Azioni"; }

  #superAdmin .superAdminTable td:first-child {
    grid-template-columns: 1fr !important;
    gap: 3px !important;
    padding-top: 2px !important;
    padding-bottom: 10px !important;
    border-bottom: 1px solid rgba(26, 83, 63, 0.08) !important;
  }

  #superAdmin .superAdminTable td:first-child::before {
    display: none !important;
  }

  #superAdmin .superAdminTable td:first-child b {
    font-size: 14px !important;
    line-height: 1.2 !important;
  }

  #superAdmin .nb-simple-info,
  #superAdmin .nb-simple-title,
  #superAdmin .linkMetric {
    min-width: 0 !important;
    max-width: 100% !important;
    overflow-wrap: anywhere !important;
  }

  #superAdmin .nb-account-status,
  #superAdmin .roleBadge {
    width: fit-content !important;
    max-width: 100% !important;
    padding: 4px 8px !important;
    font-size: 11px !important;
  }

  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls,
  #superAdmin .superAdminCommercialControls,
  #superAdmin .superAdminActions {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 8px !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }

  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls .select,
  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls .nb-plan-select,
  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls .nb-status-select,
  #superAdmin .nb-admin-section[data-nb-admin-section="nutritionists"] .superAdminCommercialControls .btn,
  #superAdmin .superAdminActions .btn,
  #superAdmin .superAdminCommercialControls .btn,
  #superAdmin .superAdminCommercialControls select,
  #superAdmin .superAdminCommercialControls .select {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: 38px !important;
    min-height: 38px !important;
    padding: 7px 10px !important;
    border-radius: 11px !important;
    font-size: 12px !important;
    box-sizing: border-box !important;
  }
}

@media (max-width: 430px) {
  #superAdmin {
    padding-left: 6px !important;
    padding-right: 6px !important;
  }

  #superAdmin .superAdminHeroStats,
  #superAdmin .metricGrid,
  #superAdmin .superAdminPanel .metricGrid,
  #superAdmin .superAdminPanel .metricGrid[style] {
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
  }

  #superAdmin .superAdminPanel {
    padding: 14px !important;
  }

  #superAdmin .superAdminTable tr {
    padding: 12px !important;
  }

  #superAdmin .superAdminTable td {
    grid-template-columns: 92px minmax(0, 1fr) !important;
    gap: 7px !important;
    font-size: 11px !important;
  }
}

/* =========================================================
   SUPER ADMIN MOBILE DRAWER - solo telefono
   Desktop invariato: la topbar originale resta com'è.
========================================================= */
.nbMobileDrawerToggle,
.nbMobileDrawer,
.nbMobileDrawerOverlay {
  display: none;
}

@media (max-width: 768px) {
  body.nb-role-super-admin .module {
    width: 100vw;
    border-radius: 0;
    border-left: 0;
    border-right: 0;
  }

  body.nb-role-super-admin .topbar {
    position: sticky;
    top: 0;
    z-index: 9000;
    display: grid;
    grid-template-columns: 44px 1fr;
    gap: 10px;
    align-items: center;
    padding: 12px 14px;
    border-radius: 0;
    background: rgba(255, 255, 255, 0.96);
    backdrop-filter: blur(14px);
  }

  body.nb-role-super-admin .nbMobileDrawerToggle {
    display: inline-flex;
    width: 42px;
    height: 42px;
    border: 1px solid rgba(16, 185, 129, 0.28);
    border-radius: 14px;
    align-items: center;
    justify-content: center;
    background: #ffffff;
    color: #067a4d;
    font-size: 24px;
    font-weight: 900;
    box-shadow: 0 8px 18px rgba(6, 78, 59, 0.08);
  }

  body.nb-role-super-admin .topbar .brand {
    justify-content: center;
    min-width: 0;
    padding-right: 44px;
  }

  body.nb-role-super-admin .topbar .brand .logo {
    width: 38px;
    height: 38px;
    min-width: 38px;
    border-radius: 13px;
  }

  body.nb-role-super-admin .topbar .brand .logo img {
    width: 31px;
    height: 31px;
  }

  body.nb-role-super-admin .topbar .brand small {
    font-size: 11px;
  }

  body.nb-role-super-admin .topbar > .actions {
    display: none !important;
  }

  body.nb-role-super-admin.nb-mobile-drawer-open {
    overflow: hidden;
  }

  body.nb-role-super-admin .nbMobileDrawerOverlay {
    position: fixed;
    inset: 0;
    z-index: 99980;
    background: rgba(3, 18, 13, 0.48);
    backdrop-filter: blur(3px);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.22s ease;
  }

  body.nb-role-super-admin .nbMobileDrawer {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 99990;
    display: flex;
    flex-direction: column;
    width: min(82vw, 310px);
    max-width: 310px;
    background: #ffffff;
    border-right: 1px solid rgba(16, 185, 129, 0.18);
    box-shadow: 28px 0 70px rgba(2, 44, 34, 0.24);
    transform: translateX(-106%);
    transition: transform 0.24s ease;
  }

  body.nb-role-super-admin.nb-mobile-drawer-open .nbMobileDrawer {
    transform: translateX(0);
  }

  body.nb-role-super-admin.nb-mobile-drawer-open .nbMobileDrawerOverlay {
    display: block;
    opacity: 1;
    pointer-events: auto;
  }

  .nbMobileDrawerHead {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 116px;
    padding: 22px 18px;
    color: #ffffff;
    background: linear-gradient(135deg, #05834f, #35c77b);
    overflow: hidden;
  }

  .nbMobileDrawerHead::after {
    content: "";
    position: absolute;
    left: -20%;
    right: -20%;
    bottom: -42px;
    height: 72px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.22);
  }

  .nbMobileDrawerShield {
    position: relative;
    z-index: 1;
    width: 52px;
    height: 52px;
    border-radius: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.18);
    border: 1px solid rgba(255, 255, 255, 0.34);
    font-size: 26px;
  }

  .nbMobileDrawerHead strong,
  .nbMobileDrawerHead span {
    position: relative;
    z-index: 1;
    display: block;
  }

  .nbMobileDrawerHead strong {
    font-size: 20px;
    line-height: 1.1;
  }

  .nbMobileDrawerHead span {
    margin-top: 4px;
    font-size: 13px;
    font-weight: 700;
    opacity: 0.9;
  }

  .nbMobileDrawerClose {
    position: absolute;
    z-index: 2;
    right: 12px;
    top: 12px;
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.16);
    color: #fff;
    font-size: 28px;
    line-height: 1;
  }

  .nbMobileDrawerNav {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 18px 14px;
  }

  .nbMobileDrawerNav button,
  .nbMobileDrawerLogout {
    width: 100%;
    min-height: 48px;
    border: 0;
    border-radius: 16px;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    background: transparent;
    color: #17352a;
    font-weight: 850;
    text-align: left;
    font-size: 14px;
  }

  .nbMobileDrawerNav button:first-child,
  .nbMobileDrawerNav button:hover,
  .nbMobileDrawerLogout:hover {
    background: #eefaf4;
    color: #05834f;
  }

  .nbMobileDrawerFoot {
    margin-top: auto;
    padding: 14px;
    border-top: 1px solid rgba(16, 185, 129, 0.14);
  }

  .nbMobileDrawerUser {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px;
    border-radius: 18px;
    background: #f7fffb;
    border: 1px solid #d8efe4;
    margin-bottom: 10px;
  }

  .nbMobileDrawerAvatar {
    width: 42px;
    height: 42px;
    border-radius: 14px;
    background: #ecfdf5;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
  }

  .nbMobileDrawerUser strong,
  .nbMobileDrawerUser span {
    display: block;
  }

  .nbMobileDrawerUser strong {
    font-size: 14px;
    color: #17352a;
  }

  .nbMobileDrawerUser span {
    margin-top: 2px;
    color: #6f8178;
    font-size: 12px;
    font-weight: 700;
  }

  .nbMobileDrawerLogout {
    color: #b42318;
    background: #fff7f7;
    justify-content: center;
  }
}


/* Patient activation success popup */
.patientActivationSuccessModal{
  position:fixed;
  inset:0;
  z-index:1000000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:22px;
  background:rgba(5,35,24,.62);
  backdrop-filter:blur(12px);
}
.patientActivationSuccessModal.hidden{display:none!important;}
.patientActivationSuccessCard{
  width:min(440px,calc(100vw - 32px));
  background:#fff;
  border:1px solid rgba(16,185,129,.24);
  border-radius:28px;
  box-shadow:0 34px 95px rgba(6,78,59,.35);
  padding:28px;
  text-align:center;
  color:#0b2f24;
}
.patientActivationSuccessIcon{
  width:58px;
  height:58px;
  margin:0 auto 14px;
  border-radius:20px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:#ecfdf5;
  border:1px solid #bbf7d0;
  font-size:30px;
}
.patientActivationSuccessCard h3{
  margin:0 0 10px;
  font-size:28px;
  line-height:1.1;
  letter-spacing:-.03em;
  color:#063d2b;
}
.patientActivationSuccessCard p{
  margin:0 0 14px;
  color:#49675d;
  line-height:1.55;
  font-weight:650;
}
.patientActivationSuccessNote{
  background:#f0fdf4;
  border:1px solid #bbf7d0;
  border-radius:18px;
  padding:13px 14px;
  color:#164e35!important;
}
.patientActivationSuccessCard .btn{
  width:100%;
  margin-top:6px;
}
@media(max-width:520px){
  .patientActivationSuccessCard{padding:24px 20px;border-radius:24px;}
  .patientActivationSuccessCard h3{font-size:24px;}
  .patientActivationSuccessCard p{font-size:14px;}
}


/* =========================================================
   SUPER ADMIN MOBILE FINAL - Drawer + card responsive
   Attivo solo su telefono e solo per profilo Super Admin
========================================================= */
.nbSuperAdminMobileToggle,
.nbMobileDrawer,
.nbMobileDrawerOverlay{display:none;}

@media (max-width: 768px){
  body.super-admin-role .topbar{position:sticky;top:0;z-index:900;display:flex;align-items:center;gap:10px;padding:10px 12px;background:rgba(255,255,255,.96);backdrop-filter:blur(14px);border-bottom:1px solid rgba(16,185,129,.16);}
  body.super-admin-role .topbar .brand{flex:1;min-width:0;font-size:15px;}
  body.super-admin-role .topbar .brand small{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:170px;}
  body.super-admin-role .topbar .actions{display:none!important;}
  body.super-admin-role .nbSuperAdminMobileToggle{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border:1px solid rgba(16,185,129,.22);border-radius:15px;background:#ecfdf5;color:#075c3f;font-size:21px;font-weight:900;box-shadow:0 10px 24px rgba(6,78,59,.08);}

  body.super-admin-role .nbMobileDrawerOverlay{position:fixed;inset:0;background:rgba(5,35,24,.44);backdrop-filter:blur(4px);z-index:1900;opacity:0;pointer-events:none;transition:.22s ease;display:block;}
  body.super-admin-role .nbMobileDrawer{position:fixed;top:0;left:0;bottom:0;width:min(82vw,300px);background:#f8fffb;border-right:1px solid rgba(16,185,129,.2);box-shadow:24px 0 80px rgba(6,78,59,.25);z-index:1901;transform:translateX(-105%);transition:.25s ease;display:flex;flex-direction:column;padding:16px;}
  body.super-admin-role.nb-drawer-open .nbMobileDrawerOverlay{opacity:1;pointer-events:auto;}
  body.super-admin-role.nb-drawer-open .nbMobileDrawer{transform:translateX(0);}
  .nbMobileDrawerHead{display:flex;gap:12px;align-items:center;padding:8px 4px 16px;border-bottom:1px solid rgba(16,185,129,.16);}
  .nbMobileDrawerIcon{width:46px;height:46px;border-radius:17px;background:linear-gradient(135deg,#10b981,#35c77b);display:flex;align-items:center;justify-content:center;color:white;font-size:22px;box-shadow:0 14px 35px rgba(16,185,129,.25);}
  .nbMobileDrawerHead strong{display:block;color:#073f2c;font-size:18px;line-height:1.1;}
  .nbMobileDrawerHead span{display:block;color:#5f7a68;font-size:12px;margin-top:3px;font-weight:700;}
  .nbMobileDrawerNav{display:flex;flex-direction:column;gap:8px;padding:16px 0;}
  .nbMobileDrawerNav button{border:1px solid rgba(16,185,129,.12);background:#fff;border-radius:16px;padding:13px 14px;text-align:left;font-weight:850;color:#133f30;box-shadow:0 8px 20px rgba(6,78,59,.06);}
  .nbMobileDrawerFoot{margin-top:auto;border-top:1px solid rgba(16,185,129,.16);padding-top:14px;display:flex;flex-direction:column;gap:12px;}
  .nbMobileDrawerUser{background:#ecfdf5;border:1px solid rgba(16,185,129,.18);border-radius:18px;padding:12px;}
  .nbMobileDrawerUser strong{display:block;color:#073f2c;font-size:14px;}
  .nbMobileDrawerUser span{display:block;color:#5f7a68;font-size:12px;margin-top:3px;font-weight:750;}
  .nbMobileDrawerLogout{border:0;border-radius:16px;padding:13px 14px;background:#fff1f2;color:#9f1239;font-weight:900;text-align:left;}

  body.super-admin-role #superAdmin .adminTopRow{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding:14px!important;}
  body.super-admin-role #superAdmin .adminTopRow h2{font-size:24px;margin-bottom:4px;}
  body.super-admin-role #superAdmin .adminTopRow p{font-size:13px;line-height:1.35;margin:0;color:#5f7a68;}
  body.super-admin-role #superAdmin .adminQuickActions{display:grid!important;grid-template-columns:1fr;gap:8px;width:100%;}
  body.super-admin-role #superAdmin .adminQuickActions .btn{width:100%;justify-content:center;min-height:44px;}
  body.super-admin-role #superAdmin .adminQuickActions .btn.soft{order:-1;background:#10b981;color:#fff;border-color:#10b981;font-weight:900;}

  body.super-admin-role #superAdminContent{overflow:hidden;}
  body.super-admin-role #superAdmin .superAdminHeroStats{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;margin:12px 0!important;}
  body.super-admin-role #superAdmin .superAdminHeroStat{padding:12px!important;border-radius:18px!important;min-height:auto!important;}
  body.super-admin-role #superAdmin .superAdminHeroStat b{font-size:24px!important;}
  body.super-admin-role #superAdmin .superAdminHeroStat span{font-size:12px!important;}
  body.super-admin-role #superAdmin .superAdminHeroStat small{font-size:10px!important;line-height:1.2;}
  body.super-admin-role #superAdmin .superAdminPanel{border-radius:22px!important;padding:14px!important;overflow:hidden;}
  body.super-admin-role #superAdmin .superAdminPanel h3{font-size:18px!important;}
  body.super-admin-role #superAdmin .superAdminPanel p{font-size:13px!important;line-height:1.4;}
  body.super-admin-role #superAdmin .metricGrid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;}
  body.super-admin-role #superAdmin .metricBox{padding:12px!important;border-radius:16px!important;}

  body.super-admin-role #superAdmin .nb-admin-tabs{display:grid!important;grid-template-columns:1fr 1fr;gap:8px;background:#ecfdf5;border-radius:16px;padding:6px;}
  body.super-admin-role #superAdmin .nb-admin-tab{width:100%;border-radius:12px!important;min-height:42px;}
  body.super-admin-role #superAdmin .field{max-width:none!important;}

  body.super-admin-role #superAdmin .superAdminTable{display:block;width:100%;border-collapse:separate;border-spacing:0;background:transparent!important;box-shadow:none!important;}
  body.super-admin-role #superAdmin .superAdminTable thead{display:none!important;}
  body.super-admin-role #superAdmin .superAdminTable tbody{display:block;width:100%;}
  body.super-admin-role #superAdmin .superAdminTable tr{display:block;background:#fff;border:1px solid rgba(16,185,129,.14);border-radius:20px;margin:0 0 12px;padding:12px;box-shadow:0 12px 28px rgba(6,78,59,.07);}
  body.super-admin-role #superAdmin .superAdminTable td{display:flex!important;justify-content:space-between;gap:12px;align-items:flex-start;width:100%;border:0!important;padding:8px 0!important;text-align:right;font-size:13px;word-break:break-word;}
  body.super-admin-role #superAdmin .superAdminTable td::before{content:attr(data-label);flex:0 0 42%;text-align:left;color:#5f7a68;font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:900;}
  body.super-admin-role #superAdmin .superAdminTable td:first-child{display:block!important;text-align:left;border-bottom:1px solid rgba(16,185,129,.12)!important;margin-bottom:4px;padding-bottom:10px!important;}
  body.super-admin-role #superAdmin .superAdminTable td:first-child::before{display:none;}
  body.super-admin-role #superAdmin .superAdminActions,
  body.super-admin-role #superAdmin .superAdminCommercialControls,
  body.super-admin-role #superAdmin .deleteRequestActionRow,
  body.super-admin-role #superAdmin .superAdminErrorActions{width:100%;display:grid!important;grid-template-columns:1fr;gap:8px;}
  body.super-admin-role #superAdmin .superAdminActions .btn,
  body.super-admin-role #superAdmin .superAdminCommercialControls .btn,
  body.super-admin-role #superAdmin .deleteRequestActionRow .btn,
  body.super-admin-role #superAdmin .superAdminErrorActions .btn{width:100%;justify-content:center;min-height:40px;padding:9px 10px;}
  body.super-admin-role #superAdmin .superAdminCommercialControls .select,
  body.super-admin-role #superAdmin .select,
  body.super-admin-role #superAdmin input.input{width:100%!important;min-width:0!important;}
  body.super-admin-role #superAdmin .superAdminPatientLayout{display:block!important;}
  body.super-admin-role #superAdmin .superAdminSideList{display:flex!important;overflow-x:auto;gap:8px;padding:4px 0 12px;margin-bottom:10px;}
  body.super-admin-role #superAdmin .superAdminSideTitle{display:none!important;}
  body.super-admin-role #superAdmin .superAdminSideBtn{min-width:210px;flex:0 0 auto;border-radius:16px!important;}
  body.super-admin-role #superAdmin .superAdminPatientLayout > div[style*="overflow:auto"]{overflow:visible!important;}
  body.super-admin-role #superAdmin .superAdminErrorToolbar{display:block!important;}
}

/* =========================================================
   NutryBuddy vNEXT - Mobile reale + preview responsive
   ---------------------------------------------------------
   1) Header app bloccato su mobile durante lo scroll.
   2) Tabelle Super Admin in card leggibili su telefono.
   3) Fix specifico panoramica pazienti: valori visibili.
========================================================= */
@media (max-width: 768px){
  .topbar{
    position: sticky !important;
    top: 0 !important;
    z-index: 1200 !important;
    background: rgba(255,255,255,.96) !important;
    backdrop-filter: blur(16px) !important;
    -webkit-backdrop-filter: blur(16px) !important;
    border-bottom: 1px solid rgba(16,185,129,.14) !important;
    box-shadow: 0 10px 26px rgba(6,78,59,.06) !important;
  }

  .topbar .brand{
    min-width: 0 !important;
    flex: 1 1 auto !important;
  }

  .topbar .brand small{
    display: block !important;
    max-width: 190px !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }

  #superAdmin,
  #superAdminContent{
    width: 100% !important;
    max-width: 100% !important;
    overflow-x: hidden !important;
  }

  body.super-admin-role #superAdmin .superAdminPatientLayout > div[style*="overflow:auto"],
  #superAdmin .superAdminPatientLayout > div[style*="overflow:auto"]{
    overflow: visible !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }

  body.super-admin-role #superAdmin .superAdminTable,
  #superAdmin .superAdminTable{
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    table-layout: fixed !important;
    background: transparent !important;
    box-shadow: none !important;
    overflow: visible !important;
  }

  body.super-admin-role #superAdmin .superAdminTable thead,
  #superAdmin .superAdminTable thead{
    display: none !important;
  }

  body.super-admin-role #superAdmin .superAdminTable tbody,
  #superAdmin .superAdminTable tbody{
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 12px !important;
    width: 100% !important;
    max-width: 100% !important;
  }

  body.super-admin-role #superAdmin .superAdminTable tr,
  #superAdmin .superAdminTable tr{
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 13px 12px !important;
    border: 1px solid rgba(16,185,129,.15) !important;
    border-radius: 20px !important;
    background: #fff !important;
    box-shadow: 0 12px 28px rgba(6,78,59,.07) !important;
    box-sizing: border-box !important;
  }

  body.super-admin-role #superAdmin .superAdminTable td,
  #superAdmin .superAdminTable td{
    display: grid !important;
    grid-template-columns: minmax(92px, 38%) minmax(0, 1fr) !important;
    align-items: start !important;
    gap: 9px !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    padding: 8px 0 !important;
    border: 0 !important;
    text-align: left !important;
    color: #143b2d !important;
    font-size: 12px !important;
    line-height: 1.35 !important;
    white-space: normal !important;
    overflow: visible !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
    box-sizing: border-box !important;
  }

  body.super-admin-role #superAdmin .superAdminTable td::before,
  #superAdmin .superAdminTable td::before{
    content: attr(data-label) !important;
    display: block !important;
    color: #607b6c !important;
    font-size: 10px !important;
    line-height: 1.25 !important;
    font-weight: 900 !important;
    text-transform: uppercase !important;
    letter-spacing: .035em !important;
    text-align: left !important;
  }

  body.super-admin-role #superAdmin .superAdminTable td:first-child,
  #superAdmin .superAdminTable td:first-child{
    display: block !important;
    grid-template-columns: 1fr !important;
    border-bottom: 1px solid rgba(16,185,129,.12) !important;
    margin-bottom: 4px !important;
    padding-bottom: 11px !important;
  }

  body.super-admin-role #superAdmin .superAdminTable td:first-child::before,
  #superAdmin .superAdminTable td:first-child::before{
    display: none !important;
  }

  body.super-admin-role #superAdmin .superAdminTable td b,
  #superAdmin .superAdminTable td b{
    display: inline !important;
    color: #082f23 !important;
    font-size: 13px !important;
    line-height: 1.25 !important;
  }

  body.super-admin-role #superAdmin .superAdminTable .miniMuted,
  #superAdmin .superAdminTable .miniMuted{
    display: inline !important;
    color: #667b72 !important;
    font-size: 11px !important;
    line-height: 1.35 !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }

  body.super-admin-role #superAdmin .plainAccountStatus,
  #superAdmin .plainAccountStatus,
  body.super-admin-role #superAdmin .roleBadge,
  #superAdmin .roleBadge{
    display: inline-flex !important;
    width: fit-content !important;
    max-width: 100% !important;
    white-space: normal !important;
  }
}

@media (max-width: 430px){
  #superAdmin .superAdminPanel{
    padding: 14px 12px !important;
  }

  #superAdmin .superAdminTable td{
    grid-template-columns: 88px minmax(0, 1fr) !important;
    gap: 8px !important;
    font-size: 11.5px !important;
  }

  .topbar{
    padding-left: 10px !important;
    padding-right: 10px !important;
  }
}


/* =========================================================
   NutryBuddy vNEXT fix 2 - Header mobile reale + preview
   ---------------------------------------------------------
   Correzione richiesta:
   - Header mobile sempre bloccato in alto anche nello scroll reale.
   - Il contenuto parte sotto l'header e non viene coperto.
   - Compatibilità Super Admin drawer e preview telefono.
========================================================= */
@media (max-width: 768px){
  html, body{
    width:100% !important;
    max-width:100% !important;
    overflow-x:hidden !important;
  }

  .wrap{
    width:100% !important;
    min-height:100vh !important;
    padding:0 !important;
    padding-top:76px !important;
  }

  .module{
    width:100% !important;
    max-width:100% !important;
    min-height:100vh !important;
    margin:0 !important;
    border-radius:0 !important;
    border-left:0 !important;
    border-right:0 !important;
    overflow:visible !important;
    box-shadow:none !important;
  }

  .topbar,
  body.super-admin-role .topbar,
  body.nb-role-super-admin .topbar{
    position:fixed !important;
    top:0 !important;
    left:0 !important;
    right:0 !important;
    width:100% !important;
    height:76px !important;
    z-index:99970 !important;
    display:flex !important;
    align-items:center !important;
    gap:10px !important;
    padding:10px 12px !important;
    border-radius:0 !important;
    background:rgba(255,255,255,.97) !important;
    backdrop-filter:blur(16px) !important;
    -webkit-backdrop-filter:blur(16px) !important;
    border-bottom:1px solid rgba(16,185,129,.16) !important;
    box-shadow:0 10px 28px rgba(6,78,59,.08) !important;
  }

  .topbar .brand,
  body.super-admin-role .topbar .brand,
  body.nb-role-super-admin .topbar .brand{
    flex:1 1 auto !important;
    min-width:0 !important;
    justify-content:flex-start !important;
    padding-right:0 !important;
    gap:9px !important;
    font-size:14px !important;
  }

  .topbar .brand .logo,
  body.super-admin-role .topbar .brand .logo,
  body.nb-role-super-admin .topbar .brand .logo{
    width:42px !important;
    height:42px !important;
    min-width:42px !important;
    border-radius:14px !important;
  }

  .topbar .brand .logo img,
  body.super-admin-role .topbar .brand .logo img,
  body.nb-role-super-admin .topbar .brand .logo img{
    width:33px !important;
    height:33px !important;
  }

  .topbar .brand small,
  body.super-admin-role .topbar .brand small,
  body.nb-role-super-admin .topbar .brand small{
    display:block !important;
    max-width:210px !important;
    white-space:nowrap !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    font-size:10px !important;
    line-height:1.15 !important;
  }

  .topbar > .actions,
  body.super-admin-role .topbar > .actions,
  body.nb-role-super-admin .topbar > .actions{
    display:none !important;
  }

  .nbMobileDrawerToggle,
  body.super-admin-role .nbMobileDrawerToggle,
  body.nb-role-super-admin .nbMobileDrawerToggle,
  .nbSuperAdminMobileToggle,
  body.super-admin-role .nbSuperAdminMobileToggle{
    display:inline-flex !important;
    flex:0 0 42px !important;
    width:42px !important;
    height:42px !important;
    align-items:center !important;
    justify-content:center !important;
    border:1px solid rgba(16,185,129,.24) !important;
    border-radius:14px !important;
    background:#fff !important;
    color:#067a4d !important;
    font-size:23px !important;
    font-weight:900 !important;
    box-shadow:0 8px 20px rgba(6,78,59,.08) !important;
  }

  #superAdmin,
  #doctorDashboard,
  #patientDashboard,
  #homeView,
  #legalView,
  #staffBoardView{
    scroll-margin-top:88px !important;
  }
}

@media (max-width:430px){
  .wrap{padding-top:74px !important;}
  .topbar,
  body.super-admin-role .topbar,
  body.nb-role-super-admin .topbar{height:74px !important;}
  .topbar .brand small,
  body.super-admin-role .topbar .brand small,
  body.nb-role-super-admin .topbar .brand small{max-width:180px !important;}
}

/* =========================================================
   NutryBuddy vNEXT fix 3 - Super Admin filtro pazienti mobile
   ---------------------------------------------------------
   Il selettore dei nutrizionisti è ora presente anche nell'app reale.
   Serve soprattutto da telefono, dove la lista laterale può risultare
   meno immediata rispetto alla vista browser.
========================================================= */
.superAdminPatientFilterBar{
  display:flex;
  flex-direction:column;
  gap:7px;
  margin:12px 0 14px;
  padding:12px;
  border:1px solid rgba(16,185,129,.14);
  border-radius:18px;
  background:linear-gradient(180deg,#ffffff,#f4fff9);
}
.superAdminPatientFilterBar label{
  color:#073326;
  font-size:13px;
  font-weight:900;
}
.superAdminPatientFilterBar small{
  color:#607b6c;
  font-size:11px;
  line-height:1.35;
}
.superAdminPatientGroupSelect{
  width:100%;
  min-height:44px;
  border-radius:14px!important;
  font-weight:850;
}
@media (min-width:769px){
  .superAdminPatientFilterBar{
    max-width:520px;
  }
  .superAdminPatientFilterBar small{
    display:none;
  }
}
@media (max-width:768px){
  body.super-admin-role #superAdmin .superAdminPatientFilterBar,
  #superAdmin .superAdminPatientFilterBar{
    display:flex!important;
    margin-top:10px!important;
    margin-bottom:14px!important;
  }
  body.super-admin-role #superAdmin .superAdminSideList,
  #superAdmin .superAdminSideList{
    display:flex!important;
    visibility:visible!important;
    opacity:1!important;
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch!important;
    padding-bottom:10px!important;
  }
}

/* =========================================================
   NutryBuddy vNEXT fix 4 - Tablet verticale Super Admin
   ---------------------------------------------------------
   App reale, non solo preview:
   - header fisso anche su tablet verticale;
   - hamburger visibile anche su tablet;
   - azioni desktop nascoste nel range tablet;
   - contenuto distanziato dall'header per non finirci sotto;
   - pannello Super Admin più compatto e leggibile su tablet.
========================================================= */
@media (min-width: 769px) and (max-width: 1024px){
  html, body{
    width:100% !important;
    max-width:100% !important;
    overflow-x:hidden !important;
  }

  body.super-admin-role .wrap,
  body.nb-role-super-admin .wrap{
    width:100% !important;
    min-height:100vh !important;
    padding-top:82px !important;
  }

  body.super-admin-role .module,
  body.nb-role-super-admin .module{
    width:100% !important;
    max-width:100% !important;
    min-height:100vh !important;
    margin:0 auto !important;
    border-radius:0 !important;
    overflow:visible !important;
  }

  body.super-admin-role .topbar,
  body.nb-role-super-admin .topbar{
    position:fixed !important;
    top:0 !important;
    left:0 !important;
    right:0 !important;
    width:100% !important;
    height:82px !important;
    z-index:99970 !important;
    display:flex !important;
    align-items:center !important;
    gap:12px !important;
    padding:12px 22px !important;
    border-radius:0 !important;
    background:rgba(255,255,255,.97) !important;
    backdrop-filter:blur(16px) !important;
    -webkit-backdrop-filter:blur(16px) !important;
    border-bottom:1px solid rgba(16,185,129,.16) !important;
    box-shadow:0 10px 28px rgba(6,78,59,.08) !important;
  }

  body.super-admin-role .topbar > .actions,
  body.nb-role-super-admin .topbar > .actions{
    display:none !important;
  }

  body.super-admin-role .nbSuperAdminMobileToggle,
  body.nb-role-super-admin .nbSuperAdminMobileToggle,
  body.super-admin-role .nbMobileDrawerToggle,
  body.nb-role-super-admin .nbMobileDrawerToggle{
    display:inline-flex !important;
    flex:0 0 46px !important;
    width:46px !important;
    height:46px !important;
    align-items:center !important;
    justify-content:center !important;
    border:1px solid rgba(16,185,129,.24) !important;
    border-radius:15px !important;
    background:#fff !important;
    color:#067a4d !important;
    font-size:24px !important;
    font-weight:900 !important;
    box-shadow:0 8px 20px rgba(6,78,59,.08) !important;
  }

  body.super-admin-role .topbar .brand,
  body.nb-role-super-admin .topbar .brand{
    flex:1 1 auto !important;
    min-width:0 !important;
    justify-content:flex-start !important;
    gap:10px !important;
    padding-right:0 !important;
    font-size:15px !important;
  }

  body.super-admin-role .topbar .brand .logo,
  body.nb-role-super-admin .topbar .brand .logo{
    width:46px !important;
    height:46px !important;
    min-width:46px !important;
    border-radius:15px !important;
  }

  body.super-admin-role .topbar .brand .logo img,
  body.nb-role-super-admin .topbar .brand .logo img{
    width:36px !important;
    height:36px !important;
  }

  body.super-admin-role .topbar .brand small,
  body.nb-role-super-admin .topbar .brand small{
    display:block !important;
    max-width:270px !important;
    white-space:nowrap !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    font-size:11px !important;
    line-height:1.15 !important;
  }

  body.super-admin-role #superAdmin,
  body.nb-role-super-admin #superAdmin{
    padding:20px 22px 34px !important;
  }

  body.super-admin-role #superAdmin .hero,
  body.nb-role-super-admin #superAdmin .hero{
    margin-top:0 !important;
  }

  body.super-admin-role #superAdmin .superAdminKpiGrid,
  body.nb-role-super-admin #superAdmin .superAdminKpiGrid{
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    gap:12px !important;
  }

  body.super-admin-role #superAdmin .card,
  body.nb-role-super-admin #superAdmin .card,
  body.super-admin-role #superAdmin .superAdminPanel,
  body.nb-role-super-admin #superAdmin .superAdminPanel{
    border-radius:20px !important;
  }

  body.super-admin-role #superAdmin .superAdminTable,
  body.nb-role-super-admin #superAdmin .superAdminTable{
    font-size:12px !important;
  }

  body.super-admin-role #superAdmin .superAdminTable th,
  body.super-admin-role #superAdmin .superAdminTable td,
  body.nb-role-super-admin #superAdmin .superAdminTable th,
  body.nb-role-super-admin #superAdmin .superAdminTable td{
    padding:10px 8px !important;
    font-size:11.5px !important;
    line-height:1.3 !important;
    white-space:normal !important;
  }

  body.super-admin-role #superAdmin .superAdminTable .miniMuted,
  body.nb-role-super-admin #superAdmin .superAdminTable .miniMuted{
    font-size:10.5px !important;
    overflow-wrap:anywhere !important;
  }

  body.super-admin-role #superAdmin .btn,
  body.nb-role-super-admin #superAdmin .btn{
    min-height:38px !important;
    padding:9px 14px !important;
    font-size:12px !important;
    border-radius:13px !important;
  }

  body.super-admin-role .nbMobileDrawerOverlay,
  body.nb-role-super-admin .nbMobileDrawerOverlay{
    display:block !important;
    position:fixed !important;
    inset:0 !important;
    z-index:99980 !important;
  }

  body.super-admin-role .nbMobileDrawer,
  body.nb-role-super-admin .nbMobileDrawer{
    display:flex !important;
    position:fixed !important;
    top:0 !important;
    left:0 !important;
    bottom:0 !important;
    width:min(72vw,340px) !important;
    max-width:340px !important;
    z-index:99990 !important;
  }
}

/* =========================================================
   NutryBuddy vNEXT fix 5 - Tablet verticale come large mobile
   ---------------------------------------------------------
   App reale, non solo preview:
   - su tablet verticale il Super Admin usa header mobile pulito;
   - nasconde la navbar desktop compressa;
   - hamburger/logo/nome restano fissi;
   - drawer chiuso di default e aperto solo con classe JS;
   - contenuto distanziato sotto l'header.
========================================================= */
@media (min-width: 769px) and (max-width: 1024px) and (orientation: portrait){
  html, body{
    overflow-x:hidden !important;
  }

  /* Target robusto: funziona anche se la classe ruolo non viene ancora applicata,
     perché aggancia direttamente la vista Super Admin visibile. */
  body:has(#superAdmin:not(.hidden)) .wrap,
  body.super-admin-role .wrap,
  body.nb-role-super-admin .wrap{
    padding:0 !important;
    min-height:100vh !important;
  }

  body:has(#superAdmin:not(.hidden)) .module,
  body.super-admin-role .module,
  body.nb-role-super-admin .module{
    width:100% !important;
    max-width:100% !important;
    min-height:100vh !important;
    margin:0 !important;
    border-radius:0 !important;
    overflow:visible !important;
    box-shadow:none !important;
  }

  body:has(#superAdmin:not(.hidden)) .topbar,
  body.super-admin-role .topbar,
  body.nb-role-super-admin .topbar{
    position:fixed !important;
    top:0 !important;
    left:0 !important;
    right:0 !important;
    height:78px !important;
    z-index:99990 !important;
    display:flex !important;
    align-items:center !important;
    justify-content:flex-start !important;
    gap:12px !important;
    padding:12px 18px !important;
    background:rgba(255,255,255,.98) !important;
    border-bottom:1px solid rgba(16,185,129,.16) !important;
    box-shadow:0 10px 28px rgba(6,78,59,.08) !important;
    backdrop-filter:blur(16px) !important;
    -webkit-backdrop-filter:blur(16px) !important;
  }

  body:has(#superAdmin:not(.hidden)) .topbar > .actions,
  body.super-admin-role .topbar > .actions,
  body.nb-role-super-admin .topbar > .actions{
    display:none !important;
    visibility:hidden !important;
    width:0 !important;
    height:0 !important;
    overflow:hidden !important;
    pointer-events:none !important;
  }

  body:has(#superAdmin:not(.hidden)) .nbMobileDrawerToggle,
  body:has(#superAdmin:not(.hidden)) .nbSuperAdminMobileToggle,
  body.super-admin-role .nbMobileDrawerToggle,
  body.super-admin-role .nbSuperAdminMobileToggle,
  body.nb-role-super-admin .nbMobileDrawerToggle,
  body.nb-role-super-admin .nbSuperAdminMobileToggle{
    display:inline-flex !important;
    flex:0 0 48px !important;
    width:48px !important;
    height:48px !important;
    min-width:48px !important;
    align-items:center !important;
    justify-content:center !important;
    border:1px solid rgba(16,185,129,.24) !important;
    border-radius:16px !important;
    background:#ffffff !important;
    color:#067a4d !important;
    font-size:25px !important;
    line-height:1 !important;
    font-weight:900 !important;
    box-shadow:0 8px 20px rgba(6,78,59,.08) !important;
  }

  body:has(#superAdmin:not(.hidden)) .topbar .brand,
  body.super-admin-role .topbar .brand,
  body.nb-role-super-admin .topbar .brand{
    display:flex !important;
    flex:1 1 auto !important;
    min-width:0 !important;
    align-items:center !important;
    gap:10px !important;
    font-size:15px !important;
    line-height:1.1 !important;
  }

  body:has(#superAdmin:not(.hidden)) .topbar .brand .logo,
  body.super-admin-role .topbar .brand .logo,
  body.nb-role-super-admin .topbar .brand .logo{
    width:46px !important;
    height:46px !important;
    min-width:46px !important;
    border-radius:15px !important;
  }

  body:has(#superAdmin:not(.hidden)) .topbar .brand .logo img,
  body.super-admin-role .topbar .brand .logo img,
  body.nb-role-super-admin .topbar .brand .logo img{
    width:36px !important;
    height:36px !important;
  }

  body:has(#superAdmin:not(.hidden)) .topbar .brand small,
  body.super-admin-role .topbar .brand small,
  body.nb-role-super-admin .topbar .brand small{
    display:block !important;
    max-width:360px !important;
    white-space:nowrap !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    font-size:11px !important;
    line-height:1.15 !important;
  }

  body:has(#superAdmin:not(.hidden)) #superAdmin,
  body.super-admin-role #superAdmin,
  body.nb-role-super-admin #superAdmin{
    padding:98px 22px 34px !important;
  }

  body:has(#superAdmin:not(.hidden)) #superAdmin .adminTopRow,
  body.super-admin-role #superAdmin .adminTopRow,
  body.nb-role-super-admin #superAdmin .adminTopRow{
    margin-top:0 !important;
  }

  body:has(#superAdmin:not(.hidden)) #superAdmin .superAdminHeroStats,
  body.super-admin-role #superAdmin .superAdminHeroStats,
  body.nb-role-super-admin #superAdmin .superAdminHeroStats,
  body:has(#superAdmin:not(.hidden)) #superAdmin .superAdminKpiGrid,
  body.super-admin-role #superAdmin .superAdminKpiGrid,
  body.nb-role-super-admin #superAdmin .superAdminKpiGrid{
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    gap:12px !important;
  }

  /* Drawer chiuso di default: evita il menu esploso in alto a sinistra. */
  body:has(#superAdmin:not(.hidden)) .nbMobileDrawerOverlay,
  body.super-admin-role .nbMobileDrawerOverlay,
  body.nb-role-super-admin .nbMobileDrawerOverlay{
    display:block !important;
    position:fixed !important;
    inset:0 !important;
    z-index:100000 !important;
    background:rgba(5,35,24,.42) !important;
    backdrop-filter:blur(4px) !important;
    -webkit-backdrop-filter:blur(4px) !important;
    opacity:0 !important;
    pointer-events:none !important;
    transition:opacity .22s ease !important;
  }

  body:has(#superAdmin:not(.hidden)) .nbMobileDrawer,
  body.super-admin-role .nbMobileDrawer,
  body.nb-role-super-admin .nbMobileDrawer{
    display:flex !important;
    position:fixed !important;
    top:0 !important;
    left:0 !important;
    bottom:0 !important;
    width:min(76vw,360px) !important;
    max-width:360px !important;
    z-index:100001 !important;
    transform:translateX(-108%) !important;
    transition:transform .24s ease !important;
    background:#f8fffb !important;
    border-right:1px solid rgba(16,185,129,.2) !important;
    box-shadow:24px 0 80px rgba(6,78,59,.25) !important;
  }

  body.nb-drawer-open .nbMobileDrawerOverlay,
  body.nb-mobile-drawer-open .nbMobileDrawerOverlay{
    opacity:1 !important;
    pointer-events:auto !important;
  }

  body.nb-drawer-open .nbMobileDrawer,
  body.nb-mobile-drawer-open .nbMobileDrawer{
    transform:translateX(0) !important;
  }
}


/* =========================================================
   NutryBuddy vNEXT fix 6 - Tablet verticale drawer + safe top
   ---------------------------------------------------------
   App reale:
   - hamburger Super Admin cliccabile anche su tablet verticale;
   - drawer sopra al contenuto con overlay;
   - header con safe-area per non sovrapporsi a barre di sistema/PWA;
   - contenuto sempre distanziato sotto l'header fisso.
========================================================= */
@media (min-width: 769px) and (max-width: 1024px) and (orientation: portrait){
  body:has(#superAdmin:not(.hidden)) .topbar,
  body.super-admin-role .topbar,
  body.nb-role-super-admin .topbar{
    height:88px !important;
    padding-top:calc(14px + env(safe-area-inset-top, 0px)) !important;
    padding-bottom:12px !important;
    align-items:center !important;
  }

  body:has(#superAdmin:not(.hidden)) #superAdmin,
  body.super-admin-role #superAdmin,
  body.nb-role-super-admin #superAdmin{
    padding-top:calc(112px + env(safe-area-inset-top, 0px)) !important;
  }

  body:has(#superAdmin:not(.hidden)) .nbMobileDrawerToggle,
  body:has(#superAdmin:not(.hidden)) .nbSuperAdminMobileToggle,
  body.super-admin-role .nbMobileDrawerToggle,
  body.super-admin-role .nbSuperAdminMobileToggle,
  body.nb-role-super-admin .nbMobileDrawerToggle,
  body.nb-role-super-admin .nbSuperAdminMobileToggle{
    position:relative !important;
    z-index:100010 !important;
    cursor:pointer !important;
    pointer-events:auto !important;
    -webkit-tap-highlight-color:transparent !important;
  }

  body:has(#superAdmin:not(.hidden)) .nbMobileDrawer,
  body.super-admin-role .nbMobileDrawer,
  body.nb-role-super-admin .nbMobileDrawer{
    padding-top:calc(14px + env(safe-area-inset-top, 0px)) !important;
  }

  body.nb-drawer-open,
  body.nb-mobile-drawer-open{
    overflow:hidden !important;
  }
}


/* =========================================================
   NutryBuddy vNEXT fix 7 - Drawer reale telefono/tablet + preview nitida
   ---------------------------------------------------------
   - Hamburger cliccabile anche su tablet verticale.
   - Drawer sopra il contenuto e chiuso di default.
   - Pulsante Indietro vicino a Esci, per chiudere il menu senza logout.
   - Header non coperto da status bar in preview/PWA.
========================================================= */
.nbMobileDrawerBottomActions{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  width:100%;
}
.nbMobileDrawerBack{
  border:0;
  border-radius:16px;
  padding:13px 14px;
  background:#ffffff;
  color:#075c3f;
  font-weight:900;
  text-align:center;
  box-shadow:0 8px 20px rgba(6,78,59,.06);
}
.nbMobileDrawerBottomActions .nbMobileDrawerLogout{
  width:100%;
  text-align:center;
  justify-content:center;
}
@media (max-width:1024px){
  body.super-admin-role .nbMobileDrawerToggle,
  body.nb-role-super-admin .nbMobileDrawerToggle,
  body:has(#superAdmin:not(.hidden)) .nbMobileDrawerToggle,
  body.super-admin-role .nbSuperAdminMobileToggle,
  body.nb-role-super-admin .nbSuperAdminMobileToggle,
  body:has(#superAdmin:not(.hidden)) .nbSuperAdminMobileToggle{
    display:inline-flex!important;
    pointer-events:auto!important;
    cursor:pointer!important;
    position:relative!important;
    z-index:100020!important;
  }
  body.super-admin-role .nbMobileDrawerOverlay,
  body.nb-role-super-admin .nbMobileDrawerOverlay,
  body:has(#superAdmin:not(.hidden)) .nbMobileDrawerOverlay{
    display:block!important;
    opacity:0!important;
    pointer-events:none!important;
  }
  body.super-admin-role .nbMobileDrawer,
  body.nb-role-super-admin .nbMobileDrawer,
  body:has(#superAdmin:not(.hidden)) .nbMobileDrawer{
    display:flex!important;
    transform:translateX(-108%)!important;
  }
  body.nb-drawer-open .nbMobileDrawerOverlay,
  body.nb-mobile-drawer-open .nbMobileDrawerOverlay{
    opacity:1!important;
    pointer-events:auto!important;
  }
  body.nb-drawer-open .nbMobileDrawer,
  body.nb-mobile-drawer-open .nbMobileDrawer{
    transform:translateX(0)!important;
  }
}
@media (max-width:430px){
  .nbMobileDrawer{width:min(86vw,318px)!important;}
  .nbMobileDrawerHead{min-height:96px!important;padding:18px 16px!important;}
  .nbMobileDrawerNav{padding:14px 12px!important;gap:8px!important;}
  .nbMobileDrawerNav button{min-height:46px!important;}
  .nbMobileDrawerFoot{padding:12px!important;}
}
@media (min-width:769px) and (max-width:1024px) and (orientation:portrait){
  body:has(#superAdmin:not(.hidden)) .topbar,
  body.super-admin-role .topbar,
  body.nb-role-super-admin .topbar{
    height:82px!important;
    padding-top:12px!important;
  }
  body:has(#superAdmin:not(.hidden)) #superAdmin,
  body.super-admin-role #superAdmin,
  body.nb-role-super-admin #superAdmin{
    padding-top:104px!important;
  }
}


/* =========================================================
   NutryBuddy FIX - Hamburger mobile/tablet reale + preview
   - Bottone sempre cliccabile su telefono e tablet verticale.
   - Drawer sopra il contenuto, overlay corretta.
========================================================= */
@media (max-width: 1024px) {
  .topbar {
    position: sticky !important;
    top: 0 !important;
    z-index: 9000 !important;
  }

  #superAdminMobileMenuBtn,
  #nbSuperAdminMobileToggle,
  .nbMobileDrawerToggle,
  .nbSuperAdminMobileToggle {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    position: relative !important;
    z-index: 9100 !important;
    pointer-events: auto !important;
    cursor: pointer !important;
    touch-action: manipulation !important;
  }

  .nbMobileDrawerOverlay {
    position: fixed !important;
    inset: 0 !important;
    z-index: 9200 !important;
    opacity: 0 !important;
    pointer-events: none !important;
    background: rgba(10, 30, 22, .34) !important;
    backdrop-filter: blur(8px) !important;
    transition: opacity .18s ease !important;
  }

  .nbMobileDrawer {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    bottom: 0 !important;
    width: min(82vw, 330px) !important;
    max-width: 330px !important;
    z-index: 9300 !important;
    transform: translateX(-110%) !important;
    transition: transform .22s ease !important;
    pointer-events: auto !important;
  }

  body.nb-mobile-drawer-open .nbMobileDrawerOverlay,
  body.nb-drawer-open .nbMobileDrawerOverlay {
    opacity: 1 !important;
    pointer-events: auto !important;
  }

  body.nb-mobile-drawer-open .nbMobileDrawer,
  body.nb-drawer-open .nbMobileDrawer {
    transform: translateX(0) !important;
  }
}


/* =========================================================
   NutryBuddy vNEXT - Laptop/Desktop responsive automatico
   ---------------------------------------------------------
   App reale:
   - Telefono e tablet verticale restano gestiti dai layout dedicati.
   - Da 1025px in su l'app usa un layout fluido per laptop/desktop/19"/24".
   - Card, griglie, pannelli e tabelle si adattano alla larghezza disponibile.
========================================================= */
@media (min-width: 1025px) {
  :root {
    --nb-desktop-page-pad: clamp(14px, 1.25vw, 26px);
    --nb-desktop-card-pad: clamp(14px, 1vw, 22px);
    --nb-desktop-radius: clamp(20px, 1.45vw, 32px);
    --nb-desktop-gap: clamp(12px, .9vw, 20px);
  }

  .wrap {
    padding: var(--nb-desktop-page-pad) !important;
  }

  .module {
    width: min(calc(100vw - (var(--nb-desktop-page-pad) * 2)), 1880px) !important;
    max-width: 1880px !important;
    border-radius: var(--nb-desktop-radius) !important;
  }

  .topbar {
    gap: var(--nb-desktop-gap) !important;
    padding: clamp(14px, 1vw, 20px) clamp(16px, 1.35vw, 26px) !important;
  }

  .brand {
    min-width: 0 !important;
  }

  .brand > div:last-child {
    min-width: 0 !important;
  }

  .brand b,
  .brand strong {
    font-size: clamp(16px, 1vw, 20px) !important;
    white-space: nowrap !important;
  }

  .brand small {
    font-size: clamp(11px, .74vw, 13px) !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    max-width: 36vw !important;
  }

  .logo {
    width: clamp(44px, 3.1vw, 54px) !important;
    height: clamp(44px, 3.1vw, 54px) !important;
    min-width: clamp(44px, 3.1vw, 54px) !important;
    border-radius: clamp(13px, 1vw, 17px) !important;
  }

  .logo img {
    width: clamp(34px, 2.35vw, 43px) !important;
    height: clamp(34px, 2.35vw, 43px) !important;
  }

  .actions {
    gap: clamp(7px, .65vw, 12px) !important;
    justify-content: flex-end !important;
    flex-wrap: wrap !important;
  }

  .btn {
    min-height: 40px !important;
    padding: clamp(9px, .7vw, 12px) clamp(11px, .9vw, 16px) !important;
    border-radius: clamp(12px, .9vw, 16px) !important;
    font-size: clamp(12px, .78vw, 14px) !important;
  }

  .screen,
  .panel,
  .card,
  .superAdminPanel,
  .doctorPanel,
  .patientPanel,
  .calendarPanel,
  .adminNotice,
  .homeBig,
  .demoStep,
  .proCard {
    border-radius: clamp(18px, 1.4vw, 28px) !important;
  }

  .content,
  .screen,
  main:not(.stage) {
    min-width: 0 !important;
  }

  .grid2,
  .doctor,
  .superAdminGrid,
  .superAdminPatientLayout,
  .homeHero {
    gap: var(--nb-desktop-gap) !important;
  }

  .kpis,
  .grid3,
  .portalMenu,
  .superAdminHeroStats,
  .superAdminQuickGrid,
  .proGrid,
  .formgrid {
    gap: var(--nb-desktop-gap) !important;
  }

  .kpis,
  .grid3,
  .superAdminQuickGrid,
  .proGrid {
    grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr)) !important;
  }

  .portalMenu {
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
  }

  .superAdminHeroStats {
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)) !important;
  }

  .superAdminGrid {
    grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr) !important;
  }

  .superAdminPatientLayout {
    grid-template-columns: minmax(230px, 300px) minmax(0, 1fr) !important;
  }

  .superAdminPanel,
  .card,
  .panel,
  .proCard,
  .demoStep {
    padding: var(--nb-desktop-card-pad) !important;
  }

  .superAdminTable,
  table {
    width: 100% !important;
  }

  .superAdminPanel,
  .tableWrap,
  .superAdminTableWrap,
  .doctorTableWrap,
  .patientTableWrap {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }

  .superAdminTable th,
  .superAdminTable td,
  table th,
  table td {
    font-size: clamp(12px, .76vw, 14px) !important;
    padding: clamp(9px, .7vw, 13px) !important;
  }

  h1 { font-size: clamp(28px, 2.15vw, 42px) !important; }
  h2 { font-size: clamp(22px, 1.55vw, 30px) !important; }
  h3 { font-size: clamp(17px, 1.1vw, 22px) !important; }

  input,
  select,
  textarea {
    max-width: 100% !important;
  }
}

/* Laptop piccolo / monitor 19" 4:3 o 16:10: evita compressioni eccessive. */
@media (min-width: 1025px) and (max-width: 1280px) {
  .module {
    width: calc(100vw - 24px) !important;
  }

  .topbar {
    align-items: flex-start !important;
  }

  .actions {
    max-width: 58vw !important;
  }

  .superAdminGrid,
  .homeHero,
  .grid2,
  .doctor {
    grid-template-columns: 1fr !important;
  }

  .superAdminPatientLayout {
    grid-template-columns: 1fr !important;
  }

  .superAdminSideList {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)) !important;
    max-height: none !important;
  }
}

/* Laptop medio/grande: sfrutta più colonne senza allargare troppo le righe. */
@media (min-width: 1281px) and (max-width: 1599px) {
  .module {
    max-width: 1500px !important;
  }

  .superAdminGrid {
    grid-template-columns: minmax(0, 1fr) minmax(360px, .82fr) !important;
  }
}

/* Desktop ampio / PC 24": usa lo spazio extra senza perdere leggibilità. */
@media (min-width: 1600px) {
  .module {
    max-width: 1840px !important;
  }

  .superAdminGrid {
    grid-template-columns: minmax(0, 1.25fr) minmax(420px, .75fr) !important;
  }
}


/* =========================================================
   NutryBuddy HARD FIX - Hamburger telefono/tablet APP REALE + PREVIEW
   ---------------------------------------------------------
   Obiettivo: il drawer mobile/tablet si apre sempre quando il body riceve
   nb-mobile-drawer-open / nb-drawer-open, senza dipendere solo dalla preview
   o dalla classe ruolo già presente.
========================================================= */
@media (max-width: 1024px) {
  #superAdminMobileMenuBtn,
  #nbSuperAdminMobileToggle,
  .nbMobileDrawerToggle,
  .nbSuperAdminMobileToggle,
  [data-nb-mobile-menu-toggle] {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex: 0 0 auto !important;
    width: 42px !important;
    height: 42px !important;
    min-width: 42px !important;
    min-height: 42px !important;
    position: relative !important;
    z-index: 2147483000 !important;
    pointer-events: auto !important;
    cursor: pointer !important;
    touch-action: manipulation !important;
    -webkit-tap-highlight-color: transparent !important;
  }

  .nbMobileDrawerOverlay {
    display: block !important;
    position: fixed !important;
    inset: 0 !important;
    z-index: 2147483010 !important;
    background: rgba(3, 18, 13, 0.48) !important;
    backdrop-filter: blur(5px) !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    transition: opacity .2s ease, visibility .2s ease !important;
  }

  .nbMobileDrawer {
    display: flex !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    bottom: 0 !important;
    width: min(86vw, 340px) !important;
    max-width: 340px !important;
    height: 100dvh !important;
    z-index: 2147483020 !important;
    transform: translate3d(-112%, 0, 0) !important;
    transition: transform .24s ease !important;
    pointer-events: auto !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }

  body.nb-mobile-drawer-open,
  body.nb-drawer-open {
    overflow: hidden !important;
  }

  body.nb-mobile-drawer-open .nbMobileDrawerOverlay,
  body.nb-drawer-open .nbMobileDrawerOverlay {
    opacity: 1 !important;
    visibility: visible !important;
    pointer-events: auto !important;
  }

  body.nb-mobile-drawer-open .nbMobileDrawer,
  body.nb-drawer-open .nbMobileDrawer {
    transform: translate3d(0, 0, 0) !important;
  }
}


/* =========================================================
   NutryBuddy FINAL FIX - Drawer mobile/tablet + laptop preview cleanup
   - Le regole di apertura drawer sono globali quando il body ha classe open.
   - Il bottone hamburger resta sempre cliccabile su telefono/tablet.
========================================================= */
#superAdminMobileMenuBtn,
#nbSuperAdminMobileToggle,
.nbMobileDrawerToggle,
.nbSuperAdminMobileToggle,
[data-nb-mobile-menu-toggle]{
  pointer-events:auto!important;
  touch-action:manipulation!important;
  -webkit-tap-highlight-color:transparent!important;
}
.nbMobileDrawerOverlay{
  position:fixed!important;
  inset:0!important;
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
.nbMobileDrawer{
  position:fixed!important;
  top:0!important;
  left:0!important;
  bottom:0!important;
  transform:translate3d(-112%,0,0)!important;
  transition:transform .22s ease!important;
}
body.nb-mobile-drawer-open .nbMobileDrawerOverlay,
body.nb-drawer-open .nbMobileDrawerOverlay{
  opacity:1!important;
  visibility:visible!important;
  pointer-events:auto!important;
  z-index:2147483010!important;
}
body.nb-mobile-drawer-open .nbMobileDrawer,
body.nb-drawer-open .nbMobileDrawer{
  transform:translate3d(0,0,0)!important;
  z-index:2147483020!important;
}
@media (max-width:1180px){
  #superAdminMobileMenuBtn,.nbMobileDrawerToggle,[data-nb-mobile-menu-toggle]{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    width:42px!important;
    height:42px!important;
    min-width:42px!important;
    min-height:42px!important;
  }
  .nbMobileDrawer{
    width:min(86vw,340px)!important;
    max-width:340px!important;
    height:100dvh!important;
    overflow-y:auto!important;
    background:#f7fff9!important;
  }
}


/* =========================================================
   NutryBuddy DEFINITIVE FIX - Drawer hamburger phone/tablet
   APP REALE + PREVIEW
   Motivo: alcune regole precedenti lasciavano il drawer in display:none;
   questa regola finale forza apertura/chiusura in modo unico.
========================================================= */
#superAdminMobileMenuBtn,
.nbMobileDrawerToggle,
[data-nb-mobile-menu-toggle] {
  pointer-events: auto !important;
  position: relative !important;
  z-index: 2147483600 !important;
  cursor: pointer !important;
  touch-action: manipulation !important;
}
.nbMobileDrawerOverlay {
  display: block !important;
  position: fixed !important;
  inset: 0 !important;
  background: rgba(5, 35, 24, .42) !important;
  backdrop-filter: blur(5px) !important;
  -webkit-backdrop-filter: blur(5px) !important;
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  z-index: 2147483200 !important;
}
.nbMobileDrawer {
  display: flex !important;
  flex-direction: column !important;
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  bottom: 0 !important;
  width: min(86vw, 350px) !important;
  max-width: 350px !important;
  background: #f8fffb !important;
  border-right: 1px solid rgba(16,185,129,.20) !important;
  box-shadow: 24px 0 80px rgba(6,78,59,.25) !important;
  transform: translate3d(-112%,0,0) !important;
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
  z-index: 2147483300 !important;
  transition: transform .22s ease !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
}
html.nb-mobile-drawer-open,
body.nb-mobile-drawer-open,
html.nb-drawer-open,
body.nb-drawer-open {
  overflow: hidden !important;
}
html.nb-mobile-drawer-open .nbMobileDrawerOverlay,
body.nb-mobile-drawer-open .nbMobileDrawerOverlay,
html.nb-drawer-open .nbMobileDrawerOverlay,
body.nb-drawer-open .nbMobileDrawerOverlay {
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto !important;
}
html.nb-mobile-drawer-open .nbMobileDrawer,
body.nb-mobile-drawer-open .nbMobileDrawer,
html.nb-drawer-open .nbMobileDrawer,
body.nb-drawer-open .nbMobileDrawer {
  transform: translate3d(0,0,0) !important;
}
@media (max-width: 1180px) {
  .actions { display: none !important; }
  #superAdminMobileMenuBtn,
  .nbMobileDrawerToggle,
  [data-nb-mobile-menu-toggle] {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
}

/* =========================================================
   NutryBuddy vFINAL - Drawer unico telefono/tablet + preview
   ---------------------------------------------------------
   Fix applicato nell'app reale: drawer sempre stilizzato e apribile
   quando html/body ricevono nb-drawer-open o nb-mobile-drawer-open.
========================================================= */
#superAdminMobileMenuBtn,
.nbMobileDrawerToggle,
[data-nb-mobile-menu-toggle]{
  pointer-events:auto!important;
  touch-action:manipulation!important;
  cursor:pointer!important;
  z-index:2147483600!important;
}
.nbMobileDrawerOverlay{
  display:block!important;
  position:fixed!important;
  inset:0!important;
  background:rgba(3,18,13,.44)!important;
  backdrop-filter:blur(7px)!important;
  -webkit-backdrop-filter:blur(7px)!important;
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
  z-index:2147483200!important;
  transition:opacity .22s ease, visibility .22s ease!important;
}
.nbMobileDrawer{
  display:flex!important;
  flex-direction:column!important;
  position:fixed!important;
  top:0!important;
  left:0!important;
  bottom:0!important;
  width:min(86vw,350px)!important;
  max-width:350px!important;
  height:100dvh!important;
  background:#f8fffb!important;
  border-right:1px solid rgba(16,185,129,.20)!important;
  box-shadow:28px 0 80px rgba(2,44,34,.28)!important;
  transform:translate3d(-112%,0,0)!important;
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
  z-index:2147483300!important;
  transition:transform .24s ease!important;
  overflow-y:auto!important;
  -webkit-overflow-scrolling:touch!important;
  padding:16px!important;
  box-sizing:border-box!important;
}
html.nb-mobile-drawer-open,
html.nb-drawer-open,
body.nb-mobile-drawer-open,
body.nb-drawer-open{overflow:hidden!important;}
html.nb-mobile-drawer-open .nbMobileDrawerOverlay,
html.nb-drawer-open .nbMobileDrawerOverlay,
body.nb-mobile-drawer-open .nbMobileDrawerOverlay,
body.nb-drawer-open .nbMobileDrawerOverlay{
  opacity:1!important;
  visibility:visible!important;
  pointer-events:auto!important;
}
html.nb-mobile-drawer-open .nbMobileDrawer,
html.nb-drawer-open .nbMobileDrawer,
body.nb-mobile-drawer-open .nbMobileDrawer,
body.nb-drawer-open .nbMobileDrawer{
  transform:translate3d(0,0,0)!important;
}
.nbMobileDrawerHead{
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  min-height:auto!important;
  padding:8px 2px 16px!important;
  margin:0 0 14px!important;
  border-bottom:1px solid rgba(16,185,129,.16)!important;
  color:#073f2c!important;
  background:transparent!important;
}
.nbMobileDrawerShield,
.nbMobileDrawerIcon{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:44px!important;
  height:44px!important;
  min-width:44px!important;
  border-radius:16px!important;
  background:linear-gradient(135deg,#10b981,#35c77b)!important;
  color:#fff!important;
  box-shadow:0 14px 32px rgba(16,185,129,.24)!important;
  font-size:20px!important;
}
.nbMobileDrawerHead strong{display:block!important;color:#073f2c!important;font-size:18px!important;line-height:1.1!important;font-weight:900!important;}
.nbMobileDrawerHead span{display:block!important;color:#5f7a68!important;font-size:12px!important;margin-top:4px!important;font-weight:750!important;}
.nbMobileDrawerClose{
  margin-left:auto!important;
  width:36px!important;
  height:36px!important;
  border:0!important;
  border-radius:12px!important;
  background:#fff!important;
  color:#0d4a36!important;
  font-size:22px!important;
  font-weight:900!important;
  box-shadow:0 8px 20px rgba(6,78,59,.08)!important;
  cursor:pointer!important;
}
.nbMobileDrawerNav{
  display:flex!important;
  flex-direction:column!important;
  gap:9px!important;
  padding:0!important;
  margin:0!important;
}
.nbMobileDrawerNav button{
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  width:100%!important;
  min-height:48px!important;
  border:1px solid rgba(16,185,129,.14)!important;
  border-radius:16px!important;
  background:#fff!important;
  color:#133f30!important;
  padding:12px 14px!important;
  text-align:left!important;
  font-size:14px!important;
  font-weight:900!important;
  box-shadow:0 8px 20px rgba(6,78,59,.06)!important;
  cursor:pointer!important;
}
.nbMobileDrawerNav button:hover{background:#ecfdf5!important;}
.nbMobileDrawerFoot{
  margin-top:auto!important;
  display:flex!important;
  flex-direction:column!important;
  gap:12px!important;
  padding-top:16px!important;
  border-top:1px solid rgba(16,185,129,.16)!important;
}
.nbMobileDrawerUser{
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  padding:12px!important;
  border-radius:18px!important;
  background:#ecfdf5!important;
  border:1px solid rgba(16,185,129,.18)!important;
}
.nbMobileDrawerAvatar{width:36px!important;height:36px!important;border-radius:14px!important;display:flex!important;align-items:center!important;justify-content:center!important;background:#fff!important;}
.nbMobileDrawerUser strong{display:block!important;color:#073f2c!important;font-size:14px!important;font-weight:900!important;}
.nbMobileDrawerUser span{display:block!important;color:#5f7a68!important;font-size:12px!important;font-weight:750!important;margin-top:2px!important;}
.nbMobileDrawerBottomActions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px!important;width:100%!important;}
.nbMobileDrawerBack,
.nbMobileDrawerLogout{
  width:100%!important;
  min-height:44px!important;
  border:0!important;
  border-radius:16px!important;
  padding:12px 10px!important;
  text-align:center!important;
  font-weight:900!important;
  cursor:pointer!important;
}
.nbMobileDrawerBack{background:#fff!important;color:#075c3f!important;box-shadow:0 8px 20px rgba(6,78,59,.06)!important;}
.nbMobileDrawerLogout{background:#fff1f2!important;color:#9f1239!important;}
@media (max-width:1180px){
  #superAdminMobileMenuBtn,.nbMobileDrawerToggle,[data-nb-mobile-menu-toggle]{display:inline-flex!important;}
}
@media (min-width:1181px){
  .nbMobileDrawerToggle{display:none!important;}
}


/* =========================================================
   NutryBuddy DIRECT CLICK V2 - APP REALE + PREVIEW
   ---------------------------------------------------------
   - Nessun proxy trasparente: il tap/click arriva al bottone reale.
   - Drawer identico per telefono, tablet verticale e tablet orizzontale.
========================================================= */
#superAdminMobileMenuBtn,
.nbMobileDrawerToggle,
[data-nb-mobile-menu-toggle]{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  pointer-events:auto!important;
  touch-action:manipulation!important;
  cursor:pointer!important;
  position:relative!important;
  z-index:2147483600!important;
}
.nbMobileDrawerOverlay{
  display:block!important;
  position:fixed!important;
  inset:0!important;
  background:rgba(3,18,13,.44)!important;
  backdrop-filter:blur(7px)!important;
  -webkit-backdrop-filter:blur(7px)!important;
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
  z-index:2147483200!important;
}
.nbMobileDrawer{
  display:flex!important;
  flex-direction:column!important;
  position:fixed!important;
  top:0!important;
  left:0!important;
  bottom:0!important;
  width:min(86vw,350px)!important;
  max-width:350px!important;
  height:100dvh!important;
  background:#f8fffb!important;
  border-right:1px solid rgba(16,185,129,.20)!important;
  box-shadow:28px 0 80px rgba(2,44,34,.28)!important;
  transform:translate3d(-112%,0,0)!important;
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
  z-index:2147483300!important;
  transition:transform .24s ease!important;
  overflow-y:auto!important;
  -webkit-overflow-scrolling:touch!important;
  padding:16px!important;
  box-sizing:border-box!important;
}
html.nb-mobile-drawer-open,
html.nb-drawer-open,
body.nb-mobile-drawer-open,
body.nb-drawer-open{overflow:hidden!important;}
html.nb-mobile-drawer-open .nbMobileDrawerOverlay,
html.nb-drawer-open .nbMobileDrawerOverlay,
body.nb-mobile-drawer-open .nbMobileDrawerOverlay,
body.nb-drawer-open .nbMobileDrawerOverlay{
  opacity:1!important;
  visibility:visible!important;
  pointer-events:auto!important;
}
html.nb-mobile-drawer-open .nbMobileDrawer,
html.nb-drawer-open .nbMobileDrawer,
body.nb-mobile-drawer-open .nbMobileDrawer,
body.nb-drawer-open .nbMobileDrawer{
  transform:translate3d(0,0,0)!important;
}
@media (min-width:1181px){
  #superAdminMobileMenuBtn,.nbMobileDrawerToggle,[data-nb-mobile-menu-toggle]{display:none!important;}
}

/* =========================================================
   NutryBuddy TOUCH HEADER UNIFORM FIX - APP REALE + PREVIEW
   ---------------------------------------------------------
   Uniforma header su Telefono, Tablet verticale e Tablet orizzontale:
   hamburger a sinistra, logo subito accanto, nome app vicino al logo.
========================================================= */
@media (max-width: 1180px) {
  .topbar {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 10px !important;
    min-height: 72px !important;
    padding: 12px 16px !important;
    background: rgba(255,255,255,.96) !important;
    border-bottom: 1px solid rgba(16,185,129,.14) !important;
    position: sticky !important;
    top: 0 !important;
    z-index: 9000 !important;
  }

  #superAdminMobileMenuBtn,
  .nbMobileDrawerToggle,
  [data-nb-mobile-menu-toggle] {
    order: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 44px !important;
    height: 44px !important;
    min-width: 44px !important;
    min-height: 44px !important;
    border: 1px solid rgba(16,185,129,.30) !important;
    border-radius: 14px !important;
    background: #ffffff !important;
    color: #08764e !important;
    font-size: 24px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    box-shadow: 0 10px 22px rgba(6,78,59,.08) !important;
    appearance: none !important;
    -webkit-appearance: none !important;
  }

  .topbar .brand {
    order: 1 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 9px !important;
    min-width: 0 !important;
    flex: 1 1 auto !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: left !important;
  }

  .topbar .brand .logo,
  .topbar .logo {
    width: 42px !important;
    height: 42px !important;
    min-width: 42px !important;
    border-radius: 14px !important;
  }

  .topbar .brand .logo img,
  .topbar .logo img {
    width: 34px !important;
    height: 34px !important;
  }

  .topbar .brand > div:last-child {
    min-width: 0 !important;
    max-width: calc(100vw - 124px) !important;
    overflow: hidden !important;
    color: #083d2c !important;
    font-size: 14px !important;
    line-height: 1.1 !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
    text-overflow: ellipsis !important;
  }

  .topbar .brand small {
    display: block !important;
    margin-top: 2px !important;
    max-width: 100% !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    font-size: 10px !important;
    line-height: 1.1 !important;
    color: #607a6a !important;
  }

  .topbar > .actions {
    display: none !important;
  }
}

@media (min-width: 769px) and (max-width: 1180px) and (orientation: landscape) {
  .topbar {
    min-height: 70px !important;
    padding: 11px 18px !important;
  }
  .topbar .brand > div:last-child {
    max-width: 360px !important;
  }
}

/* NutryBuddy role-aware drawer: stesso drawer touch per paziente, nutrizionista e super admin */
@media (max-width:1180px){
  body.nb-role-patient .nbMobileDrawerOverlay,
  body.nb-role-nutritionist .nbMobileDrawerOverlay,
  body.nb-role-super-admin .nbMobileDrawerOverlay{
    position:fixed!important;inset:0!important;background:rgba(5,35,24,.44)!important;backdrop-filter:blur(4px)!important;-webkit-backdrop-filter:blur(4px)!important;z-index:99980!important;opacity:0!important;visibility:hidden!important;pointer-events:none!important;transition:.22s ease!important;display:block!important;
  }
  body.nb-role-patient .nbMobileDrawer,
  body.nb-role-nutritionist .nbMobileDrawer,
  body.nb-role-super-admin .nbMobileDrawer{
    position:fixed!important;top:0!important;left:0!important;bottom:0!important;width:min(82vw,360px)!important;background:#f8fffb!important;border-right:1px solid rgba(16,185,129,.2)!important;box-shadow:24px 0 80px rgba(6,78,59,.25)!important;z-index:99981!important;transform:translate3d(-112%,0,0)!important;transition:.25s ease!important;display:flex!important;flex-direction:column!important;padding:16px!important;visibility:visible!important;opacity:1!important;pointer-events:auto!important;
  }
  html.nb-mobile-drawer-open body.nb-role-patient .nbMobileDrawerOverlay,
  html.nb-mobile-drawer-open body.nb-role-nutritionist .nbMobileDrawerOverlay,
  html.nb-mobile-drawer-open body.nb-role-super-admin .nbMobileDrawerOverlay,
  body.nb-mobile-drawer-open.nb-role-patient .nbMobileDrawerOverlay,
  body.nb-mobile-drawer-open.nb-role-nutritionist .nbMobileDrawerOverlay,
  body.nb-mobile-drawer-open.nb-role-super-admin .nbMobileDrawerOverlay{
    opacity:1!important;visibility:visible!important;pointer-events:auto!important;
  }
  html.nb-mobile-drawer-open body.nb-role-patient .nbMobileDrawer,
  html.nb-mobile-drawer-open body.nb-role-nutritionist .nbMobileDrawer,
  html.nb-mobile-drawer-open body.nb-role-super-admin .nbMobileDrawer,
  body.nb-mobile-drawer-open.nb-role-patient .nbMobileDrawer,
  body.nb-mobile-drawer-open.nb-role-nutritionist .nbMobileDrawer,
  body.nb-mobile-drawer-open.nb-role-super-admin .nbMobileDrawer{
    transform:translate3d(0,0,0)!important;
  }
}

/* =========================================================
   NutryBuddy - Cambio appuntamento paziente
   APP REALE + PREVIEW
========================================================= */
.patientRescheduleModal {
  width: min(980px, calc(100vw - 28px));
  max-height: min(86vh, 860px);
  overflow: auto;
}
.rescheduleCurrentBox {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  padding: 14px 16px;
  border-radius: 18px;
  background: #f3fbf6;
  border: 1px solid rgba(31, 154, 92, .16);
  margin: 12px 0;
}
.rescheduleCurrentBox span { color: var(--muted); font-weight: 800; }

.patientRescheduleToolbar {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 10px;
  margin: 12px 0 10px;
  padding: 12px;
  border-radius: 18px;
  background: linear-gradient(135deg, #f8fffb, #eefbf4);
  border: 1px solid rgba(31, 154, 92, .12);
}
.patientRescheduleDateJump {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 900;
  color: var(--muted);
  background: #fff;
  border: 1px solid rgba(15, 61, 44, .10);
  border-radius: 999px;
  padding: 6px 10px;
}
.patientRescheduleDateJump input {
  border: 0;
  outline: 0;
  font-family: inherit;
  font-weight: 900;
  color: var(--text);
  background: transparent;
}
.patientScheduleRange {
  grid-column: 1 / -1;
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 38px;
  border-radius: 16px;
  background: #ffffff;
  border: 1px dashed rgba(15, 61, 44, .16);
  color: var(--muted);
  font-weight: 950;
  font-size: 13px;
}

.patientRescheduleLegend {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 10px 0 14px;
  color: var(--muted);
  font-weight: 850;
  font-size: 13px;
}
.patientRescheduleLegend span { display: inline-flex; align-items: center; gap: 7px; }
.patientRescheduleLegend i {
  width: 12px;
  height: 12px;
  border-radius: 999px;
  display: inline-block;
}
.patientRescheduleLegend i.free { background: #17a663; }
.patientRescheduleLegend i.busy { background: #ef4444; }
.patientRescheduleLegend i.selected { background: #1d4ed8; }
.patientScheduleGrid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px;
}
.patientScheduleDay {
  border: 1px solid rgba(15, 61, 44, .10);
  border-radius: 18px;
  background: #ffffff;
  box-shadow: 0 10px 24px rgba(17, 66, 45, .06);
  padding: 12px;
}
.patientScheduleDay h4 {
  margin: 0 0 10px;
  font-size: 14px;
  text-transform: capitalize;
}
.patientScheduleSlots {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.patientSlot {
  border: 0;
  border-radius: 14px;
  padding: 9px 8px;
  min-height: 54px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 2px;
  font-family: inherit;
  cursor: pointer;
  transition: transform .16s ease, box-shadow .16s ease, opacity .16s ease;
}
.patientSlot b { font-size: 13px; line-height: 1; }
.patientSlot span { font-size: 11px; font-weight: 850; opacity: .86; }
.patientSlot.free {
  background: linear-gradient(135deg, #eafff1, #d9f7e6);
  color: #075f35;
  box-shadow: inset 0 0 0 1px rgba(20, 148, 86, .18);
}
.patientSlot.free:hover { transform: translateY(-1px); box-shadow: 0 10px 18px rgba(20, 148, 86, .16); }
.patientSlot.busy {
  background: linear-gradient(135deg, #fee2e2, #fecaca);
  color: #991b1b;
  cursor: not-allowed;
  opacity: .86;
}
.patientSlot.selected {
  background: linear-gradient(135deg, #dbeafe, #bfdbfe);
  color: #1e3a8a;
  box-shadow: 0 0 0 3px rgba(29, 78, 216, .18), 0 12px 22px rgba(29, 78, 216, .16);
}
.rescheduleSelectionBox {
  margin-top: 12px;
  padding: 12px 14px;
  border-radius: 16px;
  background: #f8fafc;
  border: 1px dashed rgba(15, 61, 44, .18);
  color: var(--muted);
  font-weight: 850;
}
.agendaChangePanel {
  margin: 14px 0 18px;
  padding: 16px;
  border-radius: 22px;
  background: linear-gradient(135deg, #fffef7, #f4fff7);
  border: 1px solid rgba(15, 61, 44, .10);
  box-shadow: 0 12px 28px rgba(17, 66, 45, .06);
}
.agendaChangePanel.empty {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  color: var(--muted);
}
.agendaChangePanel.empty b { color: var(--text); }
.agendaChangeHead {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  margin-bottom: 12px;
}
.agendaChangeHead b { font-size: 18px; }
.agendaChangeHead span {
  background: #ffedd5;
  color: #9a3412;
  border-radius: 999px;
  padding: 7px 10px;
  font-weight: 950;
  font-size: 12px;
}
.agendaChangeList { display: grid; gap: 10px; }
.agendaChangeCard {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 14px;
  align-items: center;
  background: #fff;
  border: 1px solid rgba(15, 61, 44, .08);
  border-radius: 18px;
  padding: 13px;
}
.agendaChangeCard span, .agendaChangeCard em {
  display: block;
  color: var(--muted);
  font-size: 13px;
  margin-top: 4px;
}
.agendaChangeCard em { font-style: normal; }
.agendaChangeActions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
@media (max-width: 900px) {
  .patientRescheduleModal { width: calc(100vw - 18px); max-height: 88vh; }
  .patientRescheduleToolbar { justify-content: stretch; }
  .patientRescheduleToolbar .btn, .patientRescheduleDateJump { flex: 1 1 100%; justify-content: center; }
  .patientScheduleGrid { grid-template-columns: 1fr; }
  .agendaChangeCard { grid-template-columns: 1fr; }
  .agendaChangeActions { justify-content: flex-start; }
  .rescheduleCurrentBox { align-items: flex-start; flex-direction: column; }
}

/* FIX PROSSIMI APPUNTAMENTI PAZIENTE - layout uniforme app reale + preview */
.patientAppointmentList .appointmentCard {
  align-items: center;
}
.patientAppointmentList .appointmentCard > div:nth-child(2) {
  min-width: 0;
}
.patientAppointmentList .appointmentActions {
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: flex-end;
}
.patientAppointmentList .appointmentActions .btn {
  white-space: nowrap;
  min-height: 42px;
}

@media (max-width: 900px) {
  .patientAppointmentList .appointmentCard {
    grid-template-columns: 44px minmax(0, 1fr);
    gap: 12px;
    align-items: center;
    padding: 14px;
  }
  .patientAppointmentList .appointmentIcon {
    width: 42px;
    height: 42px;
    align-self: center;
  }
  .patientAppointmentList .appointmentCard > div:nth-child(2) {
    min-width: 0;
  }
  .patientAppointmentList .appointmentCard b {
    font-size: clamp(14px, 3.4vw, 17px);
    line-height: 1.2;
  }
  .patientAppointmentList .agendaBadge {
    display: inline-flex;
    width: fit-content;
    margin-top: 5px;
  }
  .patientAppointmentList .appointmentActions {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    width: 100%;
    margin-top: 4px;
  }
  .patientAppointmentList .appointmentActions .btn {
    width: 100%;
    margin: 0;
  }
}

@media (max-width: 430px) {
  .patientAppointmentList .appointmentCard {
    grid-template-columns: 40px minmax(0, 1fr);
    padding: 12px;
  }
  .patientAppointmentList .appointmentIcon {
    width: 38px;
    height: 38px;
    border-radius: 14px;
    font-size: 16px;
  }
  .patientAppointmentList .appointmentActions {
    grid-template-columns: 1fr;
  }
}

/* Fix sincronizzazione appuntamenti: righe agenda visibili anche nella scheda paziente */
.agendaOnlyRow td {
  background: rgba(226, 247, 235, 0.42);
}
.agendaVisitMessage {
  border-color: rgba(47, 158, 104, 0.28) !important;
  background: linear-gradient(135deg, rgba(234, 250, 241, 0.92), rgba(255, 255, 255, 0.96)) !important;
}

/* Reschedule day-only + 15 minute slots */
.patientRescheduleDayOnlyToolbar {
  align-items: end;
  grid-template-columns: auto minmax(180px, 260px) auto;
}
.patientScheduleSingleDay {
  margin: 14px 0 10px;
  text-transform: capitalize;
}
.patientScheduleDayOnly .patientScheduleSlots {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(104px, 1fr));
  gap: 10px;
}
.patientSlot.current,
.patientSlot:disabled.current {
  background: #dbeafe !important;
  border-color: #60a5fa !important;
  color: #1d4ed8 !important;
  opacity: 1 !important;
}
.patientRescheduleLegend i.current {
  background: #3b82f6 !important;
}
@media (max-width: 900px) {
  .patientRescheduleDayOnlyToolbar {
    grid-template-columns: 1fr;
  }
  .patientScheduleDayOnly .patientScheduleSlots {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 520px) {
  .patientScheduleDayOnly .patientScheduleSlots {
    grid-template-columns: 1fr;
  }
}

/* NutryBuddy - stato richieste cambio data paziente */
.appointmentChangeStatusPanel{margin-top:18px;padding:18px;border:1px solid rgba(17,185,129,.22);border-radius:22px;background:linear-gradient(135deg,#f8fffb,#ffffff);box-shadow:0 12px 32px rgba(10,64,42,.06)}
.appointmentChangeStatusPanel h3{margin:0 0 12px;font-size:20px;color:#092f23}
.appointmentChangeStatusList{display:grid;gap:12px}
.appointmentChangeStatusCard{border:1px solid #d8eee4;border-radius:18px;padding:14px 16px;background:#fff;color:#103b2f}
.appointmentChangeStatusCard.pending{background:#fffaf0;border-color:#f5ce8a}
.appointmentChangeStatusCard.approved{background:#eefdf5;border-color:#9ee3bd}
.appointmentChangeStatusCard.rejected{background:#fff1f2;border-color:#f3a8b1}
.appointmentChangeStatusTop{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.appointmentChangeStatusTop b{font-size:15px}
.appointmentChangeStatusTop span{font-size:13px;color:#577568;font-weight:700}
.appointmentChangeStatusCard p{margin:0 0 6px;color:#31574a;font-size:13px}
.appointmentChangeStatusCard small{display:block;color:#335f52;font-size:12px;line-height:1.4}
@media (max-width: 820px){.appointmentChangeStatusPanel{padding:14px;border-radius:18px}.appointmentChangeStatusTop{align-items:flex-start;flex-direction:column;gap:4px}.appointmentChangeStatusPanel h3{font-size:18px}}

/* NutryBuddy - cambio appuntamento: slot compatti AM/PM + modale rifiuto custom */
.patientScheduleAmPm{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
  padding:0;
  border:0;
  box-shadow:none;
  background:transparent;
}
.patientSchedulePart{
  border:1px solid rgba(15,61,44,.10);
  border-radius:18px;
  background:#fff;
  padding:12px;
  box-shadow:0 10px 24px rgba(17,66,45,.06);
}
.patientSchedulePartHead{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:10px;
  color:var(--text);
}
.patientSchedulePartHead b{font-size:15px;line-height:1.1}
.patientSchedulePartHead span{font-size:11px;font-weight:900;color:var(--muted);white-space:nowrap}
.patientSchedulePart .patientScheduleSlots{
  grid-template-columns:repeat(auto-fit,minmax(92px,1fr));
}
.rejectAppointmentChangeModal{width:min(620px,calc(100vw - 28px));}
.rejectRequestSummary{align-items:flex-start;flex-direction:column;}
.rejectAppointmentChangeModal .textarea{min-height:120px;}
@media(max-width:900px){
  .patientScheduleAmPm{grid-template-columns:1fr;}
  .patientSchedulePart .patientScheduleSlots{grid-template-columns:repeat(3,minmax(0,1fr));}
}
@media(max-width:560px){
  .patientSchedulePart .patientScheduleSlots{grid-template-columns:repeat(2,minmax(0,1fr));}
  .patientSchedulePartHead{align-items:flex-start;flex-direction:column;}
}


/* NutryBuddy fix AM/PM cambio data - layout compatto e leggibile */
.patientScheduleAmPm{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(280px,1fr)) !important;
  gap:16px !important;
  align-items:start !important;
}
.patientSchedulePart{
  min-width:0 !important;
  overflow:hidden !important;
}
.patientSchedulePartHead{
  display:flex !important;
  align-items:center !important;
  justify-content:flex-start !important;
  gap:8px !important;
  margin-bottom:12px !important;
  padding:8px 10px !important;
  border-radius:14px !important;
  background:rgba(17,185,129,.08) !important;
}
.patientSchedulePartHead b{
  display:flex !important;
  align-items:center !important;
  gap:8px !important;
  flex-wrap:wrap !important;
  font-size:15px !important;
  line-height:1.15 !important;
}
.patientSchedulePartHead b span{
  display:inline-flex !important;
  font-size:12px !important;
  font-weight:900 !important;
  color:#55796c !important;
  white-space:nowrap !important;
}
.patientSchedulePart .patientScheduleSlots{
  display:grid !important;
  grid-template-columns:repeat(auto-fill,minmax(104px,1fr)) !important;
  gap:8px !important;
}
.patientSchedulePart .patientSlot{
  min-height:58px !important;
  padding:9px 10px !important;
  border-radius:13px !important;
}
@media(max-width:900px){
  .patientScheduleAmPm{grid-template-columns:1fr !important;}
  .patientSchedulePart .patientScheduleSlots{grid-template-columns:repeat(auto-fill,minmax(96px,1fr)) !important;}
}
@media(max-width:560px){
  .patientSchedulePart{padding:10px !important;}
  .patientSchedulePartHead b{font-size:14px !important;}
  .patientSchedulePartHead b span{font-size:11px !important;}
  .patientSchedulePart .patientScheduleSlots{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
}


/* Slot cambio appuntamento: formato compatto "10:00 · Libero" */
.patientSchedulePart .patientSlot,
.patientScheduleDayOnly .patientSlot,
.patientSlot {
  min-height: 44px !important;
  padding: 10px 12px !important;
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 0 !important;
  text-align: left !important;
  white-space: nowrap !important;
}
.patientSlot b {
  font-size: 13px !important;
  line-height: 1.1 !important;
  font-weight: 900 !important;
}
.patientSlot span {
  display: none !important;
}
.patientSchedulePart .patientScheduleSlots {
  grid-template-columns: repeat(auto-fill, minmax(128px, 1fr)) !important;
}
@media(max-width:560px){
  .patientSchedulePart .patientScheduleSlots{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
  .patientSlot b{font-size:12px !important;}
}


/* =========================================================
   NutryBuddy - Agenda choice modal polish + duplicate request guard UI
   ========================================================= */
.agendaAddModal:not(.patientRescheduleModal):not(.calendarEventModal):not(.rejectAppointmentChangeModal) {
    max-width: 760px;
}

.agendaAddModal:not(.patientRescheduleModal):not(.calendarEventModal):not(.rejectAppointmentChangeModal) .agendaChoiceGrid {
    grid-template-columns: repeat(2, minmax(220px, 1fr));
    max-width: 560px;
    margin: 26px auto 0;
    justify-content: center;
}

.agendaAddModal:not(.patientRescheduleModal):not(.calendarEventModal):not(.rejectAppointmentChangeModal) .agendaChoiceCard {
    min-height: 132px;
    border-radius: 22px;
    background: linear-gradient(180deg, #ffffff 0%, #f9fffc 100%);
    border-color: rgba(27, 185, 129, .18);
}

.agendaAddModal:not(.patientRescheduleModal):not(.calendarEventModal):not(.rejectAppointmentChangeModal) .agendaChoiceCard b {
    font-size: 15px;
    line-height: 1.25;
}

@media (max-width: 720px) {
    .agendaAddModal:not(.patientRescheduleModal):not(.calendarEventModal):not(.rejectAppointmentChangeModal) .agendaChoiceGrid {
        grid-template-columns: 1fr;
        max-width: 100%;
    }
}

/* =========================================================
   NutryBuddy - Badge notifica Agenda richieste pending
   Mostra un pallino/contatore quando esistono richieste cambio data in attesa.
========================================================= */
.nbAgendaBadge {
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 8px;
  background: #ef4444;
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  line-height: 1;
  box-shadow: 0 6px 16px rgba(239, 68, 68, .28);
}

.nbAgendaBadge.hidden,
.nbAgendaBadge.is-hidden {
  display: none !important;
}

.nbMobileDrawerNav .nbAgendaBadge {
  margin-left: auto;
}

#agendaNavBtn {
  position: relative;
}

/* NutryBuddy - blocco slot passati + toast conferma */
.patientSlot.past,
.patientSlot:disabled.past{
  background:#f1f5f9 !important;
  border-color:#cbd5e1 !important;
  color:#64748b !important;
  opacity:1 !important;
  cursor:not-allowed !important;
}
.patientSlot.past b{color:#64748b !important;}
.patientRescheduleLegend i.past{background:#94a3b8 !important;}
#toast.show{
  min-width:min(420px,calc(100vw - 32px));
  text-align:center;
}

/* Patient shared diet visibility + professional PDF logo */
.dietPdfLogo{
  background:#fff!important;
  border:1px solid rgba(0,128,82,.18)!important;
  box-shadow:0 8px 22px rgba(0,0,0,.06)!important;
  overflow:hidden!important;
}
.dietPdfLogo img{
  width:100%;
  height:100%;
  object-fit:contain;
  display:block;
  padding:6px;
  box-sizing:border-box;
}
.patientSharedDietPanel{
  margin-top:16px;
  border:1px solid rgba(0,128,82,.18);
  border-radius:20px;
  background:linear-gradient(180deg,#ffffff,#f6fff9);
  padding:18px;
}
.patientSharedDietPanel h2{
  margin:0 0 6px;
  color:#062d24;
  font-size:24px;
}
.patientSharedDietPanel p{
  margin:0 0 14px;
  color:#516a63;
  line-height:1.45;
}
.patientSharedDietList{
  display:flex;
  flex-direction:column;
  gap:12px;
}
.patientSharedDietCard{
  display:grid;
  grid-template-columns:52px minmax(0,1fr) auto;
  gap:14px;
  align-items:center;
  border:1px solid rgba(0,128,82,.18);
  border-radius:18px;
  background:#fff;
  padding:14px;
  box-shadow:0 10px 22px rgba(0,0,0,.035);
}
.patientSharedDietLogo{
  width:52px;
  height:52px;
  border-radius:16px;
  background:#eefaf4;
  display:grid;
  place-items:center;
  overflow:hidden;
  border:1px solid rgba(0,128,82,.12);
}
.patientSharedDietLogo img{
  width:100%;
  height:100%;
  object-fit:contain;
  padding:7px;
  box-sizing:border-box;
}
.patientSharedDietInfo{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:4px;
}
.patientSharedDietInfo b{
  color:#062d24;
  font-size:17px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.patientSharedDietInfo span{
  color:#536b65;
  font-size:13px;
}
.patientSharedDietInfo em{
  color:#007a4e;
  font-style:normal;
  font-weight:900;
  font-size:12px;
}
@media(max-width:760px){
  .patientSharedDietCard{grid-template-columns:1fr;align-items:start;}
  .patientSharedDietLogo{display:none;}
  .patientSharedDietCard .btn{width:100%;}
}

/* =========================================================
   Diet delete confirmation modal
   ---------------------------------------------------------
   Modal coerente con le altre conferme distruttive dell'app.
   Richiede la scritta ELIMINA prima di cancellare la dieta
   anche dalla tabella diets.
========================================================= */
.dietDeleteModalOverlay{
  position:fixed;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  padding:22px;
  background:rgba(11,28,22,.46);
  backdrop-filter:blur(8px);
  z-index:9999;
}
.dietDeleteModalOverlay.open{display:flex;}
.dietDeleteModal{
  position:relative;
  width:min(520px,100%);
  background:#fff;
  border:1px solid rgba(220,38,38,.18);
  border-radius:24px;
  box-shadow:0 28px 80px rgba(15,23,42,.28);
  padding:26px;
  color:#17211d;
}
.dietDeleteClose{
  position:absolute;
  top:14px;
  right:14px;
  width:36px;
  height:36px;
  border:0;
  border-radius:999px;
  background:#f3f4f6;
  color:#334155;
  font-size:22px;
  cursor:pointer;
}
.dietDeleteIcon{
  width:44px;
  height:44px;
  border-radius:14px;
  display:grid;
  place-items:center;
  background:#fff1f2;
  color:#b91c1c;
  font-weight:900;
  font-size:24px;
  margin-bottom:14px;
}
.dietDeleteModal h3{margin:0 0 8px;font-size:22px;color:#111827;}
.dietDeleteModal p{margin:0 0 14px;color:#475569;line-height:1.5;}
.dietDeleteList{
  margin:0 0 16px;
  padding:12px 14px 12px 30px;
  border-radius:16px;
  background:#fff7ed;
  border:1px solid rgba(249,115,22,.18);
  color:#7c2d12;
  font-size:13px;
  line-height:1.55;
}
.dietDeleteLabel{display:block;margin:0 0 8px;font-size:13px;font-weight:800;color:#334155;}
.dietDeleteInput{
  width:100%;
  border:1px solid rgba(220,38,38,.22);
  border-radius:14px;
  padding:13px 14px;
  font-weight:900;
  letter-spacing:.06em;
  color:#111827;
  background:#fff;
  outline:none;
}
.dietDeleteInput:focus{border-color:#dc2626;box-shadow:0 0 0 4px rgba(220,38,38,.1);}
.dietDeleteActions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;flex-wrap:wrap;}
.dietDeleteActions .btn[disabled]{opacity:.45;cursor:not-allowed;}
@media(max-width:680px){
  .dietDeleteModal{padding:22px;border-radius:20px;}
  .dietDeleteActions{display:grid;grid-template-columns:1fr;}
  .dietDeleteActions .btn{width:100%;}
}

/* Area Andamento paziente */
.patientProgressHero{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  padding:24px;
  border:1px solid rgba(44,130,82,.16);
  border-radius:28px;
  background:linear-gradient(135deg,#f2fff7,#ffffff);
  box-shadow:0 18px 48px rgba(36,103,72,.10);
  margin:0 0 18px;
}
.patientProgressHero h2{margin:0 0 8px;color:#163322;font-size:30px}
.patientProgressHero p{margin:0;color:#5f7a68;max-width:720px;line-height:1.55}
.patientProgressContent{display:grid;gap:18px}
.patientProgressKpis{margin:0}
.patientProgressGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.patientProgressGrid .fullSectionCard,.patientProgressHistory{border-radius:24px;background:#fff;box-shadow:0 16px 40px rgba(33,92,62,.08)}
.patientProgressGrid .chart{min-height:260px}
@media(max-width:900px){
  .patientProgressHero{flex-direction:column;padding:18px;border-radius:22px}
  .patientProgressHero h2{font-size:24px}
  .patientProgressGrid{grid-template-columns:1fr}
  .patientProgressGrid .chart{min-height:220px}
}

/* NutryBuddy - Patient progress mobile polish
   Migliora la pagina Andamento nella vista paziente su telefono/tablet stretti:
   grafici più leggibili, legenda non tagliata e card misure in colonna. */
@media (max-width: 680px) {
  .patientProgressHero {
    padding: 16px !important;
    border-radius: 20px !important;
    margin-bottom: 14px !important;
  }

  .patientProgressHero h2 {
    font-size: 22px !important;
    line-height: 1.12 !important;
  }

  .patientProgressHero p {
    font-size: 13px !important;
    line-height: 1.45 !important;
  }

  .patientProgressKpis {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 10px !important;
  }

  .patientProgressKpis .kpi {
    min-height: auto !important;
    padding: 14px 12px !important;
    border-radius: 18px !important;
  }

  .patientProgressKpis .kpi b {
    font-size: 18px !important;
    line-height: 1.1 !important;
  }

  .patientProgressKpis .kpi span {
    font-size: 11px !important;
    line-height: 1.25 !important;
  }

  .patientProgressGrid {
    grid-template-columns: 1fr !important;
    gap: 14px !important;
  }

  .patientProgressGrid .fullSectionCard,
  .patientProgressHistory {
    padding: 16px !important;
    border-radius: 20px !important;
    overflow: hidden !important;
  }

  .patientProgressGrid .fullSectionCard h2,
  .patientProgressHistory h2 {
    font-size: 19px !important;
    line-height: 1.15 !important;
    margin-bottom: 12px !important;
  }

  .patientProgressGrid .chart {
    width: 100% !important;
    min-height: 0 !important;
    height: auto !important;
    padding: 4px 0 0 !important;
    overflow: visible !important;
  }

  .patientProgressGrid .weightSvgWrap {
    width: 100% !important;
    min-height: 150px !important;
    height: auto !important;
    overflow: hidden !important;
    border-radius: 16px !important;
  }

  .patientProgressGrid .weightSvgWrap svg,
  .patientProgressGrid .chart svg {
    width: 100% !important;
    height: auto !important;
    max-height: 190px !important;
    display: block !important;
  }

  .patientProgressGrid .weightFooter {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 10px !important;
    margin-top: 12px !important;
  }

  .patientProgressGrid .weightFooterItem {
    width: 100% !important;
    min-width: 0 !important;
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
    padding: 12px 14px !important;
    border-radius: 16px !important;
    border: 1px solid rgba(44,130,82,.14) !important;
    background: #fff !important;
  }

  .patientProgressGrid .weightFooterIcon {
    width: 38px !important;
    height: 38px !important;
    min-width: 38px !important;
    border-radius: 14px !important;
    font-size: 15px !important;
  }

  .patientProgressGrid .weightFooterItem b {
    font-size: 15px !important;
    line-height: 1.15 !important;
    white-space: normal !important;
  }

  .patientProgressGrid .weightFooterItem span {
    font-size: 12px !important;
    line-height: 1.3 !important;
    white-space: normal !important;
  }

  .patientProgressHistory .tableWrap,
  .patientProgressHistory table {
    max-width: 100% !important;
    overflow-x: auto !important;
  }
}

@media (max-width: 420px) {
  .patientProgressKpis {
    grid-template-columns: 1fr !important;
  }

  .patientProgressGrid .weightSvgWrap svg,
  .patientProgressGrid .chart svg {
    max-height: 170px !important;
  }
}
