/*
Texas Metal Panels — theme.css
Design tokens + layout utilities + components for the Texas Metal Panels block theme.
Mobile-first. Breakpoints: 600 / 782 / 1024 / 1280. No !important except the honeypot.
Every token mirrors a theme.json preset (var(--wp--preset--…)) with a hard fallback,
so Site Editor palette/typography changes propagate automatically.
*/

/* ---------------------------------------------------------------------------
   1. Tokens
--------------------------------------------------------------------------- */
:root {
  --ts-navy: var(--wp--preset--color--navy, #0b2545);
  --ts-navy-800: var(--wp--preset--color--navy-800, #13315c);
  --ts-navy-900: #071a33;
  --ts-red: var(--wp--preset--color--red, #bf0a30);
  --ts-red-700: var(--wp--preset--color--red-700, #9e0826);
  --ts-red-100: #fbe7eb;
  --ts-white: var(--wp--preset--color--white, #ffffff);
  --ts-sand: var(--wp--preset--color--sand, #faf7f2);
  --ts-sand-100: #f3ede3;
  --ts-stone: var(--wp--preset--color--stone, #d9cfbf);
  --ts-ink: var(--wp--preset--color--ink, #161a1f);
  --ts-slate: var(--wp--preset--color--slate, #5e574d);
  --ts-sky: var(--wp--preset--color--sky, #e3eaf4);
  --ts-gold: var(--wp--preset--color--gold, #e0a526);
  --ts-success: var(--wp--preset--color--success, #1f7a3f);
  --ts-focus: #ffb703;

  --ts-font-heading: var(--wp--preset--font-family--heading, "Figtree", "Figtree Fallback", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);
  --ts-font-body: var(--wp--preset--font-family--body, "Figtree", "Figtree Fallback", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);

  --ts-text-xs: var(--wp--preset--font-size--xs, 0.8rem);
  --ts-text-sm: var(--wp--preset--font-size--sm, 0.9rem);
  --ts-text-md: var(--wp--preset--font-size--md, 1rem);
  --ts-text-lg: var(--wp--preset--font-size--lg, 1.2rem);
  --ts-text-xl: var(--wp--preset--font-size--xl, clamp(1.4rem, 2.2vw, 1.7rem));
  --ts-text-2xl: var(--wp--preset--font-size--2-xl, clamp(1.9rem, 3.4vw, 2.6rem));
  --ts-text-3xl: var(--wp--preset--font-size--3-xl, clamp(2.4rem, 4.8vw, 3.6rem));

  --ts-space-10: var(--wp--preset--spacing--10, 0.5rem);
  --ts-space-20: var(--wp--preset--spacing--20, 0.75rem);
  --ts-space-30: var(--wp--preset--spacing--30, 1rem);
  --ts-space-40: var(--wp--preset--spacing--40, 1.5rem);
  --ts-space-50: var(--wp--preset--spacing--50, 2rem);
  --ts-space-60: var(--wp--preset--spacing--60, 3rem);
  --ts-space-70: var(--wp--preset--spacing--70, 4.5rem);
  --ts-space-80: var(--wp--preset--spacing--80, 6rem);

  --ts-content: var(--wp--style--global--content-size, 72rem);
  --ts-wide: var(--wp--style--global--wide-size, 84rem);
  --ts-gutter: clamp(1rem, 3vw, 2rem);

  --ts-radius: 10px;
  --ts-radius-lg: 16px;
  --ts-radius-pill: 999px;
  --ts-shadow-sm: 0 1px 2px rgba(7, 26, 51, 0.06), 0 1px 3px rgba(7, 26, 51, 0.05);
  --ts-shadow-md: 0 8px 24px rgba(7, 26, 51, 0.08);
  --ts-shadow-lg: 0 20px 48px rgba(7, 26, 51, 0.16);
  --ts-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
  --ts-fast: 160ms;
  --ts-sticky-h: 64px;
  --ts-header-h: 64px;

  --ts-roofline: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='90'%3E%3Cpath d='M0 72L90 18l90 54' fill='none' stroke='%23fff' stroke-opacity='.07' stroke-width='2'/%3E%3C/svg%3E");
  --ts-check-red: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23bf0a30' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 5 5L20 7'/%3E%3C/svg%3E");
  --ts-check-white: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 5 5L20 7'/%3E%3C/svg%3E");
  --ts-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235e574d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
}

@font-face {
  font-family: "Figtree Fallback";
  src: local("Arial");
  size-adjust: 104%;
  ascent-override: 92%;
  descent-override: 24%;
  line-gap-override: 0%;
}

/* ---------------------------------------------------------------------------
   2. Base
--------------------------------------------------------------------------- */
html { color-scheme: light; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--ts-header-h) + 1rem); }
*, *::before, *::after { box-sizing: border-box; }
body {
  margin: 0;
  font-family: var(--ts-font-body);
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ts-ink);
  background: var(--ts-white);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
h1, h2, h3, h4, h5, h6 {
  font-family: var(--ts-font-heading);
  color: var(--ts-navy);
  line-height: 1.15;
  letter-spacing: -0.015em;
  margin: 0 0 0.6em;
  text-wrap: balance;
  overflow-wrap: anywhere;
}
h1 { font-size: var(--ts-text-3xl); font-weight: 800; line-height: 1.08; letter-spacing: -0.02em; }
h2 { font-size: var(--ts-text-2xl); font-weight: 800; }
h3 { font-size: var(--ts-text-xl); font-weight: 700; }
h4 { font-size: var(--ts-text-lg); font-weight: 700; }
h5, h6 { font-size: var(--ts-text-md); font-weight: 700; }
p { margin: 0 0 1.1em; }
p:last-child, ul:last-child, ol:last-child { margin-bottom: 0; }
a { color: var(--ts-navy-800); text-decoration-thickness: 1px; text-underline-offset: 0.15em; transition: color var(--ts-fast) var(--ts-ease); }
a:hover { color: var(--ts-red); }
strong, b { font-weight: 700; }
small { font-size: var(--ts-text-sm); }
img, svg, video { max-width: 100%; height: auto; vertical-align: middle; }
figure { margin: 0 0 1.5rem; }
figcaption { font-size: var(--ts-text-sm); color: var(--ts-slate); margin-top: 0.5rem; }
hr, .wp-block-separator { border: 0; border-top: 1px solid var(--ts-stone); margin: var(--ts-space-50) auto; }
blockquote, .wp-block-quote { border-left: 4px solid var(--ts-red); margin: 0 0 1.5rem; padding: 0.25rem 0 0.25rem 1.25rem; color: var(--ts-navy); font-size: var(--ts-text-lg); }
.wp-block-quote cite { display: block; font-size: var(--ts-text-sm); color: var(--ts-slate); font-style: normal; margin-top: 0.5rem; }
ul, ol { padding-left: 1.4rem; margin: 0 0 1.25rem; }
li { margin-bottom: 0.35rem; }
code, kbd { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.92em; background: var(--ts-sand-100); padding: 0.1em 0.35em; border-radius: 4px; }
::selection { background: var(--ts-navy); color: var(--ts-white); }

@media (min-width: 1024px) { body { font-size: 1.0625rem; } }

/* Focus (WCAG 2.4.7) */
:focus { outline: none; }
:focus-visible { outline: 3px solid var(--ts-focus); outline-offset: 2px; border-radius: 4px; }
.ts-section--dark :focus-visible, .ts-hero :focus-visible, .ts-footer :focus-visible, .ts-cta-band :focus-visible, .ts-utility :focus-visible { outline-color: var(--ts-focus); }

/* Skip link + screen-reader text */
.skip-link, .screen-reader-text {
  position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); white-space: nowrap; margin: -1px; padding: 0; border: 0;
}
.skip-link:focus, .screen-reader-text:focus {
  position: fixed; top: 0.5rem; left: 0.5rem; z-index: 10000; width: auto; height: auto; clip: auto; clip-path: none; white-space: normal; margin: 0;
  padding: 0.75rem 1.25rem; background: var(--ts-navy); color: var(--ts-white); border-radius: var(--ts-radius); font-weight: 700; text-decoration: none; box-shadow: var(--ts-shadow-md);
}

/* Motion */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.01ms; animation-iteration-count: 1; transition-duration: 0.01ms; scroll-behavior: auto; }
}

/* ---------------------------------------------------------------------------
   3. Buttons
--------------------------------------------------------------------------- */
.wp-block-button__link, .wp-element-button, .ts-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  min-height: 48px; padding: 0.7rem 1.5rem;
  font-family: var(--ts-font-heading); font-size: 1rem; font-weight: 700; letter-spacing: 0.01em; line-height: 1.2; text-decoration: none; text-align: center;
  color: var(--ts-white); background: var(--ts-red); border: 2px solid var(--ts-red); border-radius: var(--ts-radius);
  cursor: pointer; box-shadow: var(--ts-shadow-sm);
  transition: background-color var(--ts-fast) var(--ts-ease), border-color var(--ts-fast) var(--ts-ease), color var(--ts-fast) var(--ts-ease), transform var(--ts-fast) var(--ts-ease), box-shadow var(--ts-fast) var(--ts-ease);
}
.wp-block-button__link:hover, .wp-element-button:hover, .ts-btn:hover,
.wp-block-button__link:focus-visible, .wp-element-button:focus-visible {
  color: var(--ts-white); background: var(--ts-red-700); border-color: var(--ts-red-700); transform: translateY(-2px); box-shadow: var(--ts-shadow-md);
}
.wp-block-button__link:active, .wp-element-button:active { transform: translateY(0); box-shadow: var(--ts-shadow-sm); }
.wp-block-button__link[disabled], .wp-element-button[disabled], .wp-element-button[aria-disabled="true"] { opacity: 0.7; cursor: progress; transform: none; }
.wp-block-buttons { gap: 0.75rem 1rem; }
.wp-block-button { margin: 0; }

.is-style-ts-primary .wp-block-button__link { color: var(--ts-white); background: var(--ts-red); border-color: var(--ts-red); }
.is-style-ts-primary .wp-block-button__link:hover { background: var(--ts-red-700); border-color: var(--ts-red-700); }

.is-style-ts-outline .wp-block-button__link, .ts-btn--outline { color: var(--ts-navy); background: transparent; border-color: var(--ts-navy); box-shadow: none; }
.is-style-ts-outline .wp-block-button__link:hover, .ts-btn--outline:hover { color: var(--ts-white); background: var(--ts-navy); border-color: var(--ts-navy); }

.is-style-ts-ghost .wp-block-button__link, .ts-btn--ghost { color: var(--ts-white); background: transparent; border-color: rgba(255, 255, 255, 0.75); box-shadow: none; }
.is-style-ts-ghost .wp-block-button__link:hover, .ts-btn--ghost:hover { color: var(--ts-navy); background: var(--ts-white); border-color: var(--ts-white); }

/* Dark contexts: outline buttons flip to ghost */
.ts-section--dark .is-style-ts-outline .wp-block-button__link, .ts-hero .is-style-ts-outline .wp-block-button__link, .ts-cta-band .is-style-ts-outline .wp-block-button__link, .ts-card--cta .is-style-ts-outline .wp-block-button__link {
  color: var(--ts-white); border-color: rgba(255, 255, 255, 0.75);
}
.ts-section--dark .is-style-ts-outline .wp-block-button__link:hover, .ts-hero .is-style-ts-outline .wp-block-button__link:hover, .ts-cta-band .is-style-ts-outline .wp-block-button__link:hover, .ts-card--cta .is-style-ts-outline .wp-block-button__link:hover {
  color: var(--ts-navy); background: var(--ts-white); border-color: var(--ts-white);
}

/* ---------------------------------------------------------------------------
   4. Layout: sections + grids
--------------------------------------------------------------------------- */
.ts-section { position: relative; padding-block: clamp(3rem, 6vw, 5.5rem); }
.ts-section > :where(h2, .ts-eyebrow, .ts-lead) { max-width: 48rem; }
.ts-section--alt { background: var(--ts-sand); }
.ts-section--dark { background: var(--ts-navy); color: var(--ts-white); }
.ts-section--dark :where(h1, h2, h3, h4, p, li, .ts-lead) { color: var(--ts-white); }
.ts-section--dark :where(a:not(.wp-block-button__link)) { color: var(--ts-white); text-decoration-color: rgba(255, 255, 255, 0.5); }
.ts-section--dark :where(a:not(.wp-block-button__link)):hover { color: var(--ts-gold); }
.ts-section--dark .ts-eyebrow { color: var(--ts-gold); }
.ts-section--dark .ts-card { background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.14); box-shadow: none; }
.ts-section--dark .ts-card :where(h3, h4, p, li) { color: var(--ts-white); }
.ts-section--dark .ts-check-list li::before { background-image: var(--ts-check-white); }
.ts-section--dark .ts-stat__num, .ts-section--dark .ts-stat strong:first-child { color: var(--ts-gold); }
/* Stat cards inside dark sections go translucent so the gold numbers sit on navy (8:1), not on a white card (2.2:1). */
.ts-section--dark .ts-stat { background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.14); border-left-color: var(--ts-gold); }
.ts-section--dark .ts-stat__label, .ts-section--dark .ts-stat > :last-child:not(:first-child) { color: rgba(255, 255, 255, 0.82); }
.ts-section--hail { background: var(--ts-sky); }
.ts-section--reviews { background: var(--ts-sand); }
.ts-section--compare { background: var(--ts-white); }
.ts-section--financing { background: var(--ts-sand); }
.ts-section--process { background: var(--ts-white); }
.ts-section--process h2, .ts-section--reviews h2, .ts-section--compare h2 { max-width: 44rem; }

/* Full-bleed safety for colored sections nested in constrained content */
.ts-section.alignfull, .ts-cta-band.alignfull, .ts-hero.alignfull { margin-inline: calc(50% - 50vw); width: 100vw; max-width: none; }

.ts-grid-3, .ts-grid-4, .ts-steps, .ts-reviews {
  display: grid; gap: var(--ts-space-40); grid-template-columns: 1fr; align-items: stretch;
  margin-block: var(--ts-space-40) 0;
}
.ts-grid-3 > *, .ts-grid-4 > *, .ts-reviews > * { min-width: 0; margin: 0; }
@media (min-width: 600px) {
  .ts-grid-3, .ts-grid-4, .ts-steps, .ts-reviews { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .ts-grid-3, .ts-reviews { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ts-grid-4, .ts-steps { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
/* Core grid layout type emitted by the editor must not fight ours */
.ts-grid-3.is-layout-grid, .ts-grid-4.is-layout-grid, .ts-steps.is-layout-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); }
@media (min-width: 1024px) { .ts-grid-3.is-layout-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .ts-grid-4.is-layout-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* ---------------------------------------------------------------------------
   5. Hero
--------------------------------------------------------------------------- */
.ts-hero {
  position: relative; isolation: isolate; overflow: hidden;
  display: grid; gap: var(--ts-space-40); align-content: center;
  padding: clamp(3rem, 8vw, 6rem) max(var(--ts-gutter), calc(50% - var(--ts-wide) / 2)) clamp(3.5rem, 8vw, 6rem);
  color: var(--ts-white);
  background: var(--ts-navy) linear-gradient(135deg, var(--ts-navy-900) 0%, var(--ts-navy) 55%, var(--ts-navy-800) 100%);
  background-size: cover; background-position: center;
}
.ts-hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--ts-roofline) center / 180px 90px repeat; pointer-events: none; }
.ts-hero::after { content: ""; position: absolute; inset: auto 0 0; height: 6px; background: linear-gradient(90deg, var(--ts-red) 0 60%, var(--ts-gold) 60% 100%); z-index: 1; }
.ts-hero.has-image, .ts-hero[style*="background-image"] { background-blend-mode: multiply; }
.ts-hero.has-image::before, .ts-hero[style*="background-image"]::before { background: linear-gradient(180deg, rgba(7, 26, 51, 0.72), rgba(7, 26, 51, 0.6)), var(--ts-roofline) center / 180px 90px repeat; }
.ts-hero > *, .ts-hero__inner > * { min-width: 0; margin: 0; }
.ts-hero__inner { display: grid; gap: var(--ts-space-40); width: 100%; grid-column: 1 / -1; }
.ts-hero :where(h1, h2, h3, p, li) { color: var(--ts-white); }
.ts-hero h1 { max-width: 20ch; margin: 0; font-size: var(--ts-text-3xl); line-height: 1.06; letter-spacing: -0.02em; }
.ts-hero h1 + p, .ts-hero .ts-lead { max-width: 56ch; font-size: var(--ts-text-lg); color: rgba(255, 255, 255, 0.88); }
.ts-hero .ts-eyebrow { color: var(--ts-gold); }
.ts-hero :where(a:not(.wp-block-button__link)) { color: var(--ts-white); }
.ts-hero .wp-block-buttons { margin-top: 0.5rem; }
.ts-hero .ts-check-list li::before { background-image: var(--ts-check-white); }
.ts-hero .ts-badge-row > *, .ts-hero .ts-badge-row li { background: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.25); color: var(--ts-white); }
.ts-hero > .ts-form-card, .ts-hero__inner > .ts-form-card, .ts-hero__form { color: var(--ts-ink); margin-top: var(--ts-space-30); }
.ts-hero__form :where(h2, h3, p, label) { color: var(--ts-ink); }
.ts-hero__form :where(h2, h3) { color: var(--ts-navy); }
.ts-hero--service, .ts-hero--city { padding-block: clamp(2.5rem, 6vw, 4.5rem); }
.ts-hero--service h1, .ts-hero--city h1 { font-size: var(--ts-text-2xl); max-width: 24ch; }
@media (min-width: 1024px) {
  .ts-hero { min-height: 70vh; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); column-gap: var(--ts-space-60); }
  .ts-hero__inner { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); column-gap: var(--ts-space-60); }
  .ts-hero > :not(.ts-form-card):not(.ts-hero__form):not(.ts-hero__inner), .ts-hero__inner > :not(.ts-form-card):not(.ts-hero__form) { grid-column: 1; }
  .ts-hero > .ts-form-card, .ts-hero > .ts-hero__form, .ts-hero__inner > .ts-form-card, .ts-hero__inner > .ts-hero__form { grid-column: 2; grid-row: 1 / span 40; align-self: center; margin-top: 0; }
  .ts-hero--service, .ts-hero--city { min-height: 0; }
  .ts-hero--service > .ts-form-card, .ts-hero--city > .ts-form-card { align-self: start; }
}

/* ---------------------------------------------------------------------------
   6. Text utilities
--------------------------------------------------------------------------- */
.ts-eyebrow { display: block; margin: 0 0 0.75rem; font-family: var(--ts-font-heading); font-size: 0.8125rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ts-red); }
.ts-eyebrow::before { content: ""; display: inline-block; width: 1.5rem; height: 2px; margin-right: 0.6rem; vertical-align: 0.25em; background: currentColor; border-radius: 2px; }
.ts-lead { font-size: var(--ts-text-lg); line-height: 1.55; color: var(--ts-slate); max-width: 68ch; }
.ts-section--dark .ts-lead, .ts-cta-band .ts-lead { color: rgba(255, 255, 255, 0.88); } /* slate on navy fails WCAG contrast */
.ts-check-list { list-style: none; padding: 0; margin: 0 0 1.5rem; }
.ts-check-list li { position: relative; padding-left: 2rem; margin-bottom: 0.6rem; }
.ts-check-list li::before { content: ""; position: absolute; left: 0; top: 0.15em; width: 1.35rem; height: 1.35rem; background: var(--ts-check-red) center / contain no-repeat; }
.ts-badge-row { display: flex; flex-wrap: wrap; gap: 0.5rem 0.6rem; list-style: none; padding: 0; margin: 0 0 1.5rem; }
.ts-badge-row > *, .ts-badge-row li { display: inline-flex; align-items: center; gap: 0.4rem; margin: 0; padding: 0.35rem 0.85rem; font-size: var(--ts-text-sm); font-weight: 600; color: var(--ts-navy); background: var(--ts-sand-100); border: 1px solid var(--ts-stone); border-radius: var(--ts-radius-pill); white-space: nowrap; }
.ts-badge-row svg { width: 1em; height: 1em; }
.ts-noindex, .ts-nofollow { display: contents; }

/* ---------------------------------------------------------------------------
   7. Cards, steps, stats
--------------------------------------------------------------------------- */
.ts-card {
  position: relative; display: flex; flex-direction: column; gap: 0.25rem;
  padding: 1.5rem; background: var(--ts-white); border: 1px solid var(--ts-stone); border-radius: var(--ts-radius); box-shadow: var(--ts-shadow-sm);
  transition: transform var(--ts-fast) var(--ts-ease), box-shadow var(--ts-fast) var(--ts-ease), border-color var(--ts-fast) var(--ts-ease);
}
.ts-card > :last-child { margin-bottom: 0; }
.ts-card > .wp-block-buttons, .ts-card > p:has(> a:only-child) { margin-top: auto; padding-top: 0.5rem; }
.ts-card:has(> a:focus-visible), .ts-grid-3 > .ts-card:hover, .ts-grid-4 > .ts-card:hover { transform: translateY(-3px); box-shadow: var(--ts-shadow-md); border-color: var(--ts-navy-800); }
.ts-card h3, .ts-card h4 { margin-bottom: 0.4rem; font-size: var(--ts-text-lg); }
.ts-card p { color: var(--ts-slate); font-size: var(--ts-text-md); }
.ts-card > .wp-block-image, .ts-card > figure { margin: -1.5rem -1.5rem 1rem; }
.ts-card > .wp-block-image img, .ts-card > figure img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--ts-radius) var(--ts-radius) 0 0; }
.ts-card svg, .ts-card__icon { width: 2.25rem; height: 2.25rem; color: var(--ts-red); margin-bottom: 0.75rem; }
.ts-card--featured { border-top: 3px solid var(--ts-red); }
.ts-card--cta { background: var(--ts-navy); border-color: var(--ts-navy); color: var(--ts-white); box-shadow: var(--ts-shadow-md); }
.ts-card--cta :where(h2, h3, h4, p, li) { color: var(--ts-white); }
.ts-card--cta p { color: rgba(255, 255, 255, 0.88); }
.ts-card--cta :where(a:not(.wp-block-button__link)) { color: var(--ts-white); font-weight: 700; }
.ts-card--cta :where(a:not(.wp-block-button__link)):hover { color: var(--ts-gold); }
.ts-card--cta .wp-block-button__link { width: 100%; }
.ts-card--cta::before { content: ""; position: absolute; inset: 0; border-radius: inherit; background: var(--ts-roofline) center / 180px 90px repeat; opacity: 0.6; pointer-events: none; }
.ts-card--cta > * { position: relative; }

