/* One stylesheet, no scripts. Big text, strong contrast: trades owners
   read this on a phone. Design approved 1 Oct 2026 (notes/design/mock.html).
   Both fonts are self-hosted (SIL Open Font License, latin subset), so
   nothing loads from Google. */
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 600; font-display: swap;
  src: url(/static/fonts/barlow-condensed-600.woff2) format("woff2"); }
@font-face { font-family: "Barlow Condensed"; font-style: normal; font-weight: 700; font-display: swap;
  src: url(/static/fonts/barlow-condensed-700.woff2) format("woff2"); }
@font-face { font-family: "Atkinson Hyperlegible"; font-style: normal; font-weight: 400; font-display: swap;
  src: url(/static/fonts/atkinson-400.woff2) format("woff2"); }
@font-face { font-family: "Atkinson Hyperlegible"; font-style: normal; font-weight: 700; font-display: swap;
  src: url(/static/fonts/atkinson-700.woff2) format("woff2"); }
@font-face { font-family: "Atkinson Hyperlegible"; font-style: italic; font-weight: 400; font-display: swap;
  src: url(/static/fonts/atkinson-400-italic.woff2) format("woff2"); }

:root {
  --ink: #14213d;
  --ink-2: #3b4863;
  --paper: #ffffff;
  --sheet: #f1f3f7;
  --rule: #c9d0dc;
  --answer: #118a46;
  --answer-2: #0e7139;
  --missed: #c8102e;
  --display: "Barlow Condensed", "Arial Narrow", Impact, sans-serif;
  --body: "Atkinson Hyperlegible", "Helvetica Neue", Arial, sans-serif;
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font: 19px/1.55 var(--body);
  color: var(--ink);
  background: var(--paper);
}
a { color: var(--ink); }
:focus-visible { outline: 3px solid var(--answer); outline-offset: 3px; }
.wrap { max-width: 1040px; margin: 0 auto; padding: 0 20px; }
.narrow { max-width: 720px; }

