.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);font-family:var(--font-family);font-weight:500;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease;position:relative;outline:none;text-decoration:none}.btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.btn--sm{padding:var(--spacing-xs) var(--spacing-md);font-size:var(--font-size-sm);min-height:32px}.btn--md{padding:var(--spacing-sm) var(--spacing-lg);font-size:var(--font-size-base);min-height:40px}.btn--lg{padding:var(--spacing-md) var(--spacing-xl);font-size:var(--font-size-lg);min-height:48px}.btn--primary{background-color:var(--color-primary);color:#fff}.btn--primary:hover:not(:disabled){background-color:var(--color-primaryHover)}.btn--primary:active:not(:disabled){background-color:var(--color-primaryActive)}.btn--secondary{background-color:var(--color-surface);color:var(--color-textPrimary);border:1px solid var(--color-border)}.btn--secondary:hover:not(:disabled){background-color:var(--color-surfaceHover);border-color:var(--color-borderHover)}.btn--ghost{background-color:transparent;color:var(--color-textSecondary)}.btn--ghost:hover:not(:disabled){background-color:var(--color-surfaceHover);color:var(--color-textPrimary)}.btn--danger{background-color:var(--color-error);color:#fff}.btn--danger:hover:not(:disabled){opacity:.9}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--loading{cursor:wait;pointer-events:none}.btn--loading .btn__content{opacity:0}.btn--full-width{width:100%}.btn__icon{display:inline-flex;align-items:center;justify-content:center}.btn__icon svg{width:1em;height:1em}.btn__spinner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:16px;height:16px;border:2px solid hsla(0,0%,100%,.3);border-top-color:#fff;border-radius:50%;animation:btn-spin .6s linear infinite}@keyframes btn-spin{to{transform:translate(-50%,-50%) rotate(1turn)}}.input-wrapper{display:flex;flex-direction:column;gap:var(--spacing-xs)}.input-wrapper--full-width{width:100%}.input__label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-textPrimary)}.input__container{position:relative;display:flex;align-items:center}.input{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-textPrimary);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);outline:none;transition:all .2s ease}.input:focus,.input:hover{border-color:var(--color-borderHover)}.input:focus{box-shadow:0 0 0 3px var(--color-focusRing)}.input--error{border-color:var(--color-error)}.input--error:focus{box-shadow:0 0 0 3px rgba(239,68,68,.1)}.input:disabled{opacity:.5;cursor:not-allowed;background-color:var(--color-backgroundSecondary)}.input::placeholder{color:var(--color-textTertiary)}.input--with-left-icon{padding-left:40px}.input--with-right-icon{padding-right:40px}.input__icon{position:absolute;display:flex;align-items:center;justify-content:center;color:var(--color-textTertiary);pointer-events:none}.input__icon--left{left:var(--spacing-md)}.input__icon--right{right:var(--spacing-md)}.input__icon svg{width:18px;height:18px}.input__error,.input__helper{font-size:var(--font-size-sm);line-height:1.4}.input__error{color:var(--color-error)}.input__helper{color:var(--color-textSecondary)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease;outline:none;flex-shrink:0}.icon-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.icon-btn--sm{width:32px;height:32px;font-size:16px}.icon-btn--md{width:40px;height:40px;font-size:20px}.icon-btn--lg{width:48px;height:48px;font-size:24px}.icon-btn--default{background-color:var(--color-surface);color:var(--color-textSecondary);border:1px solid var(--color-border)}.icon-btn--default:hover:not(:disabled){background-color:var(--color-surfaceHover);border-color:var(--color-borderHover);color:var(--color-textPrimary)}.icon-btn--primary{background-color:var(--color-primary);color:#fff}.icon-btn--primary:hover:not(:disabled){background-color:var(--color-primaryHover)}.icon-btn--ghost{background-color:transparent;color:var(--color-textSecondary)}.icon-btn--ghost:hover:not(:disabled){background-color:var(--color-surfaceHover);color:var(--color-textPrimary)}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.icon-btn svg{width:1em;height:1em}