.ts-step { padding-top: 2rem; }
.ts-step__num {
  display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; margin: 0 0 1rem;
  font-family: var(--ts-font-heading); font-size: 1.25rem; font-weight: 800; color: var(--ts-white); background: var(--ts-red); border-radius: 50%; box-shadow: 0 0 0 6px var(--ts-red-100);
}
.ts-step h3 { font-size: var(--ts-text-lg); }
@media (min-width: 1024px) {
  .ts-steps { position: relative; }
  .ts-steps::before { content: ""; position: absolute; left: 6%; right: 6%; top: calc(2rem + 1.375rem); height: 2px; background: repeating-linear-gradient(90deg, var(--ts-stone) 0 8px, transparent 8px 16px); }
  .ts-step { background: var(--ts-white); }
}

.ts-stat-row { display: grid; gap: 1rem; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: var(--ts-space-40) 0; }
.ts-stat { padding: 1.25rem 1.25rem 1.1rem; border: 1px solid var(--ts-stone); border-left: 4px solid var(--ts-red); border-radius: var(--ts-radius); background: var(--ts-white); }
.ts-stat > * { margin: 0; }
.ts-stat__num, .ts-stat strong:first-child, .ts-stat > :first-child { display: block; font-family: var(--ts-font-heading); font-size: clamp(1.8rem, 3.2vw, 2.6rem); font-weight: 800; line-height: 1.05; letter-spacing: -0.02em; color: var(--ts-navy); margin-bottom: 0.3rem; }
.ts-stat__label, .ts-stat > :last-child:not(:first-child) { font-size: var(--ts-text-sm); color: var(--ts-slate); line-height: 1.4; }
@media (min-width: 782px) { .ts-stat-row { grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: 1.25rem; } }

