:root {
  --red: #d71920;
  --red-dark: #a90f15;
  --black: #080808;
  --paper: #f4f5f7;
  --line: #dfe2e7;
  --muted: #62666d;
  --header-height: 84px;
}

* { box-sizing: border-box; }

html {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  -webkit-text-size-adjust: 100%;
}

body {
  width: 100%;
  min-width: 0;
  margin: 0;
  overflow-x: hidden;
  background: var(--paper);
  color: #171717;
  font: 16px/1.45 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

/* v143 · scorrimento mobile nativo */
html,body{height:auto!important;min-height:100%!important;overflow-y:auto!important;overscroll-behavior-y:auto!important;touch-action:auto!important}
.shell{height:auto!important;min-height:0!important;overflow:visible!important;touch-action:auto!important}
.shell>*{touch-action:auto!important}
#photo-crop-canvas{touch-action:none!important}


img, canvas, video, svg { max-width: 100%; }

.site-header {
  position: relative;
  z-index: 1000;
  width: 100%;
  min-height: var(--header-height);
  padding: 0;
  background: var(--black);
  color: #fff;
}

.header-inner {
  width: min(100% - 32px, 1180px);
  min-height: var(--header-height);
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 24px;
}

.brand {
  min-width: 245px;
  display: flex;
  align-items: center;
  gap: 12px;
  color: #fff;
  text-decoration: none;
}

.brand img {
  width: 54px;
  height: 54px;
  flex: 0 0 54px;
  object-fit: contain;
}

.brand-copy {
  min-width: 0;
  display: grid;
  gap: 1px;
  line-height: 1.08;
  letter-spacing: .055em;
}

.brand-copy strong {
  color: #fff;
  font-size: 15px;
  font-weight: 900;
  white-space: nowrap;
}

.brand-copy small {
  color: #fff;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .095em;
  white-space: nowrap;
}

#main-navigation {
  min-width: 0;
  margin-left: auto;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 4px;
}

#main-navigation a {
  min-height: 44px;
  padding: 11px 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  color: #fff;
  text-decoration: none;
  font-size: 14px;
  line-height: 1.15;
  white-space: nowrap;
}

#main-navigation a:hover,
#main-navigation a:focus-visible { background: #ffffff18; }

#main-navigation .nav-icon {
  position: relative;
  min-width: 44px;
  padding-inline: 8px;
  font-size: 22px;
}

#main-navigation .nav-icon b {
  position: absolute;
  top: 1px;
  right: 0;
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  display: grid;
  place-items: center;
  border-radius: 99px;
  background: var(--red);
  color: #fff;
  font-size: 11px;
}

.nav-toggle {
  display: none;
  width: auto;
  min-height: 44px;
  margin-left: auto;
  padding: 9px 12px;
  align-items: center;
  gap: 8px;
  border: 1px solid #ffffff40;
  background: #171717;
  color: #fff;
  font-size: 13px;
}

.nav-toggle-icon,
.nav-toggle-icon::before,
.nav-toggle-icon::after {
  width: 22px;
  height: 2px;
  display: block;
  border-radius: 2px;
  background: currentColor;
  transition: transform .18s ease, opacity .18s ease;
}

