/* BackupHub — pagine di autenticazione e widget captcha */

/* Sfondo opzionale (impostazione auth_background) */
.auth-page.has-auth-bg .public-main { background-size: cover; background-position: center; background-repeat: no-repeat; position: relative; }
.auth-page.has-auth-bg .public-main::before { content: ''; position: absolute; inset: 0; background: color-mix(in srgb, var(--bg) 35%, transparent); pointer-events: none; }
.auth-page.has-auth-bg .auth-wrap { position: relative; }
.auth-page.has-auth-bg .auth-card { box-shadow: 0 24px 70px rgba(0,0,0,.28); }
.auth-page:not(.has-auth-bg) .public-main { background: radial-gradient(1000px 420px at 50% -120px, color-mix(in srgb, var(--primary) 12%, transparent), transparent); }

.auth-card .auth-icon-center { margin-left: auto; margin-right: auto; }
.auth-card .form-actions { margin-top: 8px; }
.auth-card .btn-block + .btn-block { margin-top: 10px; }
.auth-card .check { font-size: .9rem; }
.auth-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 16px; }
.auth-row .check { margin: 0; }
.auth-footer-note { text-align: center; color: var(--muted); font-size: .85rem; margin-top: 18px; }
.auth-user { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface-2); margin-bottom: 18px; font-size: .9rem; }
.auth-user small { display: block; color: var(--muted); }
.auth-sep { border-top: 1px solid var(--border); margin: 22px 0 16px; }
.auth-methods { display: grid; gap: 8px; }
.auth-methods form { margin: 0; }

/* Campo codice OTP */
.otp-input { font-size: 1.6rem !important; letter-spacing: .5em; text-align: center; font-family: ui-monospace, 'SF Mono', Menlo, monospace; padding: 12px !important; }
.otp-input.backup { letter-spacing: .2em; font-size: 1.25rem !important; text-transform: uppercase; }

/* Indicatore robustezza password */
.pw-meter { height: 6px; border-radius: 99px; background: var(--surface-2); border: 1px solid var(--border); overflow: hidden; margin-top: 8px; }
.pw-meter span { display: block; height: 100%; width: 0; transition: width .25s, background .25s; background: var(--danger); }

/* Widget captcha ------------------------------------------------------------ */
.bh-captcha { margin: 4px 0 18px; }
.captcha-pow { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; border: 1px solid var(--border); background: var(--surface-2); border-radius: calc(var(--radius) - 2px); padding: 10px 12px; }
.captcha-check { display: flex; align-items: center; gap: 12px; border: 0; background: none; color: var(--text); font: inherit; font-weight: 550; cursor: pointer; padding: 4px 2px; }
.captcha-box { position: relative; width: 28px; height: 28px; border: 2px solid var(--border); border-radius: 6px; background: var(--surface); display: grid; place-items: center; transition: border-color .2s, background .2s; flex-shrink: 0; }
.captcha-check:hover .captcha-box, .captcha-check:focus-visible .captcha-box { border-color: var(--primary); }
.captcha-box .spinner { display: none; width: 18px; height: 18px; color: var(--primary); }
.captcha-tick { display: none; color: #fff; }
.captcha-pow.is-working .captcha-box { border-color: transparent; background: transparent; }
.captcha-pow.is-working .captcha-box .spinner { display: inline-block; }
.captcha-pow.is-done .captcha-box { background: var(--success); border-color: var(--success); }
.captcha-pow.is-done .captcha-tick { display: grid; }
.captcha-pow.is-done .captcha-check { cursor: default; }
.captcha-pow.is-error .captcha-box { border-color: var(--danger); }
.captcha-brand { display: flex; flex-direction: column; align-items: center; color: var(--muted); line-height: 1.1; }
.captcha-brand small { font-size: .66rem; margin-top: 2px; }
.captcha-msg { flex-basis: 100%; font-size: .8rem; color: var(--muted); min-height: 0; }
.captcha-msg:empty { display: none; }
.captcha-pow.is-error .captcha-msg { color: var(--danger); }
.captcha-pow.is-done .captcha-msg { color: var(--success); }

.captcha-text-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.captcha-img { border: 1px solid var(--border); border-radius: 8px; background: #f5f5f8; height: 64px; max-width: 100%; image-rendering: auto; }

.captcha-external { min-height: 20px; }
.captcha-external .g-recaptcha, .captcha-external .h-captcha, .captcha-external .cf-turnstile { max-width: 100%; overflow: hidden; }
.captcha-consent { display: flex; gap: 10px; align-items: flex-start; font-size: .85rem; border: 1px dashed var(--border); border-radius: var(--radius); padding: 10px 12px; background: var(--surface-2); }
.captcha-consent p { margin: 0 0 8px; }
.captcha-consent .icon { color: var(--primary); margin-top: 2px; }
.captcha-v3-note { font-size: .75rem; }
