/* ==========================================================================
   Components — buttons, cards, tiles, process steps, data readouts, FAQ,
   pills, forms, notices, and article/legal prose.
   ========================================================================== */

/* ---------- buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  border-radius:999px;
  padding:14px 28px;
  font-size:14.5px; font-weight:600;
  border:1px solid transparent;
  transition:transform .15s ease, box-shadow .2s ease, background-color .2s ease, color .2s ease, border-color .2s ease;
}
.btn--primary{ background:var(--accent); color:var(--on-accent); }
.btn--primary:hover{ background:var(--accent-hover); color:var(--on-accent); transform:translateY(-1px); box-shadow:0 10px 22px rgba(var(--shadow-color),.2); }
.btn--primary:active{ transform:scale(.97); }
.btn--outline{ background:transparent; border-color:var(--border); color:var(--text-primary); }
.btn--outline:hover{ border-color:var(--accent); color:var(--accent-hover); }
.btn--outline-light{ background:transparent; border-color:rgba(255,255,255,.55); color:#fff; }
.btn--outline-light:hover{ border-color:#fff; background:rgba(255,255,255,.08); color:#fff; }
.btn--block{ width:100%; }

/* The nav's CTA is a .btn, and .btn sets display — this has to come after
   the .btn rules above (and after layout.css, which loads first) to win
   the cascade at mobile widths where the toggle/menu take over instead. */
@media (max-width:959.98px){
  .nav__cta{ display:none; }
}

