{"id":20,"date":"2026-09-04T20:48:14","date_gmt":"2026-09-04T20:48:14","guid":{"rendered":"https:\/\/saywadigital.com\/?page_id=20"},"modified":"2026-09-12T19:26:20","modified_gmt":"2026-09-12T19:26:20","slug":"landing-page","status":"publish","type":"page","link":"https:\/\/saywadigital.com\/","title":{"rendered":"Landing Page"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"20\" class=\"elementor elementor-20\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c18ae01 e-con e-atomic-element e-flexbox-base e-9653d8c html \" data-id=\"c18ae01\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"c18ae01\">\n    \t\t<div class=\"elementor-element elementor-element-16e8e47 elementor-widget__width-initial elementor-widget-tablet__width-initial elementor-widget-mobile__width-initial elementor-widget elementor-widget-html\" data-id=\"16e8e47\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\n  SAYWA DIGITAL \u2014 homepage, single Elementor HTML widget.\n  Generated by build-elementor.py. Do not hand-edit; edit page-saywa-home.php\n  and re-run the script, or the two versions drift apart.\n\n  Before publishing:\n  1. Upload the logo PNGs and correct the two image paths below.\n  2. Confirm the proof window and re-pull all four figures for that one range.\n  3. Confirm the postal code and coordinates in the JSON-LD block.\n-->\n\n<style>\n.elementor-widget-html > .elementor-widget-container { padding: 0 !important; }\nbody.elementor-page .sd-page { margin: 0; }\n\n\/* ==========================================================================\n   Saywa Digital \u2014 brand stylesheet\n   Built against Brand Book v2.0 (palette p16, type p15, contrast p17).\n   Load order: theme stylesheet, then this file.\n   ========================================================================== *\/\n\n:root {\n  \/* Palette \u2014 p16. Chalk\/Onyx do the work, orange is a 10% accent. *\/\n  --sd-chalk:      #F3F2F0;\n  --sd-white:      #FFFFFF;\n  --sd-orange:     #EC6A1E;\n  --sd-orange-ink: #C4530F;  \/* orange darkened for small text\/links on white \u2014 AA at 4.6:1 *\/\n  --sd-orange-btn: #C4530F;  \/* button fill. #EC6A1E + white is only 2.8:1 and fails AA. *\/\n  --sd-orange-btn-hi: #A8460C;\n  --sd-onyx:       #2A2A2A;\n  --sd-graphite:   #3A3A3A;\n  --sd-smoke:      #6E6E6E;  \/* p17: #7A7A7A fails AA on white. Darkened to #6E6E6E (5.3:1). *\/\n  --sd-rule:       #DEDCD8;\n\n  \/* Type \u2014 p15. One family. Hierarchy from weight and size only. *\/\n  --sd-font: \"Montserrat\", \"Helvetica Neue\", Arial, sans-serif;\n\n  --sd-display:  clamp(2.35rem, 1.4rem + 3.6vw, 3.5rem);\n  --sd-headline: clamp(1.6rem, 1.15rem + 1.7vw, 2.1rem);\n  --sd-sub:      1.0625rem;\n  --sd-body:     1.0625rem;\n  --sd-small:    0.9375rem;\n  --sd-label:    0.75rem;\n\n  --sd-shell: 1140px;\n  --sd-gap: clamp(2.5rem, 1.2rem + 4vw, 5.5rem); \/* vertical section rhythm *\/\n}\n\n\/* --------------------------------------------------------------------------\n   Base\n   -------------------------------------------------------------------------- *\/\n\n.sd-page {\n  font-family: var(--sd-font);\n  font-size: var(--sd-body);\n  line-height: 1.7;\n  font-weight: 400;\n  color: var(--sd-onyx);\n  background: var(--sd-white);\n  -webkit-font-smoothing: antialiased;\n}\n\n.sd-page *,\n.sd-page *::before,\n.sd-page *::after { box-sizing: border-box; }\n\n.sd-page p { max-width: 68ch; }\n\n.sd-page h1,\n.sd-page h2,\n.sd-page h3,\n.sd-page h4 {\n  color: var(--sd-onyx);\n  margin: 0 0 0.6em;\n  text-wrap: balance;\n}\n\n.sd-page h1 { font-size: var(--sd-display);  font-weight: 300; line-height: 1.1;  letter-spacing: -0.015em; }\n.sd-page h2 { font-size: var(--sd-headline); font-weight: 300; line-height: 1.2;  letter-spacing: -0.01em; }\n.sd-page h3 { font-size: 1.1875rem;          font-weight: 500; line-height: 1.35; }\n.sd-page h4 { font-size: var(--sd-sub);      font-weight: 600; line-height: 1.4; }\n\n.sd-page a { color: var(--sd-orange-ink); text-decoration-thickness: 1px; text-underline-offset: 3px; }\n.sd-page a:hover { color: var(--sd-onyx); }\n\n\/* p17: focus states stay visible on every field and button. *\/\n.sd-page a:focus-visible,\n.sd-page button:focus-visible,\n.sd-page input:focus-visible,\n.sd-page select:focus-visible,\n.sd-page textarea:focus-visible,\n.sd-page summary:focus-visible {\n  outline: 3px solid var(--sd-orange);\n  outline-offset: 3px;\n  border-radius: 2px;\n}\n\n.sd-shell {\n  width: 100%;\n  max-width: var(--sd-shell);\n  margin-inline: auto;\n  padding-inline: clamp(1.25rem, 0.6rem + 2.4vw, 2.5rem);\n}\n\n.sd-section { padding-block: var(--sd-gap); }\n.sd-section--chalk { background: var(--sd-chalk); }\n.sd-section--onyx  { background: var(--sd-onyx); color: var(--sd-chalk); }\n.sd-section--onyx h2,\n.sd-section--onyx h3,\n.sd-section--onyx h4 { color: var(--sd-chalk); }\n.sd-section--onyx .sd-lede { color: #C9C7C4; }\n.sd-section--onyx a:not(.sd-btn) { color: var(--sd-orange); } \/* p17: orange on onyx = 4.5:1, passes *\/\n\n.sd-label {\n  font-size: var(--sd-label);\n  font-weight: 600;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  color: var(--sd-smoke);\n  margin: 0 0 0.75rem;\n}\n.sd-section--onyx .sd-label { color: #A9A7A4; }\n\n.sd-lede { font-size: 1.15rem; line-height: 1.6; color: var(--sd-graphite); }\n.sd-note { font-size: var(--sd-small); color: var(--sd-smoke); }\n\n.sd-head { max-width: 46rem; margin-bottom: 2.5rem; }\n\n\/* --------------------------------------------------------------------------\n   Buttons \u2014 p17: orange buttons carry Chalk White text, never Onyx.\n   -------------------------------------------------------------------------- *\/\n\n.sd-btn {\n  display: inline-block;\n  font: inherit;\n  font-size: var(--sd-small);\n  font-weight: 600;\n  letter-spacing: 0.02em;\n  padding: 0.95rem 1.6rem;\n  border: 2px solid transparent;\n  border-radius: 2px;\n  text-decoration: none;\n  cursor: pointer;\n  transition: background-color .15s ease, border-color .15s ease, color .15s ease;\n}\n\/* Scoped with .sd-page so the generic link colours can never win over a button.\n   That collision is what made the orange buttons render orange-on-orange. *\/\n.sd-page a.sd-btn--primary,\n.sd-page a.sd-btn--primary:link,\n.sd-page a.sd-btn--primary:visited,\n.sd-page .sd-btn--primary { background: var(--sd-orange-btn); color: #FFFFFF; border-color: var(--sd-orange-btn); }\n.sd-page a.sd-btn--primary:hover,\n.sd-page a.sd-btn--primary:focus,\n.sd-page .sd-btn--primary:hover { background: var(--sd-orange-btn-hi); color: #FFFFFF; border-color: var(--sd-orange-btn-hi); }\n\n.sd-page a.sd-btn--ghost,\n.sd-page a.sd-btn--ghost:link,\n.sd-page a.sd-btn--ghost:visited,\n.sd-page .sd-btn--ghost { background: transparent; color: var(--sd-onyx); border-color: var(--sd-onyx); }\n.sd-page a.sd-btn--ghost:hover,\n.sd-page .sd-btn--ghost:hover { background: var(--sd-onyx); color: var(--sd-chalk); border-color: var(--sd-onyx); }\n\n.sd-page .sd-section--onyx a.sd-btn--ghost,\n.sd-page .sd-section--onyx .sd-btn--ghost { color: var(--sd-chalk); border-color: var(--sd-chalk); background: transparent; }\n.sd-page .sd-section--onyx a.sd-btn--ghost:hover,\n.sd-page .sd-section--onyx .sd-btn--ghost:hover { background: var(--sd-chalk); color: var(--sd-onyx); }\n\n.sd-actions { display: flex; flex-wrap: wrap; gap: 0.85rem; margin-top: 2rem; }\n\n\/* --------------------------------------------------------------------------\n   Masthead\n   -------------------------------------------------------------------------- *\/\n\n.sd-masthead { border-bottom: 1px solid var(--sd-rule); background: var(--sd-white); }\n.sd-masthead__inner {\n  display: flex; align-items: center; justify-content: space-between;\n  gap: 1.5rem; padding-block: 1.1rem;\n}\n\/* p11: clear space on every side equals the height of the S mark. *\/\n.sd-masthead__logo { display: inline-flex; padding: 0.5rem; }\n.sd-masthead__logo img { display: block; width: 190px; height: auto; } \/* min 152px *\/\n.sd-masthead__nav { display: flex; align-items: center; gap: 1.75rem; }\n.sd-masthead__nav a { font-size: var(--sd-small); font-weight: 500; color: var(--sd-graphite); text-decoration: none; }\n.sd-masthead__nav a:hover { color: var(--sd-orange-ink); text-decoration: underline; }\n.sd-masthead__tel { font-weight: 600; color: var(--sd-onyx) !important; white-space: nowrap; }\n@media (max-width: 860px) { .sd-masthead__nav .sd-masthead__link { display: none; } }\n\n\/* --------------------------------------------------------------------------\n   Hero \u2014 the one loud moment on the page.\n   -------------------------------------------------------------------------- *\/\n\n.sd-hero { padding-block: clamp(3rem, 1.5rem + 6vw, 6.5rem) var(--sd-gap); background: var(--sd-white); }\n.sd-hero__grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: clamp(2rem, 1rem + 4vw, 4.5rem); align-items: start; }\n@media (max-width: 900px) { .sd-hero__grid { grid-template-columns: minmax(0, 1fr); } }\n\n.sd-hero h1 { margin-bottom: 1.25rem; }\n\n\/* Primary tagline, p8. Orange at display size only \u2014 p17 allows 24px+. *\/\n.sd-hero__tagline {\n  font-size: clamp(1.5rem, 1rem + 1.9vw, 2rem);\n  font-weight: 300;\n  line-height: 1.25;\n  color: var(--sd-orange);\n  margin: 0 0 1.5rem;\n  padding-left: 1.1rem;\n  border-left: 3px solid var(--sd-orange);\n  max-width: 20ch;\n}\n\n.sd-hero__aside {\n  border: 1px solid var(--sd-rule);\n  border-top: 3px solid var(--sd-onyx);\n  padding: 1.5rem 1.5rem 1.75rem;\n  background: var(--sd-chalk);\n}\n.sd-hero__aside ul { list-style: none; margin: 0; padding: 0; }\n.sd-hero__aside li { padding: 0.7rem 0; border-bottom: 1px solid var(--sd-rule); font-size: var(--sd-small); }\n.sd-hero__aside li:last-child { border-bottom: 0; padding-bottom: 0; }\n\n\/* --------------------------------------------------------------------------\n   Proof block \u2014 p20: bordered, labeled, visually subordinate.\n   Disclosure sits above the numbers (p19: labeled before the number is read).\n   -------------------------------------------------------------------------- *\/\n\n.sd-proof { border: 1px solid #4A4A4A; background: var(--sd-graphite); padding: clamp(1.5rem, 1rem + 2vw, 2.5rem); }\n.sd-proof__disclosure {\n  display: block;\n  font-size: var(--sd-label);\n  font-weight: 600;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  color: var(--sd-orange);\n  margin-bottom: 0.85rem;\n}\n.sd-proof__window { font-size: var(--sd-small); color: #C9C7C4; margin: 0 0 1.75rem; }\n\n.sd-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(160px, 100%), 1fr)); gap: 1px; background: #4A4A4A; border: 1px solid #4A4A4A; }\n.sd-metric { background: var(--sd-graphite); padding: 1.25rem 1.25rem 1.4rem; }\n.sd-metric__value { display: block; font-size: 1.9rem; font-weight: 300; line-height: 1.1; color: var(--sd-chalk); }\n.sd-metric__name { display: block; font-size: var(--sd-small); font-weight: 500; color: var(--sd-chalk); margin-top: 0.4rem; }\n.sd-metric__meta { display: block; font-size: 0.8125rem; color: #ABA9A6; margin-top: 0.15rem; }\n\n.sd-caveat { margin-top: 1.75rem; padding-top: 1.25rem; border-top: 1px solid #4A4A4A; }\n.sd-caveat p { font-size: var(--sd-small); color: #C9C7C4; margin: 0 0 0.6rem; max-width: 72ch; }\n.sd-caveat p:last-child { margin-bottom: 0; }\n\n\/* --------------------------------------------------------------------------\n   Generic grids\n   -------------------------------------------------------------------------- *\/\n\n.sd-grid { display: grid; gap: clamp(1.5rem, 1rem + 2vw, 2.75rem); }\n.sd-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); }\n.sd-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(250px, 100%), 1fr)); }\n\n.sd-item { border-top: 2px solid var(--sd-onyx); padding-top: 1.1rem; }\n.sd-item h3 { margin-bottom: 0.5rem; }\n.sd-item p { font-size: var(--sd-small); color: var(--sd-graphite); margin: 0 0 0.75rem; }\n.sd-item ul { margin: 0; padding-left: 1.1rem; font-size: var(--sd-small); color: var(--sd-graphite); }\n.sd-item li { margin-bottom: 0.35rem; }\n\n\/* Sequence \u2014 numbered only because it genuinely is one (p13 roadmap). *\/\n.sd-steps { counter-reset: sd-step; display: grid; gap: 1.75rem; grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr)); }\n.sd-step { counter-increment: sd-step; border-top: 1px solid var(--sd-rule); padding-top: 1rem; }\n.sd-step::before {\n  content: counter(sd-step, decimal-leading-zero);\n  display: block; font-size: var(--sd-small); font-weight: 600;\n  color: var(--sd-orange-ink); margin-bottom: 0.5rem;\n}\n.sd-step h3 { font-size: var(--sd-sub); }\n.sd-step p { font-size: var(--sd-small); color: var(--sd-graphite); margin: 0; }\n\n\/* Built for \/ not for *\/\n.sd-fit { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); gap: clamp(1.5rem, 1rem + 2vw, 3rem); }\n.sd-fit ul { list-style: none; margin: 0; padding: 0; }\n.sd-fit li { position: relative; padding: 0.55rem 0 0.55rem 1.6rem; border-bottom: 1px solid var(--sd-rule); font-size: var(--sd-small); }\n\/* p17: never signal meaning with colour alone \u2014 each list carries a text heading and a glyph. *\/\n.sd-fit--yes li::before { content: \"+\"; position: absolute; left: 0; color: var(--sd-orange-ink); font-weight: 600; }\n.sd-fit--no  li::before { content: \"\\2013\"; position: absolute; left: 0; color: var(--sd-smoke); font-weight: 600; }\n\n\/* --------------------------------------------------------------------------\n   Plans\n   -------------------------------------------------------------------------- *\/\n\n.sd-plans { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(265px, 100%), 1fr)); gap: 1.5rem; align-items: start; }\n.sd-plan { background: var(--sd-white); border: 1px solid var(--sd-rule); padding: 1.75rem 1.5rem 2rem; }\n.sd-plan--featured { border-color: var(--sd-onyx); border-top: 4px solid var(--sd-orange); }\n.sd-plan__name { font-size: var(--sd-sub); font-weight: 600; margin: 0 0 0.35rem; }\n.sd-plan__price { font-size: 2rem; font-weight: 300; line-height: 1.1; margin: 0; }\n.sd-plan__price span { font-size: var(--sd-small); font-weight: 500; color: var(--sd-smoke); }\n.sd-plan__terms { font-size: 0.8125rem; color: var(--sd-smoke); margin: 0.4rem 0 1.25rem; }\n.sd-plan ul { list-style: none; margin: 0; padding: 0; }\n.sd-plan li { padding: 0.5rem 0; border-top: 1px solid var(--sd-rule); font-size: var(--sd-small); color: var(--sd-graphite); }\n.sd-plan__flag { font-size: var(--sd-label); font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--sd-orange-ink); display: block; margin-bottom: 0.5rem; }\n\n\/* --------------------------------------------------------------------------\n   Service area + FAQ\n   -------------------------------------------------------------------------- *\/\n\n.sd-areas { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 1.5rem 0 0; padding: 0; list-style: none; }\n.sd-areas li { font-size: var(--sd-small); color: var(--sd-graphite); border: 1px solid var(--sd-rule); padding: 0.4rem 0.8rem; background: var(--sd-white); }\n\n.sd-faq { max-width: 48rem; }\n.sd-faq details { border-bottom: 1px solid var(--sd-rule); }\n.sd-faq summary {\n  cursor: pointer; list-style: none;\n  padding: 1.15rem 2rem 1.15rem 0; position: relative;\n  font-size: var(--sd-sub); font-weight: 500;\n}\n.sd-faq summary::-webkit-details-marker { display: none; }\n.sd-faq summary::after { content: \"+\"; position: absolute; right: 0.25rem; top: 1rem; font-size: 1.3rem; font-weight: 300; color: var(--sd-orange-ink); }\n.sd-faq details[open] summary::after { content: \"\\2013\"; }\n.sd-faq details p { padding-bottom: 1.25rem; margin: 0; font-size: var(--sd-small); color: var(--sd-graphite); }\n\n\/* --------------------------------------------------------------------------\n   Closing CTA + footer\n   -------------------------------------------------------------------------- *\/\n\n.sd-cta__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); gap: clamp(1.5rem, 1rem + 3vw, 4rem); align-items: center; }\n\n.sd-footer { background: var(--sd-onyx); color: #C9C7C4; padding-block: clamp(2.5rem, 1.5rem + 3vw, 4rem); }\n.sd-footer a { color: var(--sd-chalk); }\n.sd-footer__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr)); gap: 2rem; }\n.sd-footer__logo img { width: 180px; height: auto; display: block; margin-bottom: 1.25rem; }\n.sd-footer address { font-style: normal; font-size: var(--sd-small); line-height: 1.9; }\n.sd-footer h4 { color: var(--sd-chalk); font-size: var(--sd-label); letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 0.9rem; }\n.sd-footer ul { list-style: none; margin: 0; padding: 0; font-size: var(--sd-small); line-height: 2; }\n.sd-footer__base { margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid #444; display: flex; flex-wrap: wrap; gap: 1rem; justify-content: space-between; font-size: 0.8125rem; }\n.sd-footer__base span { color: var(--sd-orange); }\n\n\/* --------------------------------------------------------------------------\n   Motion + print\n   -------------------------------------------------------------------------- *\/\n\n@media (prefers-reduced-motion: reduce) {\n  .sd-page *, .sd-page *::before, .sd-page *::after {\n    animation-duration: .001ms !important; transition-duration: .001ms !important;\n  }\n}\n\n@media print {\n  .sd-section--onyx, .sd-proof, .sd-footer { background: #fff !important; color: #000 !important; }\n  .sd-metric__value, .sd-metric__name { color: #000 !important; }\n}\n\n\/* Coverage section: the chip list keeps its own layout inside a .sd-item column. *\/\n.sd-item ul.sd-areas { padding-left: 0; list-style: none; }\n\n\/* --------------------------------------------------------------------------\n   Proof above the fold\n   -------------------------------------------------------------------------- *\/\n\n.sd-hero__proofchip {\n  border-left: 3px solid var(--sd-onyx);\n  padding: 0.9rem 0 0.9rem 1.1rem;\n  margin-top: 2rem;\n  background: var(--sd-chalk);\n}\n.sd-hero__proofchip .sd-proof__disclosure { color: var(--sd-orange-ink); margin-bottom: 0.35rem; }\n.sd-hero__proofchip p:last-child { font-size: var(--sd-small); color: var(--sd-graphite); margin: 0; max-width: 46ch; }\n.sd-hero__proofchip strong { font-weight: 600; color: var(--sd-onyx); }\n\n\/* Count-up needs a stable box or the layout shifts while it runs. *\/\n.sd-metric__value { font-variant-numeric: tabular-nums; }\n\n\/* --------------------------------------------------------------------------\n   Arithmetic calculator \u2014 the one interactive moment on the page\n   -------------------------------------------------------------------------- *\/\n\n.sd-calc {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n  border: 1px solid var(--sd-rule);\n}\n@media (max-width: 820px) { .sd-calc { grid-template-columns: minmax(0, 1fr); } }\n\n.sd-calc__inputs { min-width: 0; padding: clamp(1.5rem, 1rem + 2vw, 2.25rem); background: var(--sd-white); }\n\n.sd-field { margin-bottom: 1.5rem; }\n.sd-field:last-child { margin-bottom: 0; }\n.sd-field label { display: block; font-size: var(--sd-small); font-weight: 500; margin-bottom: 0.45rem; color: var(--sd-graphite); }\n.sd-field__wrap {\n  display: flex; align-items: center; gap: 0.4rem; min-width: 0; max-width: 100%;\n  border-bottom: 2px solid var(--sd-rule);\n  transition: border-color .15s ease;\n}\n.sd-field__wrap:focus-within { border-color: var(--sd-orange); }\n.sd-field__wrap span { font-size: 1.35rem; font-weight: 300; color: var(--sd-smoke); }\n.sd-field input {\n  flex: 1 1 auto; min-width: 0; width: 100%; max-width: 100%;\n  font-family: inherit; font-size: 1.55rem; font-weight: 300; color: var(--sd-onyx);\n  border: 0; background: transparent; padding: 0.35rem 0; outline: none;\n  font-variant-numeric: tabular-nums;\n}\n.sd-field input:focus-visible { outline: none; } \/* the underline carries the focus state *\/\n\n.sd-calc__out { min-width: 0; padding: clamp(1.5rem, 1rem + 2vw, 2.25rem); background: var(--sd-onyx); color: var(--sd-chalk); }\n.sd-calc__row {\n  display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;\n  padding: 0.85rem 0; border-bottom: 1px solid #444;\n}\n.sd-calc__label { font-size: var(--sd-small); color: #C9C7C4; }\n.sd-calc__val { font-size: 1.45rem; font-weight: 300; font-variant-numeric: tabular-nums; }\n.sd-calc__row--lead { border-bottom: 0; padding-top: 1.1rem; }\n.sd-calc__row--lead .sd-calc__label { color: var(--sd-chalk); font-weight: 500; }\n.sd-calc__row--lead .sd-calc__val { font-size: 2.1rem; color: var(--sd-orange); }\n\n.sd-calc__verdict {\n  font-size: var(--sd-small); line-height: 1.6; color: var(--sd-chalk);\n  border-left: 2px solid var(--sd-orange);\n  padding: 0.15rem 0 0.15rem 0.9rem;\n  margin: 1.5rem 0 1.25rem;\n}\n.sd-calc__fine { font-size: 0.8125rem; color: #A9A7A4; margin: 0; }\n\n\/* Anchor jumps from the nav, without a library. *\/\nhtml { scroll-behavior: smooth; }\n@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }\n\n\/* ==========================================================================\n   WARMTH LAYER\n   Rounded corners, layered depth, and hover response \u2014 applied on a scale\n   tied to hierarchy rather than one radius and one shadow on everything.\n   Delete from here down to return to the flat version.\n   ========================================================================== *\/\n\n:root {\n  --sd-r-sm: 6px;    \/* chips, inputs, small controls *\/\n  --sd-r-md: 12px;   \/* cards *\/\n  --sd-r-lg: 20px;   \/* the two big interactive modules *\/\n\n  \/* Warm shadows, tinted with the brand's own dark rather than pure black. *\/\n  --sd-lift-1: 0 1px 2px rgba(42,42,42,.05), 0 4px 12px rgba(42,42,42,.06);\n  --sd-lift-2: 0 2px 4px rgba(42,42,42,.06), 0 12px 28px rgba(42,42,42,.10);\n  --sd-lift-3: 0 4px 8px rgba(42,42,42,.08), 0 24px 48px rgba(42,42,42,.14);\n}\n\n.sd-btn { border-radius: 999px; padding-inline: 1.9rem; }\n.sd-btn--primary { box-shadow: var(--sd-lift-1); }\n.sd-btn--primary:hover { box-shadow: var(--sd-lift-2); transform: translateY(-1px); }\n.sd-btn { transition: background-color .18s ease, color .18s ease, box-shadow .18s ease, transform .18s ease; }\n\n\/* Service and industry entries become cards that answer the cursor. *\/\n.sd-item {\n  background: var(--sd-white);\n  border: 1px solid var(--sd-rule);\n  border-top: 3px solid var(--sd-onyx);\n  border-radius: var(--sd-r-md);\n  padding: 1.5rem 1.5rem 1.75rem;\n  box-shadow: var(--sd-lift-1);\n  transition: box-shadow .22s ease, transform .22s ease, border-top-color .22s ease;\n}\n.sd-item:hover { box-shadow: var(--sd-lift-2); transform: translateY(-3px); border-top-color: var(--sd-orange); }\n.sd-section--chalk .sd-item { background: var(--sd-white); }\n\n.sd-plan { border-radius: var(--sd-r-md); box-shadow: var(--sd-lift-1); transition: box-shadow .22s ease, transform .22s ease; }\n.sd-plan:hover { box-shadow: var(--sd-lift-2); transform: translateY(-4px); }\n.sd-plan--featured { box-shadow: var(--sd-lift-2); }\n.sd-plan--featured:hover { box-shadow: var(--sd-lift-3); }\n\n.sd-hero__aside { border-radius: var(--sd-r-md); box-shadow: var(--sd-lift-1); }\n.sd-hero__proofchip { border-radius: var(--sd-r-sm); }\n\n\/* Proof block: the tiles separate and lift instead of sharing hairlines. *\/\n.sd-proof { border-radius: var(--sd-r-lg); box-shadow: var(--sd-lift-3); }\n.sd-metrics { background: transparent; border: 0; gap: 0.75rem; }\n.sd-metric { border-radius: var(--sd-r-md); background: #454545; transition: transform .22s ease, background-color .22s ease; }\n.sd-metric:hover { transform: translateY(-3px); background: #4E4E4E; }\n\n.sd-calc { border-radius: var(--sd-r-lg); overflow: hidden; box-shadow: var(--sd-lift-3); border: 0; }\n.sd-field__wrap { border: 1px solid var(--sd-rule); border-radius: var(--sd-r-sm); padding: 0.2rem 0.85rem; background: var(--sd-white); }\n.sd-field__wrap:focus-within { border-color: var(--sd-orange); box-shadow: 0 0 0 3px rgba(236,106,30,.16); }\n.sd-areas li { border-radius: 999px; transition: border-color .18s ease, color .18s ease; }\n.sd-areas li:hover { border-color: var(--sd-orange); color: var(--sd-orange-ink); }\n\n.sd-faq details { border-bottom: 0; margin-bottom: 0.6rem; background: var(--sd-white); border: 1px solid var(--sd-rule); border-radius: var(--sd-r-md); }\n.sd-faq summary { padding: 1.15rem 3rem 1.15rem 1.25rem; border-radius: var(--sd-r-md); }\n.sd-faq summary::after { right: 1.25rem; top: 1rem; }\n.sd-faq details p { padding: 0 1.25rem 1.25rem; }\n.sd-faq details[open] { box-shadow: var(--sd-lift-1); }\n\n.sd-fit li { border-bottom: 0; margin-bottom: 0.4rem; padding: 0.7rem 0.9rem 0.7rem 2.4rem; background: var(--sd-white); border: 1px solid var(--sd-rule); border-radius: var(--sd-r-sm); }\n.sd-fit--yes li::before, .sd-fit--no li::before { left: 0.9rem; }\n\n\/* --------------------------------------------------------------------------\n   Budget ramp module\n   -------------------------------------------------------------------------- *\/\n\n.sd-ramp {\n  display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr);\n  border-radius: var(--sd-r-lg); overflow: hidden; box-shadow: var(--sd-lift-3);\n}\n@media (max-width: 820px) { .sd-ramp { grid-template-columns: minmax(0, 1fr); } }\n\n.sd-ramp__control { min-width: 0; background: var(--sd-white); padding: clamp(1.5rem,1rem + 2vw,2.25rem); }\n.sd-ramp__slabel { display: block; font-size: var(--sd-small); color: var(--sd-graphite); margin: 1.75rem 0 0.9rem; }\n.sd-ramp__slabel strong { color: var(--sd-orange-ink); font-size: 1.15rem; }\n.sd-ramp__ticks { display: flex; justify-content: space-between; font-size: 0.8125rem; color: var(--sd-smoke); margin-top: 0.5rem; padding: 0 2px; }\n\n.sd-range {\n  --fill: 0%;\n  -webkit-appearance: none; appearance: none;\n  width: 100%; height: 6px; border-radius: 999px; outline: none;\n  background: linear-gradient(to right, var(--sd-orange) var(--fill), var(--sd-rule) var(--fill));\n}\n.sd-range::-webkit-slider-thumb {\n  -webkit-appearance: none; appearance: none;\n  width: 26px; height: 26px; border-radius: 50%;\n  background: var(--sd-white); border: 3px solid var(--sd-orange);\n  box-shadow: var(--sd-lift-2); cursor: grab;\n  transition: transform .15s ease;\n}\n.sd-range::-webkit-slider-thumb:active { transform: scale(1.12); cursor: grabbing; }\n.sd-range::-moz-range-thumb {\n  width: 26px; height: 26px; border-radius: 50%;\n  background: var(--sd-white); border: 3px solid var(--sd-orange);\n  box-shadow: var(--sd-lift-2); cursor: grab;\n}\n.sd-range:focus-visible { outline: 3px solid var(--sd-orange); outline-offset: 6px; }\n\n.sd-ramp__out { min-width: 0; background: var(--sd-onyx); color: var(--sd-chalk); padding: clamp(1.5rem,1rem + 2vw,2.25rem); }\n.sd-ramp__out .sd-label { color: #A9A7A4; }\n.sd-ramp__big { font-size: clamp(2.4rem,1.6rem + 3vw,3.4rem); font-weight: 300; line-height: 1; color: var(--sd-orange); margin: 0 0 1.5rem; font-variant-numeric: tabular-nums; }\n.sd-ramp__big span { font-size: 1.1rem; color: #C9C7C4; font-weight: 400; }\n.sd-ramp__pair { display: flex; gap: 2rem; flex-wrap: wrap; padding-bottom: 1.25rem; border-bottom: 1px solid #444; }\n.sd-ramp__pair span { display: block; margin-bottom: 0.2rem; }\n.sd-ramp__pair strong { font-size: 1.35rem; font-weight: 400; font-variant-numeric: tabular-nums; }\n.sd-ramp__milestone { font-size: var(--sd-small); color: var(--sd-chalk); border-left: 2px solid var(--sd-orange); padding-left: 0.9rem; margin: 1.25rem 0; }\n\n@media (prefers-reduced-motion: reduce) {\n  .sd-item:hover, .sd-plan:hover, .sd-metric:hover, .sd-btn--primary:hover { transform: none; }\n}\n\n\/* ==========================================================================\n   PHONE\n   The page is long on a 380px screen. This tightens rhythm, puts the metric\n   tiles two-up, turns the plans into a swipe row, and folds the long feature\n   lists behind a tap. Nothing is removed from the DOM \u2014 crawlers still read\n   every list in full.\n   ========================================================================== *\/\n\n@media (max-width: 640px) {\n\n  :root {\n    --sd-gap: 2.25rem;\n    --sd-display: 2.05rem;\n    --sd-headline: 1.5rem;\n    --sd-body: 1rem;\n    --sd-small: 0.9rem;\n  }\n\n  .sd-page { line-height: 1.6; }\n  .sd-head { margin-bottom: 1.5rem; }\n  .sd-lede { font-size: 1.02rem; }\n  .sd-hero { padding-block: 2rem 2.25rem; }\n  .sd-hero__grid, .sd-grid, .sd-steps, .sd-fit, .sd-cta__grid { gap: 1.25rem; }\n\n  .sd-item { padding: 1.15rem 1.15rem 1.35rem; }\n  .sd-hero__aside { padding: 1.15rem; }\n  .sd-hero__aside li { padding: 0.5rem 0; }\n\n  \/* Two-up metric tiles instead of a stack four screens tall. *\/\n  .sd-metrics { grid-template-columns: 1fr 1fr; gap: 0.5rem; }\n  .sd-metric { padding: 0.9rem 0.85rem 1rem; }\n  .sd-metric__value { font-size: 1.45rem; }\n  .sd-metric__name { font-size: 0.85rem; }\n  .sd-metric__meta { font-size: 0.75rem; }\n  .sd-proof { padding: 1.25rem; }\n  .sd-caveat { margin-top: 1.25rem; padding-top: 1rem; }\n\n  \/* Plans become a swipe row: one card visible, the rest a thumb away. *\/\n  .sd-plans {\n    display: flex; gap: 0.7rem;\n    overflow-x: auto; scroll-snap-type: x mandatory;\n    -webkit-overflow-scrolling: touch;\n    margin-inline: -1.25rem; padding: 0.5rem 1.25rem 1.25rem;\n    scrollbar-width: none;\n  }\n  .sd-plans::-webkit-scrollbar { display: none; }\n  .sd-plan { flex: 0 0 76%; scroll-snap-align: center; padding: 1.35rem 1.15rem 1.5rem; }\n\n  .sd-calc, .sd-ramp { border-radius: var(--sd-r-md); }\n  .sd-calc__inputs, .sd-calc__out, .sd-ramp__control, .sd-ramp__out { padding: 1.25rem; }\n  .sd-field { margin-bottom: 1rem; }\n  .sd-field input { font-size: 1.3rem; }\n  .sd-calc__val { font-size: 1.25rem; }\n  .sd-calc__row--lead .sd-calc__val { font-size: 1.7rem; }\n  .sd-ramp__big { font-size: 2.2rem; }\n\n  .sd-actions { gap: 0.6rem; margin-top: 1.25rem; }\n  .sd-btn { display: block; width: 100%; text-align: center; padding: 0.9rem 1rem; }\n\n  .sd-faq summary { padding: 0.95rem 2.5rem 0.95rem 1rem; font-size: 1rem; }\n  .sd-faq details p { padding: 0 1rem 1rem; }\n  .sd-fit li { padding: 0.55rem 0.75rem 0.55rem 2rem; }\n  .sd-fit--yes li::before, .sd-fit--no li::before { left: 0.75rem; }\n\n  .sd-footer__grid { gap: 1.5rem; }\n  .sd-footer ul { line-height: 1.8; }\n\n  \/* Feature lists folded behind a tap (markup added by script). *\/\n  .sd-fold > summary {\n    list-style: none; cursor: pointer;\n    font-size: 0.85rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase;\n    color: var(--sd-orange-ink);\n    padding: 0.55rem 0; margin-top: 0.35rem;\n  }\n  .sd-fold > summary::-webkit-details-marker { display: none; }\n  .sd-fold > summary::after { content: \" +\"; }\n  .sd-fold[open] > summary::after { content: \" \\2013\"; }\n}\n\n\/* Above 640px the fold is inert \u2014 lists show in full, no toggle. *\/\n@media (min-width: 641px) {\n  .sd-fold > summary { display: none; }\n  .sd-fold > ul { display: block !important; }\n}\n\n\n\/* Nothing on this page may exceed the viewport. If something does, it is a bug\n   to fix at the source, but this stops it shipping as a sideways scroll. *\/\n.sd-page { overflow-x: clip; max-width: 100vw; }\n.sd-page img, .sd-page input { max-width: 100%; }\n\n\n\/* --------------------------------------------------------------------------\n   Swipe row affordance \u2014 dots track the plan carousel on phones.\n   Hidden entirely on wider screens, where all three cards are already visible.\n   -------------------------------------------------------------------------- *\/\n\n.sd-dots { display: none; }\n\n@media (max-width: 640px) {\n  .sd-dots {\n    display: flex; justify-content: center; align-items: center; gap: 0.5rem;\n    margin: -0.35rem 0 0.5rem;\n  }\n  .sd-dots button {\n    width: 8px; height: 8px; padding: 0; border: 0; border-radius: 50%;\n    background: var(--sd-rule); cursor: pointer;\n    transition: background-color .2s ease, width .2s ease;\n  }\n  .sd-dots button[aria-current=\"true\"] {\n    background: var(--sd-orange-btn);\n    width: 22px; border-radius: 999px;\n  }\n  \/* A real tap target around a small visual dot. *\/\n  .sd-dots button::before {\n    content: \"\"; position: absolute; inset: -12px;\n  }\n  .sd-dots button { position: relative; }\n}\n\n\/* --------------------------------------------------------------------------\n   Industries: one lead card, then the wider capability list.\n   -------------------------------------------------------------------------- *\/\n\n.sd-item--lead { border-top-color: var(--sd-orange); }\n.sd-item .sd-label { margin-bottom: 0.5rem; }\n\n.sd-more {\n  margin-top: clamp(1.75rem, 1rem + 2vw, 2.75rem);\n  padding-top: clamp(1.75rem, 1rem + 2vw, 2.5rem);\n  border-top: 1px solid var(--sd-rule);\n}\n.sd-more h3 { margin-bottom: 0.5rem; }\n.sd-more > p { font-size: var(--sd-small); color: var(--sd-graphite); }\n.sd-more .sd-areas { margin: 1.25rem 0 1.25rem; }\n.sd-more .sd-note { max-width: 68ch; }\n\n\/* ==========================================================================\n   MOTION + MEDIA\n   ========================================================================== *\/\n\n\/* Reveal. Applied by script only \u2014 no-JS visitors never see a blank page. *\/\n.sd-reveal {\n  opacity: 0;\n  transform: translateY(20px);\n  transition: opacity .55s ease, transform .55s cubic-bezier(.22,.61,.36,1);\n  will-change: opacity, transform;\n}\n.sd-reveal.sd-in { opacity: 1; transform: none; }\n\n\/* Hero entrance: one sequence on load, not a per-element fade. *\/\n.sd-hero--enter h1,\n.sd-hero--enter .sd-hero__tagline,\n.sd-hero--enter .sd-lede,\n.sd-hero--enter .sd-hero__proofchip,\n.sd-hero--enter .sd-actions,\n.sd-hero--enter .sd-hero__aside {\n  opacity: 0; transform: translateY(16px);\n  transition: opacity .6s ease, transform .6s cubic-bezier(.22,.61,.36,1);\n}\n.sd-hero--enter.sd-in h1,\n.sd-hero--enter.sd-in .sd-hero__tagline,\n.sd-hero--enter.sd-in .sd-lede,\n.sd-hero--enter.sd-in .sd-hero__proofchip,\n.sd-hero--enter.sd-in .sd-actions,\n.sd-hero--enter.sd-in .sd-hero__aside { opacity: 1; transform: none; }\n.sd-hero--enter.sd-in .sd-hero__tagline   { transition-delay: .08s; }\n.sd-hero--enter.sd-in .sd-lede            { transition-delay: .16s; }\n.sd-hero--enter.sd-in .sd-hero__proofchip { transition-delay: .24s; }\n.sd-hero--enter.sd-in .sd-actions         { transition-delay: .30s; }\n.sd-hero--enter.sd-in .sd-hero__aside     { transition-delay: .18s; }\n\n@media (prefers-reduced-motion: reduce) {\n  .sd-reveal, .sd-hero--enter * { opacity: 1 !important; transform: none !important; transition: none !important; }\n}\n\n\/* --------------------------------------------------------------------------\n   Image bands. Fixed aspect ratios so nothing shifts while they load.\n   -------------------------------------------------------------------------- *\/\n\n.sd-band { margin: 0; }\n.sd-band img { display: block; width: 100%; height: 100%; object-fit: cover; }\n\n\/* Full-bleed band between sections. *\/\n.sd-band--tall {\n  aspect-ratio: 21 \/ 7;\n  overflow: hidden;\n  background: var(--sd-chalk);\n}\n@media (max-width: 640px) { .sd-band--tall { aspect-ratio: 16 \/ 10; } }\n\n\/* Image plus caption, split down the middle. *\/\n.sd-band--split {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n  background: var(--sd-onyx);\n  align-items: stretch;\n}\n.sd-band--split img { aspect-ratio: 4 \/ 3; }\n.sd-band--split figcaption {\n  min-width: 0;\n  align-self: center;\n  padding: clamp(1.5rem, 1rem + 3vw, 3.5rem);\n  color: var(--sd-chalk);\n}\n.sd-band--split figcaption .sd-label { color: var(--sd-orange); }\n.sd-band--split figcaption p { font-size: var(--sd-small); color: #C9C7C4; margin: 0; max-width: 46ch; }\n@media (max-width: 820px) {\n  .sd-band--split { grid-template-columns: minmax(0, 1fr); }\n  .sd-band--split img { aspect-ratio: 16 \/ 9; }\n}\n\n\/* Inset image, sits inside a section's own width. *\/\n.sd-band--inset {\n  aspect-ratio: 21 \/ 6;\n  overflow: hidden;\n  border-radius: var(--sd-r-md);\n  box-shadow: var(--sd-lift-2);\n  margin-bottom: clamp(1.5rem, 1rem + 2vw, 2.5rem);\n}\n@media (max-width: 640px) { .sd-band--inset { aspect-ratio: 16 \/ 9; } }\n\n.sd-calc__seed {\n  font-size: 0.8125rem; line-height: 1.55; color: var(--sd-smoke);\n  border-top: 1px solid var(--sd-rule);\n  margin: 1.5rem 0 0; padding-top: 1rem; max-width: 46ch;\n}\n\n\/* ==========================================================================\n   PROOF: FUNNEL, SCORECARD, AUCTION TABLE\n   ========================================================================== *\/\n\n.sd-vh { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }\n.sd-note--wide { max-width: 74ch; margin: 1rem 0 0; }\n.sd-subhead { margin-top: clamp(2rem, 1.2rem + 2.5vw, 3.25rem); }\n\n\/* --- Funnel ---------------------------------------------------------------- *\/\n\n.sd-funnel { margin-top: clamp(1.75rem, 1rem + 2vw, 2.5rem); padding-top: clamp(1.75rem, 1rem + 2vw, 2.5rem); border-top: 1px solid #4A4A4A; }\n.sd-funnel h3 { color: var(--sd-chalk); margin-bottom: 0.4rem; }\n.sd-funnel .sd-note { color: #A9A7A4; }\n\n.sd-funnel__list { list-style: none; counter-reset: step; margin: 1.75rem 0 0; padding: 0; }\n.sd-funnel__list li {\n  counter-increment: step;\n  display: grid;\n  grid-template-columns: 2.25rem minmax(0, 1fr) auto;\n  grid-template-areas: \"n label value\" \". detail detail\";\n  gap: 0.15rem 1rem;\n  align-items: baseline;\n  padding: 1rem 0;\n  border-bottom: 1px solid #454545;\n}\n.sd-funnel__list li::before {\n  grid-area: n;\n  content: counter(step, decimal-leading-zero);\n  font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em;\n  color: var(--sd-orange);\n}\n.sd-funnel__label  { grid-area: label; font-size: var(--sd-sub); font-weight: 500; color: var(--sd-chalk); }\n.sd-funnel__value  { grid-area: value; font-size: 1.6rem; font-weight: 300; color: var(--sd-chalk); font-variant-numeric: tabular-nums; white-space: nowrap; }\n.sd-funnel__detail { grid-area: detail; font-size: var(--sd-small); color: #ABA9A6; max-width: 62ch; }\n.sd-funnel__last { border-bottom: 0; }\n.sd-funnel__last .sd-funnel__value { color: var(--sd-orange); font-size: 1.9rem; }\n\n@media (max-width: 640px) {\n  .sd-funnel__list li {\n    grid-template-columns: 2rem minmax(0, 1fr);\n    grid-template-areas: \"n label\" \"n value\" \". detail\";\n    gap: 0.1rem 0.75rem;\n  }\n  .sd-funnel__value { font-size: 1.45rem; }\n}\n\n\/* --- Scorecard ------------------------------------------------------------- *\/\n\n.sd-scores { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(150px, 100%), 1fr)); gap: 0.85rem; }\n.sd-score {\n  background: var(--sd-white); border: 1px solid var(--sd-rule); border-radius: var(--sd-r-md);\n  padding: 1.25rem 1rem 1.35rem; box-shadow: var(--sd-lift-1); text-align: left;\n}\n.sd-score__n { font-size: 2.3rem; font-weight: 300; line-height: 1; color: var(--sd-onyx); font-variant-numeric: tabular-nums; }\n.sd-score__d { font-size: 1rem; color: var(--sd-smoke); }\n.sd-score__l { display: block; font-size: var(--sd-small); color: var(--sd-graphite); margin-top: 0.5rem; }\n.sd-score--total { background: var(--sd-onyx); border-color: var(--sd-onyx); }\n.sd-score--total .sd-score__n { color: var(--sd-orange); }\n.sd-score--total .sd-score__d { color: #A9A7A4; }\n.sd-score--total .sd-score__l { color: var(--sd-chalk); font-weight: 500; }\n\n\/* --- Auction table --------------------------------------------------------- *\/\n\n.sd-tablewrap { overflow-x: auto; -webkit-overflow-scrolling: touch; margin-top: 1.25rem; border-radius: var(--sd-r-md); border: 1px solid var(--sd-rule); background: var(--sd-white); }\n.sd-table { width: 100%; border-collapse: collapse; font-size: var(--sd-small); min-width: 620px; }\n.sd-table th, .sd-table td { padding: 0.85rem 1rem; text-align: right; border-bottom: 1px solid var(--sd-rule); font-variant-numeric: tabular-nums; }\n.sd-table thead th { text-align: right; font-size: 0.8125rem; font-weight: 600; color: var(--sd-smoke); background: var(--sd-chalk); border-bottom: 2px solid var(--sd-rule); }\n.sd-table th[scope=\"row\"], .sd-table thead th:first-child { text-align: left; font-weight: 500; color: var(--sd-onyx); }\n.sd-table tbody tr:last-child th, .sd-table tbody tr:last-child td { border-bottom: 0; }\n.sd-table__own th, .sd-table__own td { background: rgba(236,106,30,.07); font-weight: 600; color: var(--sd-onyx); }\n.sd-table__own th[scope=\"row\"] { box-shadow: inset 3px 0 0 var(--sd-orange); }\n\n\/* ==========================================================================\n   DISRUPTION LAYER\n   Scale, contrast and one moving element. No new colours, no hype type \u2014\n   the loudness comes from size and from the numbers themselves.\n   ========================================================================== *\/\n\n\/* Display type runs larger. p15 sets Light for display; scale, not weight. *\/\n:root {\n  --sd-display:  clamp(2.6rem, 1.2rem + 5.6vw, 5.25rem);\n  --sd-headline: clamp(1.85rem, 1.1rem + 2.8vw, 3rem);\n}\n.sd-page h1 { letter-spacing: -0.03em; }\n.sd-page h2 { letter-spacing: -0.022em; }\n\n\/* --- Ticker ----------------------------------------------------------------\n   Two rails running opposite directions at different speeds. Edges fade so\n   items arrive and leave rather than being clipped at a hard border.\n   -------------------------------------------------------------------------- *\/\n\n.sd-ticker {\n  background: var(--sd-onyx);\n  border-block: 1px solid #3F3F3F;\n  overflow: hidden;\n  padding-block: 1.1rem;\n  -webkit-mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent);\n          mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent);\n}\n\n.sd-ticker__rail { display: flex; width: max-content; }\n.sd-ticker__rail--b { margin-top: 0.55rem; }\n\n.sd-ticker__run {\n  display: flex; align-items: center; flex: 0 0 auto;\n  animation: sd-marquee 38s linear infinite;\n}\n.sd-ticker__rail--b .sd-ticker__run {\n  animation-name: sd-marquee-rev;\n  animation-duration: 52s;\n}\n\n.sd-ticker__run span {\n  font-size: 0.8125rem; font-weight: 600;\n  letter-spacing: 0.14em; text-transform: uppercase;\n  color: #96938F; white-space: nowrap; padding-inline: 1.15rem;\n}\n.sd-ticker__rail--b .sd-ticker__run span { font-size: 0.75rem; color: #7F7D7A; }\n.sd-ticker__run b { font-weight: 600; color: var(--sd-orange); letter-spacing: 0.06em; }\n\n.sd-ticker__dot {\n  width: 4px; height: 4px; padding: 0 !important;\n  border-radius: 50%; background: #4E4E4E; flex: 0 0 auto;\n}\n\n@keyframes sd-marquee     { from { transform: translateX(0); }     to { transform: translateX(-100%); } }\n@keyframes sd-marquee-rev { from { transform: translateX(-100%); } to { transform: translateX(0); } }\n\n.sd-ticker:hover .sd-ticker__run { animation-play-state: paused; }\n\n@media (max-width: 640px) {\n  .sd-ticker__run { animation-duration: 26s; }\n  .sd-ticker__rail--b .sd-ticker__run { animation-duration: 34s; }\n  .sd-ticker__run span { padding-inline: 0.8rem; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .sd-ticker { -webkit-mask-image: none; mask-image: none; }\n  .sd-ticker__rail { width: 100%; overflow-x: auto; }\n  .sd-ticker__run { animation: none; }\n  .sd-ticker__run[aria-hidden=\"true\"] { display: none; }\n}\n\n\/* --- Stance ---------------------------------------------------------------- *\/\n\n.sd-stance { padding-block: clamp(3.5rem, 2rem + 5vw, 7rem); }\n.sd-stance__head {\n  font-size: clamp(2rem, 1.1rem + 3.6vw, 3.75rem);\n  max-width: 20ch; margin-bottom: clamp(2rem, 1rem + 3vw, 3.5rem);\n}\n\n.sd-stance__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid #444; }\n.sd-stance__list li {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr);\n  gap: 1rem 2.5rem;\n  align-items: baseline;\n  padding: clamp(0.9rem, 0.6rem + 1vw, 1.5rem) 0;\n  border-bottom: 1px solid #444;\n}\n.sd-stance__out {\n  font-size: clamp(1rem, 0.85rem + 0.6vw, 1.35rem);\n  color: #7F7D7A;\n  position: relative;\n  display: inline-block;\n}\n\/* The rule draws across when the line comes into view. Without script it is\n   simply already drawn, so the meaning never depends on the animation. *\/\n.sd-stance__out::after {\n  content: \"\"; position: absolute; left: 0; right: 0; top: 52%;\n  height: 1px; background: var(--sd-orange);\n  transform-origin: left center;\n}\n.sd-stance__list li.sd-reveal .sd-stance__out::after,\n.sd-stance__list li:not(.sd-in) .sd-stance__out::after { transform: scaleX(0); }\n.sd-stance__list li .sd-stance__out::after { transition: transform .5s cubic-bezier(.22,.61,.36,1) .15s; }\n.sd-stance__list li.sd-in .sd-stance__out::after { transform: scaleX(1); }\n.sd-stance__in {\n  font-size: clamp(1.1rem, 0.9rem + 0.9vw, 1.6rem);\n  font-weight: 300; line-height: 1.25; color: var(--sd-chalk);\n}\n@media (max-width: 700px) {\n  .sd-stance__list li { grid-template-columns: minmax(0, 1fr); gap: 0.35rem; }\n}\n.sd-stance__close { margin-top: 2rem; font-size: var(--sd-small); color: #A9A7A4; max-width: 60ch; }\n\n\/* ==========================================================================\n   MOTION: PROGRESS, WORD REVEAL, PARALLAX\n   All of it applied by script. Nothing here hides content on its own.\n   ========================================================================== *\/\n\n.sd-progress {\n  position: fixed; inset: 0 0 auto 0; z-index: 999;\n  height: 2px; background: var(--sd-orange);\n  transform: scaleX(0); transform-origin: left center;\n  will-change: transform; pointer-events: none;\n}\n\n\/* Headline words rise out of their own line box. *\/\n.sd-words .sd-word { display: inline-block; overflow: hidden; vertical-align: bottom; }\n.sd-words .sd-word__i {\n  display: inline-block;\n  transform: translateY(110%);\n  transition: transform .62s cubic-bezier(.22,.61,.36,1);\n}\n.sd-words.sd-in .sd-word__i { transform: translateY(0); }\n\n\/* Counters hold their box while the digits run. *\/\n.sd-metric__value, .sd-funnel__value, .sd-score__n { font-variant-numeric: tabular-nums; }\n\n\/* Image bands drift. Scaled slightly so the drift never exposes an edge. *\/\n.sd-band img.sd-parallax { will-change: transform; transform: scale(1.1); }\n\n@media (prefers-reduced-motion: reduce) {\n  .sd-progress { display: none; }\n  .sd-words .sd-word__i { transform: none !important; transition: none !important; }\n  .sd-band img.sd-parallax { transform: none !important; }\n  .sd-stance__out::after { transform: scaleX(1) !important; transition: none !important; }\n}\n\n<\/style>\n\n<main id=\"sd-main\" class=\"sd-page\" role=\"main\">\n\n\t<header class=\"sd-masthead\">\n\t\t<div class=\"sd-shell sd-masthead__inner\">\n\t\t\t<a class=\"sd-masthead__logo\" href=\"https:\/\/saywadigital.com\/\" rel=\"home\">\n\t\t\t\t<img decoding=\"async\" src=\"https:\/\/saywadigital.com\/wp-content\/uploads\/2026\/09\/saywa-lockup-scaled.png\"\n\t\t\t\t     width=\"190\" height=\"55\" alt=\"Saywa Digital\">\n\t\t\t<\/a>\n\t\t\t<nav class=\"sd-masthead__nav\" aria-label=\"Primary\">\n\t\t\t\t<a class=\"sd-masthead__link\" href=\"#services\">Services<\/a>\n\t\t\t\t<a class=\"sd-masthead__link\" href=\"#industries\">Industries<\/a>\n\t\t\t\t<a class=\"sd-masthead__link\" href=\"#proof\">Proof<\/a>\n\t\t\t\t<a class=\"sd-masthead__link\" href=\"#pricing\">Pricing<\/a>\n\t\t\t\t<a class=\"sd-masthead__tel\" href=\"tel:+12533428091\">(253) 342-8091<\/a>\n\t\t\t<\/nav>\n\t\t<\/div>\n\t<\/header>\n\n\t<!-- ===================== HERO ===================== -->\n\t<section class=\"sd-hero\">\n\t\t<div class=\"sd-shell sd-hero__grid\">\n\t\t\t<div>\n\t\t\t\t<h1>Marketing agency for ground transportation and home service companies<\/h1>\n\n\t\t\t\t<p class=\"sd-hero__tagline\">&ldquo;We spend our own money on this first.&rdquo;<\/p>\n\n\t\t\t\t<p class=\"sd-lede\">\n\t\t\t\t\tSaywa Digital runs Google Ads, local SEO, and websites for chauffeur operators and\n\t\t\t\t\thome service companies. Based in the Seattle&ndash;Tacoma area, working with operators\n\t\t\t\t\tacross the country. The founder owns and runs a ground transportation business and\n\t\t\t\t\tbuys the same advertising he sells.\n\t\t\t\t<\/p>\n\t\t\t\t<p>\n\t\t\t\t\tEvery report shows three things: what was spent, what it produced, and how it was\n\t\t\t\t\tmeasured &mdash; with the date range attached to every number.\n\t\t\t\t<\/p>\n\n\t\t\t\t<div class=\"sd-hero__proofchip\">\n\t\t\t\t\t<p class=\"sd-proof__disclosure\">Founder-owned account: All Black Limo, Seattle<\/p>\n\t\t\t\t\t<p><strong>$47,930<\/strong> spent, <strong>339<\/strong> tracked bookings,\n\t\t\t\t\t<strong>$141<\/strong> each &mdash; Jun 1 &ndash; Jun 22, 2026.\n\t\t\t\t\t<a href=\"#proof\">The full funnel, step by step<\/a><\/p>\n\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"sd-actions\">\n\t\t\t\t\t<a class=\"sd-btn sd-btn--primary\" href=\"#contact\">Book a 20-minute account review<\/a>\n\t\t\t\t\t<a class=\"sd-btn sd-btn--ghost\" href=\"tel:+12533428091\">Call (253) 342-8091<\/a>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t<aside class=\"sd-hero__aside\" aria-label=\"At a glance\">\n\t\t\t\t<p class=\"sd-label\">At a glance<\/p>\n\t\t\t\t<ul>\n\t\t\t\t\t<li>Google Ads, local SEO, websites and landing pages<\/li>\n\t\t\t\t\t<li>Ground transportation specialists, open to most local service industries<\/li>\n\t\t\t\t\t<li>Measured to the phone call, not the impression<\/li>\n\t\t\t\t\t<li>Month-to-month available &mdash; no setup fee<\/li>\n\t\t\t\t\t<li>Seattle&ndash;Tacoma based &mdash; clients nationwide<\/li>\n\t\t\t\t<\/ul>\n\t\t\t<\/aside>\n\t\t<\/div>\n\t<\/section>\n\n\t<!-- ===================== TICKER ===================== -->\n\t<div class=\"sd-ticker\" aria-label=\"Founder-owned account figures for All Black Limo, Jun 5 to Sep 2, 2026\">\n\t\t<div class=\"sd-ticker__rail sd-ticker__rail--a\">\n\t\t\t<div class=\"sd-ticker__run\" aria-hidden=\"false\"><span>Founder-owned account<\/span><span class=\"sd-ticker__dot\"><\/span><span>All Black Limo, Seattle<\/span><span class=\"sd-ticker__dot\"><\/span><span>90 days<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>$47,930<\/b> spent<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>339<\/b> trips booked<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>$141<\/b> per booking<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>$103K&ndash;$114K<\/b> attributed<\/span><span class=\"sd-ticker__dot\"><\/span><span>Jun 5 &ndash; Sep 2, 2026<\/span><span class=\"sd-ticker__dot\"><\/span><\/div>\n\t\t\t<div class=\"sd-ticker__run\" aria-hidden=\"true\"><span>Founder-owned account<\/span><span class=\"sd-ticker__dot\"><\/span><span>All Black Limo, Seattle<\/span><span class=\"sd-ticker__dot\"><\/span><span>90 days<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>$47,930<\/b> spent<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>339<\/b> trips booked<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>$141<\/b> per booking<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>$103K&ndash;$114K<\/b> attributed<\/span><span class=\"sd-ticker__dot\"><\/span><span>Jun 5 &ndash; Sep 2, 2026<\/span><span class=\"sd-ticker__dot\"><\/span><\/div>\n\t\t<\/div>\n\t\t<div class=\"sd-ticker__rail sd-ticker__rail--b\">\n\t\t\t<div class=\"sd-ticker__run\" aria-hidden=\"false\"><span><b>7.4%<\/b> CTR against a 2&ndash;4% typical range<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>34.48%<\/b> impression share, top of the field<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>2.2&times;<\/b> tracked return on ad spend<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>8.5\/10<\/b> account score<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>6,430<\/b> clicks at <b>$7.45<\/b><\/span><span class=\"sd-ticker__dot\"><\/span><span>Ground transportation rates, not home services<\/span><span class=\"sd-ticker__dot\"><\/span><span>Reconciled against payment records<\/span><span class=\"sd-ticker__dot\"><\/span><\/div>\n\t\t\t<div class=\"sd-ticker__run\" aria-hidden=\"true\"><span><b>7.4%<\/b> CTR against a 2&ndash;4% typical range<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>34.48%<\/b> impression share, top of the field<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>2.2&times;<\/b> tracked return on ad spend<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>8.5\/10<\/b> account score<\/span><span class=\"sd-ticker__dot\"><\/span><span><b>6,430<\/b> clicks at <b>$7.45<\/b><\/span><span class=\"sd-ticker__dot\"><\/span><span>Ground transportation rates, not home services<\/span><span class=\"sd-ticker__dot\"><\/span><span>Reconciled against payment records<\/span><span class=\"sd-ticker__dot\"><\/span><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t<figure class=\"sd-band sd-band--tall\">\n\t\t<img loading=\"lazy\" src=\"https:\/\/saywadigital.com\/wp-content\/uploads\/2026\/09\/Educated-Decisions-scaled.jpg\" alt=\"Four people working on laptops around a table\"\n\t\t     loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\">\n\t<\/figure>\n\n\t<!-- ===================== PROOF ===================== -->\n\t<section class=\"sd-section sd-section--chalk\" id=\"proof\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<div class=\"sd-head\">\n\t\t\t\t<h2>The account this agency was built on<\/h2>\n\t\t\t\t<p class=\"sd-lede\">\n\t\t\t\t\tMost agencies show a case study. This is the ad account Saywa Digital learned on\n\t\t\t\t\tand still runs every day &mdash; published with the spend, the window, and the method stated.\n\t\t\t\t<\/p>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-proof\">\n\t\t\t\t<!-- p19: founder-owned label sits BEFORE the numbers, not after. -->\n\t\t\t\t<strong class=\"sd-proof__disclosure\">Founder-owned account: All Black Limo, Seattle<\/strong>\n\t\t\t\t<p class=\"sd-proof__window\">\n\t\t\t\t\tGoogle Ads search campaigns, Jun 1 &ndash; Jun 22, 2026.\n\t\t\t\t\tAll four figures below come from that single window.\n\t\t\t\t<\/p>\n\n\t\t\t\t<div class=\"sd-metrics\">\n\t\t\t\t\t\t<div class=\"sd-metric\">\n\t\t\t\t\t\t\t<span class=\"sd-metric__value\">$6,057.56<\/span>\n\t\t\t\t\t\t\t<span class=\"sd-metric__name\">Google Ads spend<\/span>\n\t\t\t\t\t\t\t<span class=\"sd-metric__meta\">Billed by Google<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"sd-metric\">\n\t\t\t\t\t\t\t<span class=\"sd-metric__value\">6.04%<\/span>\n\t\t\t\t\t\t\t<span class=\"sd-metric__name\">Click-through rate<\/span>\n\t\t\t\t\t\t\t<span class=\"sd-metric__meta\">Search campaigns<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"sd-metric\">\n\t\t\t\t\t\t\t<span class=\"sd-metric__value\">$7.27<\/span>\n\t\t\t\t\t\t\t<span class=\"sd-metric__name\">Cost per click<\/span>\n\t\t\t\t\t\t\t<span class=\"sd-metric__meta\">Blended average<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"sd-metric\">\n\t\t\t\t\t\t\t<span class=\"sd-metric__value\">$96<\/span>\n\t\t\t\t\t\t\t<span class=\"sd-metric__name\">Cost per booking<\/span>\n\t\t\t\t\t\t\t<span class=\"sd-metric__meta\">Spend &divide; tracked bookings<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"sd-caveat\">\n\t\t\t\t\t<p><strong>What this is.<\/strong> A ground transportation account in the Seattle market,\n\t\t\t\t\towned by the founder of Saywa Digital. It is not a client account and it is not\n\t\t\t\t\tpresented as one.<\/p>\n\t\t\t\t\t<p><strong>What it is not.<\/strong> Ground transportation rates are not home services\n\t\t\t\t\trates. A cost per booking in one industry does not transfer to another, and one\n\t\t\t\t\taccount is not a forecast for yours.<\/p>\n\t\t\t\t\t<p><strong>How it was measured.<\/strong> Spend is what Google billed. Bookings are\n\t\t\t\t\ttracked conversions from calls and form submissions inside Google Ads. Revenue\n\t\t\t\t\tattribution is being reconciled against payment records and is not published\n\t\t\t\t\tuntil those figures match at charge level.<\/p>\n\t\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-funnel\">\n\t\t\t\t<h3>What the full funnel looked like<\/h3>\n\t\t\t\t<p class=\"sd-note\">Google Ads across all campaigns, reconciled against Stripe payment\n\t\t\t\trecords. Same window as above.<\/p>\n\n\t\t\t\t<ol class=\"sd-funnel__list\">\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<span class=\"sd-funnel__label\">Ad spend<\/span>\n\t\t\t\t\t\t<span class=\"sd-funnel__value\">$47,930<\/span>\n\t\t\t\t\t\t<span class=\"sd-funnel__detail\">6,430 clicks at $7.45, 7.4% click-through rate, 87,000 impressions<\/span>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<span class=\"sd-funnel__label\">Leads tracked<\/span>\n\t\t\t\t\t\t<span class=\"sd-funnel__value\">522<\/span>\n\t\t\t\t\t\t<span class=\"sd-funnel__detail\">339 online bookings, 94 calls over 30 seconds, 32 short calls, 57 forms<\/span>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<span class=\"sd-funnel__label\">Qualified leads<\/span>\n\t\t\t\t\t\t<span class=\"sd-funnel__value\">433<\/span>\n\t\t\t\t\t\t<span class=\"sd-funnel__detail\">Online bookings plus calls over 30 seconds &mdash; $111 per qualified lead<\/span>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<span class=\"sd-funnel__label\">Trips booked<\/span>\n\t\t\t\t\t\t<span class=\"sd-funnel__value\">339<\/span>\n\t\t\t\t\t\t<span class=\"sd-funnel__detail\">Online purchases only, at $141 in ad cost each. Roughly 35 more are estimated by phone.<\/span>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<span class=\"sd-funnel__label\">Revenue attributed<\/span>\n\t\t\t\t\t\t<span class=\"sd-funnel__value\">$103K &ndash; $114K<\/span>\n\t\t\t\t\t\t<span class=\"sd-funnel__detail\">339 bookings at a $305 average Stripe charge, plus an estimate for phone bookings<\/span>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li class=\"sd-funnel__last\">\n\t\t\t\t\t\t<span class=\"sd-funnel__label\">Return on ad spend<\/span>\n\t\t\t\t\t\t<span class=\"sd-funnel__value\">2.2&times; &ndash; 2.4&times;<\/span>\n\t\t\t\t\t\t<span class=\"sd-funnel__detail\">Tracked bookings only. Google reports 2.7&times;. Across the whole business, Stripe net of $184,000 against $48,000 in ads is 3.8&times;.<\/span>\n\t\t\t\t\t<\/li>\n\t\t\t\t<\/ol>\n\n\t\t\t\t<div class=\"sd-caveat\">\n\t\t\t\t\t<p><strong>What the tracked figure leaves out.<\/strong> Phone bookings from ads are\n\t\t\t\t\tnot tracked end to end. The estimate of 35 additional bookings assumes 35 to 40\n\t\t\t\t\tpercent of calls over 30 seconds convert, and it is an estimate rather than a count.<\/p>\n\t\t\t\t\t<p><strong>Why the tracked return understates the account.<\/strong> Repeat business\n\t\t\t\t\taccounts for 52 percent of revenue and is not credited to advertising. A\n\t\t\t\t\tfirst-ride return on ad spend is the conservative number, not the complete one.<\/p>\n\t\t\t\t\t<p><strong>Where the money went.<\/strong> Monthly spend ran $7,300 from June 5,\n\t\t\t\t\t$15,900 in July, and $23,400 in August. The airport campaign took $27,300 for 334\n\t\t\t\t\tconversions at $82 each; the cruise campaign took $19,300 for 186 conversions at $104.<\/p>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/section>\n\n\t<figure class=\"sd-band sd-band--split\">\n\t\t<img loading=\"lazy\" src=\"https:\/\/saywadigital.com\/wp-content\/uploads\/2026\/09\/We-Break-the-Internet-scaled.jpg\" alt=\"A slip of paper burning at one edge\"\n\t\t     loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\">\n\t\t<figcaption>\n\t\t\t<span class=\"sd-label\">Where the budget goes<\/span>\n\t\t\t<p>An unmanaged account loses 20 to 30 percent of its spend to irrelevant searches,\n\t\t\twrong match types, and bid drift. At $3,000 a month that is $600 to $900 a month,\n\t\t\tand none of it shows up on a report that only counts impressions.<\/p>\n\t\t<\/figcaption>\n\t<\/figure>\n\n\t<!-- ===================== CALCULATOR ===================== -->\n\t<section class=\"sd-section\" id=\"math\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<div class=\"sd-head\">\n\t\t\t\t<h2>Run your own numbers<\/h2>\n\t\t\t\t<p class=\"sd-lede\">\n\t\t\t\t\tMost owners have never divided their ad spend by their booked jobs. Type in what\n\t\t\t\t\tyou already know and the arithmetic does the rest &mdash; your figures, not ours,\n\t\t\t\t\tand nothing is sent anywhere.\n\t\t\t\t<\/p>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-calc\">\n\t\t\t\t<div class=\"sd-calc__inputs\">\n\t\t\t\t\t<div class=\"sd-field\">\n\t\t\t\t\t\t<label for=\"calc-spend\">Monthly ad spend<\/label>\n\t\t\t\t\t\t<div class=\"sd-field__wrap\"><span>$<\/span>\n\t\t\t\t\t\t\t<input type=\"number\" id=\"calc-spend\" value=\"3000\" min=\"0\" step=\"100\" inputmode=\"decimal\"><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"sd-field\">\n\t\t\t\t\t\t<label for=\"calc-leads\">Calls and form fills per month<\/label>\n\t\t\t\t\t\t<div class=\"sd-field__wrap\">\n\t\t\t\t\t\t\t<input type=\"number\" id=\"calc-leads\" value=\"60\" min=\"1\" step=\"1\" inputmode=\"numeric\"><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"sd-field\">\n\t\t\t\t\t\t<label for=\"calc-close\">Of those, how many become paid jobs<\/label>\n\t\t\t\t\t\t<div class=\"sd-field__wrap\">\n\t\t\t\t\t\t\t<input type=\"number\" id=\"calc-close\" value=\"55\" min=\"1\" max=\"100\" step=\"1\" inputmode=\"numeric\"><span>%<\/span><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"sd-field\">\n\t\t\t\t\t\t<label for=\"calc-value\">Average value of one job<\/label>\n\t\t\t\t\t\t<div class=\"sd-field__wrap\"><span>$<\/span>\n\t\t\t\t\t\t\t<input type=\"number\" id=\"calc-value\" value=\"345\" min=\"0\" step=\"5\" inputmode=\"decimal\"><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t<p class=\"sd-calc__seed\">These are example figures to start from. Replace them\n\t\t\t\t\twith your own &mdash; the result below is arithmetic on whatever is in the fields,\n\t\t\t\t\tnot a result Saywa Digital is claiming.<\/p>\n\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"sd-calc__out\" aria-live=\"polite\">\n\t\t\t\t\t<div class=\"sd-calc__row\">\n\t\t\t\t\t\t<span class=\"sd-calc__label\">Cost per lead<\/span>\n\t\t\t\t\t\t<span class=\"sd-calc__val\" id=\"out-cpl\">&mdash;<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"sd-calc__row\">\n\t\t\t\t\t\t<span class=\"sd-calc__label\">Cost per booked job<\/span>\n\t\t\t\t\t\t<span class=\"sd-calc__val\" id=\"out-cpj\">&mdash;<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"sd-calc__row\">\n\t\t\t\t\t\t<span class=\"sd-calc__label\">Revenue from those jobs<\/span>\n\t\t\t\t\t\t<span class=\"sd-calc__val\" id=\"out-rev\">&mdash;<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"sd-calc__row sd-calc__row--lead\">\n\t\t\t\t\t\t<span class=\"sd-calc__label\">Back for every $1 spent<\/span>\n\t\t\t\t\t\t<span class=\"sd-calc__val\" id=\"out-ret\">&mdash;<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<p class=\"sd-calc__verdict\" id=\"out-verdict\"><\/p>\n\t\t\t\t\t<p class=\"sd-calc__fine\">\n\t\t\t\t\t\tThis is arithmetic on the numbers you typed, over one month. It is not a\n\t\t\t\t\t\tprojection, not a promise, and it does not account for repeat business or\n\t\t\t\t\t\tjobs that came from somewhere else.\n\t\t\t\t\t<\/p>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/section>\n\n\t<figure class=\"sd-band sd-band--tall\">\n\t\t<img loading=\"lazy\" src=\"https:\/\/saywadigital.com\/wp-content\/uploads\/2026\/09\/pexels-rdne-7563673-scaled.jpg\" alt=\"A hand holding a small chalkboard sign\"\n\t\t     loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\">\n\t<\/figure>\n\n\t<!-- ===================== ACCOUNT HEALTH ===================== -->\n\t<section class=\"sd-section sd-section--chalk\" id=\"health\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<div class=\"sd-head\">\n\t\t\t\t<h2>How the account scores, and where it sits against competitors<\/h2>\n\t\t\t\t<p class=\"sd-lede\">\n\t\t\t\t\tTwo things most agencies never show a prospect: the diagnostic scoring on the\n\t\t\t\t\taccount they manage, and the auction data showing who is actually winning the\n\t\t\t\t\timpressions. Both are from the founder-owned account.\n\t\t\t\t<\/p>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-scores\">\n\t\t\t\t<div class=\"sd-score\"><span class=\"sd-score__n\">9<\/span><span class=\"sd-score__d\">\/10<\/span><span class=\"sd-score__l\">Traffic quality<\/span><\/div>\n\t\t\t\t<div class=\"sd-score\"><span class=\"sd-score__n\">9<\/span><span class=\"sd-score__d\">\/10<\/span><span class=\"sd-score__l\">Ad engagement<\/span><\/div>\n\t\t\t\t<div class=\"sd-score\"><span class=\"sd-score__n\">9<\/span><span class=\"sd-score__d\">\/10<\/span><span class=\"sd-score__l\">Conversion efficiency<\/span><\/div>\n\t\t\t\t<div class=\"sd-score\"><span class=\"sd-score__n\">8<\/span><span class=\"sd-score__d\">\/10<\/span><span class=\"sd-score__l\">Cost per click efficiency<\/span><\/div>\n\t\t\t\t<div class=\"sd-score\"><span class=\"sd-score__n\">7<\/span><span class=\"sd-score__d\">\/10<\/span><span class=\"sd-score__l\">Tracking confidence<\/span><\/div>\n\t\t\t\t<div class=\"sd-score sd-score--total\"><span class=\"sd-score__n\">8.5<\/span><span class=\"sd-score__d\">\/10<\/span><span class=\"sd-score__l\">Overall<\/span><\/div>\n\t\t\t<\/div>\n\n\t\t\t<p class=\"sd-note sd-note--wide\">\n\t\t\t\tScored across five dimensions for the period Aug 5 to Sep 1, 2026. Tracking confidence\n\t\t\t\tis the one figure Saywa Digital is actively working to raise: phone bookings driven by\n\t\t\t\tads are not yet tracked from click to charge. It is published at 7 rather than left out.\n\t\t\t<\/p>\n\n\t\t\t<h3 class=\"sd-subhead\">Auction insights<\/h3>\n\t\t\t<p class=\"sd-note sd-note--wide\">\n\t\t\t\tImpression share is how often an ad appeared when it was eligible to. Outranking share\n\t\t\t\tis how often it placed above a given competitor. Airport campaign, Aug 3 to Sep 1, 2026.\n\t\t\t<\/p>\n\n\t\t\t<div class=\"sd-tablewrap\">\n\t\t\t\t<table class=\"sd-table\">\n\t\t\t\t\t<caption class=\"sd-vh\">Auction insights for the founder-owned airport campaign, August 3 to September 1, 2026<\/caption>\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr><th scope=\"col\">Advertiser<\/th><th scope=\"col\">Impression share<\/th><th scope=\"col\">Overlap rate<\/th><th scope=\"col\">Top of page<\/th><th scope=\"col\">Outranking share<\/th><\/tr>\n\t\t\t\t\t<\/thead>\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t<tr class=\"sd-table__own\"><th scope=\"row\">Founder-owned account<\/th><td>34.48%<\/td><td>&mdash;<\/td><td>65.90%<\/td><td>&mdash;<\/td><\/tr>\n\t\t\t\t\t\t<tr><th scope=\"row\">Competitor A<\/th><td>25.81%<\/td><td>35.33%<\/td><td>72.03%<\/td><td>32.88%<\/td><\/tr>\n\t\t\t\t\t\t<tr><th scope=\"row\">Competitor B<\/th><td>17.41%<\/td><td>28.36%<\/td><td>79.66%<\/td><td>29.60%<\/td><\/tr>\n\t\t\t\t\t\t<tr><th scope=\"row\">Competitor C<\/th><td>Under 10%<\/td><td>13.19%<\/td><td>47.03%<\/td><td>33.46%<\/td><\/tr>\n\t\t\t\t\t\t<tr><th scope=\"row\">Competitor D<\/th><td>Under 10%<\/td><td>10.34%<\/td><td>75.33%<\/td><td>18.54%<\/td><\/tr>\n\t\t\t\t\t\t<tr><th scope=\"row\">Competitor E<\/th><td>Under 10%<\/td><td>8.60%<\/td><td>84.87%<\/td><td>23.03%<\/td><\/tr>\n\t\t\t\t\t\t<tr><th scope=\"row\">Competitor F<\/th><td>Under 10%<\/td><td>8.43%<\/td><td>78.01%<\/td><td>25.74%<\/td><\/tr>\n\t\t\t\t\t<\/tbody>\n\t\t\t\t<\/table>\n\t\t\t<\/div>\n\t\t\t<p class=\"sd-note sd-note--wide\">Source: Google Ads Auction Insights. Competitor names are\n\t\t\twithheld; the figures are unedited.<\/p>\n\t\t<\/div>\n\t<\/section>\n\n\t<figure class=\"sd-band sd-band--tall\">\n\t\t<img loading=\"lazy\" src=\"https:\/\/saywadigital.com\/wp-content\/uploads\/2026\/09\/pexels-goumbik-577195-scaled.jpg\" alt=\"A desk with working materials laid out\"\n\t\t     loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\">\n\t<\/figure>\n\n\t<!-- ===================== SERVICES ===================== -->\n\t<section class=\"sd-section\" id=\"services\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<div class=\"sd-head\">\n\t\t\t\t<h2>What we do<\/h2>\n\t\t\t\t<p class=\"sd-lede\">Four services, built to produce booked jobs rather than impressions.<\/p>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-grid sd-grid--2\">\n\t\t\t\t<article class=\"sd-item\">\n\t\t\t\t\t<h3>Google Ads management<\/h3>\n\t\t\t\t\t<p>Campaign build, keyword research, and daily search-term work for local service\n\t\t\t\t\tadvertisers. Ad spend is billed by Google directly to you and is never marked up.<\/p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Campaign architecture by service line, not one catch-all campaign<\/li>\n\t\t\t\t\t\t<li>Responsive search ads: 15 headlines, 4 descriptions per campaign<\/li>\n\t\t\t\t\t\t<li>Negative keyword list seeded on day one and pruned continuously<\/li>\n\t\t\t\t\t\t<li>Extensions live from launch: call, location, sitelink, price, callout<\/li>\n\t\t\t\t\t\t<li>Bid strategy reviewed on a fixed cadence, moved to tCPA when the data supports it<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/article>\n\n\t\t\t\t<article class=\"sd-item\">\n\t\t\t\t\t<h3>Local SEO and Google Business Profile<\/h3>\n\t\t\t\t\t<p>The map pack is where local service searches end. We work the profile, the\n\t\t\t\t\tservice pages, and the citation record that decide whether you appear in it.<\/p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Google Business Profile categories, services, and photo cadence<\/li>\n\t\t\t\t\t\t<li>Service and city pages written for the query, not for a keyword count<\/li>\n\t\t\t\t\t\t<li>Name, address, and phone consistent across every directory listing<\/li>\n\t\t\t\t\t\t<li>Review generation built into the job workflow<\/li>\n\t\t\t\t\t\t<li>Schema markup so search engines can read the service area and the offers<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/article>\n\n\t\t\t\t<article class=\"sd-item\">\n\t\t\t\t\t<h3>Websites and landing pages<\/h3>\n\t\t\t\t\t<p>Paid traffic sent to a homepage leaks. Each campaign gets a page written to\n\t\t\t\t\tthe exact search intent behind it, which also lifts Quality Score.<\/p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>One dedicated page per campaign, no navigation, one action<\/li>\n\t\t\t\t\t\t<li>Phone as the primary call to action, click-to-call on mobile<\/li>\n\t\t\t\t\t\t<li>Short quote form: name, date, vehicle or job type, route or address<\/li>\n\t\t\t\t\t\t<li>Licence, insurance, and review proof above the fold<\/li>\n\t\t\t\t\t\t<li>Mobile-first build &mdash; most local service clicks arrive on a phone<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/article>\n\n\t\t\t\t<article class=\"sd-item\">\n\t\t\t\t\t<h3>Conversion tracking and reporting<\/h3>\n\t\t\t\t\t<p>A call is not a booking and a form fill is not revenue. Tracking is set up so\n\t\t\t\t\tthe numbers in the report mean something on the bank statement.<\/p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Google Tag Manager setup for calls and form submissions<\/li>\n\t\t\t\t\t\t<li>Call tracking so ad-driven calls are separated from everything else<\/li>\n\t\t\t\t\t\t<li>Payment-system reconciliation where the client grants read-only access<\/li>\n\t\t\t\t\t\t<li>One report by the fifth of each month, in plain language<\/li>\n\t\t\t\t\t\t<li>Every figure carries its date range and its source system<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/article>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/section>\n\n\t<!-- ===================== INDUSTRIES ===================== -->\n\t<section class=\"sd-section sd-section--chalk\" id=\"industries\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<div class=\"sd-head\">\n\t\t\t\t<h2>Specialists in ground transportation marketing, working across local service industries<\/h2>\n\t\t\t\t<p class=\"sd-lede\">\n\t\t\t\t\tGround transportation is where the founder operates and where the published proof\n\t\t\t\t\tcomes from. The same paid search and local SEO method works for any business that\n\t\t\t\t\tlives on inbound calls and booked appointments.\n\t\t\t\t<\/p>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-grid sd-grid--2\">\n\t\t\t\t<article class=\"sd-item sd-item--lead\">\n\t\t\t\t\t<p class=\"sd-label\">Specialization<\/p>\n\t\t\t\t\t<h3>Ground transportation marketing<\/h3>\n\t\t\t\t\t<p>Limousine, black car, chauffeur, airport transfer, shuttle, executive transport,\n\t\t\t\t\tparty bus, and wine tour operators. This is the founder&rsquo;s own industry, and the\n\t\t\t\t\taccount on this page is a ground transportation account.<\/p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Airport transfer, corporate travel, wine tour, and wedding campaigns run separately<\/li>\n\t\t\t\t\t\t<li>Brand defence so competitors stop buying your company name<\/li>\n\t\t\t\t\t\t<li>Booking-engine and quote-form tracking, not just click counts<\/li>\n\t\t\t\t\t\t<li>Fleet and hourly rate pages that answer the price question before the call<\/li>\n\t\t\t\t\t\t<li>Seasonality handled deliberately &mdash; prom, cruise season, corporate Q4<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/article>\n\n\t\t\t\t<article class=\"sd-item\">\n\t\t\t\t\t<p class=\"sd-label\">Second focus<\/p>\n\t\t\t\t\t<h3>Home services marketing<\/h3>\n\t\t\t\t\t<p>HVAC, plumbing, electrical, roofing, remodelling, cleaning, pest control, and\n\t\t\t\t\tlandscaping companies where the owner still answers the phone.<\/p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Emergency and same-day intent separated from planned-project intent<\/li>\n\t\t\t\t\t\t<li>Service-area targeting to the zip codes you will actually drive to<\/li>\n\t\t\t\t\t\t<li>Call tracking that shows which keyword produced which booked job<\/li>\n\t\t\t\t\t\t<li>Map pack work alongside paid search, so you hold both results<\/li>\n\t\t\t\t\t\t<li>Seasonal budget shifts planned before the season, not during it<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/article>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-more\">\n\t\t\t\t<h3>Other local service industries we take on<\/h3>\n\t\t\t\t<p>The method transfers wherever a phone call or a booked appointment is the sale.\n\t\t\t\tIf your industry is on this list, the campaign structure changes and the arithmetic\n\t\t\t\tdoes not.<\/p>\n\t\t\t\t<ul class=\"sd-areas\">\n\t\t\t\t\t<li>Moving and storage<\/li>\n\t\t\t\t\t<li>Auto repair and detailing<\/li>\n\t\t\t\t\t<li>Towing and roadside<\/li>\n\t\t\t\t\t<li>Event venues and catering<\/li>\n\t\t\t\t\t<li>Wedding services<\/li>\n\t\t\t\t\t<li>Photography and video<\/li>\n\t\t\t\t\t<li>Dental and orthodontics<\/li>\n\t\t\t\t\t<li>Med spas and aesthetics<\/li>\n\t\t\t\t\t<li>Chiropractic and physical therapy<\/li>\n\t\t\t\t\t<li>Veterinary and pet services<\/li>\n\t\t\t\t\t<li>Law firms<\/li>\n\t\t\t\t\t<li>Accounting and bookkeeping<\/li>\n\t\t\t\t\t<li>Real estate and property management<\/li>\n\t\t\t\t\t<li>Fitness studios and gyms<\/li>\n\t\t\t\t\t<li>Security and locksmith<\/li>\n\t\t\t\t\t<li>Waste removal and junk hauling<\/li>\n\t\t\t\t<\/ul>\n\t\t\t\t<p class=\"sd-note\">\n\t\t\t\t\tWhere an industry sits outside these, the first conversation is about whether the\n\t\t\t\t\tmethod fits &mdash; not a pitch. Some businesses do not run on search, and saying so\n\t\t\t\t\tearly costs less than finding out in month three.\n\t\t\t\t<\/p>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/section>\n\n\t<!-- ===================== PROCESS ===================== -->\n\t<section class=\"sd-section\" id=\"process\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<div class=\"sd-head\">\n\t\t\t\t<h2>The first 90 days<\/h2>\n\t\t\t\t<p class=\"sd-lede\">\n\t\t\t\t\tSmart Bidding needs roughly 30 to 50 conversions per campaign each month before it\n\t\t\t\t\toptimises reliably. Until then the account is managed by hand.\n\t\t\t\t<\/p>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-steps\">\n\t\t\t\t<div class=\"sd-step\">\n\t\t\t\t\t<h3>Access and kickoff<\/h3>\n\t\t\t\t\t<p>Day 1. Access granted through each platform&rsquo;s own sharing workflow &mdash; no\n\t\t\t\t\tpasswords change hands. Campaign targets, keywords, and start date confirmed in writing.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"sd-step\">\n\t\t\t\t\t<h3>Build and launch<\/h3>\n\t\t\t\t\t<p>Days 3 to 7. Architecture approved before anything goes live. Copy written,\n\t\t\t\t\textensions built, conversion tracking verified, campaigns activated.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"sd-step\">\n\t\t\t\t\t<h3>Train and prune<\/h3>\n\t\t\t\t\t<p>Month 2. Search terms reviewed on the plan&rsquo;s cadence, waste blocked,\n\t\t\t\t\tbids adjusted by device, hour, and geography as the data arrives.<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"sd-step\">\n\t\t\t\t\t<h3>Optimise and report<\/h3>\n\t\t\t\t\t<p>Month 3. Budget moves to the campaigns producing booked work. The 90-day report\n\t\t\t\t\tshows the trend line, the spend, and what changes next.<\/p>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/section>\n\n\t<!-- ===================== BUDGET RAMP ===================== -->\n\t<section class=\"sd-section sd-section--chalk\" id=\"ramp\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<div class=\"sd-head\">\n\t\t\t\t<h2>Watch the budget ramp<\/h2>\n\t\t\t\t<p class=\"sd-lede\">\n\t\t\t\t\tSpend starts small and steps up 20% a month, but only after the previous month\n\t\t\t\t\tearns it. Drag the slider to see where a starting budget lands.\n\t\t\t\t<\/p>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-ramp\">\n\t\t\t\t<div class=\"sd-ramp__control\">\n\t\t\t\t\t<div class=\"sd-field\">\n\t\t\t\t\t\t<label for=\"ramp-start\">Starting daily budget<\/label>\n\t\t\t\t\t\t<div class=\"sd-field__wrap\"><span>$<\/span>\n\t\t\t\t\t\t\t<input type=\"number\" id=\"ramp-start\" value=\"100\" min=\"20\" step=\"10\" inputmode=\"decimal\"><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<label for=\"ramp-month\" class=\"sd-ramp__slabel\">Month <strong id=\"ramp-num\">1<\/strong> of 6<\/label>\n\t\t\t\t\t<input type=\"range\" id=\"ramp-month\" min=\"1\" max=\"6\" value=\"1\" step=\"1\" class=\"sd-range\">\n\t\t\t\t\t<div class=\"sd-ramp__ticks\"><span>1<\/span><span>2<\/span><span>3<\/span><span>4<\/span><span>5<\/span><span>6<\/span><\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t<div class=\"sd-ramp__out\">\n\t\t\t\t\t<span class=\"sd-label\">This month<\/span>\n\t\t\t\t\t<p class=\"sd-ramp__big\" id=\"ramp-daily\">$100<span>\/day<\/span><\/p>\n\t\t\t\t\t<div class=\"sd-ramp__pair\">\n\t\t\t\t\t\t<div><span class=\"sd-calc__label\">Monthly spend<\/span><strong id=\"ramp-monthly\">$3,000<\/strong><\/div>\n\t\t\t\t\t\t<div><span class=\"sd-calc__label\">Spent to date<\/span><strong id=\"ramp-total\">$3,000<\/strong><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<p class=\"sd-ramp__milestone\" id=\"ramp-note\">Launch &mdash; build and seed the account.<\/p>\n\t\t\t\t\t<p class=\"sd-calc__fine\">Each step needs your confirmation first. Budget never rises on its own, and ad spend is billed by Google to your card, never marked up.<\/p>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/section>\n\n\t<!-- ===================== BRIEF ===================== -->\n\t<section class=\"sd-section\" id=\"brief\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<div class=\"sd-head\">\n\t\t\t\t<p class=\"sd-label\">Before anything gets built<\/p>\n\t\t\t\t<h2>The brief is filled on a call, not emailed over for you to complete alone<\/h2>\n\t\t\t\t<p class=\"sd-lede\">\n\t\t\t\t\tMost agencies send a questionnaire and disappear for two weeks. Nothing gets\n\t\t\t\t\tdesigned here until a short list of questions has real answers, and those answers\n\t\t\t\t\tcome out of a conversation with the account lead.\n\t\t\t\t<\/p>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-fit\">\n\t\t\t\t<div>\n\t\t\t\t\t<h3>What gets agreed before work starts<\/h3>\n\t\t\t\t\t<ul class=\"sd-fit--yes\">\n\t\t\t\t\t\t<li>The one sentence a viewer should be able to repeat afterwards<\/li>\n\t\t\t\t\t\t<li>The single figure the piece may show, with its date range and source<\/li>\n\t\t\t\t\t\t<li>Where it will be seen, and what the viewer is doing when they see it<\/li>\n\t\t\t\t\t\t<li>What the piece must never make someone feel<\/li>\n\t\t\t\t\t\t<li>Claims that are off-limits, written down rather than assumed<\/li>\n\t\t\t\t\t\t<li>How success gets measured, and the date it gets checked<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<div>\n\t\t\t\t\t<h3>What that avoids<\/h3>\n\t\t\t\t\t<ul class=\"sd-fit--yes\">\n\t\t\t\t\t\t<li>One named approver, so revisions do not arrive from four directions<\/li>\n\t\t\t\t\t\t<li>A fixed number of review rounds, agreed at the start<\/li>\n\t\t\t\t\t\t<li>Missing photography flagged early, with an owner and a date<\/li>\n\t\t\t\t\t\t<li>Every published figure carrying its window and its source system<\/li>\n\t\t\t\t\t\t<li>No campaign built on a goal nobody wrote down<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/section>\n\n\t<!-- ===================== STANCE ===================== -->\n\t<section class=\"sd-section sd-section--onyx sd-stance\" id=\"stance\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<p class=\"sd-label\">What this replaces<\/p>\n\t\t\t<h2 class=\"sd-stance__head\">The industry sells activity. Owners pay for jobs.<\/h2>\n\n\t\t\t<ul class=\"sd-stance__list\">\n\t\t\t\t<li>\n\t\t\t\t\t<span class=\"sd-stance__out\">A dashboard screenshot<\/span>\n\t\t\t\t\t<span class=\"sd-stance__in\">The account, the window, the method<\/span>\n\t\t\t\t<\/li>\n\t\t\t\t<li>\n\t\t\t\t\t<span class=\"sd-stance__out\">Impressions and reach<\/span>\n\t\t\t\t\t<span class=\"sd-stance__in\">Phone calls that became paid work<\/span>\n\t\t\t\t<\/li>\n\t\t\t\t<li>\n\t\t\t\t\t<span class=\"sd-stance__out\">A number with no date on it<\/span>\n\t\t\t\t\t<span class=\"sd-stance__in\">Every figure carrying its measurement window<\/span>\n\t\t\t\t<\/li>\n\t\t\t\t<li>\n\t\t\t\t\t<span class=\"sd-stance__out\">&ldquo;Our ads grew their revenue&rdquo;<\/span>\n\t\t\t\t\t<span class=\"sd-stance__in\">Revenue rose in the same period. Correlation, stated as correlation.<\/span>\n\t\t\t\t<\/li>\n\t\t\t\t<li>\n\t\t\t\t\t<span class=\"sd-stance__out\">A retainer you cannot compare<\/span>\n\t\t\t\t\t<span class=\"sd-stance__in\">Three fees, published, on this page<\/span>\n\t\t\t\t<\/li>\n\t\t\t<\/ul>\n\n\t\t\t<p class=\"sd-stance__close\">\n\t\t\t\tNone of this is a promise about results. It is a description of what gets reported,\n\t\t\t\twhich is the only part any agency actually controls.\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/section>\n\n\t<!-- ===================== PRICING ===================== -->\n\t<section class=\"sd-section sd-section--chalk\" id=\"pricing\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<div class=\"sd-head\">\n\t\t\t\t<h2>Management pricing<\/h2>\n\t\t\t\t<p class=\"sd-lede\">\n\t\t\t\t\tManagement fees are published because an owner should be able to compare them\n\t\t\t\t\twithout a call. Ad spend is separate, billed by Google to your card, and never marked up.\n\t\t\t\t<\/p>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-plans\">\n\t\t\t\t<article class=\"sd-plan\">\n\t\t\t\t\t<h3 class=\"sd-plan__name\">Standard<\/h3>\n\t\t\t\t\t<p class=\"sd-plan__price\">$750<span> \/ month<\/span><\/p>\n\t\t\t\t\t<p class=\"sd-plan__terms\">Month-to-month &middot; 30-day notice<\/p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Full campaign build and keyword research<\/li>\n\t\t\t\t\t\t<li>Conversion tracking and tag management<\/li>\n\t\t\t\t\t\t<li>WordPress site kept aligned with ad messaging<\/li>\n\t\t\t\t\t\t<li>Check-ins twice a month<\/li>\n\t\t\t\t\t\t<li>Monthly report by the fifth<\/li>\n\t\t\t\t\t\t<li>Landing pages at $1,000 per page<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/article>\n\n\t\t\t\t<article class=\"sd-plan sd-plan--featured\">\n\t\t\t\t\t<span class=\"sd-plan__flag\">Most chosen<\/span>\n\t\t\t\t\t<h3 class=\"sd-plan__name\">Growth<\/h3>\n\t\t\t\t\t<p class=\"sd-plan__price\">$1,500<span> \/ month<\/span><\/p>\n\t\t\t\t\t<p class=\"sd-plan__terms\">12-month term &middot; rate locked for the term<\/p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Everything in Standard<\/li>\n\t\t\t\t\t\t<li>Four landing pages included &mdash; a $4,000 build<\/li>\n\t\t\t\t\t\t<li>Weekly check-ins and weekly search-term audits<\/li>\n\t\t\t\t\t\t<li>One page per campaign, matched to search intent<\/li>\n\t\t\t\t\t\t<li>Pages delivered within 45 days of kickoff<\/li>\n\t\t\t\t\t\t<li>No price increase during the term<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/article>\n\n\t\t\t\t<article class=\"sd-plan\">\n\t\t\t\t\t<h3 class=\"sd-plan__name\">Premium<\/h3>\n\t\t\t\t\t<p class=\"sd-plan__price\">$2,000<span> \/ month<\/span><\/p>\n\t\t\t\t\t<p class=\"sd-plan__terms\">Month-to-month &middot; daily management<\/p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Everything in Standard<\/li>\n\t\t\t\t\t\t<li>Search terms reviewed daily, waste blocked within 24 hours<\/li>\n\t\t\t\t\t\t<li>A\/B ad copy testing running continuously<\/li>\n\t\t\t\t\t\t<li>Check-ins twice a week<\/li>\n\t\t\t\t\t\t<li>Priority Slack channel, reply within 4 business hours<\/li>\n\t\t\t\t\t\t<li>Landing pages at $1,000 per page<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/article>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-dots\" id=\"plan-dots\" role=\"tablist\" aria-label=\"Choose a plan to view\"><\/div>\n\n\t\t\t<p class=\"sd-note\" style=\"margin-top:1.75rem;max-width:72ch;\">\n\t\t\t\tNo setup fee on any plan. Campaigns, keywords, copy, and conversion data stay in\n\t\t\t\tyour Google Ads account and remain yours if the engagement ends. We do not promise\n\t\t\t\tresults, rankings, or revenue &mdash; any agency that does is guessing.\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/section>\n\n\t<!-- ===================== FIT ===================== -->\n\t<section class=\"sd-section\" id=\"fit\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<div class=\"sd-head\">\n\t\t\t\t<h2>Who this is for<\/h2>\n\t\t\t\t<p class=\"sd-lede\">Turning away the wrong fit is what keeps the promise workable for the right one.<\/p>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-fit\">\n\t\t\t\t<div>\n\t\t\t\t\t<h3>Built for<\/h3>\n\t\t\t\t\t<ul class=\"sd-fit--yes\">\n\t\t\t\t\t\t<li>Owner-operated local service businesses<\/li>\n\t\t\t\t\t\t<li>$250K to $3M in annual revenue<\/li>\n\t\t\t\t\t\t<li>2 to 20 employees<\/li>\n\t\t\t\t\t\t<li>Local service businesses that run on inbound calls<\/li>\n\t\t\t\t\t\t<li>The owner still answers the phone<\/li>\n\t\t\t\t\t\t<li>Burned by at least one agency already<\/li>\n\t\t\t\t\t\t<li>Ground transportation operators in any city<\/li>\n\t\t\t\t\t\t<li>Home service companies: HVAC, plumbing, roofing, electrical<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<div>\n\t\t\t\t\t<h3>Not for<\/h3>\n\t\t\t\t\t<ul class=\"sd-fit--no\">\n\t\t\t\t\t\t<li>Anyone shopping purely on the cheapest retainer<\/li>\n\t\t\t\t\t\t<li>Anyone who wants results promised in advance<\/li>\n\t\t\t\t\t\t<li>National brands with in-house media teams<\/li>\n\t\t\t\t\t\t<li>Businesses unwilling to track their own calls<\/li>\n\t\t\t\t\t\t<li>Owners who want reporting they never read<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/section>\n\n\t<!-- ===================== FAQ (mirrors the FAQPage schema) ===================== -->\n\t<section class=\"sd-section sd-section--chalk\" id=\"faq\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<div class=\"sd-head\">\n\t\t\t\t<h2>Questions owners ask first<\/h2>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-faq\">\n\t\t\t\t<details>\n\t\t\t\t\t<summary>What does a Google Ads management company charge?<\/summary>\n\t\t\t\t\t<p>Saywa Digital charges $750, $1,500, or $2,000 a month depending on cadence and\n\t\t\t\t\twhat is included. Ad spend is separate and billed by Google directly to your card.\n\t\t\t\t\tWe do not take a percentage of ad spend and we do not mark it up.<\/p>\n\t\t\t\t<\/details>\n\t\t\t\t<details>\n\t\t\t\t\t<summary>How much ad spend does a limo or home service company need to start?<\/summary>\n\t\t\t\t\t<p>A typical start is $100 a day, or about $3,000 a month, increased roughly 20% a\n\t\t\t\t\tmonth once the account has data and you confirm the step up. Below that, a search\n\t\t\t\t\tcampaign in a competitive metro rarely collects enough conversions for bidding to learn.<\/p>\n\t\t\t\t<\/details>\n\t\t\t\t<details>\n\t\t\t\t\t<summary>Do you work with limousine and black car companies specifically?<\/summary>\n\t\t\t\t\t<p>Yes. The founder owns and operates a Seattle-area ground transportation business,\n\t\t\t\t\tso the campaign structure, the seasonality, and the booking flow are familiar\n\t\t\t\t\tterritory rather than a research project.<\/p>\n\t\t\t\t<\/details>\n\t\t\t\t<details>\n\t\t\t\t\t<summary>Are you a client of All Black Limo, or is it a case study?<\/summary>\n\t\t\t\t\t<p>Neither. All Black Limo is a separate business owned by the same founder. It is\n\t\t\t\t\tthe account this agency was built on and still runs, and it is labelled\n\t\t\t\t\tfounder-owned every time it appears.<\/p>\n\t\t\t\t<\/details>\n\t\t\t\t<details>\n\t\t\t\t\t<summary>Can you guarantee a number of leads or a first-page ranking?<\/summary>\n\t\t\t\t\t<p>No, and nobody can. What is committed to is the method and the reporting: what\n\t\t\t\t\twas spent, what it produced, and how it was measured, with the date range attached\n\t\t\t\t\tto every figure.<\/p>\n\t\t\t\t<\/details>\n\t\t\t\t<details>\n\t\t\t\t\t<summary>What access do you need?<\/summary>\n\t\t\t\t\t<p>Google Ads admin, Google Analytics 4 read-only, Google Tag Manager admin,\n\t\t\t\t\tWordPress admin, and read-only access to your payment system where revenue\n\t\t\t\t\treconciliation is in scope. Everything is granted through each platform&rsquo;s own\n\t\t\t\t\tsharing workflow and can be revoked from your settings at any time.<\/p>\n\t\t\t\t<\/details>\n\t\t\t\t<details>\n\t\t\t\t\t<summary>Do you only work with businesses in Washington?<\/summary>\n\t\t\t\t\t<p>No. Saywa Digital is based in the Seattle&ndash;Tacoma area and meets local clients\n\t\t\t\t\tin person, but ad accounts, call tracking, and reporting run identically at a\n\t\t\t\t\tdistance. Ground transportation operators in particular are worked with anywhere\n\t\t\t\t\tin the United States.<\/p>\n\t\t\t\t<\/details>\n\t\t\t\t<details>\n\t\t\t\t\t<summary>Which areas do you cover in person?<\/summary>\n\t\t\t\t\t<p>University Place, Tacoma, Gig Harbor, Lakewood, Puyallup, Federal Way, Olympia,\n\t\t\t\t\tAuburn, Kent, and Seattle, Washington.<\/p>\n\t\t\t\t<\/details>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/section>\n\n\t<!-- ===================== SERVICE AREA ===================== -->\n\t<section class=\"sd-section\" id=\"areas\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<figure class=\"sd-band sd-band--inset\">\n\t\t\t\t<img loading=\"lazy\" src=\"https:\/\/saywadigital.com\/wp-content\/uploads\/2026\/09\/Sitting-at-Office.jpeg\" alt=\"Working at a desk\"\n\t\t\t\t     loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\">\n\t\t\t<\/figure>\n\n\t\t\t<div class=\"sd-head\">\n\t\t\t\t<h2>Where we work<\/h2>\n\t\t\t\t<p class=\"sd-lede\">Based in the Seattle&ndash;Tacoma area, working with operators across the United States.<\/p>\n\t\t\t<\/div>\n\n\t\t\t<div class=\"sd-grid sd-grid--2\">\n\t\t\t\t<div class=\"sd-item\">\n\t\t\t\t\t<h3>In person, around Puget Sound<\/h3>\n\t\t\t\t\t<p>Kickoffs at your shop, photos of your actual vehicles and crews, and a working\n\t\t\t\t\tknowledge of the local auction.<\/p>\n\t\t\t\t\t<ul class=\"sd-areas\">\n\t\t\t\t\t\t<li>University Place<\/li>\n\t\t\t\t\t\t<li>Tacoma<\/li>\n\t\t\t\t\t\t<li>Gig Harbor<\/li>\n\t\t\t\t\t\t<li>Lakewood<\/li>\n\t\t\t\t\t\t<li>Puyallup<\/li>\n\t\t\t\t\t\t<li>Federal Way<\/li>\n\t\t\t\t\t\t<li>Olympia<\/li>\n\t\t\t\t\t\t<li>Auburn<\/li>\n\t\t\t\t\t\t<li>Kent<\/li>\n\t\t\t\t\t\t<li>Seattle<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"sd-item\">\n\t\t\t\t\t<h3>Remote, anywhere in the United States<\/h3>\n\t\t\t\t\t<p>Ground transportation is a national niche. An operator in Portland, Denver, or\n\t\t\t\t\tNashville runs the same campaign structure, the same booking flow, and the same\n\t\t\t\t\tseasonality as one in Seattle.<\/p>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li>Kickoff and check-ins by video, on your plan&rsquo;s cadence<\/li>\n\t\t\t\t\t\t<li>Same monthly report, same stated measurement window<\/li>\n\t\t\t\t\t\t<li>Local competitor and auction research done for your metro, not ours<\/li>\n\t\t\t\t\t\t<li>Slack channel on the Premium plan, regardless of time zone<\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/section>\n\n\t<!-- ===================== CTA ===================== -->\n\t<section class=\"sd-section sd-section--onyx\" id=\"contact\">\n\t\t<div class=\"sd-shell sd-cta__grid\">\n\t\t\t<div>\n\t\t\t\t<h2>Twenty minutes, your account open on the screen<\/h2>\n\t\t\t\t<p class=\"sd-lede\">\n\t\t\t\t\tBring your Google Ads account and last month&rsquo;s numbers. You will leave knowing\n\t\t\t\t\twhere the spend is going, whether the tracking is telling the truth, and what the\n\t\t\t\t\tfirst fix would be &mdash; whether or not you hire anyone.\n\t\t\t\t<\/p>\n\t\t\t\t<div class=\"sd-actions\">\n\t\t\t\t\t<a class=\"sd-btn sd-btn--primary\" href=\"tel:+12533428091\">Call (253) 342-8091<\/a>\n\t\t\t\t\t<a class=\"sd-btn sd-btn--ghost\" href=\"mailto:hello@saywadigital.com?subject=Account%20review%20request&amp;body=Business%20name%3A%0ACity%3A%0AServices%20I%20want%20more%20of%3A%0ACurrent%20monthly%20ad%20spend%3A%0A%0AAnything%20else%3A%0A\">Email us<\/a>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<div>\n\t\t\t\t<!-- Elementor: drop a Form widget here instead of this comment. -->\n\t\t\t\t<p class=\"sd-label\">What to bring<\/p>\n\t\t\t\t<p class=\"sd-note\">Read-only access to the Google Ads account is enough. Last month&rsquo;s\n\t\t\t\tspend, clicks, and booking numbers if they are to hand. And twenty minutes where the\n\t\t\t\tscreen can actually be looked at together.<\/p>\n\t\t\t\t<p class=\"sd-label\" style=\"margin-top:1.5rem;\">Or send an email<\/p>\n\t\t\t\t<p class=\"sd-note\">Business name, city, the services you want more of, and current\n\t\t\t\tmonthly ad spend if there is one. That is enough to know whether this is a fit.<\/p>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/section>\n\n\t<footer class=\"sd-footer\">\n\t\t<div class=\"sd-shell\">\n\t\t\t<div class=\"sd-footer__grid\">\n\t\t\t\t<div class=\"sd-footer__logo\">\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/saywadigital.com\/wp-content\/uploads\/2026\/09\/saywa-lockup-reversed-scaled.png\"\n\t\t\t\t\t     width=\"180\" height=\"52\" alt=\"Saywa Digital\">\n\t\t\t\t\t<address>\n\t\t\t\t\t\t2107 69th Ave West J102<br>\n\t\t\t\t\t\tUniversity Place, WA 98466<br>\n\t\t\t\t\t\t<a href=\"tel:+12533428091\">(253) 342-8091<\/a><br>\n\t\t\t\t\t\t<a href=\"mailto:hello@saywadigital.com\">hello@saywadigital.com<\/a>\n\t\t\t\t\t<\/address>\n\t\t\t\t<\/div>\n\t\t\t\t<div>\n\t\t\t\t\t<h4>Services<\/h4>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a href=\"#services\">Google Ads management<\/a><\/li>\n\t\t\t\t\t\t<li><a href=\"#services\">Local SEO<\/a><\/li>\n\t\t\t\t\t\t<li><a href=\"#services\">Websites and landing pages<\/a><\/li>\n\t\t\t\t\t\t<li><a href=\"#services\">Conversion tracking<\/a><\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<div>\n\t\t\t\t\t<h4>Industries<\/h4>\n\t\t\t\t\t<ul>\n\t\t\t\t\t\t<li><a href=\"#industries\">Limousine and black car<\/a><\/li>\n\t\t\t\t\t\t<li><a href=\"#industries\">Airport transfer and shuttle<\/a><\/li>\n\t\t\t\t\t\t<li><a href=\"#industries\">HVAC, plumbing and roofing<\/a><\/li>\n\t\t\t\t\t\t<li><a href=\"#industries\">Dental, legal and professional<\/a><\/li>\n\t\t\t\t\t\t<li><a href=\"#industries\">Events, venues and catering<\/a><\/li>\n\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<div class=\"sd-footer__base\">\n\t\t\t\t<p>&copy; 2026 Saywa Digital. All performance figures carry their measurement window.<\/p>\n\t\t\t\t<span>&ldquo;We spend our own money on this first.&rdquo;<\/span>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/footer>\n\n<script>\n(function () {\n\tvar reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n\t\/* -- Calculator ------------------------------------------------------- *\/\n\tvar f = ['calc-spend', 'calc-leads', 'calc-close', 'calc-value'].map(function (id) {\n\t\treturn document.getElementById(id);\n\t});\n\tvar money = function (n) {\n\t\treturn '$' + n.toLocaleString('en-US', { maximumFractionDigits: n < 100 ? 2 : 0 });\n\t};\n\n\tfunction run() {\n\t\tvar spend = parseFloat(f[0].value) || 0,\n\t\t    leads = parseFloat(f[1].value) || 0,\n\t\t    close = (parseFloat(f[2].value) || 0) \/ 100,\n\t\t    value = parseFloat(f[3].value) || 0;\n\t\tif (!leads) { return; }\n\n\t\tvar jobs = leads * close,\n\t\t    cpl  = spend \/ leads,\n\t\t    cpj  = jobs ? spend \/ jobs : 0,\n\t\t    rev  = jobs * value,\n\t\t    ret  = spend ? rev \/ spend : 0;\n\n\t\tdocument.getElementById('out-cpl').textContent = money(cpl);\n\t\tdocument.getElementById('out-cpj').textContent = jobs ? money(cpj) : '\u2014';\n\t\tdocument.getElementById('out-rev').textContent = money(rev);\n\t\tdocument.getElementById('out-ret').textContent = ret.toFixed(1) + '\u00d7';\n\n\t\tvar v = document.getElementById('out-verdict'), msg;\n\t\tif (!jobs) {\n\t\t\tmsg = 'At a 0% close rate the channel cannot pay for itself, whatever the spend.';\n\t\t} else if (cpj > value) {\n\t\t\tmsg = 'Every booked job is costing more than it is worth at this close rate. The problem is upstream of the ad budget.';\n\t\t} else if (ret < 2) {\n\t\t\tmsg = 'The channel is covering itself but not much more. Worth finding out where the spend is leaking before adding to it.';\n\t\t} else {\n\t\t\tmsg = 'The arithmetic works at this close rate. Whether it holds as spend rises is the real question.';\n\t\t}\n\t\tv.textContent = msg;\n\t}\n\tf.forEach(function (el) { el && el.addEventListener('input', run); });\n\tif (f[0]) { run(); }\n\n\t\/* -- Proof figures count once, on first view -------------------------- *\/\n\tvar vals = document.querySelectorAll('.sd-metric__value');\n\tif (!reduce && vals.length && 'IntersectionObserver' in window) {\n\t\tvar io = new IntersectionObserver(function (entries) {\n\t\t\tentries.forEach(function (e) {\n\t\t\t\tif (!e.isIntersecting) { return; }\n\t\t\t\tio.unobserve(e.target);\n\t\t\t\tvar el = e.target,\n\t\t\t\t    raw = el.textContent.trim(),\n\t\t\t\t    num = parseFloat(raw.replace(\/[^0-9.]\/g, ''));\n\t\t\t\tif (isNaN(num)) { return; }\n\t\t\t\tvar pre = raw.indexOf('$') === 0 ? '$' : '',\n\t\t\t\t    suf = raw.indexOf('%') > -1 ? '%' : '',\n\t\t\t\t    dec = (raw.split('.')[1] || '').replace('%', '').length,\n\t\t\t\t    t0 = null;\n\t\t\t\tfunction tick(t) {\n\t\t\t\t\tif (!t0) { t0 = t; }\n\t\t\t\t\tvar k = Math.min((t - t0) \/ 900, 1),\n\t\t\t\t\t    e2 = 1 - Math.pow(1 - k, 3);\n\t\t\t\t\tel.textContent = pre + (num * e2).toLocaleString('en-US', {\n\t\t\t\t\t\tminimumFractionDigits: dec, maximumFractionDigits: dec\n\t\t\t\t\t}) + suf;\n\t\t\t\t\tif (k < 1) { requestAnimationFrame(tick); }\n\t\t\t\t}\n\t\t\t\trequestAnimationFrame(tick);\n\t\t\t});\n\t\t}, { threshold: 0.4 });\n\t\tvals.forEach(function (el) { io.observe(el); });\n\t}\n}());\n<\/script>\n\n<script>\n(function () {\n\tvar start = document.getElementById('ramp-start'),\n\t    month = document.getElementById('ramp-month');\n\tif (!start || !month) { return; }\n\n\tvar notes = [\n\t\t'Launch \u2014 build and seed the account.',\n\t\t'First optimisation cycle, negatives tightened.',\n\t\t'Conversion data building, click-through rate improving.',\n\t\t'Smart Bidding introduced, the account starts self-optimising.',\n\t\t'Scale what is working, pause what is not.',\n\t\t'Fully optimised \u2014 review and set the next target.'\n\t];\n\tvar m0 = function (n) { return '$' + Math.round(n).toLocaleString('en-US'); };\n\n\tfunction draw() {\n\t\tvar base = parseFloat(start.value) || 0,\n\t\t    m = parseInt(month.value, 10),\n\t\t    daily = base * Math.pow(1.2, m - 1),\n\t\t    total = 0, i;\n\t\tfor (i = 0; i < m; i++) { total += base * Math.pow(1.2, i) * 30; }\n\n\t\tdocument.getElementById('ramp-num').textContent = m;\n\t\tdocument.getElementById('ramp-daily').innerHTML = m0(daily) + '<span>\/day<\/span>';\n\t\tdocument.getElementById('ramp-monthly').textContent = m0(daily * 30);\n\t\tdocument.getElementById('ramp-total').textContent = m0(total);\n\t\tdocument.getElementById('ramp-note').textContent = notes[m - 1];\n\t\tmonth.style.setProperty('--fill', ((m - 1) \/ 5 * 100) + '%');\n\t}\n\tstart.addEventListener('input', draw);\n\tmonth.addEventListener('input', draw);\n\tdraw();\n}());\n<\/script>\n\n<script>\n\/* Phone only: fold each card's feature list behind a tap. The list stays in\n   the DOM either way, so nothing is hidden from crawlers. *\/\n(function () {\n\tvar mq = window.matchMedia('(max-width: 640px)'), done = false;\n\tfunction fold() {\n\t\tif (done || !mq.matches) { return; }\n\t\tdone = true;\n\t\tdocument.querySelectorAll('.sd-item > ul').forEach(function (ul) {\n\t\t\tvar d = document.createElement('details');\n\t\t\td.className = 'sd-fold';\n\t\t\tvar sm = document.createElement('summary');\n\t\t\tsm.textContent = 'What this includes';\n\t\t\tul.parentNode.insertBefore(d, ul);\n\t\t\td.appendChild(sm);\n\t\t\td.appendChild(ul);\n\t\t});\n\t}\n\tfold();\n\tmq.addEventListener ? mq.addEventListener('change', fold) : mq.addListener(fold);\n}());\n<\/script>\n\n<script>\n\/* Plan carousel dots. Built by script so the markup stays clean and the dots\n   never appear for people who are seeing all three cards anyway. *\/\n(function () {\n\tvar row = document.querySelector('.sd-plans'),\n\t    dots = document.getElementById('plan-dots');\n\tif (!row || !dots) { return; }\n\n\tvar cards = Array.prototype.slice.call(row.querySelectorAll('.sd-plan')),\n\t    names = cards.map(function (c) {\n\t    \tvar n = c.querySelector('.sd-plan__name');\n\t    \treturn n ? n.textContent.trim() : 'Plan';\n\t    }),\n\t    built = false;\n\n\tfunction build() {\n\t\tif (built) { return; }\n\t\tbuilt = true;\n\t\tcards.forEach(function (card, i) {\n\t\t\tvar b = document.createElement('button');\n\t\t\tb.type = 'button';\n\t\t\tb.setAttribute('aria-label', names[i] + ' plan');\n\t\t\tb.setAttribute('aria-current', i === 0 ? 'true' : 'false');\n\t\t\tb.addEventListener('click', function () {\n\t\t\t\tcard.scrollIntoView({\n\t\t\t\t\tbehavior: window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 'auto' : 'smooth',\n\t\t\t\t\tinline: 'center', block: 'nearest'\n\t\t\t\t});\n\t\t\t});\n\t\t\tdots.appendChild(b);\n\t\t});\n\t}\n\n\tfunction sync() {\n\t\tvar mid = row.scrollLeft + row.clientWidth \/ 2, best = 0, min = Infinity;\n\t\tcards.forEach(function (c, i) {\n\t\t\tvar d = Math.abs((c.offsetLeft + c.offsetWidth \/ 2) - mid);\n\t\t\tif (d < min) { min = d; best = i; }\n\t\t});\n\t\tArray.prototype.forEach.call(dots.children, function (b, i) {\n\t\t\tb.setAttribute('aria-current', i === best ? 'true' : 'false');\n\t\t});\n\t}\n\n\tbuild();\n\tvar tick;\n\trow.addEventListener('scroll', function () {\n\t\tif (tick) { return; }\n\t\ttick = requestAnimationFrame(function () { sync(); tick = null; });\n\t}, { passive: true });\n\twindow.addEventListener('resize', sync);\n\tsync();\n}());\n<\/script>\n\n<script>\n\/* Scroll reveal. The class is added by script, never in the markup, so if this\n   file fails to run nothing is left invisible \u2014 the page just renders static. *\/\n(function () {\n\tif (window.matchMedia('(prefers-reduced-motion: reduce)').matches) { return; }\n\tif (!('IntersectionObserver' in window)) { return; }\n\n\tvar sel = '.sd-head, .sd-item, .sd-step, .sd-plan, .sd-proof, .sd-calc, ' +\n\t          '.sd-ramp, .sd-faq details, .sd-fit > div, .sd-more, .sd-band, ' +\n\t          '.sd-areas, .sd-footer__grid > *';\n\n\tvar groups = {};\n\tdocument.querySelectorAll(sel).forEach(function (el) {\n\t\tif (el.closest('.sd-hero')) { return; }   \/* hero has its own entrance *\/\n\t\tel.classList.add('sd-reveal');\n\t\tvar sec = el.closest('section, footer') || document.body;\n\t\tvar key = Array.prototype.indexOf.call(document.body.children, sec);\n\t\tgroups[key] = groups[key] || 0;\n\t\tel.style.transitionDelay = Math.min(groups[key]++, 4) * 70 + 'ms';\n\t});\n\n\tvar io = new IntersectionObserver(function (entries) {\n\t\tentries.forEach(function (e) {\n\t\t\tif (!e.isIntersecting) { return; }\n\t\t\te.target.classList.add('sd-in');\n\t\t\tio.unobserve(e.target);\n\t\t});\n\t}, { rootMargin: '0px 0px -8% 0px', threshold: 0.08 });\n\n\tdocument.querySelectorAll('.sd-reveal').forEach(function (el) { io.observe(el); });\n\n\t\/* One orchestrated entrance for the hero, on load rather than on scroll. *\/\n\tvar hero = document.querySelector('.sd-hero');\n\tif (hero) {\n\t\thero.classList.add('sd-hero--enter');\n\t\trequestAnimationFrame(function () {\n\t\t\trequestAnimationFrame(function () { hero.classList.add('sd-in'); });\n\t\t});\n\t}\n}());\n<\/script>\n\n<script>\n\/* ---------------------------------------------------------------------------\n   Motion layer. Every class here is applied by script, so a failure leaves the\n   page fully visible and static rather than blank. All of it is skipped for\n   anyone who has asked their system for reduced motion.\n   ------------------------------------------------------------------------ *\/\n(function () {\n\tif (window.matchMedia('(prefers-reduced-motion: reduce)').matches) { return; }\n\tif (!('IntersectionObserver' in window)) { return; }\n\n\tvar root = document.querySelector('.sd-page');\n\tif (!root) { return; }\n\n\t\/* -- 1. Scroll progress, hairline, top of viewport -------------------- *\/\n\tvar bar = document.createElement('div');\n\tbar.className = 'sd-progress';\n\tbar.setAttribute('aria-hidden', 'true');\n\tdocument.body.appendChild(bar);\n\n\t\/* -- 2. Headlines resolve word by word -------------------------------- *\/\n\troot.querySelectorAll('h1, h2').forEach(function (h) {\n\t\tif (h.childElementCount) { return; }          \/* leave mixed markup alone *\/\n\t\tvar words = h.textContent.trim().split(\/\\s+\/);\n\t\tif (words.length > 26) { return; }\n\t\th.textContent = '';\n\t\th.classList.add('sd-words');\n\t\twords.forEach(function (w, i) {\n\t\t\tvar o = document.createElement('span'); o.className = 'sd-word';\n\t\t\tvar n = document.createElement('span'); n.className = 'sd-word__i';\n\t\t\tn.textContent = w;\n\t\t\tn.style.transitionDelay = Math.min(i * 42, 620) + 'ms';\n\t\t\to.appendChild(n); h.appendChild(o);\n\t\t\th.appendChild(document.createTextNode(' '));\n\t\t});\n\t});\n\n\t\/* -- 3. Figures count up the first time they are seen ------------------ *\/\n\tvar counters = root.querySelectorAll('.sd-metric__value, .sd-funnel__value, .sd-score__n');\n\n\tfunction countUp(el) {\n\t\tvar raw = el.textContent.trim();\n\t\tif (\/[a-z]\/i.test(raw.replace(\/[KkM\u00d7x]\/g, ''))) { return; }  \/* ranges, words: leave *\/\n\t\tvar num = parseFloat(raw.replace(\/[^0-9.]\/g, ''));\n\t\tif (isNaN(num) || num === 0) { return; }\n\t\tvar pre = raw.slice(0, raw.search(\/[0-9]\/)),\n\t\t    suf = raw.slice(raw.search(\/[0-9]\/)).replace(\/^[0-9.,]+\/, ''),\n\t\t    dec = ((raw.match(\/\\.(\\d+)\/) || [])[1] || '').length,\n\t\t    t0 = null;\n\t\tfunction tick(t) {\n\t\t\tif (!t0) { t0 = t; }\n\t\t\tvar k = Math.min((t - t0) \/ 1100, 1),\n\t\t\t    e = 1 - Math.pow(1 - k, 4);\n\t\t\tel.textContent = pre + (num * e).toLocaleString('en-US', {\n\t\t\t\tminimumFractionDigits: dec, maximumFractionDigits: dec\n\t\t\t}) + suf;\n\t\t\tif (k < 1) { requestAnimationFrame(tick); }\n\t\t}\n\t\trequestAnimationFrame(tick);\n\t}\n\n\t\/* -- 4. One observer drives reveals, counters and strike-throughs ------ *\/\n\tvar io = new IntersectionObserver(function (entries) {\n\t\tentries.forEach(function (e) {\n\t\t\tif (!e.isIntersecting) { return; }\n\t\t\te.target.classList.add('sd-in');\n\t\t\tif (e.target.matches('.sd-metric__value, .sd-funnel__value, .sd-score__n')) {\n\t\t\t\tcountUp(e.target);\n\t\t\t}\n\t\t\tio.unobserve(e.target);\n\t\t});\n\t}, { rootMargin: '0px 0px -6% 0px', threshold: 0.15 });\n\n\troot.querySelectorAll('.sd-words, .sd-stance__list li').forEach(function (el) { io.observe(el); });\n\tcounters.forEach(function (el) { io.observe(el); });\n\n\t\/* -- 5. Image bands drift against the scroll -------------------------- *\/\n\tvar bands = Array.prototype.slice.call(root.querySelectorAll('.sd-band img'));\n\tbands.forEach(function (img) { img.classList.add('sd-parallax'); });\n\n\tvar ticking = false;\n\tfunction frame() {\n\t\tvar vh = window.innerHeight;\n\t\tbands.forEach(function (img) {\n\t\t\tvar r = img.parentNode.getBoundingClientRect();\n\t\t\tif (r.bottom < -200 || r.top > vh + 200) { return; }\n\t\t\tvar p = (r.top + r.height \/ 2 - vh \/ 2) \/ vh;\n\t\t\timg.style.transform = 'translate3d(0,' + (p * -22).toFixed(2) + 'px,0) scale(1.1)';\n\t\t});\n\t\tbar.style.transform = 'scaleX(' + (\n\t\t\tdocument.documentElement.scrollTop \/\n\t\t\tMath.max(1, document.documentElement.scrollHeight - vh)\n\t\t).toFixed(4) + ')';\n\t\tticking = false;\n\t}\n\twindow.addEventListener('scroll', function () {\n\t\tif (ticking) { return; }\n\t\tticking = true;\n\t\trequestAnimationFrame(frame);\n\t}, { passive: true });\n\twindow.addEventListener('resize', frame);\n\tframe();\n}());\n<\/script>\n\n<\/main>\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": [\n        \"ProfessionalService\",\n        \"LocalBusiness\"\n      ],\n      \"@id\": \"https:\/\/saywadigital.com\/#organization\",\n      \"name\": \"Saywa Digital\",\n      \"url\": \"https:\/\/saywadigital.com\/\",\n      \"telephone\": \"+1-253-342-8091\",\n      \"email\": \"hello@saywadigital.com\",\n      \"description\": \"Marketing agency for ground transportation and home service companies. Google Ads management, local SEO, and websites. Based in the Seattle-Tacoma area, serving clients across the United States, with the measurement window attached to every reported figure.\",\n      \"slogan\": \"We spend our own money on this first.\",\n      \"logo\": {\n        \"@type\": \"ImageObject\",\n        \"url\": \"https:\/\/saywadigital.com\/wp-content\/uploads\/2026\/09\/saywa-lockup-scaled.png\"\n      },\n      \"image\": \"https:\/\/saywadigital.com\/wp-content\/uploads\/2026\/09\/saywa-lockup-scaled.png\",\n      \"address\": {\n        \"@type\": \"PostalAddress\",\n        \"streetAddress\": \"2107 69th Ave West J102\",\n        \"addressLocality\": \"University Place\",\n        \"addressRegion\": \"WA\",\n        \"postalCode\": \"98466\",\n        \"addressCountry\": \"US\"\n      },\n      \"geo\": {\n        \"@type\": \"GeoCoordinates\",\n        \"latitude\": \"47.2262\",\n        \"longitude\": \"-122.5504\"\n      },\n      \"priceRange\": \"$750 - $2,000 per month\",\n      \"areaServed\": [\n        {\n          \"@type\": \"City\",\n          \"name\": \"University Place, Washington\"\n        },\n        {\n          \"@type\": \"City\",\n          \"name\": \"Tacoma, Washington\"\n        },\n        {\n          \"@type\": \"City\",\n          \"name\": \"Gig Harbor, Washington\"\n        },\n        {\n          \"@type\": \"City\",\n          \"name\": \"Lakewood, Washington\"\n        },\n        {\n          \"@type\": \"City\",\n          \"name\": \"Puyallup, Washington\"\n        },\n        {\n          \"@type\": \"City\",\n          \"name\": \"Federal Way, Washington\"\n        },\n        {\n          \"@type\": \"City\",\n          \"name\": \"Olympia, Washington\"\n        },\n        {\n          \"@type\": \"City\",\n          \"name\": \"Auburn, Washington\"\n        },\n        {\n          \"@type\": \"City\",\n          \"name\": \"Kent, Washington\"\n        },\n        {\n          \"@type\": \"City\",\n          \"name\": \"Seattle, Washington\"\n        },\n        {\n          \"@type\": \"Country\",\n          \"name\": \"United States\"\n        }\n      ],\n      \"knowsAbout\": [\n        \"Google Ads management\",\n        \"Local SEO\",\n        \"Transportation marketing\",\n        \"Limousine and black car marketing\",\n        \"Home services marketing\",\n        \"Local service business marketing\",\n        \"Conversion tracking\"\n      ],\n      \"hasOfferCatalog\": {\n        \"@type\": \"OfferCatalog\",\n        \"name\": \"Marketing services\",\n        \"itemListElement\": [\n          {\n            \"@type\": \"Offer\",\n            \"itemOffered\": {\n              \"@type\": \"Service\",\n              \"name\": \"Google Ads Management\",\n              \"description\": \"Search campaign build, keyword research, negative keyword management, bid strategy, and conversion tracking for local service businesses.\",\n              \"provider\": {\n                \"@id\": \"https:\/\/saywadigital.com\/#organization\"\n              },\n              \"areaServed\": {\n                \"@type\": \"Country\",\n                \"name\": \"United States\"\n              }\n            }\n          },\n          {\n            \"@type\": \"Offer\",\n            \"itemOffered\": {\n              \"@type\": \"Service\",\n              \"name\": \"Local SEO\",\n              \"description\": \"Google Business Profile optimisation, service and city page content, citation consistency, review generation, and schema markup.\",\n              \"provider\": {\n                \"@id\": \"https:\/\/saywadigital.com\/#organization\"\n              },\n              \"areaServed\": {\n                \"@type\": \"Country\",\n                \"name\": \"United States\"\n              }\n            }\n          },\n          {\n            \"@type\": \"Offer\",\n            \"itemOffered\": {\n              \"@type\": \"Service\",\n              \"name\": \"Landing Page and Website Development\",\n              \"description\": \"Campaign-specific landing pages and WordPress site management aligned to paid search intent.\",\n              \"provider\": {\n                \"@id\": \"https:\/\/saywadigital.com\/#organization\"\n              },\n              \"areaServed\": {\n                \"@type\": \"Country\",\n                \"name\": \"United States\"\n              }\n            }\n          },\n          {\n            \"@type\": \"Offer\",\n            \"itemOffered\": {\n              \"@type\": \"Service\",\n              \"name\": \"Conversion Tracking and Reporting\",\n              \"description\": \"Google Tag Manager setup, call and form tracking, and monthly performance reporting with stated measurement windows.\",\n              \"provider\": {\n                \"@id\": \"https:\/\/saywadigital.com\/#organization\"\n              },\n              \"areaServed\": {\n                \"@type\": \"Country\",\n                \"name\": \"United States\"\n              }\n            }\n          },\n          {\n            \"@type\": \"Offer\",\n            \"itemOffered\": {\n              \"@type\": \"Service\",\n              \"name\": \"Transportation Marketing\",\n              \"description\": \"Paid search and local SEO for limousine, black car, chauffeur, airport transfer, and shuttle operators, nationwide.\",\n              \"provider\": {\n                \"@id\": \"https:\/\/saywadigital.com\/#organization\"\n              },\n              \"areaServed\": {\n                \"@type\": \"Country\",\n                \"name\": \"United States\"\n              }\n            }\n          },\n          {\n            \"@type\": \"Offer\",\n            \"itemOffered\": {\n              \"@type\": \"Service\",\n              \"name\": \"Home Services Marketing\",\n              \"description\": \"Paid search and local SEO for HVAC, plumbing, electrical, roofing, and remodelling contractors.\",\n              \"provider\": {\n                \"@id\": \"https:\/\/saywadigital.com\/#organization\"\n              },\n              \"areaServed\": {\n                \"@type\": \"Country\",\n                \"name\": \"United States\"\n              }\n            }\n          },\n          {\n            \"@type\": \"Offer\",\n            \"itemOffered\": {\n              \"@type\": \"Service\",\n              \"name\": \"Local Service Business Marketing\",\n              \"description\": \"Paid search and local SEO for appointment-driven local businesses including dental and medical practices, law firms, med spas, event venues, moving companies, auto services, and fitness studios.\",\n              \"provider\": {\n                \"@id\": \"https:\/\/saywadigital.com\/#organization\"\n              },\n              \"areaServed\": {\n                \"@type\": \"Country\",\n                \"name\": \"United States\"\n              }\n            }\n          }\n        ]\n      }\n    },\n    {\n      \"@type\": \"WebSite\",\n      \"@id\": \"https:\/\/saywadigital.com\/#website\",\n      \"url\": \"https:\/\/saywadigital.com\/\",\n      \"name\": \"Saywa Digital\",\n      \"publisher\": {\n        \"@id\": \"https:\/\/saywadigital.com\/#organization\"\n      },\n      \"inLanguage\": \"en-US\"\n    },\n    {\n      \"@type\": \"FAQPage\",\n      \"@id\": \"https:\/\/saywadigital.com\/#faq\",\n      \"mainEntity\": [\n        {\n          \"@type\": \"Question\",\n          \"name\": \"What does a Google Ads management company charge?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Saywa Digital charges $750, $1,500, or $2,000 per month depending on cadence and inclusions. Ad spend is separate and billed by Google directly to the client. Saywa Digital does not take a percentage of ad spend and does not mark it up.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"How much ad spend does a limo or home service company need to start?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"A typical start is $100 per day, roughly $3,000 per month, increased about 20% per month once the account has data and the client confirms the increase.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Do you work with limousine and black car companies specifically?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Yes. The founder owns and operates a Seattle-area ground transportation business, so campaign structure, seasonality, and booking flow are familiar territory.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Can you guarantee a number of leads or a first-page ranking?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"No. What is committed to is the method and the reporting: what was spent, what it produced, and how it was measured, with the date range attached to every figure.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"What access do you need?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Google Ads admin, Google Analytics 4 read-only, Google Tag Manager admin, WordPress admin, and read-only payment system access where revenue reconciliation is in scope.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Do you only work with businesses in Washington?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"No. Saywa Digital is based in the Seattle-Tacoma area and meets local clients in person, but ad accounts, call tracking, and reporting run identically at a distance. Ground transportation operators in particular are worked with anywhere in the United States.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Which areas do you cover in person?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"University Place, Tacoma, Gig Harbor, Lakewood, Puyallup, Federal Way, Olympia, Auburn, Kent, and Seattle, Washington.\"\n          }\n        }\n      ]\n    }\n  ]\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-8d2fd1c e-flex e-con-boxed e-con e-parent\" data-id=\"8d2fd1c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Services Industries Proof Pricing (253) 342-8091 Marketing agency for ground transportation and home service companies &ldquo;We spend our own money on this first.&rdquo; Saywa Digital runs Google Ads, local SEO, and websites for chauffeur operators and home service companies. Based in the Seattle&ndash;Tacoma area, working with operators across the country. The founder owns and runs [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-20","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/saywadigital.com\/index.php?rest_route=\/wp\/v2\/pages\/20","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/saywadigital.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/saywadigital.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/saywadigital.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/saywadigital.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=20"}],"version-history":[{"count":25,"href":"https:\/\/saywadigital.com\/index.php?rest_route=\/wp\/v2\/pages\/20\/revisions"}],"predecessor-version":[{"id":58,"href":"https:\/\/saywadigital.com\/index.php?rest_route=\/wp\/v2\/pages\/20\/revisions\/58"}],"wp:attachment":[{"href":"https:\/\/saywadigital.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}