/* Matches tombutcher-ui .tb-button (components.css) — uses app :root --text / --bg */ .btn { appearance: none; -webkit-appearance: none; box-sizing: border-box; padding: 8px 14px; background-color: transparent; color: var(--text); border: var(--border-ui-width) solid var(--border-ui-color); border-radius: 18px; transition: background-color 0.3s ease, color 0.3s ease, fill 0.3s ease, stroke 0.3s ease, transform 0.5s ease, border-color 0.3s ease, filter 0.3s ease; display: inline-flex; align-items: center; justify-content: center; margin: 0; line-height: 1; min-height: 30px; font-weight: 500; font-family: inherit; font-size: 0.9rem; position: relative; transform-origin: center center; transform: scale(1); width: max-content; cursor: pointer; text-decoration: none; } .btn:disabled { opacity: 0.5; cursor: not-allowed; } .btn:not(:disabled):hover { background-color: var(--text); color: var(--bg); transform: scale(1.02); } .btn:not(:disabled):active { background-color: var(--text); color: var(--bg); transform: scale(0.975); } .btn > svg { fill: var(--text); stroke: var(--text); height: 16px; width: auto; margin-right: 8px; flex-shrink: 0; transition: fill 0.3s ease, stroke 0.3s ease; } .btn:not(:disabled):hover > svg { fill: var(--bg); stroke: var(--bg); } /* Filled CTA — emphasis while keeping pill + motion language */ .btn--primary { background-color: var(--accent); color: var(--on-accent); border: var(--border-ui-width) solid transparent; font-weight: 600; } .btn--primary:not(:disabled):hover { filter: brightness(1.06); background-color: var(--accent); color: var(--on-accent); } .btn--danger:not(:disabled):hover { background-color: var(--danger); color: var(--on-warn); border: var(--border-ui-width) solid transparent; } .btn--primary:not(:disabled):active { filter: brightness(0.98); transform: scale(0.975); } .btn--primary > svg { fill: var(--on-accent); stroke: var(--on-accent); } .btn--primary:not(:disabled):hover > svg, .btn--primary:not(:disabled):active > svg { fill: var(--on-accent); stroke: var(--on-accent); } .btn--primary:disabled { filter: none; } /* Lighter outline; same hover invert as default */ .btn--ghost { border-color: color-mix(in srgb, var(--text) 8%, transparent); } .btn--small { padding: 6px 10px; min-height: 26px; font-size: 0.8rem; } .btn--small > svg { height: 14px; margin-right: 6px; }