/* Autenticazione (src/viewer/authui.js): finestre di accesso e password, menu utente. Token del tema (theme.css). */
.auth-dialog { width: min(92vw, 400px); padding: 0; border: 1px solid var(--border); border-radius: 14px; background: var(--surface); color: var(--text); box-shadow: 0 20px 50px rgb(0 0 0 / .25); }
.auth-dialog::backdrop { background: rgb(15 23 42 / .45); backdrop-filter: blur(2px); }
.auth-form { display: flex; flex-direction: column; gap: 6px; padding: 22px 24px 20px; font: 14px/1.4 system-ui, sans-serif; }
.auth-form h2 { margin: 0 0 6px; font-size: 19px; }
.auth-form label { margin-top: 6px; font-weight: 600; font-size: 12.5px; color: var(--text-muted); }
.auth-form input:not([type=checkbox]) { height: 36px; padding: 0 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface-2, var(--surface)); color: var(--text); font: inherit; }
.auth-form input:focus-visible, .auth-dialog button:focus-visible { outline: 2px solid var(--accent, #2563eb); outline-offset: 1px; }
.auth-form .auth-check { display: flex; align-items: center; gap: 6px; font-weight: 400; color: var(--text); }
.auth-reason { margin: 0; padding: 8px 10px; border-radius: 8px; background: color-mix(in srgb, var(--accent, #2563eb) 10%, transparent); font-size: 13px; }
.auth-hint { margin: 2px 0 0; color: var(--text-muted); font-size: 12px; }
.auth-msg { margin: 6px 0 0; font-size: 13px; color: #b91c1c; }
.auth-msg[data-kind="ok"] { color: #15803d; }
:root[data-theme="dark"] .auth-msg { color: #fca5a5; } :root[data-theme="dark"] .auth-msg[data-kind="ok"] { color: #86efac; }
.auth-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.auth-actions button { height: 34px; padding: 0 14px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: var(--text); font: 600 13px system-ui, sans-serif; cursor: pointer; }
.auth-actions .auth-primary { background: var(--accent, #2563eb); border-color: var(--accent, #2563eb); color: #fff; }
.auth-actions .auth-link { margin-right: auto; padding: 0; border: 0; background: none; color: var(--accent, #2563eb); font-weight: 500; }
.auth-actions button:disabled { opacity: .6; cursor: progress; }
.auth-chip { display: inline-block; padding: 0 7px; border-radius: 999px; background: color-mix(in srgb, var(--text-muted) 15%, transparent); font-size: 11px; font-weight: 600; }
/* menu utente */
.auth-login-btn { height: 30px; padding: 0 12px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: var(--text); font: 600 13px system-ui, sans-serif; cursor: pointer; }
.auth-user { position: relative; }
.auth-avatar { width: 32px; height: 32px; border: 0; border-radius: 50%; background: var(--accent, #2563eb); color: #fff; font: 700 12px system-ui, sans-serif; cursor: pointer; }
.auth-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 1000; display: flex; flex-direction: column; min-width: 220px; padding: 6px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); box-shadow: 0 12px 30px rgb(0 0 0 / .18); font: 13px system-ui, sans-serif; }
.auth-menu[hidden] { display: none; }
.auth-menu-head { display: flex; flex-direction: column; gap: 2px; padding: 6px 8px 8px; border-bottom: 1px solid var(--border); margin-bottom: 4px; }
.auth-menu-head span { color: var(--text-muted); font-size: 12px; }
.auth-menu [role=menuitem] { padding: 7px 8px; border: 0; border-radius: 6px; background: none; color: var(--text); font: inherit; text-align: left; text-decoration: none; cursor: pointer; }
.auth-menu [role=menuitem]:hover, .auth-menu [role=menuitem]:focus-visible { background: var(--hover, rgb(148 163 184 / .15)); outline: none; }
/* pagina bloccata (viewer riservato, editor senza permesso) */
.auth-gate { display: grid; place-items: center; min-height: 60vh; padding: 24px; color: var(--text-muted); font: 14px system-ui, sans-serif; text-align: center; }
.auth-gate b { display: block; margin-bottom: 6px; color: var(--text); font-size: 17px; }
/* editor: menu utente nella barra degli strumenti */
.editor-user-slot { display: inline-flex; align-items: center; margin-left: 4px; }
.editor-user-slot:empty { display: none; }
.editor-user-slot .auth-avatar { width: 30px; height: 30px; }

/* editor: "Utenti e permessi" (src/editor/usersAdmin.js) */
.ua-dialog { width: min(96vw, 1100px); max-height: 90vh; padding: 0; border: 1px solid var(--border); border-radius: 14px; background: var(--surface); color: var(--text); box-shadow: 0 20px 50px rgb(0 0 0 / .25); }
.ua-dialog::backdrop { background: rgb(15 23 42 / .45); }
.ua { display: flex; flex-direction: column; max-height: 90vh; font: 13px/1.4 system-ui, sans-serif; }
.ua-head { display: flex; align-items: center; gap: 16px; padding: 12px 16px; border-bottom: 1px solid var(--border); }
.ua-head h2 { margin: 0; font-size: 17px; }
.ua-tabs { display: flex; gap: 4px; }
.ua-tabs button { padding: 6px 12px; border: 1px solid transparent; border-radius: 8px; background: none; color: var(--text-muted); font: 600 13px system-ui, sans-serif; cursor: pointer; }
.ua-tabs button[aria-selected="true"] { border-color: var(--border); background: var(--surface-2, var(--surface)); color: var(--text); }
.ua-close { margin-left: auto; width: 30px; height: 30px; border: 0; border-radius: 8px; background: none; color: var(--text); font-size: 20px; cursor: pointer; }
.ua-msg { margin: 8px 16px 0; padding: 7px 10px; border-radius: 8px; background: color-mix(in srgb, #16a34a 14%, transparent); }
.ua-msg[data-kind="error"] { background: color-mix(in srgb, #dc2626 14%, transparent); }
.ua-body { overflow: auto; padding: 12px 16px 16px; }
.ua-bar, .ua-row, .ua-bulk { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 10px; }
.ua-bulk { padding: 6px 10px; border-radius: 8px; background: color-mix(in srgb, var(--accent, #2563eb) 10%, transparent); }
.ua-bulk[hidden] { display: none; }
.ua-grow { flex: 1; }
.ua input:not([type=checkbox]):not([type=radio]):not([type=color]), .ua select { height: 32px; padding: 0 8px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface-2, var(--surface)); color: var(--text); font: inherit; }
.ua input[type=search] { min-width: 220px; }
.ua button:not(.ua-close):not([role=tab]) { height: 30px; padding: 0 11px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); color: var(--text); font: 600 12.5px system-ui, sans-serif; cursor: pointer; }
.ua button:disabled { opacity: .5; cursor: default; }
.ua .ua-primary { background: var(--accent, #2563eb) !important; border-color: var(--accent, #2563eb) !important; color: #fff !important; }
.ua .ua-danger { border-color: #dc2626 !important; color: #dc2626 !important; }
.ua-table-wrap { overflow: auto; border: 1px solid var(--border); border-radius: 10px; }
.ua-table { width: 100%; border-collapse: collapse; }
.ua-table th, .ua-table td { padding: 7px 9px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }
.ua-table th { position: sticky; top: 0; background: var(--surface-2, var(--surface)); color: var(--text-muted); font-size: 12px; }
.ua-table small { color: var(--text-muted); }
.ua-empty { padding: 16px; color: var(--text-muted); text-align: center; }
.ua-chip { display: inline-block; margin: 1px 2px 1px 0; padding: 0 7px; border-radius: 999px; background: color-mix(in srgb, var(--c) 22%, transparent); border: 1px solid color-mix(in srgb, var(--c) 55%, transparent); font-size: 11.5px; font-weight: 600; white-space: nowrap; }
.ua-status { font-weight: 600; }
.ua-status.is-on { color: #16a34a; } .ua-status.is-off { color: var(--text-muted); } .ua-status.is-locked { color: #dc2626; }
.ua-form { margin-top: 14px; padding: 14px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface-2, var(--surface)); }
.ua-form h3 { margin: 0 0 10px; font-size: 15px; }
.ua-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.ua-grid label { display: flex; flex-direction: column; gap: 4px; font-weight: 600; font-size: 12px; color: var(--text-muted); }
.ua-grid .ua-wide { grid-column: 1 / -1; }
.ua-checks { display: flex; flex-direction: column; justify-content: flex-end; gap: 4px; }
.ua-check, .ua-grid .ua-check { display: flex; flex-direction: row; align-items: center; gap: 6px; font-weight: 400 !important; color: var(--text) !important; }
.ua-form fieldset { margin: 12px 0 0; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; display: flex; flex-direction: column; gap: 5px; }
.ua-form legend { padding: 0 4px; font-weight: 600; font-size: 12px; color: var(--text-muted); }
.ua-result { margin: 10px 0; padding: 8px 10px; border-radius: 8px; background: color-mix(in srgb, var(--accent, #2563eb) 10%, transparent); word-break: break-all; }
.ua-result code { font-size: 12px; }
@media (max-width: 640px) { .ua-head { flex-wrap: wrap; } .ua input[type=search] { min-width: 0; flex: 1; } }

/* permessi degli oggetti nel viewer (src/viewer/acl.js, "Vedi come") */
.card.acl-readonly > header::after { content: "🔒"; margin-left: 6px; font-size: 11px; opacity: .6; }
.auth-viewas { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; padding: 3px 10px; border-radius: 999px; background: color-mix(in srgb, #7c3aed 16%, transparent); color: var(--text); font: 12.5px system-ui, sans-serif; }
.auth-viewas + .app-user-slot { margin-left: 8px; }
.auth-viewas a { color: #7c3aed; font-weight: 600; }
.auth-select { height: 36px; padding: 0 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface-2, var(--surface)); color: var(--text); font: inherit; }

/* editor: oggetti senza "edit" (src/editor/aclPanel.js) e riquadro Permessi del super utente */
.acl-locked { position: relative; }
.editor-panel-item.acl-locked, .editor-group-head.acl-locked { opacity: .62; }
.editor-panel-item.acl-locked::after, .editor-group-head.acl-locked::after { content: "🔒"; position: absolute; right: 8px; bottom: 3px; font-size: 10px; }
.editor-card.acl-locked > header::after, .nest-card.acl-locked > header::after { content: "🔒"; margin-left: 6px; font-size: 11px; opacity: .7; }
.editor-card.acl-locked { outline: 1px dashed color-mix(in srgb, var(--text-muted) 55%, transparent); outline-offset: -1px; }
.acl-lock-banner { display: flex; gap: 8px; align-items: flex-start; margin: 0 0 10px; padding: 8px 10px; border-radius: 8px; background: color-mix(in srgb, #f59e0b 16%, transparent); font: 12.5px/1.4 system-ui, sans-serif; color: var(--text); }
.editor-inspector-form[inert] { opacity: .6; }
.acl-box { margin: 14px 0 6px; border: 1px solid var(--border); border-radius: 10px; font: 12.5px/1.4 system-ui, sans-serif; }
.acl-box > summary { padding: 8px 10px; cursor: pointer; font-weight: 700; }
.acl-body { padding: 4px 10px 10px; }
.acl-levels { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 6px; }
.acl-levels button { padding: 3px 9px; border: 1px solid var(--border); border-radius: 999px; background: none; color: var(--text-muted); font: 600 11.5px system-ui, sans-serif; cursor: pointer; }
.acl-levels button[aria-selected="true"] { background: var(--accent, #2563eb); border-color: var(--accent, #2563eb); color: #fff; }
.acl-note { margin: 4px 0 8px; color: var(--text-muted); font-size: 11.5px; }
.acl-err, .acl-msg[data-kind="error"] { color: #dc2626; }
.acl-msg { margin: 6px 0; color: #16a34a; }
.acl-rules { width: 100%; border-collapse: collapse; }
.acl-rules td, .acl-rules th { padding: 3px 2px; text-align: left; font-size: 11.5px; }
.acl-rules th { color: var(--text-muted); font-weight: 600; }
.acl-box select { width: 100%; max-width: 100%; height: 28px; border: 1px solid var(--border); border-radius: 6px; background: var(--surface); color: var(--text); font: 12px system-ui, sans-serif; }
.acl-why select { width: auto; max-width: 60%; }
.acl-box button { height: 28px; padding: 0 9px; border: 1px solid var(--border); border-radius: 6px; background: var(--surface); color: var(--text); font: 600 12px system-ui, sans-serif; cursor: pointer; }
.acl-box .acl-primary { background: var(--accent, #2563eb); border-color: var(--accent, #2563eb); color: #fff; }
.acl-row { display: flex; gap: 6px; align-items: center; margin-top: 6px; }
.acl-grow { flex: 1; }
.acl-why { margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--border); }
.acl-why ul { margin: 6px 0; padding-left: 16px; }
.acl-why li.is-yes b { color: #16a34a; } .acl-why li.is-no b { color: #dc2626; }
.ua-matrix td.ua-perm { width: 64px; text-align: center; font-weight: 700; }
.ua-matrix td.is-yes { color: #16a34a; } .ua-matrix td.is-no { color: #dc2626; }
.ua-matrix tr.ua-k-group td:first-child { font-weight: 700; } .ua-matrix tr.ua-k-dashboard td:first-child { font-weight: 800; }
.ua-rule { display: inline-block; margin: 1px 2px; padding: 0 6px; border-radius: 999px; background: color-mix(in srgb, #16a34a 14%, transparent); white-space: nowrap; }
.ua-rule.is-deny { background: color-mix(in srgb, #dc2626 14%, transparent); }
.ua-note { margin: 8px 0 0; color: var(--text-muted); font-size: 12px; }

/* Single sign-on (SEC-3): pulsante del provider, separatore, password riservata agli amministratori */
.auth-sso { display: block; margin: 4px 0 2px; padding: 10px 14px; border-radius: 8px; text-align: center; font-weight: 600;
  text-decoration: none; color: var(--accent-contrast, #fff); background: var(--accent, #2563eb); }
.auth-sso:hover, .auth-sso:focus-visible { filter: brightness(1.08); outline: 2px solid var(--accent, #2563eb); outline-offset: 2px; }
.auth-or { display: flex; align-items: center; gap: 8px; margin: 10px 0 2px; color: var(--text-muted); font-size: 12px; }
.auth-or::before, .auth-or::after { content: ""; flex: 1; border-top: 1px solid var(--border); }
.auth-local > summary { cursor: pointer; color: var(--text-muted); font-size: 13px; margin: 4px 0; }
.auth-local[open] > summary { margin-bottom: 6px; }
.ua-sso { display: inline-block; padding: 0 5px; border-radius: 4px; font-size: 10.5px; font-weight: 700; letter-spacing: .04em;
  color: var(--accent, #2563eb); border: 1px solid currentColor; vertical-align: 1px; }
