/*
 * app.css — aggiunte specifiche del gestionale Età Evolutiva.
 * Caricato DOPO style.css (tema La Mercanti, non modificato).
 * Contiene: card di contenuto, tabella senza a-capo, input OTP a 6 cifre,
 * box QR. Usa le stesse variabili del tema (con fallback).
 */

/* ── Card di contenuto (il tema usa .panel come drawer fisso: serve una card vera) ── */
.content-card {
    background: var(--color-bg-card, #fff);
    border: 1px solid var(--color-border, #e5e7eb);
    border-radius: var(--radius-lg, 12px);
    padding: var(--spacing-lg, 1.5rem);
    margin-bottom: var(--spacing-lg, 1.5rem);
}
.content-card > :first-child { margin-top: 0; }
.content-card > :last-child { margin-bottom: 0; }
.content-card-title {
    margin: 0 0 var(--spacing-md, 1rem);
    font-size: var(--font-size-lg, 1.125rem);
    font-weight: 600;
}

/* ── Tabelle: le colonne non vanno a capo (scroll orizzontale via .table-container) ── */
.data-table th,
.data-table td {
    white-space: nowrap;
}

/* ── Input OTP a 6 cifre (nel manager erano inline nella login) ── */
.otp-inputs {
    display: flex;
    gap: 0.5rem;
    justify-content: center;
    margin-bottom: 0.5rem;
}
.otp-digit {
    width: 48px;
    height: 56px;
    text-align: center;
    font-size: 1.5rem;
    font-family: monospace;
    font-weight: 600;
    border: 2px solid var(--color-gray-300, #d1d5db);
    border-radius: var(--radius-md, 8px);
    background: #fff;
    transition: border-color 0.2s, box-shadow 0.2s;
}
.otp-digit:focus {
    outline: none;
    border-color: var(--color-primary, #3b82f6);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
}
.otp-digit.filled {
    border-color: var(--color-primary, #3b82f6);
    background: var(--color-primary-light, #eff6ff);
}
.otp-digit.error {
    border-color: var(--color-danger, #ef4444);
    background: var(--color-danger-light, #fef2f2);
}
@media (max-width: 400px) {
    .otp-inputs { gap: 0.35rem; }
    .otp-digit { width: 42px; height: 50px; font-size: 1.25rem; }
}

/* ── Box QR ── */
.qr-box {
    display: inline-block;
    padding: 0.5rem;
    background: #fff;
    border: 1px solid var(--color-border, #e5e7eb);
    border-radius: var(--radius-md, 8px);
}

/* ── Pagina modifica utente (stili .ue-* dal manager La Mercanti) ── */
.ue-role-badge       { display:inline-block; padding:2px 10px; border-radius:9999px; font-size:.7rem; font-weight:600; color:#fff; letter-spacing:.3px; vertical-align:middle; }
.ue-avatar-card      { display:flex; flex-direction:column; align-items:center; gap:var(--spacing-sm); padding:var(--spacing-md); margin-bottom:var(--spacing-sm); }
.ue-avatar           { width:72px; height:72px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:1.3rem; font-weight:700; color:#fff; overflow:hidden; flex-shrink:0; }
.ue-avatar img       { width:100%; height:100%; object-fit:cover; }
.ue-avatar-name      { font-weight:600; font-size:var(--font-size-sm); color:var(--color-text); text-align:center; }
.ue-password-grid    { display:grid; grid-template-columns:1fr 1fr; gap:var(--spacing-md); }
.ue-password-input-wrap { position:relative; }
.ue-password-input-wrap input { padding-right:40px; }
.ue-eye-toggle       { position:absolute; right:10px; top:50%; transform:translateY(-50%); background:none; border:none; cursor:pointer; color:var(--color-text-muted); padding:4px; display:flex; }
.ue-eye-toggle:hover { color:var(--color-text); }
.ue-pw-rules         { list-style:none; padding:0; margin:var(--spacing-sm) 0 0; display:grid; grid-template-columns:1fr 1fr; gap:4px var(--spacing-lg); }
.ue-pw-rule          { font-size:.78rem; color:var(--color-text-muted); display:flex; align-items:center; gap:6px; transition:color .2s; }
.ue-pw-rule .ue-pw-icon { flex-shrink:0; }
.ue-pw-rule.met      { color:#16a34a; }
.ue-pw-rule.met .ue-pw-icon-x { display:none; }
.ue-pw-rule:not(.met) .ue-pw-icon-ok { display:none; }
.ue-danger-zone      { border-color:var(--color-danger,#dc2626); }
.ue-danger-zone .form-section-header { border-bottom:1px solid #fecaca; }
.ue-danger-zone .form-section-title  { color:var(--color-danger,#dc2626); }
.ue-2fa-badge        { display:inline-flex; align-items:center; gap:4px; font-size:.75rem; padding:2px 8px; border-radius:var(--radius-sm); font-weight:500; }
.ue-2fa-badge.active { background:#dcfce7; color:#166534; }
.ue-2fa-badge.off    { background:var(--color-bg-secondary); color:var(--color-text-muted); }
/* Toggle: usa .toggle-switch/.toggle-slider del tema La Mercanti; verde forzato a #16a34a */
.toggle-switch input:checked + .toggle-slider { background-color:#16a34a; }
.toggle-switch input:disabled + .toggle-slider { opacity:.5; cursor:not-allowed; }
.toggle-switch-wrapper { display:flex; align-items:center; gap:var(--spacing-sm,.5rem); }

/* Badge ruolo per i nostri codici (il tema ha colori per i codici La Mercanti) */
.role-badge-super_admin        { background:#7c3aed; color:#fff; }
.role-badge-direttore_sanitario{ background:#2563eb; color:#fff; }
.role-badge-admin              { background:#0ea5e9; color:#fff; }
.role-badge-clinico            { background:#16a34a; color:#fff; }
.role-badge-segreteria         { background:#f59e0b; color:#fff; }

/* Banner impersonificazione centro (Super Admin "entrato" in un tenant) */
.impersonation-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    padding: 0.625rem 1rem;
    margin-bottom: 1.25rem;
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    border-left: 4px solid #2563eb;
    border-radius: 8px;
    color: #1e3a8a;
}
.impersonation-text { font-size: 0.9375rem; }
.impersonation-exit { margin: 0; }
.data-table .col-actions { text-align: right; white-space: nowrap; }

/* Documento clinico: contenuto in sola lettura */
.document-readonly { white-space: pre-wrap; line-height: 1.6; font-size: .95rem; }

/* Badge severità scadenze conformità */
.sev-badge { display:inline-block; padding:.15rem .55rem; border-radius:999px; font-size:.75rem; font-weight:600; }
.sev-scaduta  { background:#fee2e2; color:#991b1b; }
.sev-urgente  { background:#ffedd5; color:#9a3412; }
.sev-prossima { background:#e0f2fe; color:#075985; }
.registri-hub { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:1rem; }
.registri-hub .content-card { margin:0; }
.kpi-row { display:flex; gap:1rem; flex-wrap:wrap; margin-bottom:1.25rem; }
.kpi { flex:1; min-width:120px; padding:1rem; border:1px solid var(--color-border); border-radius:10px; text-align:center; }
.kpi-num { font-size:1.8rem; font-weight:700; line-height:1; }
.kpi-label { font-size:.8rem; color:var(--color-gray-500); margin-top:.35rem; }

/* Accessibilità (WCAG 2.1 AA): testo "muted" con contrasto >= 4.5:1 su bianco.
   Il tema base usava --color-text-muted #9ca3af (2.5:1, insufficiente). */
:root {
    --color-text-muted: #4b5563;   /* ~7:1 su bianco */
}
.text-muted { color: var(--color-text-muted); }
input::placeholder, textarea::placeholder { color: #5b6470; opacity: 1; }

/* Contrasto AA su elementi del tema con sfondo chiaro (brand-light non personalizzabile):
   blu scuro #1e3a8a su #dbeafe ~8:1, indipendente dal colore di branding del tenant. */
.user-avatar,
.user-initials { color: #1e3a8a; }
.nav-link.active,
.nav-link.active .nav-text { color: #1e3a8a; font-weight: 600; }
.version-num { opacity: 1; color: var(--color-text-muted); }

/* Register Engine: visualizzazione dati voce (sola lettura) */
.register-readonly { margin: 0; }
.register-readonly dt { font-weight: 600; font-size: .82rem; color: var(--color-text-muted); margin-top: .75rem; }
.register-readonly dd { margin: 0 0 .25rem; }

/* Badge ruoli aggiuntivi (RBAC) */
.role-badge-coordinatore_clinico { background:#0d9488; color:#fff; }
.role-badge-referente_qualita    { background:#7c3aed; color:#fff; }
.role-badge-revisore_qualita     { background:#6d28d9; color:#fff; }
.role-badge-referente_formazione { background:#db2777; color:#fff; }
.role-badge-referente_it         { background:#475569; color:#fff; }
.role-badge-auditor_regione      { background:#b45309; color:#fff; }

/* Stato requisiti accreditamento (semaforo) */
.acc-badge { display:inline-block; padding:.15rem .55rem; border-radius:999px; font-size:.75rem; font-weight:600; }
.acc-conforme      { background:#dcfce7; color:#166534; }
.acc-in_scadenza   { background:#fef9c3; color:#854d0e; }
.acc-non_conforme  { background:#fee2e2; color:#991b1b; }
.acc-non_valutato  { background:#e5e7eb; color:#374151; }
.ispettivo-banner { background:#eff6ff; border:1px solid #bfdbfe; border-left:4px solid #2563eb; color:#1e3a8a; padding:.75rem 1rem; border-radius:8px; margin-bottom:1.25rem; }

/* .btn-link: testo #2563eb su sfondo #dbeafe (4.24:1) -> #1e3a8a (~8:1). Hover invariato. */
.btn-link:not(:hover) { color: #1e3a8a; }