/* ---------------------------------------------------------------------------
   8. Trust bar
--------------------------------------------------------------------------- */
.ts-trust-bar { background: var(--ts-sand); border-block: 1px solid var(--ts-stone); padding-block: 1.25rem; }
.ts-trust-bar__row { gap: 0.75rem 1.5rem; margin: 0; }
.ts-trust-bar__row.wp-block-columns { flex-wrap: wrap; }
.ts-trust-bar__row > .wp-block-column { flex-basis: calc(50% - 0.75rem); flex-grow: 1; min-width: 0; }
.ts-trust-bar__item { display: flex; align-items: center; gap: 0.75rem; margin: 0; padding: 0.4rem 0; font-size: var(--ts-text-sm); line-height: 1.35; color: var(--ts-slate); }
.ts-trust-bar__item::before { content: ""; flex: 0 0 auto; width: 2rem; height: 2rem; border-radius: 50%; background: var(--ts-white) var(--ts-check-red) center / 1.1rem no-repeat; border: 1px solid var(--ts-stone); }
.ts-trust-bar__item strong { display: block; color: var(--ts-navy); font-family: var(--ts-font-heading); font-size: var(--ts-text-md); }
.ts-trust-bar__item svg, .ts-trust-bar__item img { width: 2rem; height: 2rem; flex: 0 0 auto; color: var(--ts-navy); }
.ts-trust-bar__item:has(> svg)::before, .ts-trust-bar__item:has(> img)::before { display: none; }
@media (min-width: 1024px) {
  .ts-trust-bar__row > .wp-block-column { flex-basis: 0; }
  .ts-trust-bar__row > .wp-block-column + .wp-block-column { border-left: 1px solid var(--ts-stone); padding-left: 1.5rem; }
}

/* ---------------------------------------------------------------------------
   9. Forms
--------------------------------------------------------------------------- */
.ts-form-card {
  position: relative; padding: clamp(1.5rem, 3vw, 2.25rem); background: var(--ts-white); border: 1px solid var(--ts-stone); border-top: 4px solid var(--ts-red); border-radius: var(--ts-radius-lg); box-shadow: var(--ts-shadow-md); color: var(--ts-ink);
}
.ts-form-card > * { margin-inline: 0; max-width: none; }
.ts-form-card--compact { padding: clamp(1.25rem, 3vw, 1.75rem); }
.ts-form-card__title { margin: 0 0 0.35rem; font-size: var(--ts-text-xl); color: var(--ts-navy); }
.ts-form-card--compact .ts-form-card__title { font-size: var(--ts-text-lg); }
.ts-form-card__sub { margin: 0 0 1.25rem; color: var(--ts-slate); font-size: var(--ts-text-sm); }
.ts-form-card__note { margin: 1rem 0 0; font-size: var(--ts-text-xs); color: var(--ts-slate); line-height: 1.5; }
.ts-form-card__note a { font-weight: 700; color: var(--ts-navy); }
.ts-form-card__note a[href^="tel:"] { white-space: nowrap; }

