:root {
  --canvas: #F6F5F2;
  --rail: #1A1D24;
  --rail-text: #F2F2F0;
  --accent: #3D7A5A;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--canvas);
  color: var(--rail);
  font-family: "Sora", sans-serif;
  font-size: 15px;
  line-height: 1.65;
}
a { color: inherit; }

.topbar {
  min-height: 64px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 14px 5.5vw;
  background: var(--canvas);
  border-bottom: 1px solid var(--rail);
}
.topbar-brand {
  font-family: "DM Sans", sans-serif;
  font-weight: 700;
  letter-spacing: -0.03em;
  text-decoration: none;
}
.topbar nav { display: flex; gap: 18px; }
.topbar nav a {
  font-size: 12px;
  font-weight: 600;
  text-decoration: none;
}
.topbar nav a:hover, .topbar nav a:focus-visible { color: var(--accent); }

.shell { display: grid; grid-template-columns: minmax(330px, 38vw) minmax(0, 1fr); }
.rail {
  min-height: calc(100vh - 64px);
  position: sticky;
  top: 0;
  align-self: start;
  background: var(--rail);
  color: var(--rail-text);
}
.rail-inner {
  min-height: calc(100vh - 64px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 56px 12%;
}
.eyebrow, .section-kicker {
  margin: 0 0 14px;
  color: var(--accent);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}
.rail .eyebrow { color: var(--rail-text); }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 {
  font-family: "DM Sans", sans-serif;
  letter-spacing: -0.045em;
  line-height: 1.05;
}
h1 { margin-bottom: 22px; font-size: clamp(42px, 5vw, 74px); }
h2 { max-width: 700px; margin-bottom: 34px; font-size: clamp(32px, 3.8vw, 52px); }
h3 { margin-bottom: 10px; font-size: 22px; }
.rail-pitch { max-width: 410px; margin-bottom: 30px; font-size: 16px; }
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 50px;
  padding: 12px 18px;
  border: 1px solid var(--accent);
  border-radius: 0;
  font-family: "Sora", sans-serif;
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
}
.button-primary { width: fit-content; background: var(--accent); color: var(--rail-text); }
.button-primary:hover, .button-primary:focus-visible { background: var(--rail-text); color: var(--rail); }
.rail-contact { margin-top: 40px; display: grid; gap: 3px; }
.rail-contact span { font-size: 11px; letter-spacing: 0.11em; text-transform: uppercase; }
.rail-contact a { font-family: "DM Sans", sans-serif; font-size: 19px; font-weight: 600; text-decoration: none; }
.rail-note { display: flex; gap: 11px; margin-top: 30px; max-width: 350px; }
.note-mark { flex: 0 0 9px; height: 9px; margin-top: 8px; background: var(--accent); }
.rail-note p { margin: 0; font-size: 12px; line-height: 1.55; }

.content { min-width: 0; }
.content-section { padding: clamp(56px, 8vw, 108px) clamp(24px, 8vw, 116px); border-bottom: 1px solid var(--rail); }
.price-section { padding-top: clamp(70px, 10vw, 132px); }
.price-line {
  max-width: 760px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 25px;
  align-items: end;
  padding: 28px 0 26px 22px;
  border-left: 5px solid var(--accent);
  border-top: 1px solid var(--rail);
  border-bottom: 1px solid var(--rail);
}
.price-name { margin-bottom: 6px; font-family: "DM Sans", sans-serif; font-size: 20px; font-weight: 700; line-height: 1.2; }
.price-detail, .aside-copy { margin-bottom: 0; font-size: 13px; }
.price-line strong { font-family: "DM Sans", sans-serif; font-size: 26px; white-space: nowrap; }
.aside-copy { max-width: 600px; margin-top: 22px; }

.service-list { max-width: 850px; }
.service-block {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  padding: 26px 0 26px 22px;
  border-left: 5px solid var(--accent);
  border-bottom: 1px solid var(--rail);
}
.service-block:first-child { border-top: 1px solid var(--rail); }
.service-block p { max-width: 580px; margin-bottom: 0; font-size: 13px; }
.service-with-image { grid-template-columns: 150px minmax(0, 1fr); gap: 20px; align-items: center; }
.service-with-image img { width: 150px; height: 112px; object-fit: cover; display: block; }

.timeline { max-width: 750px; margin: 0; padding: 0; list-style: none; }
.timeline li { position: relative; display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 18px; padding-bottom: 38px; }
.timeline li:not(:last-child)::before { content: ""; position: absolute; left: 4px; top: 12px; bottom: 0; width: 1px; background: var(--rail); }
.timeline-dot { position: relative; z-index: 1; width: 9px; height: 9px; margin-top: 4px; background: var(--accent); }
.timeline p { max-width: 560px; margin-bottom: 0; font-size: 13px; }

.contact-section { border-bottom: 0; }
.contact-layout { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(280px, 1fr); gap: clamp(34px, 7vw, 80px); max-width: 900px; }
.contact-details address { margin-bottom: 18px; font-style: normal; font-family: "DM Sans", sans-serif; font-size: 21px; font-weight: 600; line-height: 1.25; }
.contact-phone { display: inline-block; margin-bottom: 20px; color: var(--accent); font-family: "DM Sans", sans-serif; font-size: 22px; font-weight: 700; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.contact-details p { max-width: 340px; font-size: 13px; }
.booking-form { display: grid; gap: 8px; }
.booking-form label { margin-top: 4px; font-size: 12px; font-weight: 600; }
.booking-form input, .booking-form textarea {
  width: 100%;
  padding: 12px;
  border: 1px solid var(--rail);
  border-radius: 0;
  outline: none;
  background: var(--canvas);
  color: var(--rail);
  font: inherit;
}
.booking-form input:focus, .booking-form textarea:focus { border-color: var(--accent); }
.button-form { margin-top: 10px; background: var(--rail); color: var(--rail-text); }
.button-form:hover, .button-form:focus-visible { background: var(--accent); color: var(--rail-text); }
.form-status { min-height: 22px; margin: 2px 0 0; color: var(--accent); font-size: 12px; font-weight: 600; }
.privacy-strip { max-width: 900px; margin-top: 72px; padding: 22px 0 0; border-top: 1px solid var(--rail); }
.privacy-strip h3 { margin-bottom: 8px; font-size: 17px; }
.privacy-strip p { max-width: 760px; margin-bottom: 0; font-size: 12px; }
footer { display: flex; justify-content: space-between; gap: 20px; margin-top: 48px; padding-top: 20px; border-top: 1px solid var(--rail); font-size: 11px; }
footer a { color: var(--accent); font-weight: 600; }

@media (max-width: 800px) {
  .shell { display: block; }
  .rail { min-height: auto; position: static; }
  .rail-inner { min-height: auto; padding: 58px 8vw; }
  .content-section { padding: 58px 8vw; }
}

@media (max-width: 520px) {
  .topbar { padding: 14px 6vw; }
  .topbar nav { gap: 12px; }
  .topbar nav a { font-size: 10px; }
  .price-line, .contact-layout { grid-template-columns: 1fr; }
  .price-line { gap: 16px; }
  .service-with-image { grid-template-columns: 1fr; }
  .service-with-image img { width: 100%; height: 170px; }
  footer { flex-direction: column; }
}
