/* ============================================================
   Blockpulse — Shared Buttons (Swiss Precision flip)
   Used site-wide. Companion JS: assets/js/buttons.js
   ============================================================ */

.btn {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 11px 18px; border-radius: 6px;
  font-family: var(--font-body, "SF Pro Display", -apple-system, "Inter", sans-serif);
  font-size: 14px; font-weight: 500;
  cursor: pointer; border: 1px solid transparent;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
  line-height: 1;
  text-decoration: none;
  color: inherit;
}

/* btn-primary / btn-secondary: flip on hover (Swiss Precision) */
.btn-primary,
.btn-secondary {
  position: relative;
  display: inline-block;
  background: transparent;
  border: 0;
  padding: 0;
  cursor: pointer;
  perspective: 600px;
  border-radius: 4px;
  line-height: 1;
  text-decoration: none;
}
.btn-primary .face,
.btn-secondary .face,
.btn-primary .invisible-sizer,
.btn-secondary .invisible-sizer {
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-body, "SF Pro Display", -apple-system, "Inter", sans-serif);
  font-size: 12px; font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 12px 22px;
  border-radius: 4px;
  white-space: nowrap;
}
.btn-primary .face,
.btn-secondary .face {
  position: absolute; inset: 0;
  transition: transform 0.45s cubic-bezier(.4,0,.2,1), opacity 0.35s ease;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
.btn-primary .invisible-sizer,
.btn-secondary .invisible-sizer {
  visibility: hidden;
  pointer-events: none;
}
/* PRIMARY — front: dark / back: inverted bg + outlined */
.btn-primary .face-front {
  background: var(--fg, #0C111D); color: var(--bg, #FFFFFF);
  transform: rotateX(0deg) translateY(0);
  opacity: 1;
}
.btn-primary .face-back {
  background: var(--bg, #FFFFFF); color: var(--fg, #0C111D);
  border: 1px solid var(--fg, #0C111D);
  transform: rotateX(-90deg) translateY(-50%);
  opacity: 0;
}
.btn-primary:hover .face-front {
  transform: rotateX(90deg) translateY(50%);
  opacity: 0;
}
.btn-primary:hover .face-back {
  transform: rotateX(0deg) translateY(0);
  opacity: 1;
}
/* SECONDARY — front: light + hairline / back: inverted dark */
.btn-secondary .face-front {
  background: var(--bg-alt, #F9FAFB); color: var(--fg, #0C111D);
  border: 1px solid var(--line-bright, #D0D5DD);
  transform: rotateX(0deg) translateY(0);
  opacity: 1;
}
.btn-secondary .face-back {
  background: var(--fg, #0C111D); color: var(--bg, #FFFFFF);
  transform: rotateX(-90deg) translateY(-50%);
  opacity: 0;
}
.btn-secondary:hover .face-front {
  transform: rotateX(90deg) translateY(50%);
  opacity: 0;
}
.btn-secondary:hover .face-back {
  transform: rotateX(0deg) translateY(0);
  opacity: 1;
}
.btn-primary:active,
.btn-secondary:active { transform: scale(0.97); transition: transform .12s ease; }

.btn-ghost {
  color: var(--fg-soft, #344054);
  background: transparent;
  text-decoration: none;
  font-size: 13px; font-weight: 500;
  padding: 11px 14px;
  border-radius: 6px;
  transition: background .15s ease, color .15s ease;
}
.btn-ghost:hover {
  background: var(--bg-alt, #F9FAFB);
  color: var(--fg, #0C111D);
}
