/* =====================================================================
   Scoped styles for the individual service pages ONLY.
   Loaded exclusively by the pages generated by
   scripts/build-service-pages.js — never by the homepage or /quote —
   so nothing here can affect protected routes.
   All selectors are prefixed .sp- to avoid touching global styles.
   ===================================================================== */

.sp-layout { display: grid; gap: 2.4rem; align-items: start; }

.sp-checklist {
  list-style: none; margin: 0 0 1.8rem; padding: 0;
  display: grid; gap: .7rem; grid-template-columns: 1fr;
}
.sp-checklist li {
  position: relative; padding: .85rem 1rem .85rem 2.8rem;
  background: var(--white-warm); border: 1px solid var(--line); border-radius: 14px;
  font-size: .97rem;
}
.sp-checklist li::before {
  content: ""; position: absolute; left: .9rem; top: 50%; transform: translateY(-50%);
  width: 1.3rem; height: 1.3rem; border-radius: 50%; background: var(--sage-100);
}
.sp-checklist li::after {
  content: ""; position: absolute; left: 1.2rem; top: 50%; transform: translateY(-50%);
  width: .7rem; height: .7rem; background: var(--forest-800);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M16.7 5.3 8 14l-4.7-4.7 1.4-1.4L8 11.2l7.3-7.3z'/%3E%3C/svg%3E") center/contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M16.7 5.3 8 14l-4.7-4.7 1.4-1.4L8 11.2l7.3-7.3z'/%3E%3C/svg%3E") center/contain no-repeat;
}

.sp-related { display: grid; gap: .8rem; grid-template-columns: 1fr; margin-top: 1rem; }
.sp-related a {
  display: flex; align-items: center; justify-content: space-between; gap: .8rem;
  background: var(--white-warm); border: 1px solid var(--line); border-radius: 14px;
  padding: 1rem 1.15rem; text-decoration: none;
  font-family: var(--font-display); font-weight: 600; color: var(--forest-900);
  transition: border-color .18s ease, transform .18s ease, box-shadow .18s ease;
}
.sp-related a:hover { border-color: var(--forest-600); transform: translateY(-2px); box-shadow: var(--shadow-sm); color: var(--forest-900); }
.sp-related a svg { width: 1.05rem; height: 1.05rem; flex: none; color: var(--forest-700); }

.sp-side { display: grid; gap: 1.1rem; }
.sp-side__card {
  background: var(--white-warm); border: 1px solid var(--line); border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm); padding: 1.5rem 1.4rem;
}
.sp-side__card h2 { font-size: 1.1rem; margin-bottom: .8rem; }
.sp-side__card p { color: var(--muted); font-size: .93rem; margin-bottom: 1rem; }
.sp-side__card .btn { width: 100%; }
.sp-side__card--promo { background: var(--sage-100); border-color: var(--sage-200); }
.sp-side__card--promo p { color: var(--ink); margin-bottom: 0; }
.sp-side__phone {
  display: block; font-family: var(--font-display); font-weight: 800;
  font-size: 1.5rem; color: var(--forest-900); text-decoration: none; margin-bottom: .3rem;
}
.sp-side__phone:hover { color: var(--forest-700); }

@media (min-width: 560px) {
  .sp-checklist { grid-template-columns: 1fr 1fr; }
  .sp-related { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 1020px) {
  .sp-layout { grid-template-columns: 1.7fr 1fr; gap: 3rem; }
  .sp-side { position: sticky; top: calc(var(--header-h) + 1.6rem); }
}

/* ---------- Rich service-page components ---------- */
.sp-options { display: grid; gap: .8rem; grid-template-columns: 1fr; margin-bottom: 1.8rem; }
.sp-option {
  background: var(--white-warm); border: 1px solid var(--line); border-radius: 14px;
  padding: 1rem 1.1rem;
}
.sp-option h3 { font-size: 1rem; margin-bottom: .25rem; }
.sp-option p { color: var(--muted); font-size: .93rem; margin: 0; }
.sp-steps { list-style: none; margin: 0 0 1.8rem; padding: 0; counter-reset: spstep; display: grid; gap: .6rem; }
.sp-steps li {
  counter-increment: spstep; position: relative; padding: .8rem 1rem .8rem 3.2rem;
  background: var(--white-warm); border: 1px solid var(--line); border-radius: 14px; font-size: .97rem;
}
.sp-steps li::before {
  content: counter(spstep, decimal-leading-zero); position: absolute; left: 1rem; top: 50%; transform: translateY(-50%);
  font-family: var(--font-display); font-weight: 800; color: var(--forest-700); font-size: .95rem;
}
.sp-hubcard { text-decoration: none; color: inherit; }
.sp-hubcard h3 { color: var(--forest-900); }
@media (min-width: 560px) { .sp-options { grid-template-columns: 1fr 1fr; } }
