.btn{--btn-bg:transparent;--btn-fg:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-4);min-height:var(--tap);padding:0 var(--space-7);border:0;border-radius:var(--r-xs);background:var(--btn-bg);color:var(--btn-fg);font:inherit;font-weight:700;cursor:pointer;text-decoration:none;position:relative;transition:background var(--transition-base),color var(--transition-base)}.btn--primary{--btn-bg:var(--amber);--btn-fg:var(--on-accent)}.btn--primary:hover{--btn-bg:color-mix(in srgb,var(--amber) 82%,var(--ink))}.btn--secondary{box-shadow:inset 0 0 0 1px var(--line)}.btn--secondary:hover{background:var(--panel-hi);color:var(--ink)}.btn--danger{--btn-fg:var(--alert-ink);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--alert-ink) 38%,transparent)}.btn--danger:hover{--btn-bg:var(--alert-strong);--btn-fg:var(--on-dark);box-shadow:none}.btn--icon{width:var(--tap);padding:0;box-shadow:inset 0 0 0 1px var(--line);font-size:var(--text-body)}.btn--icon:hover{background:var(--panel-hi)}.btn[disabled]{cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--line);background-color:transparent;background-image:var(--hatch)}.btn--primary[disabled],.btn[disabled]{color:var(--muted)}.btn[data-pending]{cursor:progress}.btn .meter{display:inline-flex;align-items:flex-end;gap:2px;height:16px}.btn .meter i{width:5px;background:var(--fg-3);border-radius:1px;transition:background var(--dur-fast) var(--ease)}.btn .meter i:first-child{height:7px}.btn .meter i:nth-child(2){height:11px}.btn .meter i:nth-child(3){height:16px}.btn[data-pending] .meter i{animation:btn-meter-pulse .9s var(--ease) infinite}.btn[data-pending] .meter i:nth-child(2){animation-delay:.12s}.btn[data-pending] .meter i:nth-child(3){animation-delay:.24s}.btn--primary .meter i{background:var(--on-accent)}@keyframes btn-meter-pulse{0%,to{opacity:.35}50%{opacity:1}}.btn--sm{min-height:32px;padding:0 var(--space-5);gap:var(--space-3);font-size:.8125rem}.btn--icon.btn--sm{width:32px;padding:0}@media (pointer:coarse){.btn--sm{min-height:36px}.btn--icon.btn--sm{width:36px}}