/* Area clienti: tutto viene da admin.css (stesso stile di /admin); qui solo
   quello che l'area clienti ha in piu'. */
.portal-logout { margin: 0; display: flex; }
/* 44 px: l'area clienti si usa dal telefono (C59); in /admin resta 30 px. */
.portal-logout .sidebar-account-logout { background: none; border: 0; padding: 0; cursor: pointer; font: inherit; width: 44px; height: 44px; }
.portal-url { word-break: break-all; color: var(--color-text-secondary); }
.login-card h1 { margin: 0; }
.login-card form { display: flex; flex-direction: column; gap: var(--space-4); }
.login-card p { margin: 0; }
.portal-settings { display: grid; gap: var(--space-4); max-width: 760px; }
.portal-settings > .field-hint { margin: 0; }
/* Ospiti (step 18): l'elenco usa le classi dell'elenco dei locali di /admin. */
.portal-guests { display: grid; gap: var(--space-4); }
.guest-export { display: flex; flex-direction: row; align-items: center; justify-content: space-between; gap: var(--space-4); }
.guest-export .field-hint { margin: 4px 0 0; max-width: 60ch; }
.guest-export .btn { flex: none; }
.guest-alert { margin: 0 var(--space-5) var(--space-3); }
.guest-phone { font-weight: 400; color: var(--color-text-secondary); font-variant-numeric: tabular-nums; white-space: nowrap; }
.guest-code { margin-top: var(--space-1); font-size: 13px; font-weight: 400; color: var(--color-text-secondary); }
.guest-code-value { font-weight: 600; color: var(--color-text-primary); font-variant-numeric: tabular-nums; letter-spacing: 0.04em; white-space: nowrap; }
.guest-cell-date { white-space: nowrap; font-variant-numeric: tabular-nums; }
.guest-date-label { display: none; }
.guest-confirm { display: inline-flex; gap: var(--space-2); margin: 0; }
.guest-name-link { color: inherit; text-decoration: underline; text-decoration-color: var(--color-text-muted); text-underline-offset: 3px; }
.guest-name-link:hover { text-decoration-color: currentColor; }
/* Dettagli dell'ospite (step 13, parte 3). */
.portal-guest { display: grid; gap: var(--space-4); max-width: 960px; }
.portal-guest > p { margin: 0; }
.guest-codes { list-style: none; margin: 0; padding: 0; }
.guest-codes .guest-code { font-size: 14px; }
.guest-delete .venue-box-actions { margin-top: var(--space-3); }
@media (max-width: 760px) {
  .guest-delete .btn { justify-content: center; min-height: 44px; flex: 1; }
}
@media (max-width: 1199px) {
  .guest-table td.guest-cell-name { grid-column: 1; grid-row: 1; font-size: 15px; }
  .guest-table td.guest-cell-status { grid-column: 2; grid-row: 1; text-align: right; }
  .guest-table td.guest-cell-date, .guest-table td.guest-cell-actions { grid-column: 1 / -1; }
  .guest-date-label { display: inline; }
  .guest-table td.guest-cell-date { font-size: 13px; color: var(--color-text-secondary); }
  .guest-table td.guest-cell-date + td.guest-cell-date { margin-top: -6px; }
  table.data-table.guest-table td.guest-cell-actions.is-empty { display: none; }
  .guest-confirm { display: flex; flex: 1; }
}
@media (max-width: 760px) {
  .guest-export { flex-direction: column; align-items: stretch; }
  .guest-export .btn { justify-content: center; min-height: 44px; }
  .guest-alert { margin: 0 var(--space-4) var(--space-3); }
}
/* Home e QR (step 18, sotto-step 3). I numeri usano .scan-totals di admin.css. */
.portal-home, .portal-qr { display: grid; gap: var(--space-4); max-width: 960px; }
.portal-home .venue-box > p:last-child { margin-bottom: 0; }
.portal-pages { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: var(--space-3); }
.portal-page-button { justify-content: center; min-height: 52px; font-size: 15px; }
.portal-numbers { grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0; }
.portal-qr-image { display: block; width: 100%; max-width: 420px; height: auto; border-radius: var(--radius-md);
  border: 1px solid var(--color-border); }
.portal-qr-actions { justify-content: flex-start; }
.portal-qr .field-error { margin: var(--space-3) 0 0; }
.portal-qr > .field-hint { margin: 0; }
@media (max-width: 760px) {
  .portal-pages { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .portal-pages > :last-child:nth-child(odd) { grid-column: 1 / -1; }
  .portal-numbers { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .portal-qr-actions .btn { flex: 1 1 100%; justify-content: center; min-height: 44px; }
}

/* Più locali per utente (piani/step19.md, sezione E): elenco e locale aperto nella barra. */
.portal-choose { display: grid; gap: var(--space-4); max-width: 760px; }
.portal-choose > .field-hint { margin: 0; }
.portal-venues { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-3); }
.portal-venues .portal-venue { display: flex; flex-direction: row; align-items: center; justify-content: space-between; gap: var(--space-4); }
.portal-venue-text { min-width: 0; }
.portal-venue-name { margin: 0 0 var(--space-1); font-size: 17px; }
.portal-venue .portal-url { margin: 0; }
.portal-venue form { margin: 0; }
.portal-venue .btn { min-height: 44px; flex-shrink: 0; }
.nav-choice-name { padding: 6px var(--space-3) 0; color: var(--color-text-on-navy); font-size: 13px; font-weight: 600;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav-choice-link { margin-bottom: var(--space-1); }
@media (max-width: 560px) {
  .portal-venues .portal-venue { flex-direction: column; align-items: stretch; }
  .portal-venue form .btn { width: 100%; justify-content: center; }
}

/* Astrai nel pannello di un locale (piani/step19.md, sezione D). */
.admin-entry-band { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3);
  padding: var(--space-2) var(--space-4); background: var(--color-warning-soft); color: var(--color-text-primary, #10182e);
  border-bottom: 1px solid var(--color-warning); font-size: 14px; font-weight: 600; }
.admin-entry-band form { margin: 0; flex-shrink: 0; }
.admin-entry-band .btn { min-height: 36px; }