.nav-toggle-icon { position: relative; }
.nav-toggle-icon::before,
.nav-toggle-icon::after { position: absolute; left: 0; content: ""; }
.nav-toggle-icon::before { top: -7px; }
.nav-toggle-icon::after { top: 7px; }
.nav-toggle[aria-expanded="true"] .nav-toggle-icon { background: transparent; }
.nav-toggle[aria-expanded="true"] .nav-toggle-icon::before { top: 0; transform: rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle-icon::after { top: 0; transform: rotate(-45deg); }

.shell {
  width: min(100% - 36px, 1180px);
  min-width: 0;
  margin: 0 auto;
  padding: clamp(22px, 4vw, 42px) 0;
}

h1 {
  margin: 0 0 20px;
  font-size: clamp(34px, 5vw, 52px);
  line-height: 1.05;
  overflow-wrap: anywhere;
}

h2 { line-height: 1.18; }
p { overflow-wrap: anywhere; }

.card,
.stats article {
  min-width: 0;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: clamp(18px, 2.4vw, 24px);
  box-shadow: 0 5px 22px #0000000a;
}

.card + .card { margin-top: 18px; }

.grid {
  min-width: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

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

.stats {
  min-width: 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin: 20px 0;
}

.stats b { display: block; font-size: clamp(30px, 4vw, 42px); line-height: 1.1; }
.stats span, small { display: block; color: var(--muted); }

label { min-width: 0; display: grid; gap: 7px; font-weight: 650; }

input,
select,
textarea,
button {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  font: inherit;
  border: 1px solid #c8ccd2;
  border-radius: 9px;
  padding: 12px;
  background: #fff;
}

input[type="file"] { overflow: hidden; }

button,
.button {
  width: auto;
  min-height: 44px;
  padding: 12px 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 9px;
  background: var(--red);
  color: #fff;
  font-weight: 750;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
}

button:hover, .button:hover { background: var(--red-dark); }
.secondary { background: #222; }
.secondary:hover { background: #000; }

.auth { width: min(100%, 430px); margin: 8vh auto; padding: 20px; text-align: center; }
.auth form { display: grid; gap: 16px; text-align: left; }
.auth-logo { display: flex; justify-content: center; }
.auth-logo img { width: 110px; height: 110px; object-fit: contain; }

/* Consensi: checkbox, testo e collegamento restano un unico blocco leggibile. */
.human-check,
.privacy-check {
  width: 100%;
  padding: 12px 14px;
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  gap: 11px;
  align-items: start;
  border: 1px solid #d9dde3;
  border-radius: 10px;
  background: #f8f9fb;
  font-weight: 600;
  line-height: 1.42;
  cursor: pointer;
}

.human-check input[type="checkbox"],
.privacy-check input[type="checkbox"] {
  width: 20px;
  height: 20px;
  margin: 1px 0 0;
  padding: 0;
  accent-color: var(--red);
}

.check-copy {
  min-width: 0;
  display: block;
  overflow-wrap: normal;
  word-break: normal;
}

.privacy-check a {
  display: inline;
  color: #1746c9;
  font-weight: 750;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}

.human-check:focus-within,
.privacy-check:focus-within {
  border-color: var(--red);
  box-shadow: 0 0 0 3px #d719201a;
}

.alert,
.scan-result { margin: 12px 0; padding: 14px; border-radius: 9px; }
.ok { background: #d9f8e6; color: #075b2a; }
.bad { background: #ffe1e1; color: #861111; }

.table {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  border-radius: 12px;
  background: #fff;
  -webkit-overflow-scrolling: touch;
}

table { width: 100%; border-collapse: collapse; }
th, td { padding: 13px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }

.inline { min-width: 0; display: flex; flex-wrap: wrap; gap: 7px; }
.pill { padding: 5px 9px; border-radius: 99px; background: #eee; }

.privacy-footer { padding: 28px 0 8px; text-align: center; }

.kiosk {
  width: min(100%, 900px);
  min-height: calc(100vh - 84px);
  min-height: calc(100dvh - 84px);
  margin: auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 16px;
  text-align: center;
}

.kiosk > * { width: 100%; min-width: 0; }
.kiosk form { width: 100%; min-width: 0; display: grid; gap: 12px; }
.kiosk input { font-size: 20px; }
.kiosk-heading { display: flex; align-items: center; justify-content: center; gap: 16px; text-align: left; }
.kiosk-heading img { width: 84px; height: 84px; flex: 0 0 84px; object-fit: contain; }
.kiosk-heading h1 { margin: 0; font-size: clamp(30px, 5vw, 48px); }
.kiosk-heading p { margin: 5px 0 0; }
.tablet-home-actions { display: grid; gap: 14px; }
.tablet-home-actions .tablet-action { width: 100%; min-height: 62px; font-size: 18px; }
.tablet-home-actions .presence { background: #166534; }
.tablet-home-actions .booking { background: #111; }
.qr-reader { width: min(100%, 620px); margin: 0 auto; overflow: hidden; border-radius: 14px; }
.qr-reader video { width: 100% !important; height: auto !important; }
#scanner-area {
  width: 100%;
  min-height: min(720px, calc(100dvh - 32px));
  scroll-margin-block: 16px;
  display: grid;
  align-content: center;
  gap: 14px;
}
#scanner-area[hidden] { display: none !important; }
#scanner-area > * { min-width: 0; }
.kiosk-confirm { display: grid; grid-template-columns: minmax(120px, 200px) minmax(0, 1fr); gap: 24px; text-align: left; }
.kiosk-confirm > img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 12px; }
.kiosk-confirm form { grid-column: 1 / -1; }

.device-key strong {
  display: block;
  margin: 12px 0;
  padding: 14px;
  overflow-wrap: anywhere;
  border-radius: 9px;
  background: #111;
  color: #fff;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}

@media (max-width: 1080px) {
  :root { --header-height: 74px; }

  .header-inner { width: min(100% - 24px, 1180px); min-height: var(--header-height); }
  .brand { min-width: 0; }
  .brand img { width: 48px; height: 48px; flex-basis: 48px; }

  .nav-toggle { display: inline-flex; }

  #main-navigation {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    max-height: calc(100dvh - var(--header-height));
    padding: 10px 12px 18px;
    display: none;
    overflow-y: auto;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
    border-top: 1px solid #ffffff28;
    background: #090909;
    box-shadow: 0 12px 30px #0006;
  }

  #main-navigation.is-open { display: grid; }
  #main-navigation a { width: 100%; justify-content: flex-start; padding: 13px 14px; background: #ffffff0d; }
  #main-navigation .nav-icon { justify-content: center; }

  .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 700px) {
  .header-inner { width: calc(100% - 20px); gap: 10px; }
  .brand { gap: 8px; }
  .brand img { width: 44px; height: 44px; flex-basis: 44px; }
  .brand-copy strong { font-size: 13px; }
  .brand-copy small { font-size: 8px; letter-spacing: .065em; }

  .shell { width: calc(100% - 24px); padding: 24px 0; }
  h1 { font-size: clamp(32px, 11vw, 44px); }
  .grid { grid-template-columns: 1fr; }
  .full { grid-column: auto; }
  .card, .stats article { padding: 18px; }

  .table table { min-width: 680px; }
  .athlete-health-summary .table table { min-width: 580px; }

  .kiosk { min-height: calc(100dvh - 48px); justify-content: flex-start; padding-top: 8px; }
  .kiosk-heading { align-items: flex-start; }
  .kiosk-heading img { width: 64px; height: 64px; flex-basis: 64px; }
  .kiosk-confirm { grid-template-columns: 90px minmax(0, 1fr); gap: 16px; }
}

@media (max-width: 480px) {
  .brand-copy strong { font-size: 12px; }
  .brand-copy small { max-width: 150px; white-space: normal; }
  .nav-toggle { padding: 9px 10px; }
  .nav-toggle > span:last-child { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  #main-navigation { grid-template-columns: 1fr; }

  .shell { width: calc(100% - 20px); padding: 20px 0; }
  .stats { grid-template-columns: 1fr; gap: 12px; }
  .stats article { min-height: 116px; display: flex; flex-direction: column; justify-content: center; }

  button, .button { width: 100%; }
  .card p .button { margin: 4px 0; }
  .inline > * { flex: 1 1 100%; }

  .kiosk-heading { display: grid; justify-items: center; text-align: center; }
  .kiosk-heading h1 { font-size: 31px; }
  .kiosk-confirm { grid-template-columns: 1fr; text-align: center; }
  .kiosk-confirm > img { width: min(180px, 60vw); margin: auto; }
  .kiosk-confirm form { grid-column: auto; }

  .auth { margin: 20px auto; padding: 10px; }
  .human-check, .privacy-check { padding: 12px; gap: 10px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; }
}

/* Presenze manuali e modifica scadenza pacchetto. */
.manual-attendance-form .grid{align-items:end}
.manual-mode{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 18px}
.manual-mode label{display:flex;align-items:center;gap:8px;margin:0;padding:12px 16px;border:1px solid #d8dde5;border-radius:10px;background:#f7f8fa;cursor:pointer;font-weight:800}
.manual-mode input{width:20px;height:20px;margin:0;accent-color:#d71920}
.custom-lesson-fields{margin:18px 0;padding:16px;border:1px solid #d8dde5;border-radius:12px;background:#f7f8fa}
.custom-lesson-fields legend{padding:0 8px;font-weight:900}
.custom-lesson-fields[hidden],#scheduled-lesson-field[hidden]{display:none!important}
.manual-athlete-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:55vh;overflow:auto;margin:12px 0 18px;padding:8px;border:1px solid #d8dde5;border-radius:12px;background:#f7f8fa}
.manual-athlete-list label{display:flex;align-items:center;gap:10px;min-width:0;margin:0;padding:12px;border:1px solid #d8dde5;border-radius:9px;background:#fff;cursor:pointer}
.manual-athlete-list label:hover{border-color:#d71920}
.manual-athlete-list input{flex:0 0 auto;width:20px;height:20px}
.manual-athlete-list span{display:grid;min-width:0}
.manual-athlete-list small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.subscription-expiry-form{display:grid;grid-template-columns:minmax(135px,1fr) auto;gap:6px;align-items:center;min-width:220px}
.subscription-expiry-form input,.subscription-expiry-form button{min-height:40px;margin:0;padding:7px 9px}
.subscription-expiry-form button{width:auto}
@media(max-width:980px){.manual-athlete-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.manual-mode{display:grid;grid-template-columns:1fr}.manual-athlete-list{grid-template-columns:1fr}.custom-lesson-fields .grid{grid-template-columns:1fr}.subscription-expiry-form{grid-template-columns:1fr}.subscription-expiry-form button{width:100%}}
/* Menu amministratore v79: campane uniformi per prenotazioni e accessi. */
body>header nav a.booking-alert{font-size:21px!important;overflow:visible!important;background:transparent!important;color:#fff!important}
body>header nav a.booking-alert svg{display:block;width:24px;height:24px;fill:#2388ff;filter:drop-shadow(0 1px 1px rgba(0,0,0,.35))}
body>header nav a.booking-alert b,body>header nav a.request-bell b{right:-7px;top:-7px;min-width:19px;height:19px;padding:0 5px;font-size:11px;line-height:19px}
@media(max-width:1250px){body>header nav a.booking-alert{width:100%!important;height:auto!important;min-height:37px!important;box-sizing:border-box!important;border:1px solid #333!important;border-radius:7px!important;background:#171717!important;padding:7px 5px!important}}
@media(max-width:700px){body>header nav a.booking-alert svg{width:23px;height:23px}}

/* Password e gestione richieste duplicate v81. */
.password-toggle{width:auto!important;min-height:36px!important;margin:7px 0 0!important;padding:7px 12px!important;border:1px solid #b8bec8!important;border-radius:8px!important;background:#fff!important;color:#171717!important;font-size:.86rem!important;font-weight:800!important;box-shadow:none!important}
.password-toggle:hover,.password-toggle:focus-visible{border-color:#d71920!important;color:#a30f15!important;background:#fff7f7!important}
.decision-actions .close-request{background:#6b7280!important;color:#fff!important;border-color:#6b7280!important}
.decision-actions .close-request:hover,.decision-actions .close-request:focus-visible{background:#4b5563!important;border-color:#4b5563!important}
@media(max-width:480px){.password-toggle{width:100%!important}.decision-actions .close-request{width:100%!important}}

/* Elenco atleti v86: nessuna barra orizzontale su desktop, tablet o telefono. */
.shell:has(#athletes-table){
  width:min(1540px,calc(100% - 32px));
}
.athletes-table-wrap{
  overflow:visible;
}
#athletes-table{
  width:100%;
  min-width:0;
  table-layout:fixed;
}
#athletes-table th,
#athletes-table td{
  min-width:0;
  padding:12px 9px;
  overflow-wrap:anywhere;
}
#athletes-table th:nth-child(1){width:21%}
#athletes-table th:nth-child(2){width:16%}
#athletes-table th:nth-child(3){width:10%}
#athletes-table th:nth-child(4){width:10%}
#athletes-table th:nth-child(5){width:14%}
#athletes-table th:nth-child(6){width:8%}
#athletes-table th:nth-child(7){width:11%}
#athletes-table th:nth-child(8){width:10%}
#athletes-table input,
#athletes-table select,
#athletes-table button,
#athletes-table .button{
  max-width:100%;
}
#athletes-table .subscription-expiry-form{
  min-width:0;
  grid-template-columns:1fr;
}
#athletes-table .subscription-expiry-form button{
  width:100%;
}

@media(max-width:1400px){
  .shell:has(#athletes-table){width:min(1180px,calc(100% - 28px))}
  .athletes-table-wrap{background:transparent;border-radius:0}
  .athletes-table-wrap #athletes-table{min-width:0!important;table-layout:auto}
  #athletes-table thead{display:none}
  #athletes-table,
  #athletes-table tbody{display:block;width:100%}
  #athletes-table tbody{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
  #athletes-table tr{
    display:block;
    min-width:0;
    padding:14px 16px;
    border:1px solid var(--line);
    border-radius:14px;
    background:#fff;
    box-shadow:0 8px 22px rgba(15,23,42,.06);
  }
  #athletes-table tr[hidden]{display:none!important}
  #athletes-table td{
    display:grid;
    grid-template-columns:minmax(118px,.42fr) minmax(0,1fr);
    align-items:start;
    gap:12px;
    width:100%;
    padding:10px 0;
    border-bottom:1px solid var(--line);
  }
  #athletes-table td:last-child{border-bottom:0}
  #athletes-table td::before{
    content:attr(data-label);
    color:#4b5563;
    font-size:.78rem;
    font-weight:900;
    letter-spacing:.035em;
    text-transform:uppercase;
  }
  #athletes-table td>*{min-width:0}
  #athletes-table .subscription-expiry-form{grid-template-columns:minmax(0,1fr) auto}
  #athletes-table .subscription-expiry-form button{width:auto}
  #athletes-table td[data-label="Azioni"] .inline{display:grid;grid-template-columns:minmax(0,1fr) auto}
  #athletes-table td[data-label="Azioni"] .inline button{width:auto}
}

@media(max-width:760px){
  .shell:has(#athletes-table){width:calc(100% - 20px)}
  #athletes-table tbody{grid-template-columns:1fr;gap:12px}
  #athletes-table tr{padding:12px 14px}
  .athletes-search{display:grid;gap:10px}
  .athletes-search strong{justify-self:start}
}

@media(max-width:480px){
  #athletes-table td{display:block;padding:10px 0}
  #athletes-table td::before{display:block;margin-bottom:6px}
  #athletes-table .subscription-expiry-form,
  #athletes-table td[data-label="Azioni"] .inline{grid-template-columns:1fr}
  #athletes-table .subscription-expiry-form button,
  #athletes-table td[data-label="Azioni"] .inline button{width:100%}
}

.passkey-login,.passkey-setup{border-top:5px solid #111;text-align:left}
.passkey-button{width:100%;min-height:52px;background:#111;color:#fff;font-weight:900;letter-spacing:.02em}
.passkey-button:not(:disabled):hover{background:#b91c1c}
.passkey-button:disabled{opacity:.65;cursor:wait}
.passkey-status{margin:12px 0 0;color:#4b5563;font-size:.92rem;line-height:1.45}

.google-wallet-card{border-top:5px solid #111}
.google-wallet-card h2{margin-bottom:6px}
.google-wallet-button{display:inline-flex!important;align-items:center;justify-content:center;min-height:50px;background:#111!important;color:#fff!important;border:2px solid #111!important;font-weight:900;letter-spacing:.02em}
.google-wallet-button:hover{background:#fff!important;color:#111!important}
@media(max-width:600px){.google-wallet-button{width:100%;text-align:center}}


/* MambaHub · centro comunicazioni */
.communication-form{display:grid;gap:16px}.communication-form label{display:grid;gap:7px;font-weight:800}.communication-form textarea{min-height:240px;resize:vertical}.communication-toolbar,.communication-actions{display:flex;flex-wrap:wrap;gap:8px}.communication-toolbar button{width:auto;min-height:38px;padding:7px 12px;background:#242424}.communication-recipient-list{max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:12px;padding:8px;background:#fafafa}.communication-recipient-list label{display:flex;align-items:flex-start;gap:10px;padding:10px;border-bottom:1px solid var(--line);cursor:pointer}.communication-recipient-list label:last-child{border-bottom:0}.communication-recipient-list input{width:20px;height:20px;flex:0 0 auto}.communication-recipient-list span{display:grid;gap:2px}.communication-recipient-list small,.table td small{display:block;color:#60646c}.communication-page{border-top:5px solid #b91c1c}.communication-body{font-size:1.05rem;line-height:1.65}.communication-form fieldset{border:1px solid var(--line);border-radius:12px;padding:15px}.communication-form legend{font-weight:900;padding:0 6px}
@media(max-width:700px){.communication-actions>*{width:100%}.communication-form textarea{min-height:200px}.communication-recipient-list{max-height:300px}.communication-toolbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.communication-toolbar button{width:100%}}
.communications-nav{position:relative}.communications-nav>b{position:absolute;right:-8px;top:-8px;display:grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:99px;background:#d71920;color:#fff;font-size:11px;line-height:1}.communication-inbox{display:grid;gap:10px}.communication-inbox-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px;border:1px solid #d9dde3;border-radius:12px;color:#151515;text-decoration:none;background:#fff}.communication-inbox-row span{display:grid;gap:5px;min-width:0}.communication-inbox-row small{color:#666}.communication-inbox-row em{font-style:normal;font-size:12px;font-weight:900;border-radius:99px;padding:6px 10px;background:#eceff3;color:#555}.communication-inbox-row.is-unread{border-color:#d71920;background:#fff7f7;box-shadow:inset 5px 0 #d71920}.communication-inbox-row.is-unread em{background:#d71920;color:#fff}@media(max-width:600px){.communication-inbox-row{align-items:flex-start;padding:14px}.communication-inbox-row em{flex:0 0 auto}}
.notification-heading{margin:0 0 24px}.notification-heading>span{color:#b91c1c;font-size:.78rem;font-weight:900;letter-spacing:.12em}.notification-heading h1{margin:.35rem 0}.notification-list{display:grid;gap:10px}.notification-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:12px;padding:15px;border:1px solid #d9dde3;border-radius:13px;background:#fff;color:#151515;text-decoration:none}.notification-row>span:nth-child(2){display:grid;gap:5px;min-width:0}.notification-row small{color:#666;font-size:.75rem;font-weight:800}.notification-row b,.notification-row em{overflow-wrap:anywhere}.notification-row em{font-style:normal;color:#444}.notification-row>strong{padding:5px 8px;border-radius:99px;background:#d71920;color:#fff;font-size:.68rem}.notification-row.is-unread{border-color:#d71920;background:#fff7f7;box-shadow:inset 5px 0 #d71920}.notification-dot{width:11px;height:11px;margin-top:5px;border-radius:50%;background:#aaa}.notification-row.is-unread .notification-dot{background:#d71920;box-shadow:0 0 0 5px #fee2e2}.notification-center form{margin-top:18px}.notification-communications a{display:flex;justify-content:space-between;gap:15px;color:#151515;text-decoration:none}.notification-communications span{color:#b91c1c;font-weight:900}@media(max-width:600px){.notification-row{grid-template-columns:auto minmax(0,1fr)}.notification-row>strong{grid-column:2;justify-self:start}.notification-communications a{display:grid}}

/* MambaHub v124 · invii tracciati */
.communications-heading{margin:0 0 22px;padding:26px 28px;border-radius:18px;background:linear-gradient(135deg,#101114,#24262b);color:#fff;box-shadow:0 14px 34px #0002}.communications-heading span{font-size:.75rem;font-weight:900;letter-spacing:.16em;color:#ff4b50}.communications-heading h1{margin:7px 0 5px;color:#fff}.communications-heading p{margin:0;color:#e1e3e7}
.communication-review{border-top:6px solid #111}.communication-review-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.communication-review-head small{font-weight:900;letter-spacing:.08em;color:#777}.communication-review-head h2{margin:4px 0 0}.delivery-badge,.recipient-status{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:7px 11px;font-size:.72rem;font-weight:900;letter-spacing:.04em;white-space:nowrap}.delivery-badge.is-review{background:#fff0c2;color:#6e4a00}.delivery-badge.is-queued{background:#dbeafe;color:#164e9a}.delivery-badge.is-sent,.recipient-status.status-sent{background:#dcfce7;color:#126332}.delivery-badge.is-failed,.recipient-status.status-failed{background:#fee2e2;color:#991b1b}.delivery-badge.is-muted,.recipient-status.status-cancelled{background:#eceff3;color:#555}.recipient-status.status-queued,.recipient-status.status-sending{background:#dbeafe;color:#164e9a}
.delivery-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:25px 0}.delivery-steps>div{position:relative;display:flex;align-items:center;gap:10px;color:#777}.delivery-steps>div:not(:last-child)::after{content:"";position:absolute;left:42px;right:8px;top:17px;height:3px;background:#e3e5e8;z-index:0}.delivery-steps b{position:relative;z-index:1;display:grid;place-items:center;flex:0 0 36px;height:36px;border-radius:50%;background:#e3e5e8;color:#777}.delivery-steps span{position:relative;z-index:1;display:grid;background:#fff;padding-right:8px;font-weight:900}.delivery-steps small{font-weight:500;color:#777}.delivery-steps .is-done b{background:#178447;color:#fff}.delivery-steps .is-error b{background:#b91c1c;color:#fff}.delivery-totals{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0}.delivery-totals>div{display:grid;gap:3px;padding:15px;border:1px solid #dde0e5;border-radius:12px;background:#fafbfc}.delivery-totals b{font-size:1.65rem}.delivery-totals span{font-size:.82rem;font-weight:800;color:#666}.confirm-delivery{display:grid;gap:12px;padding:17px;border:2px solid #111;border-radius:13px;background:#fff}.recipient-details{margin-top:18px}.recipient-details summary{cursor:pointer;font-weight:900;padding:12px 0}.delivery-error{max-width:340px;overflow-wrap:anywhere;color:#991b1b}.recipient-warning{margin:0;color:#991b1b;font-weight:800}.new-communication{border-top:6px solid #d71920}
@media(max-width:720px){.communications-heading{padding:21px 18px}.communication-review-head{display:grid}.delivery-steps{grid-template-columns:1fr;gap:10px}.delivery-steps>div::after{display:none}.delivery-totals{grid-template-columns:repeat(2,1fr)}.recipient-details .table{overflow-x:auto}.recipient-details table{min-width:900px}}

/* MambaHub room private v120 */
.group-chat-page{--room:#d71920;--room-ink:#fff}.group-chat-heading{border:3px solid #111;border-left:14px solid var(--room);border-radius:18px;padding:22px;background:#fff;margin-bottom:18px}.group-chat-heading span{font-weight:900;letter-spacing:.09em;color:var(--room)}.group-chat-heading h1{margin:4px 0;font-size:clamp(32px,6vw,64px)}.room-switcher{display:flex;gap:8px;overflow-x:auto;padding:4px 0 15px}.room-switcher a{flex:0 0 auto;padding:10px 14px;border:2px solid #111;border-radius:999px;text-decoration:none;font-weight:900;background:var(--room);color:var(--room-ink)}.room-switcher a.active{outline:4px solid #f0b51b}.room-kids{--room:#15803d;--room-ink:#fff}.room-white{--room:#f7f7f7;--room-ink:#111}.room-blue{--room:#174bc4;--room-ink:#fff}.room-purple{--room:#7e22ce;--room-ink:#fff}.room-brown{--room:#713f12;--room-ink:#fff}.room-black{--room:#111;--room-ink:#fff}.group-chat-card{border-top:8px solid var(--room)}.group-chat-stream{height:min(56vh,620px);overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:8px}.chat-bubble{max-width:min(78%,680px);padding:12px 15px;border:1px solid #d5d9df;border-radius:6px 17px 17px 17px;background:#fff;box-shadow:0 3px 10px #0001}.chat-bubble.from-admin{align-self:flex-end;border-radius:17px 6px 17px 17px;border-color:var(--room);background:#fff8f8}.chat-bubble header{display:flex;justify-content:space-between;gap:15px;color:var(--room)}.chat-bubble p{margin:7px 0;overflow-wrap:anywhere}.chat-delete{padding:5px 8px;font-size:11px}.group-chat-compose{position:sticky;bottom:0;background:#fff;border-top:1px solid #ddd;padding-top:14px}.group-chat-compose textarea{width:100%;resize:vertical}.empty-chat{text-align:center;color:#666;padding:30px}@media(max-width:600px){.group-chat-heading{padding:16px}.chat-bubble{max-width:92%}.group-chat-stream{height:52vh}}
/* v123 · registrazioni guidate, famiglie e doppia installazione */
.registration-choice,.install-page,.family-dashboard{width:min(1120px,calc(100% - 28px));margin:36px auto 70px}.registration-choice-head,.install-head,.family-dashboard-head{text-align:center;margin-bottom:26px}.registration-choice-head>span,.install-head>span,.family-dashboard-head>span{display:inline-block;color:#b5121b;font-weight:900;letter-spacing:.12em;font-size:.78rem}.registration-choice-head h1,.install-head h1,.family-dashboard-head h1{font-size:clamp(2rem,5vw,3.6rem);line-height:1.05;margin:10px 0}.registration-choice-head p,.install-head p,.family-dashboard-head p{color:#555;font-size:1.08rem}.registration-choice-grid,.install-grid,.family-child-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.registration-choice-card,.install-card,.family-child-card{display:flex;flex-direction:column;gap:14px;min-height:250px;padding:28px;border:2px solid #e2e3e7;border-radius:20px;background:#fff;color:#111;text-decoration:none;box-shadow:0 12px 35px rgba(0,0,0,.07);transition:.18s ease}.registration-choice-card:hover,.install-card:hover{transform:translateY(-3px);border-color:#d71920}.registration-choice-card b,.install-card b{font-size:1.18rem}.registration-choice-card span,.install-card span{color:#54545b;line-height:1.5}.registration-choice-card em,.install-card em{margin-top:auto;color:#c3131d;font-style:normal;font-weight:900}.registration-choice-card.family{border-top:7px solid #17803d}.registration-choice-card.adult{border-top:7px solid #d71920}.registration-choice-card.existing{border-top:7px solid #111}.registration-help,.family-actions{text-align:center;margin-top:24px}.install-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.install-card{min-height:220px}.install-card.selected{border-color:#d71920;box-shadow:0 0 0 3px rgba(215,25,32,.12),0 12px 35px rgba(0,0,0,.08)}.install-action{max-width:720px;margin:24px auto;text-align:center}.tablet-standalone{padding-top:8vh}.family-auth{max-width:760px}.family-auth form h2{margin:18px 0 4px;border-bottom:2px solid #eee;padding-bottom:8px}.family-child-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:20px}.family-child-card{min-height:205px}.family-child-card>span{color:#b5121b;font-size:.76rem;font-weight:900;letter-spacing:.1em}.family-child-card h2{margin:0;font-size:1.6rem}.family-child-card .button{margin-top:auto;text-align:center}.birth-select-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media(max-width:800px){.registration-choice,.install-page,.family-dashboard{width:min(100% - 20px,680px);margin-top:22px}.registration-choice-grid,.install-grid,.family-child-grid{grid-template-columns:1fr}.registration-choice-card,.install-card{min-height:0;padding:22px}.family-child-grid{gap:12px}.birth-select-grid{grid-template-columns:1fr}.family-auth.card,.family-auth form{max-width:100%}}
@media(max-width:480px){.registration-choice-head h1,.install-head h1,.family-dashboard-head h1{font-size:2rem}.registration-choice-card,.install-card,.family-child-card{border-radius:14px;padding:18px}.install-action button,.family-actions .button{display:block;width:100%;margin:8px 0}}
.family-return-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 18px;padding:12px 16px;border:2px solid #111;border-radius:14px;background:#fff}.family-return-bar a{font-weight:900;color:#b5121b;text-decoration:none}.family-return-bar span{font-size:14px;color:#555}@media(max-width:640px){.family-return-bar{align-items:flex-start;flex-direction:column}.family-return-bar a{display:block;width:100%;padding:10px;border-radius:10px;background:#111;color:#fff;text-align:center}}
.install-success[hidden],#install-ready[hidden]{display:none!important}.install-success{padding:12px 4px}.install-success>span{display:grid;place-items:center;width:68px;height:68px;margin:0 auto 14px;border-radius:50%;background:#178447;color:#fff;font-size:42px;font-weight:900}.install-success h2{margin:0 0 8px;color:#126332}.install-success .button{display:inline-block;margin-top:10px}
.manual-install{margin-top:16px;padding:18px;border:2px solid #111;border-radius:14px;background:#fff7d6;text-align:left}.manual-install>b{display:block;text-align:center;color:#991b1b}.manual-install ol{margin:13px 0 16px;padding-left:24px}.manual-install li{margin:9px 0;line-height:1.4}.manual-install button{display:block;width:100%;margin:0}

/* MambaHub v125 · destinatari multipli e prova email verificabile */
.new-communication .test-delivery{display:none}
.form-intro{max-width:850px;color:#555;line-height:1.55}
.recipient-builder,.manual-builder{margin:20px 0;padding:20px;border:2px solid #e1e3e8;border-radius:16px;background:#fafafa}
.recipient-builder legend,.manual-builder legend{padding:0 9px;font-weight:900;font-size:1.05rem}
.recipient-group-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.group-choice{display:flex;gap:11px;align-items:flex-start;padding:13px;border:2px solid #d9dce2;border-radius:12px;background:#fff;cursor:pointer}
.group-choice:focus-within{border-color:#d71920;box-shadow:0 0 0 3px rgba(215,25,32,.12)}
.group-choice input{width:20px;height:20px;margin-top:2px;flex:0 0 auto}
.group-choice span,.group-choice small{display:block}.group-choice small{margin-top:4px;color:#666}
.manual-state{margin:10px 0 0;font-weight:800;color:#555}
.live-recipient-summary{display:grid;grid-template-columns:150px 1fr;gap:20px;margin:22px 0;padding:20px;border:3px solid #111;border-left:10px solid #d71920;border-radius:16px;background:#fff}
.live-recipient-summary>div:first-child{text-align:center}.live-recipient-summary small{display:block;font-weight:900;letter-spacing:.08em}.live-recipient-summary strong{display:block;font-size:3.5rem;line-height:1;color:#d71920}.live-recipient-summary h3{margin:0 0 8px}
.recipient-chips{display:flex;flex-wrap:wrap;gap:7px;max-height:220px;overflow:auto}.recipient-chip{display:inline-block;padding:7px 10px;border-radius:999px;background:#111;color:#fff;font-size:.84rem;font-weight:700}
.recipient-warning{color:#a30e16;font-weight:800}.communication-actions{display:flex;align-items:center;gap:14px;margin-top:18px}.communication-actions small{max-width:470px;color:#555}
.standalone-test{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,.9fr);gap:25px;align-items:center;border-top:8px solid #111}.standalone-test>div>small{color:#b5121b;font-weight:900;letter-spacing:.1em}.standalone-test h2{margin:5px 0}.test-email-form{display:grid;gap:10px;padding:18px;border-radius:14px;background:#f4f5f7}.test-email-form label{margin:0}.test-email-form button{width:100%}
@media(max-width:900px){.recipient-group-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.standalone-test{grid-template-columns:1fr}}
@media(max-width:600px){.recipient-group-grid{grid-template-columns:1fr}.recipient-builder,.manual-builder{padding:14px}.live-recipient-summary{grid-template-columns:1fr;padding:15px}.live-recipient-summary>div:first-child{text-align:left}.communication-actions{align-items:stretch;flex-direction:column}.communication-actions button{width:100%}.standalone-test{padding:18px}.test-email-form{padding:13px}}
.communication-hard-error{border:3px solid #b42318;border-left-width:10px;background:#fff1f0;color:#721c18}.communication-hard-error h2{margin-top:0;color:#b42318}.communication-actions #send-delivery{min-width:220px;background:#178447}.communication-actions #send-delivery:hover{background:#0f6936}
.perf-timeline{display:flex;width:100%;height:36px;overflow:hidden;border-radius:10px;background:#e5e7eb;margin:18px 0}.perf-timeline span{display:block;height:100%;min-width:2px}.phase-workout{background:#22c55e!important}.phase-technique_drills{background:#eab308!important}.phase-sparring{background:#dc2626!important}.phase-recovery{background:#64748b!important}.perf-legend{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;font-size:.9rem}.perf-legend i{width:13px;height:13px;border-radius:3px;display:inline-block}.perf-advice{border-left:7px solid #d71920}.perf-zone div b{background:#d71920}@media(max-width:700px){.perf-legend{font-size:.78rem}.perf-advice{border-left-width:5px}}

/* MambaHub v168 · interfaccia mobile compatta e leggibile */
.history-add-panel{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}.history-add-panel>summary,.personal-qr-card>summary{cursor:pointer;font-weight:900}.history-add-panel>form{margin-top:16px}
@media(max-width:700px){
body{font-size:15px;line-height:1.38}body>header{min-height:0!important;padding:7px 9px!important;gap:6px!important}body>header .brand.branded{justify-content:flex-start!important}body>header .brand.branded img{width:34px!important;height:34px!important;flex-basis:34px!important}body>header .brand-copy strong{font-size:10px!important;line-height:1.05!important;max-width:230px}body>header nav{display:flex!important;flex-wrap:nowrap!important;justify-content:flex-start!important;width:100%!important;gap:5px!important;overflow-x:auto!important;padding:1px 0 3px!important;scrollbar-width:none}body>header nav::-webkit-scrollbar{display:none}body>header nav a{flex:0 0 auto!important;width:auto!important;min-height:34px!important;padding:6px 10px!important;font-size:11px!important;border-radius:8px!important}body>header nav .booking-alert,body>header nav .request-bell,body>header nav .rank-history-bell{min-width:38px!important;padding-inline:9px!important;font-size:17px!important}.shell{width:calc(100% - 20px)!important;margin:14px auto 36px!important;padding:0!important}h1{font-size:clamp(29px,8.4vw,38px)!important;line-height:1.06!important;margin:0 0 15px!important;overflow-wrap:anywhere}h2{font-size:1.35rem!important;line-height:1.18!important;margin:0 0 10px!important}h3{font-size:1.05rem!important}.card{padding:16px!important;margin:12px 0!important;border-radius:15px!important}.card p{margin:8px 0}button,.button,input,select,textarea{font-size:16px!important}button,.button{min-height:44px!important;padding:10px 14px!important}input,select,textarea{min-height:46px!important;padding:10px 12px!important}.stats{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:9px!important;margin:12px 0!important}.stats article{min-height:0!important;padding:14px!important;border-radius:14px!important}.stats article b{font-size:1.8rem!important;line-height:1.05!important}.stats article span{font-size:.82rem!important;line-height:1.25!important;margin-top:5px!important}.profile-hero{align-items:center!important;gap:12px!important;margin-bottom:12px!important}.profile-hero .profile-photo{width:72px!important;height:72px!important;flex-basis:72px!important}.profile-hero h1{font-size:1.8rem!important;margin-bottom:8px!important}.profile-hero .button{min-height:38px!important;padding:7px 12px!important}.profile-progress-card,.last-training-card,.athlete-booking-card,.personal-data-card{padding:14px 16px!important}.last-training-card h2,.athlete-booking-card h2{font-size:1.12rem!important}.personal-qr-card{text-align:left!important}.personal-qr-card[open]>summary{margin-bottom:12px}#personal-qr{display:flex;justify-content:center;background:#fff;padding:10px;border-radius:12px;width:max-content;max-width:100%;margin:12px auto}.athlete-health-summary>div[style*="linear-gradient"]{height:16px!important;background:linear-gradient(90deg,#1976ff 0 20%,#00b83f 20% 45%,#ffd21f 45% 65%,#ff7a18 65% 82%,#f01824 82%)!important;box-shadow:0 0 0 3px #fff6!important}.athlete-health-summary>div[style*="linear-gradient"] span{background:#fff!important;border:2px solid #111!important;width:6px!important}.rank-history-table{overflow:visible!important}.rank-history-table table,.rank-history-table tbody{display:block!important;width:100%!important;min-width:0!important}.rank-history-table thead{display:none!important}.rank-history-table tr{display:block!important;margin:10px 0!important;padding:12px 14px!important;border:1px solid var(--line)!important;border-radius:12px!important;background:#fff!important}.rank-history-table td{display:grid!important;grid-template-columns:105px minmax(0,1fr)!important;gap:9px!important;width:100%!important;padding:7px 0!important;border-bottom:1px solid var(--line)!important;overflow-wrap:anywhere!important}.rank-history-table td:last-child{border-bottom:0!important}.rank-history-table td::before{content:attr(data-label);font-size:.72rem;font-weight:900;text-transform:uppercase;color:#666}.history-add-panel>summary{padding:11px;border:1px solid var(--line);border-radius:10px;background:#111;color:#fff}.athletes-table-wrap #athletes-table tr{padding:11px 13px!important}#athletes-table td{padding:7px 0!important}#athletes-table td::before{margin-bottom:3px!important}.payment-code-panel,.communications-heading{padding:16px!important}.table{max-width:100%!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch}.table table{min-width:560px}body[data-page="rank-history-requests"] .table table,body[data-page="renew"] .table table,body[data-page="roles"] .table table{font-size:.84rem}.privacy-footer{margin:26px 0!important}
}
@media(max-width:390px){.stats{grid-template-columns:1fr 1fr!important}.stats article{padding:12px!important}.stats article b{font-size:1.55rem!important}.rank-history-table td{grid-template-columns:88px minmax(0,1fr)!important}}
