/* ============================================================================
   C9 → WordPress bridge.

   c9.css is generated from the concept and must not be hand-edited. But the
   concept renders its nav as bare <a> elements, and wp_nav_menu() emits
   ul > li > a with WordPress's own classes. Without this the header nav arrives
   as a bulleted vertical list — which is exactly how it first rendered.

   Everything here is markup adaptation only: it makes WordPress's HTML meet the
   design c9.css already describes. No new design decisions live in this file.
   All scoped under .c9, so Divi-built pages are untouched.
   ========================================================================== */

/* --- primary nav ---------------------------------------------------------- */
.c9 .nav .nav-list {
  display: flex;
  align-items: center;
  gap: 26px;
  margin: 0;
  padding: 0;
  list-style: none;        /* the bullets */
}
.c9 .nav .nav-list li { margin: 0; padding: 0; position: relative; }

/* Match .c9 .nav a exactly — same declarations, applied to the nested anchor. */
.c9 .nav .nav-list > li > a {
  display: block;
  text-decoration: none;
  font-size: 14.5px;
  font-weight: 500;
  color: #2b3a55;
  padding: 4px 0;
  border-bottom: 2px solid transparent;
  white-space: nowrap;
}
.c9 .nav .nav-list > li > a:hover {
  color: var(--navy);
  border-bottom-color: var(--gold);
}
/* WordPress marks the current page; the concept calls that state .on */
.c9 .nav .nav-list > li.current-menu-item > a,
.c9 .nav .nav-list > li.current-menu-ancestor > a,
.c9 .nav .nav-list > li.current-page-ancestor > a {
  color: var(--navy);
  border-bottom-color: var(--gold);
  font-weight: 600;
}

/* --- dropdowns ------------------------------------------------------------
   The concept has no dropdown: it is a flat five-item nav. This menu has
   children under Services and Sales Tax Resources, so the pattern has to exist.
   Kept deliberately plain — a panel on the cream paper, hairline border, no
   animation. Hover-only would strand keyboard and touch users, so :focus-within
   opens it too. */
.c9 .nav .nav-list .sub-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 60;
  min-width: 232px;
  margin: 0;
  padding: 8px 0;
  list-style: none;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--c9-radius, 5px);
  box-shadow: 0 10px 28px rgba(11, 43, 84, .10);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-4px);
  transition: opacity .14s, transform .14s, visibility .14s;
}
.c9 .nav .nav-list > li:hover > .sub-menu,
.c9 .nav .nav-list > li:focus-within > .sub-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}
.c9 .nav .nav-list .sub-menu a {
  display: block;
  padding: 8px 18px;
  font-size: 14px;
  font-weight: 500;
  color: var(--mut);
  text-decoration: none;
  border: 0;
  white-space: normal;
}
.c9 .nav .nav-list .sub-menu a:hover { color: var(--navy); background: var(--wash); }
/* Services carries fourteen items (fifteen until the Avalara managed
   service was withdrawn, 11 Aug 2026). One column is 600px of dropdown; two columns
   keep it to the height of the rest and stop it running off short viewports.
   Grid rather than `columns`, which splits items across the break. */
.c9 .nav .nav-list > li.c9-sub-wide > .sub-menu {
  /* Multicol, not grid. Grid rows share a height across both columns, so the two
     items that wrap to a second line — "HOST Managed Service for TaxJar" and
     "Resale Certificate Management" — each left a matching gap opposite them.
     Multicol columns are independent. `break-inside: avoid` is what stops it
     splitting a two-line item across the column break, which is the usual reason
     to reach for grid here. The fill order is column-major either way, which is
     what keeps the four practice areas contiguous. */
  columns: 2;
  column-gap: 8px;
  width: 470px;
}
.c9 .nav .nav-list > li.c9-sub-wide > .sub-menu > li { break-inside: avoid; }
/* It hangs off the right edge of the viewport under the first nav item
   otherwise — the panel is wider than the item it belongs to. */
.c9 .nav .nav-list > li.c9-sub-wide > .sub-menu { left: -12px; }

/* --- header bar ----------------------------------------------------------- */
.c9 header.site .bar-right {
  display: flex;
  align-items: center;
  gap: 20px;
  margin-left: auto;       /* .nav's own margin-left:auto is consumed by the list */
}
.c9 header.site .tel {
  font-weight: 600;
  font-size: 14.5px;
  color: var(--navy);
  text-decoration: none;
  white-space: nowrap;
}
.c9 header.site .tel:hover { color: var(--gold-text); }
/* Client log in.

   First attempt was grey 13.5px text with nothing around it, and Kyle was right
   that it looked unplaced — it sat between the nav and the phone number belonging
   to neither, reading as something half-finished rather than something quiet.

   The rule is what fixes it: it groups the log-in with the phone number as
   utility items and separates both from the nav, so its position is explained.
   Navy rather than grey, because grey on cream at 13.5px was doing "recessive"
   and "unfinished" at the same time.

   THE HEADER BAR IS FULL. It is 1140px and every addition has to come from
   somewhere: at the drafted size this pushed "Get a free consultation" and the
   logo tagline onto two lines at every width from 1280 up. The nav gap pays for
   it — 26px to 20px, which nothing else in the design depends on. A version with
   a person icon was measured too and does not fit; the icon costs ~20px and the
   bar has not got it.

   Still deliberately quieter than the CTA. It is the only thing in the header
   addressed to people who are already customers, next to the only thing
   addressed to people who are not. */
.c9 .nav .nav-list { gap: 20px; }
.c9 header.site .bar-right { gap: 16px; }
.c9 header.site .c9-login {
  position: relative;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--navy);
  text-decoration: none;
  white-space: nowrap;
  padding-left: 16px;
}
/* ::before, not ::after. The divider used to separate the log-in from the CTA
   sitting to its right; with the CTA moved out of the header, log-in is last and
   an ::after leaves a rule dangling off the end of the bar with nothing after it. */
.c9 header.site .c9-login::before {
  content: "";
  position: absolute;
  left: 0; top: 50%;
  transform: translateY(-50%);
  width: 1px; height: 15px;
  background: rgba(11, 43, 84, .18);
}
.c9 header.site .c9-login:hover,
.c9 header.site .c9-login:focus-visible { color: var(--gold-text); text-decoration: underline; }
.c9 header.site .logo img { display: block; height: 26px; width: auto; }
/* Divi's Code module sits in a column that centres its contents, which centred
   the wordmark over its own tagline. The concept's .logo is a column flex whose
   default alignment was never tested against a centring parent. */
.c9 .logo { align-items: flex-start; text-align: left; }
.c9 footer.site-foot .logo img { display: block; height: 30px; width: auto; }

/* Divi wraps every module in padded containers; the header is full-bleed by
   design and inherits 0 from these. Scoped to the header so Divi's own rows
   elsewhere keep their padding. */
.c9 header.site,
.c9 footer.site-foot { width: 100%; }

/* --- footer --------------------------------------------------------------- */
.c9 .foot-nav .foot-list { list-style: none; margin: 0; padding: 0; }
.c9 .foot-nav .foot-list li { margin: 0 0 10px; }
.c9 .foot-nav .foot-list a {
  font-size: 14.5px;
  color: rgba(255, 255, 255, .78);
  text-decoration: none;
}
.c9 .foot-nav .foot-list a:hover { color: #fff; }
.c9 .foot-contact { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.c9 .foot-legal { padding-top: 22px; margin-top: 26px; border-top: 1px solid var(--line-dark); }
.c9 .foot-legal p { margin: 0; font-size: 13px; color: rgba(255, 255, 255, .55); }

/* --- mobile navigation ----------------------------------------------------
   The burger is hidden on desktop and the inline nav is hidden on mobile; only
   one nav is ever interactive, so screen readers never meet two copies of the
   same menu. The panel is [hidden] in markup, so it is closed before CSS or JS
   land rather than flashing open on a slow connection. */
.c9 .c9-burger { display: none; }

.c9 .c9-burger {
  border: 0; background: transparent; padding: 10px; margin-left: auto;
  cursor: pointer; color: var(--navy); line-height: 0;
  /* 44px minimum touch target — below that, tap accuracy falls off a cliff */
  min-width: 44px; min-height: 44px;
}
.c9 .c9-burger-box { display: block; position: relative; width: 24px; height: 16px; }
.c9 .c9-burger-bar,
.c9 .c9-burger-bar::before,
.c9 .c9-burger-bar::after {
  position: absolute; left: 0; width: 24px; height: 2px;
  background: currentColor; border-radius: 2px;
  transition: transform .2s ease, opacity .15s ease;
}
.c9 .c9-burger-bar { top: 7px; }
.c9 .c9-burger-bar::before { content: ""; top: -7px; }
.c9 .c9-burger-bar::after  { content: ""; top: 7px; }

/* open state — the three bars fold into a cross */
body.c9-nav-open .c9 .c9-burger-bar { background: transparent; }
body.c9-nav-open .c9 .c9-burger-bar::before { transform: translateY(7px) rotate(45deg); }
body.c9-nav-open .c9 .c9-burger-bar::after  { transform: translateY(-7px) rotate(-45deg); }

/* [hidden] must win at any width. A class selector beats the UA stylesheet's
   [hidden]{display:none}, so `.c9-mobile{display:block}` in the media query
   below silently un-hid the closed panel — it kept its box and pushed the whole
   page down ~350px on every mobile view, while opacity:0 made it invisible.
   This selector is more specific than both, so closed means gone. */
.c9 .c9-mobile[hidden] { display: none; }

.c9 .c9-mobile {
  display: none;
  border-top: 1px solid var(--line);
  background: var(--paper);
  padding: 8px 28px 26px;
  opacity: 0; transform: translateY(-6px);
  transition: opacity .18s ease, transform .18s ease;
}
body.c9-nav-open .c9 .c9-mobile { opacity: 1; transform: translateY(0); }

.c9 .c9-mobile-list, .c9 .c9-mobile-list .sub-menu { list-style: none; margin: 0; padding: 0; }
.c9 .c9-mobile-list > li { border-bottom: 1px solid var(--line); position: relative; }
.c9 .c9-mobile-list a {
  display: block; padding: 15px 44px 15px 0; text-decoration: none;
  font-size: 16.5px; font-weight: 600; color: var(--navy);
}
.c9 .c9-mobile-list .sub-menu { display: none; padding: 0 0 10px 14px; }
.c9 .c9-mobile-list li.c9-sub-open > .sub-menu { display: block; }
.c9 .c9-mobile-list .sub-menu a { font-size: 15px; font-weight: 500; color: var(--mut); padding: 10px 0; }

/* The caret is its own control so tapping a parent is never ambiguous between
   "go to that page" and "reveal its children". */
.c9 .c9-sub-toggle {
  position: absolute; top: 4px; right: 0;
  width: 44px; height: 44px;                 /* touch target again */
  border: 0; background: transparent; cursor: pointer;
  font: 600 20px/1 var(--c9-mono, monospace); color: var(--gold-text);
}
.c9 .c9-mobile-list li.c9-sub-open > .c9-sub-toggle span { display: inline-block; transform: rotate(45deg); }

.c9 .c9-mobile-foot { display: flex; flex-direction: column; gap: 14px; margin-top: 22px; }
.c9 .c9-mobile-foot .tel { font-weight: 600; font-size: 16px; color: var(--navy); text-decoration: none; }
.c9 .c9-mobile-foot .c9-login {
  order: 1;                /* below the CTA — the burger panel is a selling
                              surface first, and the CTA has to stay top of it */
  font-size: 15px;
  color: var(--muted, #5C6B80);
  text-decoration: underline;
}
/* The divider rule is scoped to `header.site`, and the burger panel is inside
   the header — so the log-in in the panel picked up a vertical rule to the left
   of it, on its own line, pointing at nothing.
   `header.site` has to be in this selector too: without it both rules carry
   three classes, and the tie is then broken by element count — which the
   original has and this did not, so the override silently lost. */
/* Nothing to divide from. The phone left the bar for the sticky element, so the
   log-in is the only thing in it and the rule dangled off the left edge. */
.c9 header.site .bar-right .c9-login:only-child { padding-left: 0; }
.c9 header.site .bar-right .c9-login:only-child::before { content: none; }
.c9 header.site .c9-mobile-foot .c9-login { padding-left: 0; }
.c9 header.site .c9-mobile-foot .c9-login::before { content: none; }
.c9 .c9-mobile-foot .c9-mobile-tel {
  order: 0;                /* above the log-in: the call is the action, the
                              log-in is for people who are already customers */
  font-size: 18px;
  font-weight: 700;
  color: var(--navy);
  text-decoration: none;
}
.c9 .c9-mobile-foot .btn { justify-content: center; }

/* 1020px, not 980px. c9.css hides `.c9 .nav` at max-width:1020px, and the
   burger used to arrive at 980 — so between 981px and 1020px the site had no
   navigation at all: no links, no burger, nothing to click. c9.css is
   generated and cannot be edited, so the bridge has to meet its breakpoint. */
@media (max-width: 1020px) {
  .c9 header.site .nav { display: none; }
  .c9 header.site .bar-right { display: none; }   /* lives in the panel instead */
  .c9 .c9-burger { display: block; }
  .c9 .c9-mobile { display: block; }
  .c9 header.site .bar { height: auto; padding-top: 12px; padding-bottom: 12px; gap: 12px; }
  .c9 header.site .logo img { height: 24px; }
}

/* Respect a reduced-motion preference — the fold and slide are decoration. */
@media (prefers-reduced-motion: reduce) {
  .c9 .c9-mobile, .c9 .c9-burger-bar,
  .c9 .c9-burger-bar::before, .c9 .c9-burger-bar::after { transition: none; }
}

/* --- footer legal row ----------------------------------------------------- */
.c9 .foot-legal {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
}
.c9 .foot-brand .foot-contact-line { margin: 18px 0 0; }
.c9 .foot-brand .foot-contact-line .tlink { font-size: 14.5px; line-height: 2.1; }

/* The MalCare badge. Kyle, 15 Oct 2026: "Remove the MalCare badge from the
   footer." The plugin prints it as a bare <div> straight into <body>, with
   inline styles and no hook, so it is hidden by what it holds. Live prints
   it; the plugin stays active, only the badge goes. */
body > div:has(> a[href*="malcare.com"]) { display: none !important; }

@media (max-width: 640px) {
  .c9 .foot-legal { flex-direction: column; align-items: flex-start; gap: 14px; }
}

/* --- neutralise Divi's inherited typography -------------------------------
   Divi sets line-height on <body> (1.6 -> 25.6px). The concept never sets one on
   its container, so every C9 element that does not declare its own inherits the
   browser's `normal` (~1.2) there and 25.6px here. Font sizes match exactly;
   only the leading differs — which is why the page reads subtly wrong rather
   than obviously broken. It compounds down the page: on the "why HOST" section
   it left the text column 33px taller and the ledger 29px shorter than the
   concept, so the two halves stopped lining up.

   Restoring `normal` on the container matches the concept exactly. Anything with
   its own line-height (.lead, .hero-sub, .card p, .llabel) is untouched, because
   those cascade over this. */
.c9 { line-height: normal; }

/* Divi also gives every <p> a bottom margin of 1em. The concept sets margins per
   element, so leave the ones it declares alone and only zero the ones it does
   not — otherwise Divi's 1em opens gaps the design never had. */
.c9 .lrow p, .c9 .hs p, .c9 .proof-row p { margin: 0; }

/* Divi pads the bottom of every heading (10px) and paragraph (~1em). The concept
   controls that spacing with margins instead, which it sets per element — so
   Divi's padding is added ON TOP of the design's own rhythm and every block
   grows. Zeroing the padding leaves the concept's margins in charge. This is
   what was making the "why HOST" text column 22px taller than its ledger and the
   hero 40px taller than the concept. */
.c9 h1, .c9 h2, .c9 h3, .c9 h4, .c9 h5, .c9 h6, .c9 p { padding-bottom: 0; }

/* --- homepage testimonial ---------------------------------------------------
   The homepage carried five platform logos and nothing from a human being.
   HOST has two written case studies with named customers; this surfaces one.

   Deliberately plain: a quote from a CFO does not need a card, an avatar or a
   star rating to be believed, and the attribution is the part doing the work —
   so it gets the mono treatment the rest of C9 uses for labels, not italics.
   --------------------------------------------------------------------------- */
.c9 .hsay { background: var(--wash); padding: 88px 0; }
.c9 .hsay .c9-wrap { max-width: 860px; }
.c9 .hsay-quote { margin: 0; border: 0; padding: 0; }
.c9 .hsay-quote p {
  margin: 0;
  font-size: clamp(21px, 2.3vw, 28px);
  line-height: 1.42;
  font-weight: 600;
  letter-spacing: -.015em;
  color: var(--navy);
  text-wrap: balance;
}
.c9 .hsay-cite {
  margin: 22px 0 26px;
  font-family: var(--c9-mono);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--gold-text);
}
@media (max-width: 700px) {
  .c9 .hsay { padding: 60px 0; }
}

/* Rotator: every slide sits in the SAME grid cell, so the box is always as tall
   as the longest quote and nothing below it moves when the rotator advances.

   This is what the previous rule intended and never did. It said "slides stack in
   one box" while `[hidden] { display: none }` took the other eight out of flow
   entirely, leaving `min-height` as the only thing holding the space open — and
   168px was the height of the SHORTEST quote, so it held nothing. The section
   swung between 484px and 557px as it rotated, shoving "Who this is for" and
   every section under it up and down the page.

   That was survivable while this section was sixth on the homepage and one quote
   in seven was tall. It moved to second on 11 Aug 2026 and three Google reviews
   were added, making it four in nine — a 73px jolt directly under the hero.

   `display: block` overrides the UA's `[hidden] { display: none }` so the slide
   keeps its cell; `visibility: hidden` is what actually hides it, and it hides
   from the accessibility tree too, which is the behaviour c9-home.php's markup
   comment relies on. The JS goes on toggling `hidden` and needs no change. */
.c9 .hsay-rot { position: relative; display: grid; }
.c9 .hsay-slide { margin: 0; grid-area: 1 / 1; }
.c9 .hsay-slide[hidden] { display: block; visibility: hidden; }
.c9 .hsay-slide.is-on { animation: c9-say-in .45s ease both; }
@keyframes c9-say-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

.c9 .hsay-cite { margin: 22px 0 0; }

.c9 .hsay-dots { display: flex; gap: 10px; margin: 26px 0 24px; }
.c9 .hsay-dot {
  width: 9px; height: 9px; padding: 0;
  border: 0; border-radius: 50%;
  background: rgba(11, 43, 84, .22);
  cursor: pointer;
  transition: background .15s, transform .15s;
}
.c9 .hsay-dot:hover { background: rgba(11, 43, 84, .42); }
.c9 .hsay-dot.is-on { background: var(--gold); transform: scale(1.25); }
.c9 .hsay-dot:focus-visible { outline: 2px solid var(--gold-text); outline-offset: 3px; }

/* The mobile `min-height: 250px` that was here is gone with the desktop one.
   The grid now sizes to the tallest slide at whatever width it is asked to, so a
   hard-coded floor can only be wrong in one of two directions: too small and it
   does nothing, too large and it adds dead space under a short quote. */
@media (prefers-reduced-motion: reduce) {
  .c9 .hsay-slide.is-on { animation: none; }
}

/* --- platform row: say what the relationship is -----------------------------
   .proof-more is a separate section so .proof itself still measures identical
   to the approved concept — see the comment in c9-home.php.

   It has to LOOK like one block, and it did not. .proof-more had no background,
   so the page's paper (#FBFAF7) showed through against .proof's cream (#F1F1EA)
   — and .proof drew a border-bottom as well, so a single thought was split by a
   colour change AND a rule, with the negative margin then pulling the sentence
   hard against that rule. It read as two unrelated strips.

   So .proof-more carries the same background, and the rule moves to the bottom
   of the pair — where the block actually ends. Nothing about .proof's own
   geometry changes, which is the point of keeping them separate: the concept
   comparison still measures what it was built to measure. */
.c9 .proof { border-bottom: 0; }

/* The names were the concept's LOGO grey (#97a0b3), which was right when this
   row held muted partner marks — you dim a logo wall so it does not shout over
   the copy. As three words of plain text the same grey reads as disabled, and
   this row is meant to be proof. Navy, like every other name on the page.
   Geometry is untouched, so --compare-concept still measures what it measures. */
.c9 .proof-name { color: var(--navy); }
.c9 .proof-more {
  padding: 0 0 46px;
  margin-top: -18px;
  background: var(--wash);
  border-bottom: 1px solid var(--line);
}
.c9 .proof-note {
  margin: 18px auto 0;
  max-width: 62ch;
  text-align: center;
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--mut);
}
.c9 .proof-note a {
  display: inline-block;
  margin-left: 4px;
  font-family: var(--c9-mono);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: var(--gold-text);
  text-decoration: none;
  border-bottom: 1px solid rgba(130, 103, 0, .35);
}
.c9 .proof-note a:hover { color: var(--ink); border-bottom-color: var(--ink); }

/* --- who this is for --------------------------------------------------------
   Three rows rather than three cards: the page already has a four-card grid in
   "What we do", and a second grid directly above it reads as a repeat of the
   same idea rather than a different one. */
.c9 .hwho { padding: 76px 0 8px; }
.c9 .hwho-list { list-style: none; margin: 18px 0 0; padding: 0; display: grid; gap: 0; }
.c9 .hwho-list li {
  padding: 20px 0;
  border-top: 1px solid var(--line);
  font-size: 17px;
  line-height: 1.6;
  color: var(--mut);
  max-width: 72ch;
}
.c9 .hwho-list li:last-child { border-bottom: 1px solid var(--line); }
.c9 .hwho-list strong { color: var(--navy); font-weight: 700; }
/* The summary read as a fourth audience row that had lost its heading: three
   rows separated by hairlines, then this paragraph 22px under the last rule in
   the same measure and nearly the same weight.

   Separated properly and set apart from the list — the rows are a taxonomy, this
   is the sentence that generalises them. (A second .hwho-foot rule was added
   above this one before it was noticed; it lost on source order and did nothing.
   Removed rather than left in — a rule that never applies is worse than no rule,
   because the next person reads it as working.) */
.c9 .hwho-foot {
  margin: 40px 0 0;
  max-width: 64ch;
  font-size: 15px;
  line-height: 1.65;
  color: var(--mut);
}
@media (max-width: 700px) {
  .c9 .hwho { padding: 54px 0 4px; }
}

/* --- rotator controls -------------------------------------------------------
   Bars, not dots. C9's vocabulary is thin gold rules and mono labels — the
   50x3 accent bar on .services-title, the gold top-border on each card — so a
   row of short bars belongs here and a row of bordered circles did not.

   The bars also do the counter's job: three segments with one lit says both
   how many there are and which you are on, so the separate "1 / 3" went away
   rather than repeating it. */
.c9 .hsay-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  max-width: 460px;
  margin: 30px 0 26px;
}
.c9 .hsay-bars { display: flex; gap: 8px; }
.c9 .hsay-dot {
  width: 34px; height: 3px; padding: 0;
  border: 0; border-radius: 2px;
  background: rgba(11, 43, 84, .18);
  cursor: pointer;
  transition: background .18s, transform .18s;
}
.c9 .hsay-dot:hover { background: rgba(11, 43, 84, .38); }
.c9 .hsay-dot.is-on { background: var(--gold); transform: scaleY(1.66); }
.c9 .hsay-dot:focus-visible { outline: 2px solid var(--gold-text); outline-offset: 5px; }

.c9 .hsay-arrows { display: flex; gap: 4px; }
.c9 .hsay-arrow {
  border: 0; background: none; cursor: pointer;
  padding: 4px 8px;
  font-size: 17px; line-height: 1;
  color: rgba(11, 43, 84, .4);
  transition: color .15s, transform .15s;
}
.c9 .hsay-arrow:hover { color: var(--navy); }
.c9 .hsay-arrow[data-c9-prev]:hover { transform: translateX(-2px); }
.c9 .hsay-arrow[data-c9-next]:hover { transform: translateX(2px); }
.c9 .hsay-arrow:focus-visible { outline: 2px solid var(--gold-text); outline-offset: 3px; }

@media (max-width: 700px) {
  .c9 .hsay-nav { max-width: none; gap: 16px; }
  .c9 .hsay-dot { width: 28px; }
  /* Twelve quotes are twelve bars: at 390px they ran past the edge and took
     the arrows off-screen (host-visual-check, 29 Sep 2026). They share the
     row instead. */
  .c9 .hsay-bars { flex: 1 1 auto; min-width: 0; gap: 6px; }
  .c9 .hsay-dot { flex: 1 1 0; width: auto; min-width: 6px; }
}

