/* ============================================================
   COMPONENTS — Buttons, cards, badges, trust bar, misc
   ============================================================ */

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-8);
  font-family: var(--font-heading);
  font-size: var(--size-base);
  font-weight: var(--weight-bold);
  line-height: 1;
  border-radius: var(--radius-full);
  text-decoration: none;
  cursor: pointer;
  transition: background-color var(--transition-base),
              color var(--transition-base),
              box-shadow var(--transition-base),
              transform var(--transition-fast);
  white-space: nowrap;
  border: 2px solid transparent;
}

.btn:hover {
  transform: translateY(-1px);
}

.btn:active {
  transform: translateY(0);
}

/* Primary — teal fill */
.btn--primary {
  background-color: var(--color-accent);
  color: #000;
  border-color: var(--color-accent);
}

.btn--primary:hover {
  background-color: var(--color-accent-hover);
  border-color: var(--color-accent-hover);
  box-shadow: var(--shadow-accent);
  color: #000;
}

/* Outline — teal border */
.btn--outline {
  background-color: transparent;
  color: var(--color-accent);
  border-color: var(--color-accent);
}

.btn--outline:hover {
  background-color: var(--color-accent);
  color: #000;
  box-shadow: var(--shadow-accent);
}

/* Ghost — white text */
.btn--ghost {
  background-color: transparent;
  color: var(--color-body);
  border-color: var(--color-border);
}

.btn--ghost:hover {
  background-color: var(--color-card-bg);
  color: var(--color-body);
}

/* Size variants */
.btn--sm {
  padding: var(--space-2) var(--space-5);
  font-size: var(--size-sm);
  min-height: 40px;
}

.btn--lg {
  padding: var(--space-4) var(--space-10);
  font-size: var(--size-md);
}

/* ---------- Cards ---------- */
.card {
  background: var(--color-card-bg);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-xl);
  padding: var(--space-8);
  transition: background-color 240ms var(--ease-standard),
              border-color 240ms var(--ease-standard),
              transform 240ms var(--ease-standard),
              box-shadow 240ms var(--ease-standard);
}

.card:hover {
  background: var(--color-card-bg-hover);
  border-color: var(--border-mint);
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

.card--featured {
  background: linear-gradient(135deg, var(--color-gradient-start), var(--color-gradient-end));
  border-color: var(--color-accent);
  box-shadow: 0 0 0 1px var(--color-accent), var(--shadow-accent);
}

.card--flat {
  background: var(--color-card-bg);
  border: 1px solid var(--color-border);
}

.card--flat:hover {
  transform: none;
  box-shadow: none;
  background: var(--color-card-bg-hover);
}

/* ---------- Badge ---------- */
.badge {
  display: inline-flex;
  align-items: center;
  padding: var(--space-1) var(--space-3);
  font-size: var(--size-xs);
  font-weight: var(--weight-semibold);
  font-family: var(--font-heading);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  border-radius: var(--radius-full);
}

.badge--accent {
  background-color: rgba(105, 195, 196, 0.15);
  color: var(--color-accent);
  border: 1px solid rgba(105, 195, 196, 0.3);
}

.badge--purple {
  background-color: rgba(80, 57, 128, 0.5);
  color: var(--color-heading);
  border: 1px solid rgba(80, 57, 128, 0.8);
}

/* ---------- Trust Bar ---------- */
.trust-bar {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-6);
  justify-content: center;
  align-items: center;
  padding: var(--space-6) var(--space-6);
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

.trust-bar__item {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--size-sm);
  font-weight: var(--weight-semibold);
  color: var(--color-muted);
  white-space: nowrap;
}

.trust-bar__item svg,
.trust-bar__item .icon {
  width: 18px;
  height: 18px;
  color: var(--color-accent);
  flex-shrink: 0;
}

/* ---------- Icon box ---------- */
.icon-box {
  width: 56px;
  height: 56px;
  border-radius: var(--radius-lg);
  background: rgba(105, 195, 196, 0.1);
  border: 1px solid rgba(105, 195, 196, 0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-bottom: var(--space-5);
}

.icon-box svg {
  width: 28px;
  height: 28px;
  color: var(--color-accent);
}

/* ---------- Check list ---------- */
.check-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.check-list li {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  font-size: var(--size-base);
  color: var(--color-muted);
  line-height: var(--leading-snug);
}

.check-list li::before {
  content: '';
  width: 20px;
  height: 20px;
  min-width: 20px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%2369C3C4'%3E%3Cpath fill-rule='evenodd' d='M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z' clip-rule='evenodd'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: contain;
  margin-top: 2px;
}

/* ---------- Tag group ---------- */
.tag-group {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

/* ---------- Pricing "popular" label ---------- */
.popular-label {
  position: absolute;
  top: -14px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--color-accent);
  color: #000;
  font-size: var(--size-xs);
  font-weight: var(--weight-bold);
  font-family: var(--font-heading);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: var(--space-1) var(--space-4);
  border-radius: var(--radius-full);
  white-space: nowrap;
}

/* ---------- Responsive ---------- */
@media (max-width: 767px) {
  .trust-bar {
    gap: var(--space-4);
  }

  .btn--lg {
    padding: var(--space-3) var(--space-8);
    font-size: var(--size-base);
  }
}

/* ---------- Pulse dot ---------- */
.pulse-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--color-accent);
  box-shadow: 0 0 10px var(--color-accent);
  animation: pulse 2.4s ease infinite;
  flex-shrink: 0;
}
@keyframes pulse {
  0%, 100% { opacity: 1; box-shadow: 0 0 10px var(--color-accent); }
  50%       { opacity: 0.35; box-shadow: 0 0 3px var(--color-accent); }
}


/* ---------- Theme toggle (footer) ---------- */
.theme-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-fg-muted);
  background: none;
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-full);
  padding: 0.35rem 0.8rem;
  cursor: pointer;
  transition: color 200ms var(--ease-standard), border-color 200ms var(--ease-standard);
  white-space: nowrap;
}
.theme-toggle:hover {
  color: var(--color-accent);
  border-color: var(--border-mint);
}
/* Show sun in dark mode, moon in light mode */
.theme-toggle__moon { display: none; }
html[data-theme="light"] .theme-toggle__sun  { display: none; }
html[data-theme="light"] .theme-toggle__moon { display: block; }
