.ps-dialog{color:var(--fg);background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-panel);width:min(540px,calc(100vw - var(--s-6)));max-height:calc(100dvh - var(--s-6));padding:0;font-family:var(--font-ui);box-shadow:0 24px 80px #0008;overflow:auto}
.ps-dialog::backdrop{background:rgba(0,0,0,.72);backdrop-filter:blur(4px)}
.ps-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-6);border-bottom:1px solid var(--line)}
.ps-heading h2,.ps-login h2{font-family:var(--font-display);font-size:var(--fs-h2);line-height:1.1;margin:var(--s-2) 0 0;color:var(--fg)}
.ps-eyebrow{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.14em;color:var(--accent)}
.ps-body{padding:var(--s-6)}
.ps-body form,.ps-login form{display:grid;gap:var(--s-4)}
.ps-body label,.ps-login label{display:grid;gap:var(--s-2);font-size:var(--fs-ui);color:var(--fg)}
.ps-body input,.ps-login input{box-sizing:border-box;width:100%;min-height:48px;background:var(--bg);color:var(--fg);border:1px solid var(--line-2);border-radius:var(--r-input);padding:var(--s-3) var(--s-4);font-family:var(--font-ui);font-size:var(--fs-ui);outline:none}
.ps-body input:focus,.ps-login input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}
.ps-code{font-family:var(--font-mono)!important;letter-spacing:.14em;text-align:center}
.ps-button,.ps-close{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--tap-min);padding:var(--s-3) var(--s-4);background:var(--panel-2);color:var(--fg);border:1px solid var(--line-2);border-radius:var(--r-btn);font:600 var(--fs-ui) var(--font-ui);cursor:pointer;transition:background var(--dur-base) var(--ease-out),transform var(--dur-fast) var(--ease-out)}
.ps-close{width:44px;flex:none;padding:var(--s-3)}
.ps-button svg,.ps-close svg{width:20px;height:20px;flex:none}
.ps-button:hover:not(:disabled){background:var(--panel-3);transform:translateY(-1px)}
.ps-button:focus-visible,.ps-close:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.ps-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.ps-primary:hover:not(:disabled){background:var(--accent-2)}
.ps-danger{color:var(--danger)}
.ps-button:disabled{opacity:.55;cursor:wait}
.ps-muted{color:var(--fg-2);font-size:var(--fs-small);line-height:1.65;margin:var(--s-3) 0 var(--s-5)}
.ps-error{padding:var(--s-3);border:1px solid var(--danger);border-radius:var(--r-input);color:var(--danger);font-size:var(--fs-small);line-height:1.5;margin:0}
.ps-mark{display:grid;place-items:center;flex:none;width:64px;height:64px;border:1px solid var(--line-2);border-radius:var(--r-card);background:var(--accent-bg);color:var(--accent);margin-bottom:var(--s-4)}
.ps-mark svg{width:30px;height:30px}.ps-success{color:var(--ok);background:var(--panel-2)}
.ps-security-status{display:flex;gap:var(--s-4);align-items:center;margin-bottom:var(--s-5)}
.ps-security-status .ps-mark{margin:0}.ps-security-status p{margin:var(--s-2) 0 0}
.ps-actions,.ps-links{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:var(--s-4) 0}
.ps-actions>*{flex:1}.ps-links .ps-button{background:transparent;font-size:var(--fs-small);padding-inline:var(--s-2)}
.ps-qr{display:flex;justify-content:center;margin:var(--s-4) 0}.ps-qr img{width:200px;height:200px;border-radius:var(--r-input);background:white;padding:var(--s-2)}
.ps-manual{font-size:var(--fs-small);margin-bottom:var(--s-5)}.ps-manual summary{cursor:pointer;min-height:44px;display:flex;align-items:center;color:var(--fg-2)}
.ps-manual code{display:block;overflow-wrap:anywhere;font:var(--fs-small) var(--font-mono);padding:var(--s-3);background:var(--bg);margin-bottom:var(--s-2)}
.ps-recovery{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-2);padding:var(--s-4);border:1px solid var(--line);background:var(--bg);border-radius:var(--r-card)}
.ps-recovery code{font:var(--fs-tiny) var(--font-mono);overflow-wrap:anywhere;line-height:1.8}
.ps-login{width:100%;max-width:440px;margin:auto;animation:ps-reveal var(--dur-slow) var(--ease-out) both}.ps-login .ps-mark{animation:ps-mark var(--dur-reveal) var(--ease-spring) both}
.ps-loading{text-align:center;padding:var(--s-6);color:var(--fg-2)}.ps-loading>svg{width:36px;height:36px;color:var(--accent)}
.site-api-security{padding:var(--s-4) 0;border-top:1px solid var(--line)}.site-api-security textarea{width:100%;min-height:100px;font:var(--fs-small) var(--font-mono)}
.ps-account-button{flex-shrink:0}.ps-account-button svg{width:20px;height:20px}
@keyframes ps-reveal{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes ps-mark{from{opacity:0;transform:scale(.8) rotate(-8deg)}to{opacity:1;transform:none}}
@media(max-width:540px){.ps-dialog{width:calc(100vw - var(--s-4));max-height:calc(100dvh - var(--s-4));border-radius:var(--r-sheet)}.ps-heading,.ps-body{padding:var(--s-5)}.ps-actions{flex-direction:column}.ps-recovery{grid-template-columns:1fr}.ps-login{max-width:100%}}
@media(prefers-reduced-motion:reduce){.ps-login,.ps-login .ps-mark{animation:none}.ps-button{transition:none}.ps-button:hover:not(:disabled){transform:none}}
