.icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.icon--xs{width:.75rem;height:.75rem}.icon--sm{width:1rem;height:1rem}.icon--md{width:1.25rem;height:1.25rem}.icon--lg{width:1.5rem;height:1.5rem}.icon--xl{width:2rem;height:2rem}.icon--2xl{width:2.5rem;height:2.5rem}@media (max-width:420px){.icon--xs{width:.625rem;height:.625rem}.icon--sm{width:.875rem;height:.875rem}.icon--md{width:1rem;height:1rem}.icon--lg{width:1.25rem;height:1.25rem}.icon--xl{width:1.5rem;height:1.5rem}.icon--2xl{width:2rem;height:2rem}}.icon--primary{color:var(--text-primary)}.icon--secondary{color:var(--text-secondary)}.icon--success{color:#059669}.icon--warning{color:#d97706}.icon--error{color:#dc2626}.icon--info{color:#2563eb}.icon--muted{color:#6b7280}.icon--inherit{color:inherit}.icon--clickable{cursor:pointer;transition:all .2s ease-in-out}.icon--clickable:hover{opacity:.8;transform:scale(1.05)}.icon--clickable:active{transform:scale(.95)}.icon--disabled{opacity:.5;cursor:not-allowed}.icon--spin{animation:icon-spin 1s linear infinite}.icon--pulse{animation:icon-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.icon--bounce{animation:icon-bounce 1s infinite}@keyframes icon-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes icon-pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes icon-bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.icon--niche{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1))}.icon--niche:hover{filter:drop-shadow(0 2px 4px rgba(0,0,0,.15))}@media (prefers-color-scheme:dark){.icon--muted{color:#9ca3af}.icon--clickable:hover{background-color:rgba(255,255,255,.1)}}.icon--clickable:focus{outline:2px solid var(--primary-color,#007BFF);outline-offset:2px;border-radius:4px}@media (prefers-contrast:high){.icon--primary{color:#000000}.icon--secondary{color:#333333}.icon--muted{color:#666666}}@media (prefers-reduced-motion:reduce){.icon--clickable{transition:none}.icon--bounce,.icon--pulse,.icon--spin{animation:none}}