/* Input Component Styles */
.ui-input-wrapper {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-lg);
}

.ui-input-label {
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-text);
    margin-bottom: var(--spacing-xs);
}

.ui-input-required {
    color: var(--color-danger);
    margin-left: var(--spacing-xs);
}

.ui-input {
    width: 100%;
    padding: var(--input-padding-y) var(--input-padding-x);
    font-size: var(--font-size-base);
    line-height: var(--line-height-base);
    color: var(--color-text);
    background-color: var(--color-bg);
    border: var(--input-border-width) solid var(--color-border);
    border-radius: var(--border-radius-lg);
    transition: all var(--transition-base);
    box-sizing: border-box;
}

.ui-input:focus {
    outline: none;
    border-color: var(--color-border-focus);
    box-shadow: var(--shadow-focus);
}

.ui-input:disabled {
    background-color: var(--color-bg-disabled);
    color: var(--color-text-secondary);
    cursor: not-allowed;
    opacity: 0.6;
}

.ui-input:read-only {
    background-color: var(--color-bg-disabled);
    cursor: default;
}

.ui-input::placeholder {
    color: var(--color-text-muted);
    opacity: 0.7;
}

/* Input Help Text */
.ui-input-help {
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
    margin-top: calc(var(--spacing-xs) * -1);
}

/* Input Error */
.ui-input-error {
    font-size: var(--font-size-sm);
    color: var(--color-danger);
    margin-top: calc(var(--spacing-xs) * -1);
}

.ui-input-error + .ui-input,
.ui-input-wrapper:has(.ui-input-error) .ui-input {
    border-color: var(--color-border-error);
}

.ui-input-wrapper:has(.ui-input-error) .ui-input:focus {
    border-color: var(--color-border-error);
    box-shadow: var(--shadow-error);
}

/* Input Invalid State (for JavaScript validation) */
.ui-input-wrapper.ui-input-invalid .ui-input {
    border-color: var(--color-border-error);
}

.ui-input-wrapper.ui-input-invalid .ui-input:focus {
    border-color: var(--color-border-error);
    box-shadow: var(--shadow-error);
}

/* Input Focused State */
.ui-input-wrapper.ui-input-focused .ui-input {
    border-color: var(--color-border-focus);
}

/* Password Input Wrapper */
.ui-input-password-wrapper {
    position: relative;
    display: flex;
    align-items: center;
}

.ui-input-password-wrapper .ui-input {
    padding-right: 48px; /* Место для кнопки */
}

/* Password Toggle Button */
.ui-input-password-toggle {
    position: absolute;
    right: var(--spacing-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background: transparent;
    border: none;
    cursor: pointer;
    color: var(--color-text-secondary);
    transition: all var(--transition-base);
    border-radius: var(--border-radius-sm);
    padding: 0;
}

.ui-input-password-toggle:hover {
    color: var(--color-text);
    background: var(--color-bg-secondary);
}

.ui-input-password-toggle:active {
    /* Убираем transform чтобы кнопка не скакала при нажатии */
    background: var(--color-bg-secondary);
}

.ui-input-password-toggle:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.ui-input-password-icon-eye,
.ui-input-password-icon-eye-off {
    width: 20px;
    height: 20px;
    stroke: currentColor;
    fill: none;
}

/* Password visibility icon logic:
   - По умолчанию (пароль скрыт): показываем закрытый глаз (eye-off)
   - Когда пароль виден: показываем открытый глаз (eye) */
.ui-input-password-icon-eye {
    display: none;
}

.ui-input-password-icon-eye-off {
    display: block;
}

.ui-input-password-wrapper.show-password .ui-input-password-icon-eye {
    display: block;
}

.ui-input-password-wrapper.show-password .ui-input-password-icon-eye-off {
    display: none;
}