/* Input Component Styles */ .terra-input-wrapper { display: flex; flex-direction: column; gap: var(--spacing-xs); width: 100%; } .terra-input-label { font-size: var(--font-size-sm); font-weight: var(--font-weight-medium); color: var(--color-forest-primary); margin-bottom: var(--spacing-xs); } .terra-input-required { color: var(--color-warning-red); margin-left: var(--spacing-xs); } .terra-input-container { position: relative; display: flex; align-items: center; } .terra-input { width: 100%; font-family: var(--font-family-primary); font-weight: var(--font-weight-normal); border: 2px solid rgba(74, 124, 35, 0.2); border-radius: var(--radius-md); background: rgba(255, 255, 255, 0.9); color: var(--color-gray-800); transition: all var(--transition-normal); outline: none; } .terra-input:focus { border-color: var(--color-nature-green); box-shadow: 0 0 0 3px rgba(74, 124, 35, 0.1); background: var(--color-white); } .terra-input::placeholder { color: var(--color-gray-400); opacity: 1; } /* Input Sizes */ .terra-input--sm { padding: var(--spacing-sm) var(--spacing-md); font-size: var(--font-size-sm); } .terra-input--md { padding: var(--spacing-md) var(--spacing-lg); font-size: var(--font-size-base); } .terra-input--lg { padding: var(--spacing-lg) var(--spacing-xl); font-size: var(--font-size-lg); } /* Input Variants */ .terra-input--default { /* Default styling already applied */ } .terra-input--filled { background: var(--color-eco-soft); border: 2px solid transparent; } .terra-input--filled:focus { background: var(--color-white); border-color: var(--color-nature-green); } .terra-input--outlined { background: transparent; border: 2px solid var(--color-mint-light); } .terra-input--outlined:focus { border-color: var(--color-nature-green); background: rgba(255, 255, 255, 0.5); } /* Input States */ .terra-input--error { border-color: var(--color-warning-red); background: rgba(244, 67, 54, 0.05); } .terra-input--error:focus { border-color: var(--color-warning-red); box-shadow: 0 0 0 3px rgba(244, 67, 54, 0.1); } .terra-input--success { border-color: var(--color-success-green); background: rgba(76, 175, 80, 0.05); } .terra-input--success:focus { border-color: var(--color-success-green); box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.1); } .terra-input--disabled { background: var(--color-gray-100); border-color: var(--color-gray-200); color: var(--color-gray-400); cursor: not-allowed; } .terra-input--disabled::placeholder { color: var(--color-gray-300); } /* Input with Icons */ .terra-input--with-icon-left { padding-left: 3rem; } .terra-input--with-icon-right { padding-right: 3rem; } .terra-input-icon { position: absolute; top: 50%; transform: translateY(-50%); color: var(--color-gray-400); font-size: 1.2em; pointer-events: none; z-index: 1; } .terra-input-icon--left { left: var(--spacing-md); } .terra-input-icon--right { right: var(--spacing-md); } .terra-input:focus + .terra-input-icon, .terra-input:focus ~ .terra-input-icon { color: var(--color-nature-green); } /* Feedback Messages */ .terra-input-feedback { display: flex; align-items: center; gap: var(--spacing-xs); margin-top: var(--spacing-xs); } .terra-input-error { font-size: var(--font-size-sm); color: var(--color-warning-red); display: flex; align-items: center; gap: var(--spacing-xs); } .terra-input-error::before { content: '⚠'; font-size: var(--font-size-xs); } .terra-input-success { font-size: var(--font-size-sm); color: var(--color-success-green); display: flex; align-items: center; gap: var(--spacing-xs); } .terra-input-success::before { content: '✓'; font-size: var(--font-size-xs); } .terra-input-helper { font-size: var(--font-size-sm); color: var(--color-gray-500); } /* Responsive Design */ @media (max-width: 640px) { .terra-input--lg { padding: var(--spacing-md) var(--spacing-lg); font-size: var(--font-size-base); } .terra-input--with-icon-left, .terra-input--with-icon-right { padding-left: var(--spacing-md); padding-right: var(--spacing-md); } .terra-input--with-icon-left { padding-left: 2.5rem; } .terra-input--with-icon-right { padding-right: 2.5rem; } } /* High Contrast Mode */ @media (prefers-contrast: high) { .terra-input { border-width: 3px; } .terra-input:focus { border-color: var(--color-forest-deep); } } /* Reduced Motion */ @media (prefers-reduced-motion: reduce) { .terra-input { transition: none; } }