.ts-form { display: grid; gap: 0.9rem; margin: 0; }
.ts-form__row { display: grid; gap: 0.9rem; }
@media (min-width: 600px) { .ts-form__row { grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); } }
.ts-form__field { display: flex; flex-direction: column; gap: 0.35rem; min-width: 0; }
.ts-form__field label, .ts-form label { font-size: var(--ts-text-sm); font-weight: 600; color: var(--ts-navy); }
.ts-form__field label .req, .ts-form abbr[title] { color: var(--ts-red); text-decoration: none; border: 0; }
.ts-form__hint { font-size: var(--ts-text-xs); color: var(--ts-slate); }
.ts-form input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]), .ts-form select, .ts-form textarea {
  width: 100%; min-height: 48px; padding: 0.65rem 0.9rem; font: inherit; font-size: 1rem; color: var(--ts-ink); background: var(--ts-sand-100); border: 1px solid var(--ts-stone); border-radius: 6px; appearance: none; -webkit-appearance: none;
  transition: border-color var(--ts-fast) var(--ts-ease), background-color var(--ts-fast) var(--ts-ease), box-shadow var(--ts-fast) var(--ts-ease);
}
.ts-form select { background-image: var(--ts-chevron); background-repeat: no-repeat; background-position: right 0.75rem center; background-size: 1.1rem; padding-right: 2.5rem; cursor: pointer; }
.ts-form textarea { min-height: 7rem; resize: vertical; }
.ts-form input:focus, .ts-form select:focus, .ts-form textarea:focus { background: var(--ts-white); border-color: var(--ts-navy); box-shadow: 0 0 0 1px var(--ts-navy); outline: 3px solid var(--ts-focus); outline-offset: 2px; }
.ts-form input::placeholder, .ts-form textarea::placeholder { color: #8a8378; }
.ts-form input:-webkit-autofill { -webkit-box-shadow: 0 0 0 100px var(--ts-sand-100) inset; }
.ts-form .is-invalid input, .ts-form .is-invalid select, .ts-form .is-invalid textarea, .ts-form input[aria-invalid="true"], .ts-form select[aria-invalid="true"] { border-color: var(--ts-red); background: #fff7f8; }
.ts-form__consent, .ts-form__field--checkbox { display: flex; align-items: flex-start; gap: 0.6rem; font-size: var(--ts-text-xs); color: var(--ts-slate); line-height: 1.45; }
.ts-form__consent label, .ts-form__field--checkbox label { font-weight: 500; color: var(--ts-slate); }
.ts-form__consent { flex-wrap: wrap; }
.ts-form__consent > label { flex: 1 1 0; min-width: 0; }
.ts-form__consent > .ts-form__field-error { flex-basis: 100%; padding-left: 1.75rem; }
.ts-form input[type="checkbox"] { width: 1.15rem; height: 1.15rem; margin: 0.1rem 0 0; flex: 0 0 auto; accent-color: var(--ts-red); }
.ts-form__submit { margin-top: 0.25rem; }
.ts-form__submit .wp-element-button, .ts-form__submit button, .ts-form button[type="submit"] { width: 100%; min-height: 52px; font-size: 1.05rem; }
.ts-form__error, .ts-form__success { margin: 0; padding: 0.8rem 1rem; border-radius: 8px; font-size: var(--ts-text-sm); font-weight: 600; }
.ts-form__error { color: var(--ts-red-700); background: var(--ts-red-100); border: 1px solid #f2c5cd; }
.ts-form__success { color: var(--ts-success); background: #e9f5ee; border: 1px solid #bfe3cc; }
.ts-form__field-error { margin: 0; font-size: var(--ts-text-xs); font-weight: 600; color: var(--ts-red-700); }
.ts-form__field-error:empty { display: none; }
.ts-form .cf-turnstile { min-height: 65px; }
.ts-form__hp { position: absolute !important; left: -9999px !important; top: auto !important; width: 1px !important; height: 1px !important; overflow: hidden !important; opacity: 0 !important; pointer-events: none !important; }
.ts-form__hp input { tab-index: -1; }

/* ---------------------------------------------------------------------------
   10. Tables
--------------------------------------------------------------------------- */
.wp-block-table { margin: var(--ts-space-40) 0; overflow-x: auto; }
.wp-block-table table, .ts-table-compare table { width: 100%; border-collapse: collapse; font-size: var(--ts-text-sm); border: 1px solid var(--ts-stone); }
.wp-block-table th, .wp-block-table td, .ts-table-compare th, .ts-table-compare td { padding: 0.8rem 1rem; text-align: left; vertical-align: top; border: 1px solid var(--ts-stone); }
.wp-block-table thead th, .ts-table-compare thead th { background: var(--ts-navy); color: var(--ts-white); font-family: var(--ts-font-heading); font-weight: 700; border-color: var(--ts-navy-800); }
.wp-block-table tbody tr:nth-child(even) td, .ts-table-compare tbody tr:nth-child(even) td { background: var(--ts-sand); }
.wp-block-table tfoot td { font-weight: 700; }
.ts-table-compare { border-radius: var(--ts-radius); box-shadow: var(--ts-shadow-sm); }
.ts-table-compare table { border: 0; }
.ts-table-compare tbody td:first-child { font-weight: 600; color: var(--ts-navy); }
.ts-table-compare thead th:nth-child(2) { background: var(--ts-red); border-color: var(--ts-red-700); }
.ts-table-versus tbody td:nth-child(2), .ts-table-versus tbody td:nth-child(3) { white-space: nowrap; }
.ts-table-versus tbody td:nth-child(2)::before, .ts-table-versus tbody td:nth-child(3)::before { display: inline-flex; align-items: center; justify-content: center; width: 1.35rem; height: 1.35rem; margin-right: 0.5rem; border-radius: 50%; font-weight: 800; font-size: 0.85rem; line-height: 1; vertical-align: -0.3em; }
.ts-table-versus tbody td:nth-child(2) { color: var(--ts-success); font-weight: 600; }
.ts-table-versus tbody td:nth-child(2)::before { content: "\2713"; color: var(--ts-white); background: var(--ts-success); }
.ts-table-versus tbody td:nth-child(3) { color: var(--ts-slate); }
.ts-table-versus tbody td:nth-child(3)::before { content: "\2715"; color: var(--ts-slate); background: var(--ts-sand-100); border: 1px solid var(--ts-stone); }
@media (max-width: 599px) {
  .ts-table-compare thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .ts-table-compare tr { display: block; border-bottom: 2px solid var(--ts-stone); }
  .ts-table-compare tr:last-child { border-bottom: 0; }
  .ts-table-compare td { display: flex; align-items: center; gap: 0.5rem; border: 0; border-top: 1px solid var(--ts-stone); }
  .ts-table-compare tbody td:first-child { display: block; background: var(--ts-sand-100); border-top: 0; }
  .ts-table-compare tbody tr:nth-child(even) td { background: var(--ts-white); }
  .ts-table-compare tbody tr:nth-child(even) td:first-child { background: var(--ts-sand-100); }
  .ts-table-versus tbody td:nth-child(2), .ts-table-versus tbody td:nth-child(3) { white-space: normal; }
  .ts-table-compare td[data-label]::after { content: attr(data-label); order: -1; flex: 0 0 38%; font-weight: 600; color: var(--ts-navy); }
}

/* ---------------------------------------------------------------------------
   11. Reviews
--------------------------------------------------------------------------- */
.ts-reviews { margin-bottom: var(--ts-space-40); }
.ts-review { display: flex; flex-direction: column; gap: 0.6rem; padding: 1.5rem; background: var(--ts-white); border: 1px solid var(--ts-stone); border-radius: var(--ts-radius-lg); box-shadow: var(--ts-shadow-sm); }
.ts-review__stars { display: inline-flex; gap: 2px; color: var(--ts-gold); font-size: 1.1rem; letter-spacing: 1px; line-height: 1; }
.ts-review__stars svg { width: 1.1rem; height: 1.1rem; fill: currentColor; }
.ts-review__stars .is-empty { color: var(--ts-stone); }
.ts-review__text, .ts-review blockquote, .ts-review p { margin: 0; font-size: var(--ts-text-md); color: var(--ts-ink); border: 0; padding: 0; }
.ts-review__text::before { content: "\201C"; color: var(--ts-red); font-weight: 800; }
.ts-review__text::after { content: "\201D"; color: var(--ts-red); font-weight: 800; }
.ts-review__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 0.6rem; margin-top: auto; padding-top: 0.75rem; border-top: 1px solid var(--ts-sand-100); font-size: var(--ts-text-sm); color: var(--ts-slate); }
.ts-review__meta strong, .ts-review__name { color: var(--ts-navy); font-weight: 700; }
.ts-review__source { margin-left: auto; padding: 0.15rem 0.6rem; font-size: var(--ts-text-xs); font-weight: 600; color: var(--ts-navy); background: var(--ts-sky); border-radius: var(--ts-radius-pill); }
.ts-reviews__empty { margin: 1rem 0 0; text-align: center; color: var(--ts-slate); font-size: var(--ts-text-sm); }
.ts-reviews__summary { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 1rem; margin-bottom: 1rem; font-weight: 600; color: var(--ts-navy); }

/* ---------------------------------------------------------------------------
   12. CTA band
--------------------------------------------------------------------------- */
.ts-cta-band {
  position: relative; isolation: isolate; overflow: hidden; text-align: center; color: var(--ts-white);
  padding: clamp(3rem, 7vw, 5rem) var(--ts-gutter);
  background: var(--ts-navy-900) linear-gradient(135deg, var(--ts-navy-900), var(--ts-navy));
}
.ts-cta-band::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--ts-roofline) center / 180px 90px repeat; }
.ts-cta-band::after { content: ""; position: absolute; inset: 0 0 auto; height: 6px; background: var(--ts-red); }
.ts-cta-band--red { background: var(--ts-red) linear-gradient(135deg, var(--ts-red-700), var(--ts-red)); }
.ts-cta-band--red::after { background: var(--ts-gold); }
.ts-cta-band > * { max-width: 46rem; margin-inline: auto; }
.ts-cta-band :where(h2, h3, p) { color: var(--ts-white); }
.ts-cta-band h2 { font-size: var(--ts-text-2xl); margin-bottom: 0.5rem; }
.ts-cta-band p { color: rgba(255, 255, 255, 0.88); font-size: var(--ts-text-lg); }
.ts-cta-band .ts-eyebrow { color: var(--ts-gold); }
.ts-cta-band :where(a:not(.wp-block-button__link)) { color: var(--ts-white); text-decoration-color: rgba(255, 255, 255, 0.5); }
/* Only the phone number gets the big no-wrap treatment; sentence links in the band wrap normally. */
.ts-cta-band :where(a[href^="tel:"]:not(.wp-block-button__link)) { font-family: var(--ts-font-heading); font-weight: 800; font-size: clamp(1.4rem, 3vw, 2rem); text-decoration: none; white-space: nowrap; }
.ts-cta-band :where(a:not(.wp-block-button__link)):hover { color: var(--ts-gold); }
.ts-cta-band .wp-block-buttons { justify-content: center; margin-top: 1.25rem; }
.ts-cta-band .is-style-ts-primary .wp-block-button__link { box-shadow: 0 10px 24px rgba(0, 0, 0, 0.25); }
.ts-cta-band--red .is-style-ts-primary .wp-block-button__link { background: var(--ts-white); border-color: var(--ts-white); color: var(--ts-red-700); }
.ts-cta-band__small, .ts-cta-band small { display: block; margin-top: 1rem; font-size: var(--ts-text-sm); color: rgba(255, 255, 255, 0.72); }

/* ---------------------------------------------------------------------------
   13. Breadcrumb
--------------------------------------------------------------------------- */
.ts-breadcrumb { font-size: var(--ts-text-sm); color: var(--ts-slate); padding: 0.85rem 0; }
.ts-breadcrumb ol, .ts-breadcrumb ul { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem 0; list-style: none; margin: 0; padding: 0; }
.ts-breadcrumb li { margin: 0; display: inline-flex; align-items: center; }
.ts-breadcrumb li + li::before, .ts-breadcrumb__sep { content: ""; display: inline-block; width: 1rem; height: 1rem; margin: 0 0.35rem; background: var(--ts-chevron) center / contain no-repeat; transform: rotate(-90deg); opacity: 0.7; }
.ts-breadcrumb a { color: var(--ts-slate); text-decoration: none; }
.ts-breadcrumb a:hover { color: var(--ts-red); text-decoration: underline; }
.ts-breadcrumb [aria-current="page"], .ts-breadcrumb li:last-child { color: var(--ts-navy); font-weight: 600; }

/* ---------------------------------------------------------------------------
   14. FAQ (details/summary) + core details defaults
--------------------------------------------------------------------------- */
.wp-block-details { margin: 0 0 0.75rem; padding: 0; background: var(--ts-white); border: 1px solid var(--ts-stone); border-radius: var(--ts-radius); transition: border-color var(--ts-fast) var(--ts-ease), box-shadow var(--ts-fast) var(--ts-ease); }
.wp-block-details[open] { border-color: var(--ts-navy-800); box-shadow: var(--ts-shadow-sm); }
.wp-block-details > summary {
  position: relative; display: flex; align-items: center; gap: 1rem; min-height: 48px; padding: 0.9rem 3.25rem 0.9rem 1.25rem; margin: 0; cursor: pointer; list-style: none;
  font-family: var(--ts-font-heading); font-size: var(--ts-text-md); font-weight: 700; color: var(--ts-navy); line-height: 1.35;
}
.wp-block-details > summary::-webkit-details-marker, .wp-block-details > summary::marker { display: none; content: ""; }
.wp-block-details > summary::before, .wp-block-details > summary::after { content: ""; position: absolute; right: 1.1rem; top: 50%; width: 0.9rem; height: 2px; background: var(--ts-red); border-radius: 2px; transform: translateY(-50%); transition: transform var(--ts-fast) var(--ts-ease); }
.wp-block-details > summary::after { transform: translateY(-50%) rotate(90deg); }
.wp-block-details[open] > summary::after { transform: translateY(-50%) rotate(0deg); }
.wp-block-details > summary:hover { color: var(--ts-red); }
.wp-block-details > summary:focus-visible { outline-offset: -3px; border-radius: var(--ts-radius); }
.wp-block-details > :not(summary) { padding: 0 1.25rem; color: var(--ts-ink); }
.wp-block-details > :nth-child(2) { padding-top: 0.25rem; }
.wp-block-details > :last-child:not(summary) { padding-bottom: 1.1rem; }
.wp-block-details > p + p { margin-top: -0.25rem; }
.ts-faq > h2 { margin-bottom: var(--ts-space-40); }
.ts-faq .wp-block-details { max-width: 56rem; }
.ts-faq .wp-block-details:last-of-type { margin-bottom: 0; }
.ts-section--alt .wp-block-details { border-color: var(--ts-stone); }

/* ---------------------------------------------------------------------------
   15. Header + utility bar + navigation
--------------------------------------------------------------------------- */
.ts-utility { display: none; background: var(--ts-navy-900); color: var(--ts-white); font-size: var(--ts-text-sm); }
.ts-utility a { color: var(--ts-white); text-decoration: none; font-weight: 600; }
.ts-utility a:hover { color: var(--ts-gold); }
.ts-utility__inner, .ts-utility > .wp-block-group { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem 1.5rem; min-height: 40px; padding-block: 0.3rem; }
.ts-utility__phone, .ts-utility .ts-phone-pill { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.25rem 0.85rem; background: var(--ts-white); color: var(--ts-navy); border-radius: var(--ts-radius-pill); font-weight: 700; }
.ts-utility__phone:hover, .ts-utility .ts-phone-pill:hover { background: var(--ts-gold); color: var(--ts-navy); }
.ts-utility p { margin: 0; }
.ts-utility svg { width: 1em; height: 1em; }
.ts-utility__item + .ts-utility__item::before { content: "\2713"; color: var(--ts-gold); margin: 0 0.6rem 0 0; }
@media (min-width: 782px) { .ts-utility { display: block; } }

.ts-header {
  position: sticky; top: 0; z-index: 900; background: var(--ts-white); border-bottom: 1px solid var(--ts-stone);
  transition: box-shadow var(--ts-fast) var(--ts-ease);
}
.ts-header.is-scrolled { box-shadow: inset 0 4px 0 var(--ts-navy), 0 4px 16px rgba(7, 26, 51, 0.1); }
.ts-header__inner, .ts-header > .wp-block-group { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: var(--ts-header-h); padding-block: 0.5rem; }
.ts-header .wp-block-site-logo, .ts-header__logo { display: flex; align-items: center; flex: 0 0 auto; margin: 0; }
.ts-header .wp-block-site-logo img, .ts-header__logo img, .ts-header__logo svg { width: auto; height: 40px; max-width: 180px; }
.ts-header .wp-block-site-title { margin: 0; font-family: var(--ts-font-heading); font-size: 1.25rem; font-weight: 800; }
.ts-header .wp-block-site-title a { color: var(--ts-navy); text-decoration: none; }
/* .ts-header prefix beats core's .wp-block-buttons{display:flex}, which WordPress prints inline AFTER theme.css. */
.ts-header .ts-header__cta { display: none; }
.ts-header__cta .wp-block-button__link, .ts-header .wp-block-button__link { min-height: 44px; padding: 0.55rem 1.1rem; font-size: 0.95rem; white-space: nowrap; }
.ts-header__phone { display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem; min-width: 44px; min-height: 44px; padding: 0.4rem; color: var(--ts-navy); font-family: var(--ts-font-heading); font-weight: 700; text-decoration: none; white-space: nowrap; }
.ts-header__phone svg { width: 1.3rem; height: 1.3rem; }
.ts-header__phone span { display: none; }
.ts-header__actions { display: flex; align-items: center; gap: 0.5rem; }
@media (min-width: 782px) {
  :root { --ts-header-h: 80px; }
  .ts-header .ts-header__cta { display: flex; }
  .ts-header__phone span { display: inline; }
  .ts-header .wp-block-site-logo img, .ts-header__logo img, .ts-header__logo svg { height: 48px; }
}

/* Navigation (core/navigation) */
.ts-header .wp-block-navigation { font-family: var(--ts-font-heading); font-weight: 600; font-size: 0.95rem; }
.ts-header .wp-block-navigation a { color: var(--ts-navy); text-decoration: none; }
.ts-header .wp-block-navigation a:hover, .ts-header .wp-block-navigation .current-menu-item > a { color: var(--ts-red); }
.ts-header .wp-block-navigation .wp-block-navigation-item__content { display: inline-flex; align-items: center; min-height: 44px; padding: 0.25rem 0.6rem; border-radius: 6px; }
.ts-header .wp-block-navigation > .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:hover { background: var(--ts-sand); }
.ts-header .wp-block-navigation__submenu-icon { color: var(--ts-slate); }
.ts-header .wp-block-navigation .wp-block-navigation__submenu-container {
  min-width: 15rem; padding: 0.5rem; background: var(--ts-white); border: 1px solid var(--ts-stone); border-radius: var(--ts-radius); box-shadow: var(--ts-shadow-lg); border-top: 3px solid var(--ts-red);
}
.ts-header .wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content { width: 100%; padding: 0.55rem 0.8rem; font-weight: 500; font-size: 0.95rem; }
.ts-header .wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover { background: var(--ts-sand); color: var(--ts-red); }
.ts-header .wp-block-navigation__responsive-container-open, .ts-header .wp-block-navigation__responsive-container-close { width: 44px; height: 44px; color: var(--ts-navy); border-radius: 6px; }
.ts-header .wp-block-navigation__responsive-container-open svg, .ts-header .wp-block-navigation__responsive-container-close svg { width: 28px; height: 28px; }
.ts-header .wp-block-navigation__responsive-container.is-menu-open { background: var(--ts-white); padding: 4.5rem var(--ts-gutter) calc(var(--ts-sticky-h) + 2rem); overflow-y: auto; }
.ts-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { gap: 0; }
.ts-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item { width: 100%; border-bottom: 1px solid var(--ts-sand-100); }
.ts-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content { width: 100%; min-height: 48px; font-size: 1.1rem; padding-inline: 0; }
.ts-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container { border: 0; box-shadow: none; padding: 0 0 0.5rem 1rem; }
.ts-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item { border: 0; }
.ts-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content { font-size: 1rem; min-height: 44px; }
body:has(.wp-block-navigation__responsive-container.is-menu-open) .ts-sticky { display: none; }

/* ---------------------------------------------------------------------------
   16. Footer
--------------------------------------------------------------------------- */
.ts-footer { background: var(--ts-navy-900); color: rgba(255, 255, 255, 0.82); font-size: var(--ts-text-sm); border-top: 6px solid var(--ts-red); }
.ts-footer :where(h2, h3, h4) { color: var(--ts-white); font-size: var(--ts-text-md); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 1rem; }
.ts-footer :where(p, li) { color: rgba(255, 255, 255, 0.82); }
.ts-footer a { color: var(--ts-white); text-decoration: none; }
.ts-footer a:hover { color: var(--ts-gold); text-decoration: underline; }
.ts-footer ul { list-style: none; padding: 0; margin: 0; }
.ts-footer li { margin-bottom: 0.45rem; }
.ts-footer .wp-block-columns { gap: 2rem; }
.ts-footer__main, .ts-footer > .wp-block-group:first-child { padding-block: var(--ts-space-60) var(--ts-space-50); }
.ts-footer__about img, .ts-footer .wp-block-site-logo img { height: 40px; width: auto; margin-bottom: 1rem; }
.ts-footer address, .ts-footer__nap { font-style: normal; line-height: 1.6; }
.ts-footer__nap strong { color: var(--ts-white); }
.ts-footer .wp-block-social-links { gap: 0.5rem; margin-top: 1rem; }
.ts-footer .wp-block-social-link { background: rgba(255, 255, 255, 0.08); border-radius: 50%; transition: background-color var(--ts-fast) var(--ts-ease); }
.ts-footer .wp-block-social-link:hover { background: var(--ts-red); transform: none; }
.ts-footer .wp-block-social-link a { padding: 0.45rem; color: var(--ts-white); }
.ts-footer__bottom, .ts-footer > .wp-block-group:last-child { padding-block: 1.25rem; border-top: 1px solid rgba(255, 255, 255, 0.12); font-size: var(--ts-text-xs); color: rgba(255, 255, 255, 0.65); }
.ts-footer__bottom .wp-block-group, .ts-footer__bottom__inner { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.5rem 1.5rem; }
.ts-footer__bottom p { margin: 0; color: rgba(255, 255, 255, 0.65); }
.ts-footer__bottom a { color: rgba(255, 255, 255, 0.85); }
.ts-footer .wp-block-separator { border-color: rgba(255, 255, 255, 0.12); }

/* ---------------------------------------------------------------------------
   17. Sticky mobile bar (< 782px)
--------------------------------------------------------------------------- */
.ts-sticky {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 950;
  display: grid; grid-template-columns: 1fr 1fr; gap: 1px;
  background: var(--ts-stone); box-shadow: 0 -6px 20px rgba(7, 26, 51, 0.18);
  padding-bottom: env(safe-area-inset-bottom);
}
.ts-sticky a, .ts-sticky .wp-block-button__link {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; width: 100%; min-height: var(--ts-sticky-h); margin: 0; padding: 0.5rem 1rem;
  font-family: var(--ts-font-heading); font-size: 1rem; font-weight: 700; color: var(--ts-white); text-decoration: none; border: 0; border-radius: 0; box-shadow: none; transform: none;
}
.ts-sticky .wp-block-buttons, .ts-sticky .wp-block-button { display: contents; }
.ts-sticky a:first-of-type, .ts-sticky__call, .ts-sticky .wp-block-button:first-child .wp-block-button__link { background: var(--ts-navy); }
.ts-sticky a:last-of-type, .ts-sticky__estimate, .ts-sticky .wp-block-button:last-child .wp-block-button__link { background: var(--ts-red); }
.ts-sticky a:hover, .ts-sticky .wp-block-button__link:hover { filter: brightness(1.08); transform: none; }
.ts-sticky svg { width: 1.25rem; height: 1.25rem; }
.ts-sticky.is-hidden { transform: translateY(110%); visibility: hidden; }
.ts-sticky { transition: transform 200ms var(--ts-ease), visibility 200ms; }
body:has(.ts-form:focus-within) .ts-sticky { display: none; }
body:has(.ts-sticky) { padding-bottom: calc(var(--ts-sticky-h) + env(safe-area-inset-bottom)); }
@media (min-width: 782px) {
  .ts-sticky { display: none; }
  body:has(.ts-sticky) { padding-bottom: 0; }
}
@media print { .ts-sticky { display: none; } }

/* ---------------------------------------------------------------------------
   18. Service areas: city grid, nearby, city card
--------------------------------------------------------------------------- */
.ts-city-grid { display: grid; gap: 1.5rem 2rem; grid-template-columns: 1fr; margin-block: var(--ts-space-40); }
.ts-city-grid > * { margin: 0; min-width: 0; }
.ts-city-grid__county { grid-column: 1 / -1; margin: 1rem 0 0; padding-bottom: 0.5rem; font-size: var(--ts-text-lg); border-bottom: 2px solid var(--ts-stone); }
.ts-city-grid__county:first-child { margin-top: 0; }
.ts-city-grid__list { grid-column: 1 / -1; display: grid; gap: 0.25rem 1.5rem; grid-template-columns: repeat(2, minmax(0, 1fr)); list-style: none; padding: 0; margin: 0; }
.ts-city-grid__list li { margin: 0; }
.ts-city-grid__list a { display: block; padding: 0.4rem 0; min-height: 44px; display: flex; align-items: center; color: var(--ts-navy-800); text-decoration: none; border-bottom: 1px solid var(--ts-sand-100); }
.ts-city-grid__list a::before { content: ""; width: 0.4rem; height: 0.4rem; margin-right: 0.6rem; border-radius: 50%; background: var(--ts-red); flex: 0 0 auto; }
.ts-city-grid__list a:hover { color: var(--ts-red); padding-left: 0.25rem; }
@media (min-width: 600px) { .ts-city-grid__list { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .ts-city-grid__list { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.ts-nearby { display: flex; flex-wrap: wrap; gap: 0.5rem; list-style: none; padding: 0; margin: 0 0 1.5rem; }
.ts-nearby li { margin: 0; }
.ts-nearby a { display: inline-flex; align-items: center; gap: 0.35rem; min-height: 44px; padding: 0.4rem 0.9rem; background: var(--ts-sand-100); border: 1px solid var(--ts-stone); border-radius: var(--ts-radius-pill); color: var(--ts-navy); font-weight: 600; text-decoration: none; }
.ts-nearby a:hover { background: var(--ts-navy); border-color: var(--ts-navy); color: var(--ts-white); }
.ts-nearby__d { font-size: var(--ts-text-xs); color: var(--ts-slate); }

.ts-city-card { padding: 1.5rem; background: var(--ts-sky); border: 1px solid #c9d6e8; border-radius: var(--ts-radius); }
.ts-city-card h3 { margin-bottom: 0.5rem; }
.ts-city-card dl { display: grid; grid-template-columns: auto 1fr; gap: 0.35rem 0.75rem; margin: 0; font-size: var(--ts-text-sm); }
.ts-city-card dt { font-weight: 700; color: var(--ts-navy); }
.ts-city-card dd { margin: 0; color: var(--ts-ink); }
.ts-city-card__zips { display: flex; flex-wrap: wrap; gap: 0.3rem; }
.ts-city-card__zips span { padding: 0.1rem 0.5rem; background: var(--ts-white); border-radius: 4px; font-variant-numeric: tabular-nums; }

/* ---------------------------------------------------------------------------
   19. Service / city two-column layout, sidebar, author box, blog cards
--------------------------------------------------------------------------- */
.ts-layout { display: grid; gap: var(--ts-space-50); grid-template-columns: minmax(0, 1fr); align-items: start; padding-block: var(--ts-space-50); }
.ts-layout__main { min-width: 0; }
.ts-sidebar { display: grid; gap: 1.25rem; }
.ts-sidebar .ts-form-card { margin: 0; }
.ts-sidebar__phone { font-family: var(--ts-font-heading); font-size: var(--ts-text-xl); font-weight: 800; color: var(--ts-navy); text-decoration: none; }
.ts-sidebar ul { list-style: none; padding: 0; margin: 0; }
.ts-sidebar li { margin: 0; border-bottom: 1px solid var(--ts-sand-100); }
.ts-sidebar li a { display: flex; align-items: center; min-height: 44px; padding: 0.4rem 0; text-decoration: none; color: var(--ts-navy-800); }
.ts-sidebar li a::after { content: ""; width: 1rem; height: 1rem; margin-left: auto; background: var(--ts-chevron) center / contain no-repeat; transform: rotate(-90deg); opacity: 0.6; }
.ts-sidebar li a:hover { color: var(--ts-red); }
@media (min-width: 1024px) {
  .ts-layout { grid-template-columns: minmax(0, 1fr) 22rem; gap: var(--ts-space-60); }
  .ts-sidebar { position: sticky; top: calc(var(--ts-header-h) + 1.5rem); }
}

.ts-author-box { display: grid; grid-template-columns: auto 1fr; gap: 1rem 1.25rem; align-items: start; margin: var(--ts-space-50) 0; padding: 1.5rem; background: var(--ts-sand); border: 1px solid var(--ts-stone); border-radius: var(--ts-radius); }
.ts-author-box img { width: 72px; height: 72px; border-radius: 50%; object-fit: cover; border: 3px solid var(--ts-white); box-shadow: var(--ts-shadow-sm); }
.ts-author-box__name { margin: 0; font-size: var(--ts-text-lg); }
.ts-author-box__title { margin: 0 0 0.5rem; font-size: var(--ts-text-sm); color: var(--ts-red); font-weight: 600; }
.ts-author-box p { font-size: var(--ts-text-sm); color: var(--ts-slate); }

.ts-post-card, .ts-archive .wp-block-post { display: flex; flex-direction: column; background: var(--ts-white); border: 1px solid var(--ts-stone); border-radius: var(--ts-radius); overflow: hidden; box-shadow: var(--ts-shadow-sm); transition: transform var(--ts-fast) var(--ts-ease), box-shadow var(--ts-fast) var(--ts-ease); }
.ts-post-card:hover, .ts-archive .wp-block-post:hover { transform: translateY(-3px); box-shadow: var(--ts-shadow-md); }
.ts-post-card .wp-block-post-featured-image, .ts-archive .wp-block-post-featured-image { margin: 0; aspect-ratio: 3 / 2; background: var(--ts-sand-100) center / 40% no-repeat; }
.ts-post-card .wp-block-post-featured-image img, .ts-archive .wp-block-post-featured-image img { width: 100%; height: 100%; object-fit: cover; }
.ts-post-card > :not(figure), .ts-archive .wp-block-post > :not(figure) { padding-inline: 1.25rem; }
.ts-post-card .wp-block-post-title, .ts-archive .wp-block-post-title { margin: 1rem 0 0.4rem; font-size: var(--ts-text-lg); }
.ts-post-card .wp-block-post-title a, .ts-archive .wp-block-post-title a { color: var(--ts-navy); text-decoration: none; }
.ts-post-card .wp-block-post-title a:hover, .ts-archive .wp-block-post-title a:hover { color: var(--ts-red); }
.ts-post-card .wp-block-post-excerpt, .ts-archive .wp-block-post-excerpt { font-size: var(--ts-text-sm); color: var(--ts-slate); }
.ts-post-card .wp-block-post-date, .ts-archive .wp-block-post-date { font-size: var(--ts-text-xs); color: var(--ts-slate); padding-bottom: 1.25rem; }
.ts-post-card .wp-block-post-excerpt__more-link { font-weight: 700; }
.wp-block-query-pagination { margin-top: var(--ts-space-50); font-weight: 600; }
.wp-block-query-pagination a, .wp-block-query-pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0.4rem 0.75rem; border: 1px solid var(--ts-stone); border-radius: 6px; text-decoration: none; }
.wp-block-query-pagination .current, .wp-block-query-pagination a:hover { background: var(--ts-navy); border-color: var(--ts-navy); color: var(--ts-white); }
.ts-post-meta, .wp-block-post-date, .wp-block-post-author__name { color: var(--ts-slate); font-size: var(--ts-text-sm); }
.ts-single .wp-block-post-featured-image img, .ts-single > figure img { border-radius: var(--ts-radius-lg); }
.ts-single .wp-block-post-content > :where(h2, h3) { margin-top: 1.75em; }
.ts-reading-time, .wp-block-post-time-to-read { font-size: var(--ts-text-xs); color: var(--ts-slate); }
.ts-404 { text-align: center; padding-block: var(--ts-space-70); }
.ts-404 h1 { font-size: var(--ts-text-2xl); }
.ts-search, .wp-block-search__inside-wrapper { border-radius: var(--ts-radius); overflow: hidden; }
.wp-block-search__input { min-height: 48px; padding: 0.6rem 0.9rem; border: 1px solid var(--ts-stone); background: var(--ts-sand-100); font: inherit; border-radius: var(--ts-radius) 0 0 var(--ts-radius); }
.wp-block-search__button { min-height: 48px; }

/* Core block niceties */
.wp-block-image img { border-radius: var(--ts-radius); }
.wp-block-image.is-style-rounded img { border-radius: var(--ts-radius-lg); }
.wp-block-gallery { gap: 0.75rem; }
.wp-block-columns { gap: var(--ts-space-40); }
.wp-block-group.is-style-ts-card { composes: ts-card; }
.wp-block-cover { border-radius: var(--ts-radius-lg); overflow: hidden; }
.wp-block-cover .wp-block-cover__inner-container :where(h1, h2, h3, p) { color: var(--ts-white); }
.has-text-align-center { text-align: center; }
.is-style-ts-card { padding: 1.5rem; background: var(--ts-white); border: 1px solid var(--ts-stone); border-radius: var(--ts-radius); box-shadow: var(--ts-shadow-sm); }
.ts-storm-alert { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.5rem 1rem; padding: 0.75rem var(--ts-gutter); background: var(--ts-red-100); color: var(--ts-ink); border-left: 4px solid var(--ts-red); font-size: var(--ts-text-sm); font-weight: 600; }
.ts-storm-alert a { color: var(--ts-red-700); }

/* ---------------------------------------------------------------------------
   20. Print
--------------------------------------------------------------------------- */
@media print {
  .ts-utility, .ts-header .wp-block-navigation, .ts-header__cta, .ts-sticky, .ts-form-card, .ts-cta-band .wp-block-buttons, .wp-block-buttons { display: none; }
  body { font-size: 11pt; color: #000; background: #fff; }
  .ts-hero, .ts-section--dark, .ts-cta-band, .ts-footer, .ts-card--cta { background: #fff; color: #000; }
  .ts-hero :where(h1, p), .ts-section--dark :where(h2, h3, p, li), .ts-cta-band :where(h2, p, a), .ts-footer :where(p, li, a, h3) { color: #000; }
  .ts-hero::before, .ts-hero::after, .ts-cta-band::before, .ts-cta-band::after { display: none; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 0.85em; color: #555; }
  .wp-block-details > summary::before, .wp-block-details > summary::after { display: none; }
  .wp-block-details > :not(summary) { display: block; }
}

/* === templates & parts (appended) === */

/* Preset aliases: theme.json references --font-size--2xl / --3xl, but WordPress
   kebab-cases those slugs to --2-xl / --3-xl. Alias them so h1/h2/post-title resolve. */
:root {
  --wp--preset--font-size--2xl: var(--wp--preset--font-size--2-xl, clamp(1.9rem, 3.4vw, 2.6rem));
  --wp--preset--font-size--3xl: var(--wp--preset--font-size--3-xl, clamp(2.4rem, 4.8vw, 3.6rem));
  --ts-utility-h: 40px;
}

/* Site chrome: no root block-gap between header / main / footer / sticky bar.
   overflow-x: clip (not hidden) so 100vw full-bleed sections never cause sideways
   scroll while position: sticky keeps working. */
.wp-site-blocks { overflow-x: clip; }
.wp-site-blocks > .wp-block-template-part,
.wp-site-blocks > .ts-main { margin-block: 0; }
.ts-main { padding-bottom: var(--ts-space-60); }
.ts-main:has(.ts-cta-band:last-child), .ts-main:has(> .ts-404:last-child) { padding-bottom: 0; }

/* Sticky header: the template-part wrapper sticks (a sticky child cannot leave its
   wrapper). From 782px the utility strip scrolls away via a negative top offset. */
.wp-site-blocks > header.wp-block-template-part { position: sticky; top: 0; z-index: 900; }
.ts-utility a.ts-utility__phone { color: var(--ts-navy); }
.ts-utility a.ts-utility__phone:hover { color: var(--ts-navy); background: var(--ts-gold); }
.ts-utility__area { display: none; }
.ts-header__logo img, .ts-footer__logo img { border-radius: 0; object-fit: contain; }
.ts-header__inner > .wp-block-navigation { margin-left: auto; }

/* Core only collapses the nav below 600px; nine top-level items need ~1250px,
   so the overlay (hamburger) stays on until 1280px. */
.ts-header .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
.ts-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }

/* Sticky mobile bar: the shortcode link arrives wrapped in <p> inside templates */
.ts-sticky > p { display: contents; }
.ts-sticky .ts-phone-link.ts-sticky__call { background: var(--ts-navy); }
.ts-no-sticky .ts-sticky { display: none; }
body.ts-no-sticky { padding-bottom: 0; }

/* Two-column service / city layout: keep full-bleed content inside the main column */
.ts-layout .ts-layout__main > .alignfull { margin-inline: 0; width: auto; max-width: 100%; }
.ts-aside { display: grid; gap: 1.25rem; align-content: start; min-width: 0; margin: 0; }
.ts-aside > * { margin: 0; min-width: 0; }
.ts-aside .ts-aside__title, .ts-aside .ts-city-card__title { margin-bottom: 0.5rem; font-size: var(--ts-text-lg); }
.ts-aside .ts-check-list { margin-bottom: 0; }
.ts-aside__call p { margin: 0; }
.ts-aside__call .ts-sidebar__phone { display: inline-flex; align-items: center; gap: 0.5rem; min-height: 44px; }
.ts-aside__call .ts-sidebar__phone:hover { color: var(--ts-red); }
.ts-aside__call .ts-icon { width: 1.25rem; height: 1.25rem; margin: 0; color: var(--ts-red); }
.ts-aside .ts-hours { font-size: var(--ts-text-sm); color: var(--ts-slate); }
.ts-link-list { list-style: none; padding: 0; margin: 0; }
.ts-link-list li { margin: 0; border-bottom: 1px solid var(--ts-sand-100); }
.ts-link-list li:last-child { border-bottom: 0; }
.ts-link-list a { display: flex; align-items: center; gap: 0.5rem; min-height: 44px; padding: 0.35rem 0; color: var(--ts-navy-800); font-weight: 600; text-decoration: none; }
.ts-link-list a::after { content: ""; flex: 0 0 auto; width: 1rem; height: 1rem; margin-left: auto; background: var(--ts-chevron) center / contain no-repeat; transform: rotate(-90deg); opacity: 0.6; }
.ts-link-list a:hover { color: var(--ts-red); }

/* CTA band extras (phone icon + license line from shortcodes) */
.ts-cta-band .ts-phone-link .ts-icon { width: 1.4rem; height: 1.4rem; margin-right: 0.35rem; vertical-align: -0.15em; }
.ts-cta-band .ts-license { display: block; margin-top: 1rem; font-size: var(--ts-text-sm); color: rgba(255, 255, 255, 0.72); }

/* Archive / blog / search listings */
.ts-archive-header { padding-block: var(--ts-space-40) var(--ts-space-30); }
.ts-archive-header h1 { margin-bottom: 0.4em; font-size: var(--ts-text-2xl); }
.ts-archive-header .wp-block-term-description, .ts-archive-header .ts-lead { max-width: 60ch; color: var(--ts-slate); }
.ts-archive-header .wp-block-search { max-width: 36rem; margin-top: var(--ts-space-30); }
.ts-archive-wrap { padding-bottom: var(--ts-space-60); }
.ts-archive .wp-block-post-template { margin: 0; padding: 0; list-style: none; }
.ts-archive .wp-block-post { position: relative; margin: 0; }
.ts-archive .wp-block-post-title a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.ts-archive .wp-block-post-date { margin-top: auto; }
.ts-archive .wp-block-post:not(:has(.wp-block-post-featured-image))::before {
  content: ""; display: block; aspect-ratio: 3 / 2; border-bottom: 1px solid var(--ts-stone);
  background: var(--ts-sand-100) url("../img/logo.svg") center / 45% auto no-repeat;
}
.ts-related > h2 { margin-bottom: 0; }

/* Single post */
.ts-single { padding-block: var(--ts-space-20) var(--ts-space-60); }
.ts-single__cat { margin-bottom: 0.75rem; }
.ts-single__cat a { color: inherit; text-decoration: none; }
.ts-single__cat a:hover { text-decoration: underline; }
.ts-single .ts-post-meta { gap: 0.25rem 1rem; margin-bottom: var(--ts-space-40); }
.ts-single__image { margin-bottom: var(--ts-space-50); }
.ts-single__image img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
/* City pages: "service details" facts table (county, ZIPs, distance...). */
.ts-table-facts table { width: 100%; border-collapse: collapse; font-size: var(--ts-text-sm); border: 1px solid var(--ts-stone); border-radius: var(--ts-radius); overflow: hidden; }
.ts-table-facts td { padding: 0.75rem 1rem; border-top: 1px solid var(--ts-stone); vertical-align: top; }
.ts-table-facts tr:first-child td { border-top: 0; }
.ts-table-facts td:first-child { width: 34%; background: var(--ts-sand-100); color: var(--ts-navy); }
.ts-nearby__d { color: var(--ts-slate); font-weight: 400; font-size: var(--ts-text-xs); }
@media (max-width: 599px) { .ts-table-facts td { display: block; width: auto; } .ts-table-facts td:first-child { width: auto; border-top: 1px solid var(--ts-stone); } }

/* 404 */
.ts-404 .wp-block-search { max-width: 34rem; margin-inline: auto; }
.ts-404__title { margin-top: var(--ts-space-50); font-size: var(--ts-text-lg); }
.ts-404__links { justify-content: center; }
.ts-404__call { margin: var(--ts-space-30) 0 0; color: var(--ts-slate); }
.ts-404 .ts-404__phone { display: inline-flex; align-items: center; gap: 0.5rem; min-height: 44px; font-family: var(--ts-font-heading); font-size: var(--ts-text-xl); font-weight: 800; color: var(--ts-navy); text-decoration: none; }
.ts-404 .ts-404__phone:hover { color: var(--ts-red); }
.ts-404 .ts-404__phone .ts-icon { width: 1.4rem; height: 1.4rem; color: var(--ts-red); }
.ts-404 .wp-block-buttons { margin-top: var(--ts-space-40); }

/* Footer */
.ts-footer__grid { display: grid; gap: var(--ts-space-50) var(--ts-space-40); grid-template-columns: minmax(0, 1fr); }
.ts-footer__grid > * { margin: 0; min-width: 0; }
.ts-footer__logo { margin: 0 0 1rem; }
.ts-footer__logo img { margin: 0; object-position: left center; }
.ts-footer__nap { display: grid; gap: 0.4rem; margin-top: 1rem; }
.ts-footer__nap p { margin: 0; }
.ts-footer__nap .ts-icon { width: 1rem; height: 1rem; margin-right: 0.35rem; vertical-align: -0.15em; }
.ts-footer__title { margin-bottom: 0.9rem; }
.ts-footer__links a { display: inline-flex; align-items: center; min-height: 32px; }
.ts-footer__cities { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1rem; }
.ts-footer__all { margin: 0.75rem 0 0; }
.ts-footer__review { margin: 1rem 0; }
.ts-footer__all a, .ts-footer__review a { font-weight: 700; text-decoration: underline; text-underline-offset: 0.2em; }
.ts-footer .wp-block-social-links .wp-social-link.wp-block-social-link { background-color: rgba(255, 255, 255, 0.08); color: var(--ts-white); }
.ts-footer .wp-block-social-links .wp-social-link.wp-block-social-link:hover { background-color: var(--ts-red); }
.ts-footer .wp-block-social-links .wp-social-link a { padding: 0.625rem; }
.ts-footer__bottom .ts-license { color: rgba(255, 255, 255, 0.65); }

@media (min-width: 600px) {
  .admin-bar .wp-site-blocks > header.wp-block-template-part { top: 46px; }
  .ts-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 782px) {
  .ts-utility .ts-utility__inner { flex-wrap: nowrap; min-height: var(--ts-utility-h); padding-block: 0; }
  .wp-site-blocks > header.wp-block-template-part { top: calc(-1 * var(--ts-utility-h)); }
  .admin-bar .wp-site-blocks > header.wp-block-template-part { top: calc(32px - var(--ts-utility-h)); }
}
@media (min-width: 1024px) {
  .ts-utility__area { display: block; }
  .ts-footer__grid { grid-template-columns: 1.4fr 1fr 1.3fr 1fr; }
}
@media (min-width: 1280px) {
  .ts-header .wp-block-navigation__responsive-container-open:not(.always-shown) { display: none; }
  .ts-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: flex; }
  .ts-header .wp-block-navigation { font-size: 0.875rem; }
  .ts-header .wp-block-navigation .wp-block-navigation__container { gap: 0; }
  .ts-header .wp-block-navigation .wp-block-navigation-item__content { padding-inline: 0.45rem; }
}
.ts-post-meta__label { margin: 0; color: var(--ts-slate); font-size: var(--ts-text-sm); }

/* ---------------------------------------------------------------------------
   Conversion: trust bar (shortcode), trust line, review snippet, 2-step form,
   roof calculator, projects, payment table, video facade
--------------------------------------------------------------------------- */
/* [ts_trust_bar] renders a list instead of columns */
.ts-trust-bar { padding-inline: var(--ts-gutter); }
ul.ts-trust-bar__row { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); list-style: none; padding: 0; max-width: var(--ts-wide); margin-inline: auto; }
ul.ts-trust-bar__row > li { margin: 0; }
.ts-trust-bar__item > span { display: block; }
.ts-cert-row { justify-content: center; max-width: var(--ts-wide); margin: 0.9rem auto 0; }
.ts-cert-row a { color: inherit; text-decoration: none; }
.ts-cert-row a:hover { text-decoration: underline; }

/* [ts_trust_inline] under hero buttons */
.ts-trust-inline { display: flex; flex-wrap: wrap; gap: 0.35rem 1.1rem; list-style: none; padding: 0; margin: 1rem 0 0; font-size: var(--ts-text-sm); font-weight: 600; opacity: 0.92; }
.ts-trust-inline li { display: inline-flex; align-items: center; gap: 0.4rem; margin: 0; }
.ts-trust-inline li::before { content: ""; width: 1rem; height: 1rem; background: var(--ts-check-red) center / contain no-repeat; }
.ts-hero .ts-trust-inline li::before, .ts-section--dark .ts-trust-inline li::before { background-image: var(--ts-check-white); }
.ts-trust-inline li:has(.ts-star)::before { display: none; }
.ts-star { color: var(--ts-gold); flex: 0 0 auto; }

/* [ts_review_snippet] beside forms */
.ts-review-snippet { margin: 1.25rem 0 0; padding: 1rem 1.1rem; background: var(--ts-sand); border-left: 3px solid var(--ts-gold); border-radius: 0 var(--ts-radius) var(--ts-radius) 0; font-size: var(--ts-text-sm); color: var(--ts-ink); }
.ts-review-snippet blockquote { margin: 0.4rem 0; padding: 0; border: 0; font-style: italic; }
.ts-review-snippet blockquote p { margin: 0; }
.ts-review-snippet figcaption { color: var(--ts-slate); font-size: var(--ts-text-xs); font-weight: 600; }

/* Text-a-photo link */
.ts-form__alt { margin: 0.85rem 0 0; font-size: var(--ts-text-sm); color: var(--ts-slate); text-align: center; }
.ts-form__alt a { font-weight: 700; color: var(--ts-navy); }
.ts-form__alt a[href^="tel:"] { white-space: nowrap; }

/* Two-step full form */
.ts-form__step { display: grid; gap: 0.9rem; min-width: 0; }
.ts-form__step[hidden], .ts-form__steps-head[hidden], .ts-form__next[hidden], .ts-form__back-wrap[hidden] { display: none; }
.ts-form__steps-head { display: grid; gap: 0.4rem; }
.ts-form__step-label { margin: 0; font-size: var(--ts-text-xs); font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ts-red); }
.ts-form__progress { height: 4px; background: var(--ts-stone); border-radius: var(--ts-radius-pill); overflow: hidden; }
.ts-form__progress span { display: block; width: 50%; height: 100%; background: var(--ts-red); transition: width var(--ts-fast) var(--ts-ease); }
.ts-form__steps-head.is-step-2 .ts-form__progress span { width: 100%; }
.ts-form__next .wp-element-button { width: 100%; min-height: 52px; font-size: 1.05rem; }
.ts-form__back { min-height: 44px; padding: 0.25rem 0.5rem; background: none; border: 0; color: var(--ts-slate); font: inherit; font-size: var(--ts-text-sm); text-decoration: underline; cursor: pointer; }
.ts-form__back-wrap { text-align: center; }

/* [ts_roof_calculator] */
.ts-calc { display: grid; gap: var(--ts-space-40); margin-block: var(--ts-space-40); }
.ts-calc__form { display: grid; gap: 1.25rem; padding: clamp(1.25rem, 3vw, 2rem); background: var(--ts-white); border: 1px solid var(--ts-stone); border-radius: var(--ts-radius-lg); box-shadow: var(--ts-shadow-md); }
.ts-calc__form[hidden], .ts-calc__result[hidden], .ts-calc__monthly[hidden] { display: none; }
.ts-calc__group { display: grid; gap: 0.75rem; min-width: 0; }
.ts-calc__group + .ts-calc__group { padding-top: 1.25rem; border-top: 1px solid var(--ts-stone); }
.ts-calc__q { display: flex; align-items: center; gap: 0.6rem; margin: 0; font-family: var(--ts-font-heading); font-weight: 700; font-size: var(--ts-text-lg); color: var(--ts-navy); }
.ts-calc__num { display: inline-grid; place-items: center; width: 1.75rem; height: 1.75rem; border-radius: 50%; background: var(--ts-red); color: var(--ts-white); font-size: var(--ts-text-sm); flex: 0 0 auto; }
.ts-calc__form { counter-reset: ts-calc-step; }
.ts-calc__num { counter-increment: ts-calc-step; font-size: 0; }
.ts-calc__num::before { content: counter(ts-calc-step); font-size: var(--ts-text-sm); }
.ts-calc__pills { display: grid; gap: 0.6rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 8.5rem), 1fr)); }
.ts-calc__pills--small { grid-template-columns: repeat(auto-fit, minmax(min(100%, 9rem), 1fr)); }
.ts-calc__pill { position: relative; display: block; cursor: pointer; }
.ts-calc__pill input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.ts-calc__pill-text { display: flex; flex-direction: column; justify-content: center; gap: 0.15rem; min-height: 52px; height: 100%; padding: 0.65rem 0.9rem; border: 2px solid var(--ts-stone); border-radius: var(--ts-radius); background: var(--ts-sand); font-weight: 700; color: var(--ts-navy); line-height: 1.25; transition: border-color var(--ts-fast), background-color var(--ts-fast); }
.ts-calc__pill-text small { font-size: var(--ts-text-xs); font-weight: 500; color: var(--ts-slate); }
.ts-calc__pill input:checked + .ts-calc__pill-text { border-color: var(--ts-red); background: var(--ts-red-100); }
.ts-calc__pill input:focus-visible + .ts-calc__pill-text { outline: 3px solid var(--ts-focus); outline-offset: 2px; }
.ts-calc__grid { display: grid; gap: 0.9rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); }
.ts-calc__field { display: flex; flex-direction: column; gap: 0.35rem; min-width: 0; }
.ts-calc__grid > .ts-calc__field { justify-content: flex-end; }
.ts-calc__field[hidden], .ts-calc__group[hidden], .ts-calc__pills[hidden] { display: none; }
.ts-calc__field label { font-size: var(--ts-text-sm); font-weight: 600; color: var(--ts-navy); }
.ts-calc__field--check { justify-content: flex-end; }
.ts-calc__field--check label { display: flex; align-items: center; gap: 0.5rem; min-height: 48px; }
.ts-calc__field--check input { width: 1.15rem; height: 1.15rem; accent-color: var(--ts-red); }
.ts-calc__input { display: flex; align-items: center; }
.ts-calc select, .ts-calc__input input { width: 100%; min-height: 48px; padding: 0.6rem 0.8rem; font: inherit; color: var(--ts-ink); background-color: var(--ts-sand-100); border: 1px solid var(--ts-stone); border-radius: 8px; }
.ts-calc select { appearance: none; background-image: var(--ts-chevron); background-repeat: no-repeat; background-position: right 0.75rem center; background-size: 1.1rem; padding-right: 2.5rem; }
.ts-calc__input input { border-radius: 8px 0 0 8px; }
.ts-calc__unit { display: inline-flex; align-items: center; min-height: 48px; padding: 0 0.8rem; background: var(--ts-stone); border-radius: 0 8px 8px 0; font-size: var(--ts-text-sm); font-weight: 600; color: var(--ts-navy); white-space: nowrap; }
.ts-calc select:focus, .ts-calc__input input:focus { outline: 3px solid var(--ts-focus); outline-offset: 2px; border-color: var(--ts-navy); background-color: var(--ts-white); }
.ts-calc__result { padding: clamp(1.25rem, 3vw, 2rem); background: var(--ts-navy); color: var(--ts-white); border-radius: var(--ts-radius-lg); box-shadow: var(--ts-shadow-md); }
.ts-calc__eyebrow { margin: 0; font-size: var(--ts-text-xs); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ts-gold); }
.ts-calc__range { margin: 0.25rem 0; font-family: var(--ts-font-heading); font-weight: 800; font-size: var(--ts-text-2xl); line-height: 1.1; color: var(--ts-white); }
.ts-calc__mid, .ts-calc__monthly { margin: 0.35rem 0 0; color: rgba(255, 255, 255, 0.88); }
.ts-calc__monthly { font-size: var(--ts-text-sm); }
.ts-calc__details { margin-top: 1rem; }
.ts-calc__details summary { cursor: pointer; font-weight: 700; min-height: 44px; display: flex; align-items: center; }
.ts-calc__table { width: 100%; margin-top: 0.5rem; border-collapse: collapse; font-size: var(--ts-text-sm); }
.ts-calc__table th, .ts-calc__table td { padding: 0.5rem 0; border: 0; border-bottom: 1px solid rgba(255, 255, 255, 0.18); text-align: left; font-weight: 500; color: var(--ts-white); background: none; }
.ts-calc__table td { text-align: right; white-space: nowrap; padding-left: 1rem; font-weight: 700; }
.ts-calc__fine { margin: 1rem 0 0; font-size: var(--ts-text-xs); color: rgba(255, 255, 255, 0.75); }
.ts-calc__lead { padding: clamp(1.25rem, 3vw, 2rem); background: var(--ts-white); border: 2px solid var(--ts-red); border-radius: var(--ts-radius-lg); }
.ts-calc__lead-title { margin: 0; font-family: var(--ts-font-heading); font-weight: 800; font-size: var(--ts-text-xl); color: var(--ts-navy); }
.ts-calc__lead-sub { margin: 0.35rem 0 1rem; font-size: var(--ts-text-sm); color: var(--ts-slate); }
.ts-calc__noscript { margin: 0; font-size: var(--ts-text-sm); }
@media (min-width: 1024px) {
  .ts-calc { grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); align-items: start; }
  .ts-calc__form { grid-row: 1 / span 2; }
  .ts-calc__result { position: sticky; top: calc(var(--ts-header-h) + 1rem); }
}
/* Inside the narrower service-page column the calculator stacks. */
.ts-layout__main .ts-calc { grid-template-columns: minmax(0, 1fr); }
.ts-layout__main .ts-calc__form { grid-row: auto; }
.ts-layout__main .ts-calc__result { position: static; }

