.form-input,.form-select,.form-textarea{position:relative;width:100%;padding:12px 16px;font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text-primary);background-color:var(--color-bg-primary);border:var(--border-width-thin) solid var(--color-border-light);border-radius:var(--border-radius-md);transition:all var(--transition-fast);outline:0}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-alpha-10)}.form-input.is-valid,.form-select.is-valid,.form-textarea.is-valid{border-color:var(--color-success);padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z' fill='%234CAF50'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:20px 20px}.form-input.is-valid:focus,.form-select.is-valid:focus,.form-textarea.is-valid:focus{border-color:var(--color-success);box-shadow:0 0 0 3px rgba(76,175,80,.1)}.form-input.is-invalid,.form-select.is-invalid,.form-textarea.is-invalid{border-color:var(--color-error);padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z' fill='%23F44336'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:20px 20px}.form-input.is-invalid:focus,.form-select.is-invalid:focus,.form-textarea.is-invalid:focus{border-color:var(--color-error);box-shadow:0 0 0 3px rgba(244,67,54,.1)}.form-input:disabled,.form-select:disabled,.form-textarea:disabled{background-color:var(--color-gray-100);color:var(--color-text-disabled);cursor:not-allowed;opacity:.6}.form-group{position:relative;margin-bottom:var(--spacing-md)}.form-label{display:block;margin-bottom:var(--spacing-xs);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.form-label.required::after{content:' *';color:var(--color-error)}.form-help-text{display:block;margin-top:var(--spacing-xs);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.form-error-message{display:none;margin-top:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs);color:var(--color-error);background-color:var(--color-error-light);border-left:3px solid var(--color-error);border-radius:var(--border-radius-sm);animation:slideDown var(--transition-fast)}.form-error-message.show{display:block}.form-success-message{display:none;margin-top:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs);color:var(--color-success-dark);background-color:var(--color-success-light);border-left:3px solid var(--color-success);border-radius:var(--border-radius-sm);animation:slideDown var(--transition-fast)}.form-success-message.show{display:block}.form-input-wrapper{position:relative}.form-input-icon{position:absolute;top:50%;transform:translateY(-50%);color:var(--color-text-tertiary);pointer-events:none}.form-input-icon.left{left:12px}.form-input-icon.right{right:12px}.form-input.has-icon-left{padding-left:40px}.form-input.has-icon-right{padding-right:40px}.form-checkbox,.form-radio{position:relative;display:inline-flex;align-items:center;cursor:pointer;user-select:none}.form-checkbox input[type=checkbox],.form-radio input[type=radio]{position:absolute;opacity:0;width:0;height:0}.form-checkbox-mark,.form-radio-mark{position:relative;display:inline-block;width:20px;height:20px;margin-right:var(--spacing-sm);background-color:var(--color-bg-primary);border:2px solid var(--color-border-medium);border-radius:var(--border-radius-sm);transition:all var(--transition-fast)}.form-radio-mark{border-radius:var(--border-radius-full)}.form-checkbox input:checked~.form-checkbox-mark,.form-radio input:checked~.form-radio-mark{background-color:var(--color-primary);border-color:var(--color-primary)}.form-checkbox-mark::after{content:'';position:absolute;display:none;left:6px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.form-checkbox input:checked~.form-checkbox-mark::after{display:block}.form-radio-mark::after{content:'';position:absolute;display:none;left:50%;top:50%;transform:translate(-50%,-50%);width:8px;height:8px;background-color:#fff;border-radius:var(--border-radius-full)}.form-radio input:checked~.form-radio-mark::after{display:block}@keyframes slideDown{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-5px)}20%,40%,60%,80%{transform:translateX(5px)}}.form-input.shake,.form-textarea.shake{animation:.5s shake}.form-validation-indicator{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:20px;height:20px;opacity:0;transition:opacity var(--transition-fast)}.form-validation-indicator.show{opacity:1}.form-validation-spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--color-gray-300);border-top-color:var(--color-primary);border-radius:50%;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.password-strength{margin-top:var(--spacing-xs)}.password-strength-bar{height:4px;background-color:var(--color-gray-200);border-radius:var(--border-radius-full);overflow:hidden}.password-strength-fill{height:100%;width:0%;transition:all var(--transition-base);border-radius:var(--border-radius-full)}.password-strength-fill.weak{width:33%;background-color:var(--color-error)}.password-strength-fill.medium{width:66%;background-color:var(--color-warning)}.password-strength-fill.strong{width:100%;background-color:var(--color-success)}.password-strength-text{margin-top:var(--spacing-xs);font-size:var(--font-size-xs);color:var(--color-text-secondary)}