/* SMS OTP dialog (otp-sms.js). Self-contained like face-capture.css: used on register.html and workspace.html. */
.otp-dialog{width:min(420px,calc(100vw - 32px));max-height:calc(100dvh - 24px);overflow:auto;border:1px solid var(--bu-border,#eadfe7);border-radius:24px;padding:28px;background:var(--bu-surface,#fff);color:var(--bu-text,#2b1d26);font:inherit;text-align:left;box-shadow:var(--bu-shadow-lg,0 32px 80px -28px #2b1d2640)}
.otp-dialog::backdrop{background:#0009;backdrop-filter:blur(8px)}
.otp-dialog [hidden]{display:none!important}
.otp-kicker{font-size:11px;letter-spacing:.1em;font-weight:700;color:var(--bu-primary,#9b4d6b)}
.otp-dialog h2{font-size:22px;margin:8px 0 6px;line-height:1.3}
.otp-sub{font-size:13px!important;line-height:1.7!important;color:var(--bu-muted,#6f5d6a);margin:0 0 14px}
.otp-reason{font-size:13px!important;line-height:1.6!important;margin:0 0 14px;padding:10px 12px;border-radius:12px;background:var(--bu-warning-bg,#fcece3);color:var(--bu-warning,#9a4f2e)}
.otp-form{display:grid;gap:14px;margin:0}
.otp-label{display:block;font-size:12px;font-weight:600;color:var(--bu-muted,#6f5d6a);margin-bottom:6px}
.otp-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.otp-phone-fixed{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:10px 14px;border:1px solid var(--bu-border,#eadfe7);border-radius:12px;background:var(--bu-surface-soft,#f3ecf2)}
.otp-phone-fixed strong{font-size:16px;letter-spacing:.04em;font-variant-numeric:tabular-nums}
.otp-dialog input{box-sizing:border-box;width:100%;min-height:48px;border:1px solid var(--bu-border-strong,#d4c4d0);border-radius:12px;background:var(--bu-surface,#fff);color:var(--bu-text,#2b1d26);padding:10px 14px;font:inherit;font-size:16px}
.otp-dialog input:focus-visible,.otp-dialog button:focus-visible{outline:2px solid var(--bu-focus,#9b4d6b);outline-offset:2px}
.otp-dialog input[aria-invalid=true]{border-color:var(--bu-danger,#b42345)}
.otp-dialog .otp-code{text-align:center;font-family:var(--bu-mono,"JetBrains Mono",monospace);font-size:28px;font-weight:700;letter-spacing:.45em;padding-left:calc(14px + .45em);font-variant-numeric:tabular-nums;min-height:60px}
.otp-dialog .otp-code:disabled{opacity:.55}
.otp-error{margin:6px 0 0;font-size:13px!important;line-height:1.6!important;font-weight:600;color:var(--bu-danger,#b42345)}
.otp-hint{margin:6px 0 0;font-size:12px!important;line-height:1.6!important;color:var(--bu-muted,#6f5d6a)}
.otp-sent{margin:0 0 10px;font-size:14px!important;font-weight:600;color:var(--bu-primary,#9b4d6b)}
.otp-dialog.is-ok .otp-sent::before{content:"✓ "}
.otp-sms{border-radius:16px;padding:12px 14px;background:var(--bu-surface-soft,#f3ecf2);border:1px solid var(--bu-border,#eadfe7);box-shadow:var(--bu-shadow,0 12px 32px -16px #2b1d2629)}
.otp-sms.is-new{animation:otp-in .45s var(--bu-ease,cubic-bezier(.22,1,.36,1))}
.otp-sms-head{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--bu-muted,#6f5d6a);margin-bottom:6px}
.otp-sms-head strong{color:var(--bu-text,#2b1d26)}
.otp-sms-time{margin-left:auto}
.otp-sms-icon{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:7px;background:var(--bu-gradient,linear-gradient(120deg,#ecc6dd 0%,#efc3d3 55%,#f3c6ae 100%));color:#2b1d26;font-size:12px}
.otp-sms-body{margin:0;font-size:14px!important;line-height:1.6!important;color:var(--bu-text,#2b1d26)}
@keyframes otp-in{from{opacity:0;transform:translateY(-8px)}}
.otp-link{justify-self:start;border:0;background:none;padding:6px 0;color:var(--bu-primary,#9b4d6b);font:inherit;font-size:13px;font-weight:700;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.otp-link:disabled{color:var(--bu-muted,#6f5d6a);text-decoration:none;cursor:default;font-weight:600}
.otp-entry{display:grid}
.otp-entry .otp-resend{margin-top:8px}
.otp-actions{display:flex;gap:10px;margin-top:4px}
.otp-actions>*{flex:1}
.otp-cancel{min-height:50px;border:1px solid var(--bu-border,#eadfe7);border-radius:12px;background:transparent;color:var(--bu-text,#2b1d26);font:inherit;font-size:14px;font-weight:600;cursor:pointer}
.otp-primary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:50px;border:1px solid transparent;border-radius:12px;background:var(--bu-gradient,linear-gradient(120deg,#ecc6dd 0%,#efc3d3 55%,#f3c6ae 100%));color:#2b1d26;padding:12px 18px;font:inherit;font-weight:700;font-size:14px;cursor:pointer}
.otp-primary:disabled{opacity:.55;cursor:default}
.otp-privacy{font-size:11px!important;line-height:1.6!important;color:var(--bu-muted,#6f5d6a);margin:14px 0 0}
@media(max-width:420px){.otp-dialog{padding:22px 18px;border-radius:20px}.otp-dialog .otp-code{font-size:24px;letter-spacing:.35em;padding-left:calc(14px + .35em)}}
@media(prefers-reduced-motion:reduce){.otp-sms.is-new{animation:none}}