/* Skip link.
   Off-screen rather than display:none, because a hidden element is not
   focusable and a skip link that cannot be focused is decoration. It comes
   back on :focus-visible only, so a mouse user never sees it — and it sits
   above the header's own stacking context, which is sticky. */
.c9 .c9-skip {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 1000;
  padding: 12px 18px;
  background: var(--navy);
  color: #fff;
  font-weight: 600;
  text-decoration: none;
  border-radius: 0 0 6px 0;
}
.c9 .c9-skip:focus,
.c9 .c9-skip:focus-visible { left: 0; }

/* The target must not draw a focus ring of its own — the reader has arrived,
   there is nothing to indicate. */
.c9 #c9-main:focus { outline: none; }

/* ---------------------------------------------------------------------------
   The sticky header, which was not sticky.

   `.c9 .site` carries `position: sticky` straight from the approved concept and
   it has never worked on WordPress. Three separate reasons, all invisible to a
   query — the computed style says `sticky` on every page while the header
   scrolls away:

   1. `top: var(--hc-bar-h)` and the variable is not defined here, so `top`
      computes to `auto` and a sticky element with no offset never engages. In
      the concept that variable is 44px — the height of the CONCEPT GALLERY's own
      chrome bar, which exists only in the demo. On the real site it is 0.
      The same undefined variable silently broke two more rules the generated
      sheet carries: `.shead`'s sticky offset and `.sgroup`'s scroll-margin, so
      every in-page anchor on the services hub was landing without its offset.

   2. A sticky element only travels inside its own containing block, and
      Theme Builder renders the header into a stack of Divi wrappers that are all
      exactly 75px tall. `.c9 .site` had nowhere to move. The element that CAN
      travel is Divi's own `.et-l--header`, whose containing block is `#et-boc` —
      the full height of the page.

   3. `#page-container` is `overflow-x:hidden; overflow-y:auto`, which makes it
      the nearest scrolling ancestor. It is exactly as tall as its content so it
      never scrolls, and the sticky never resolves. `clip` still clips
      horizontally without creating a scroll container. The blog templates
      already carry this fix for the sidebar; it needs to be sitewide.
   --------------------------------------------------------------------------- */
.c9 { --hc-bar-h: 0px; }

/* The admin bar is fixed for logged-in editors and would sit on top of the
   header. Below 600px WordPress lets it scroll away, so there is nothing to
   clear. */
body.admin-bar .c9 { --hc-bar-h: 32px; }
@media (max-width: 782px) { body.admin-bar .c9 { --hc-bar-h: 46px; } }
@media (max-width: 600px) { body.admin-bar .c9 { --hc-bar-h: 0px; } }

/* `html body` for specificity: Divi's own `#page-container { overflow-x:hidden;
   overflow-y:auto }` scores the same and loads afterwards, so a plain
   `#page-container` rule lost on every page. It only appeared to work on posts,
   where the blog sidebar's `body.single-post #page-container` was already
   winning — which is exactly the kind of partial pass that reads as success. */
html body #page-container {
  overflow-x: clip;
  overflow-y: visible;
}

#page-container > .et-boc > .et-l--header,
#page-container > .et-l--header {
  position: sticky;
  top: 0;
  z-index: 40;
}
body.admin-bar #page-container > .et-boc > .et-l--header,
body.admin-bar #page-container > .et-l--header { top: 32px; }
@media (max-width: 782px) {
  body.admin-bar #page-container > .et-boc > .et-l--header,
  body.admin-bar #page-container > .et-l--header { top: 46px; }
}
@media (max-width: 600px) {
  body.admin-bar #page-container > .et-boc > .et-l--header,
  body.admin-bar #page-container > .et-l--header { top: 0; }
}

/* Footer social channels. A plain row under the contact lines rather than icons:
   the footer already carries the wordmark, the tagline, a phone number and an
   inbox in that column, and four icon glyphs would read as clutter next to
   them. Same .tlink treatment as the phone and the inbox, so the column reads
   as one list of ways to reach HOST. */
.c9 .foot-social {
  list-style: none;
  margin: 14px 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
}
.c9 .foot-social a { font-size: 14px; }

/* --- services hub: the index strip ------------------------------------------
   c9.css styles `.shero-toc a` as the column itself — flex, padding, a divider
   rule on the right. The strip now holds a heading link plus a list of service
   links, so the column moves to `.toc-col` and the generated rules have to be
   taken back off the anchors, or every service name draws its own divider.

   Not a redesign of the strip: same grid, same dividers, same rhythm. It is the
   same component carrying the list it always had room for. */
.c9 .shero-toc { grid-template-columns: repeat(4, 1fr); }
.c9 .shero-toc a {
  display: inline;
  padding: 0;
  border-right: 0;
}
.c9 .shero-toc .toc-col {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 26px 24px 30px 0;
  border-right: 1px solid var(--line-dark);
}
.c9 .shero-toc .toc-col:last-child { border-right: 0; }
.c9 .shero-toc .toc-col + .toc-col { padding-left: 24px; }
.c9 .shero-toc .toc-head { display: flex; flex-direction: column; gap: 6px; text-decoration: none; }
.c9 .shero-toc .toc-head:hover .toc-name {
  color: #fff;
  text-decoration: underline;
  text-decoration-color: var(--gold);
  text-underline-offset: 4px;
}
.c9 .shero-toc .toc-list { list-style: none; margin: 12px 0 0; padding: 0; }
.c9 .shero-toc .toc-list li { margin: 0 0 5px; }
.c9 .shero-toc .toc-list a {
  font-size: 13.5px;
  line-height: 1.5;
  color: rgba(255, 255, 255, .72);
  text-decoration: none;
}
.c9 .shero-toc .toc-list a:hover {
  color: #fff;
  text-decoration: underline;
  text-decoration-color: var(--gold);
  text-underline-offset: 3px;
}

@media (max-width: 980px) {
  .c9 .shero-toc { grid-template-columns: repeat(2, 1fr); }
  .c9 .shero-toc .toc-col:nth-child(2) { border-right: 0; }
  .c9 .shero-toc .toc-col:nth-child(n+3) { border-top: 1px solid var(--line-dark); }
  .c9 .shero-toc .toc-col:nth-child(odd) { padding-left: 0; }
}
@media (max-width: 620px) {
  .c9 .shero-toc { grid-template-columns: 1fr; }
  .c9 .shero-toc .toc-col { border-right: 0; padding-left: 0; }
  .c9 .shero-toc .toc-col + .toc-col { padding-left: 0; border-top: 1px solid var(--line-dark); }
}

/* --- the sticky CTA ---------------------------------------------------------
   Desktop: one gold button, bottom right. Mobile: a two-up bar, because
   tap-to-call is worth a permanent slot on a phone and worth nothing on a
   laptop — so the phone shows on small screens only and stays in the header on
   large ones.

   Hidden until JS decides it should show (see c9-nav.js). `[hidden]` is beaten
   by a class selector, so the display rule has to name the attribute too or the
   button flashes on screen before the script has run. */
.c9-sticky-cta[hidden] { display: none; }
.c9-sticky-cta {
  /* One pill carrying both controls, with a single border and a single shadow.
     They were two separately-styled elements with a gap between them, which read
     as two floating things rather than one. */
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 7px;
  box-shadow: 0 14px 34px -12px rgba(11, 43, 84, .45);
  padding: 5px;
  position: fixed;
  right: 28px;
  bottom: 28px;
  z-index: 90;
  display: flex;
  align-items: center;
  gap: 10px;
  opacity: 0;
  transform: translateY(8px);
  /* opacity:0 alone leaves an invisible button hit-testing at bottom-right and
     sitting in the tab order — confirmed with elementFromPoint, which returned
     A.btn.gold at the top of the page. visibility takes it out of both, and is
     transitionable (unlike display) so the fade still runs. */
  visibility: hidden;
  pointer-events: none;
  transition: opacity .2s ease, transform .2s ease, visibility 0s linear .2s;
}
.c9-sticky-cta.is-on {
  opacity: 1;
  transform: none;
  visibility: visible;
  pointer-events: auto;
  transition-delay: 0s;
}
/* Two classes each, so this ties with `.c9-sticky-cta.is-on` — and ties are
   broken by element count next, which the `body` here supplies. Source order
   never gets a say, so this holds wherever it sits in the file. */
