.adv-btn{
display:inline-flex;
align-items:center;
justify-content:center;
gap:var(--space-3);
font-family:var(--font-sans);
font-size:var(--font-size-base);
font-weight:var(--weight-semibold);
line-height:1;
padding:.75em 1.15em;
min-height:44px;
border:1px solid transparent;
border-radius:var(--radius-md);
cursor:pointer;
text-decoration:none;
white-space:nowrap;
user-select:none;
-webkit-tap-highlight-color:transparent;
transition:var(--transition-base);
}

.adv-btn:focus-visible{
outline:2px solid var(--color-focus);
outline-offset:2px;
}

.adv-btn:disabled,
.adv-btn[aria-disabled="true"]{
opacity:var(--opacity-disabled);
cursor:not-allowed;
pointer-events:none;
}

.adv-btn svg{flex-shrink:0}
.adv-btn svg:first-child:not(:last-child){margin-left:-2px}
.adv-btn svg:last-child:not(:first-child){margin-right:-2px}

.adv-btn--primary{
background:var(--color-primary);
color:var(--color-primary-contrast);
border-color:var(--color-primary);
}
.adv-btn--primary:hover{
background:var(--color-primary-hover);
border-color:var(--color-primary-hover);
color:var(--color-primary-contrast);
text-decoration:none;
transform:translateY(-1px);
box-shadow:var(--shadow-sm);
}
.adv-btn--primary:active{transform:translateY(0);box-shadow:none}

.adv-btn--secondary{
background:var(--color-bg);
color:var(--color-primary);
border-color:var(--color-line-strong);
}
.adv-btn--secondary:hover{
background:var(--color-primary-soft);
border-color:var(--color-accent);
color:var(--color-primary-hover);
text-decoration:none;
}

.adv-btn--ghost{
background:var(--color-bg);
color:var(--color-primary);
border-color:var(--color-line);
}
.adv-btn--ghost:hover{
background:var(--color-bg-soft);
border-color:var(--color-line-strong);
color:var(--color-primary-hover);
text-decoration:none;
}

.adv-btn--link{
background:transparent;
color:var(--color-accent);
border-color:transparent;
padding:.4em .2em;
min-height:auto;
}
.adv-btn--link:hover{color:var(--color-accent-hover);text-decoration:underline;text-underline-offset:3px}

.adv-btn--danger{
background:var(--color-danger);
color:#ffffff;
border-color:var(--color-danger);
}
.adv-btn--danger:hover{
background:#7f1d1d;
border-color:#7f1d1d;
text-decoration:none;
}

.adv-btn--success{
background:var(--color-success);
color:#ffffff;
border-color:var(--color-success);
}
.adv-btn--success:hover{
background:#14532d;
border-color:#14532d;
text-decoration:none;
}

.adv-btn--sm{
font-size:var(--font-size-sm);
padding:.5em .85em;
min-height:36px;
border-radius:var(--radius-sm);
}

.adv-btn--lg{
font-size:var(--font-size-lg);
padding:.9em 1.35em;
min-height:52px;
}

.adv-btn--block{width:100%}
.adv-btn--icon{padding:.6em;min-width:44px;aspect-ratio:1}
.adv-btn--pill{border-radius:var(--radius-pill)}

.adv-btn--outline-light{
background:transparent;
color:#ffffff;
border-color:rgba(255,255,255,.45);
}
.adv-btn--outline-light:hover{
background:rgba(255,255,255,.12);
border-color:#ffffff;
color:#ffffff;
text-decoration:none;
}

.adv-btn-group{display:inline-flex;flex-wrap:wrap;gap:var(--space-3)}
.adv-btn-group--attached{display:inline-flex;gap:0}
.adv-btn-group--attached .adv-btn:not(:first-child):not(:last-child){border-radius:0}
.adv-btn-group--attached .adv-btn:first-child{border-top-right-radius:0;border-bottom-right-radius:0}
.adv-btn-group--attached .adv-btn:last-child{border-top-left-radius:0;border-bottom-left-radius:0}

.adv-btn[aria-pressed="true"]{
background:var(--color-primary-soft);
border-color:var(--color-accent);
color:var(--color-primary);
}

.adv-btn[aria-busy="true"]{
position:relative;
color:transparent!important;
pointer-events:none;
}
.adv-btn[aria-busy="true"]::after{
content:"";
position:absolute;
top:50%;
left:50%;
width:16px;
height:16px;
margin:-8px 0 0 -8px;
border:2px solid currentColor;
border-top-color:transparent;
border-radius:var(--radius-circle);
color:var(--color-primary-contrast);
animation:advSpin .8s linear infinite;
}
.adv-btn--secondary[aria-busy="true"]::after,
.adv-btn--ghost[aria-busy="true"]::after{color:var(--color-primary)}

@keyframes advSpin{to{transform:rotate(360deg)}}

@media (prefers-reduced-motion: reduce){
.adv-btn[aria-busy="true"]::after{animation-duration:2s}
.adv-btn--primary:hover{transform:none}
}