/* ---------- tiles (who-we-help / includes / test types / credentials) ---------- */
.tile{
  background:var(--bg-elevated);
  border:1px solid var(--border);
  border-radius:var(--radius-l);
  padding:var(--space-5);
  transition:transform .2s ease, box-shadow .2s ease;
}
.tile:hover{ transform:translateY(-3px); box-shadow:0 14px 28px rgba(var(--shadow-color),.12); }
.tile__icon{
  width:38px; height:38px; border-radius:var(--radius-m);
  background:var(--accent-tint);
  display:flex; align-items:center; justify-content:center;
  margin-bottom:var(--space-4);
}
.tile__icon svg{ width:19px; height:19px; stroke:var(--accent-hover); fill:none; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.tile h3{ margin-bottom:6px; }
.tile p{ font-size:13.5px; color:var(--text-muted); line-height:1.55; margin:0; }
.credentials li{ list-style:none; }
.credentials p{ color:var(--text-muted); font-size:13.5px; }

/* ---------- process steps ---------- */
.steps{ display:grid; gap:var(--space-4); grid-template-columns:1fr; }
.step{
  background:var(--bg-elevated); border:1px solid var(--border); border-radius:var(--radius-l);
  padding:var(--space-5); list-style:none;
}
.step__n{ display:block; color:var(--accent-hover); font-size:13px; margin-bottom:var(--space-2); }
.step h3{ margin-bottom:6px; font-size:15.5px; }
.step p{ font-size:13px; color:var(--text-muted); line-height:1.5; margin:0; }
@media (min-width:640px){ .steps{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:960px){ .steps{ grid-template-columns:repeat(4,1fr); } }

/* ---------- data readout ---------- */
.data-readout{
  display:flex; flex-wrap:wrap; gap:var(--space-6);
  background:var(--brand-navy); border-radius:var(--radius-l);
  padding:var(--space-6);
}
.stat .stat__num{ font-family:var(--font-mono); font-size:28px; font-weight:500; color:#fff; }
.stat .stat__unit{ font-size:13px; color:rgba(255,255,255,.55); }
.stat .stat__label{ margin-top:4px; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; color:rgba(255,255,255,.55); }

/* ---------- pricing / testimonial / article cards ---------- */
.card{
  background:var(--bg-elevated);
  border:1px solid var(--border);
  border-radius:var(--radius-l);
  padding:var(--space-6);
  transition:transform .2s ease, box-shadow .2s ease;
}
.card--pricing h3{ font-size:17px; }
.card__price{ font-size:26px; margin:var(--space-3) 0 var(--space-3); font-weight:500; }
.card__price .mono{ color:var(--accent-hover); }
.card__price-period{ font-size:12.5px; color:var(--text-muted); font-family:var(--font-body); }
.card__list{ display:flex; flex-direction:column; gap:9px; margin:0 0 var(--space-5); }
.card__list li{
  font-size:13px; color:var(--text-body); padding-left:16px; position:relative; list-style:none;
}
.card__list li::before{
  content:""; position:absolute; left:0; top:7px; width:5px; height:5px; border-radius:50%; background:var(--accent);
}
.card--featured{ border-color:var(--accent); position:relative; }
.card__tag{
  display:inline-block;
  position:relative; top:-8px;
  background:var(--accent); color:var(--on-accent);
  font-size:10.5px; font-weight:600; letter-spacing:.02em;
  padding:4px 12px; border-radius:999px;
}
.card--featured .card__tag{ position:absolute; top:-11px; right:24px; }

.card--testimonial .card__quote{
  font-family:var(--font-display); font-weight:600; font-size:15px; color:var(--text-primary); line-height:1.5;
}
.card__who{ display:flex; align-items:center; gap:10px; margin-top:var(--space-4); }
.avatar{ width:34px; height:34px; border-radius:50%; flex-shrink:0; background:var(--brand-navy-2); }
.avatar--placeholder{ background:var(--border); }
.card__name{ font-size:13px; font-weight:600; color:var(--text-primary); }
.card__role{ font-size:11.5px; color:var(--text-muted); }
.card--placeholder{ border-style:dashed; }
.card--placeholder .card__quote{ color:var(--text-muted); font-style:italic; font-weight:400; font-family:var(--font-body); }

.card--article{ padding:var(--space-5); }
.card--article a{ display:block; }
.card--article img{ border-radius:var(--radius-m); width:100%; height:150px; object-fit:cover; margin-bottom:var(--space-4); }
.card__tag.mono{ background:none; color:var(--accent-hover); padding:0; top:0; font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; }
.card--article h3{ margin:var(--space-2) 0 6px; font-size:16px; }
.card--article p{ font-size:13px; color:var(--text-muted); line-height:1.55; margin:0; }
.card__meta{ margin-top:var(--space-3); font-size:11px; color:var(--text-muted); }
.article-grid{ margin-top:var(--space-5); }

/* ---------- pill filters ---------- */
.pill-row{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:var(--space-5); }
.pill{
  font-size:12.5px; font-weight:500; color:var(--text-muted);
  border:1px solid var(--border); border-radius:999px; padding:7px 16px;
  transition:background-color .2s ease, color .2s ease, border-color .2s ease;
}
.pill:hover{ border-color:var(--accent); color:var(--accent-hover); }
.pill--active{ color:#fff; background:var(--brand-navy); border-color:var(--brand-navy); }
.pill--active:hover{ color:#fff; }

/* ---------- FAQ (native details/summary) ---------- */
.faq{ max-width:760px; }
.faq-item{ border-top:1px solid var(--border); padding:var(--space-4) 0; }
.faq-item:first-child{ border-top:none; }
.faq-item summary{
  cursor:pointer; list-style:none;
  font-weight:600; color:var(--text-primary); font-size:15px;
  display:flex; align-items:center; justify-content:space-between; gap:var(--space-4);
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{
  content:"+"; font-family:var(--font-mono); color:var(--accent-hover); font-size:18px; flex-shrink:0;
}
.faq-item[open] summary::after{ content:"–"; }
.faq-item p{ font-size:14px; color:var(--text-muted); margin-top:var(--space-3); max-width:640px; line-height:1.6; }

/* ---------- notice banner ---------- */
.notice{
  background:var(--accent-tint); border:1px solid var(--accent-tint-strong); color:var(--accent-hover);
  border-radius:var(--radius-m); padding:14px 18px; font-size:13.5px; max-width:680px;
}
.notice a{ color:inherit; text-decoration:underline; }

/* ---------- article & legal prose ---------- */
.breadcrumb{ font-size:13px; color:var(--text-muted); margin-bottom:var(--space-4); }
.breadcrumb a{ color:var(--text-muted); }
.breadcrumb a:hover{ color:var(--accent-hover); }
.article h1{ margin:var(--space-2) 0 var(--space-6); }
.article__more{ margin-top:var(--space-7); font-size:14.5px; }
.article__more a{ color:var(--accent-hover); font-weight:600; }

.prose{ max-width:68ch; }
.prose h2{ font-size:20px; margin-top:var(--space-6); margin-bottom:var(--space-3); }
.prose p{ margin-bottom:var(--space-4); line-height:1.75; font-size:15.5px; }
.prose p:last-child{ margin-bottom:0; }

.legal h1{ margin-bottom:var(--space-3); }
.legal__meta{ font-size:13px; color:var(--text-muted); margin-bottom:var(--space-6); max-width:68ch; }

.check-list{ display:flex; flex-direction:column; gap:12px; margin-top:var(--space-4); }
.check-list li{
  font-size:15px; color:var(--text-body); padding-left:26px; position:relative; list-style:none;
}
.check-list li::before{
  content:"✓"; position:absolute; left:0; top:0; color:var(--accent-hover); font-weight:700;
}

/* ---------- contact page ---------- */
.contact-grid{ display:grid; gap:var(--space-6); grid-template-columns:1fr; }
.contact-form h2{ font-size:17px; margin-bottom:var(--space-5); }
.field{ margin-bottom:var(--space-4); }
.field label{ display:block; font-size:12px; font-weight:600; color:var(--text-primary); margin-bottom:6px; }
.field input, .field select, .field textarea{
  width:100%; padding:12px 14px; border-radius:var(--radius-s); border:1px solid var(--border);
  background:var(--bg); color:var(--text-body); font-family:inherit; font-size:14px;
}
.field textarea{ resize:vertical; }
.prose-note{ color:var(--text-muted); font-size:14px; line-height:1.6; margin-bottom:var(--space-5); max-width:52ch; }
.info-row{ display:flex; gap:14px; align-items:flex-start; padding:14px 0; border-top:1px solid var(--border); }
.info-row:first-of-type{ border-top:none; }
.info-row__icon{
  width:32px; height:32px; border-radius:50%; background:var(--accent-tint);
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.info-row__icon svg{ width:15px; height:15px; stroke:var(--accent-hover); fill:none; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.info-row__t{ font-size:11.5px; text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); }
.info-row__v{ font-size:14.5px; color:var(--text-primary); font-weight:500; margin-top:2px; display:block; }
a.info-row__v:hover{ color:var(--accent-hover); }
.map-ph{
  height:150px; border-radius:var(--radius-m); margin-top:var(--space-5);
  background:repeating-linear-gradient(45deg, var(--bg-sunken) 0 10px, var(--border) 10px 11px);
  display:flex; align-items:center; justify-content:center; color:var(--text-muted); font-size:12px;
}
.form-banner{ border-radius:var(--radius-m); padding:14px 18px; font-size:13.5px; margin-bottom:var(--space-5); }
.form-banner.success{ background:rgba(47,122,82,.12); border:1px solid rgba(47,122,82,.4); color:var(--success); }
.form-banner.error{ background:rgba(178,58,58,.12); border:1px solid rgba(178,58,58,.4); color:var(--danger); }

/* ---------- weekly check-in ---------- */
.checkin-section-title{
  display:flex; align-items:center; gap:12px;
  font-size:15px; margin:var(--space-7) 0 var(--space-5);
  padding-bottom:var(--space-3); border-bottom:1px solid var(--border);
}
.checkin-section-title:first-of-type{ margin-top:var(--space-5); }
.checkin-section-n{
  display:flex; align-items:center; justify-content:center;
  width:24px; height:24px; border-radius:50%; flex-shrink:0;
  background:var(--accent); color:var(--on-accent);
  font-family:var(--font-mono); font-size:12px; font-weight:600;
}
.field__hint{ font-size:12px; color:var(--text-muted); margin:-3px 0 8px; }
.field-pair{ display:grid; gap:var(--space-4); grid-template-columns:1fr; margin-bottom:var(--space-4); }
@media (min-width:640px){ .field-pair{ grid-template-columns:1fr 1fr; } }

.scale{ display:flex; align-items:center; gap:var(--space-3); }
.scale input[type="range"]{
  flex:1; -webkit-appearance:none; appearance:none;
  height:4px; border-radius:2px; background:var(--border); outline:none;
}
.scale input[type="range"]::-webkit-slider-thumb{
  -webkit-appearance:none; appearance:none;
  width:18px; height:18px; border-radius:50%;
  background:var(--accent); cursor:pointer;
  border:2px solid var(--bg-elevated); box-shadow:0 1px 3px rgba(var(--shadow-color),.35);
}
.scale input[type="range"]::-moz-range-thumb{
  width:18px; height:18px; border-radius:50%; background:var(--accent); cursor:pointer;
  border:2px solid var(--bg-elevated); box-shadow:0 1px 3px rgba(var(--shadow-color),.35);
}
.scale__value{
  font-family:var(--font-mono); font-size:15px; font-weight:600; color:var(--accent-hover);
  min-width:22px; text-align:center; flex-shrink:0;
}
@media (min-width:900px){
  .contact-grid{ grid-template-columns:1.1fr .9fr; }
}

/* ---------- testimonials placeholders ---------- */
.ph-photo{
  height:220px; border-radius:var(--radius-l); background:var(--bg-elevated); border:1px dashed var(--border);
  display:flex; align-items:center; justify-content:center; color:var(--text-muted); font-size:13px;
}
.ph-quote{
  background:var(--bg-elevated); border:1px dashed var(--border); border-radius:var(--radius-l);
  padding:var(--space-5); font-style:italic; color:var(--text-muted); margin-top:var(--space-5);
}
.ph-card{
  border:1px dashed var(--border); border-radius:var(--radius-l); padding:var(--space-5); background:var(--bg-elevated);
}
.ph-card__photo{ height:70px; background:var(--bg-sunken); border-radius:var(--radius-m); margin-bottom:10px; }
.ph-card__quote{ color:var(--text-muted); font-style:italic; font-size:13.5px; }
.stat-tiles{ margin-bottom:var(--space-4); }
.stat-tiles__num{ color:var(--accent-hover); font-size:22px; margin-bottom:4px; }