body.c9-nav-open .c9-sticky-cta {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
.c9-sticky-cta .c9-sticky-call {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0 18px 0 14px;
  font-weight: 700;
  font-size: 14.5px;
  color: var(--navy);
  text-decoration: none;
  white-space: nowrap;
}
.c9-sticky-cta .c9-sticky-call:hover { color: var(--gold-text); }
.c9-sticky-cta .btn.gold {
  box-shadow: none;
  white-space: nowrap;
  border-radius: 4px;
}

@media (max-width: 780px) {
  /* A bar, not a floating button: at this width a circle or a pill in the
     corner sits on top of body copy, and the bar gives the phone number
     somewhere to be. */
  .c9-sticky-cta {
    left: 0; right: 0; bottom: 0;
    gap: 0;
    background: #fff;
    border: 0;
    border-top: 1px solid var(--line);
    border-radius: 0;
    box-shadow: 0 -6px 22px -12px rgba(11, 43, 84, .35);
    padding: 10px 14px;
    transform: translateY(100%);
  }
  .c9-sticky-cta.is-on { transform: none; }
  .c9-sticky-cta .c9-sticky-call {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    flex: 0 0 auto;
    background: none;
    border: 0;
    box-shadow: none;
    border-radius: 0;
    padding: 12px 14px;
    font-size: 14px;
    font-weight: 700;
    color: var(--navy);
    text-decoration: none;
    white-space: nowrap;
  }
  .c9-sticky-cta .btn.gold {
    flex: 1 1 auto;
    justify-content: center;
    box-shadow: none;
  }
  /* NO padding-bottom here. It was added so the bar would not cover the last of
     the page — but the bar now stands down whenever the footer is on screen, and
     the footer carries a tel: link and a Contact link on every page. So the
     padding never protected anything and simply left a 72px white strip below
     the navy footer, sitewide. Measured at maximum scroll on six templates: the
     bar is off on all of them. */
}

/* The custom Calendly embed (#host_calendly_embed, on sales-tax-registration-new
   and -new-calendly) collapsed to Calendly's 150px fallback on staging: the
   700px its container gets on production lives in Divi page-specific custom
   CSS, which porting flattens away — same class of loss as the referral-program
   dark section. Production measures 700px (checked 13 Aug 2026); match it. */
.c9 #host_calendly_embed { height: 700px; }

/* --- Legal pages (Kyle, 14 Sep 2026) --------------------------------------
   Footer links on every page, the version line under the h1, no sales chrome
   on a terms page, and a print layout that is the document alone. */
.c9 .foot-legal-links { display: flex; flex-wrap: wrap; gap: 18px; }
.c9 .foot-legal-links a { font-size: 13px; color: rgba(255, 255, 255, .7); text-decoration: none; }
.c9 .foot-legal-links a:hover { color: #fff; text-decoration: underline; }
.c9 .phero .legal-version, .c9 .legal-version {
  font-family: var(--c9-mono); font-size: 13px; letter-spacing: .1em; text-transform: uppercase;
}
.c9 .phero-sub.legal-version { color: var(--gold); }
.c9 .legal-note { padding: 14px 18px; border: 1px dashed var(--gold); background: rgba(227, 178, 0, .06); }
.c9 .legal-print, .c9 .legal-actions { margin: 22px 0 34px; display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.c9 .legal-printbtn { background: none; border: 0; padding: 0; font: inherit; color: var(--navy); text-decoration: underline; cursor: pointer; }
.c9 .legal-printbtn:hover { color: var(--gold-text); }
body.c9-legal .c9 section.band { display: none; }
body.c9-legal .c9-sticky-cta { display: none; }
/* Kyle's final text, 2 Nov 2026: "707-GET-HOST" broke at 390. */
body.c9-legal .c9 .c9-prose a[href^="tel:"] { white-space: nowrap; }
body.c9-legal .c9 .phero .btn, body.c9-legal .c9 .phero .tlink { display: none; }
/* /legal/ and the versions pages are a short list of links and nothing else.
   Kyle, 3 Nov 2026: the text "sits in a narrow column on the left with empty
   space on the right". So the list runs across the page as cards, the home
   page's card style, as many across as there are (up to four), the whole card
   a link. The documents themselves have more than a list, so this misses them. */
body.c9-legal .c9 .c9-prose > ul:only-child {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr));
  gap: 20px; margin: 0;
}
body.c9-legal .c9 .c9-prose > ul:only-child > li {
  margin: 0; padding: 26px 26px 24px; background: #fff; border: 1px solid var(--line);
  text-wrap: balance; transition: border-color .18s, box-shadow .18s;
}
body.c9-legal .c9 .c9-prose > ul:only-child > li::before {
  left: -1px; top: -1px; width: 44px; height: 3px;
}
body.c9-legal .c9 .c9-prose > ul:only-child > li > a {
  font-weight: 700; color: var(--navy); box-shadow: none; padding-bottom: 0;
}
body.c9-legal .c9 .c9-prose > ul:only-child > li > a::after { content: ""; position: absolute; inset: 0; }
body.c9-legal .c9 .c9-prose > ul:only-child > li:hover { border-color: rgba(11, 43, 84, .32); box-shadow: 0 20px 44px -26px rgba(11, 43, 84, .4); }
body.c9-legal .c9 .c9-prose > ul:only-child > li:hover > a { color: var(--gold-text); }
@media (max-width: 980px) {
  body.c9-legal .c9 .c9-prose > ul:only-child { grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
}
@media print {
  body.c9-legal .c9 header, body.c9-legal .c9 footer, body.c9-legal .c9-sticky-cta,
  body.c9-legal .c9 .legal-print, body.c9-legal .c9 .legal-actions, body.c9-legal .c9 .legal-note, body.c9-legal .c9 .band { display: none !important; }
  body.c9-legal .c9, body.c9-legal .c9 .phero { background: #fff !important; color: #000 !important; }
  body.c9-legal .c9 .phero h1, body.c9-legal .c9 .phero-sub { color: #000 !important; }
  body.c9-legal .c9 .c9-prose { max-width: none; }
  body.c9-legal .c9 a { color: #000; text-decoration: none; }
  body.c9-legal .c9 a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 90%; }
}

/* The rate lookup: one embed (port_pages.php drops the phone-only copy), so
   it takes the phone copy's 800px itself below 768px. */
.c9 iframe.c9-rate-lookup { display: block; width: 100%; height: 450px; border: 0; }
@media (max-width: 767px) {
  .c9 iframe.c9-rate-lookup { height: 800px; }
}

/* The sticky bar's short label. Below 480px the bar carries the phone number
   and the button side by side, and "Get a free consultation" ran 26px past the
   right edge at 375 (Kyle, 2 Oct 2026). The button may also shrink, so a
   narrower phone squeezes the padding rather than the arrow. */
.c9-sticky-cta .c9-sticky-short { display: none; }
@media (max-width: 480px) {
  .c9-sticky-cta .c9-sticky-long { display: none; }
  .c9-sticky-cta .c9-sticky-short { display: inline; }
  .c9-sticky-cta .btn.gold { min-width: 0; }
}

/* Home hero: the line between the standfirst and the button is gone (Kyle,
   2 Oct 2026), so the button takes the gap the line used to leave. */
.c9 .hero .hero-sub + .hero-cta { margin-top: 38px; }
/* Below 360px even the short label is tight: the arrow sat on the button's
   edge at 320. The phone link gives up some padding and the arrow goes. */
@media (max-width: 359px) {
  .c9-sticky-cta .c9-sticky-call { padding: 12px 10px 12px 2px; }
  .c9-sticky-cta .btn.gold .arr { display: none; }
}

/* FAQ plan table. HOST's own style.css gives every cell on the FAQ page a
   225px floor (`.page-id-4009 .entry-content tr td`, !important, inside a
   mobile media query), sized for three plans.
   With Essentials gone (Kyle, 2 Oct 2026) two columns fit a phone, so the
   floor goes and the table stops scrolling sideways. */
body.page-id-4009 .entry-content .c9 td { min-width: 0 !important; }

/* Sales tax calculator: the tool beside the rail of why rates are hard, the
   note under the tool in the small print it is. */
.c9 .pl-calc { scroll-margin-top: 96px; }
.c9 .pl-calc-tool iframe.c9-rate-lookup { background: #fff; border: 1px solid var(--line); border-top: 2px solid var(--navy); }
.c9 .c9-prose .pl-calc-note { margin: 14px 0 0; font-size: 14px; line-height: 1.55; color: var(--mut); }

/* Option cards that end on their own action (consultation call: the free
   call books, the paid call goes to the form). The action sits on the card's
   bottom edge, so two cards of different lengths still end level. */
.c9 .pl-card--act { display: flex; flex-direction: column; }
.c9 .c9-prose .pl-card--act > .pl-card-act { margin-top: auto; padding-top: 24px; font-weight: 600; color: var(--navy); }
/* A short list inside an option card: the three things to bring to the free
   call. Divi's own list spacing (23px under the ul) doubled the gap around it. */
.c9 .c9-prose .pl-card > .pl-card-list { margin: 10px 0 0; padding: 0; }
.c9 .c9-prose .pl-card > .pl-card-list > li { margin-top: .2em; }
.c9 .c9-prose .pl-card > .pl-card-list + p { margin-top: 14px; }

/* Gravity form 1 (registration, exposure, nexus analysis, filings, contact),
   dressed as the Salesforce form card on the other service pages: the same
   font, field height, 10px between fields, a three-line message box and the
   same Submit. Round 6 left these A- ("other font, small Submit, uneven gaps
   on a phone").

   Why the selectors are this heavy. Divi's generated sheet styles these
   fields with `.globalform_wrapper.gform_wrapper.gravity-theme .gfield
   input[type="text"]` (five classes: Open Sans, 9px 10px padding, a 15px
   bottom margin that is the row gap) and the Submit with
   `div#gform_wrapper_1 input#gform_submit_button_1 { padding: 8px 15px
   !important }`. Gravity's own phone rule sets line-height 2 through four
   :not() attributes. Seven classes beat the first two; the Submit needs the
   ids and !important, as Divi's own rule does. */
.c9 .c9-prose .gform_wrapper.gform_wrapper.gravity-theme .gfield input[type="text"],
.c9 .c9-prose .gform_wrapper.gform_wrapper.gravity-theme .gfield input[type="email"],
.c9 .c9-prose .gform_wrapper.gform_wrapper.gravity-theme .gfield input[type="tel"],
.c9 .c9-prose .gform_wrapper.gform_wrapper.gravity-theme .gfield textarea {
  font-family: var(--c9-sans);
  font-size: 16px;
  line-height: 20px;
  min-height: 0;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 5px;
  margin: 0;
}
.c9 .c9-prose .gform_wrapper.gform_wrapper.gravity-theme .gfield textarea {
  height: 86px;
  min-height: 86px;
  field-sizing: content;
}
.c9 .c9-prose .gform_wrapper.gform_wrapper.gravity-theme .gform_fields { row-gap: 10px; grid-row-gap: 10px; }
.c9 .c9-prose .gform_wrapper.gform_wrapper.gravity-theme .ginput_complex > span { margin-bottom: 0; }
@media (max-width: 640px) {
  .c9 .c9-prose .gform_wrapper.gform_wrapper.gravity-theme .ginput_complex > span:not(:last-child) { margin-bottom: 10px; }
}
.c9 .c9-prose div#gform_wrapper_1 input#gform_submit_button_1 {
  font-family: var(--c9-sans) !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  letter-spacing: 1px;
  line-height: 20px !important;
  min-height: 0 !important;
  padding: 13px 22px !important;
}
/* HandL's six UTM and gclid fields are empty grid rows, and with a row gap
   each one added 10px under the spam check. Hidden fields still submit, so
   the tracking is untouched. The spam check gets the Salesforce card's space
   above it. */
.c9 .c9-prose .gform_wrapper.gform_wrapper.gravity-theme .gfield[class*="gfield--type-handlfree"] { display: none; }
.c9 .c9-prose .gform_wrapper.gform_wrapper.gravity-theme .gfield--type-captcha { margin-top: 22px; }

/* Contact at tablet width: the page is one column, the calendar column is
   wide enough that Calendly draws its own bordered card, and ours around it
   made a double frame. Ours steps aside there; on phones and in the two-column
   desktop layout Calendly draws none, so ours stays. */
@media (min-width: 720px) and (max-width: 980px) {
  /* Calendly insets its card 18px each side and about 66px from the top of
     its frame, and never draws it wider than 680px (centred beyond that).
     So both columns stop at 680px here and the widget is pulled out by the
     inset: the calendar card then sits flush under the form card, both
     starting at the heading's edge, instead of floating 85px down and off
     to the middle. */
  .c9 .c9-prose .pl-pair--even > .pl-col { max-width: 680px; }
  .c9 .c9-prose .pl-col > .calendly-inline-widget { background: none; border: 0; margin: -48px -18px 0; }
}

/* --- Hero card -------------------------------------------------------------
   'hero_card' in c9_page_meta(): a white card in the hero's empty right half
   (Kyle, 2 Oct 2026). Copy on the left as before, the card beside it at
   desktop, under it below 980px. */
.c9 .phero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: 64px;
  align-items: center;
}
.c9 .phero-card {
  position: relative;
  z-index: 1;
  background: #fff;
  color: var(--ink);
  border-top: 3px solid var(--gold);
  border-radius: 4px;
  padding: 28px 30px 26px;
  box-shadow: 0 22px 48px -24px rgba(0, 0, 0, .55);
}
.c9 .phero-card p { margin: 0; }
.c9 .phero-card .phc-k {
  font-family: var(--c9-mono); font-size: 12px; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase; color: var(--gold-text);
}
.c9 .phero-card .phc-price { margin-top: 12px; display: flex; align-items: baseline; gap: 10px; }
.c9 .phero-card .phc-n { font-size: 56px; line-height: 1; font-weight: 800; letter-spacing: -.03em; color: var(--navy); }
.c9 .phero-card .phc-l {
  font-family: var(--c9-mono); font-size: 12px; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase; color: var(--gold-text);
}
.c9 .phero-card .phc-terms { margin-top: 10px; font-size: 15px; line-height: 1.5; color: var(--mut); }
.c9 .phero-card .phc-g {
  margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--line);
  font-size: 15.5px; line-height: 1.5; color: var(--ink);
}
.c9 .phero-card .phc-g strong { color: var(--navy); }
.c9 .phero-card .phc-more { margin-top: 18px; font-size: 15px; font-weight: 600; color: var(--navy); }
.c9 .phero-card .phc-more a { color: var(--navy); text-decoration: none; box-shadow: inset 0 -1px 0 0 var(--gold); }
.c9 .phero-card .phc-more a:hover { color: var(--gold-text); }
@media (max-width: 980px) {
  .c9 .phero-grid { grid-template-columns: minmax(0, 1fr); gap: 36px; }
  .c9 .phero-card { max-width: 420px; }
}

/* --- Plan cards (sales tax filings) ---------------------------------------- */
.c9 .pl-plans { scroll-margin-top: 96px; }
.c9 .c9-prose .pl-plans > .pl-pair { margin-top: 26px; }
.c9 .c9-prose .pl-plan .pl-plan-price { margin-top: 10px; display: flex; align-items: baseline; gap: 10px; }
.c9 .pl-plan .plp-n { font-size: 48px; line-height: 1; font-weight: 800; letter-spacing: -.03em; color: var(--navy); }
.c9 .pl-plan .plp-l {
  font-family: var(--c9-mono); font-size: 12px; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase; color: var(--gold-text);
}
.c9 .pl-plan .plp-q { font-size: 28px; line-height: 48px; font-weight: 800; letter-spacing: -.02em; color: var(--navy); }
.c9 .c9-prose .pl-plan .pl-plan-terms { margin-top: 8px; font-size: 15px; line-height: 1.5; color: var(--mut); }
.c9 .c9-prose .pl-plan .pl-plan-lead { margin-top: 22px; font-weight: 600; color: var(--navy); font-size: 16px; }
.c9 .c9-prose .pl-plan .pl-plan-list {
  margin: 18px 0 0; padding: 18px 0 0; border-top: 1px solid var(--line);
}
.c9 .c9-prose .pl-plan .pl-plan-lead + .pl-plan-list { margin-top: 10px; padding-top: 0; border-top: 0; }
.c9 .c9-prose .pl-plan .pl-plan-list > li { margin-top: .25em; font-size: 16px; line-height: 1.55; }
.c9 .c9-prose .pl-plan .pl-plan-lead { padding-top: 18px; border-top: 1px solid var(--line); }
.c9 .c9-prose .pl-plan .c9-tbc { margin: 18px 0 0; font-size: 14px; }

/* --- Form beside "What happens next" (sales tax filings) ------------------- */
/* c9-prose.css loads after this sheet and sets .pl-pair's columns with the
   same two classes, so these carry .c9-prose to win, and repeat the
   one-column rule below 980px themselves. */
.c9 .pl-pair--form { scroll-margin-top: 96px; }
.c9 .c9-prose .pl-pair--form { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 56px; }
@media (max-width: 980px) {
  .c9 .c9-prose .pl-pair--form { grid-template-columns: minmax(0, 1fr); gap: 48px; }
}
.c9 .c9-prose .pl-pair--form .pl-col > * + * { margin-top: 18px; }
.c9 .c9-prose .pl-next { padding-top: 0; }
.c9 .c9-prose .pl-next .pl-next-steps { margin: 18px 0 0; }
.c9 .c9-prose .pl-next .pl-next-steps > li { margin-top: 18px; padding-left: 44px; font-size: 16px; line-height: 1.6; }
.c9 .c9-prose .pl-next .pl-next-steps > li:first-child { margin-top: 0; }
.c9 .c9-prose .pl-next .pl-next-steps > li strong { display: block; color: var(--navy); font-size: 17px; margin-bottom: 2px; }

/* No one-word last lines. Visual QA of twelve pages, 3 Oct 2026, found them in
   hero headlines ("We have seen this audit / before."), section headings, the
   band ("Start with a free / consultation.") and the opening text under the
   headline ("answers / it."). Headings balance their lines; paragraphs only
   avoid a lone last word. Browsers without text-wrap keep today's wrapping. */
.c9 .phero h1,
.c9 .c9-prose h2,
.c9 .c9-prose h3,
.c9 .band h2,
.c9 .pl-band .pl-band-line { text-wrap: balance; }
/* Home, "27 years. One thing. Sales / tax." between 541 and 860px (4 Oct 2026). */
.c9 .since-lead h2 { text-wrap: balance; }
/* Home, Why HOST, 15 Oct 2026: the ledger is gone (it repeated the strip
   under the hero), so the paragraph and its link sit in the right column,
   level with the heading rather than the eyebrow above it. */
.c9 .since-body { padding-top: 38px; }
.c9 .since-body .lead { max-width: 52ch; margin: 0 0 26px; }
@media (max-width: 860px) {
  .c9 .since-grid { gap: 28px; }
  .c9 .since-lead h2 { margin-bottom: 0; }
  .c9 .since-body { padding-top: 0; }
}
.c9 .phero-sub,
.c9 .c9-prose p,
.c9 .c9-prose li,
.c9 .band-lead,
.c9 .pl-band .pl-band-sub { text-wrap: pretty; }

/* The opening section's heading starts level with the rail beside it. The
   prose top margin put the heading 65px below the rail's top rule on every
   service page (VDA most visibly). The side-panel version of this rule is in
   c9-prose.css; this one covers the ledger rail. */
.c9 .c9-prose .pl-grid > .pl-copy > :first-child { margin-top: 0; }
/* Filings follow-ups, 3 Oct 2026. */
.c9 .c9-nowrap { white-space: nowrap; }
.c9 .phero-card p,
.c9 .pl-rail .plr-l { text-wrap: pretty; }
.c9 .c9-prose .pl-plan .c9-tbc { margin-bottom: 8px; }

/* HOST's old theme draws a 65x3 gold bar under every h2.pageTitle, placed
   absolutely with bottom: 0 from a heading that is not positioned. On /faqs/
   all four landed together on the bottom edge of the How to start band. C9
   headings carry no such accent, so it goes. */
.c9 .c9-prose .pageTitle::before { display: none; }

/* --- Sitewide design pass, 3 Oct 2026 ---------------------------------------
   Kyle, 2 Oct 2026: "more two- and three-column layouts, cards and visual
   breaks, so the pages don't read as one long scroll." Built from the same
   card as the steps and the option cards (white, thin rule, navy top edge), so
   new pages read as the same site, not a kit of parts. */

/* Card grids: .pl-cards--2, --3 or --4 across at desktop, two at tablet, one
   on a phone. */
.c9 .c9-prose .pl-cards {
  list-style: none;
  margin: 26px 0 0;
  padding: 0;
  display: grid;
  gap: 22px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.c9 .c9-prose .pl-cards--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.c9 .c9-prose .pl-cards--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
/* An odd card out at the end of a two-across list spans the row (About's
   five values, 15 Oct 2026), rather than sitting alone beside a gap. */
.c9 .c9-prose .pl-cards--2.pl-cards--odd > li:last-child:nth-child(odd) { grid-column: 1 / -1; }
.c9 .c9-prose .pl-tile {
  margin: 0;
  padding: 24px 24px 26px;
  background: #fff;
  border: 1px solid var(--line);
  border-top: 2px solid var(--navy);
}
.c9 .c9-prose .pl-cards > .pl-tile::before { display: none; }
.c9 .c9-prose .pl-tile > * { margin: 0; }
.c9 .c9-prose .pl-tile > * + * { margin-top: 10px; }
.c9 .c9-prose .pl-tile h3 { font-size: 18px; line-height: 1.3; color: var(--navy); }
.c9 .c9-prose .pl-tile p,
.c9 .c9-prose .pl-tile li { font-size: 15.5px; line-height: 1.6; color: var(--mut); }
.c9 .c9-prose .pl-tile .pl-tile-k {
  font-family: var(--c9-mono); font-size: 12px; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase; color: var(--gold-text);
}
.c9 .c9-prose .pl-tile ul { margin: 14px 0 0; padding: 0; }
.c9 .c9-prose .pl-tile ul > li { margin-top: 10px; }
.c9 .c9-prose .pl-tile ul > li:first-child { margin-top: 0; }
.c9 .c9-prose .pl-cards + p { margin-top: 22px; }
@media (max-width: 980px) {
  .c9 .c9-prose .pl-cards,
  .c9 .c9-prose .pl-cards--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .c9 .c9-prose .pl-cards,
  .c9 .c9-prose .pl-cards--2,
  .c9 .c9-prose .pl-cards--4 { grid-template-columns: minmax(0, 1fr); }
}

/* Quotes as cards, two or three across. */
.c9 .c9-prose .pl-quote-cards {
  margin-top: 26px;
  display: grid;
  gap: 22px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.c9 .c9-prose .pl-quote-cards--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.c9 .c9-prose .pl-quote-cards blockquote {
  margin: 0;
  padding: 24px 26px 24px;
  background: #fff;
  border: 1px solid var(--line);
  border-left: 3px solid var(--gold);
  display: flex;
  flex-direction: column;
}
.c9 .c9-prose .pl-quote-cards blockquote p:not(.c9-cite) { font-size: 17px; line-height: 1.6; margin: 0; }
.c9 .c9-prose .pl-quote-cards blockquote .c9-cite { margin-top: auto; padding-top: 16px; }
@media (max-width: 980px) {
  .c9 .c9-prose .pl-quote-cards--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .c9 .c9-prose .pl-quote-cards,
  .c9 .c9-prose .pl-quote-cards--3 { grid-template-columns: minmax(0, 1fr); }
}

/* Partner logos in one even row (Kyle, 2 Oct 2026): every mark in the same
   box, scaled to fit it, ten across at desktop, five across below. */
.c9 .c9-prose .pl-logos .c9-logo-wall {
  display: grid;
  grid-template-columns: repeat(10, minmax(0, 1fr));
  gap: 22px;
  align-items: center;
  margin: 26px 0 0;
  padding: 26px 24px;
  background: #fff;
  border: 1px solid var(--line);
}
.c9 .c9-prose .pl-logos .c9-logo-wall p { display: flex; justify-content: center; }
.c9 .c9-prose .pl-logos .c9-logo-wall img {
  width: 100%;
  max-width: 110px !important;
  height: 44px;
  object-fit: contain;
  border-radius: 0;
}
@media (max-width: 980px) {
  .c9 .c9-prose .pl-logos .c9-logo-wall { grid-template-columns: repeat(5, minmax(0, 1fr)); row-gap: 26px; }
}
@media (max-width: 480px) {
  /* Two across: ten marks make five even rows (three across left one alone). */
  .c9 .c9-prose .pl-logos .c9-logo-wall { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* The state picker on /resources/. */
.c9 .c9-prose .pl-picker {
  margin: 0;
  padding: 26px 28px 28px;
  background: var(--navy);
  border-top: 3px solid var(--gold);
}
.c9 .c9-prose .pl-picker label {
  display: block; font-family: var(--c9-mono); font-size: 12px; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase; color: var(--gold);
}
.c9 .c9-prose .pl-picker-row { display: flex; gap: 12px; margin-top: 12px; flex-wrap: wrap; }
.c9 .c9-prose .pl-picker select {
  flex: 1 1 240px; min-width: 0; height: 48px; padding: 0 14px;
  font-family: var(--c9-sans); font-size: 16px; color: var(--ink);
  background: #fff; border: 0; border-radius: 5px;
}
.c9 .c9-prose .pl-picker .btn { flex: 0 0 auto; height: 48px; padding: 0 22px; border: 0; cursor: pointer; font-size: 15px; }

/* A navy band carrying a short list: four statements across (partner
   program, "What makes HOST different"). */
.c9 .c9-prose .pl-band--list .pl-band-list {
  list-style: none; margin: 22px 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 22px 28px;
}
.c9 .c9-prose .pl-band--list .pl-band-list > li {
  margin: 0; padding: 14px 0 0; border-top: 1px solid rgba(255, 255, 255, .22);
  font-size: 16px; line-height: 1.55; color: #fff;
}
.c9 .c9-prose .pl-band--list .pl-band-list > li::before { display: none; }
@media (max-width: 980px) {
  .c9 .c9-prose .pl-band--list .pl-band-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .c9 .c9-prose .pl-band--list .pl-band-list { grid-template-columns: minmax(0, 1fr); }
}
/* Running copy above a full-width table keeps a reading measure. */
.c9 .c9-prose .pl-measure { max-width: 68ch; }
/* A story beside its quote (customer stories, Secure Centric). */
.c9 .c9-prose .pl-pair--story { align-items: center; }
.c9 .c9-prose .pl-quote-cards--1 { margin-top: 0; grid-template-columns: minmax(0, 1fr); }
/* Pairs of short sections (about): each column's heading starts level. */
.c9 .c9-prose .pl-pair > .pl-col > h2:first-child { margin-top: 0; }
/* A quote inside an option card: the card is already white. */
.c9 .c9-prose .pl-card blockquote { margin: 22px 0 0; }
.c9 .c9-prose .pl-card blockquote p:not(.c9-cite) { font-size: 17px; }
/* Perk tiles carry a title and at most a line. */
.c9 .c9-prose .pl-perks .pl-tile { padding: 20px 22px; }

/* Sections without a layout class (heading, a line, then cards or a table):
   the prose h2 has no bottom margin, so the line under it sat flush. Plain
   sections only; a grid section's columns must not pick up a top margin. */
.c9 .c9-prose .pland > section:not([class]) > * + *,
.c9 .c9-prose .pland > section.pl-logos > * + * { margin-top: 14px; }
.c9 .c9-prose .pland > section:not([class]) > p + .pl-cards,
.c9 .c9-prose .pland > section:not([class]) > p + .pl-quote-cards,
.c9 .c9-prose .pland > section:not([class]) > h2 + .pl-cards,
.c9 .c9-prose .pland > section:not([class]) > h2 + .pl-quote-cards,
.c9 .c9-prose .pland > section:not([class]) > h2 + .pl-picker,
.c9 .c9-prose .pland > section:not([class]) > .pl-measure + *,
.c9 .c9-prose .pland > section.pl-logos > h2 + * { margin-top: 24px; }
/* Two across at tablet width leaves an odd last card alone (three leaders,
   three resource cards, nine partner benefits): it takes the whole row. */
@media (min-width: 641px) and (max-width: 980px) {
  .c9 .c9-prose .pl-cards:not(.pl-cards--2) > .pl-tile:last-child:nth-child(odd) { grid-column: 1 / -1; }
}
/* Perks are short labels: two across even on a phone. */
@media (max-width: 640px) {
  .c9 .c9-prose .pl-perks.pl-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
  .c9 .c9-prose .pl-perks .pl-tile { padding: 16px 16px 18px; }
  .c9 .c9-prose .pl-perks .pl-tile h3 { font-size: 16px; }
}

/* Home hero: copy on the left, a photograph filling the right (Noel, 5 Oct
   2026, of four options: "i like opton 3"). The photo fades into the navy on
   its left, so the headline never sits on a hard edge, and darkens toward the
   bottom, where the four figures run across it. */
.c9 .hero--photo .hero-inner,
.c9 .hero--photo .hero-stats { position: relative; }
.c9 .hero-photo { position: absolute; top: 0; right: 0; bottom: 0; width: 44%; margin: 0; overflow: hidden; }
/* Anchored a little left of centre and high: both faces in the panel. */
.c9 .hero-photo img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 45% 30%; }
.c9 .hero-photo::after {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(0deg, rgba(11, 43, 84, .88) 0%, rgba(11, 43, 84, 0) 36%),
    linear-gradient(90deg, var(--navy) 0%, rgba(11, 43, 84, .62) 30%, rgba(11, 43, 84, .2) 100%);
}
.c9 .hero--photo .hero-dots { display: none; }
@media (max-width: 980px) {
  /* One column: there is no right half to fill, so the hero is its text. */
  .c9 .hero-photo { display: none; }
}
.c9 .phero-card .phc-quote { margin: 18px 0 0; padding: 18px 0 0; border-top: 1px solid var(--line); }
.c9 .phero-card .phc-quote p { font-size: 16px; line-height: 1.55; color: var(--navy); font-weight: 500; }
.c9 .phero-card .phc-quote .phc-cite {
  margin-top: 10px; font-family: var(--c9-mono); font-size: 11.5px; font-weight: 600;
  letter-spacing: .1em; text-transform: uppercase; color: var(--gold-text);
}
/* The state picker inside a hero card (resources). */
.c9 .phero-card .pl-picker label {
  display: block; font-family: var(--c9-mono); font-size: 12px; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase; color: var(--gold-text);
}
.c9 .phero-card .pl-picker-row { display: flex; flex-direction: column; gap: 12px; margin-top: 14px; }
.c9 .phero-card .pl-picker select {
  width: 100%; height: 48px; padding: 0 14px;
  font-family: var(--c9-sans); font-size: 16px; color: var(--ink);
  background: #fff; border: 1px solid rgba(11, 43, 84, .3); border-radius: 5px;
}
.c9 .phero-card .pl-picker .btn { justify-content: center; height: 48px; border: 0; cursor: pointer; font-size: 15px; }
.c9 .phero-card .phc-quote { border-left: 0; padding-left: 0; }

/* Facts in a hero card (the calculator, and the state guides' fast facts).
   Value over label, a rule between rows: the ledger, stacked to fit 340px. */
.c9 .phero-card .phc-rail .plr { padding: 14px 0; border-bottom: 1px solid var(--line); }
.c9 .phero-card .phc-rail .plr:first-child { padding-top: 0; }
.c9 .phero-card .phc-rail .plr:last-child { padding-bottom: 0; border-bottom: 0; }
.c9 .phero-card .phc-rail .plr-v {
  display: block; font-family: var(--c9-mono); font-weight: 600; font-size: 22px;
  line-height: 1.2; color: var(--navy);
}
.c9 .phero-card .phc-rail .plr-l { display: block; margin-top: 4px; font-size: 14.5px; line-height: 1.45; color: var(--mut); text-wrap: pretty; }
/* The audit defense side panel: its label, then the statement. */
.c9 .phero-card .phc-side .pl-side-k {
  margin: 0; font-family: var(--c9-mono); font-size: 12px; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase; color: var(--gold-text);
}
/* The label is an h3 by the time it renders (the heading pass promotes it). */
.c9 .phero-card .phc-side .pl-side-k + p { margin-top: 12px; font-size: 17px; line-height: 1.55; font-weight: 500; color: var(--navy); }
/* The opening section without its rail is the copy alone. */
.c9 .c9-prose .pl-grid--solo { grid-template-columns: minmax(0, 1fr); }

/* Hub hero cards: a word at display size (TaxMatrix, Remote), a lead quote. */
.c9 .phero-card .phc-word { margin-top: 10px; font-size: 36px; line-height: 1.1; font-weight: 800; letter-spacing: -.02em; color: var(--navy); }
.c9 .phero-card .phc-terms strong { color: var(--navy); }
.c9 .phero-card .phc-quote--lead { margin-top: 14px; padding-top: 0; border-top: 0; }
.c9 .phero-card .phc-quote--lead p { font-size: 22px; line-height: 1.4; font-weight: 600; }
/* Three short sections in a row (about). */
.c9 .c9-prose .pl-pair--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; }
@media (max-width: 980px) {
  .c9 .c9-prose .pl-pair--3 { grid-template-columns: minmax(0, 1fr); gap: 40px; }
}
/* "Sales tax only, on purpose" takes two lines and the other two headings one,
   so the three paragraphs started at different heights (4 Oct 2026). Each
   heading holds two lines while they sit side by side. */
@media (min-width: 981px) {
  .c9 .c9-prose .pl-pair--3 h2 { min-height: 2.4em; min-height: 2lh; }
}

/* Photo breaks (about, careers, partner program): full width, 21:9. They are
   stock placeholders, and the reply to Kyle says so. The page does not: the
   staging-only label that used to sit on each photo was removed on 5 Oct
   2026 (Noel: "has placeholder language arg remove that, its just for
   email"). */
.c9 .c9-prose .pl-photo { position: relative; margin-left: 0; margin-right: 0; margin-bottom: 0; }
.c9 .c9-prose .pl-photo img { display: block; width: 100%; height: auto; aspect-ratio: 21 / 9; object-fit: cover; border-radius: 0; }
@media (max-width: 640px) {
  .c9 .c9-prose .pl-photo img { aspect-ratio: 4 / 3; }
}
/* The prose sheet's `figure { margin: 0 }` outranks `.pland > * + *`, so the
   photo takes the section gap itself. */
.c9 .c9-prose .pland > .pl-photo { margin-top: 72px; }
@media (max-width: 980px) {
  .c9 .c9-prose .pland > .pl-photo { margin-top: 56px; }
}

/* The opening section of a service page whose rail went up into the hero:
   a split section, heading on the left third, copy on the right, so the
   section uses the page's width instead of a 62ch column with nothing beside
   it (Kyle, 24 Sep 2026: "one column of text"; his own fix, "split
   sections, headings at more than one size"). Desktop only; below 980px
   the heading sits over the copy as before. */
@media (min-width: 981px) {
  .c9 .c9-prose .pl-grid--solo > .pl-copy {
    max-width: none;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.75fr);
    column-gap: 64px;
    align-items: start;
  }
  .c9 .c9-prose .pl-grid--solo > .pl-copy > h2 {
    grid-column: 1;
    grid-row: 1 / span 12;
    margin: 0;
    font-size: clamp(28px, 2.6vw, 36px);
  }
  .c9 .c9-prose .pl-grid--solo > .pl-copy > :not(h2) { grid-column: 2; max-width: 68ch; }
  .c9 .c9-prose .pl-grid--solo > .pl-copy > h2 + * { margin-top: 0; }
}

/* Careers: seven perks. The last one takes what is left of its row, so no
   row ends on an empty slot (four across: it spans two; two across: it
   spans the row). */
.c9 .c9-prose .pl-perks > .pl-tile:last-child:nth-child(4n+3) { grid-column: span 2; }
@media (max-width: 980px) {
  .c9 .c9-prose .pl-perks > .pl-tile:last-child:nth-child(4n+3) { grid-column: auto; }
  .c9 .c9-prose .pl-perks > .pl-tile:last-child:nth-child(odd) { grid-column: 1 / -1; }
}
/* A list in the split opening section (TaxJar): Divi's list padding left
   45px above it; it takes the paragraph gap instead. */
.c9 .c9-prose .pl-grid--solo > .pl-copy > ul { margin-top: 1.15em; padding-top: 0; }
.c9 .c9-prose .pl-grid--solo > .pl-copy > ul > li:first-child { margin-top: 0; }

/* --- Home polish, 3 Oct 2026 ------------------------------------------------
   Kyle, 2 Oct: "almost everything is left-aligned and stacked in one narrow
   column. That leaves a lot of empty space on the right side". */

/* Who we help: three columns at desktop, each under a navy rule, unframed so
   it does not repeat the four cards in What we do. Rows again below 860px. */
@media (min-width: 861px) {
  .c9 .hwho-list { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 44px; }
  .c9 .hwho-list li { max-width: none; padding: 22px 0 0; border-top: 2px solid var(--navy); }
  .c9 .hwho-list li:last-child { border-bottom: 0; }
  .c9 .hwho-list strong { display: block; margin-bottom: 8px; font-size: 19px; }
  .c9 .hwho-foot { margin-top: 36px; max-width: none; }
}

/* In their words: centred, a deliberate break between two left-aligned
   sections, with each quote centred in the rotator's fixed-height cell so
   the space a shorter quote leaves is split above and below it. */
.c9 .hsay .c9-wrap { text-align: center; }
.c9 .hsay-slide { align-self: center; }
.c9 .hsay-nav { margin-left: auto; margin-right: auto; }
.c9 .hsay-nav { justify-content: center; }
/* Filings: "Before you can file" sits under What happens next, as the note it
   is, instead of a lone paragraph between the quotes and the form. */
.c9 .c9-prose .pl-next .pl-next-note { margin-top: 28px; padding: 20px 22px; background: #fff; border: 1px solid var(--line); border-left: 3px solid var(--gold); }
.c9 .c9-prose .pl-next .pl-next-note h3 { margin: 0; font-size: 17px; color: var(--navy); }
.c9 .c9-prose .pl-next .pl-next-note p { margin: 8px 0 0; font-size: 15.5px; line-height: 1.6; }
/* Both columns end on one line (Noel, 30 Sep 2026, on contact: "different
   vertical ends"): the form card takes the height the steps and the note
   need. Desktop only, where the two sit side by side. */
@media (min-width: 981px) {
  .c9 .c9-prose .pl-pair--form { align-items: stretch; }
  .c9 .c9-prose .pl-pair--form > .pl-col:first-child { display: flex; flex-direction: column; }
  .c9 .c9-prose .pl-pair--form > .pl-col:first-child > .pl-card { flex: 1 1 auto; }
}
.c9 .c9-prose .pl-next .pl-next-steps { padding-bottom: 0; }

/* Unframed columns under a gold rule: the partner page's six reasons, so the
   page does not run two card walls back to back. */
.c9 .c9-prose .pl-cards--plain { row-gap: 34px; column-gap: 40px; }
.c9 .c9-prose .pl-cards--plain > .pl-tile { background: none; border: 0; border-top: 2px solid var(--gold); padding: 18px 0 0; }
/* A closing line with some weight. */
.c9 .c9-prose .pl-kicker { font-size: 19px; line-height: 1.5; font-weight: 600; color: var(--navy); }
.c9 .c9-prose .pland > section:not([class]) > .pl-cards + .pl-kicker { margin-top: 30px; }

/* --- Polish pass from the 13-page visual review, 3 Oct 2026 ----------------- */

/* Split opening section: a narrower heading column at a larger size, so a
   two-line heading beside nine lines of text no longer leaves 200px of empty
   column; the heading also stays in view while the text scrolls past. A
   section with a list in it (TaxJar) is too long to sit beside its heading,
   so it stacks. */
@media (min-width: 981px) {
  .c9 .c9-prose .pl-grid--solo > .pl-copy { grid-template-columns: minmax(0, 1fr) minmax(0, 2.1fr); }
  .c9 .c9-prose .pl-grid--solo > .pl-copy > h2 {
    font-size: clamp(30px, 3vw, 40px); line-height: 1.12;
    position: sticky; top: 118px; align-self: start;
  }
  .c9 .c9-prose .pl-grid--solo > .pl-copy:has(> ul) { display: block; max-width: 68ch; }
  .c9 .c9-prose .pl-grid--solo > .pl-copy:has(> ul) > h2 { position: static; font-size: clamp(30px, 3.4vw, 42px); }
  .c9 .c9-prose .pl-grid--solo > .pl-copy:has(> ul) > :not(h2) { max-width: none; }
  .c9 .c9-prose .pl-grid--solo > .pl-copy:has(> ul) > h2 + * { margin-top: 1.15em; }
  /* The price block starts its text on the same line as the split text. */
  .c9 .c9-prose .pl-price-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 2.1fr); column-gap: 64px; }
}

/* Navy statement bands: centred, so a short line does not leave the right
   half of the box empty. The list band (partner) keeps its columns. */
.c9 .c9-prose .pl-band:not(.pl-band--list) { text-align: center; }
.c9 .c9-prose .pl-band:not(.pl-band--list) .pl-band-line,
.c9 .c9-prose .pl-band:not(.pl-band--list) .pl-band-sub { margin-left: auto; margin-right: auto; }

/* The note under the steps (matrix, notice management) stays centred as Kyle
   asked, except on a phone, where a six-line centred block reads badly. */
@media (max-width: 640px) {
  .c9 .c9-prose .pl-how-note, #main-content .c9 .c9-prose .pl-how-note { text-align: left; }
}

/* Hero card rail: labels wrap only when they must; on a phone the rows sit
   two across, so a four-fact card does not double the hero's height. */
.c9 .phero-card .phc-rail .plr-l { text-wrap: wrap; }
@media (max-width: 640px) {
  .c9 .phero-card .phc-rail { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 18px; }
  .c9 .phero-card .phc-rail .plr,
  .c9 .phero-card .phc-rail .plr:first-child,
  .c9 .phero-card .phc-rail .plr:last-child { padding: 12px 0; border-bottom: 1px solid var(--line); }
  .c9 .phero-card .phc-rail .plr:nth-last-child(-n+2):nth-child(odd),
  .c9 .phero-card .phc-rail .plr:last-child { border-bottom: 0; }
  .c9 .phero-card .phc-rail .plr-v { font-size: 18px; }
  .c9 .phero-card .phc-rail .plr-l { font-size: 13.5px; }
  /* Balanced headlines broke "Your TaxJar / account, / fully managed." on a
     phone; at that width only a lone last word is avoided. */
  .c9 .phero h1 { text-wrap: pretty; }
}

/* Gravity's footer padding left about 50px under Submit inside the form card,
   against 28px on the Salesforce forms. */
.c9 .c9-prose .gform_wrapper.gform_wrapper.gravity-theme .gform_footer { padding-bottom: 0; margin-bottom: 0; }

/* One quote alone keeps a reading measure instead of running 1084px. */
.c9 .pl-quotes-grid > blockquote:only-child { max-width: 72ch; }

/* A <button> styled as .btn dropped the browser's bevel and font. */
.c9 button.btn { border: 0; font-family: inherit; font-size: 15px; line-height: 1.2; cursor: pointer; }

/* Headings with <strong> inside (ported FAQ heading on registration) kept the
   prose strong weight, 600, and read lighter than every other h2. */
.c9 .c9-prose h2 strong, .c9 .c9-prose h3 strong { font-weight: inherit; color: inherit; }

/* The e-book form on registration (Gravity form 8): the same card as the
   main form. Since its labels show (15 Oct 2026), they match the lead form
   above it: "*" for "(Required)", sub-labels as full labels over their
   fields, and no "Name" over "First" and "Last". */
.c9 .c9-prose #gform_wrapper_8 { background: #fff; border: 1px solid var(--line); border-top: 2px solid var(--navy); padding: 26px 28px 24px; }
.c9 .c9-prose #gform_wrapper_8 .gfield_required_text { font-size: 0; }
.c9 .c9-prose #gform_wrapper_8 .gfield_required_text::after { content: "*"; margin-left: 0; font-family: var(--c9-sans); font-size: 14.5px; font-style: normal; color: #c02b0a; }
.c9 .c9-prose #gform_wrapper_8 .ginput_complex label { font-size: 14.5px; font-weight: 600; color: var(--navy); margin: 0 0 8px; display: block; }
.c9 .c9-prose #gform_wrapper_8 .gfield--type-name > .gfield_label {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}

/* "On this page" beside long single-column pages ('toc', /faqs/). */
.c9 .c9-toc-layout { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 64px; align-items: start; }
.c9 .c9-toc { position: sticky; top: 118px; border-top: 2px solid var(--navy); padding-top: 18px; }
.c9 .c9-prose .c9-toc .c9-toc-k { margin: 0; font-family: var(--c9-mono); font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gold-text); }
.c9 .c9-prose .c9-toc ul { margin: 14px 0 0; padding: 0; list-style: none; }
.c9 .c9-prose .c9-toc li { margin: 0; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 15.5px; line-height: 1.4; }
.c9 .c9-prose .c9-toc li::before { display: none; }
.c9 .c9-prose .c9-toc a { box-shadow: none; color: var(--navy); font-weight: 600; }
.c9 .c9-prose .c9-toc a:hover { color: var(--gold-text); }
.c9 .c9-toc-body { max-width: 820px; }
.c9 .c9-toc-body > :first-child, .c9 .c9-toc-body > p:first-child + h2 { margin-top: 0; }
@media (max-width: 980px) {
  .c9 .c9-toc-layout { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .c9 .c9-toc { position: static; }
}
/* c9-prose.css forces `#main-content .c9 .c9-prose *:not(th):not(td) { text-align:
   left }` (an id), so the band's centring needs the id too. */
#main-content .c9 .c9-prose .pl-band:not(.pl-band--list),
#main-content .c9 .c9-prose .pl-band:not(.pl-band--list) * { text-align: center; }

/* A standalone copy section (audit defense's "How far back a state can go")
   takes the same split as the opening section, so the page keeps one left
   edge for headings and one for text. The centred text above a form
   (.pl-before) and contact's closing line keep their own layouts. */
@media (min-width: 981px) {
  .c9 .c9-prose .pland > section.pl-copy:not(.pl-before):not(.pl-contact-line) {
    max-width: none;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 2.1fr);
    column-gap: 64px;
    align-items: start;
  }
  .c9 .c9-prose .pland > section.pl-copy:not(.pl-before):not(.pl-contact-line) > h2 {
    grid-column: 1; grid-row: 1 / span 12; margin: 0;
    font-size: clamp(30px, 3vw, 40px); line-height: 1.12;
  }
  .c9 .c9-prose .pland > section.pl-copy:not(.pl-before):not(.pl-contact-line) > :not(h2) { grid-column: 2; max-width: 68ch; }
  .c9 .c9-prose .pland > section.pl-copy:not(.pl-before):not(.pl-contact-line) > h2 + * { margin-top: 0; }
}
@media (min-width: 981px) {
  .c9 .c9-prose .pland > section.pl-copy:not(.pl-before):not(.pl-contact-line) > h2 { position: sticky; top: 118px; align-self: start; }
}
/* Section headings do not stick after all: the narrower heading column fixed
   the empty space on its own, and a sticky heading shows twice in every
   stitched QA screenshot, which hides real defects. (The FAQ "On this page"
   list stays sticky: it is navigation.) */
@media (min-width: 981px) {
  .c9 .c9-prose .pl-grid--solo > .pl-copy > h2,
  .c9 .c9-prose .pland > section.pl-copy:not(.pl-before):not(.pl-contact-line) > h2 { position: static; }
}
@media (max-width: 640px) {
  #main-content .c9 .c9-prose .pl-how .pl-how-note, .c9 .c9-prose .pl-how .pl-how-note { text-align: left; }
}
/* Quotes side by side end level, so the gold rules match. */
.c9 .pl-quotes-grid { align-items: stretch; }
.c9 .c9-prose .pl-quotes-grid > blockquote { align-self: stretch; }

/* --- Stripe landing page (Noel, 5 Oct 2026: "looks ugly") -------------------
   The ported body in one 700px column became: benefit cards, the two services
   as cards side by side, FAQs in split sections, the form beside the list of
   other services, and one closing band. See 'stripe' in c9-copy.php. */
/* Hero card: the Stripe mark over the page's two jump links. */
.c9 .phero-card .phc-logo img { display: block; width: auto; height: 44px; }
.c9 .phero-card .phc-links { list-style: none; margin: 22px 0 0; padding: 0; border-top: 1px solid var(--line); }
.c9 .phero-card .phc-links li { margin: 0; padding: 0; border-bottom: 1px solid var(--line); }
.c9 .phero-card .phc-links li:last-child { border-bottom: 0; }
.c9 .phero-card .phc-links a {
  display: flex; justify-content: space-between; align-items: baseline; gap: 16px;
  padding: 15px 0; font-size: 17px; font-weight: 600; color: var(--navy); text-decoration: none;
}
.c9 .phero-card .phc-links li:last-child a { padding-bottom: 2px; }
.c9 .phero-card .phc-links a:hover { color: var(--gold-text); }
/* The two service cards. */
.c9 .pl-svc { scroll-margin-top: 96px; }
.c9 .c9-prose .pl-svc > h2 { margin: 0; font-size: 26px; line-height: 1.2; }
.c9 .c9-prose .pl-plan.pl-svc .pl-plan-price { margin-top: 16px; flex-wrap: wrap; }
.c9 .c9-prose .pl-plan.pl-svc h3.pl-plan-lead { margin-bottom: 0; font-size: 17px; line-height: 1.3; letter-spacing: 0; }
.c9 .c9-prose .pl-svc .pl-next { margin-top: 0; }
.c9 .c9-prose .pl-svc .pl-next .pl-next-steps { margin-top: 16px; padding-top: 0; }
.c9 .c9-prose .pl-svc .pl-next .pl-next-steps > li { font-size: 15.5px; }
.c9 .c9-prose .pl-svc .pl-plan-note {
  margin: 22px 0 0; padding-top: 16px; border-top: 1px solid var(--line);
  font-size: 14px; line-height: 1.6; color: var(--mut);
}
/* The form column: the heading and line sit above the form card. */
.c9 .c9-prose .pl-news .pl-col > h2 { font-size: clamp(26px, 2.6vw, 34px); line-height: 1.15; }
/* The message box at the size it has on every other form card (rows="10"
   made it 230px here). */
.c9 .c9-prose .pl-news form textarea { height: 86px; min-height: 86px; }
/* The closing band: the page's own action as the button, the appointment as
   the link under it. */
.c9 .c9-prose .pl-band--act { text-align: center; }
.c9 .c9-prose .pl-band--act .pl-band-line,
.c9 .c9-prose .pl-band--act .pl-band-sub { margin-left: auto; margin-right: auto; }
.c9 .c9-prose .pl-band--act .pl-band-act { margin: 24px 0 0; }
.c9 .c9-prose .pl-band--act .pl-band-act a.btn { color: var(--ink); box-shadow: none; }
.c9 .c9-prose .pl-band--act .pl-band-sub { margin-top: 18px; font-size: 16px; }
/* The appointment link wraps on a phone, and the band's inset-shadow underline
   only draws under the last line of a wrapped link. A real underline here. */
.c9 .c9-prose .pl-band--act .pl-band-sub a {
  box-shadow: none; text-decoration: underline; text-decoration-color: var(--gold);
  text-decoration-thickness: 1px; text-underline-offset: 5px;
}
/* The list of other services starts close under its lead-in line. */
.c9 .c9-prose .pl-news .pl-next > ul { margin-top: 14px; padding-top: 0; }
.c9 .c9-prose .pl-news .pl-next > ul > li:first-child { margin-top: 0; }

/* --- The other pages that graded C or B+ on 5 Oct 2026 ----------------------
   doola reuses the Stripe rules above. */
/* Hero card: a plain list (the software review's "will:" items). */
.c9 .phero-card .phc-list { list-style: none; margin: 14px 0 0; padding: 0; }
.c9 .phero-card .phc-list li {
  position: relative; margin: 0; padding: 11px 0 11px 22px; border-top: 1px solid var(--line);
  font-size: 15.5px; line-height: 1.45; color: var(--ink);
}
.c9 .phero-card .phc-list li:first-child { border-top: 0; padding-top: 0; }
.c9 .phero-card .phc-list li:last-child { padding-bottom: 0; }
.c9 .phero-card .phc-list li::before { content: ""; position: absolute; left: 0; top: 21px; width: 10px; height: 2px; background: var(--gold); }
.c9 .phero-card .phc-list li:first-child::before { top: 10px; }
/* Software review: two paragraphs beside the page's own screenshot. */
.c9 .c9-prose .pl-rev { align-items: center; }
.c9 .c9-prose .pl-rev .pl-col > p { font-size: 19px; line-height: 1.6; }
.c9 .c9-prose .pl-shot { margin: 0; }
.c9 .c9-prose .pl-shot img { display: block; width: 100%; height: auto; border: 1px solid var(--line); border-radius: 4px; }
/* Stripe advisory: the line above the calendar. */
.c9 .c9-prose .pl-cal .pl-cal-lead,
#main-content .c9 .c9-prose .pl-cal .pl-cal-lead { text-align: center; font-size: 19px; }
/* Calculator at the page width: the tool lays its two panes out taller than
   it did in the 692px column, and 450px cut its button off at desktop and
   left it flush on the frame's bottom edge at 768. Phones keep 800px. */
@media (min-width: 768px) {
  .c9 .pl-calc-tool iframe.c9-rate-lookup { height: 520px; }
}
/* Stripe advisory: the nine questions are sentences, not two-word perks, so
   on a phone they go one to a row ("products/servic / es taxable?" at 150px). */
@media (max-width: 640px) {
  .c9 .c9-prose .pl-perks.pl-qs.pl-cards { grid-template-columns: minmax(0, 1fr); }
  .c9 .c9-prose .pl-perks.pl-qs > .pl-tile:last-child { grid-column: auto; }
}
/* State guides: the fast facts as the hero card. A value can be a department
   name or a phone number, so it is set smaller than a service page's figure
   and may wrap. */
.c9 .phero-card .phc-k + .phc-facts { margin-top: 16px; }
.c9 .phero-card .phc-facts .plr-v { font-size: 19px; line-height: 1.25; overflow-wrap: break-word; }
/* On a phone the facts go one to a row: two across broke a phone number as
   "888-334- / 4112". */
@media (max-width: 640px) {
  .c9 .phero-card .phc-rail.phc-facts { display: block; }
  .c9 .phero-card .phc-rail.phc-facts .plr:not(:last-child) { padding: 12px 0; border-bottom: 1px solid var(--line); }
  .c9 .phero-card .phc-rail.phc-facts .plr:first-child { padding-top: 0; }
  .c9 .phero-card .phc-rail.phc-facts .plr:last-child { padding: 12px 0 0; border-bottom: 0; }
}

/* --- Partner landing pages (Stripe, doola), second pass, 5 Oct 2026 ---------
   See c9_partner_landing() in c9-copy.php for why. The first pass was eight
   outlined white boxes on one cream surface with no picture anywhere. This
   one has a navy panel per service, HOST's own step icons, a tinted
   full-width band, and no column that ends in empty space. */

/* Three steps, one to a row: HOST's icon, the number, the sentence at a
   readable width. Three across was tried first and set 40 words in 200px
   columns, which made the block 700px tall. */
.c9 .c9-prose ol.pl-osteps { margin: 22px 0 0; padding: 0; list-style: none; counter-reset: c9os; display: grid; gap: 20px; }
.c9 .c9-prose ol.pl-osteps > li {
  margin: 0; padding: 0; counter-increment: c9os;
  display: grid; grid-template-columns: 52px minmax(0, 1fr); column-gap: 20px; align-items: start;
}
.c9 .c9-prose ol.pl-osteps > li > img { grid-column: 1; grid-row: 1 / span 2; display: block; width: 52px; height: 52px; margin: 0; }
.c9 .c9-prose ol.pl-osteps > li::before {
  content: counter(c9os, decimal-leading-zero);
  grid-column: 2; grid-row: 1; position: static; display: block; margin: 0;
  font-family: var(--c9-mono); font-size: 12px; font-weight: 600; letter-spacing: .14em; color: var(--gold-text);
}
.c9 .c9-prose ol.pl-osteps > li > p { grid-column: 2; grid-row: 2; margin: 3px 0 0; font-size: 16px; line-height: 1.55; color: var(--mut); max-width: 62ch; }
@media (max-width: 640px) {
  .c9 .c9-prose ol.pl-osteps > li { grid-template-columns: 44px minmax(0, 1fr); column-gap: 14px; }
  .c9 .c9-prose ol.pl-osteps > li > img { width: 44px; height: 44px; }
}

/* --- Stripe and doola without prices, 15 Oct 2026 --------------------------
   Kyle: "Replace the big price cards with the steps instead ... so the
   layout doesn't leave gaps." First built as full-width rows on white;
   Noel the same evening: "steps aren't working ... too white feeling".
   Of three mocks he picked this: Kyle's three steps on a deep navy band, set
   off from the navy hero by a gold line; Registration and Filing as two
   white cards side by side on the tint, each with its steps as a short
   list; Why HOST on white. Surfaces run to the screen edges the way the
   banded pages' do (border-image), and the sections touch. */
.c9 .pbody:has(.pl-partner > .pl-flow:first-child) { padding-top: 0; }
.c9 .c9-prose .pl-partner > .pl-flow {
  padding: 92px 0 96px;
  border-image: linear-gradient(var(--gold) 0 3px, var(--navy-deep) 3px) fill 0 / 0 / 0 100vmax;
}
.c9 .c9-prose .pl-partner > .pl-flow .pl-h2c { color: #fff; }
.c9 .c9-prose ol.pl-flow-steps {
  list-style: none; margin: 56px auto 0; padding: 0; max-width: 1000px;
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
}
.c9 .c9-prose ol.pl-flow-steps > li {
  position: relative; margin: 0; padding: 0 20px;
  display: flex; flex-direction: column; align-items: center; text-align: center;
}
.c9 .c9-prose ol.pl-flow-steps > li::before { content: none; display: none; }
.c9 .c9-prose ol.pl-flow-steps > li + li::after {
  content: "\2192"; position: absolute; left: -14px; top: 30px;
  font-size: 30px; line-height: 1; color: var(--gold);
}
.c9 .c9-prose .pl-flow-ic {
  display: grid; place-items: center; width: 92px; height: 92px; border-radius: 50%;
  background: #fff; box-shadow: 0 0 0 8px rgba(255, 255, 255, .08);
}
.c9 .c9-prose .pl-flow-ic img { display: block; width: 54px; height: 54px; margin: 0; }
.c9 .c9-prose .pl-flow-n {
  display: block; margin: 22px 0 0;
  font-family: var(--c9-mono); font-size: 13px; font-weight: 600; letter-spacing: .16em; color: var(--gold);
}
.c9 .c9-prose .pl-flow-t {
  display: block; margin: 8px 0 0;
  font-size: 26px; line-height: 1.2; font-weight: 700; letter-spacing: -.015em; color: #fff;
}
.c9 .c9-prose .pl-flow-act { margin: 52px 0 0; display: flex; justify-content: center; }
/* Below 981px a prose rule left-aligns every element by #main-content, as
   it does .pl-h2c; the steps stay centred under their icons until a phone. */
#main-content .c9 .c9-prose ol.pl-flow-steps > li,
#main-content .c9 .c9-prose .pl-flow-n,
#main-content .c9 .c9-prose .pl-flow-t { text-align: center; }
/* The two services: white cards on the tint. */
.c9 .c9-prose .pl-partner > .pl-flow + .pl-svcs { margin-top: 0; }
.c9 .c9-prose .pl-partner > .pl-svcs {
  padding: 88px 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; align-items: stretch;
  border-image: conic-gradient(var(--wash) 0 0) fill 0 / 0 / 0 100vmax;
}
.c9 .c9-prose .pl-partner > .pl-svcs + .pl-why { margin-top: 0; background: #fff; box-shadow: 0 0 0 100vmax #fff; }
/* The FAQs on the tint: white Why HOST into the cream page read as one
   2,000px surface (ONESURFACE, 15 Oct 2026). */
.c9 .c9-prose .pl-partner > .pl-why + .pl-faq2 { margin-top: 0; padding: 88px 0; border-image: conic-gradient(var(--wash) 0 0) fill 0 / 0 / 0 100vmax; }
.c9 .c9-prose .pl-partner > .pl-faq2 .pl-more { background: #fff; }
.c9 .c9-prose .pl-svc {
  padding: 36px 36px 30px; scroll-margin-top: 90px; background: #fff; border-radius: 10px;
  border-top: 4px solid var(--gold); box-shadow: 0 40px 50px -44px rgba(11, 43, 84, .55);
}
.c9 .c9-prose .pl-svc-top h2 { margin: 0; font-size: clamp(22px, 2.1vw, 26px); line-height: 1.2; letter-spacing: -.02em; text-wrap: balance; }
.c9 .c9-prose .pl-svc-top .pl-svc-terms { margin: 10px 0 0; font-size: 16.5px; line-height: 1.55; color: var(--mut); }
.c9 .c9-prose .pl-svc ol.pl-osteps { gap: 18px; margin-top: 26px; }
.c9 .c9-prose .pl-svc ol.pl-osteps > li { grid-template-columns: 48px minmax(0, 1fr); column-gap: 16px; }
.c9 .c9-prose .pl-svc ol.pl-osteps > li > img { width: 48px; height: 48px; }
.c9 .c9-prose .pl-svc ol.pl-osteps > li > p { font-size: 15.5px; }
.c9 .c9-prose .pl-svc .pl-offer-note {
  margin: 24px 0 0; padding-top: 18px; border-top: 1px solid var(--line);
  font-size: 15px; line-height: 1.6; color: var(--mut);
}
@media (max-width: 980px) {
  .c9 .c9-prose .pl-partner > .pl-flow { padding: 64px 0 68px; }
  .c9 .c9-prose .pl-partner > .pl-svcs { grid-template-columns: minmax(0, 1fr); padding: 64px 0; }
}
/* One step to a row on a phone, the icon beside the words, no arrows. */
@media (max-width: 640px) {
  .c9 .c9-prose ol.pl-flow-steps { grid-template-columns: minmax(0, 1fr); row-gap: 22px; margin-top: 40px; }
  .c9 .c9-prose ol.pl-flow-steps > li {
    display: grid; grid-template-columns: 64px minmax(0, 1fr); column-gap: 18px; align-items: center;
    padding: 0; text-align: left;
  }
  #main-content .c9 .c9-prose ol.pl-flow-steps > li,
  #main-content .c9 .c9-prose .pl-flow-n,
  #main-content .c9 .c9-prose .pl-flow-t { text-align: left; }
  .c9 .c9-prose ol.pl-flow-steps > li + li::after { content: none; }
  .c9 .c9-prose .pl-flow-ic { grid-row: 1 / span 2; width: 64px; height: 64px; }
  .c9 .c9-prose .pl-flow-ic img { width: 38px; height: 38px; }
  .c9 .c9-prose .pl-flow-n { margin: 0; align-self: end; }
  .c9 .c9-prose .pl-flow-t { margin: 4px 0 0; font-size: 20px; align-self: start; }
  .c9 .c9-prose .pl-flow-act { margin-top: 36px; }
  .c9 .c9-prose .pl-flow-act .btn { width: 100%; justify-content: center; }
  #main-content .c9 .c9-prose .pl-flow-act .btn { text-align: center; }
  .c9 .c9-prose .pl-svc { padding: 28px 22px 24px; }
}

/* A section on a full-width tinted band. The shadow paints past the wrap to
   both edges of the viewport and the clip keeps it to the section's height,
   so the template's single wrap does not have to be opened. */
.c9 .c9-prose .pl-bleed {
  background: var(--wash); box-shadow: 0 0 0 100vmax var(--wash); clip-path: inset(0 -100vmax);
  padding: 68px 0 72px;
}
.c9 .c9-prose .pl-bleed > h2 { margin: 0; }
.c9 .c9-prose .pl-bleed > h2 + .pl-cards { margin-top: 28px; }
.c9 .c9-prose .pl-why .pl-tile { border-top: 2px solid var(--gold); }

/* The two FAQs side by side, with the list of other services under the
   shorter one. */
.c9 .c9-prose .pl-faq2 { align-items: start; gap: 56px; }
.c9 .c9-prose .pl-faq2 .pl-col > h2 { margin: 0; font-size: clamp(24px, 2.3vw, 28px); line-height: 1.2; }
.c9 .c9-prose .pl-faq2 .pl-col > h2 + p { margin-top: 12px; font-size: 16px; line-height: 1.6; }
.c9 .c9-prose .pl-faq2 .pl-col > h2 + details,
.c9 .c9-prose .pl-faq2 .pl-col > p + details { margin-top: 20px; }
.c9 .c9-prose .pl-more {
  margin-top: 36px; padding: 24px 26px 26px; background: #fff;
  border: 1px solid var(--line); border-left: 3px solid var(--gold);
}
.c9 .c9-prose .pl-more h3 { margin: 0; font-size: 19px; }
.c9 .c9-prose .pl-more p { margin: 8px 0 0; font-size: 15.5px; }
.c9 .c9-prose .pl-more ul { margin: 12px 0 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
.c9 .c9-prose .pl-more ul > li { margin-top: .45em; font-size: 15.5px; line-height: 1.5; }
@media (max-width: 640px) {
  .c9 .c9-prose .pl-more ul { grid-template-columns: minmax(0, 1fr); }
}

/* The newsletter form as one card. Its checklist went on 15 Oct 2026 (Kyle:
   "Hide them"), which left the right half empty, so the heading and its line
   are the left half and the form the right, one field group to a row. */
.c9 .c9-prose .pl-signup {
  background: #fff; border: 1px solid var(--line); border-top: 2px solid var(--navy);
  padding: 40px 44px 38px; scroll-margin-top: 96px;
  display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); column-gap: 56px; align-items: start;
}
.c9 .c9-prose .pl-signup-head h2 { margin: 0; font-size: clamp(24px, 2.3vw, 30px); line-height: 1.18; }
.c9 .c9-prose .pl-signup-head p { margin: 10px 0 0; }
.c9 .c9-prose .pl-signup form {
  margin: 0; padding: 0; border: 0; background: none;
  display: grid; grid-template-columns: minmax(0, 1fr); row-gap: 14px; align-items: start;
}
.c9 .c9-prose .pl-signup form > * { margin: 0; }
.c9 .c9-prose .pl-signup form > .fname-lname-wrapper,
.c9 .c9-prose .pl-signup form > p:has(#email) { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
/* Live's three fields (c9_newsletter_form()): the email alone on its row. */
.c9 .c9-prose .pl-signup form > p:has(#email):not(:has(#phone)) { grid-template-columns: minmax(0, 1fr); }
.c9 .c9-prose .pl-signup form input[type="text"],
.c9 .c9-prose .pl-signup form textarea { width: 100%; margin: 0; }
.c9 .c9-prose .pl-signup form textarea { height: 86px; min-height: 86px; display: block; }
.c9 .c9-prose .pl-signup form p:has(textarea) br { display: none; }
.c9 .c9-prose .pl-signup form .services-submit-button { margin-top: 10px; }
@media (max-width: 980px) {
  .c9 .c9-prose .pl-signup { grid-template-columns: minmax(0, 1fr); }
  .c9 .c9-prose .pl-signup form { margin-top: 28px; }
}
@media (max-width: 860px) {
  .c9 .c9-prose .pl-signup { padding: 28px 25px 26px; }
}
@media (max-width: 480px) {
  .c9 .c9-prose .pl-signup form > .fname-lname-wrapper,
  .c9 .c9-prose .pl-signup form > p:has(#email) { grid-template-columns: minmax(0, 1fr); }
}
/* Stripe advisory: each question card keeps HOST's icon, beside the question,
   and the cards sit on the tinted band. */
.c9 .c9-prose .pl-qs > .pl-tile { display: grid; grid-template-columns: 48px minmax(0, 1fr); column-gap: 16px; align-items: center; }
.c9 .c9-prose .pl-qs > .pl-tile > img { display: block; width: 48px; height: 48px; }
.c9 .c9-prose .pl-qs > .pl-tile > h3 { margin: 0; }
/* The closing band and the footer were the same navy with nothing between
   them, so "Start with a free consultation" ran straight into the footer and
   read as one block (Noel, 5 Oct 2026, on the calculator: "merges into footer
   too much"). The footer takes the deeper navy and a line on its top edge.
   Shared by every page; the footer's content is untouched.
   Kyle, 15 Oct 2026, still "navy with no break": "Add a gold rule or a
   lighter band between them." A gold rule, 3px like the one over .pl-band. */
.c9 footer.site-foot { background: var(--navy-deep); border-top: 3px solid var(--gold); }

/* --- Sales tax registration, layout only (Noel, 5 Oct 2026: "still kind
   ugly"). Kyle signed this page off on 2 Oct, so no word changed. What it
   was: "What it costs" and the form in a 700px column centred under
   full-width sections; a 40px FAQ heading beside 900px of empty column with
   the first answer open; the e-book form hanging off the end of the answers.
   The form now sits beside "How it works" and "What it costs" (the Filings
   pattern), and the FAQ heading shares its column with the e-book form. */
/* 8 Oct 2026, Noel: the area "looks werid and unlabanche" and the e-book
   sign-up "don't mathc well". It was a four-line heading over a 329px card in
   the left third, ending 200px below the questions beside it. Now the heading
   runs across the top, the questions take the left and the e-book card the
   right, and the card's fields look like the lead form's above: the labels
   are inside the fields (placeholders added in functions-c9.php) and hidden
   from sight here, kept for screen readers. */
.c9 .c9-prose .pl-faqx { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); column-gap: 64px; row-gap: 30px; align-items: start; }
.c9 .c9-prose .pl-faqx-head { grid-column: 1 / -1; }
.c9 .c9-prose .pl-faqx-head > h2 { margin: 0; max-width: 30ch; text-wrap: balance; font-size: clamp(30px, 3.2vw, 42px); line-height: 1.08; letter-spacing: -.028em; }
.c9 .c9-prose .pl-faqx-main > :first-child { margin-top: 0; }
.c9 .c9-prose .pl-faqx-main > * + * { margin-top: 1.15em; }
.c9 .c9-prose .pl-faqx-main > details + details { margin-top: 0; }
.c9 .c9-prose .pl-ebook {
  margin: 0; padding: 30px 30px 28px; background: #fff;
  border: 1px solid var(--line); border-top: 2px solid var(--navy);
  box-shadow: 0 30px 60px -44px rgba(11, 43, 84, .5);
}
.c9 .c9-prose .pl-ebook > h3 { margin: 0; font-size: 22px; line-height: 1.25; letter-spacing: -.012em; }
.c9 .c9-prose .pl-ebook > p { margin: 8px 0 0; font-size: 15.5px; line-height: 1.55; }
.c9 .c9-prose .pl-ebook > p:empty { display: none; }
@media (max-width: 980px) {
  /* One column: the heading, the questions, then the e-book form. */
  .c9 .c9-prose .pl-faqx { grid-template-columns: minmax(0, 1fr); }
  .c9 .c9-prose .pl-ebook { max-width: 560px; }
}
/* The e-book form inside its card: one frame, not two, and the fields one to
   a row. Gravity sets name and email at half width, which in a 280px card
   made three 50px boxes. */
.c9 .c9-prose .pl-ebook #gform_wrapper_8,
.c9 .c9-prose .pl-ebook .gform_wrapper.gform_wrapper.gravity-theme {
  margin: 18px 0 0; padding: 0; border: 0; background: none; box-shadow: none;
}
.c9 .c9-prose .pl-ebook .gform_wrapper.gravity-theme .gform_fields { display: grid; grid-template-columns: minmax(0, 1fr); row-gap: 14px; }
.c9 .c9-prose .pl-ebook .gform_wrapper.gravity-theme .gform_fields > .gfield { grid-column: 1 / -1; min-width: 0; }
.c9 .c9-prose .pl-ebook .gform_wrapper.gravity-theme .ginput_complex { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.c9 .c9-prose .pl-ebook .gform_wrapper.gravity-theme .ginput_complex > span { padding: 0; min-width: 0; }
.c9 .c9-prose .pl-ebook .gform_wrapper.gravity-theme input[type="text"],
.c9 .c9-prose .pl-ebook .gform_wrapper.gravity-theme input[type="email"] { width: 100%; }

/* --- Service page, banded pattern (.pland--bands), 5 Oct 2026 ---------------
   Noel on Filings: "still looks bad ... lets really figure out why". Measured
   against live and four comparable pricing pages, the page was one cream
   surface for 2,548px (65% of it), had no picture at all, and drew the same
   white outlined box seven times with six section headings the same size.
   This pattern is what was missing: each section on its own full-width
   surface, larger centred headings, HOST's own icons on the steps, plan cards
   that look like plans, real buttons, quotes on navy. Filings is the first
   page on it; the other service pages follow only if Noel says so (Kyle
   signed them off on 2 Oct).

   Surfaces reach the edges of the screen from inside the template's single
   wrap. */
.c9 .pbody:has(.pland--bands) { padding: 0; }
.c9 .pland--bands { --pl-text: #2c3a55; }
.c9 .c9-prose .pland--bands > * + * { margin-top: 0; }
.c9 .c9-prose .pland--bands > section { padding: 96px 0; scroll-margin-top: 40px; }
/* Sections overlap by a pixel. A section that ends on a fraction of a pixel
   left a light hairline across the content width where white met navy. */
.c9 .c9-prose .pland--bands > section + section { margin-top: -1px; }
/* One painted layer per surface (a border image that fills the box and runs
   out sideways), not a background plus a shadow: those two met the section
   above on slightly different pixels and left a hairline at the sides. */
.c9 .c9-prose .pl-sec--white { border-image: conic-gradient(#fff 0 0) fill 0 / 0 / 0 100vmax; }
.c9 .c9-prose .pl-sec--wash { border-image: conic-gradient(var(--wash) 0 0) fill 0 / 0 / 0 100vmax; }
.c9 .c9-prose .pl-sec--navy { border-image: conic-gradient(var(--navy) 0 0) fill 0 / 0 / 0 100vmax; }

/* Section heading, centred over a short gold rule. */
.c9 .c9-prose .pl-h2c,
#main-content .c9 .c9-prose .pl-h2c {
  margin: 0; text-align: center; text-wrap: balance;
  font-size: clamp(30px, 3.4vw, 44px); line-height: 1.06; letter-spacing: -.03em;
}
.c9 .c9-prose .pl-h2c::after { content: ""; display: block; width: 56px; height: 4px; margin: 22px auto 0; background: var(--gold); }
.c9 .c9-prose .pl-sec--navy .pl-h2c { color: #fff; }

/* Opening section: heading and facts on the left, the copy on the right. */
.c9 .c9-prose .pl-lede {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr); column-gap: 72px;
  grid-template-areas: "h c" "f c"; grid-template-rows: auto 1fr; align-items: start;
}
.c9 .c9-prose .pl-lede > h2 { grid-area: h; margin: 0; text-wrap: balance; font-size: clamp(30px, 3.4vw, 44px); line-height: 1.06; letter-spacing: -.03em; }
.c9 .c9-prose .pl-lede-copy { grid-area: c; }
.c9 .c9-prose .pl-lede-copy > p { margin: 0; font-size: 19px; line-height: 1.65; color: var(--pl-text); }
.c9 .c9-prose .pl-lede-copy > p + p { margin-top: 18px; }
.c9 .c9-prose .pl-facts { grid-area: f; display: flex; gap: 44px; margin-top: 36px; padding-top: 26px; border-top: 2px solid var(--navy); }
.c9 .c9-prose .pl-facts > div { display: flex; flex-direction: column; gap: 6px; }
.c9 .c9-prose .pl-facts b { font-size: 34px; line-height: 1; font-weight: 800; letter-spacing: -.03em; color: var(--navy); }
.c9 .c9-prose .pl-facts span { font-size: 14.5px; line-height: 1.4; color: var(--mut); max-width: 22ch; }

/* Steps with HOST's icons. The four rows (icon, number, title, text) are
   shared across the columns, so a title that wraps in one column does not
   push that column's text out of line with its neighbours. */
.c9 .c9-prose ol.pl-isteps {
  list-style: none; margin: 60px 0 0; padding: 0; counter-reset: plis;
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: auto auto auto 1fr;
}
.c9 .c9-prose ol.pl-isteps > li {
  display: grid; grid-template-rows: subgrid; grid-row: span 4;
  margin: 0; padding: 0 44px; border-left: 1px solid rgba(11, 43, 84, .15); counter-increment: plis;
}
.c9 .c9-prose ol.pl-isteps > li:first-child { padding-left: 0; border-left: 0; }
.c9 .c9-prose ol.pl-isteps > li:last-child { padding-right: 0; }
.c9 .c9-prose ol.pl-isteps > li::before {
  content: counter(plis, decimal-leading-zero); position: static; grid-row: 2; margin: 26px 0 0;
  font-family: var(--c9-mono); font-size: 12px; font-weight: 600; letter-spacing: .16em; color: var(--gold-text);
}
.c9 .c9-prose .pl-ic {
  grid-row: 1; display: grid; place-items: center; width: 96px; height: 96px; border-radius: 50%;
  background: #fff; box-shadow: 0 14px 30px -18px rgba(11, 43, 84, .45);
}
.c9 .c9-prose .pl-ic img { display: block; width: 56px; height: 56px; }
.c9 .c9-prose .pl-isteps h3 { grid-row: 3; margin: 8px 0 0; font-size: 21px; line-height: 1.25; letter-spacing: -.015em; }
.c9 .c9-prose .pl-isteps p { grid-row: 4; margin: 10px 0 0; font-size: 16.5px; line-height: 1.6; color: var(--mut); }

/* Plan cards. The lead plan has a navy head, so the eye lands on it first. */
.c9 .c9-prose .pl-plans2 { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 28px; margin-top: 56px; align-items: stretch; }
.c9 .c9-prose .pl-plan2 {
  display: flex; flex-direction: column; overflow: hidden; background: #fff;
  border: 1px solid var(--line); border-radius: 8px; box-shadow: 0 40px 50px -44px rgba(11, 43, 84, .6);
}
.c9 .c9-prose .pl-plan2--lead { border-color: var(--navy); }
.c9 .c9-prose .pl-plan2-head { padding: 34px 38px 30px; border-bottom: 1px solid var(--line); }
.c9 .c9-prose .pl-plan2--lead .pl-plan2-head { background: var(--navy); border-bottom: 0; border-top: 5px solid var(--gold); }
.c9 .c9-prose .pl-plan2-k { margin: 0; font-family: var(--c9-mono); font-size: 13px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--gold-text); }
.c9 .c9-prose .pl-plan2--lead .pl-plan2-k { color: var(--gold); }
.c9 .c9-prose .pl-plan2-price { margin: 16px 0 0; display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; font-size: 17px; color: var(--mut); }
.c9 .c9-prose .pl-plan2-price b { font-size: 72px; line-height: .92; font-weight: 800; letter-spacing: -.04em; color: var(--navy); }
.c9 .c9-prose .pl-plan2-price b.q { font-size: clamp(30px, 3vw, 40px); line-height: 1.1; letter-spacing: -.03em; }
.c9 .c9-prose .pl-plan2--lead .pl-plan2-price { color: #ffffffc7; }
.c9 .c9-prose .pl-plan2--lead .pl-plan2-price b { color: #fff; }
.c9 .c9-prose .pl-plan2-terms { margin: 14px 0 0; font-size: 16px; line-height: 1.5; color: var(--mut); }
.c9 .c9-prose .pl-plan2--lead .pl-plan2-terms { color: #ffffffc7; }
.c9 .c9-prose .pl-plan2-body { display: flex; flex-direction: column; flex: 1 1 auto; padding: 28px 38px 36px; }
.c9 .c9-prose .pl-plan2-lead { margin: 0 0 6px; font-size: 16.5px; font-weight: 700; color: var(--navy); }
.c9 .c9-prose .pl-plan2-act { margin: auto 0 0; padding-top: 30px; }
/* Kyle, 15 Oct 2026: "make the two cards the same height, and add a 'Most
   clients' tag to Essentials+". They stretched to one height already, but at
   1.3 to 1 the lead card read as the bigger box and the two heads ended at
   different lines. Each card's head and body now sit on one shared pair of
   rows, so the heads end level, and from 1100px the two are the same width.
   Below that the Essentials+ list needs the extra width for its two
   columns ("Sales tax / return filing" at 1024). */
@media (min-width: 981px) {
  .c9 .c9-prose .pl-plans2 { grid-template-rows: auto 1fr; }
  .c9 .c9-prose .pl-plan2 { display: grid; grid-row: span 2; grid-template-rows: subgrid; }
}
@media (min-width: 1100px) {
  .c9 .c9-prose .pl-plans2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.c9 .c9-prose .pl-plan2-head { position: relative; }
.c9 .c9-prose .pl-plan2-tag {
  position: absolute; top: 30px; right: 38px; margin: 0; padding: 6px 12px; border-radius: 999px;
  background: var(--gold); color: var(--navy); font-family: var(--c9-mono); font-size: 12px; font-weight: 700;
  line-height: 1.2; letter-spacing: .12em; text-transform: uppercase;
}
@media (max-width: 640px) {
  .c9 .c9-prose .pl-plan2-tag { top: 22px; right: 24px; }
}
/* Check lists. */
.c9 .c9-prose ul.pl-checks { list-style: none; margin: 0; padding: 0; }
.c9 .c9-prose ul.pl-checks > li { position: relative; margin: 0; padding: 9px 0 9px 32px; font-size: 16.5px; line-height: 1.4; color: var(--pl-text); break-inside: avoid; }
.c9 .c9-prose ul.pl-checks > li::before {
  content: ""; position: absolute; left: 0; top: 10px; width: 20px; height: 20px; border-radius: 50%;
  background: var(--gold) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5.5 10.4l3 3 6-6.4' fill='none' stroke='%23020819' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 20px no-repeat;
}
.c9 .c9-prose ul.pl-checks--2 { columns: 2; column-gap: 36px; }

/* Quotes on navy, a gold rule over each. */
.c9 .c9-prose .pl-qn { display: grid; grid-template-columns: 1fr 1fr; margin-top: 56px; }
.c9 .c9-prose .pl-qn figure { margin: 0; padding: 0 56px; border-left: 1px solid rgba(255, 255, 255, .18); }
.c9 .c9-prose .pl-qn figure:first-child { padding-left: 0; border-left: 0; }
.c9 .c9-prose .pl-qn figure:last-child { padding-right: 0; }
.c9 .c9-prose .pl-qn figure::before { content: ""; display: block; width: 44px; height: 4px; background: var(--gold); }
.c9 .c9-prose .pl-qn blockquote { margin: 22px 0 0; padding: 0; border: 0; background: none; }
.c9 .c9-prose .pl-qn blockquote p { margin: 0; font-size: clamp(18px, 1.6vw, 22px); line-height: 1.5; font-weight: 500; color: #fff; }
.c9 .c9-prose .pl-qn figcaption { margin-top: 22px; font-family: var(--c9-mono); font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); }
.c9 .c9-prose .pl-qn-more,
#main-content .c9 .c9-prose .pl-qn-more { margin: 48px 0 0; text-align: center; font-size: 16px; font-weight: 600; color: #fff; }
/* One class more than the prose link rule, which paints links navy: on this
   band that was navy on navy, an invisible link with a gold line under it. */
.c9 .c9-prose .pl-sec--navy .pl-qn-more a:not(.btn) { color: #fff; box-shadow: inset 0 -1px 0 0 var(--gold); }
.c9 .c9-prose .pl-sec--navy .pl-qn-more a:not(.btn):hover { color: var(--gold); }

/* The form pair inside a banded page: larger headings, to match. */
.c9 .c9-prose .pland--bands .pl-pair--form h2 { font-size: clamp(28px, 2.8vw, 38px); line-height: 1.08; letter-spacing: -.028em; }
.c9 .c9-prose .pland--bands .pl-pair--form .pl-card { box-shadow: 0 30px 60px -44px rgba(11, 43, 84, .5); }

@media (max-width: 980px) {
  .c9 .c9-prose .pland--bands > section { padding: 76px 0; }
  .c9 .c9-prose .pl-lede { grid-template-columns: minmax(0, 1fr); grid-template-areas: "h" "c" "f"; grid-template-rows: none; }
  .c9 .c9-prose .pl-lede-copy { margin-top: 24px; }
  .c9 .c9-prose .pl-plans2 { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 860px) {
  /* Steps one to a row: icon on the left, number, title and text beside it. */
  .c9 .c9-prose ol.pl-isteps { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; margin-top: 44px; }
  .c9 .c9-prose ol.pl-isteps > li {
    grid-row: auto; grid-template-rows: auto auto 1fr; grid-template-columns: 72px minmax(0, 1fr); column-gap: 22px;
    padding: 28px 0; border-left: 0; border-top: 1px solid rgba(11, 43, 84, .15);
  }
  .c9 .c9-prose ol.pl-isteps > li:first-child { padding-top: 0; border-top: 0; }
  .c9 .c9-prose ol.pl-isteps > li:last-child { padding-bottom: 0; }
  .c9 .c9-prose .pl-ic { grid-column: 1; grid-row: 1 / span 3; width: 72px; height: 72px; }
  .c9 .c9-prose .pl-ic img { width: 42px; height: 42px; }
  .c9 .c9-prose ol.pl-isteps > li::before { grid-column: 2; grid-row: 1; margin-top: 2px; }
  .c9 .c9-prose .pl-isteps h3 { grid-column: 2; grid-row: 2; margin-top: 6px; }
  .c9 .c9-prose .pl-isteps p { grid-column: 2; grid-row: 3; margin-top: 8px; }
  .c9 .c9-prose .pl-qn { grid-template-columns: minmax(0, 1fr); margin-top: 44px; }
  .c9 .c9-prose .pl-qn figure { padding: 36px 0 0; margin-top: 36px; border-left: 0; border-top: 1px solid rgba(255, 255, 255, .18); }
  .c9 .c9-prose .pl-qn figure:first-child { padding-top: 0; margin-top: 0; border-top: 0; }
}
@media (max-width: 640px) {
  .c9 .c9-prose .pland--bands > section { padding: 60px 0; }
  .c9 .c9-prose .pl-lede-copy > p { font-size: 17.5px; }
  .c9 .c9-prose .pl-facts { gap: 28px; }
  .c9 .c9-prose .pl-facts b { font-size: 30px; }
  .c9 .c9-prose .pl-plans2 { margin-top: 40px; }
  .c9 .c9-prose .pl-plan2-head { padding: 26px 24px 24px; }
  .c9 .c9-prose .pl-plan2-body { padding: 20px 24px 28px; }
  .c9 .c9-prose .pl-plan2-price b { font-size: 60px; }
  .c9 .c9-prose ul.pl-checks--2 { columns: 1; }
  /* "Book a call about Enterprise" has to fit one line in a 284px button. */
  .c9 .c9-prose .pl-plan2-act .btn { width: 100%; justify-content: center; padding: 15px 14px; font-size: 15px; }
  .c9 .c9-prose .pl-plan2-act .btn .arr { display: none; }
  .c9 .c9-prose ol.pl-isteps > li { grid-template-columns: 60px minmax(0, 1fr); column-gap: 18px; }
  .c9 .c9-prose .pl-ic { width: 60px; height: 60px; }
  .c9 .c9-prose .pl-ic img { width: 36px; height: 36px; }
}
/* Between 981 and 1180px the line under the headline ran across the face in
   the photo. It wraps earlier there and stays on the navy. */
@media (min-width: 981px) and (max-width: 1180px) {
  .c9 .hero--photo .hero-sub { max-width: 500px; }
}

/* Banded pattern on a second service page (VDA, 5 Oct 2026; Noel: "did we
   fix vda page ?"). Layout only, the page's own words. */
/* A statement on a navy surface. */
.c9 .c9-prose .pl-say,
#main-content .c9 .c9-prose .pl-say p { text-align: center; }
.c9 .c9-prose .pl-say-line { margin: 0 auto; max-width: 22ch; text-wrap: balance; font-size: clamp(28px, 3.2vw, 42px); line-height: 1.1; font-weight: 800; letter-spacing: -.03em; color: #fff; }
.c9 .c9-prose .pl-say-line::after { content: ""; display: block; width: 56px; height: 4px; margin: 24px auto 0; background: var(--gold); }
.c9 .c9-prose .pl-say-sub { margin: 22px auto 0; max-width: 56ch; font-size: 18px; line-height: 1.6; color: #ffffffc7; }
/* The quotes on a light surface. */
.c9 .c9-prose .pl-qn--light figure { border-left-color: rgba(11, 43, 84, .15); }
.c9 .c9-prose .pl-qn--light blockquote p { color: var(--navy); }
.c9 .c9-prose .pl-qn--light figcaption { color: var(--gold-text); }
.c9 .c9-prose .pl-qn-more--light,
#main-content .c9 .c9-prose .pl-qn-more--light { color: var(--navy); }
@media (max-width: 860px) {
  .c9 .c9-prose .pl-qn--light figure { border-top-color: rgba(11, 43, 84, .15); }
}
/* The form's own column sits in the middle of its band, heading centred. */
.c9 .c9-prose .pland--bands > .pl-form > h2,
#main-content .c9 .c9-prose .pland--bands > .pl-form > h2 { text-align: center; font-size: clamp(28px, 2.8vw, 38px); line-height: 1.08; letter-spacing: -.028em; }
.c9 .c9-prose .pland--bands > .pl-form form { box-shadow: 0 30px 60px -44px rgba(11, 43, 84, .5); }
/* The band's own padding is the space above the form heading; the prose
   heading margin on top of it left 175px of empty band. */
.c9 .c9-prose .pland--bands > .pl-form > h2 { margin-top: 0; }

/* A photograph in an interior hero's right half (VDA, 8 Oct 2026), the home
   hero's treatment without the strip of figures: the photo fades into the navy
   on its left. Set with 'hero_photo' in c9_page_meta(). */
.c9 .phero--photo::after { display: none; }
.c9 .phero--photo .hero-photo::after { background: linear-gradient(90deg, var(--navy) 0%, rgba(11, 43, 84, .62) 30%, rgba(11, 43, 84, .2) 100%); }
.c9 .phero--photo .phero-main { max-width: 640px; }
@media (min-width: 981px) and (max-width: 1180px) {
  .c9 .phero--photo .phero-main { max-width: 520px; }
}

/* A question and its answer (VDA's first section, 8 Oct 2026): the heading
   across the top, the set-up paragraph on the left, the answer paragraph on
   the right at a larger size on a gold rule. Two paragraphs of someone's
   prose become a balanced pair without a word changing. */
.c9 .c9-prose .pl-answer > h2 { margin: 0; text-wrap: balance; font-size: clamp(30px, 3.4vw, 44px); line-height: 1.06; letter-spacing: -.03em; }
.c9 .c9-prose .pl-answer-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 72px; align-items: start; margin-top: 40px; }
.c9 .c9-prose .pl-answer-grid > p { margin: 0; }
.c9 .c9-prose .pl-answer-grid > .pl-answer-a { font-size: 19px; line-height: 1.65; color: var(--pl-text); }
.c9 .c9-prose .pl-answer-grid > .pl-answer-b {
  border-left: 4px solid var(--gold); padding: 4px 0 4px 32px;
  font-size: clamp(22px, 1.7vw, 24px); line-height: 1.42; font-weight: 600; letter-spacing: -.012em; color: var(--navy);
}
@media (max-width: 980px) {
  .c9 .c9-prose .pl-answer-grid { grid-template-columns: minmax(0, 1fr); row-gap: 30px; margin-top: 28px; }
}
@media (max-width: 640px) {
  .c9 .c9-prose .pl-answer-grid > .pl-answer-a { font-size: 17.5px; }
  .c9 .c9-prose .pl-answer-grid > .pl-answer-b { padding-left: 22px; font-size: 20px; }
}

/* --- Hub pages on the banded pattern (.pland--bands.pl-hub), 8 Oct 2026 -----
   Partner Program, Customer Stories, About, Resources and Careers. Kyle asked
   for cards on these pages (2 Oct) and got them, all the same outlined white
   box on one cream surface: 13 on Partner Program, which was one surface for
   85% of its height. The cards stay. What changes is around them: each
   section on its own surface, centred headings, HOST's icons in the cards,
   quotes set as quotes, and no outline on a card that already sits on a
   tint. Same words. */
.c9 .c9-prose .pl-sub,
#main-content .c9 .c9-prose .pl-sub {
  margin: 20px auto 0; max-width: 62ch; text-align: center; text-wrap: balance;
  font-size: 18px; line-height: 1.6; color: var(--pl-text);
}
.c9 .c9-prose .pl-sec--navy .pl-sub { color: #ffffffc7; }

/* Cards in a band: no outline, a soft shadow, more room. On a white band the
   card is tinted instead, since white on white has no edge. */
.c9 .c9-prose .pl-hub .pl-cards,
.c9 .c9-prose .pl-hub .pl-quote-cards { margin-top: 52px; gap: 24px; }
.c9 .c9-prose .pl-hub .pl-tile {
  padding: 30px 28px 32px; border: 0; border-radius: 8px;
  box-shadow: 0 24px 44px -34px rgba(11, 43, 84, .5);
}
.c9 .c9-prose .pl-hub .pl-sec--white .pl-tile { background: var(--wash); box-shadow: none; }
.c9 .c9-prose .pl-hub .pl-tile h3 { font-size: 19px; line-height: 1.28; letter-spacing: -.012em; }
.c9 .c9-prose .pl-hub .pl-tile p,
.c9 .c9-prose .pl-hub .pl-tile li { font-size: 16px; }
/* HOST's icon at the head of a card. */
.c9 .c9-prose .pl-hub .pl-tile > .pl-ic { width: 68px; height: 68px; margin-bottom: 18px; background: var(--wash); box-shadow: none; }
.c9 .c9-prose .pl-hub .pl-sec--white .pl-tile > .pl-ic { background: #fff; }
.c9 .c9-prose .pl-hub .pl-tile > .pl-ic img { width: 40px; height: 40px; }
/* Icon beside the text, for two wide cards across (About's values). Desktop
   only: in a narrower card the text beside the icon was a 200px column nine
   lines long, so below 981px the icon sits above it like every other card. */
@media (min-width: 981px) {
  .c9 .c9-prose .pl-hub .pl-cards--side > .pl-tile { display: grid; grid-template-columns: 68px minmax(0, 1fr); column-gap: 22px; align-content: start; }
  .c9 .c9-prose .pl-hub .pl-cards--side > .pl-tile > .pl-ic { grid-row: 1 / span 2; margin-bottom: 0; }
  .c9 .c9-prose .pl-hub .pl-cards--side > .pl-tile > h3 { grid-column: 2; margin-top: 4px; }
  .c9 .c9-prose .pl-hub .pl-cards--side > .pl-tile > p { grid-column: 2; }
}
/* The unboxed reasons keep their gold rule and take no shadow. */
.c9 .c9-prose .pl-hub .pl-cards--plain { row-gap: 44px; column-gap: 48px; }
.c9 .c9-prose .pl-hub .pl-cards--plain > .pl-tile,
.c9 .c9-prose .pl-hub .pl-sec--white .pl-cards--plain > .pl-tile { padding: 22px 0 0; border-top: 3px solid var(--gold); border-radius: 0; background: none; box-shadow: none; }
.c9 .c9-prose .pl-hub .pl-kicker,
#main-content .c9 .c9-prose .pl-hub .pl-kicker { margin: 52px 0 0; text-align: center; font-size: 21px; }
/* A gold tick at the head of each "fit" card. */
.c9 .c9-prose .pl-hub .pl-cards--check > .pl-tile::before {
  content: ""; display: block; position: static; width: 28px; height: 28px; margin: 0 0 16px; border-radius: 50%;
  background: var(--gold) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5.5 10.4l3 3 6-6.4' fill='none' stroke='%23020819' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 28px no-repeat;
}
.c9 .c9-prose .pl-hub .pl-cards--check > .pl-tile p { font-size: 16.5px; color: var(--pl-text); }
/* Perks: a title, sometimes a line, under a gold rule. */
.c9 .c9-prose .pl-hub .pl-perks .pl-tile { padding: 24px 24px 26px; border-top: 3px solid var(--gold); border-radius: 0 0 8px 8px; }
.c9 .c9-prose .pl-hub .pl-perks .pl-tile > p { margin-top: 6px; }
.c9 .c9-prose .pl-hub .pl-perks > .pl-tile:last-child:nth-child(4n+3) { grid-column: auto; }
/* Every card the same height, its words in the middle. "Work remote" has a
   line under its title and the other seven do not, so the first row stood
   30px taller than the second (Noel, 8 Oct 2026: "cards shoulda ll be
   similar sizes"). */
.c9 .c9-prose .pl-hub .pl-perks { grid-auto-rows: 1fr; }
.c9 .c9-prose .pl-hub .pl-perks > .pl-tile { display: flex; flex-direction: column; justify-content: center; min-height: 104px; }
@media (max-width: 640px) {
  /* Two across on a phone: the padding gives way so "Profit sharing bonuses" fits. */
  .c9 .c9-prose .pl-hub .pl-perks .pl-tile { padding: 16px 14px 18px; }
  .c9 .c9-prose .pl-hub .pl-perks .pl-tile h3 { font-size: 16px; }
  .c9 .c9-prose .pl-hub .pl-perks .pl-tile p { font-size: 14.5px; }
}

/* Review cards on a tint: white, a gold rule on top, no outline. */
.c9 .c9-prose .pl-hub .pl-quote-cards blockquote {
  padding: 30px 28px 28px; border: 0; border-top: 3px solid var(--gold); border-radius: 0 0 8px 8px;
  box-shadow: 0 24px 44px -34px rgba(11, 43, 84, .5);
}

/* Four quotes, two by two. */
.c9 .c9-prose .pl-qn--4 { row-gap: 60px; }
.c9 .c9-prose .pl-qn--4 figure:nth-child(odd) { padding-left: 0; border-left: 0; }
.c9 .c9-prose .pl-qn--4 figure:nth-child(even) { padding-right: 0; }
.c9 .c9-prose .pl-qn--4 figure:first-child { padding-right: 56px; }
.c9 .c9-prose .pl-qn--light blockquote p strong { color: var(--navy); font-weight: 800; }
@media (max-width: 860px) {
  .c9 .c9-prose .pl-qn--4 { row-gap: 0; }
  .c9 .c9-prose .pl-qn--4 figure,
  .c9 .c9-prose .pl-qn--4 figure:first-child { padding-right: 0; }
}

/* Four statements across a navy band (Partner Program). */
.c9 .c9-prose .pl-points-h,
#main-content .c9 .c9-prose .pl-points-h { font-weight: 800; color: #fff; }
.c9 .c9-prose ul.pl-points { list-style: none; margin: 56px 0 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.c9 .c9-prose ul.pl-points > li {
  margin: 0; padding: 0 30px; border-left: 1px solid rgba(255, 255, 255, .18);
  font-size: 19px; line-height: 1.45; font-weight: 600; color: #fff; text-wrap: balance;
}
.c9 .c9-prose ul.pl-points > li:first-child { padding-left: 0; border-left: 0; }
.c9 .c9-prose ul.pl-points > li:last-child { padding-right: 0; }
.c9 .c9-prose ul.pl-points > li::before { content: ""; display: block; position: static; width: 44px; height: 4px; margin: 0 0 22px; background: var(--gold); border-radius: 0; }
@media (max-width: 980px) {
  .c9 .c9-prose ul.pl-points { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 44px; }
  .c9 .c9-prose ul.pl-points > li:nth-child(odd) { padding-left: 0; border-left: 0; }
  .c9 .c9-prose ul.pl-points > li:nth-child(even) { padding-right: 0; }
}
@media (max-width: 640px) {
  .c9 .c9-prose ul.pl-points { grid-template-columns: minmax(0, 1fr); row-gap: 0; margin-top: 40px; }
  .c9 .c9-prose ul.pl-points > li { padding: 26px 0 0; margin-top: 26px; border-left: 0; border-top: 1px solid rgba(255, 255, 255, .18); font-size: 18px; }
  .c9 .c9-prose ul.pl-points > li:first-child { padding-top: 0; margin-top: 0; border-top: 0; }
  .c9 .c9-prose ul.pl-points > li::before { display: none; }
}

/* A heading and its paragraph on the left, something larger on the right
   (the comparison table; a customer's quote). */
.c9 .c9-prose .pl-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); column-gap: 72px; align-items: start; }
.c9 .c9-prose .pl-split--even { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; }
.c9 .c9-prose .pl-split--mid { align-items: center; }
.c9 .c9-prose .pl-split > .pl-col > h2 { margin: 0; text-wrap: balance; font-size: clamp(30px, 3.4vw, 44px); line-height: 1.06; letter-spacing: -.03em; }
.c9 .c9-prose .pl-split--even > .pl-col > h2 { font-size: clamp(28px, 2.8vw, 36px); line-height: 1.1; }
.c9 .c9-prose .pl-split > .pl-col > p { margin: 22px 0 0; font-size: 18px; line-height: 1.65; color: var(--pl-text); }
.c9 .c9-prose .pl-split > .pl-col > .pl-split-act { font-size: 16.5px; font-weight: 600; color: var(--navy); }
.c9 .c9-prose .pl-split > .pl-col > :first-child { margin-top: 0; }
.c9 .c9-prose .pl-split .c9-table-scroll { margin: 0; }
.c9 .c9-prose .pl-pull { margin: 0; padding: 6px 0 6px 34px; border-left: 4px solid var(--gold); }
.c9 .c9-prose .pl-pull blockquote { margin: 0; padding: 0; border: 0; background: none; }
.c9 .c9-prose .pl-pull blockquote p { margin: 0; font-size: clamp(20px, 1.7vw, 23px); line-height: 1.46; font-weight: 600; letter-spacing: -.01em; color: var(--navy); }
.c9 .c9-prose .pl-pull figcaption { margin-top: 20px; font-family: var(--c9-mono); font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gold-text); }
@media (max-width: 980px) {
  .c9 .c9-prose .pl-split,
  .c9 .c9-prose .pl-split--even { grid-template-columns: minmax(0, 1fr); row-gap: 36px; }
}
@media (max-width: 640px) {
  .c9 .c9-prose .pl-pull { padding-left: 22px; }
}

/* Customer story cards: a navy head with the customer and the outcome, the
   story under it, the link on the bottom edge of both. */
.c9 .c9-prose .pland--bands > section.pl-stories { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; align-items: stretch; }
.c9 .c9-prose .pl-story {
  display: flex; flex-direction: column; overflow: hidden; background: #fff;
  border: 1px solid var(--navy); border-radius: 8px; box-shadow: 0 40px 50px -44px rgba(11, 43, 84, .6);
}
.c9 .c9-prose .pl-story-pic { display: block; width: 100%; height: auto; aspect-ratio: 16 / 7; object-fit: cover; border-radius: 0; }
.c9 .c9-prose .pl-story-head { padding: 30px 38px 30px; background: var(--navy); border-top: 5px solid var(--gold); }
.c9 .c9-prose .pl-story-k { margin: 0; font-family: var(--c9-mono); font-size: 13px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--gold); }
.c9 .c9-prose .pl-story-head h2 { margin: 14px 0 0; text-wrap: balance; font-size: clamp(25px, 2.5vw, 32px); line-height: 1.12; letter-spacing: -.025em; color: #fff; }
.c9 .c9-prose .pl-story-body { display: flex; flex-direction: column; flex: 1 1 auto; padding: 30px 38px 34px; }
.c9 .c9-prose .pl-story-body > p { margin: 0; font-size: 16.5px; line-height: 1.65; color: var(--pl-text); }
.c9 .c9-prose .pl-story-body > p + p { margin-top: 14px; }
.c9 .c9-prose .pl-story-body > blockquote { margin: 26px 0 0; padding: 4px 0 4px 24px; border: 0; border-left: 4px solid var(--gold); background: none; }
.c9 .c9-prose .pl-story-body > blockquote p:not(.c9-cite) { margin: 0; font-size: 18.5px; line-height: 1.45; font-weight: 600; color: var(--navy); }
.c9 .c9-prose .pl-story-body > .pl-story-act { margin-top: auto; padding-top: 28px; font-weight: 600; color: var(--navy); }
@media (max-width: 860px) {
  .c9 .c9-prose .pland--bands > section.pl-stories { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
  .c9 .c9-prose .pl-story-head { padding: 26px 24px 24px; }
  .c9 .c9-prose .pl-story-body { padding: 24px 24px 28px; }
}

/* About: the three opening columns each start on a gold rule, the parent
   company is a split on navy, and the leadership cards are centred on a
   badge of initials. */
.c9 .c9-prose .pl-hub .pl-pair--3 { gap: 48px; }
.c9 .c9-prose .pl-hub .pl-pair--3 > .pl-col { padding-top: 26px; border-top: 3px solid var(--gold); }
.c9 .c9-prose .pl-hub .pl-pair--3 > .pl-col > p { font-size: 17px; line-height: 1.65; color: var(--pl-text); }
.c9 .c9-prose .pl-lede--navy > h2 { color: #fff; }
.c9 .c9-prose .pl-lede--navy > h2::after { content: ""; display: block; width: 56px; height: 4px; margin: 24px 0 0; background: var(--gold); }
.c9 .c9-prose .pl-lede--navy .pl-lede-copy > p { font-size: 20px; line-height: 1.6; color: #ffffffd9; }
.c9 .c9-prose .pl-lede--navy .pl-lede-copy > p strong { color: #fff; }
.c9 .c9-prose .pl-hub .pl-people > .pl-tile { padding: 36px 24px 34px; text-align: center; }
#main-content .c9 .c9-prose .pl-hub .pl-people > .pl-tile p,
#main-content .c9 .c9-prose .pl-hub .pl-people > .pl-tile h3 { text-align: center; }
.c9 .c9-prose .pl-avatar {
  display: grid; place-items: center; width: 88px; height: 88px; margin: 0 auto 20px; border-radius: 50%;
  background: var(--navy); border: 3px solid var(--gold);
  font-size: 27px; line-height: 1; font-weight: 800; letter-spacing: -.01em; color: #fff;
}
.c9 .c9-prose .pl-hub .pl-people > .pl-tile h3 { font-size: 22px; }

/* Resources: the news line under the three cards. */
.c9 .c9-prose .pl-newsline,
#main-content .c9 .c9-prose .pl-newsline { margin: 44px 0 0; text-align: center; font-size: 17.5px; color: var(--pl-text); }
/* Three cards, each a row: icon, title, then its links two across. Noel,
   8 Oct 2026: three across they "look too tall and skinny" (345px wide,
   520px tall, each link's description wrapping to three lines). */
.c9 .c9-prose .pl-hub .pl-cards--links { grid-template-columns: minmax(0, 1fr); gap: 20px; }
.c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile {
  display: grid; grid-template-columns: 68px minmax(0, 240px) minmax(0, 1fr); column-gap: 26px;
  grid-template-rows: auto auto 1fr; align-items: start; padding: 30px 34px;
}
.c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile > .pl-ic { grid-column: 1; grid-row: 1 / span 3; margin: 0; }
.c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile > .pl-tile-k { grid-column: 2; grid-row: 1; margin: 6px 0 0; }
.c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile > h3 { grid-column: 2; grid-row: 2; margin: 8px 0 0; font-size: 21px; }
.c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile > p:not(.pl-tile-k) { grid-column: 2; grid-row: 3; margin: 8px 0 0; }
.c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile > ul {
  grid-column: 3; grid-row: 1 / span 3; margin: 0; padding: 4px 0 0 34px;
  border-left: 1px solid var(--line); columns: 2; column-gap: 36px;
}
.c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile > ul > li { margin: 0 0 14px; break-inside: avoid; }
.c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile > ul > li:last-child { margin-bottom: 0; }
@media (max-width: 980px) {
  .c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile { grid-template-columns: 56px minmax(0, 1fr); column-gap: 18px; padding: 24px 22px 26px; }
  .c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile > .pl-ic { width: 56px; height: 56px; }
  .c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile > .pl-ic img { width: 34px; height: 34px; }
  .c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile > ul {
    grid-column: 1 / -1; grid-row: 4; margin-top: 20px; padding: 20px 0 0;
    border-left: 0; border-top: 1px solid var(--line);
  }
}
@media (max-width: 640px) {
  .c9 .c9-prose .pl-hub .pl-cards--links > .pl-tile > ul { columns: 1; }
}

/* A line on a navy band that is a link (Careers' address). */
.c9 .c9-prose .pl-sec--navy.pl-say .pl-say-line { max-width: none; font-size: clamp(22px, 2.6vw, 34px); }
.c9 .c9-prose .pl-sec--navy.pl-say .pl-say-line a:not(.btn) { color: #fff; box-shadow: inset 0 -2px 0 0 var(--gold); overflow-wrap: anywhere; }
.c9 .c9-prose .pl-sec--navy.pl-say .pl-say-line a:not(.btn):hover { color: var(--gold); }

/* The logo row sits straight on its band. */
.c9 .c9-prose .pl-hub .pl-logos .c9-logo-wall { margin-top: 52px; padding: 0; background: none; border: 0; }
/* The calendar's band. */
.c9 .c9-prose .pl-hub .pl-cal > .pl-h2c + * { margin-top: 44px; }

/* The state picker straight on the navy hero, without the white card
   ('hero_bare'; Noel, 8 Oct 2026: "white box in hero dont' work for me").
   Kyle asked for the picker itself, so it stays: a label, the list and the
   button. */
.c9 .phero-card.phero-card--bare { padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none; color: #fff; }
.c9 .phero-card--bare .pl-picker label { font-size: 13px; color: var(--gold); }
.c9 .phero-card--bare .pl-picker-row { gap: 14px; margin-top: 16px; }
.c9 .phero-card--bare .pl-picker select { height: 54px; border: 0; font-size: 17px; }
.c9 .phero-card--bare .pl-picker .btn { height: 54px; font-size: 16px; }

/* --- FAQs in bands ('toc_icons'), 8 Oct 2026 --------------------------------
   Each of the four sections is a band of its own, alternately cream and the
   tint, headed by one of HOST's icons. Not cream and white: those two are 5
   levels apart and read as one surface. The four section links are a row of
   cards across the top and the questions run two across (Noel, the same
   day: "page just doesnt' feel like good use of width", of a 260px list
   beside one 760px column of thirty-four questions). */
.c9 .pbody:has(.c9-toc-layout--bands) { padding-bottom: 0; overflow-x: clip; }
.c9 .c9-toc-layout--bands { display: block; }
.c9 .c9-toc-layout--bands .c9-toc-body { max-width: none; }
.c9 .c9-toc.c9-toc--cards { position: static; padding-top: 0; border-top: 0; }
.c9 .c9-prose .c9-toc--cards ul { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; margin: 16px 0 0; }
.c9 .c9-prose .c9-toc--cards li { padding: 0; border: 0; font-size: 16.5px; line-height: 1.3; }
/* `#main-content` and `:not(.btn)` so this outranks the prose link rule,
   which gives every link 1px of bottom padding and a gold underline as an
   inset shadow. Without them the cards had 18px above their text, 1px below
   it, a gold line along the bottom edge and no shadow (Noel, 8 Oct 2026:
   "the 4 menu items ... hav padding spacing issues"). */
#main-content .c9 .c9-prose .c9-toc.c9-toc--cards a:not(.btn) {
  display: flex; align-items: center; gap: 16px; height: 100%; min-height: 96px; padding: 18px 22px;
  background: #fff; border-top: 3px solid var(--gold); border-radius: 0 0 8px 8px;
  box-shadow: 0 24px 44px -34px rgba(11, 43, 84, .5); color: var(--navy); font-weight: 700;
  text-decoration: none;
}
#main-content .c9 .c9-prose .c9-toc.c9-toc--cards a:not(.btn):hover { color: var(--gold-text); }
.c9 .c9-prose .c9-toc--cards .pl-ic { flex: 0 0 auto; width: 56px; height: 56px; background: var(--wash); box-shadow: none; }
.c9 .c9-prose .c9-toc--cards .pl-ic img { width: 32px; height: 32px; }
.c9 .c9-toc-layout--bands .c9-toc-sec { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 56px; padding: 64px 0 72px; }
.c9 .c9-toc-layout--bands .c9-toc-sec:first-of-type { padding-top: 64px; }
.c9 .c9-toc-layout--bands .c9-toc-sec:nth-of-type(even) { border-image: conic-gradient(var(--wash) 0 0) fill 0 / 0 / 0 100vmax; }
.c9 .c9-toc-layout--bands .c9-toc-sec > :not(details) { grid-column: 1 / -1; }
.c9 .c9-prose .c9-toc-layout--bands .c9-toc-sec > details.c9-faq { margin-top: 0; }
/* The jump target at the head of a section takes no room. */
.c9 .c9-prose .c9-toc-sec > p:has(> .c9-anchor:only-child) { margin: 0; height: 0; }
.c9 .c9-prose .c9-toc-sec > p:has(> .c9-anchor:only-child) + .c9-toc-head { margin-top: 0; }
.c9 .c9-prose .c9-toc-head { display: flex; align-items: center; gap: 22px; margin: 0 0 26px; }
.c9 .c9-prose .c9-toc-head > h2 { margin: 0; font-size: clamp(26px, 2.6vw, 34px); line-height: 1.1; letter-spacing: -.025em; }
.c9 .c9-prose .c9-toc-head > .pl-ic { flex: 0 0 auto; width: 72px; height: 72px; }
.c9 .c9-prose .c9-toc-head > .pl-ic img { width: 42px; height: 42px; }
@media (min-width: 861px) {
  /* Both columns end on a rule. */
  .c9 .c9-prose .c9-toc-layout--bands .c9-toc-sec > details.c9-faq:nth-last-of-type(-n+2) { border-bottom: 1px solid var(--line); }
}
@media (max-width: 980px) {
  .c9 .c9-prose .c9-toc--cards ul { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
}
@media (max-width: 860px) {
  .c9 .c9-toc-layout--bands .c9-toc-sec { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 520px) {
  .c9 .c9-prose .c9-toc--cards ul { grid-template-columns: minmax(0, 1fr); }
  #main-content .c9 .c9-prose .c9-toc.c9-toc--cards a:not(.btn) { min-height: 0; padding: 14px 16px; }
  .c9 .c9-prose .c9-toc--cards .pl-ic { width: 46px; height: 46px; }
  .c9 .c9-prose .c9-toc--cards .pl-ic img { width: 28px; height: 28px; }
}
@media (max-width: 640px) {
  .c9 .c9-toc-layout--bands .c9-toc-sec { padding: 44px 0 52px; }
  .c9 .c9-prose .c9-toc-head { gap: 16px; }
  .c9 .c9-prose .c9-toc-head > .pl-ic { width: 56px; height: 56px; }
  .c9 .c9-prose .c9-toc-head > .pl-ic img { width: 34px; height: 34px; }
}

/* --- Strips on the service pages (.pl-strip), 8 Oct 2026 --------------------
   Noel, going through the gallery, on four service pages in a row: nexus
   analysis ("what it cost and start look weird"), exposure review ("if you
   are not sure you owe anything yet looks weird"), notice management ("send
   us the letter looks weird", and the quotes: "better division needed
   visually"). One cause. The foot of each page was a 700px column in the
   middle of an 1084px page, its text left-aligned, on the same cream as
   everything above it. Kyle had called the same sections "a bit off" on
   8 Sep, when they were left-aligned at full width.

   A strip is one section on its own full-width surface inside an ordinary
   .pland page. The pages are otherwise as Kyle signed them off. */
.c9 .pl-strip { --pl-text: #2c3a55; }
.c9 .c9-prose .pland > section.pl-strip { padding: 84px 0; scroll-margin-top: 40px; }
.c9 .c9-prose .pland > section.pl-strip--white { border-image: conic-gradient(#fff 0 0) fill 0 / 0 / 0 100vmax; }
.c9 .c9-prose .pland > section.pl-strip--wash { border-image: conic-gradient(var(--wash) 0 0) fill 0 / 0 / 0 100vmax; }
.c9 .c9-prose .pland > section.pl-strip + section.pl-strip { margin-top: -1px; }
/* A strip that ends the page meets the consultation band under it. */
.c9 .pbody:has(.pland > section.pl-strip:last-child) { padding-bottom: 0; }
/* A strip's own heading is centred over a gold rule, and so is a closing
   action's. The surfaces alternate with the page: cream above takes the
   tint, and a section after a tinted strip goes back to cream. Never white
   against cream: the two are five levels apart and the edge does not show,
   which is what the quotes were on for an hour on 8 Oct. */
.c9 .c9-prose .pland > section.pl-strip > h2,
#main-content .c9 .c9-prose .pland > section.pl-strip > h2,
.c9 .c9-prose .pland > section.pl-cta > h2,
#main-content .c9 .c9-prose .pland > section.pl-cta > h2 {
  margin: 0; text-align: center; text-wrap: balance;
  font-size: clamp(28px, 3vw, 38px); line-height: 1.08; letter-spacing: -.028em;
}
.c9 .c9-prose .pland > section.pl-strip > h2::after,
.c9 .c9-prose .pland > section.pl-cta > h2::after { content: ""; display: block; width: 56px; height: 4px; margin: 20px auto 0; background: var(--gold); }

/* Quotes in a strip: a gold rule over each, a hairline between them. */
.c9 .c9-prose .pl-strip.pl-quotes .pl-quotes-grid { gap: 0; margin-top: 48px; }
.c9 .c9-prose .pl-strip.pl-quotes blockquote { margin: 0; padding: 0 56px; border: 0; border-left: 1px solid rgba(11, 43, 84, .15); background: none; }
.c9 .c9-prose .pl-strip.pl-quotes .pl-quotes-grid > blockquote:first-child { padding-left: 0; border-left: 0; }
.c9 .c9-prose .pl-strip.pl-quotes .pl-quotes-grid > blockquote:last-child { padding-right: 0; }
.c9 .c9-prose .pl-strip.pl-quotes blockquote::before { content: ""; display: block; width: 44px; height: 4px; margin: 0 0 22px; background: var(--gold); }
.c9 .c9-prose .pl-strip.pl-quotes blockquote p:not(.c9-cite) { font-size: clamp(18px, 1.6vw, 21px); line-height: 1.5; font-weight: 500; color: var(--navy); }
.c9 .c9-prose .pl-strip.pl-quotes blockquote .c9-cite { margin-top: 20px; }
/* One quote on its own (TaxJar) sits in the middle. */
.c9 .c9-prose .pl-strip.pl-quotes > blockquote { max-width: 880px; margin: 40px auto 0; padding: 0; border-left: 0; }
#main-content .c9 .c9-prose .pl-strip.pl-quotes > blockquote p { text-align: center; }
/* The heading's rule is directly above it; a second one 50px lower is noise. */
.c9 .c9-prose .pl-strip.pl-quotes > blockquote::before { display: none; }
.c9 .c9-prose .pl-strip.pl-quotes .pl-quotes-more,
#main-content .c9 .c9-prose .pl-strip.pl-quotes .pl-quotes-more { margin: 40px 0 0; text-align: center; font-weight: 600; }

/* A closing action: the heading, a line and one button, centred. */
.c9 .c9-prose .pland > section.pl-cta > p,
#main-content .c9 .c9-prose .pland > section.pl-cta > p { margin: 22px auto 0; max-width: 54ch; text-align: center; font-size: 18px; line-height: 1.6; color: #2c3a55; }
.c9 .c9-prose .pland > section.pl-cta > p:has(> .btn) { margin-top: 28px; }

/* The note above a form, beside the form (.pl-ask): the note on the left at
   reading size, the form card on the right, the two centred on each other. */
.c9 .c9-prose .pl-ask { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); column-gap: 72px; align-items: center; }
.c9 .c9-prose .pl-ask-copy > h2 { margin: 0; text-wrap: balance; font-size: clamp(30px, 3.2vw, 42px); line-height: 1.07; letter-spacing: -.03em; }
.c9 .c9-prose .pl-ask-copy > h2::after { content: ""; display: block; width: 56px; height: 4px; margin: 22px 0 0; background: var(--gold); }
.c9 .c9-prose .pl-ask-copy > p { margin: 22px 0 0; font-size: 18.5px; line-height: 1.65; color: var(--pl-text); }
.c9 .c9-prose .pl-ask-copy > p + p { margin-top: 16px; }
.c9 .c9-prose .pl-ask-form > h2 { margin: 0; font-size: clamp(22px, 2vw, 26px); line-height: 1.2; letter-spacing: -.015em; }
.c9 .c9-prose .pl-ask-form form { margin-top: 18px; box-shadow: 0 30px 60px -44px rgba(11, 43, 84, .5); }
/* A form on its own in a strip (tax matrix, "Get a quote"): the card in the
   middle of the band under the centred heading, as on the VDA page. */
.c9 .c9-prose .pland > section.pl-strip.pl-form--card form { margin-top: 36px; box-shadow: 0 30px 60px -44px rgba(11, 43, 84, .5); }

@media (max-width: 980px) {
  .c9 .c9-prose .pland > section.pl-strip { padding: 64px 0; }
  .c9 .c9-prose .pl-ask { grid-template-columns: minmax(0, 1fr); row-gap: 40px; }
  .c9 .c9-prose .pl-strip.pl-quotes .pl-quotes-grid { margin-top: 40px; }
  .c9 .c9-prose .pl-strip.pl-quotes .pl-quotes-grid > blockquote { padding: 32px 0 0; margin-top: 32px; border-left: 0; border-top: 1px solid rgba(11, 43, 84, .15); }
  .c9 .c9-prose .pl-strip.pl-quotes .pl-quotes-grid > blockquote:first-child { padding-top: 0; margin-top: 0; border-top: 0; }
}
@media (max-width: 640px) {
  .c9 .c9-prose .pland > section.pl-strip { padding: 52px 0; }
  .c9 .c9-prose .pl-ask-copy > p { font-size: 17.5px; }
}

/* --- State guides in rows (.sg), 8 Oct 2026 --------------------------------
   The 38 guides under /resources/sales-tax-by-state/. Noel: they "look werid
   with table on content on left and then main content loks weierd ha syou
   scroll down". It was a 260px list of links beside a 760px column of mostly
   one- and two-line sections, 17px grey on one cream surface, with the fast
   facts in a white card on the hero. He picked this from three mocks: the
   links are a row under the hero, each section is a row (HOST's icon and the
   heading on the left, the text on the right) on alternating surfaces, and
   the fast facts sit on the navy with no box. Built by
   c9_state_guide_rows() in c9-page.php. */
.c9 .pbody:has(.sg) { padding: 0; overflow-x: clip; }
.c9 .sg { --pl-text: #2c3a55; }
.c9 .c9-prose .sg-jump { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; padding: 36px 0 0; }
.c9 .c9-prose .sg-jump-k { margin: 0; font-family: var(--c9-mono); font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gold-text); }
.c9 .c9-prose .sg-jump ul { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; margin: 0; padding: 0; }
.c9 .c9-prose .sg-jump li { margin: 0; padding: 0; }
.c9 .c9-prose .sg-jump li::before { display: none; }
/* A pill, so it outranks the prose link rule (docs/divi-and-css.md). */
#main-content .c9 .c9-prose .sg-jump a:not(.btn) {
  display: block; padding: 9px 16px; background: #fff; border: 1px solid var(--line); border-radius: 999px;
  box-shadow: none; text-decoration: none; font-size: 14.5px; line-height: 1.3; font-weight: 600; color: var(--navy);
}
#main-content .c9 .c9-prose .sg-jump a:not(.btn):hover { border-color: var(--navy); }
/* Arizona and New Mexico open on a note. */
.c9 .c9-prose .sg-note { margin: 32px 0 0; padding: 4px 0 4px 22px; border-left: 4px solid var(--gold); max-width: 86ch; }
.c9 .c9-prose .sg-note > * { margin: 0; font-size: 17.5px; line-height: 1.6; color: var(--pl-text); }
.c9 .c9-prose .sg-note > * + * { margin-top: 12px; }

.c9 .c9-prose .sg-row {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.75fr); column-gap: 72px; align-items: start;
  padding: 72px 0;
}
.c9 .c9-prose .sg-row:first-of-type { padding-top: 60px; }
.c9 .c9-prose .sg-row:nth-of-type(even) { border-image: conic-gradient(var(--wash) 0 0) fill 0 / 0 / 0 100vmax; }
.c9 .c9-prose .sg-row-h { display: flex; align-items: flex-start; gap: 20px; }
.c9 .c9-prose .sg-row-h > .pl-ic { flex: 0 0 auto; width: 64px; height: 64px; }
.c9 .c9-prose .sg-row-h > .pl-ic img { width: 38px; height: 38px; }
.c9 .c9-prose .sg-row:nth-of-type(even) .sg-row-h > .pl-ic { box-shadow: none; }
.c9 .c9-prose .sg-row-h > h2 { margin: 8px 0 0; font-size: clamp(25px, 2.3vw, 30px); line-height: 1.12; letter-spacing: -.025em; text-wrap: balance; }
.c9 .c9-prose .sg-row-b > * { margin: 0; }
.c9 .c9-prose .sg-row-b > * + * { margin-top: 16px; }
.c9 .c9-prose .sg-row-b p,
.c9 .c9-prose .sg-row-b li { font-size: 18px; line-height: 1.65; color: var(--pl-text); }
.c9 .c9-prose .sg-row-b > h3 { margin-top: 30px; padding-top: 24px; border-top: 1px solid rgba(11, 43, 84, .14); font-size: 20px; line-height: 1.3; color: var(--navy); }
.c9 .c9-prose .sg-row-b > h3:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.c9 .c9-prose .sg-row-b > ul { padding: 0; }
@media (max-width: 980px) {
  .c9 .c9-prose .sg-row { grid-template-columns: minmax(0, 1fr); row-gap: 22px; padding: 56px 0; }
  .c9 .c9-prose .sg-row:first-of-type { padding-top: 48px; }
  .c9 .c9-prose .sg-row-h { align-items: center; }
  .c9 .c9-prose .sg-row-h > h2 { margin-top: 0; }
}
@media (max-width: 640px) {
  .c9 .c9-prose .sg-jump { padding-top: 28px; }
  .c9 .c9-prose .sg-jump ul { gap: 8px; }
  #main-content .c9 .c9-prose .sg-jump a:not(.btn) { padding: 7px 13px; font-size: 13.5px; }
  .c9 .c9-prose .sg-row { padding: 44px 0; }
  .c9 .c9-prose .sg-row:first-of-type { padding-top: 36px; }
  .c9 .c9-prose .sg-row-h { gap: 16px; }
  .c9 .c9-prose .sg-row-h > .pl-ic { width: 52px; height: 52px; }
  .c9 .c9-prose .sg-row-h > .pl-ic img { width: 32px; height: 32px; }
  .c9 .c9-prose .sg-row-b p,
  .c9 .c9-prose .sg-row-b li { font-size: 17px; }
  .c9 .c9-prose .sg-row-b > h3 { font-size: 18.5px; }
}

/* Fast facts on the navy hero with no box ('hero_bare' on the state guides).
   The value in white, its label under it, a hairline between the rows. */
.c9 .phero-card.phero-card--bare .phc-k { font-size: 12.5px; color: var(--gold); }
.c9 .phero-card.phero-card--bare .phc-rail.phc-facts .plr,
.c9 .phero-card.phero-card--bare .phc-rail.phc-facts .plr:not(:last-child) { padding: 16px 0; border-bottom: 1px solid rgba(255, 255, 255, .18); }
.c9 .phero-card.phero-card--bare .phc-rail.phc-facts .plr:first-child { padding-top: 2px; }
.c9 .phero-card.phero-card--bare .phc-rail.phc-facts .plr:last-child { padding-bottom: 0; border-bottom: 0; }
.c9 .phero-card.phero-card--bare .phc-rail.phc-facts .plr-v { font-size: 22px; color: #fff; }
.c9 .phero-card.phero-card--bare .phc-rail.phc-facts .plr-l { font-size: 14.5px; color: rgba(255, 255, 255, .72); }
@media (max-width: 980px) {
  /* Under the button, a rule above it so the facts read as their own block. */
  .c9 .phero-card.phero-card--bare:has(.phc-facts) { max-width: 520px; padding-top: 26px; border-top: 1px solid rgba(255, 255, 255, .18); }
}


/* --- Labels above the fields, every form (Kyle, 15 Oct 2026) ----------------
   "Put labels above the fields instead of placeholders that vanish while
   typing." The Salesforce forms get their labels from c9_label_sf_forms().
   Gravity prints a label for every field and hides it ('hidden_label', and
   the name field's 'hidden_sub_label'), so here it is shown and the
   placeholder that repeated it goes invisible. One label style for both
   kinds of form, so two forms on one page still read as one kind. The
   e-book form hid its labels to match the lead form (8 Oct); now neither
   does. */
.c9 form[action*="webto.salesforce.com"] .c9-sf-field { display: block; flex: 1 1 0; min-width: 0; }
.c9 form[action*="webto.salesforce.com"] .c9-sf-field > input,
.c9 form[action*="webto.salesforce.com"] .c9-sf-field > textarea { display: block; width: 100%; }
.c9 form[action*="webto.salesforce.com"] .c9-sf-field + br { display: none; }
.c9 .c9-sf-label,
.c9 .gform_wrapper .gfield_label,
.c9 .gform_wrapper.gravity-theme .gfield_label,
.c9 .gform_wrapper.gravity-theme .gform-field-label--type-sub {
  display: block; margin: 0 0 8px; padding: 0;
  font-family: var(--c9-sans); font-size: 14.5px; font-weight: 600; line-height: 1.3;
  letter-spacing: 0; text-transform: none; color: var(--navy);
}
/* !important on position: Divi's .screen-reader-text sets it that way. */
.c9 .gform_wrapper.gravity-theme .gfield.hidden_label .gfield_label,
.c9 .gform_wrapper.gravity-theme .hidden_sub_label.screen-reader-text {
  position: static !important; width: auto; height: auto; margin: 0 0 8px; overflow: visible;
  clip: auto; clip-path: none; white-space: normal; word-wrap: normal;
}
/* Gravity prints a sub-label after its input; above it, like the rest. */
.c9 .gform_wrapper.gravity-theme .ginput_complex > span { display: flex; flex-direction: column; }
.c9 .gform_wrapper.gravity-theme .ginput_complex > span > label { order: -1; }
/* The name field's asterisk is on its hidden "Name"; put it on the two
   sub-labels that show, so every required field is marked the same way. */
.c9 .gform_wrapper.gravity-theme .gfield--type-name.gfield_contains_required .gform-field-label--type-sub::after {
  content: "*"; margin-left: 4px; color: #c02b0a;
}
/* Still hidden: the name field's "Name" over "First Name" and "Last Name",
   and the CAPTCHA field's own label. */
.c9 .gform_wrapper.gravity-theme .gfield--type-name.hidden_label > .gfield_label,
.c9 .gform_wrapper.gravity-theme .gfield--type-captcha.hidden_label > .gfield_label {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}
.c9 form[action*="webto.salesforce.com"] ::placeholder,
.c9 .gform_wrapper ::placeholder { color: transparent; }

/* The same labels on the Gravity forms outside the page body: the blog
   sidebar's "Request a Consultation" form on every post, and pop-ups
   (Noel, 15 Oct 2026: "labels there too"). No post text is touched. These
   sit under Divi's styling rather than .c9, so the label carries its own
   font. The page forms' rules above are more specific and win there. */
.gform_wrapper.gravity-theme .gfield.hidden_label > .gfield_label,
.gform_wrapper.gravity-theme .hidden_sub_label.screen-reader-text {
  position: static !important; display: block; width: auto; height: auto; margin: 0 0 8px; padding: 0;
  overflow: visible; clip: auto; clip-path: none; white-space: normal; word-wrap: normal;
  font-family: "Inter Variable", system-ui, sans-serif; font-size: 14.5px; font-weight: 600; line-height: 1.3;
  letter-spacing: 0; text-transform: none; color: #0B2B54;
}
.gform_wrapper.gravity-theme .ginput_complex > span { display: flex; flex-direction: column; }
.gform_wrapper.gravity-theme .ginput_complex > span > label { order: -1; }
.gform_wrapper.gravity-theme .gfield--type-name.hidden_label > .gfield_label,
.gform_wrapper.gravity-theme .gfield--type-captcha.hidden_label > .gfield_label {
  position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}
.gform_wrapper.gravity-theme ::placeholder { color: transparent; }
.gform_wrapper.gravity-theme .gfield--type-name.gfield_contains_required .gform-field-label--type-sub::after {
  content: "*"; margin-left: 4px; color: #c02b0a;
}
/* The sidebar form is sticky at 164px from the top, so it has to fit a
   900px screen whole: with labels it was 835px tall and Submit sat below the
   edge for the length of the article. First and last name side by side and
   a shorter message box bring it back to about the height it had. */
body.single-post .post-sidebar .gform_wrapper.gravity-theme .gform_fields > .gfield--type-name { grid-column: span 6; }
body.single-post .post-sidebar .gform_wrapper.gravity-theme textarea { height: 96px; min-height: 96px; }
body.single-post .post-sidebar .gform_wrapper.gravity-theme .gform_body { padding-top: 10px; }

/* A form beside a calendar (Contact, the software review). Noel, 15 Oct 2026:
   "two cards are not same size". The two headings share one row and the two
   cards the next, so the cards start level and end level; the calendar
   grows to the card's height rather than the card shrinking to its. */
@media (min-width: 861px) {
  .c9 .c9-prose .pl-pair--even:has(.calendly-inline-widget) { grid-template-rows: auto 1fr; row-gap: 0; align-items: stretch; }
  .c9 .c9-prose .pl-pair--even:has(.calendly-inline-widget) > .pl-col { display: grid; grid-row: span 2; grid-template-rows: subgrid; }
  .c9 .c9-prose .pl-pair--even:has(.calendly-inline-widget) .calendly-inline-widget { height: auto !important; min-height: 600px; }
  .c9 .c9-prose .pl-pair--even:has(.calendly-inline-widget) > .pl-col > :nth-child(2) { margin-top: 0; margin-bottom: 0; }
  .c9 .c9-prose .pl-pair--even:has(.calendly-inline-widget) .calendly-inline-widget iframe { height: 100% !important; }
}

/* Partner Program's HOST versus software table: the plugin set its column
   heads near-black (#030D26). Noel, 15 Oct 2026: "make it blue". */
.c9 .dvmd_tm_tcell.dvmd_tm_chead:not(.dvmd_tm_col_first) { background: var(--navy, #0B2B54) !important; }

/* --- Four ported pages, designed (Noel's 15 Oct 2026 gallery pass) ------------
   Referral, the e-commerce e-book, Economic Nexus Clarified and the nexus
   chart. Each was mocked two ways and built as Noel picked; the patterns are
   the banded hub pages' (.pland--bands.pl-hub, .pl-ask, .pl-split, .pl-cards). */

/* Hero: a second line, larger and bold (the e-book page: "can feel
   overwhelming. But it doesn't have to be."). */
.c9 .phero .phero-sub.phero-em { margin-top: 16px; font-size: clamp(20px, 1.9vw, 24px); line-height: 1.4; font-weight: 700; color: #fff; }
/* Hero right half: the referral steps, the e-book cover, the chart picker,
   all straight on the navy (no white box, Noel 8 Oct). */
.c9 .phero-card--bare ol.phc-steps { list-style: none; margin: 18px 0 0; padding: 0; display: grid; gap: 18px; }
.c9 .phero-card--bare ol.phc-steps > li { display: grid; grid-template-columns: 56px minmax(0, 1fr); column-gap: 18px; align-items: center; margin: 0; padding: 0; font-size: 20px; font-weight: 700; color: #fff; }
.c9 .phero-card--bare ol.phc-steps > li::before { content: none; }
.c9 .phero-card--bare .phc-ic { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .22); }
.c9 .phero-card--bare .phc-ic img { display: block; width: 32px; height: 32px; filter: brightness(0) invert(1); }
.c9 .phero-card--bare .phc-n { display: block; font-family: var(--c9-mono); font-size: 12px; font-weight: 600; letter-spacing: .16em; color: var(--gold); }
.c9 .phero-card--bare .phc-cover { display: block; width: 100%; max-width: 360px; height: auto; margin-left: auto; border-radius: 6px; box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .6); }
.c9 .phero-card--bare .phc-select { display: block; width: 100%; margin-top: 14px; padding: 14px 16px; border: 0; border-radius: 6px; font: inherit; font-size: 17px; color: var(--navy); background: #fff; }
@media (max-width: 980px) {
  .c9 .phero-card--bare .phc-cover { max-width: 240px; margin-left: 0; }
}

/* The note beside a long form: it starts with the form and stays in view. */
.c9 .c9-prose .pl-ask--top { align-items: start; }
@media (min-width: 981px) {
  .c9 .c9-prose .pl-ask--top > .pl-ask-copy { position: sticky; top: 120px; }
}
.c9 .c9-prose .pl-ask-copy > p.pl-ask-call { margin-top: 28px; padding-top: 22px; border-top: 2px solid var(--navy); font-size: 18px; font-weight: 600; color: var(--navy); }
/* A centred lead line over cards, and one under them. */
.c9 .c9-prose .pl-sub--lead { max-width: 64ch; margin: 0 auto; text-align: center; font-size: 19px; line-height: 1.6; color: var(--pl-text); }
.c9 .c9-prose .pl-sub--after { max-width: 70ch; margin: 44px auto 0; text-align: center; font-size: 18px; line-height: 1.65; color: var(--pl-text); }
#main-content .c9 .c9-prose .pl-sub--lead, #main-content .c9 .c9-prose .pl-sub--after { text-align: center; }
.c9 .c9-prose .pl-sub--lead + .pl-cards { margin-top: 40px; }
/* Gravity's section titles inside a form ("Referral Information"). */
.c9 .gform_wrapper.gravity-theme .gsection_title { margin: 6px 0 2px; font-size: 19px; color: var(--navy); }
.c9 .gform_wrapper.gravity-theme .gfield_required_text { font-size: 0; }
.c9 .gform_wrapper.gravity-theme .gfield_required_text::after { content: "*"; font-size: 14.5px; font-style: normal; color: #c02b0a; }

/* The nexus chart: one state's card, every state as a tile, the full table. */
.c9 .c9-prose .pl-nexus { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); column-gap: 40px; align-items: start; }
.c9 .c9-prose .pl-nexus-card { position: sticky; top: 110px; background: #fff; border-radius: 10px; border-top: 4px solid var(--gold); box-shadow: 0 30px 60px -44px rgba(11, 43, 84, .55); padding: 34px 38px; scroll-margin-top: 120px; }
.c9 .c9-prose .pl-nexus-prompt { margin: 0; font-size: 19px; font-weight: 600; color: var(--navy); text-align: center; }
#main-content .c9 .c9-prose .pl-nexus-prompt { text-align: center; }
.c9 .c9-prose .pl-nexus-k, .c9 .c9-prose .pl-nexus-facts dt { margin: 0 0 4px; font-family: var(--c9-mono); font-size: 11px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gold-text); }
.c9 .c9-prose .pl-nexus-card { padding: 30px 30px; }
.c9 .c9-prose .pl-nexus-main h2 { margin: 0; font-size: clamp(28px, 2.8vw, 34px); line-height: 1.1; }
.c9 .c9-prose .pl-nexus-big { margin: 16px 0 0; font-size: 22px; line-height: 1.35; font-weight: 700; color: var(--navy); }
.c9 .c9-prose .pl-nexus-more { margin: 22px 0 0; font-weight: 600; }
.c9 .c9-prose .pl-nexus-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 24px; margin: 24px 0 0; }
.c9 .c9-prose .pl-nexus-facts dd { margin: 0; font-size: 15.5px; line-height: 1.5; color: var(--pl-text); }
.c9 .c9-prose .pl-nexus-help { margin: 0 0 14px; font-weight: 600; color: var(--navy); }
.c9 .c9-prose .pl-nexus-map svg { display: block; width: 100%; height: auto; }
.c9 .c9-prose .pl-nexus-map svg a { box-shadow: none; }
.c9 .c9-prose .pl-nexus-map path { fill: #c4cfe0; stroke: #fff; stroke-width: 1.2; cursor: pointer; transition: fill .15s; }
.c9 .c9-prose .pl-nexus-map a:hover path, .c9 .c9-prose .pl-nexus-map a:focus path { fill: #8fa4c4; }
.c9 .c9-prose .pl-nexus-map a.on path { fill: var(--gold); stroke: var(--navy); stroke-width: 2; }
.c9 .c9-prose .pl-nexus-extra { display: flex; gap: 10px; margin: 14px 0 0; }
.c9 .c9-prose .pl-nexus-extra a { padding: 8px 14px; border-radius: 6px; background: #fff; border: 1px solid var(--line); font-weight: 600; font-size: 14px; color: var(--navy); text-decoration: none; box-shadow: none; }
.c9 .c9-prose .pl-nexus-extra a.on { border-color: var(--navy); box-shadow: inset 0 0 0 1px var(--navy); }
.c9 .c9-prose .pl-nexus-table { margin-top: 44px; }
.c9 .c9-prose .pl-nexus-table table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 15px; }
.c9 .c9-prose .pl-nexus-table thead th { background: var(--navy); color: #fff; font-weight: 600; font-size: 14px; text-align: left; padding: 12px 14px; border: 0; }
.c9 .c9-prose .pl-nexus-table tbody th, .c9 .c9-prose .pl-nexus-table td { padding: 12px 14px; vertical-align: top; text-align: left; border: 0; border-bottom: 1px solid var(--line); background: #fff; color: var(--pl-text); font-weight: 400; scroll-margin-top: 140px; }
.c9 .c9-prose .pl-nexus-table tbody tr:nth-child(even) > * { background: #fbfaf7; }
/* The row heads are <th>, which the prose sheet sets as small mono capitals. */
.c9 .c9-prose .pl-nexus-table tbody th { font-family: var(--c9-sans); font-size: 15px; letter-spacing: 0; text-transform: none; font-weight: 700; color: var(--navy); white-space: nowrap; }
.c9 .c9-prose .pl-nexus-table thead th { font-family: var(--c9-sans); letter-spacing: 0; text-transform: none; }
.c9 .c9-prose .pl-nexus-table td:nth-child(2) { font-weight: 600; color: var(--navy); }
.c9 .c9-prose .pl-nexus-table tbody tr:target > * { background: #fff7d6; }
@media (max-width: 980px) {
  .c9 .c9-prose .pl-nexus { grid-template-columns: minmax(0, 1fr); row-gap: 28px; }
  .c9 .c9-prose .pl-nexus-card { position: static; }
}
@media (max-width: 640px) {
  .c9 .c9-prose .pl-nexus-card { padding: 26px 22px; }
  .c9 .c9-prose .pl-nexus-facts { grid-template-columns: minmax(0, 1fr); }
}
.c9 .c9-prose .pl-split > div > p + p { margin-top: 18px; }

/* Referral (Noel's pick of three, 15 Oct 2026): the heading, the note and the
   call line centred on a deep navy band under a gold line. The form card that
   started on the navy went on 30 Oct 2026 (Kyle: a button to the portal in
   place of the form), so the band ends on its own padding. */
.c9 .c9-prose .pland--bands > section.pl-refer-head {
  padding: 92px 0 96px; text-align: center;
  border-image: linear-gradient(var(--gold) 0 3px, var(--navy-deep) 3px) fill 0 / 0 / 0 100vmax;
}
#main-content .c9 .c9-prose .pl-refer-head, #main-content .c9 .c9-prose .pl-refer-head * { text-align: center; }
.c9 .c9-prose .pl-refer-head .pl-h2c { color: #fff; }
.c9 .c9-prose .pl-refer-head > p { max-width: 62ch; margin: 24px auto 0; font-size: 18.5px; line-height: 1.6; color: rgba(255, 255, 255, .82); }
.c9 .c9-prose .pl-refer-head > p.pl-refer-act { margin-top: 32px; }
.c9 .c9-prose .pl-refer-head > p.pl-refer-call { margin-top: 32px; font-size: 17px; font-weight: 600; color: #fff; }
.c9 .c9-prose .pl-refer-head a,
#main-content .c9 .c9-prose .pl-refer-head a { color: var(--gold); box-shadow: inset 0 -1px 0 0 var(--gold); }
.c9 .c9-prose .pl-refer-head a[href^="tel:"] { white-space: nowrap; } /* "707-GET-" broke from "HOST" at 390 */
.c9 .c9-prose .pl-refer-head a.btn,
#main-content .c9 .c9-prose .pl-refer-head a.btn { color: var(--ink); box-shadow: none; }
@media (max-width: 640px) {
  .c9 .c9-prose .pland--bands > section.pl-refer-head { padding: 60px 0 64px; }
}

/* Economic Nexus Clarified, the end of the page (Noel: "economic exposure
   analysis next to card looks weird"; he picked this of two mocks). The
   analysis is its own section on navy, its two paragraphs side by side and
   the six criteria as ticked tiles; the form follows on the tint, the
   heading across and the card centred under it. */
.c9 .c9-prose .pl-analysis > h2 { margin: 0 0 28px; color: #fff; font-size: clamp(30px, 3vw, 40px); line-height: 1.08; letter-spacing: -.025em; }
.c9 .c9-prose .pl-analysis-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 56px; }
.c9 .c9-prose .pl-analysis-2 > p { margin: 0; font-size: 17.5px; line-height: 1.65; color: rgba(255, 255, 255, .82); }
.c9 .c9-prose ul.pl-crit { list-style: none; margin: 40px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.c9 .c9-prose ul.pl-crit > li { position: relative; margin: 0; padding: 18px 18px 18px 52px; border-radius: 8px; background: rgba(255, 255, 255, .08); font-weight: 600; color: #fff; }
.c9 .c9-prose ul.pl-crit > li::before {
  content: ""; position: absolute; left: 18px; top: 18px; width: 22px; height: 22px; border-radius: 50%;
  background: var(--gold) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5.5 10.4l3 3 6-6.4' fill='none' stroke='%23020819' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 22px no-repeat;
}
.c9 .c9-prose .pl-form-c > .pl-form--card { max-width: 760px; margin: 36px auto 0; }
@media (max-width: 860px) {
  .c9 .c9-prose .pl-analysis-2 { grid-template-columns: minmax(0, 1fr); row-gap: 18px; }
  .c9 .c9-prose ul.pl-crit { grid-template-columns: minmax(0, 1fr); }
}

/* --- Articles in rows: Concepts Explained, How to Charge Sales Tax, and the
   booking confirmation (Noel's picks, 15 Oct 2026). The state guides' .sg
   rows, plus: topic cards, a navy row, full-width rows, the rate example as
   a card or a bar, call-to-action lines, cards for the exemptions, the FAQ
   answers and the two ways to reach HOST. */
.c9 .c9-prose ul.pl-topics { list-style: none; margin: 44px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.c9 .c9-prose ul.pl-topics > li { margin: 0; padding: 0; }
.c9 .c9-prose ul.pl-topics > li::before { content: none; }
.c9 .c9-prose ul.pl-topics a { display: grid; grid-template-columns: 56px minmax(0, 1fr); column-gap: 18px; align-items: start; height: 100%; padding: 24px 24px 22px; background: #fff; border-radius: 8px; box-shadow: 0 30px 50px -44px rgba(11, 43, 84, .55); text-decoration: none; color: inherit; }
.c9 .c9-prose .pl-sec--white ul.pl-topics a { background: var(--wash); box-shadow: none; }
.c9 .c9-prose ul.pl-topics a:hover { outline: 2px solid var(--navy); }
.c9 .c9-prose ul.pl-topics .pl-ic { width: 56px; height: 56px; margin: 0; }
.c9 .c9-prose .pl-sec--wash ul.pl-topics .pl-ic { background: var(--wash); box-shadow: none; }
.c9 .c9-prose ul.pl-topics .pl-ic img { width: 34px; height: 34px; }
.c9 .c9-prose ul.pl-topics b { display: block; font-size: 18px; line-height: 1.25; color: var(--navy); }
.c9 .c9-prose ul.pl-topics b::after { content: " \2192"; color: var(--gold-text); }
.c9 .c9-prose ul.pl-topics b + span { display: block; margin-top: 6px; font-size: 15px; line-height: 1.5; color: var(--mut); }
.c9 .c9-prose ul.pl-topics--3 a { align-items: center; }
.c9 .pbody:has(.pl-art) .pland--bands + .sg { margin-top: 0; }
.c9 .c9-prose .sg.pl-art .sg-row:first-of-type { padding-top: 84px; }
/* a row on navy */
.c9 .c9-prose .sg-row.sg-row--navy { border-image: conic-gradient(var(--navy) 0 0) fill 0 / 0 / 0 100vmax; }
.c9 .c9-prose .sg-row--navy .sg-row-h > h2 { color: #fff; }
.c9 .c9-prose .sg-row--navy .sg-row-b p, .c9 .c9-prose .sg-row--navy .sg-row-b li { color: rgba(255, 255, 255, .84); }
.c9 .c9-prose .sg-row--navy a, #main-content .c9 .c9-prose .sg-row--navy a:not(.btn) { color: var(--gold); box-shadow: inset 0 -1px 0 0 var(--gold); }
.c9 .c9-prose .sg-row--navy .sg-row-h > .pl-ic { background: #fff; }
/* a full-width row: the heading over its body */
@media (min-width: 861px) {
  .c9 .c9-prose .sg-row.sg-row--wide { grid-template-columns: minmax(0, 1fr); row-gap: 28px; }
  .c9 .c9-prose .sg-row--wide .sg-row-h { align-items: center; }
  .c9 .c9-prose .sg-row--wide .sg-row-h > h2 { margin-top: 0; }
  .c9 .c9-prose .sg-row--wide .sg-row-b > p { max-width: 80ch; }
}
/* the "Learn more", "Contact us" lines */
.c9 .c9-prose .sg-row-b > p.pl-cta { margin-top: 26px; padding-top: 18px; border-top: 2px solid var(--navy); font-weight: 600; }
.c9 .c9-prose .sg-row--navy .sg-row-b > p.pl-cta { border-top-color: rgba(255, 255, 255, .3); }
/* the rate example as a card */
.c9 .c9-prose .sg-row-b > .pl-rate { background: #fff; border-radius: 10px; border-top: 4px solid var(--gold); box-shadow: 0 30px 50px -40px rgba(11, 43, 84, .55); padding: 18px 26px; }
.c9 .c9-prose .pl-rate table { width: 100%; border: 0; border-collapse: collapse; font-size: 16px; }
.c9 .c9-prose .pl-rate td { width: auto !important; border: 0; border-bottom: 1px solid var(--line); padding: 11px 0; background: none !important; text-align: left; color: var(--pl-text); }
.c9 .c9-prose .pl-rate tr td:last-child { text-align: right; font-weight: 600; color: var(--navy); }
.c9 .c9-prose .pl-rate tr:first-child td { font-family: var(--c9-mono); font-size: 11px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gold-text); }
.c9 .c9-prose .pl-rate tr:first-child td strong { font-weight: 600; }
.c9 .c9-prose .pl-rate tr:last-child td { border-bottom: 0; padding-top: 16px; font-size: 22px; font-weight: 800; color: var(--navy); }
/* the rate example as a bar (How to Charge) */
.c9 .c9-prose .pl-ratebar-total { display: flex; align-items: baseline; gap: 14px; margin: 8px 0 0; }
.c9 .c9-prose .pl-ratebar-total b { font-size: 64px; line-height: 1; letter-spacing: -.03em; color: #fff; }
.c9 .c9-prose .pl-ratebar-total span { font-family: var(--c9-mono); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); }
.c9 .c9-prose .pl-ratebar-bar { display: flex; height: 64px; margin: 18px 0; border-radius: 8px; overflow: hidden; }
.c9 .c9-prose .pl-ratebar-bar span { display: flex; align-items: center; justify-content: center; min-width: 0; font-size: 15px; font-weight: 700; color: var(--navy); }
.c9 .c9-prose ul.pl-ratebar-key { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.c9 .c9-prose ul.pl-ratebar-key > li { position: relative; display: flex; justify-content: space-between; margin: 0; padding: 0 0 0 26px; font-size: 16px; color: rgba(255, 255, 255, .85); }
.c9 .c9-prose ul.pl-ratebar-key > li::before { content: ""; position: absolute; left: 0; top: 5px; width: 14px; height: 14px; border-radius: 3px; background: var(--c); }
.c9 .c9-prose ul.pl-ratebar-key b { color: #fff; }
/* the lead: its first line large on a gold rule, the rest beside it */
.c9 .c9-prose .pland--bands > section.pl-lead2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 72px; align-items: start; padding: 84px 0; }
.c9 .c9-prose .pl-lead2-big { margin: 0; padding-left: 26px; border-left: 4px solid var(--gold); font-size: 24px; line-height: 1.45; font-weight: 600; color: var(--navy); }
.c9 .c9-prose .pl-lead2 > div > p { margin: 0 0 16px; font-size: 18px; line-height: 1.65; color: var(--pl-text); }
/* exemptions and FAQ answers as cards */
.c9 .c9-prose .sg-row-b > ul.pl-ex { margin-top: 28px; }
.c9 .c9-prose ul.pl-ex > .pl-tile { border-top: 3px solid var(--gold); }
.c9 .c9-prose ul.pl-ex > .pl-tile > p { font-size: 15.5px; line-height: 1.55; }
.c9 .c9-prose .pl-faq-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.c9 .c9-prose .pl-faq-cards > div { background: #fff; border-radius: 10px; border-top: 4px solid var(--navy); padding: 30px 30px 20px; box-shadow: 0 30px 50px -44px rgba(11, 43, 84, .55); }
.c9 .c9-prose .pl-faq-cards h3 { margin: 0 0 14px; font-size: 21px; line-height: 1.3; }
.c9 .c9-prose .pl-faq-cards p { margin: 0 0 12px; font-size: 16px; line-height: 1.6; color: var(--pl-text); }
/* the hero's list of sections (How to Charge) */
.c9 .phero-card--bare ul.phc-jump { list-style: none; margin: 16px 0 0; padding: 0; display: grid; gap: 4px; }
.c9 .phero-card--bare ul.phc-jump > li { margin: 0; padding: 0; }
.c9 .phero-card--bare ul.phc-jump > li::before { content: none; }
.c9 .phero-card--bare ul.phc-jump a { position: relative; display: grid; grid-template-columns: 40px minmax(0, 1fr); column-gap: 14px; align-items: center; padding: 10px 24px 10px 0; border-bottom: 1px solid rgba(255, 255, 255, .14); color: #fff; font-weight: 600; font-size: 17px; text-decoration: none; box-shadow: none; }
.c9 .phero-card--bare ul.phc-jump a::after { content: "\2193"; position: absolute; right: 0; color: var(--gold); }
.c9 .phero-card--bare ul.phc-jump .pl-ic { display: grid; place-items: center; width: 40px; height: 40px; margin: 0; border-radius: 50%; background: #fff; }
.c9 .phero-card--bare ul.phc-jump .pl-ic img { width: 26px; height: 26px; }
/* the two ways to reach HOST (booking confirmation) */
.c9 .c9-prose .pl-contact2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; max-width: 900px; margin: 40px auto 0; }
.c9 .c9-prose .pl-contact2 > a { display: grid; grid-template-columns: 64px minmax(0, 1fr); column-gap: 20px; align-items: center; padding: 26px 28px; border-radius: 10px; background: #fff; text-decoration: none; box-shadow: 0 30px 50px -44px rgba(11, 43, 84, .55); }
.c9 .c9-prose .pl-contact2 .pl-ic { width: 64px; height: 64px; margin: 0; }
.c9 .c9-prose .pl-contact2 .k { display: block; font-family: var(--c9-mono); font-size: 11px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--gold-text); }
.c9 .c9-prose .pl-contact2 .v { display: block; margin-top: 4px; font-size: 21px; font-weight: 700; color: var(--navy); overflow-wrap: anywhere; }
@media (max-width: 980px) {
  .c9 .c9-prose ul.pl-topics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .c9 .c9-prose .pland--bands > section.pl-lead2 { grid-template-columns: minmax(0, 1fr); row-gap: 24px; padding: 64px 0; }
}
@media (max-width: 640px) {
  .c9 .c9-prose ul.pl-topics, .c9 .c9-prose .pl-faq-cards, .c9 .c9-prose .pl-contact2 { grid-template-columns: minmax(0, 1fr); }
  .c9 .c9-prose .pl-ratebar-total b { font-size: 48px; }
}
/* The card is a link: no underline along its foot, and the icon sits inside. */
#main-content .c9 .c9-prose .pl-contact2 > a:not(.btn) { box-shadow: 0 30px 50px -44px rgba(11, 43, 84, .55); }
.c9 .c9-prose .pl-contact2 .pl-ic { margin: 0; box-shadow: none; background: var(--wash); }
.c9 .c9-prose .pl-contact2 .pl-ic img { width: 38px; height: 38px; }
/* The rate card: the table's scroll shadows off (they read as two strips). */
.c9 .c9-prose .sg-row-b > .c9-table-scroll.pl-rate { background: #fff; }
.c9 .c9-prose .pl-rate table { background: none; }
.c9 .c9-prose .pl-rate .c9-tablewrap { background: none; }
@media (max-width: 640px) {
  /* "8.13 / %" broke at 390; the label goes under the figure. */
  .c9 .c9-prose .pl-ratebar-total { flex-direction: column; align-items: flex-start; gap: 6px; }
  .c9 .c9-prose .pl-ratebar-total b { white-space: nowrap; }
  /* The email address broke mid-word at 390. */
  .c9 .c9-prose .pl-contact2 > a { grid-template-columns: 48px minmax(0, 1fr); column-gap: 14px; padding: 20px 18px; }
  .c9 .c9-prose .pl-contact2 .pl-ic { width: 48px; height: 48px; }
  .c9 .c9-prose .pl-contact2 .pl-ic img { width: 30px; height: 30px; }
  .c9 .c9-prose .pl-contact2 .v { font-size: 16.5px; overflow-wrap: normal; }
}
/* The booking confirmation's email and call cards (Noel, 15 Oct 2026: "seem
   cut off", "text should be centered"). The prose link rule
   `.c9-prose a:not(.btn) { padding-bottom: 1px }` outranked the cards' own
   padding, so each ended flush under its text. Same weight here, and the
   icon, label and value centred, one above the other. */
.c9 .c9-prose .pl-contact2 > a:not(.btn) {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px;
  padding: 30px 24px 28px; text-align: center;
}
#main-content .c9 .c9-prose .pl-contact2 > a:not(.btn),
#main-content .c9 .c9-prose .pl-contact2 > a:not(.btn) * { text-align: center; }
.c9 .c9-prose .pl-contact2 .v { margin-top: 6px; }
@media (max-width: 640px) {
  .c9 .c9-prose .pl-contact2 > a:not(.btn) { padding: 24px 18px 22px; }
}
/* Same clipped bottom padding on the chart's DC and Puerto Rico buttons. */
.c9 .c9-prose .pl-nexus-extra a:not(.btn) { padding: 8px 14px; }

/* HubSpot forms (Kyle, 16 Oct 2026; c9_hubspot_swap()). Each form is
   HubSpot's own page inside an iframe, so nothing in it can be styled from
   here: font, colours and fields are set in HubSpot. The card the replaced
   forms drew on their <form> goes on the wrapper instead, with the same
   shadow where the page gave the form one. */
.c9 .c9-prose .c9-hs-form {
  margin-top: 22px;
  background: #fff;
  border: 1px solid var(--line);
  border-top: 2px solid var(--navy);
}
.c9 .c9-prose .c9-hs-form iframe { display: block; width: 100%; border: 0; }
.c9 .c9-prose .pl-ask-form .c9-hs-form,
.c9 .c9-prose .pland--bands > .pl-form .c9-hs-form,
.c9 .c9-prose .pland > section.pl-strip.pl-form--card .c9-hs-form { box-shadow: 0 30px 60px -44px rgba(11, 43, 84, .5); }
/* Where the form already sits in a card (.pl-card on Contact, Registration
   and Filings; the Stripe and doola .pl-signup), the wrapper draws none, and
   the card loses its padding because the form brings 40px of its own. */
.c9 .c9-prose .pl-card .c9-hs-form,
.c9 .c9-prose .pl-signup .c9-hs-form { margin-top: 0; background: none; border: 0; }
.c9 .c9-prose .pl-card:has(> .c9-hs-form:only-child) { padding: 0; }
/* Stripe and doola: the newsletter form sat beside its heading. The Get
   Started form is twice as tall, which left the heading over an empty half,
   so the heading goes above and the form is centred under it, at the width
   the referral and Economic Nexus Clarified forms use. */
.c9 .c9-prose .pl-signup:has(.c9-hs-form) { grid-template-columns: minmax(0, 1fr); }
#main-content .c9 .c9-prose .pl-signup:has(.c9-hs-form) .pl-signup-head,
#main-content .c9 .c9-prose .pl-signup:has(.c9-hs-form) .pl-signup-head h2 { text-align: center; }
.c9 .c9-prose .pl-signup .c9-hs-form { width: 100%; max-width: 760px; margin: 12px auto 0; }
/* A note beside a HubSpot form (.pl-ask on Nexus Analysis, Exposure Review,
   Help Desk). The form runs about 1,000px, so a note centred beside it sat
   400px down an empty column. It starts with the form and stays in view
   instead, as .pl-ask--top does for other long forms. */
.c9 .c9-prose .pl-ask:has(.c9-hs-form) { align-items: start; }
@media (min-width: 981px) {
  .c9 .c9-prose .pl-ask:has(.c9-hs-form) > .pl-ask-copy { position: sticky; top: 120px; }
}
/* Phones: the card's 25px sides plus the form's own 40px left the frame
   282px wide, and HubSpot's 256px reCAPTCHA badge was cut off at its edge. */
@media (max-width: 860px) {
  .c9 .c9-prose .pl-signup:has(.c9-hs-form) { padding-left: 0; padding-right: 0; }
  .c9 .c9-prose .pl-signup:has(.c9-hs-form) .pl-signup-head { padding: 0 25px; }
}

/* An open calendar's place for someone who declined cookies (consent-gate.js). */
.c9 .c9-cal-off { display: flex; justify-content: center; padding: 8px 0 32px; }
.c9 .pl-col .c9-cal-off { justify-content: flex-start; padding: 0 0 32px; }
/* Beside a form (Contact, the software review) the calendar's place is a card
   the height of the form, as the calendar was, and what is in it stays in view
   while the form is filled in. Noel, 2 Nov 2026: fix the empty column. */
.c9 .c9-prose .pl-col > .c9-cal-off--card { display: block; padding: 40px 40px 44px; background: #fff; border: 1px solid var(--line); border-top: 2px solid var(--navy); }
.c9 .c9-prose .c9-cal-off--card .c9-cal-off-in { position: sticky; top: calc(var(--hc-bar-h, 0px) + 107px); }
.c9 .c9-prose .c9-cal-off--card .c9-cal-off-icon { display: block; width: 88px; height: 88px; margin: 0 0 22px; }
.c9 .c9-prose .c9-cal-off--card p { margin: 0 0 26px; font-size: 20px; line-height: 1.45; color: var(--navy); }
@media (min-width: 861px) {
  .c9 .c9-prose .pl-pair--even:has(.c9-cal-off--card) { grid-template-rows: auto 1fr; row-gap: 0; align-items: stretch; }
  .c9 .c9-prose .pl-pair--even:has(.c9-cal-off--card) > .pl-col { display: grid; grid-row: span 2; grid-template-rows: subgrid; }
  .c9 .c9-prose .pl-pair--even:has(.c9-cal-off--card) > .pl-col > :nth-child(2) { margin-top: 0; margin-bottom: 0; }
}
@media (max-width: 860px) {
  .c9 .c9-prose .pl-col > .c9-cal-off--card { padding: 28px 24px 30px; }
}
