/* Clip the outer silhouette; scroll only the form, including on short screens. */
#loginDialog{width:min(440px,calc(100% - 32px));max-height:calc(min(100dvh,var(--mobile-visible-height,100dvh)) - 32px);padding:6px;border:1px solid var(--border);border-radius:24px;overflow:hidden;background:var(--surface);color:var(--text);box-shadow:0 24px 80px color-mix(in srgb,var(--theme-deep) 28%,transparent)}
#loginDialog[open]{display:block}
#loginDialog::backdrop{background:color-mix(in srgb,var(--theme-deep) 62%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
/* Auto-height flex items can collapse in iOS Safari's native dialog layout. */
#loginDialog > #loginForm{display:block;flex:none;box-sizing:border-box;min-height:0;height:auto;max-height:calc(min(100dvh,var(--mobile-visible-height,100dvh)) - 48px);overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--border) transparent;scrollbar-gutter:stable both-edges;padding:22px 20px 18px;margin:0;border-radius:18px}
#loginDialog .login-brand{text-align:center;margin-bottom:24px}
#loginDialog .login-mark{width:64px;height:64px;margin:0 auto 14px;border:1px solid var(--border);border-radius:20px;background:var(--surface-2);overflow:hidden;box-shadow:0 3px 12px color-mix(in srgb,var(--text) 5%,transparent)}
#loginDialog .login-mark img{display:block;width:100%;height:100%;object-fit:cover}
#loginDialog h2{margin:0;font-size:23px;line-height:1.45;font-weight:700;letter-spacing:-.035em;color:var(--text)}
#loginDialog p{color:var(--muted);font-size:12px;line-height:1.7}
#loginDialog #loginIntro{margin:7px 0 0;font-size:12px;line-height:1.7}
#loginDialog .auth-tabs{gap:4px;margin:0 0 20px;padding:4px;border:1px solid var(--border);border-radius:12px;background:var(--surface-2)}
#loginDialog .auth-tab{min-height:38px;padding:7px 10px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);font-size:13px;font-weight:500;cursor:pointer}
#loginDialog .auth-tab.active{border-color:var(--border);background:var(--surface);color:var(--primary);font-weight:650;box-shadow:0 2px 5px color-mix(in srgb,var(--text) 4%,transparent)}
#loginDialog .field{gap:7px;color:var(--muted);font-size:12px;min-width:0}
#loginDialog .control{width:100%;min-width:0;min-height:42px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);font-size:14px}
#loginDialog .control::placeholder{color:var(--muted);opacity:.75}
#loginDialog .control:focus{outline:2px solid color-mix(in srgb,var(--primary) 24%,transparent);outline-offset:1px;border-color:var(--primary);box-shadow:none}
#loginDialog :is(button,a):focus-visible{outline:2px solid var(--primary);outline-offset:3px}
#loginDialog .captcha-row{grid-template-columns:minmax(0,1fr) 128px;align-items:stretch;gap:10px}
#loginDialog .captcha-row .control{font-size:14px;letter-spacing:1px}
#loginDialog .captcha-refresh{min-width:0;min-height:66px;padding:5px;border-color:var(--border);border-radius:10px;background:var(--surface-2);color:var(--muted);gap:3px}
#loginDialog .captcha-refresh img{width:112px;max-width:100%;height:auto;aspect-ratio:180/64;object-fit:contain;border-radius:5px}
#loginDialog .captcha-refresh span{font-size:10px;line-height:1.4}
#loginDialog .captcha-hint{font-size:11px;line-height:1.65;min-height:0;margin:7px 0 0!important;color:var(--muted)}
#loginDialog .login-error{color:var(--danger);min-height:0;margin:12px 0;font-size:12px;line-height:1.7;overflow-wrap:anywhere}
#loginDialog .login-error:empty{margin:0;height:16px}
#loginDialog .button{min-height:42px;padding:9px 12px;border-radius:10px;background:var(--surface);border:1px solid var(--border);color:var(--primary);font-size:13px;font-weight:600}
#loginDialog .button.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}
#loginDialog .button.primary:hover:not(:disabled){background:var(--theme-accent);border-color:var(--theme-accent)}
#loginDialog .auth-secondary-actions{margin-top:10px}
#loginDialog .auth-support-toggle{color:var(--primary);min-height:34px;font-size:12px;padding:7px 12px}
#loginDialog .auth-support-panel{padding:16px;margin-top:12px;border-color:var(--border);border-radius:12px;background:var(--surface-2)}
#loginDialog .auth-support-panel > strong{color:var(--text);font-size:13px}
#loginDialog .auth-support-panel > p{font-size:11px;line-height:1.7}
#loginDialog .verification-row{grid-template-columns:minmax(0,1fr) 116px;gap:8px}
#loginDialog .auth-helper{font-size:11px;line-height:1.7}
@media(max-width:540px){
 #loginDialog{width:calc(100% - 24px);max-width:calc(100% - 24px)!important;max-height:calc(min(100dvh,var(--mobile-visible-height,100dvh)) - 24px)!important;border-radius:22px;padding:5px}
 #loginDialog > #loginForm{padding:19px 12px 16px;border-radius:17px}
 #loginDialog .login-brand{margin-bottom:20px}
 #loginDialog h2{font-size:22px}
 #loginDialog .login-mark{width:60px;height:60px;margin-bottom:12px;border-radius:18px}
 #loginDialog .control{min-height:44px;font-size:16px}
 #loginDialog .auth-tab,#loginDialog .button,#loginDialog .auth-support-toggle{min-height:44px}
 #loginDialog .captcha-row{grid-template-columns:minmax(0,1fr) 116px;gap:8px}
 #loginDialog .captcha-row .control{font-size:16px;letter-spacing:0;padding-inline:10px}
 #loginDialog .captcha-refresh img{width:102px}
 #loginDialog .verification-row{grid-template-columns:minmax(0,1fr) 110px}
 #loginDialog .verification-row .button{width:auto;min-width:0;padding-inline:7px;font-size:12px}
 #loginDialog .auth-support-panel{padding:12px}
}
@media(max-width:360px){
 #loginDialog > #loginForm{padding-inline:9px}
 #loginDialog .captcha-row{grid-template-columns:minmax(0,1fr) 105px;gap:6px}
 #loginDialog .captcha-row .control{font-size:16px;padding-inline:8px}
 #loginDialog .captcha-refresh img{width:91px}
 #loginDialog .verification-row{grid-template-columns:1fr}
 #loginDialog .verification-row .button{width:100%}
}
/* Keep mobile authentication inside the visible area above the keyboard. */
@media(max-width:720px),(max-height:500px) and (pointer:coarse){
 html body #loginDialog[open]{position:fixed;inset:auto;top:var(--auth-viewport-top,0px);left:var(--auth-viewport-left,0px);width:var(--auth-visible-width,100vw);max-width:var(--auth-visible-width,100vw)!important;height:var(--auth-visible-height,100dvh);max-height:var(--auth-visible-height,100dvh)!important;box-sizing:border-box;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;touch-action:pan-y pinch-zoom;-webkit-overflow-scrolling:touch;scroll-padding-block:16px}
 #loginDialog::backdrop{background:var(--surface);backdrop-filter:none;-webkit-backdrop-filter:none}
 html body #loginDialog > #loginForm{width:100%;min-width:0;min-height:100%;height:auto;max-height:none;overflow:visible;padding:max(20px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(32px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));border-radius:0;scrollbar-gutter:auto}
 #loginDialog .login-brand{margin-bottom:18px}
 #loginDialog .login-mark{width:48px;height:48px;margin-bottom:8px;border-radius:14px}
 #loginDialog .control{font-size:16px;max-width:100%;box-sizing:border-box}
 #loginDialog .captcha-row{grid-template-columns:minmax(0,1fr);gap:10px}
 #loginDialog .captcha-row .control{width:100%;font-size:16px;min-height:48px}
 #loginDialog .captcha-refresh{order:-1;width:100%;min-height:80px;flex-direction:row;justify-content:space-between;padding:8px 12px;gap:12px}
 #loginDialog .captcha-refresh img{width:180px;max-width:65%;height:auto;flex:0 1 180px;object-fit:contain}
 #loginDialog .captcha-refresh span{font-size:12px;line-height:1.5}
 .auth-mobile-keyboard #loginDialog .login-mark,.auth-mobile-keyboard #loginDialog #loginIntro{display:none}
 .auth-mobile-keyboard #loginDialog .login-brand{margin-bottom:10px}
 .auth-mobile-keyboard #loginDialog h2{font-size:18px}
 .auth-mobile-keyboard #loginDialog .auth-tabs{margin-bottom:12px}
}