/* [ts_projects] and single projects */
.ts-projects__grid { display: grid; gap: var(--ts-space-40); grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); }
.ts-project-card { display: flex; flex-direction: column; gap: 0.5rem; padding: 0; overflow: hidden; }
.ts-project-card > :not(.ts-project-card__img) { margin-inline: 1.25rem; }
.ts-project-card > :last-child { margin-bottom: 1.25rem; }
.ts-project-card__img img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
.ts-project-card__title { margin-top: 0.75rem; margin-bottom: 0; font-size: var(--ts-text-lg); }
.ts-project-card__title a { color: var(--ts-navy); text-decoration: none; }
.ts-project-card__title a:hover { text-decoration: underline; }
.ts-project-card__meta { margin: 0; font-size: var(--ts-text-xs); font-weight: 700; color: var(--ts-red); text-transform: uppercase; letter-spacing: 0.04em; }
.ts-project-card__excerpt { margin-top: 0; font-size: var(--ts-text-sm); color: var(--ts-slate); }
.ts-projects__all { margin-top: var(--ts-space-40); font-weight: 700; }
.ts-project-quote { margin-block: var(--ts-space-40); }

/* [ts_payment_table] */
.ts-payment-table figcaption { margin-top: 0.6rem; font-size: var(--ts-text-xs); color: var(--ts-slate); text-align: left; }

