/* BUTTON SYSTEM — one token-driven CTA primitive + shape presets (data-apb-btn) + hover effects
   (data-apb-btn-fx). Registry/whitelists: includes/class-apb-component-buttons.php. This file loads
   AFTER every family partial, so equal-specificity declarations here win — the legacy family CTA
   classes below are ALIASES of the primitive (zero markup changes across recipes).
   Mechanism: presets are custom-property bundles; properties inherit with nearest-ancestor-wins, so
   the brand kit sets the page default on .apb-rx-theme and any single section wrapper overrides itself.
   ::after is reserved for the CSS-drawn arrow icon, ::before for overlay sweeps — they never collide
   because only one fx applies at a time. Tokens only; zero important-flags. */

/* ---------------------------------------------------------------- primitive + adoption */
/* The canonical .apb-rx-cta primitive is ALWAYS token-driven. Legacy family CTA classes are adopted
   into the system ONLY under an active config ancestor ([data-apb-btn] or [data-apb-btn-fx]) — with
   nothing configured, every legacy button keeps its exact current styling (zero-regression guarantee,
   asserted by tools/apb-buttons-smoke.php). Ghost variants map to the SECONDARY role. */
.apb-rx-cta,
:is([data-apb-btn],[data-apb-btn-fx]) :is(.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn){
  position:relative;isolation:isolate;overflow:var(--apb-rx-btn-clip,visible);
  display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;cursor:pointer;line-height:1.2;
  font-size:var(--apb-rx-btn-size,14.5px);
  font-weight:var(--apb-rx-btn-weight,700);
  text-transform:var(--apb-rx-btn-case,none);
  letter-spacing:var(--apb-rx-btn-track,normal);
  padding:var(--apb-rx-btn-py,13px) var(--apb-rx-btn-px,24px);
  border-radius:var(--apb-rx-btn-radius,var(--apb-rx-radius));
  transition:transform var(--apb-rx-t-fast,.16s),box-shadow var(--apb-rx-t-fast,.16s),background var(--apb-rx-t,.28s),
    border-color var(--apb-rx-t-fast,.16s),color var(--apb-rx-t,.28s)}
