.btn{display:flex;align-items:center;justify-content:center;border:none;cursor:pointer;font-family:inherit;transition:all var(--transition-base)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active:not(:disabled){transform:scale(.95)}.btn-icon{width:var(--control-height-md);height:var(--control-height-md);padding:0;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-secondary)}.btn-icon:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--accent);color:var(--accent)}.btn-icon:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.btn-ghost{width:32px;height:32px;padding:0;background:transparent;border-radius:var(--radius-md);color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--bg-tertiary);color:var(--text-primary)}.dropdown-menu{position:absolute;top:calc(100% + var(--spacing-xs));right:0;min-width:160px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:100;overflow:hidden}.dropdown-item{display:flex;align-items:center;gap:var(--spacing-sm);width:100%;padding:var(--spacing-sm) var(--spacing-md);background:transparent;border:none;color:var(--text-primary);font-size:var(--text-sm);cursor:pointer;transition:background var(--transition-fast)}.dropdown-item:hover{background:var(--bg-tertiary)}.skeleton{background:linear-gradient(90deg,var(--bg-tertiary) 0%,var(--border-color) 50%,var(--bg-tertiary) 100%);background-size:200% 100%;border-radius:var(--radius-sm);animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.badge{display:inline-flex;align-items:center;gap:var(--spacing-2xs);padding:var(--spacing-2xs) var(--spacing-sm);font-size:var(--text-xs);font-family:var(--font-mono);border-radius:var(--radius-sm);background:var(--bg-tertiary)}.badge-success{color:var(--addition);background:color-mix(in srgb,var(--addition) 15%,transparent)}.badge-danger{color:var(--deletion);background:color-mix(in srgb,var(--deletion) 15%,transparent)}.badge-warning{color:var(--warning);background:var(--warning-bg)}