/* YouTube facade */
.ts-video { position: relative; margin: var(--ts-space-40) 0; aspect-ratio: 16 / 9; background: var(--ts-navy-900); border-radius: var(--ts-radius); overflow: hidden; }
.ts-video__btn { position: absolute; inset: 0; width: 100%; height: 100%; padding: 0; border: 0; background: none; cursor: pointer; }
.ts-video__btn img { width: 100%; height: 100%; object-fit: cover; }
.ts-video__play { position: absolute; top: 50%; left: 50%; width: 72px; height: 50px; margin: -25px 0 0 -36px; border-radius: 14px; background: var(--ts-red); box-shadow: var(--ts-shadow-md); }
.ts-video__play::after { content: ""; position: absolute; top: 50%; left: 50%; margin: -10px 0 0 -6px; border-style: solid; border-width: 10px 0 10px 17px; border-color: transparent transparent transparent var(--ts-white); }
.ts-video__btn:hover .ts-video__play, .ts-video__btn:focus-visible .ts-video__play { background: var(--ts-red-700); }
.ts-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.ts-video figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 0.5rem 0.75rem; font-size: var(--ts-text-xs); color: var(--ts-white); background: linear-gradient(transparent, rgba(7, 26, 51, 0.8)); }
@media (prefers-reduced-motion: reduce) { .ts-form__progress span { transition: none; } }
