/*
Theme Name: GeneratePress Child
Theme URI: https://generatepress.com
Template: generatepress
Author: Tom Usborne
Author URI: https://generatepress.com/about
Description: GeneratePress is a lightweight WordPress theme built with a focus on speed and usability. Performance is important to us, which is why a fresh GeneratePress install adds less than 10kb (gzipped) to your page size. We take full advantage of the block editor (Gutenberg), which gives you more control over creating your content. If you use page builders, GeneratePress is the right theme for you. It is completely compatible with all major page builders, including Beaver Builder and Elementor. Thanks to our emphasis on WordPress coding standards, we can boast full compatibility with all well-coded plugins, including WooCommerce. GeneratePress is fully responsive, uses valid HTML/CSS, and is translated into over 25 languages by our amazing community of users. A few of our many features include 60+ color controls, powerful dynamic typography, 5 navigation locations, 5 sidebar layouts, dropdown menus (click or hover), and 9 widget areas. Learn more and check out our powerful premium version at https://generatepress.com
Tags: two-columns,three-columns,one-column,right-sidebar,left-sidebar,footer-widgets,blog,e-commerce,flexible-header,full-width-template,buddypress,custom-header,custom-background,custom-menu,custom-colors,sticky-post,threaded-comments,translation-ready,rtl-language-support,featured-images,theme-options
Version: 4.8.1.1795730000
Updated: 2026-10-02 22:00:00

*/

/* ==========================================================================
   JH Concrete Finishing LLC — "Option B" redesign
   Dark forest green + white, uppercase Oswald headings, mountain-line divider.
   Everything on the homepage is scoped to .jb2-home / .jb2-footer so it can't
   leak onto the service and location pages.
   ========================================================================== */
@import url("https://fonts.googleapis.com/css2?family=Oswald:wght@500;600;700&family=Source+Sans+3:wght@400;600;700&display=swap");

