/* Self-hosted fonts (latin subset), replacing the Google Fonts request. Files live in /assets/fonts. */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 500 800;
  font-display: swap;
  src: url(/assets/fonts/bricolage-grotesque-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Source Sans 3';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/source-sans-3-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Fieldtender Direct — /direct, /direct/preview, /direct/start, /direct/thanks.
   Visual source of truth: fieldtender-direct-handoff/mockups/direct-page.html.
   Green is primary; yellow is an accent only (hero marker, logo underline, eyebrow pill,
   problem labels, "no contract" tag, Direct Plus badge, final CTA button). */

:root {
  --d-green: #1D9E75;
  --d-btn: #0F6E52;
  --d-btn-hover: #0A5540;
  --d-ink: #15201B;
  --d-ground: #F6F5F0;
  --d-muted: #4F5A55;
  --d-border: #E3E1D8;
  --d-yellow: #F2C94C;
  --d-pill-bg: #FFF1C7;
  --d-pill-ink: #6B4E00;
  --d-mint: #E3F2EC;
  --d-pad: 80px;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 88px; }
body.direct {
  margin: 0; background: var(--d-ground); color: var(--d-ink);
  font-family: "Source Sans 3", system-ui, -apple-system, "Segoe UI", sans-serif;
  -webkit-text-size-adjust: 100%;
}
.direct h1, .direct h2, .direct h3 { font-family: "Bricolage Grotesque", "Source Sans 3", system-ui, sans-serif; font-weight: 800; margin: 0; }
.direct a { color: var(--d-btn); }
.direct a:hover { color: var(--d-btn-hover); }
.direct :focus-visible { outline: 3px solid var(--d-yellow); outline-offset: 2px; }
.wrap { width: 100%; max-width: 1280px; margin: 0 auto; padding-left: var(--d-pad); padding-right: var(--d-pad); }
.skip { position: absolute; left: -999px; top: 0; background: #fff; padding: 8px 12px; z-index: 100; }
.skip:focus { left: 8px; top: 8px; }

/* buttons */
.dbtn {
  display: inline-flex; align-items: center; justify-content: center; text-align: center;
  min-height: 52px; padding: 0 24px; border-radius: 12px; font: 700 18px/1.2 "Source Sans 3", system-ui, sans-serif;
  text-decoration: none; border: 2px solid transparent; cursor: pointer;
}
.direct a.dbtn-solid, .dbtn-solid { background: var(--d-btn); color: #fff; }
.direct a.dbtn-solid:hover, .dbtn-solid:hover { background: var(--d-btn-hover); color: #fff; }
.direct a.dbtn-line { border-color: var(--d-ink); color: var(--d-ink); }
.direct a.dbtn-line:hover { background: var(--d-ink); color: #fff; }
.direct a.dbtn-yellow { background: var(--d-yellow); color: var(--d-ink); min-height: 56px; padding: 0 28px; }
.direct a.dbtn-yellow:hover { background: #E9BD36; color: var(--d-ink); }
.dbtn-sm { min-height: 44px; padding: 0 20px; font-size: 16px; border-radius: 10px; }

/* nav */
.dnav { background: #fff; border-bottom: 1px solid var(--d-border); position: sticky; top: 0; z-index: 40; }
.dnav .wrap { height: 80px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.dlogo { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--d-ink); font: 700 20px "Bricolage Grotesque", sans-serif; }
.direct a.dlogo { color: var(--d-ink); }
.dlogo span:last-child { white-space: nowrap; }
.s-only { display: none; }
.dlogo-mark { width: 36px; height: 36px; border-radius: 9px; background: var(--d-btn); display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 800; font-size: 16px; flex-shrink: 0; }
.dlogo em { font-style: normal; color: var(--d-btn); box-shadow: inset 0 -5px 0 var(--d-yellow); }
.dnav-links { display: flex; gap: 32px; font-size: 16px; font-weight: 600; }
.direct .dnav-links a { color: var(--d-ink); text-decoration: none; }
.direct .dnav-links a:hover { color: var(--d-btn); }

/* hero */
.hero { padding: 88px 0 96px; }
.hero .wrap { display: flex; gap: 64px; align-items: center; }
.hero-copy { flex: 1 1 0; display: flex; flex-direction: column; gap: 24px; max-width: 640px; min-width: 0; }
.pill { align-self: flex-start; padding: 6px 12px; border-radius: 999px; background: var(--d-pill-bg); color: var(--d-pill-ink); font-weight: 700; font-size: 14px; }
.hero h1 { font-size: 64px; line-height: 1.02; letter-spacing: -1.5px; }
.mark { box-shadow: inset 0 -16px 0 var(--d-yellow); }
.lede { margin: 0; font-size: 21px; line-height: 1.5; color: var(--d-muted); }
.cta-row { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.price-line { font-size: 16px; color: var(--d-muted); }
.price-line b { color: var(--d-ink); }

/* phone preview */
.phone { width: 320px; height: 600px; flex-shrink: 0; border-radius: 40px; background: var(--d-ink); padding: 12px; box-shadow: 0 30px 60px rgba(21, 32, 27, 0.18); }
.phone-in { width: 100%; height: 100%; border-radius: 30px; background: #fff; overflow: hidden; display: flex; flex-direction: column; color: #1B2233; }
.ph-head { padding: 20px 18px 14px; background: #1F2A44; color: #fff; display: flex; justify-content: space-between; align-items: center; }
.ph-head b { font: 700 16px "Bricolage Grotesque", sans-serif; }
.ph-icons { display: flex; gap: 6px; }
.ph-icons i { width: 30px; height: 30px; border-radius: 8px; background: #F2C94C; display: block; }
.ph-hero { padding: 20px 18px; background: #1F2A44; color: #fff; display: flex; flex-direction: column; gap: 10px; }
.ph-hero b { font: 800 24px/1.1 "Bricolage Grotesque", sans-serif; }
.ph-hero small { font-size: 13px; color: #D5DAE6; }
.ph-cta { height: 40px; border-radius: 10px; background: #F2C94C; color: #1F2A44; font-weight: 700; font-size: 15px; display: flex; align-items: center; justify-content: center; }
.ph-body { padding: 16px 18px; display: flex; flex-direction: column; gap: 10px; }
.ph-body > b { font-size: 14px; }
.ph-grid { display: grid; gap: 6px; }
.ph-grid.d4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.ph-grid.d3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ph-grid span { border-radius: 8px; border: 1px solid #D9DCE3; font-size: 11px; display: flex; align-items: center; justify-content: center; }
.ph-grid.d4 span { height: 44px; }
.ph-grid.d3 span { height: 32px; }
.ph-grid span.on { background: #1F2A44; color: #fff; border-color: #1F2A44; }
.ph-note { margin-top: 8px; padding: 12px; border-radius: 10px; background: #F4F5F8; font-size: 12px; line-height: 1.4; }
.ph-pay { height: 38px; border-radius: 10px; border: 2px solid #1F2A44; font-weight: 700; font-size: 13px; display: flex; align-items: center; justify-content: center; }

/* problem */
.problem { padding: 88px 0; background: var(--d-ink); color: #fff; }
.problem .wrap { display: flex; flex-direction: column; gap: 40px; }
.problem h2 { font-size: 44px; line-height: 1.1; max-width: 820px; }
.grid3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.pcard { padding: 28px; border-radius: 16px; background: #22302A; display: flex; flex-direction: column; gap: 10px; }
.pcard .lab { font-size: 14px; font-weight: 700; letter-spacing: 1px; color: var(--d-yellow); }
.pcard .lab.first { color: #7FD3B4; }
.pcard .t { font-size: 20px; font-weight: 700; }
.pcard .d { font-size: 17px; line-height: 1.5; color: #C9D3CE; }

/* sections */
.sec { padding: 96px 0; }
.sec .wrap { display: flex; flex-direction: column; gap: 40px; }
.kicker { font-size: 14px; font-weight: 700; color: var(--d-btn); letter-spacing: 1px; }
.sec h2, .faq h2 { font-size: 44px; line-height: 1.1; }
.sec-head { display: flex; flex-direction: column; gap: 12px; max-width: 760px; }
.cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.card { padding: 28px; border-radius: 16px; background: #fff; border: 1px solid var(--d-border); display: flex; flex-direction: column; gap: 10px; }
.card svg { width: 28px; height: 28px; stroke: var(--d-btn); fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.card .t { font-size: 20px; font-weight: 700; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.card .d { font-size: 17px; line-height: 1.5; color: var(--d-muted); }
.badge-plus { padding: 2px 8px; border-radius: 999px; background: var(--d-yellow); color: #1F2A44; font-size: 12px; font-weight: 700; }
.optional { padding: 20px 24px; border-radius: 14px; background: var(--d-mint); display: flex; align-items: center; gap: 16px; font-size: 17px; }
.optional .tag { padding: 4px 10px; border-radius: 999px; background: var(--d-btn); color: #fff; font-weight: 700; font-size: 13px; flex-shrink: 0; }

.how { background: #fff; border-top: 1px solid var(--d-border); border-bottom: 1px solid var(--d-border); padding: 88px 0; }
.how .wrap { display: flex; flex-direction: column; gap: 40px; }
.how h2 { font-size: 44px; line-height: 1.1; }
.steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; }
.step { display: flex; flex-direction: column; gap: 12px; }
.step .n { width: 48px; height: 48px; border-radius: 12px; background: var(--d-green); color: #fff; font: 800 22px "Bricolage Grotesque", sans-serif; display: flex; align-items: center; justify-content: center; }
.step .t { font-size: 22px; font-weight: 700; }
.step .d { font-size: 17px; line-height: 1.5; color: var(--d-muted); }

/* pricing */
.pricing { padding: 96px 0; }
.pricing .wrap { display: flex; gap: 32px; align-items: stretch; }
.plan { flex: 1 1 0; min-width: 0; padding: 40px; border-radius: 20px; background: #fff; border: 2px solid var(--d-btn); display: flex; flex-direction: column; gap: 20px; }
.plan-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.plan-top .k { font-size: 14px; font-weight: 700; color: var(--d-btn); letter-spacing: 1px; }
.tag-y { padding: 4px 10px; border-radius: 999px; background: var(--d-yellow); color: var(--d-ink); font-size: 13px; font-weight: 700; }
.big { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.big b { font: 800 64px/1 "Bricolage Grotesque", sans-serif; }
.big span { font-size: 18px; color: var(--d-muted); }
.mo { font-size: 20px; }
.mo span { color: var(--d-muted); }
.checks { display: flex; flex-direction: column; gap: 10px; font-size: 17px; margin: 0; padding: 0; list-style: none; }
.checks li { display: flex; gap: 10px; }
.checks li::before { content: "✓"; color: var(--d-btn); font-weight: 700; }
.plan .dbtn { margin-top: auto; min-height: 56px; width: 100%; }
.side { width: 420px; flex-shrink: 0; display: flex; flex-direction: column; gap: 20px; }
.side-card { padding: 32px; border-radius: 20px; background: #fff; border: 1px solid var(--d-border); display: flex; flex-direction: column; gap: 12px; }
.side-card .k { font-size: 14px; font-weight: 700; color: var(--d-muted); letter-spacing: 1px; }
.side-card .t { font-size: 22px; font-weight: 700; }
.side-card .d { font-size: 17px; line-height: 1.5; color: var(--d-muted); }
.side-card a.more { font-weight: 700; font-size: 17px; }
.side-card.dark { background: var(--d-ink); color: #fff; flex-grow: 1; border-color: var(--d-ink); }
.side-card.dark .k { color: #7FD3B4; }
.side-card.dark .d { color: #C9D3CE; }
.direct .side-card.dark a.more { color: #7FD3B4; }

/* faq */
.faq { padding: 0 0 96px; }
.faq .wrap { display: flex; flex-direction: column; gap: 24px; }
.faq h2 { font-size: 40px; }
.faq-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.qa { padding: 24px 28px; border-radius: 14px; background: #fff; border: 1px solid var(--d-border); display: flex; flex-direction: column; gap: 8px; }
.qa .q { font-size: 19px; font-weight: 700; }
.qa .a { font-size: 17px; line-height: 1.5; color: var(--d-muted); }

/* final cta + footer */
.final { padding: 96px 0; background: var(--d-btn); color: #fff; }
.final .wrap { display: flex; flex-direction: column; align-items: center; gap: 20px; text-align: center; }
.final h2 { font-size: 52px; line-height: 1.05; max-width: 820px; }
.final p { margin: 0; font-size: 20px; color: #DDF1E9; max-width: 640px; }
.dfoot { background: #fff; color: var(--d-muted); font-size: 15px; }
.dfoot .wrap { min-height: 88px; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding-top: 16px; padding-bottom: 16px; }
.dfoot a { color: var(--d-muted); }

/* forms (/direct/preview, /direct/start) */
.form-page { padding: 56px 0 96px; }
.form-card { max-width: 720px; margin: 0 auto; background: #fff; border: 1px solid var(--d-border); border-radius: 20px; padding: 40px; display: flex; flex-direction: column; gap: 20px; }
.form-card h1 { font-size: 40px; line-height: 1.1; }
.form-card .sub { margin: 0; font-size: 18px; line-height: 1.5; color: var(--d-muted); }
.fgroup { display: flex; flex-direction: column; gap: 16px; padding-top: 8px; }
.fgroup > .fh { font: 800 20px "Bricolage Grotesque", sans-serif; }
.frow { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.fl { display: block; font-size: 15px; font-weight: 600; }
.fl .hint { display: block; font-weight: 400; color: var(--d-muted); font-size: 14px; margin-top: 2px; }
.fl input, .fl select, .fl textarea { display: block; margin-top: 6px; }
.fl .req { color: #B3261E; }
.fl input[type=text], .fl input[type=tel], .fl input[type=email], .fl input[type=url], .fl input[type=number], .fl select, .fl textarea {
  width: 100%; min-height: 48px; border-radius: 10px; border: 1px solid #CFCCC0; padding: 10px 12px; font: 400 16px "Source Sans 3", system-ui, sans-serif; color: var(--d-ink); background: #fff;
}
.fl textarea { min-height: 110px; resize: vertical; }
.fl input:focus, .fl select:focus, .fl textarea:focus { border-color: var(--d-btn); outline: 3px solid rgba(15, 110, 82, .2); }
.check { display: flex; gap: 10px; align-items: flex-start; font-size: 15px; line-height: 1.45; color: var(--d-muted); }
.check input { width: 20px; height: 20px; margin: 2px 0 0; flex-shrink: 0; accent-color: var(--d-btn); }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.form-err { display: none; padding: 12px 14px; border-radius: 10px; background: #FDECEA; color: #8C1D18; font-size: 15px; }
.form-note { margin: 0; font-size: 14px; color: var(--d-muted); }
.gate { display: none; padding: 28px; border-radius: 16px; background: var(--d-mint); }
.gate h2 { font-size: 26px; margin-bottom: 8px; }
.gate p { margin: 0 0 16px; }
.thanks { text-align: center; align-items: center; }
.thanks .ok { width: 64px; height: 64px; border-radius: 50%; background: var(--d-mint); color: var(--d-btn); display: flex; align-items: center; justify-content: center; }
.thanks .ok svg { width: 32px; height: 32px; stroke: currentColor; fill: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }

/* tablet */
@media (max-width: 1100px) {
  :root { --d-pad: 40px; }
  .hero h1 { font-size: 54px; }
  .side { width: 360px; }
}
/* stack columns below ~900px */
@media (max-width: 900px) {
  :root { --d-pad: 24px; }
  .dnav-links { display: none; }
  .dnav .wrap { height: 68px; }
  .hero { padding: 48px 0 56px; }
  .hero .wrap { flex-direction: column; align-items: flex-start; gap: 40px; }
  .hero-copy { max-width: none; }
  .hero h1 { font-size: 42px; letter-spacing: -1px; }
  .mark { box-shadow: inset 0 -10px 0 var(--d-yellow); }
  .lede { font-size: 18px; }
  .phone { align-self: center; }
  .problem, .how { padding: 56px 0; }
  .sec, .pricing { padding: 64px 0; }
  .problem h2, .sec h2, .how h2 { font-size: 32px; }
  .grid3, .steps { grid-template-columns: 1fr; gap: 16px; }
  .cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pricing .wrap { flex-direction: column; }
  .side { width: 100%; }
  .plan { padding: 28px; }
  .faq { padding-bottom: 64px; }
  .faq h2 { font-size: 32px; }
  .faq-grid { grid-template-columns: 1fr; }
  .final { padding: 64px 0; }
  .final h2 { font-size: 36px; }
  .optional { flex-direction: column; align-items: flex-start; gap: 10px; }
  .form-card { padding: 24px; }
  .form-card h1 { font-size: 32px; }
}
@media (max-width: 600px) {
  .cards { grid-template-columns: 1fr; }
  .frow { grid-template-columns: 1fr; }
  .hero h1 { font-size: 36px; }
  .big b { font-size: 52px; }
  .cta-row .dbtn { width: 100%; }
  .dnav .dbtn-sm { padding: 0 14px; font-size: 15px; white-space: nowrap; }
  .l-only { display: none; }
  .s-only { display: inline; }
  .dlogo { font-size: 18px; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* legal pages (/direct/terms, /direct/privacy) */
.legal { padding: 56px 0 96px; }
.legal-card { max-width: 780px; margin: 0 auto; background: #fff; border: 1px solid var(--d-border); border-radius: 20px; padding: 48px; }
.legal-card h1 { font-size: 40px; line-height: 1.1; }
.legal-card .eff { margin: 8px 0 24px; color: var(--d-muted); font-size: 15px; }
.legal-card h2 { font-size: 22px; margin: 32px 0 8px; }
.legal-card p, .legal-card li { font-size: 17px; line-height: 1.6; }
.legal-card p { margin: 0 0 12px; }
.legal-card ul { margin: 0 0 12px; padding-left: 22px; }
.legal-card li { margin-bottom: 6px; }
@media (max-width: 900px) { .legal { padding: 32px 0 64px; } .legal-card { padding: 24px; } .legal-card h1 { font-size: 32px; } }

/* Header phone link: always visible in the sticky nav once the Direct number is set */
.dnav-actions { display: flex; align-items: center; gap: 20px; }
.direct a.dnav-call { color: var(--d-ink); font-weight: 700; font-size: 16px; text-decoration: none; white-space: nowrap; }
.direct a.dnav-call:hover { color: var(--d-btn); text-decoration: underline; }
@media (max-width: 720px) {
  .dnav-actions { gap: 12px; }
  .direct a.dnav-call { font-size: 15px; }
}

/* Narrow phones: keep logo + Call + preview button on one line */
@media (max-width: 480px) {
  .dnav .wrap { gap: 8px; }
  .dlogo { font-size: 16px; gap: 8px; }
  .dlogo-mark { width: 32px; height: 32px; font-size: 14px; }
  .dnav-actions { gap: 8px; }
  .direct a.dnav-call { font-size: 14px; }
  .dnav .dbtn-sm { padding: 0 10px; font-size: 14px; min-height: 40px; }
}