/* Top bar */
.top { background: var(--ink); color: #fff; }
.top .wrap { display: flex; align-items: center; justify-content: space-between; gap: 16px; height: 64px; }
.brand { font: 700 28px/1 var(--display); letter-spacing: 0.01em; color: #fff; text-decoration: none; text-transform: uppercase; }
.top nav { display: flex; align-items: center; gap: 22px; }
.top nav a { color: #fff; text-decoration: none; font-weight: 700; }
.top nav a.trial { border: 2px solid #fff; border-radius: 6px; padding: 8px 14px; white-space: nowrap; }
@media (max-width: 640px) {
  .top nav a:not(.trial) { display: none; }
  .brand { font-size: 22px; }
  .top nav a.trial { padding: 7px 12px; font-size: 16px; }
}

/* Hero */
.hero { padding: 44px 0 40px; background: var(--paper); }
.hero .wrap { display: grid; grid-template-columns: 1fr; gap: 36px; align-items: start; }
@media (min-width: 860px) { .hero .wrap { grid-template-columns: 1.05fr 0.95fr; gap: 56px; } .hero { padding: 64px 0 56px; } }
h1 { font: 700 clamp(44px, 7vw, 72px)/0.98 var(--display); text-transform: uppercase; letter-spacing: 0.005em; margin: 0 0 20px; text-wrap: balance; }
h1 .missed { color: var(--missed); }
.lead { font-size: 21px; max-width: 34em; margin: 0 0 26px; }
.actions { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; margin: 0 0 14px; }
.call {
  display: inline-flex; align-items: center; gap: 12px;
  background: var(--answer); color: #fff; text-decoration: none;
  padding: 14px 22px 14px 16px; border-radius: 999px; font-weight: 700; font-size: 20px;
}
.call:hover { background: var(--answer-2); }
.call svg { width: 28px; height: 28px; flex: none; }
.call small { display: block; font-weight: 400; font-size: 15px; line-height: 1.1; }
.call.soon { background: var(--sheet); color: var(--ink); border: 2px solid var(--rule); margin: 0; }
.call.soon:hover { background: var(--sheet); }
.btn {
  display: inline-block; background: var(--ink); color: #fff; text-decoration: none;
  padding: 14px 22px; border-radius: 6px; font-weight: 700; font-size: 19px; border: 0; font-family: inherit; cursor: pointer;
}
.btn:hover { background: #0d1730; }
.terms-line { color: var(--ink-2); font-size: 17px; margin: 0; }

/* The phone */
.phone {
  background: var(--sheet); border-radius: 28px; padding: 18px 16px 20px;
  border: 1px solid var(--rule);
}
.phone-head { display: flex; align-items: center; gap: 10px; padding: 2px 6px 14px; border-bottom: 1px solid var(--rule); margin-bottom: 14px; }
.dot { width: 12px; height: 12px; border-radius: 50%; background: var(--answer); flex: none; }
.phone-head strong { font-size: 17px; }
.phone-head span { color: var(--ink-2); font-size: 15px; margin-left: auto; white-space: nowrap; }
@media (max-width: 480px) { .phone-head { flex-wrap: wrap; } .phone-head span { flex-basis: 100%; margin-left: 22px; } }
.lines { display: flex; flex-direction: column; gap: 10px; margin: 0; padding: 0; list-style: none; }
.lines li { max-width: 88%; padding: 11px 14px; border-radius: 18px; font-size: 17px; line-height: 1.45; }
.lines .caller { background: #fff; border: 1px solid var(--rule); border-bottom-left-radius: 6px; align-self: flex-start; }
.lines .rec { background: var(--ink); color: #fff; border-bottom-right-radius: 6px; align-self: flex-end; }
.lines .who { display: block; font-size: 13px; font-weight: 700; opacity: 0.7; margin-bottom: 2px; }
.sms { margin: 16px 0 0; padding: 14px 16px; background: #fff; border: 2px solid var(--answer); border-radius: 14px; font-size: 16px; }
.sms b { display: block; margin-bottom: 4px; color: var(--answer-2); }
@media (prefers-reduced-motion: no-preference) {
  .lines li { animation: land 0.5s ease-out both; }
  .lines li:nth-child(1) { animation-delay: 0.2s; }
  .lines li:nth-child(2) { animation-delay: 1.1s; }
  .lines li:nth-child(3) { animation-delay: 2.1s; }
  .lines li:nth-child(4) { animation-delay: 3.0s; }
  .lines li:nth-child(5) { animation-delay: 4.0s; }
  .lines li:nth-child(6) { animation-delay: 4.7s; }
  .sms { animation: land 0.5s ease-out 5.8s both; }
  @keyframes land { from { opacity: 0.25; transform: translateY(6px); } to { opacity: 1; transform: none; } }
}

/* Sections */
section { padding: 48px 0; }
section + section { border-top: 1px solid var(--rule); }
h2 { font: 700 clamp(32px, 4.5vw, 44px)/1.05 var(--display); text-transform: uppercase; margin: 0 0 22px; }
.two { display: grid; grid-template-columns: 1fr; gap: 28px; }
@media (min-width: 860px) { .two { grid-template-columns: 1fr 1fr; gap: 48px; } }

/* Job sheet: numbered because it really is a sequence */
.sheet { margin: 0; padding: 0; list-style: none; counter-reset: step; border-top: 2px solid var(--ink); }
.sheet li { counter-increment: step; display: grid; grid-template-columns: 56px 1fr; gap: 12px; padding: 16px 0; border-bottom: 1px solid var(--rule); }
.sheet li::before { content: counter(step); font: 700 34px/1 var(--display); color: var(--ink-2); }
.sheet strong { display: block; font-size: 20px; margin-bottom: 2px; }
.sheet p { margin: 0; color: var(--ink-2); }

.ticks { margin: 0; padding: 0; list-style: none; }
.ticks li { display: grid; grid-template-columns: 30px 1fr; gap: 10px; padding: 10px 0; }
.ticks svg { width: 24px; height: 24px; margin-top: 3px; }

/* Price, written like a quote */
.quote { border-top: 2px solid var(--ink); max-width: 620px; }
.quote .row { display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--rule); }
.quote .row span:last-child { white-space: nowrap; color: var(--ink-2); }
.quote .total { border-bottom: 0; padding-top: 18px; align-items: baseline; }
.quote .total span:first-child { font: 700 24px/1 var(--display); text-transform: uppercase; }
.quote .total span:last-child { font: 700 44px/1 var(--display); color: var(--ink); }
.quote .after { color: var(--ink-2); font-size: 17px; margin: 6px 0 22px; }

/* Straight answers */
.qa { margin: 0; }
.qa dt { font-weight: 700; font-size: 20px; margin-top: 18px; }
.qa dd { margin: 4px 0 0; color: var(--ink-2); }

footer { background: var(--sheet); border-top: 1px solid var(--rule); padding: 26px 0 34px; color: var(--ink-2); font-size: 16px; }
footer p { margin: 0 0 8px; }
footer a { color: var(--ink-2); margin-right: 16px; }

/* Sign-up form: same rules as the job sheet, big touch targets */
.intro { color: var(--ink-2); margin: 0 0 26px; }
form.signup fieldset { border: 0; margin: 0 0 30px; padding: 0; min-width: 0; }
form.signup legend { display: block; width: 100%; font: 700 28px/1 var(--display); text-transform: uppercase; padding: 0 0 10px; border-bottom: 2px solid var(--ink); }
form.signup label { display: block; margin: 0; padding: 14px 0; border-bottom: 1px solid var(--rule); font-weight: 700; }
form.signup input, form.signup textarea, form.signup select {
  display: block; width: 100%; font: 400 19px/1.4 var(--body); color: var(--ink);
  min-height: 52px; padding: 12px 14px; margin-top: 6px;
  border: 2px solid var(--ink-2); border-radius: 6px; background: #fff;
}
form.signup textarea { min-height: 150px; }
form.signup input:focus, form.signup textarea:focus { border-color: var(--answer); }
form.signup input::placeholder, form.signup textarea::placeholder { color: #6b7488; }
.hours-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; padding: 14px 0; border-bottom: 1px solid var(--rule); }
.hours-row span.day { flex-basis: 100%; font-weight: 700; font-size: 20px; }
form.signup .hours-row label { display: inline-flex; align-items: center; gap: 8px; padding: 0; border: 0; font-weight: 400; }
form.signup .hours-row input[type=time] { display: inline-block; width: auto; min-width: 130px; margin: 0; }
form.signup input[type=checkbox] { display: inline-block; width: 28px; height: 28px; min-height: 0; margin: 0; padding: 0; flex: none; accent-color: var(--answer); }
form.signup label.check { display: flex; align-items: flex-start; gap: 14px; padding: 16px 0; margin: 0 0 22px; border-bottom: 0; font-weight: 400; }
form.signup label.check input { margin-top: 1px; }
form.signup .btn { min-height: 56px; padding: 16px 28px; font-size: 20px; width: 100%; max-width: 360px; }
.hp { position: absolute; left: -9999px; }
.errors { background: #fdecea; border: 2px solid var(--missed); border-radius: 6px; padding: 12px 16px; margin: 0 0 26px; }
.errors p { margin: 0 0 4px; font-weight: 700; }
.errors ul { margin: 0; padding-left: 22px; }

/* Message pages, privacy and terms */
.narrow h1 { font-size: clamp(40px, 6vw, 56px); }
.doc h1 { font-size: clamp(36px, 5vw, 48px); }
.doc h2 { font-size: clamp(26px, 3.5vw, 32px); margin: 32px 0 12px; }
.draft { background: #fff3cd; border: 1px solid #c79100; border-radius: 6px; padding: 10px 14px; }
.doc table { border-collapse: collapse; margin: 12px 0; display: block; overflow-x: auto; max-width: 100%; }
.doc th, .doc td { border: 1px solid var(--rule); padding: 6px 10px; text-align: left; vertical-align: top; }
