.portal-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;flex-direction:column;gap:16px;width:min(420px,100%);padding:clamp(24px,4vw,36px);display:flex;position:relative;box-shadow:0 24px 60px #0f1b3014}.portal-card-title{font:700 clamp(24px, 3vw, 30px) / 1.1 var(--font-display), sans-serif;letter-spacing:-.02em;color:var(--ink);margin:0}.portal-card-sub{color:var(--text-faint);font-size:var(--portal-fs-secondary,15px);margin:-6px 0 4px}.portal-field{flex-direction:column;gap:6px;display:flex}.portal-field>span{font-size:var(--portal-fs-secondary,15px);color:var(--ink);font-weight:600}.portal-field input{border:1px solid var(--border);font:inherit;font-size:var(--portal-fs-secondary,15px);color:var(--ink);background:var(--surface);border-radius:10px;padding:11px 13px}.portal-field input:focus{border-color:var(--accent);background:var(--surface);outline:none}.portal-field input[aria-invalid=true]{border-color:var(--danger)}.portal-field>.portal-field-hint,.portal-field>.portal-field-error{font-size:var(--portal-fs-secondary,15px);font-weight:400;line-height:1.4}.portal-field>.portal-field-hint{color:var(--text-soft)}.portal-field>.portal-field-error{color:var(--danger);font-weight:500}.portal-btn{font:600 var(--portal-fs-secondary,15px) var(--font-body), sans-serif;color:#fff;background:var(--accent);cursor:pointer;border:none;border-radius:10px;margin-top:4px;padding:12px 16px;transition:background .18s}.portal-btn:hover:not(:disabled){background:var(--accent-deep)}.portal-btn:disabled{opacity:.65;cursor:default}.portal-error{color:var(--danger);font-size:var(--portal-fs-secondary,15px);margin:0;font-weight:500}.portal-text-btn{min-height:44px;color:var(--accent);font:inherit;font-size:var(--portal-fs-secondary,15px);cursor:pointer;background:0 0;border:none;align-self:flex-start;align-items:center;margin:-8px 0 0;padding-inline:0;font-weight:600;display:inline-flex}.portal-text-btn:hover:not(:disabled){text-decoration:underline}.portal-text-btn:disabled{color:var(--text-faint);cursor:default}.portal-field-aside{text-align:right;font-size:var(--portal-fs-secondary,15px);margin:-6px 0 2px}.portal-field-aside a{color:var(--accent);font-weight:500;text-decoration:none}.portal-field-aside a:hover{text-decoration:underline}.portal-alt{text-align:center;font-size:var(--portal-fs-secondary,15px);color:var(--text-faint);margin:4px 0 0}.portal-alt a{color:var(--accent);font-weight:600;text-decoration:none}.portal-alt a:hover{text-decoration:underline}.pw-field{position:relative}.pw-field input{width:100%;padding-right:44px}.pw-toggle{width:32px;height:32px;color:var(--text-faint);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;transition:color .16s;display:inline-flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.pw-toggle:hover{color:var(--ink)}.portal-close{border:1px solid var(--border);background:var(--surface);width:32px;height:32px;color:var(--text-faint);cursor:pointer;border-radius:9px;place-items:center;transition:background .18s,color .18s;display:grid;position:absolute;top:14px;right:14px}.portal-close:hover{background:var(--surface);color:var(--ink)}.portal-sent-icon{background:var(--chip-bg);border:1px solid var(--chip-border);width:52px;height:52px;color:var(--accent);border-radius:50%;place-items:center;margin:0 auto 16px;display:grid}.portal-sent-icon--success{background:var(--success-bg);color:var(--success);border-color:#0000}.portal-btn-center{text-align:center;width:fit-content;margin:18px auto 0;text-decoration:none;display:block}.portal-alt .portal-link-btn{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}.portal-alt .portal-link-btn:hover{text-decoration:underline}.auth-dialog{z-index:1000;background:var(--scrim);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-family:var(--font-body), system-ui, sans-serif;place-items:center;padding:40px 20px;display:grid;position:fixed;inset:0;overflow-y:auto}.auth-dialog-panel{width:min(420px,100%)}.auth-dialog-panel .portal-card{box-shadow:var(--shadow-hero)}@media (max-width:560px){.auth-dialog{padding:24px 16px}}
