/* ============================================================
   Synkope — Component styles
   Depends on tokens.css. Import AFTER tokens.css.
   Classes prefixed .s-* are the new, doc'd system; existing
   class names in style.css continue to work via token aliases.
   ============================================================ */

/* ---------- Buttons ---------- */
.s-btn {
  display: inline-block;
  padding: 12px 30px;
  border: none;
  border-radius: var(--s-radius);
  text-decoration: none;
  font-family: var(--s-font-body);
  font-weight: 600;
  font-size: var(--s-fs-body);
  cursor: pointer;
  transition: var(--s-transition);
  text-align: center;
}
.s-btn:focus-visible {
  outline: 2px solid var(--s-primary);
  outline-offset: 2px;
}
.s-btn--primary {
  background: var(--s-primary);
  color: #fff;
}
.s-btn--primary:hover {
  transform: translateY(-2px);
  box-shadow: var(--s-shadow-btn);
}
.s-btn--secondary {
  background: transparent;
  color: var(--s-primary);
  border: 2px solid var(--s-primary);
  padding: 10px 28px;
}
.s-btn--secondary:hover {
  background: var(--s-primary);
  color: #fff;
  transform: translateY(-2px);
}
.s-btn--link {
  background: none;
  color: var(--s-secondary);
  padding: 6px 0;
  border-radius: 0;
  border-bottom: 1px solid transparent;
  font-weight: 400;
  font-size: var(--s-fs-small);
}
.s-btn--link:hover {
  color: var(--s-primary-light);
  border-bottom-color: var(--s-primary-light);
}

/* ---------- Cards ---------- */
.s-card {
  background: var(--s-gradient-card-surface);
  padding: var(--s-space-xl);
  border-radius: var(--s-radius-xl);
  box-shadow: var(--s-shadow-soft);
  border: 1px solid rgba(255, 165, 80, 0.15);
  position: relative;
  overflow: hidden;
  text-align: center;
  transition: var(--s-transition);
}
.s-card::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--s-gradient-card-rule);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.s-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--s-shadow-hover);
}
.s-card:hover::before {
  opacity: 0.9;
}
.s-card h3 {
  color: var(--s-primary-light);
  font-family: var(--s-font-heading);
  font-weight: 600;
  font-size: var(--s-fs-h3);
  margin-bottom: var(--s-space-md);
}
.s-card p {
  color: var(--s-text);
  line-height: var(--s-lh-body);
  margin-bottom: var(--s-space-lg);
}

/* Accent (orange fill) card */
.s-card--accent {
  background: var(--s-gradient-orange);
  color: #fff;
  border: none;
}
.s-card--accent h3 {
  color: #fff;
}
.s-card--accent p {
  color: rgba(255, 255, 255, 0.9);
}
.s-card--accent .s-btn--primary {
  background: #fff;
  color: var(--s-primary);
}

/* ---------- Team member ---------- */
.s-team {
  background: var(--s-gradient-card-team);
  border-radius: var(--s-radius-lg);
  padding: 2rem;
  box-shadow:
    0 6px 25px rgba(29, 95, 129, 0.12),
    0 2px 10px rgba(255, 165, 80, 0.08);
  text-align: center;
  border: 1px solid rgba(255, 165, 80, 0.12);
  transition: var(--s-transition);
}
.s-team:hover {
  transform: translateY(-5px);
  box-shadow:
    0 15px 45px rgba(29, 95, 129, 0.18),
    0 5px 20px rgba(255, 165, 80, 0.12);
}
.s-team-photo {
  width: 200px;
  height: 200px;
  margin: 0 auto var(--s-space-lg);
  border-radius: 50%;
  overflow: hidden;
  border: 4px solid var(--s-primary);
}
.s-team-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.s-team h3 {
  color: var(--s-primary);
  font-family: var(--s-font-heading);
  font-weight: 600;
  font-size: var(--s-fs-h3);
  margin-bottom: 0.5rem;
}

/* ---------- Forms ---------- */
.s-form {
  background: var(--s-gradient-card-form);
  padding: 2rem;
  border-radius: var(--s-radius-xl);
  box-shadow:
    0 6px 25px rgba(29, 95, 129, 0.08),
    0 2px 10px rgba(255, 165, 80, 0.08);
  border: 1px solid rgba(255, 165, 80, 0.15);
}
.s-form-group {
  margin-bottom: 1.5rem;
}
.s-form-group label {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: 600;
  color: var(--s-text);
  font-size: var(--s-fs-small);
}
.s-form-group input,
.s-form-group textarea {
  width: 100%;
  padding: 1rem;
  border: 1px solid #ddd;
  border-radius: var(--s-radius);
  font-family: inherit;
  font-size: var(--s-fs-body);
  transition: border-color 0.3s ease;
}
.s-form-group input:focus,
.s-form-group textarea:focus {
  outline: none;
  border-color: var(--s-primary-light);
}
.s-form-group input.error,
.s-form-group textarea.error {
  border-color: var(--s-error);
  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}

/* ---------- Utility: container ---------- */
.s-container {
  max-width: var(--s-container);
  margin: 0 auto;
  padding: 0 var(--s-gutter);
}

/* ---------- Utility: section rhythm ---------- */
.s-section {
  padding: var(--s-space-3xl) 0;
}
@media (max-width: 768px) {
  .s-section {
    padding: 60px 0;
  }
}

/* ---------- Bullet list ---------- */
.s-list {
  list-style: none;
  display: grid;
  grid-template-columns: 1fr 1fr;
  border: 1.5px solid #e2e8f0;
  border-radius: var(--s-radius-lg);
  overflow: hidden;
  background: #f8fafc;
  padding: 0.5rem 0;
}
.s-list li {
  position: relative;
  padding: 0.3rem 0.75rem 0.3rem 1.5rem;
  color: var(--s-text);
  font-weight: 500;
  line-height: 1.45;
}
.s-list li::before {
  content: "";
  position: absolute;
  left: 0.6rem;
  top: 50%;
  transform: translateY(-50%);
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--s-primary);
}
.s-list li:last-child:nth-child(odd) {
  grid-column: 1 / -1;
}
@media (max-width: 600px) {
  .s-list {
    grid-template-columns: 1fr;
  }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
  .s-card:hover,
  .s-team:hover,
  .s-btn--primary:hover,
  .s-btn--secondary:hover {
    transform: none;
  }
}