:root {
  --jb2-font-head: "Oswald", Impact, sans-serif;
  --jb2-font-body: "Source Sans 3", system-ui, sans-serif;
  --jb2-head-weight: 700; --jb2-head-transform: uppercase; --jb2-head-spacing: .01em;
  --jb2-h1: clamp(3rem, 6.2vw, 5.6rem);
  --jb2-primary: #3c5341; --jb2-primary-deep: #2b3d2f;
  --jb2-accent: #ffffff; --jb2-accent-ink: #2b3d2f;
  --jb2-dark: #24312a; --jb2-light: #e4e8e3; --jb2-bg: #f4f5f2; --jb2-card: #fff;
  --jb2-ink: #1f2621; --jb2-muted: #565e58; --jb2-muted-base: #565e58; --jb2-line: #d6dbd5;
  --jb2-radius: 0px; --jb2-btn-radius: 0; --jb2-btn-transform: uppercase; --jb2-btn-spacing: .1em;
  --jb2-focus: #dfe9e1; --jb2-field: #fafbf9;
  --jb2-topbar: #24312a; --jb2-header-bg: #3c5341;
  --jb2-kicker: #3c5341; --jb2-pale: #c9dccd;
  --jb2-max: 1200px;
  --jb2-hero-img: url(https://1229664.us8.myftpupload.com/wp-content/uploads/2026/09/stamped-concrete-entry-and-driveway.jpg);
  --jb2-hero-pos: center 62%;
  --jb2-overlay: rgba(36,49,42,.92); --jb2-overlay-mid: rgba(36,49,42,.55);
}

/* ---------- Base (homepage content) ---------- */
body { font-family: var(--jb2-font-body); }

.wp-block-group.alignfull.jb2-home {
  max-width: 100%; width: 100%; padding: 0; margin-left: 0; margin-right: 0;
}
.jb2-home {
  font-family: var(--jb2-font-body); color: var(--jb2-ink); line-height: 1.65;
  -webkit-font-smoothing: antialiased; background: var(--jb2-bg); overflow-x: clip;
  --gf-bg: var(--jb2-field); --gf-line: var(--jb2-line); --gf-ink: var(--jb2-ink); --gf-focus: var(--jb2-focus);
  --gf-accent: var(--jb2-primary); --gf-accent-ink: #fff; --gf-accent-hover: var(--jb2-primary-deep);
  --gf-radius: 0px; --gf-btn-radius: 0; --gf-btn-font: var(--jb2-font-head);
}
.jb2-home *, .jb2-footer * { box-sizing: border-box; }

/* This site wraps every group's contents in an extra .wp-block-group__inner-container,
   which boxes sections to 1200px and sits between each grid and its children.
   display:contents makes the wrapper vanish so the layouts below work as designed. */
.jb2-home .wp-block-group__inner-container, .jb2-footer .wp-block-group__inner-container { display: contents; }
/* GeneratePress widens every "full width" block by 30px (phones) / 40px (desktop) on each side to
   cancel its own container padding. This site's containers have no padding, so that pushed the
   hero text off the left edge on phones. Pin our full-width sections to exactly the screen width. */
body .entry-content .alignfull.jb2-home, body .entry-content .alignfull.jb2-service, body .entry-content .alignfull.jb2-footer {
  margin-left: 0 !important; margin-right: 0 !important; width: 100% !important; max-width: 100% !important;
}
/* WordPress's flow layout adds a gap between sibling blocks; the layouts below control their own spacing. */
.jb2-home .is-layout-flow > *, .jb2-home .is-layout-constrained > *,
.jb2-footer .is-layout-flow > *, .jb2-footer .is-layout-constrained > * { margin-block-start: 0; }

.jb2-home h1, .jb2-home h2, .jb2-home h3, .jb2-home h4,
.jb2-footer h4 {
  font-family: var(--jb2-font-head); font-weight: var(--jb2-head-weight); margin: 0; line-height: 1.08;
  letter-spacing: var(--jb2-head-spacing); text-transform: var(--jb2-head-transform); color: var(--jb2-head-color, var(--jb2-dark));
}
.jb2-home h1 { font-size: var(--jb2-h1); }
.jb2-home h2 { font-size: clamp(1.8rem, 3.2vw, 2.6rem); }
.jb2-home h3 { font-size: 1.3rem; }
.jb2-home h4 { font-size: 1.05rem; }
.jb2-home p { margin: 0; }
.jb2-home img, .jb2-footer img { max-width: 100%; height: auto; display: block; }
.jb2-home figure, .jb2-footer figure { margin: 0; }
.jb2-home a { color: inherit; }

.jb2-wrap { width: min(var(--jb2-max), 100% - 40px); margin-inline: auto; }
.jb2-kicker { font-weight: 700; font-size: .78rem; letter-spacing: .15em; text-transform: uppercase; color: var(--jb2-kicker); }
.jb2-lede { font-size: 1.12rem; color: var(--jb2-muted); max-width: 620px; }
.jb2-head { display: flex; flex-direction: column; gap: 12px; max-width: 760px; margin-bottom: 40px; }
.jb2-head > p:not(.jb2-kicker) { color: var(--jb2-muted); font-size: 1.06rem; }
.jb2-head--center { margin-inline: auto; text-align: center; align-items: center; }
.jb2-sec { padding-block: clamp(60px, 7.5vw, 104px); }
.jb2-sec--tint { background: var(--jb2-light); }
.jb2-sec--dark { background: var(--jb2-dark); color: #d9dde5; --jb2-head-color: #fff; --jb2-muted: #b9c0cc; --jb2-kicker: var(--jb2-pale); --jb2-line: rgba(255,255,255,.14); }

/* ---------- Buttons ----------
   a.wp-block-button__link + !important: GeneratePress ships its own
   a.wp-block-button__link:not(.has-background) colour rule. */
.jb2-home .wp-block-buttons { display: flex; flex-wrap: wrap; gap: 10px; }
.jb2-home a.wp-block-button__link {
  display: inline-block; text-decoration: none; padding: 15px 26px; border-radius: var(--jb2-btn-radius);
  font-family: var(--jb2-font-body); font-weight: 700; letter-spacing: var(--jb2-btn-spacing); text-transform: var(--jb2-btn-transform);
  background: var(--jb2-primary) !important; color: #fff !important; border: 2px solid var(--jb2-primary) !important;
  transition: transform .2s, background .2s, border-color .2s;
}
.jb2-home a.wp-block-button__link:hover { transform: translateY(-2px); background: var(--jb2-primary-deep) !important; border-color: var(--jb2-primary-deep) !important; }
.jb2-home .jb2-btn--light a.wp-block-button__link { background: #fff !important; color: var(--jb2-dark) !important; border-color: #fff !important; }
.jb2-home .jb2-btn--light a.wp-block-button__link:hover { background: var(--jb2-pale) !important; border-color: var(--jb2-pale) !important; }

/* ---------- Hero (full-bleed photo + quote card) ---------- */
.jb2-hero { position: relative; }
.jb2-hero--image {
  padding-block: clamp(64px, 9vw, 130px); color: #fff;
  background: linear-gradient(100deg, var(--jb2-overlay) 0%, var(--jb2-overlay-mid) 45%, rgba(36,49,42,.25) 100%), var(--jb2-hero-img) var(--jb2-hero-pos) / cover no-repeat;
  --jb2-head-color: #fff; --jb2-muted: rgba(255,255,255,.84);
}
.jb2-hero--image .jb2-kicker { color: var(--jb2-pale); }
.jb2-hero--image h1 span { display: block; color: var(--jb2-pale); }
.jb2-hero-cols { display: grid !important; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: clamp(28px, 5vw, 64px); align-items: center; }
.jb2-hero-copy { display: flex !important; flex-direction: column; gap: 20px; }
.jb2-form-card {
  background: rgba(255,255,255,.97); color: var(--jb2-ink); padding: clamp(22px, 3vw, 34px);
  box-shadow: 0 30px 60px -32px rgba(0,0,0,.4); scroll-margin-top: 110px; border-top: 6px solid var(--jb2-primary);
  --jb2-head-color: var(--jb2-dark);
}
.jb2-form-card h2 { font-size: clamp(1.5rem, 2.4vw, 1.95rem); margin-bottom: 6px; }
.jb2-form-tag { display: inline-block; font-weight: 800; font-size: .74rem; letter-spacing: .12em; text-transform: uppercase; color: var(--jb2-primary); margin-bottom: 4px !important; }

/* Mountain-line divider under the hero */
.jb2-mtn {
  height: 70px; background: var(--jb2-bg); margin-top: -70px; position: relative;
  clip-path: polygon(0 100%, 0 70%, 9% 35%, 15% 55%, 24% 10%, 33% 50%, 40% 30%, 50% 62%, 60% 18%, 68% 48%, 77% 28%, 86% 58%, 93% 38%, 100% 60%, 100% 100%);
}

/* ---------- Work gallery (5 across) ---------- */
.jb2-row { display: grid !important; grid-template-columns: repeat(5, 1fr); gap: 6px; }
.jb2-row figure { margin: 0; position: relative; overflow: hidden; }
.jb2-row img { width: 100%; height: 340px; object-fit: cover; transition: transform .6s; }
.jb2-row figure:hover img { transform: scale(1.05); }
.jb2-row figcaption {
  position: absolute; left: 0; right: 0; bottom: 0; margin: 0; padding: 30px 14px 12px; text-align: left;
  background: linear-gradient(transparent, rgba(20,28,22,.88)); color: #fff;
  font-family: var(--jb2-font-head); text-transform: uppercase; letter-spacing: .06em; font-size: 1.05rem;
}

/* ---------- Services list ---------- */
.jb2-list { list-style: none; padding: 0; margin: 0; display: grid !important; grid-template-columns: repeat(3, 1fr); gap: 0; border-top: 1px solid var(--jb2-line); }
.jb2-list li { padding: 18px 16px; border-bottom: 1px solid var(--jb2-line); display: flex; flex-direction: column; gap: 4px; margin: 0; }
.jb2-list:not(.jb2-list--4) li:not(:nth-child(3n+1)) { border-left: 1px solid var(--jb2-line); }
.jb2-list--4 { grid-template-columns: repeat(4, 1fr); }
.jb2-list--4 li:not(:nth-child(4n+1)) { border-left: 1px solid var(--jb2-line); }
.jb2-list li p { margin: 0; }
.jb2-list a.jb2-more { margin-top: 8px; font-weight: 800; font-size: .82rem; letter-spacing: .1em; text-transform: uppercase; color: var(--jb2-primary); text-decoration: none; }
.jb2-list a.jb2-more:hover { text-decoration: underline; }
.jb2-list strong { font-family: var(--jb2-font-head); text-transform: uppercase; font-size: 1.2rem; color: var(--jb2-primary); font-weight: 600; letter-spacing: .01em; }
.jb2-list span { color: var(--jb2-muted); font-size: .95rem; }

/* ---------- Intro, outline button, green CTA band, why-choose cards ---------- */
.jb2-intro { max-width: 860px; gap: 16px; margin-bottom: 0; }
.jb2-intro > p:not(.jb2-kicker) { font-size: 1.1rem; }
.jb2-intro .jb2-strong-line { color: var(--jb2-ink) !important; font-weight: 700; }
.jb2-home .jb2-btn--outline a.wp-block-button__link { background: transparent !important; color: var(--jb2-primary) !important; border-color: var(--jb2-primary) !important; }
.jb2-home .jb2-btn--outline a.wp-block-button__link:hover { background: var(--jb2-primary) !important; color: #fff !important; }
.jb2-sec--primary { background: var(--jb2-primary); color: #fff; --jb2-head-color: #fff; --jb2-muted: rgba(255,255,255,.86); --jb2-kicker: var(--jb2-pale); }
.jb2-cta { max-width: 820px; margin-inline: auto; text-align: center; display: flex !important; flex-direction: column; align-items: center; gap: 16px; }
.jb2-cta p:not(.jb2-kicker) { color: rgba(255,255,255,.88); font-size: 1.08rem; }
.jb2-cta .wp-block-buttons { justify-content: center; margin-top: 8px; }
.jb2-why-grid { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.jb2-why { padding: 26px; background: #fff; border: 1px solid var(--jb2-line); display: flex !important; flex-direction: column; gap: 8px; min-width: 0; --jb2-head-color: var(--jb2-dark); }
.jb2-why::before { content: ""; width: 42px; height: 42px; border-radius: 50%; background: var(--jb2-primary) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5' fill='none' stroke='white' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 22px no-repeat; margin-bottom: 6px; }
.jb2-why p { color: var(--jb2-muted); font-size: .96rem; }
.jb2-why-note { margin-top: 28px !important; max-width: 760px; font-weight: 700; color: var(--jb2-ink); }

/* ---------- 26+ years band (number left, copy right) ---------- */
.jb2-exp { display: grid !important; grid-template-columns: minmax(0, .6fr) minmax(0, 1.4fr); gap: clamp(28px, 5vw, 72px); align-items: center; }
.jb2-exp-num { display: flex !important; flex-direction: column; align-items: center; text-align: center; gap: 8px; }
.jb2-exp .jb2-years { font-family: var(--jb2-font-head); font-size: clamp(6rem, 13vw, 11rem); line-height: .85; color: #fff; font-weight: 700; }
.jb2-exp-label { font-family: var(--jb2-font-head); text-transform: uppercase; letter-spacing: .12em; color: var(--jb2-pale) !important; font-size: 1rem; }
.jb2-exp-text { display: flex !important; flex-direction: column; gap: 14px; }
.jb2-exp-text > p:not(.jb2-kicker) { color: #d9dde5; font-size: 1.04rem; }

/* ---------- 26+ years band (old centered version) ---------- */
.jb2-big { text-align: center; display: flex !important; flex-direction: column; align-items: center; gap: 10px; }
.jb2-big .jb2-years { font-family: var(--jb2-font-head); font-size: clamp(5rem, 14vw, 10rem); line-height: .85; color: #fff; font-weight: 700; }
.jb2-big p:not(.jb2-kicker):not(.jb2-years) { color: rgba(255,255,255,.85); max-width: 48ch; font-size: 1.1rem; }

/* ---------- Process (photo + steps) ---------- */
.jb2-split { display: grid !important; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 70px); align-items: center; }
.jb2-split-media { overflow: hidden; aspect-ratio: 4 / 3.4; position: relative; }
.jb2-split-media img { width: 100%; height: 100%; object-fit: cover; }
.jb2-split-text { display: flex !important; flex-direction: column; gap: 14px; }
.jb2-split-text > p:not(.jb2-kicker), .jb2-areas-text > p:not(.jb2-kicker) { color: var(--jb2-muted); font-size: 1.04rem; }
.jb2-steps { list-style: none; margin: 8px 0 0; padding: 0; counter-reset: st; display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 14px; }
.jb2-steps li { counter-increment: st; position: relative; margin: 0; padding: 70px 20px 22px; background: #fff; border: 1px solid var(--jb2-line); color: var(--jb2-muted); font-size: .95rem; min-width: 0; }
.jb2-steps li::before { content: counter(st); position: absolute; left: 20px; top: 20px; width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; background: var(--jb2-primary); color: #fff; font-family: var(--jb2-font-head); font-weight: 700; }
.jb2-steps li h3 { margin-bottom: 4px; font-size: 1.2rem; }

/* ---------- FAQ ---------- */
.jb2-faq { display: flex !important; flex-direction: column; gap: 12px; max-width: 900px; margin-inline: auto; }
.jb2-faq details { background: #fff; border: 1px solid var(--jb2-line); padding: 18px 22px; color: var(--jb2-ink); margin: 0; }
.jb2-faq details[open] { border-color: var(--jb2-primary); }
.jb2-faq summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 14px; font-family: var(--jb2-font-head); font-weight: 600; font-size: 1.08rem; text-transform: uppercase; letter-spacing: .02em; color: var(--jb2-dark); }
.jb2-faq summary::-webkit-details-marker { display: none; }
.jb2-faq summary::after { content: "+"; font-size: 1.4rem; line-height: 1; color: var(--jb2-primary); flex: none; }
.jb2-faq details[open] summary::after { content: "–"; }
.jb2-faq details p { margin-top: 10px !important; color: var(--jb2-muted); }

/* ---------- Service area + contact ---------- */
.jb2-areas { display: grid !important; grid-template-columns: 1.1fr .9fr; gap: clamp(28px, 5vw, 64px); align-items: center; }
.jb2-areas-text { display: flex !important; flex-direction: column; gap: 14px; }
.jb2-cities { list-style: none; padding: 0; margin: 4px 0 0; display: flex; flex-wrap: wrap; gap: 8px; }
.jb2-cities li { margin: 0; padding: 8px 14px; background: #fff; border: 1px solid var(--jb2-line); font-weight: 700; font-size: .92rem; color: var(--jb2-ink); }
.jb2-cities li:first-child { background: #fff; color: var(--jb2-primary); }
.jb2-areas-media { overflow: hidden; aspect-ratio: 5 / 4; }
.jb2-areas-media img { width: 100%; height: 100%; object-fit: cover; }
.jb2-contact-list { list-style: none; padding: 0; margin: 8px 0 0; display: flex; flex-direction: column; }
.jb2-contact-list li { display: flex; gap: 14px; flex-wrap: wrap; padding: 11px 0; border-bottom: 1px solid var(--jb2-line); margin: 0; }
.jb2-contact-list span { min-width: 90px; font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--jb2-pale); padding-top: 3px; font-weight: 700; }
.jb2-contact-list a { font-weight: 700; text-decoration: none; overflow-wrap: anywhere; color: #fff; }

/* ---------- Footer (inside the page content) ---------- */
.wp-block-group.alignfull.jb2-footer { max-width: 100%; width: 100%; margin: 0; padding: 54px 0 40px; }
.jb2-footer { background: #1b251f; color: #b9c0cc; font-family: var(--jb2-font-body); font-size: .95rem; }
.jb2-foot-grid { display: grid !important; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap: 28px; }
.jb2-footer h4 { color: #fff; font-size: 1rem; margin: 0 0 12px; letter-spacing: .06em; }
.jb2-footer p { margin: 0; color: #b9c0cc; }
.jb2-footer ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 7px; }
.jb2-footer li { margin: 0; }
.jb2-footer a { color: #fff; text-decoration: none; }
.jb2-footer a:hover { color: var(--jb2-pale); }
.jb2-foot-logo { margin: 0 0 14px !important; }
.jb2-foot-logo img { height: 64px; width: auto; max-width: none; }
.jb2-foot-note { margin-top: 36px !important; padding-top: 18px; border-top: 1px solid rgba(255,255,255,.12); font-size: .82rem; }

/* ---------- Service & location pages: hero + content with quote-form sidebar ---------- */
.wp-block-group.alignfull.jb2-service { max-width: 100%; width: 100%; padding: 0; }
.inside-article:has(.jb2-service) > .entry-header { display: none; }
.jb2-btn--ghost a.wp-block-button__link { background: transparent !important; color: #fff !important; border-color: #fff !important; }
.jb2-btn--ghost a.wp-block-button__link:hover { background: #fff !important; color: var(--jb2-dark) !important; }

.jb2-page-hero {
  position: relative; isolation: isolate; color: #fff; background-color: var(--jb2-dark); background-size: cover; background-position: center;
  padding-block: clamp(56px, 7vw, 104px) clamp(84px, 9vw, 120px);
  --jb2-head-color: #fff; --jb2-muted: rgba(255,255,255,.86);
}
.jb2-page-hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(100deg, rgba(36,49,42,.95) 0%, rgba(36,49,42,.72) 50%, rgba(36,49,42,.4) 100%); }
.jb2-page-hero::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 56px; background: var(--jb2-bg);
  clip-path: polygon(0 100%, 0 70%, 9% 35%, 15% 55%, 24% 10%, 33% 50%, 40% 30%, 50% 62%, 60% 18%, 68% 48%, 77% 28%, 86% 58%, 93% 38%, 100% 60%, 100% 100%);
}
.jb2-page-hero .jb2-wrap { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; }
.jb2-page-hero .jb2-kicker { color: var(--jb2-pale); }
.jb2-home .jb2-page-hero h1 { font-size: clamp(2.4rem, 5vw, 4.2rem); max-width: 18ch; }
.jb2-page-hero .jb2-lede { color: rgba(255,255,255,.88); }

.jb2-page-body { padding-block: clamp(36px, 5vw, 72px) clamp(56px, 7vw, 100px); }
.jb2-page-grid { display: grid !important; grid-template-columns: minmax(0, 1fr) 360px; gap: clamp(28px, 4vw, 56px); align-items: start; }
.jb2-page-main { min-width: 0; max-width: 780px; }
.jb2-page-main p { margin: 0 0 1.1em; color: var(--jb2-muted); font-size: 1.04rem; }
.jb2-page-main h2 { font-size: clamp(1.5rem, 2.4vw, 2rem); margin: 1.7em 0 .5em; }
.jb2-page-main > h2:first-child, .jb2-page-main > .wp-block-heading:first-child { margin-top: 0; }
.jb2-page-main h3 { margin: 1.4em 0 .4em; }
.jb2-page-main ul, .jb2-page-main ol { margin: 0 0 1.3em 1.2em; padding: 0; color: var(--jb2-muted); font-size: 1.04rem; }
.jb2-page-main li { margin-bottom: .4em; }
.jb2-page-main a { color: var(--jb2-primary); font-weight: 700; }
.jb2-page-main figure.wp-block-image { margin: 2em 0; }
.jb2-page-main figure.wp-block-image img { width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; }
.jb2-page-main figure.wp-block-image figcaption { margin-top: 8px; font-size: .85rem; color: var(--jb2-muted); text-align: left; }
.jb2-page-aside { position: sticky; top: 130px; align-self: start; }
.jb2-aside-note { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--jb2-line); font-size: .92rem; color: var(--jb2-muted); }
.jb2-aside-note a { color: var(--jb2-primary); font-weight: 800; text-decoration: none; }

/* These inner pages default to GeneratePress's boxed layout with a right-sidebar slot; switch it off
   so the hero runs edge to edge (the quote form lives in .jb2-page-aside instead). */
body:has(.jb2-service) #right-sidebar, body:has(.jb2-service) #left-sidebar { display: none; }
body:has(.jb2-service) .site.grid-container { max-width: 100%; }
body:has(.jb2-service) .content-area { width: 100%; }
body:has(.jb2-service) .inside-article { padding: 0; background: transparent; }
body:has(.jb2-service) .entry-content { margin: 0; }
body:has(.jb2-service) .site-main, body:has(.jb2-service) .site-content, body:has(.jb2-service) .separate-containers .site-main { margin: 0; padding: 0; }

/* ---------- Icon boxes ("Find Your Concrete Service" on location pages) ----------
   Boxes are plain until a link is added to the title; then the whole box becomes clickable. */
.jb2-iconbox-grid { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin: 1.2em 0 2em; }
.jb2-iconbox-grid .wp-block-group__inner-container, .jb2-iconbox .wp-block-group__inner-container { display: contents; }
.jb2-iconbox-grid .jb2-iconbox { margin: 0; }
.jb2-iconbox {
  position: relative; display: flex !important; flex-direction: column; align-items: flex-start; gap: 14px;
  background: #fff; border: 1px solid var(--jb2-line); border-top: 4px solid var(--jb2-primary);
  padding: 20px 16px 18px; transition: transform .2s, box-shadow .2s, border-color .2s;
}
.jb2-iconbox::before {
  content: ""; width: 52px; height: 52px; flex: none; background-color: var(--jb2-primary);
  background-repeat: no-repeat; background-position: center; background-size: 28px;
}
.jb2-iconbox p.jb2-iconbox-title, .jb2-iconbox p { margin: 0; font-family: var(--jb2-font-head); font-weight: 600; text-transform: uppercase; letter-spacing: .03em; font-size: 1rem; line-height: 1.15; color: var(--jb2-dark); }
.jb2-iconbox a { color: inherit; text-decoration: none; }
.jb2-iconbox a::after { content: ""; position: absolute; inset: 0; }
.jb2-iconbox:has(a) { cursor: pointer; }
.jb2-iconbox:has(a)::after { content: "→"; position: absolute; right: 14px; bottom: 12px; font-size: 1.1rem; color: var(--jb2-primary); transition: transform .2s; }
.jb2-iconbox:has(a):hover { transform: translateY(-3px); box-shadow: 0 18px 30px -22px rgba(0,0,0,.5); border-top-color: var(--jb2-primary-deep); }
.jb2-iconbox:has(a):hover::after { transform: translateX(3px); }
.jb2-ic--driveway::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 21L10 3M16 21L14 3M12 5v3M12 11v3M12 17v3'/%3E%3C/svg%3E"); }
.jb2-ic--patio::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3a9 9 0 0 1 9 9H3a9 9 0 0 1 9-9zM12 12v8M9 20h6'/%3E%3C/svg%3E"); }
.jb2-ic--slab::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12l9-5 9 5-9 5-9-5zM3 12v3l9 5 9-5v-3'/%3E%3C/svg%3E"); }
.jb2-ic--foundation::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18M5 21V11l7-6 7 6v10M9 21v-6h6v6'/%3E%3C/svg%3E"); }
.jb2-ic--stamped::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3h8v8H3zM13 3h8v5h-8zM13 10h8v11h-8zM3 13h8v8H3z'/%3E%3C/svg%3E"); }
.jb2-ic--sidewalk::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 20h5v-5h5v-5h5V5h3'/%3E%3C/svg%3E"); }
.jb2-ic--retaining::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5h18v14H3zM3 10h18M3 15h18M9 5v5M15 10v5M9 15v4'/%3E%3C/svg%3E"); }
.jb2-ic--paver::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h7v7H4zM13 4h7v7h-7zM4 13h7v7H4zM13 13h7v7h-7z'/%3E%3C/svg%3E"); }

/* ---------- Photo pair (location pages) ---------- */
.jb2-pic-pair { display: grid !important; grid-template-columns: 1fr 1fr; gap: 12px; margin: 2em 0; }
.jb2-pic-pair .wp-block-group__inner-container { display: contents; }
.jb2-pic-pair figure.wp-block-image { margin: 0; }
.jb2-pic-pair figure.wp-block-image img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; }
@media (max-width: 640px) { .jb2-pic-pair { grid-template-columns: 1fr; } }

/* ---------- Gallery page ---------- */
.jb2-gallery-intro { max-width: 680px; margin: 0 0 28px; color: var(--jb2-muted); font-size: 1.08rem; }
.jb2-gallery-grid { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.jb2-gallery-grid .wp-block-group__inner-container { display: contents; }
.jb2-gallery-grid figure.wp-block-image { margin: 0; overflow: hidden; position: relative; background: var(--jb2-dark); }
.jb2-gallery-grid figure.wp-block-image img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; object-position: center; transition: transform .6s; }
.jb2-gallery-grid figure.wp-block-image:hover img { transform: scale(1.05); }
.jb2-home .jb2-gallery-cta { margin-top: 56px; display: flex; flex-wrap: wrap; align-items: center; gap: 16px 28px; padding-top: 32px; border-top: 1px solid var(--jb2-line); }
.jb2-gallery-cta p { margin: 0; font-weight: 700; font-size: 1.1rem; color: var(--jb2-ink); }
.jb2-home .jb2-gallery-more { margin-top: 36px; justify-content: center; }

/* ---------- Contact page ---------- */
.jb2-contact-cards { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 1.4em 0 2.2em; }
.jb2-contact-cards .wp-block-group__inner-container { display: contents; }
.jb2-contact-cards .jb2-iconbox { margin: 0; padding: 22px 20px 20px; gap: 12px; }
.jb2-iconbox.jb2-contactbox p.jb2-cb-label { margin: 0; font-family: var(--jb2-font-body); font-size: .74rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--jb2-primary); }
.jb2-iconbox.jb2-contactbox p.jb2-cb-value { margin: 0; font-family: var(--jb2-font-body); font-size: 1.08rem; font-weight: 700; letter-spacing: 0; text-transform: none; line-height: 1.35; color: var(--jb2-ink); overflow-wrap: anywhere; }
.jb2-ic--phone::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h4l2 5-2.5 1.5a11 11 0 0 0 5 5L15 13l5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2z'/%3E%3C/svg%3E"); }
.jb2-ic--mail::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18v12H3zM3 7l9 7 9-7'/%3E%3C/svg%3E"); }
.jb2-ic--pin::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.2-7-11a7 7 0 0 1 14 0c0 4.8-7 11-7 11zM12 12a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z'/%3E%3C/svg%3E"); }
.jb2-ic--clock::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18zM12 7v5l3 2'/%3E%3C/svg%3E"); }
.jb2-page-main .jb2-cities { margin: 12px 0 18px; }
.jb2-page-main .jb2-cities li a { text-decoration: none; }
@media (max-width: 640px) { .jb2-contact-cards { grid-template-columns: 1fr; } }

/* Mobile call bar (phones only) */
.jb2-callbar { display: none; }
.jb2-callbar .wp-block-group__inner-container { display: contents; }

/* ---------- Header: GeneratePress markup, re-skinned ---------- */
.top-bar { background: var(--jb2-topbar); color: #fff; }
.top-bar .inside-top-bar { padding: 7px 20px; }
.top-bar .widget { margin: 0; padding: 0; }
.top-bar p { margin: 0; color: #fff; font: 600 .85rem/1.4 var(--jb2-font-body); text-align: center; }
.top-bar a { color: #fff; font-weight: 800; text-decoration: none; white-space: nowrap; }

.site-header {
  background: var(--jb2-header-bg) !important; border-bottom: 3px solid var(--jb2-primary-deep);
  position: sticky; top: 0; z-index: 40; box-shadow: none;
}
.inside-header.grid-container { padding-top: 8px; padding-bottom: 8px; align-items: center; }
.site-header .site-logo img.header-image { height: 64px; width: auto; max-width: none; }

.main-navigation, .main-navigation ul ul { background: transparent !important; }
.main-navigation .main-nav ul li a, .main-navigation .menu-toggle, .main-navigation .menu-bar-items a {
  color: #fff !important; font-family: var(--jb2-font-body); font-weight: 700; font-size: .95rem; background: transparent !important;
}
.main-navigation .main-nav ul li:hover > a, .main-navigation .main-nav ul li.sfHover > a,
.main-navigation .main-nav ul li[class*="current-menu-"] > a { color: var(--jb2-pale) !important; background: transparent !important; }
.main-navigation .main-nav ul ul { background: var(--jb2-primary-deep) !important; box-shadow: 0 18px 30px -18px rgba(0,0,0,.5); }
.main-navigation .main-nav ul ul li a { font-size: .9rem; }

.header-widget { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.header-widget .widget { margin: 0; padding: 0; }
.header-widget p {
  margin: 0 !important; font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
  color: rgba(255,255,255,.78); line-height: 1.35;
}
.header-widget a.wp-block-button__link {
  background: #fff !important; color: var(--jb2-primary-deep) !important; border: 0 !important; border-radius: 0 !important;
  padding: 10px 18px; font-family: var(--jb2-font-body); font-weight: 800; font-size: .9rem; letter-spacing: .08em; text-transform: uppercase;
  box-shadow: none; white-space: nowrap; transition: background .2s, transform .2s;
}
.header-widget a.wp-block-button__link:hover { background: var(--jb2-pale) !important; transform: translateY(-1px); }

/* GeneratePress's own copyright bar duplicates the footer block above */
.site-info { display: none; }

/* ---------- Responsive ---------- */
@media (max-width: 1000px) {
  .jb2-hero-cols, .jb2-split, .jb2-areas, .jb2-page-grid, .jb2-exp { grid-template-columns: minmax(0, 1fr); }
  .jb2-page-aside { position: static; }
  .jb2-list--4, .jb2-why-grid { grid-template-columns: 1fr 1fr; }
  .jb2-row { grid-template-columns: 1fr 1fr; }
  .jb2-row figure:last-child { grid-column: span 2; }
  .jb2-row img { height: 220px; }
  .jb2-list { grid-template-columns: 1fr; }
  .jb2-list li { border-left: 0 !important; }
  .jb2-foot-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 1180px) {
  .inside-header.grid-container { padding-left: 20px; padding-right: 20px; }
  .main-navigation .main-nav ul li a { padding-left: 11px !important; padding-right: 11px !important; font-size: .88rem; }
  .header-widget p { display: none; }
}
@media (min-width: 769px) and (max-width: 980px) {
  .header-widget { display: none; }
  .main-navigation .main-nav ul li a { padding-left: 9px !important; padding-right: 9px !important; font-size: .85rem; }
}
@media (max-width: 768px) {
  .site-header { position: static; }
}
@media (max-width: 640px) {
  /* the fixed Call / Free quote bar already covers this on phones */
  .header-widget { display: none; }
  .jb2-footer .jb2-foot-col:nth-child(2) ul, .jb2-footer .jb2-foot-col:nth-child(3) ul { display: grid; grid-template-columns: 1fr 1fr; gap: 7px 14px; }
}
@media (max-width: 640px) {
  .jb2-list--4, .jb2-why-grid { grid-template-columns: 1fr; }
  .jb2-wrap { width: calc(100% - 32px); }
  .jb2-foot-grid { grid-template-columns: 1fr; }
  .wp-block-group.alignfull.jb2-footer { padding-bottom: 96px; }
  .top-bar p { font-size: .78rem; }
  .jb2-callbar { display: grid; grid-template-columns: 1fr 1fr; position: fixed; inset: auto 0 0; z-index: 60; margin: 0; }
  .jb2-callbar p { margin: 0; }
  .jb2-callbar a { display: block; padding: 15px; text-align: center; font-weight: 800; text-decoration: none; font-family: var(--jb2-font-body); background: var(--jb2-dark); color: #fff; }
  .jb2-callbar p + p a { background: var(--jb2-primary); }
}
@media (prefers-reduced-motion: reduce) {
  .jb2-home *, .jb2-footer * { transition: none !important; }
}

/* @gform-start — quote form styling (Gravity Forms legacy "gravity-theme" markup) */
.jb2-home .gform_wrapper.gravity-theme { margin-top: 14px; }
.jb2-home .gform_wrapper.gravity-theme form { margin: 0; }
.jb2-home .gform_wrapper.gravity-theme .gform_fields { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 12px; padding: 0; margin: 0; list-style: none; }
.jb2-home .gform_wrapper.gravity-theme .gfield { grid-column: span 12; min-width: 0; margin: 0; padding: 0; border: 0; }
.jb2-home .gform_wrapper.gravity-theme .gfield--width-half { grid-column: span 6; }
.jb2-home .gform_wrapper.gravity-theme .gfield--width-third { grid-column: span 4; }
.jb2-home .gform_wrapper.gravity-theme .gfield--width-two-thirds { grid-column: span 8; }
.jb2-home .gform_wrapper.gravity-theme .gfield--width-quarter { grid-column: span 3; }
.jb2-home .gform_wrapper.gravity-theme .gfield_label, .jb2-home .gform_wrapper.gravity-theme legend.gfield_label { display: block; margin: 0 0 5px; padding: 0; font-size: .8rem; font-weight: 700; color: var(--gf-ink); letter-spacing: .01em; }
.jb2-home .gform_wrapper.gravity-theme .gfield_required { color: var(--gf-accent); margin-left: 2px; }
.jb2-home .gform_wrapper.gravity-theme .ginput_complex { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.jb2-home .gform_wrapper.gravity-theme .ginput_complex label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.jb2-home .gform_wrapper.gravity-theme input[type="text"], .jb2-home .gform_wrapper.gravity-theme input[type="tel"], .jb2-home .gform_wrapper.gravity-theme input[type="email"], .jb2-home .gform_wrapper.gravity-theme select, .jb2-home .gform_wrapper.gravity-theme textarea {
  display: block; width: 100%; box-sizing: border-box; font: inherit; font-size: 1rem; color: var(--gf-ink); background: var(--gf-bg); border: 1.5px solid var(--gf-line); border-radius: var(--gf-radius); padding: 11px 13px; transition: border-color .15s, box-shadow .15s; }
.jb2-home .gform_wrapper.gravity-theme ::placeholder { color: color-mix(in srgb, var(--gf-ink) 45%, transparent); }
.jb2-home .gform_wrapper.gravity-theme textarea { height: 84px !important; min-height: 84px !important; resize: vertical; }
.jb2-home .gform_wrapper.gravity-theme input:focus, .jb2-home .gform_wrapper.gravity-theme select:focus, .jb2-home .gform_wrapper.gravity-theme textarea:focus { outline: none; border-color: var(--gf-accent); box-shadow: 0 0 0 4px var(--gf-focus); }
.jb2-home .gform_wrapper.gravity-theme .gform_footer { margin: 16px 0 0; padding: 0; }
.jb2-home .gform_wrapper.gravity-theme .gform_button { display: block; width: 100%; padding: 15px 22px; border: 0; border-radius: var(--gf-btn-radius); background: var(--gf-accent); color: var(--gf-accent-ink); font-family: var(--gf-btn-font); text-transform: uppercase; letter-spacing: .1em; font-weight: 700; font-size: 1.05rem; cursor: pointer; transition: background .2s, transform .2s; }
.jb2-home .gform_wrapper.gravity-theme .gform_button:hover { background: var(--gf-accent-hover); transform: translateY(-1px); }
.jb2-home .gform_confirmation_message { margin-top: 14px; padding: 18px; background: var(--gf-focus); color: var(--gf-ink); font-weight: 700; }
@media (max-width: 640px) {
  .jb2-home .gform_wrapper.gravity-theme .gfield--width-half, .jb2-home .gform_wrapper.gravity-theme .gfield--width-third, .jb2-home .gform_wrapper.gravity-theme .gfield--width-two-thirds, .jb2-home .gform_wrapper.gravity-theme .gfield--width-quarter { grid-column: span 12; }
}
/* @gform-end */