.apb-rx-cta--primary,
:is([data-apb-btn],[data-apb-btn-fx]) :is(.apb-rx-pf-cta--primary,.apb-rx-cs-cta--primary,.apb-rx-cr-cta--primary,.apb-rx-re-cta--primary,.apb-rx-ev-cta--primary,.apb-rx-lb-cta--primary,.apb-rx-btn:not(.apb-rx-btn-ghost):not(.apb-rx-btn--ghost)){
  color:var(--apb-rx-btn-fg,#fff);
  background:var(--apb-rx-btn-bg,var(--apb-rx-brand));
  border:var(--apb-rx-btn-border,0 solid transparent);
  box-shadow:var(--apb-rx-btn-shadow,0 12px 30px -10px var(--apb-rx-glow,rgba(11,13,18,.35)))}
.apb-rx-cta--secondary,
:is([data-apb-btn],[data-apb-btn-fx]) :is(.apb-rx-pf-cta--outline,.apb-rx-cs-cta--outline,.apb-rx-cr-cta--outline,.apb-rx-re-cta--outline,.apb-rx-ev-cta--outline,.apb-rx-lb-cta--outline,.apb-rx-btn-ghost,.apb-rx-btn--ghost){
  color:var(--apb-rx-btn2-fg,var(--apb-rx-ink,#0b0d12));
  background:var(--apb-rx-btn2-bg,transparent);
  border:var(--apb-rx-btn2-border,1px solid var(--apb-rx-line,#e7e8ec));
  box-shadow:var(--apb-rx-btn2-shadow,none)}
.apb-rx-cta--primary:hover,
:is([data-apb-btn],[data-apb-btn-fx]) :is(.apb-rx-pf-cta--primary,.apb-rx-cs-cta--primary,.apb-rx-cr-cta--primary,.apb-rx-re-cta--primary,.apb-rx-ev-cta--primary,.apb-rx-lb-cta--primary,.apb-rx-btn:not(.apb-rx-btn-ghost):not(.apb-rx-btn--ghost)):hover{
  transform:var(--apb-rx-btn-hover,translateY(-2px))}
.apb-rx-cta--secondary:hover,
:is([data-apb-btn],[data-apb-btn-fx]) :is(.apb-rx-pf-cta--outline,.apb-rx-cs-cta--outline,.apb-rx-cr-cta--outline,.apb-rx-re-cta--outline,.apb-rx-ev-cta--outline,.apb-rx-lb-cta--outline,.apb-rx-btn-ghost,.apb-rx-btn--ghost):hover{
  border-color:var(--apb-rx-btn2-hover-border,var(--apb-rx-line-accent,#c8caf5));
  transform:var(--apb-rx-btn-hover,translateY(-2px))}
/* dark-context family variants must survive an active preset (they load earlier at equal specificity) */
/* dark-context re-assert only where the preset keeps a transparent secondary — presets with a light
   secondary surface (brutal, metal, elevate, ...) stay readable via their own fg. */
:is([data-apb-btn],[data-apb-btn-fx]):not([data-apb-btn="brutal"],[data-apb-btn="border"],[data-apb-btn="notched"],[data-apb-btn="metal"],[data-apb-btn="aurora"],[data-apb-btn="elevate"],[data-apb-btn="inset"],[data-apb-btn="retro"],[data-apb-btn="duotone"]) .apb-rx-pf-cta--dark.apb-rx-pf-cta--outline{color:#fff;border-color:rgba(255,255,255,.35)}
:is([data-apb-btn],[data-apb-btn-fx]):not([data-apb-btn="brutal"],[data-apb-btn="border"],[data-apb-btn="notched"],[data-apb-btn="metal"],[data-apb-btn="aurora"],[data-apb-btn="elevate"],[data-apb-btn="inset"],[data-apb-btn="retro"],[data-apb-btn="duotone"]) .apb-rx-pf-cta--dark.apb-rx-pf-cta--outline:hover{border-color:#fff}
/* shared keyboard focus ring for every adopted button (notched clips outlines — brightness fallback) */
.apb-rx-cta:focus-visible,
:is([data-apb-btn],[data-apb-btn-fx]) :is(.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn):focus-visible{
  outline:2px solid color-mix(in srgb,var(--apb-rx-brand) 70%,#fff);outline-offset:2px}
[data-apb-btn="notched"] :is(.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn):focus-visible{outline:none;filter:brightness(1.18);text-decoration:underline;text-underline-offset:3px}
/* CSS-drawn arrow icon slot (::after) — masked in currentColor, no markup anywhere */
.apb-rx-cta::after,
:is([data-apb-btn],[data-apb-btn-fx]) :is(.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn)::after{
  content:var(--apb-rx-btn-icon,none);display:inline-block;width:var(--apb-rx-btn-icon-w,0);height:14px;flex:none;
  background:currentColor;transition:width var(--apb-rx-t,.28s),transform var(--apb-rx-t,.28s),opacity var(--apb-rx-t,.28s);
  -webkit-mask:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2.6"><path d="M5 12h14M13 6l6 6-6 6"/></svg>') center/contain no-repeat;
  mask:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2.6"><path d="M5 12h14M13 6l6 6-6 6"/></svg>') center/contain no-repeat}
/* a button that already carries its own inline icon never gets the generated arrow (no double icons) */
:is([data-apb-btn-fx="arrow-in"],[data-apb-btn-fx="arrow-nudge"]) :is(.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn):has(svg,.apb-rx-ic)::after{content:none}
/* overlay slot for sweep/shine/ping effects (::before) */
.apb-rx-cta::before,
:is([data-apb-btn],[data-apb-btn-fx]) :is(.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn)::before{
  content:none;position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none}

/* PRESET ISOLATION: a nested [data-apb-btn] must not inherit the OUTER preset's vars —
   `initial` = guaranteed-invalid, so var() falls back to the primitive default. Knob vars
   (radius/px/py/weight/case) are excluded: they inherit through section overrides. */
[data-apb-btn]{--apb-rx-btn-bg:initial;--apb-rx-btn-fg:initial;--apb-rx-btn-border:initial;
  --apb-rx-btn-shadow:initial;--apb-rx-btn-size:initial;--apb-rx-btn-track:initial;--apb-rx-btn-clip:initial;
  --apb-rx-btn2-bg:initial;--apb-rx-btn2-fg:initial;--apb-rx-btn2-border:initial;
  --apb-rx-btn2-shadow:initial;--apb-rx-btn2-hover-border:initial}
[data-apb-btn-fx]{--apb-rx-btn-hover:initial;--apb-rx-btn-icon:initial;--apb-rx-btn-icon-w:initial}
/* ---------------------------------------------------------------- 23 shape presets */
[data-apb-btn="solid"]{--apb-rx-btn-radius:var(--apb-rx-radius)}
[data-apb-btn="pill"]{--apb-rx-btn-radius:999px;--apb-rx-btn-px:26px;--apb-rx-btn-py:12px}
[data-apb-btn="sharp"]{--apb-rx-btn-radius:0;--apb-rx-btn-case:uppercase;--apb-rx-btn-track:.08em;--apb-rx-btn-size:12.5px;--apb-rx-btn-weight:800;
  --apb-rx-btn-px:26px;--apb-rx-btn-shadow:none;--apb-rx-btn2-border:1px solid var(--apb-rx-ink,#0b0d12)}
[data-apb-btn="soft"]{--apb-rx-btn-bg:var(--apb-rx-soft,#eef0ff);--apb-rx-btn-fg:var(--apb-rx-accent-text,var(--apb-rx-brand));--apb-rx-btn-shadow:none;--apb-rx-btn-weight:750;
  --apb-rx-btn2-border:1px solid transparent;--apb-rx-btn2-fg:var(--apb-rx-muted,#6b7280)}
[data-apb-btn="outline"]{--apb-rx-btn-bg:transparent;--apb-rx-btn-fg:var(--apb-rx-accent-text,var(--apb-rx-brand));--apb-rx-btn-border:2px solid var(--apb-rx-brand);
  --apb-rx-btn-shadow:none;--apb-rx-btn-py:11px;--apb-rx-btn2-border:1px solid var(--apb-rx-line,#e7e8ec)}
[data-apb-btn="brutal"]{--apb-rx-btn-radius:0;--apb-rx-btn-border:2px solid var(--apb-rx-ink,#0b0d12);--apb-rx-btn-shadow:4px 4px 0 var(--apb-rx-ink,#0b0d12);
  --apb-rx-btn-hover:translate(-2px,-2px);--apb-rx-btn-weight:800;
  --apb-rx-btn2-border:2px solid var(--apb-rx-ink,#0b0d12);--apb-rx-btn2-shadow:4px 4px 0 var(--apb-rx-ink,#0b0d12);--apb-rx-btn2-bg:var(--apb-rx-surface,#fff)}
[data-apb-btn="glow"]{--apb-rx-btn-bg:linear-gradient(135deg,var(--apb-rx-brand),color-mix(in srgb,var(--apb-rx-brand) 60%,#fff));
  --apb-rx-btn-shadow:0 0 0 1px color-mix(in srgb,var(--apb-rx-brand) 40%,transparent),0 8px 40px -4px var(--apb-rx-glow,rgba(11,13,18,.35));--apb-rx-btn-radius:12px;
  --apb-rx-btn2-border:1px solid color-mix(in srgb,var(--apb-rx-brand) 35%,transparent);--apb-rx-btn2-fg:var(--apb-rx-accent-text,var(--apb-rx-brand))}
[data-apb-btn="underline"]{--apb-rx-btn-bg:transparent;--apb-rx-btn-fg:var(--apb-rx-ink,#0b0d12);--apb-rx-btn-shadow:none;--apb-rx-btn-px:4px;--apb-rx-btn-py:8px;
  --apb-rx-btn-radius:0;--apb-rx-btn-border:0 solid transparent;--apb-rx-btn-weight:750;--apb-rx-btn-hover:none;
  --apb-rx-btn2-border:0 solid transparent;--apb-rx-btn2-fg:var(--apb-rx-muted,#6b7280)}
[data-apb-btn="underline"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn){
  background-image:linear-gradient(var(--apb-rx-brand),var(--apb-rx-brand));background-repeat:no-repeat;background-position:0 100%;background-size:100% 2px}
[data-apb-btn="underline"] :is(.apb-rx-cta--secondary,.apb-rx-pf-cta--outline,.apb-rx-cs-cta--outline,.apb-rx-cr-cta--outline,.apb-rx-re-cta--outline,.apb-rx-ev-cta--outline,.apb-rx-lb-cta--outline){
  background-size:0% 2px;transition:background-size var(--apb-rx-t,.28s)}
[data-apb-btn="underline"] :is(.apb-rx-cta--secondary,.apb-rx-pf-cta--outline,.apb-rx-cs-cta--outline,.apb-rx-cr-cta--outline,.apb-rx-re-cta--outline,.apb-rx-ev-cta--outline,.apb-rx-lb-cta--outline):hover{
  background-size:100% 2px}
[data-apb-btn="glass"]{--apb-rx-btn-radius:18px;--apb-rx-btn-fg:var(--apb-rx-accent-text,var(--apb-rx-brand));--apb-rx-btn-weight:750;
  --apb-rx-btn-bg:linear-gradient(180deg,rgba(255,255,255,.55),rgba(255,255,255,.12) 55%,rgba(255,255,255,.28)),color-mix(in srgb,var(--apb-rx-brand) 12%,rgba(255,255,255,.42));
  --apb-rx-btn-border:1px solid rgba(255,255,255,.75);
  --apb-rx-btn-shadow:inset 0 1px 0 rgba(255,255,255,.85),inset 0 -8px 18px -10px color-mix(in srgb,var(--apb-rx-brand) 30%,transparent),
    0 2px 6px rgba(11,13,18,.06),0 18px 40px -16px color-mix(in srgb,var(--apb-rx-brand) 35%,rgba(11,13,18,.25));
  --apb-rx-btn2-bg:rgba(255,255,255,.35);--apb-rx-btn2-border:1px solid rgba(255,255,255,.65);
  --apb-rx-btn2-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 8px 22px -12px rgba(11,13,18,.2)}
[data-apb-btn="glass"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn){
  backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%)}
/* frosted glass on a dark scheme flips its accent text to white for contrast */
[data-apb-scheme="dark"][data-apb-btn="glass"],[data-apb-btn="glass"] [data-apb-scheme="dark"],[data-apb-scheme="dark"] [data-apb-btn="glass"]{--apb-rx-btn-fg:#fff;--apb-rx-btn2-fg:#fff}
[data-apb-btn="liquid"]{--apb-rx-btn-radius:999px;--apb-rx-btn-px:26px;--apb-rx-btn-py:13px;--apb-rx-btn-weight:650;
  --apb-rx-btn-bg:linear-gradient(180deg,rgba(255,255,255,.30),rgba(255,255,255,.04) 50%,rgba(255,255,255,.10)),rgba(255,255,255,.10);
  --apb-rx-btn-border:1px solid rgba(255,255,255,.28);
  --apb-rx-btn-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 1px 0 0 rgba(255,255,255,.14),inset -1px 0 0 rgba(255,255,255,.14),
    inset 0 -1px 0 rgba(255,255,255,.10),0 8px 32px rgba(11,13,18,.16);
  --apb-rx-btn-hover:scale(1.03);
  --apb-rx-btn2-bg:rgba(255,255,255,.05);--apb-rx-btn2-border:1px solid rgba(255,255,255,.20);
  --apb-rx-btn2-shadow:inset 0 1px 0 rgba(255,255,255,.35)}
[data-apb-btn="liquid"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn){
  backdrop-filter:blur(18px) saturate(180%);-webkit-backdrop-filter:blur(18px) saturate(180%);
  color:inherit /* Liquid Glass takes the surrounding text colour. Direct `inherit` — CSS-wide keywords
  are INVALID inside var() substitution (learned the hard way in the preview). */}
[data-apb-btn="liquid"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn):hover{
  --apb-rx-btn-bg:linear-gradient(180deg,rgba(255,255,255,.38),rgba(255,255,255,.08) 50%,rgba(255,255,255,.14)),rgba(255,255,255,.14)}
@property --apb-btn-angle{syntax:'<angle>';initial-value:0deg;inherits:false}
[data-apb-btn="shimmer"]{--apb-rx-btn-radius:999px;--apb-rx-btn-shadow:0 10px 30px -12px var(--apb-rx-glow,rgba(11,13,18,.35));
  --apb-rx-btn-bg:linear-gradient(var(--apb-rx-brand),var(--apb-rx-brand)) padding-box,
    conic-gradient(from var(--apb-btn-angle),var(--apb-rx-brand),#7dd3fc,#f0abfc,var(--apb-rx-brand)) border-box;
  --apb-rx-btn-border:2px solid transparent;
  --apb-rx-btn2-bg:linear-gradient(var(--apb-rx-surface,#fff),var(--apb-rx-surface,#fff)) padding-box,
    conic-gradient(from var(--apb-btn-angle),var(--apb-rx-line,#e7e8ec),var(--apb-rx-brand),var(--apb-rx-line,#e7e8ec)) border-box;
  --apb-rx-btn2-border:2px solid transparent;--apb-rx-btn2-fg:var(--apb-rx-ink,#0b0d12)}
[data-apb-btn="shimmer"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn){
  animation:apbBtnSpin 3.2s linear infinite}
@keyframes apbBtnSpin{to{--apb-btn-angle:360deg}}
[data-apb-btn="border"]{--apb-rx-btn-radius:12px;--apb-rx-btn-fg:var(--apb-rx-ink,#0b0d12);--apb-rx-btn-shadow:var(--apb-rx-shadow-1,0 1px 2px rgba(11,13,18,.06));
  --apb-rx-btn-bg:linear-gradient(var(--apb-rx-surface,#fff),var(--apb-rx-surface,#fff)) padding-box,
    linear-gradient(120deg,var(--apb-rx-brand),color-mix(in srgb,var(--apb-rx-brand) 30%,#7dd3fc)) border-box;
  --apb-rx-btn-border:1.5px solid transparent;
  --apb-rx-btn2-border:1.5px solid var(--apb-rx-line,#e7e8ec);--apb-rx-btn2-fg:var(--apb-rx-muted,#6b7280)}
[data-apb-btn="neon"]{--apb-rx-btn-radius:12px;--apb-rx-btn-bg:transparent;--apb-rx-btn-fg:var(--apb-rx-accent-text,var(--apb-rx-brand));
  --apb-rx-btn-border:2px solid var(--apb-rx-brand);--apb-rx-btn-weight:750;
  --apb-rx-btn-shadow:0 0 10px var(--apb-rx-glow,rgba(11,13,18,.35)),inset 0 0 10px color-mix(in srgb,var(--apb-rx-brand) 20%,transparent);
  --apb-rx-btn2-border:2px solid var(--apb-rx-line,#e7e8ec);--apb-rx-btn2-fg:var(--apb-rx-muted,#6b7280)}
[data-apb-btn="neon"] :is(.apb-rx-cta--primary,.apb-rx-pf-cta--primary,.apb-rx-cs-cta--primary,.apb-rx-cr-cta--primary,.apb-rx-re-cta--primary,.apb-rx-ev-cta--primary,.apb-rx-lb-cta--primary,.apb-rx-btn){
  text-shadow:0 0 12px var(--apb-rx-glow,rgba(11,13,18,.35))}
[data-apb-btn="notched"]{--apb-rx-btn-radius:0;--apb-rx-btn-case:uppercase;--apb-rx-btn-track:.06em;--apb-rx-btn-size:13px;--apb-rx-btn-weight:800;
  --apb-rx-btn-shadow:none;--apb-rx-btn2-bg:var(--apb-rx-soft,#eef0ff);--apb-rx-btn2-border:0 solid transparent}
[data-apb-btn="notched"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn){
  clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}
[data-apb-btn="metal"]{--apb-rx-btn-radius:10px;--apb-rx-btn-fg:var(--apb-rx-ink,#0b0d12);
  --apb-rx-btn-bg:linear-gradient(180deg,#f8f9fb,#d9dce3 45%,#c7ccd6 55%,#eceef2);
  --apb-rx-btn-border:1px solid #b6bcc8;
  --apb-rx-btn-shadow:inset 0 1px 0 rgba(255,255,255,.9),inset 0 -1px 0 rgba(11,13,18,.12),0 2px 5px rgba(11,13,18,.18);
  --apb-rx-btn2-bg:linear-gradient(180deg,#fdfdfe,#eef0f4);--apb-rx-btn2-border:1px solid var(--apb-rx-line,#e7e8ec)}
[data-apb-btn="aurora"]{--apb-rx-btn-radius:999px;--apb-rx-btn-fg:var(--apb-rx-ink,#0b0d12);--apb-rx-btn-weight:750;
  --apb-rx-btn-bg:linear-gradient(115deg,color-mix(in srgb,var(--apb-rx-brand) 45%,#fff),#a7f3d0,#bae6fd,#f5d0fe,color-mix(in srgb,var(--apb-rx-brand) 45%,#fff));
  --apb-rx-btn-border:1px solid rgba(255,255,255,.7);--apb-rx-btn-shadow:0 10px 26px -12px var(--apb-rx-glow,rgba(11,13,18,.35));
  --apb-rx-btn2-bg:rgba(255,255,255,.6);--apb-rx-btn2-border:1px solid var(--apb-rx-line,#e7e8ec)}
[data-apb-btn="aurora"] :is(.apb-rx-cta--primary,.apb-rx-pf-cta--primary,.apb-rx-cs-cta--primary,.apb-rx-cr-cta--primary,.apb-rx-re-cta--primary,.apb-rx-ev-cta--primary,.apb-rx-lb-cta--primary,.apb-rx-btn){
  background-size:300% 100%;animation:apbBtnPan 6s ease-in-out infinite alternate}
@keyframes apbBtnPan{to{background-position:100% 0}}
[data-apb-btn="chunky"]{--apb-rx-btn-py:17px;--apb-rx-btn-px:34px;--apb-rx-btn-size:16px;--apb-rx-btn-weight:800;--apb-rx-btn-radius:16px;
  --apb-rx-btn-shadow:0 3px 0 color-mix(in srgb,var(--apb-rx-brand) 60%,#000),0 14px 30px -10px var(--apb-rx-glow,rgba(11,13,18,.35));
  --apb-rx-btn-hover:translateY(-1px);--apb-rx-btn2-border:2px solid var(--apb-rx-line,#e7e8ec)}
[data-apb-btn="gradient"]{--apb-rx-btn-bg:linear-gradient(90deg,var(--apb-rx-brand) 0%,color-mix(in srgb,var(--apb-rx-brand) 55%,#e11d64) 100%);
  --apb-rx-btn-radius:999px;--apb-rx-btn-shadow:0 10px 26px -10px var(--apb-rx-glow,rgba(11,13,18,.35));
  --apb-rx-btn2-border:1px solid var(--apb-rx-line,#e7e8ec)}
[data-apb-btn="elevate"]{--apb-rx-btn-bg:var(--apb-rx-surface,#fff);--apb-rx-btn-fg:var(--apb-rx-ink,#0b0d12);
  --apb-rx-btn-border:1px solid var(--apb-rx-line,#e7e8ec);--apb-rx-btn-shadow:var(--apb-rx-shadow-2,0 2px 6px rgba(11,13,18,.06),0 14px 34px -12px rgba(11,13,18,.22));
  --apb-rx-btn-radius:12px;--apb-rx-btn2-border:1px solid transparent;--apb-rx-btn2-fg:var(--apb-rx-muted,#6b7280)}
[data-apb-btn="inset"]{--apb-rx-btn-bg:color-mix(in srgb,var(--apb-rx-brand) 8%,var(--apb-rx-soft,#eef0ff));--apb-rx-btn-fg:var(--apb-rx-accent-text,var(--apb-rx-brand));
  --apb-rx-btn-shadow:inset 0 2px 5px rgba(11,13,18,.12),inset 0 -1px 0 rgba(255,255,255,.7);--apb-rx-btn-radius:12px;--apb-rx-btn-hover:none;
  --apb-rx-btn2-bg:var(--apb-rx-soft,#eef0ff);--apb-rx-btn2-border:0 solid transparent;--apb-rx-btn2-fg:var(--apb-rx-muted,#6b7280)}
[data-apb-btn="retro"]{--apb-rx-btn-bg:transparent;--apb-rx-btn-fg:var(--apb-rx-ink,#0b0d12);--apb-rx-btn-border:1px solid var(--apb-rx-ink,#0b0d12);
  --apb-rx-btn-radius:4px;--apb-rx-btn-shadow:none;--apb-rx-btn-case:uppercase;--apb-rx-btn-track:.14em;--apb-rx-btn-size:12px;--apb-rx-btn-weight:700;
  --apb-rx-btn2-border:1px dashed var(--apb-rx-muted,#6b7280);--apb-rx-btn2-fg:var(--apb-rx-muted,#6b7280)}
[data-apb-btn="duotone"]{--apb-rx-btn-radius:10px;--apb-rx-btn-px:20px;
  --apb-rx-btn-bg:linear-gradient(90deg,color-mix(in srgb,var(--apb-rx-brand) 82%,#000) 0 38px,var(--apb-rx-brand) 38px);
  --apb-rx-btn-icon:"";--apb-rx-btn-icon-w:14px;--apb-rx-btn-shadow:0 10px 26px -10px var(--apb-rx-glow,rgba(11,13,18,.35));
  --apb-rx-btn2-border:1px solid var(--apb-rx-line,#e7e8ec)}
[data-apb-btn="dashed"]{--apb-rx-btn-bg:transparent;--apb-rx-btn-fg:var(--apb-rx-accent-text,var(--apb-rx-brand));--apb-rx-btn-border:2px dashed var(--apb-rx-brand);
  --apb-rx-btn-radius:10px;--apb-rx-btn-shadow:none;--apb-rx-btn-weight:750;
  --apb-rx-btn2-border:2px dashed var(--apb-rx-line,#e7e8ec);--apb-rx-btn2-fg:var(--apb-rx-muted,#6b7280)}

/* ---------------------------------------------------------------- 13 hover-effect presets */
[data-apb-btn-fx="lift"]{--apb-rx-btn-hover:translateY(-2px)}
[data-apb-btn-fx="grow"]{--apb-rx-btn-hover:scale(1.05)}
[data-apb-btn-fx="press"]{--apb-rx-btn-hover:translateY(2px)}
[data-apb-btn-fx="none"]{--apb-rx-btn-hover:none}
[data-apb-btn-fx="tilt"]{--apb-rx-btn-hover:rotate(-1.5deg) scale(1.04)}
[data-apb-btn-fx="arrow-in"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn){
  --apb-rx-btn-icon:"";--apb-rx-btn-icon-w:0px}
[data-apb-btn-fx="arrow-in"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn)::after{
  opacity:0;transform:translateX(-6px)}
[data-apb-btn-fx="arrow-in"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn):hover::after,
[data-apb-btn-fx="arrow-in"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn):focus-visible::after{
  width:14px;opacity:1;transform:none}
[data-apb-btn-fx="arrow-nudge"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn){
  --apb-rx-btn-icon:"";--apb-rx-btn-icon-w:14px}
[data-apb-btn-fx="arrow-nudge"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn):hover::after{
  transform:translateX(4px)}
[data-apb-btn-fx="shine"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn){--apb-rx-btn-clip:hidden}
[data-apb-btn-fx="shine"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn)::before{
  content:"";z-index:1;background:linear-gradient(115deg,transparent 32%,rgba(255,255,255,.45) 48%,transparent 62%);
  transform:translateX(-110%);transition:transform .55s ease}
[data-apb-btn-fx="shine"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn):hover::before{
  transform:translateX(110%)}
[data-apb-btn-fx="fill-sweep"]{--apb-rx-btn-hover:none}
[data-apb-btn-fx="fill-sweep"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn){--apb-rx-btn-clip:hidden}
[data-apb-btn-fx="fill-sweep"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn)::before{
  content:"";background:var(--apb-rx-brand);transform:scaleX(0);transform-origin:left;transition:transform var(--apb-rx-t,.28s)}
[data-apb-btn-fx="fill-sweep"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn):hover{color:#fff}
[data-apb-btn-fx="fill-sweep"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn):hover::before{transform:scaleX(1)}
[data-apb-btn-fx="invert"]{--apb-rx-btn-hover:none}
[data-apb-btn-fx="invert"] :is(.apb-rx-cta--primary,.apb-rx-pf-cta--primary,.apb-rx-cs-cta--primary,.apb-rx-cr-cta--primary,.apb-rx-re-cta--primary,.apb-rx-ev-cta--primary,.apb-rx-lb-cta--primary,.apb-rx-btn):hover{
  background:var(--apb-rx-ink,#0b0d12);color:#fff}
[data-apb-btn-fx="invert"] :is(.apb-rx-cta--secondary,.apb-rx-pf-cta--outline,.apb-rx-cs-cta--outline,.apb-rx-cr-cta--outline,.apb-rx-re-cta--outline,.apb-rx-ev-cta--outline,.apb-rx-lb-cta--outline):hover{
  background:var(--apb-rx-brand);border-color:transparent;color:#fff}
[data-apb-btn-fx="glow-pulse"]{--apb-rx-btn-hover:translateY(-1px)}
[data-apb-btn-fx="glow-pulse"] :is(.apb-rx-cta--primary,.apb-rx-pf-cta--primary,.apb-rx-cs-cta--primary,.apb-rx-cr-cta--primary,.apb-rx-re-cta--primary,.apb-rx-ev-cta--primary,.apb-rx-lb-cta--primary,.apb-rx-btn):hover{
  box-shadow:0 0 0 3px color-mix(in srgb,var(--apb-rx-brand) 25%,transparent),0 10px 44px -4px var(--apb-rx-glow,rgba(11,13,18,.35))}
[data-apb-btn-fx="ring"]{--apb-rx-btn-hover:none}
[data-apb-btn-fx="ring"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn):hover{
  box-shadow:0 0 0 4px color-mix(in srgb,var(--apb-rx-brand) 22%,transparent),var(--apb-rx-btn-shadow,0 12px 30px -10px var(--apb-rx-glow,rgba(11,13,18,.35)))}
[data-apb-btn-fx="pulse"] :is(.apb-rx-cta--primary,.apb-rx-pf-cta--primary,.apb-rx-cs-cta--primary,.apb-rx-cr-cta--primary,.apb-rx-re-cta--primary,.apb-rx-ev-cta--primary,.apb-rx-lb-cta--primary,.apb-rx-btn)::before{
  content:"";animation:apbBtnPing 2.2s cubic-bezier(0,0,.2,1) infinite;box-shadow:0 0 0 0 color-mix(in srgb,var(--apb-rx-brand) 45%,transparent)}
@keyframes apbBtnPing{75%,100%{box-shadow:0 0 0 12px transparent}}

/* ---------------------------------------------------------------- reduced motion: freeze everything */
@media (prefers-reduced-motion:reduce){
  [data-apb-btn-fx="lift"],[data-apb-btn-fx="grow"],[data-apb-btn-fx="press"],[data-apb-btn-fx="tilt"]{--apb-rx-btn-hover:none}
  :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn),
  :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn)::before,
  :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn)::after{transition:none;animation:none}
  [data-apb-btn="shimmer"] :is(.apb-rx-cta,.apb-rx-pf-cta,.apb-rx-cs-cta,.apb-rx-cr-cta,.apb-rx-re-cta,.apb-rx-ev-cta,.apb-rx-lb-cta,.apb-rx-btn){animation:none}
  [data-apb-btn="aurora"] :is(.apb-rx-cta--primary,.apb-rx-pf-cta--primary,.apb-rx-cs-cta--primary,.apb-rx-cr-cta--primary,.apb-rx-re-cta--primary,.apb-rx-ev-cta--primary,.apb-rx-lb-cta--primary,.apb-rx-btn){animation:none}
}
