.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-weight:600;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease;font-family:inherit;letter-spacing:.02em}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--sm{padding:.4rem .8rem;font-size:.8rem}.btn--md{padding:.6rem 1.2rem;font-size:.9rem}.btn--lg{padding:.8rem 1.6rem;font-size:1rem}.btn--full{width:100%}.btn--primary{background:var(--accent-gradient);color:#fff}.btn--primary:hover:not(:disabled){box-shadow:0 4px 20px rgba(99,102,241,.4);transform:translateY(-1px)}.btn--secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color)}.btn--secondary:hover:not(:disabled){background:var(--bg-hover)}.btn--buy{background:var(--color-buy);color:#fff}.btn--buy:hover:not(:disabled){box-shadow:0 4px 20px rgba(16,185,129,.4);transform:translateY(-1px)}.btn--sell{background:var(--color-sell);color:#fff}.btn--sell:hover:not(:disabled){box-shadow:0 4px 20px rgba(239,68,68,.4);transform:translateY(-1px)}.btn--ghost{background:transparent;color:var(--text-secondary)}.btn--ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.btn__spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}.input-group{display:flex;flex-direction:column;gap:.3rem}.input-group__label{font-size:.8rem;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.input-group__field{padding:.6rem .8rem;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:.9rem;font-family:inherit;transition:border-color .2s,box-shadow .2s;outline:none}.input-group__field:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px rgba(99,102,241,.15)}.input-group--error .input-group__field{border-color:var(--color-sell)}.input-group__error{font-size:.75rem;color:var(--color-sell)}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.modal{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:90%;max-width:480px;max-height:80vh;overflow-y:auto;animation:slideUp .25s ease}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.2rem;border-bottom:1px solid var(--border-color)}.modal__title{font-size:1rem;font-weight:600;margin:0}.modal__close{background:none;border:none;color:var(--text-secondary);font-size:1.1rem;cursor:pointer;padding:.2rem;border-radius:4px;transition:background .15s}.modal__close:hover{background:var(--bg-hover);color:var(--text-primary)}.modal__body{padding:1.2rem}.modal.modal--wide{max-width:860px;overflow:visible}.modal.modal--wide .modal__body{overflow:visible}.spinner{display:flex;align-items:center;justify-content:center}.spinner--sm .spinner__ring{width:20px;height:20px}.spinner--md .spinner__ring{width:32px;height:32px}.spinner--lg .spinner__ring{width:48px;height:48px}.spinner__ring{border:3px solid var(--border-color);border-top-color:var(--color-accent);border-radius:50%;animation:spin .7s linear infinite}.error-boundary{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:3rem;text-align:center;color:var(--text-secondary)}.error-boundary__icon{font-size:3rem}@keyframes spin{to{transform:rotate(1turn)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}