/* One motion/paint contract for native dialogs and standard legacy popups. */
:root{--zb-modal-duration:200ms;--zb-modal-easing:ease;--zb-modal-backdrop:rgba(0,0,0,.30);--zb-modal-blur:2px}
/* The card has one steady shadow, not a second focus ring around the dialog.
   Focus indicators on buttons, links and fields inside it remain untouched. */
html body :is(dialog,#zbConfirmModal){box-shadow:0 12px 40px rgb(0 0 0 / 20%)!important;outline:none!important}
/* !important narrowly defeats the legacy shell's blanket transition disable. */
html body dialog,html.disable-transitions body dialog,html body.disable-transitions dialog{opacity:0;transition:opacity var(--zb-modal-duration) var(--zb-modal-easing),display var(--zb-modal-duration) allow-discrete,overlay var(--zb-modal-duration) allow-discrete!important}
html body dialog[open]{opacity:1}
html body dialog::backdrop{background:var(--zb-modal-backdrop)!important;backdrop-filter:blur(var(--zb-modal-blur))!important;-webkit-backdrop-filter:blur(var(--zb-modal-blur))!important;opacity:0;transition:opacity var(--zb-modal-duration) var(--zb-modal-easing),display var(--zb-modal-duration) allow-discrete,overlay var(--zb-modal-duration) allow-discrete!important}
html body dialog[open]::backdrop{opacity:1}
html body dialog[data-zb-modal-closing],html body dialog[data-zb-modal-closing]::backdrop{opacity:0!important;pointer-events:none}
@starting-style{html body dialog[open],html body dialog[open]::backdrop{opacity:0}}
@media(prefers-reduced-motion:reduce){:root{--zb-modal-duration:0ms}html body dialog,html.disable-transitions body dialog,html body.disable-transitions dialog,html body dialog::backdrop{transition:none!important}}
.zb-popup-backdrop{position:fixed;inset:0;pointer-events:none;background:var(--zb-modal-backdrop);backdrop-filter:blur(var(--zb-modal-blur));-webkit-backdrop-filter:blur(var(--zb-modal-blur))}
:is(#customAgentCont,#subscriptionCont,#walletModal,#zbCustomPopup,#feedbackModal,#embedCont).zb-popup-overlay{background:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
/* One height for direct Create/Edit Agent footer actions, including icon-only delete. */
#customAgentCont {--zb-agent-footer-button-height:44px}
html body #customAgentCont #customAgentBtns > button{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;height:var(--zb-agent-footer-button-height);min-height:var(--zb-agent-footer-button-height);padding-top:0;padding-bottom:0;vertical-align:top}
html body #customAgentCont #customAgentBtns > #deleteAgent{width:var(--zb-agent-footer-button-height);min-width:var(--zb-agent-footer-button-height)}
/* MFA is a content step of the existing login card, not another modal. */
#loginModalOverlay .zb-login-first-step[hidden]{display:none!important}
#loginModalOverlay .zb-login-mfa form{display:flex;flex-direction:column;gap:14px;margin-top:10px}
#loginModalOverlay .zb-login-mfa label{font-size:14px;font-weight:400;color:var(--text-200)}
#loginModalOverlay .zb-login-mfa input.form-control{padding-left:16px!important}
#loginModalOverlay .zb-login-mfa .zb-mfa-toggle{align-self:flex-start;padding:0;border:0;background:transparent;color:var(--text-200);font:inherit;font-size:13px;text-decoration:underline;cursor:pointer;margin:0}
#loginModalOverlay .zb-login-mfa .btn{width:100%;background:var(--bg-300);color:var(--text-200);border:1px solid var(--border-200);border-radius:999px;min-height:40px}
#loginModalOverlay .zb-login-mfa .btn:hover{background:var(--bg-200)}
#loginModalOverlay .zb-login-mfa .zb-mfa-back{margin-top:12px;background:transparent}
#loginModalOverlay .zb-login-mfa [role="status"]{font-size:13px;line-height:1.45;color:var(--text-200);overflow-wrap:anywhere}
#loginModalOverlay .zb-login-mfa [role="status"]:empty{display:none}
#loginModalOverlay .zb-login-mfa button:disabled,#loginModalOverlay .zb-login-modal-close:disabled{opacity:.55;cursor:wait}
