/*
 * =========================================================
 * OLYTIC SOLUTIONS - Button Library
 * buttons.css
 *
 * Three button types per brand spec:
 *   Primary   - Teal fill, white text. High-conversion CTA.
 *   Secondary - Navy fill, white text. Supporting action.
 *   Ghost     - Transparent fill, Navy border + text.
 *               Subtle - no pop-up aggression (brand rule).
 *
 * Brand CTA rules (from Brand Style & Tone doc):
 *   - No aggressive CTAs. No "SCHEDULE A DEMO NOW" energy.
 *   - Low-friction language: "Start the conversation",
 *     "30 minutes. No pitch.", "See how it works"
 *   - CTAs should feel like a natural next step.
 *
 * Requires: tokens.css loaded first.
 * =========================================================
 */

/* ─── Base Button Reset ─────────────────────────────────── */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);

  font-family: var(--font-sans);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  line-height: 1;
  letter-spacing: 0.01em;
  text-decoration: none;
  white-space: nowrap;

  padding: 0.8125rem 1.75rem;   /* 13px 28px - generous touch target */
  border-radius: var(--radius-md);
  border: 2px solid transparent;
  cursor: pointer;

  transition:
    background-color var(--transition-fast),
    border-color     var(--transition-fast),
    color            var(--transition-fast),
    box-shadow       var(--transition-fast),
    transform        var(--transition-fast);

  position: relative;
  overflow: hidden;
}

/* Prevent default focus ring; add branded one */
.btn:focus-visible {
  outline: 2px solid var(--color-gold);
  outline-offset: 3px;
}

/* Subtle lift on active - no aggressive transforms */
.btn:active {
  transform: translateY(1px);
}

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

/* ─── Primary Button ─────────────────────────────────────── */
/*
 * Teal (#0D6B6E) fill - the brand identifier color.
 * For above-the-fold and primary conversion moments.
 * "Start the conversation" / "30 minutes. No pitch."
 */

.btn-primary {
  background-color: var(--color-teal);
  border-color: var(--color-teal);
  color: #FFFFFF;
  box-shadow: var(--shadow-sm);
}

.btn-primary:hover {
  background-color: #0A5558;    /* Teal darkened ~15% */
  border-color: #0A5558;
  color: #FFFFFF;
  box-shadow: var(--shadow-md);
}

.btn-primary:active {
  background-color: #094A4D;
  border-color: #094A4D;
  box-shadow: none;
}

/* Gold accent variant - use sparingly on dark sections */
.btn-primary--gold {
  background-color: var(--color-gold);
  border-color: var(--color-gold);
  color: var(--color-obsidian);
}

.btn-primary--gold:hover {
  background-color: #B8945A;
  border-color: #B8945A;
  color: var(--color-obsidian);
}

/* ─── Secondary Button ──────────────────────────────────── */
/*
 * Navy (#1B2A4A) fill - authoritative, structural.
 * Use for secondary actions alongside a Primary CTA.
 */

.btn-secondary {
  background-color: var(--color-navy);
  border-color: var(--color-navy);
  color: #FFFFFF;
}

.btn-secondary:hover {
  background-color: #253D6B;    /* Navy lightened */
  border-color: #253D6B;
  color: #FFFFFF;
}

.btn-secondary:active {
  background-color: #152039;
  border-color: #152039;
}

/* ─── Ghost Button ───────────────────────────────────────── */
/*
 * Transparent - Navy border + text.
 * Low-friction option: "Read more", "See all", supporting links.
 * Brand: no aggression. This is the soft CTA.
 */

.btn-ghost {
  background-color: transparent;
  border-color: var(--color-navy);
  color: var(--color-navy);
}

.btn-ghost:hover {
  background-color: var(--color-navy);
  border-color: var(--color-navy);
  color: #FFFFFF;
}

.btn-ghost:active {
  background-color: #152039;
  border-color: #152039;
  color: #FFFFFF;
}

/* Ghost on dark backgrounds */
.btn-ghost--on-dark {
  background-color: transparent;
  border-color: rgba(255, 255, 255, 0.55);
  color: #FFFFFF;
}

.btn-ghost--on-dark:hover {
  background-color: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.85);
  color: #FFFFFF;
}

/* ─── Size Variants ─────────────────────────────────────── */

/* Small - inline actions, table rows */
.btn--sm {
  font-size: var(--text-sm);
  padding: 0.5625rem 1.25rem;   /* 9px 20px */
}

/* Large - hero section primary CTA */
.btn--lg {
  font-size: var(--text-md);    /* 18px */
  padding: 1rem 2.25rem;        /* 16px 36px */
  border-radius: var(--radius-lg);
}

/* ─── Icon Button ────────────────────────────────────────── */
/*
 * For icon-only actions (e.g., mobile nav close button).
 * Square, icon-sized.
 */

.btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  background-color: transparent;
  border: none;
  cursor: pointer;
  color: var(--text-body);
  border-radius: var(--radius-md);
  transition: background-color var(--transition-fast),
              color var(--transition-fast);
}

.btn-icon:hover {
  background-color: var(--color-surface);
  color: var(--color-navy);
}

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

/* ─── Button with trailing arrow ────────────────────────── */
/*
 * "Start the conversation →" style.
 * The arrow is a CSS pseudo-element that nudges on hover.
 */

.btn-arrow::after {
  content: '→';
  display: inline-block;
  margin-left: var(--space-2);
  transition: transform var(--transition-fast);
}

.btn-arrow:hover::after {
  transform: translateX(4px);
}

/* ─── Full Width ─────────────────────────────────────────── */

.btn--full {
  width: 100%;
}

/* ─── Button Group ───────────────────────────────────────── */
/*
 * Side-by-side CTA pairs: Primary + Ghost
 * Usage: <div class="btn-group">...</div>
 */

.btn-group {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
  align-items: center;
}

.btn-group--center {
  justify-content: center;
}

@media (max-width: 480px) {
  .btn-group {
    flex-direction: column;
    align-items: stretch;
  }

  .btn-group .btn {
    width: 100%;
    justify-content: center;
  }
}
