@keyframes shake-error{0%{transform:translateX(0)}20%{transform:translateX(-10px)}40%{transform:translateX(10px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}to{transform:translateX(0)}}.shake-error{animation:shake-error .5s linear;border-color:var(--status-danger)!important}.form-field.error input,.form-field.error select,.form-field.error textarea{border-color:var(--status-danger)!important;box-shadow:0 0 0 .2rem var(--status-danger-bg)!important}.field-error{color:var(--status-danger);font-size:.875rem;margin-top:.25rem;display:block}.password-strength{margin-top:.5rem}.password-strength .strength-bar{height:4px;background:var(--surface-subtle);border-radius:2px;overflow:hidden}.password-strength .strength-fill{height:100%;transition:width .3s,background-color .3s}.password-strength .strength-fill.weak{background-color:var(--status-danger);width:33%}.password-strength .strength-fill.medium{background-color:var(--status-warning);width:66%}.password-strength .strength-fill.strong{background-color:var(--status-success);width:100%}.auth-loading{opacity:.6;pointer-events:none;position:relative}.auth-loading::after{content:"";position:absolute;top:50%;left:50%;width:20px;height:20px;margin:-10px 0 0-10px;border:2px solid var(--color-border);border-top:2px solid var(--color-accent);border-radius:50%;animation:auth-loading-spin 1s linear infinite}@keyframes auth-loading-spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}