/* * Shared password-strength UI: show/hide toggle, strength meter, rule * checklist, and confirm-match indicator. Used on the register, profile, * admin create/edit user, and password reset forms. * * Relies on the --bg, --border, --border2, --muted, --success, --danger, * --accent CSS custom properties already defined by each page's theme * (see base.html for admin/auth pages, or the page's own :root block for * the standalone auth pages). */ .pw-wrap { position: relative; } .pw-wrap input { padding-right: 42px; } .pw-toggle { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); background: none; border: none; color: var(--muted); cursor: pointer; font-size: 16px; padding: 4px; line-height: 1; transition: color .15s; } .pw-toggle:hover { color: var(--accent); } .pw-strength-wrap { margin-top: 8px; } .pw-strength-track { height: 4px; background: var(--border); border-radius: 2px; overflow: hidden; margin-bottom: 6px; } .pw-strength-fill { height: 100%; border-radius: 2px; width: 0%; transition: width .3s ease, background .3s ease; } .pw-strength-label { font-size: 11px; font-weight: 600; letter-spacing: .3px; display: flex; align-items: center; gap: 5px; transition: color .3s; } .pw-rules { margin-top: 8px; display: grid; grid-template-columns: 1fr 1fr; gap: 3px 12px; background: var(--bg); border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px; } .pw-rule { display: flex; align-items: center; gap: 5px; font-size: 11.5px; color: var(--muted); transition: color .2s; } .pw-rule .ri { font-size: 13px; width: 14px; text-align: center; transition: color .2s, transform .15s; } .pw-rule.met { color: var(--success); } .pw-rule.met .ri { color: var(--success); transform: scale(1.1); } .pw-rule.unmet .ri { color: var(--border2); } .pw-match { font-size: 11.5px; margin-top: 6px; display: flex; align-items: center; gap: 5px; font-weight: 600; letter-spacing: .2px; min-height: 18px; transition: color .2s; } .pw-match.ok { color: var(--success); } .pw-match.fail { color: var(--danger); } .pw-input.valid { border-color: var(--success) !important; box-shadow: 0 0 0 3px rgba(5,150,105,.08) !important; } .pw-input.invalid { border-color: var(--danger) !important; box-shadow: 0 0 0 3px rgba(220,38,38,.08) !important; }