/*
 * Get Bobcat section library styles (2026-10-28, Ryan). Loaded by gbc-client after brand.css.
 *
 * Section backgrounds, buttons and icon colours are set in the Divi blocks themselves as Divi global
 * colours (gcid-*), so they stay editable in the Visual Builder. This file only does what blocks do
 * badly: the type scale, tone text colours, eyebrows, cards, quotes, numbers, details lists and the
 * header/footer polish. Every colour is a Divi global colour variable with the brand.css value as the
 * fallback (Divi prints only the --gcid-* variables a page uses). No hex values here.
 */

/* ---------- type scale ---------- */
/* 2026-10-28 (Ryan, review): Divi's base text is 14px; every page (404, policy pages, anything outside the library)
   starts from 17px instead. */
html body { font-size: 17px; }
.gbc-lib .et_pb_text,
.gbc-lib .et_pb_text p,
.gbc-lib .et_pb_accordion .et_pb_toggle_content { font-size: 18px; line-height: 1.65; }
.gbc-lib .et_pb_text p { padding-bottom: 0; margin: 0 0 1em; }
.gbc-lib .et_pb_text p:last-child { margin-bottom: 0; }
.gbc-lib h1, .gbc-lib h2, .gbc-lib h3 { font-family: var(--gbc-font-heading, inherit); padding-bottom: 0; letter-spacing: -0.01em; }
.gbc-lib h1 { font-size: clamp(38px, 1.6rem + 3.2vw, 66px); line-height: 1.06; font-weight: 700; margin: 0 0 22px; }
.gbc-lib h2 { font-size: clamp(30px, 1.3rem + 1.7vw, 46px); line-height: 1.12; font-weight: 700; margin: 0 0 18px; }
.gbc-lib h3 { font-size: clamp(20px, 1.05rem + 0.4vw, 24px); line-height: 1.25; font-weight: 600; margin: 0 0 10px; }
.gbc-lib .gbc-lead { font-size: clamp(18px, 1rem + 0.4vw, 21px); line-height: 1.55; }
.gbc-lib .gbc-intro { font-size: 19px; }
.gbc-eyebrow {
  font-size: 14px !important; line-height: 1.3 !important; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--gcid-link-color, var(--gbc-link)); margin: 0 0 14px !important; display: inline-flex; align-items: center; gap: 12px;
}
/* 2026-10-28 (Ryan, review): the rule is the eyebrow's own colour; amber next to red-orange text read as two oranges. */
.gbc-eyebrow::before { content: ""; width: 28px; height: 3px; border-radius: 2px; background: currentColor; }
.gbc-center .gbc-eyebrow, .et_pb_text[class*="et_pb_text_align_center"] .gbc-eyebrow, .gbc-section-head .gbc-eyebrow { justify-content: center; }
.gbc-section-head h2 { margin-bottom: 12px; }

/* ---------- tones: text colours ---------- */
.gbc-tone-light, .gbc-tone-surface { color: var(--gcid-body-color, var(--gbc-text)); }
.gbc-tone-light h1, .gbc-tone-light h2, .gbc-tone-light h3,
.gbc-tone-surface h1, .gbc-tone-surface h2, .gbc-tone-surface h3 { color: var(--gcid-heading-color, var(--gbc-heading)); }
.gbc-tone-dark, .gbc-tone-image,
.gbc-tone-dark .et_pb_text, .gbc-tone-image .et_pb_text,
.gbc-tone-dark h1, .gbc-tone-dark h2, .gbc-tone-dark h3, .gbc-tone-dark h4,
.gbc-tone-image h1, .gbc-tone-image h2, .gbc-tone-image h3 { color: var(--gcid-gbc-dark-text, var(--gbc-dark-text)); }
.gbc-tone-dark .gbc-eyebrow, .gbc-tone-image .gbc-eyebrow { color: var(--gcid-gbc-dark-text, var(--gbc-dark-text)); }
.gbc-tone-dark .gbc-eyebrow::before, .gbc-tone-image .gbc-eyebrow::before { background: var(--gcid-gbc-dark-heading, var(--gbc-dark-heading)); }
.gbc-tone-bold, .gbc-tone-bold .et_pb_text,
.gbc-tone-bold h1, .gbc-tone-bold h2, .gbc-tone-bold h3, .gbc-tone-bold .gbc-eyebrow { color: var(--gcid-gbc-button-text, var(--gbc-button-text)); }
.gbc-tone-bold .gbc-eyebrow::before { background: currentColor; opacity: 0.7; }
.gbc-tone-dark a:not(.et_pb_button), .gbc-tone-image a:not(.et_pb_button) { color: var(--gcid-gbc-dark-text, var(--gbc-dark-text)); text-decoration: underline; }
.gbc-tone-bold a:not(.et_pb_button) { color: inherit; text-decoration: underline; }

/* ---------- heroes ---------- */
.gbc-hero-image .gbc-hero-copy h1 { max-width: 18ch; }
.gbc-hero-image .gbc-lead { max-width: 36em; opacity: 0.95; }
.gbc-hero-bold h1 { font-size: clamp(42px, 1.8rem + 4vw, 78px); }
.gbc-btn-group { display: flex !important; flex-direction: row !important; flex-wrap: wrap; gap: 14px 16px; align-items: center; }
.gbc-btn-group > .et_pb_text { flex: 0 0 100%; width: 100%; max-width: none !important; margin-bottom: 14px !important; }
.gbc-hero-bold .gbc-btn-group > .et_pb_text .et_pb_text_inner { max-width: 860px; margin: 0 auto; }
.gbc-btn-group > .et_pb_button_module_wrapper { margin: 0 !important; }
.gbc-center.gbc-btn-group { justify-content: center; }
.gbc-btn-stack { display: flex !important; flex-direction: column; gap: 14px; align-items: flex-end; }
.gbc-btn-stack > .et_pb_button_module_wrapper { margin: 0 !important; }
@media (max-width: 980px) {
  .gbc-btn-stack { align-items: flex-start; }
}
@media (max-width: 600px) {
  .gbc-lib .gbc-btn-group > .et_pb_button_module_wrapper { width: 100%; flex: 0 0 100%; }
  .gbc-lib .gbc-btn-group a.et_pb_button, .gbc-lib .gbc-btn-stack a.et_pb_button { display: block; width: 100%; text-align: center; box-sizing: border-box; }
  .gbc-lib .gbc-btn-stack > .et_pb_button_module_wrapper { width: 100%; }
}

/* ---------- buttons (colours come from the blocks; this is shape only) ---------- */
.gbc-lib .et_pb_button { display: inline-block; letter-spacing: 0.01em; transition: background-color .15s ease, transform .15s ease; }
.gbc-lib .et_pb_button:hover { transform: translateY(-1px); }
/* 2026-10-28 (Ryan): 21pec rebuild. Divi's default (5px 17px, 32px tall) read small on a 1440 hero and is under
   the 44px tap target on phones. Same box on hover so nothing jumps. The header CTA keeps its own smaller size. */
.gbc-lib .et_pb_button, .gbc-lib .et_pb_button:hover { padding: 12px 28px !important; font-size: 19px !important; line-height: 1.25 !important; min-height: 44px; box-sizing: border-box; }
.gbc-lib .et_pb_button:focus-visible { outline: 3px solid var(--gcid-gbc-accent-ui, var(--gbc-accent-ui)); outline-offset: 3px; }

/* ---------- images ---------- */
.gbc-img img { width: 100%; display: block; object-fit: cover; }
.gbc-img-4x3 img { aspect-ratio: 4 / 3; }
.gbc-img-4x5 img { aspect-ratio: 4 / 5; }
.gbc-img-square img { aspect-ratio: 1 / 1; }
.gbc-gallery-cell .et_pb_image { margin-bottom: 0 !important; }

/* ---------- cards ---------- */
.gbc-card { box-shadow: 0 1px 2px rgba(16, 24, 40, 0.06), 0 8px 24px rgba(16, 24, 40, 0.06); }
.gbc-tone-dark .gbc-card, .gbc-tone-bold .gbc-card { box-shadow: none; border: 1px solid rgba(255, 255, 255, 0.10); }
/* 2026-10-28 (Ryan, review): the icon module sat centred in the flex column while the title and text were left. */
.gbc-feature .gbc-icon { margin-bottom: 6px !important; text-align: left !important; align-self: flex-start !important; margin-left: 0 !important; }
.gbc-feature .et-pb-icon {
  display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; border-radius: 50%;
  background: color-mix(in srgb, currentColor 12%, transparent);
}
.gbc-feature p, .gbc-service p { font-size: 17px !important; }
.gbc-service { border-top: 4px solid var(--gcid-gbc-accent-ui, var(--gbc-accent-ui)); }
.gbc-price { font-weight: 700; color: var(--gcid-link-color, var(--gbc-link)); margin-top: 12px !important; }
.gbc-tone-dark .gbc-price { color: var(--gcid-gbc-dark-text, var(--gbc-dark-text)); }

/* ---------- about ---------- */
.gbc-lib ul.gbc-checks { list-style: none !important; padding: 8px 0 0 !important; margin: 0; display: grid; gap: 10px; }
.gbc-checks li { position: relative; padding-left: 34px; font-weight: 600; line-height: 1.45; }
.gbc-checks li::before {
  content: ""; position: absolute; left: 0; top: 2px; width: 22px; height: 22px; border-radius: 50%;
  background: var(--gcid-gbc-accent-ui, var(--gbc-accent-ui));
  -webkit-mask: radial-gradient(circle, #000 0 100%); mask: radial-gradient(circle, #000 0 100%);
}
.gbc-checks li::after {
  content: ""; position: absolute; left: 7px; top: 7px; width: 8px; height: 5px;
  border-left: 2px solid var(--gbc-page, #fff); border-bottom: 2px solid var(--gbc-page, #fff); transform: rotate(-45deg);
}

/* ---------- testimonials ---------- */
.gbc-quote blockquote { border: 0; padding: 0; margin: 0 0 18px; font-style: normal; }
.gbc-quote blockquote::before {
  content: "\201C"; display: block; font-family: Georgia, serif; font-size: 64px; line-height: 0.8; height: 36px;
  color: var(--gcid-gbc-accent-ui, var(--gbc-accent-ui));
}
.gbc-tone-dark .gbc-quote blockquote::before { color: var(--gcid-gbc-dark-heading, var(--gbc-dark-heading)); }
.gbc-quote blockquote p { font-size: 19px !important; line-height: 1.55 !important; }
.gbc-quote-name { font-weight: 700; margin: 0 !important; }
.gbc-quote-detail { font-size: 15px !important; opacity: 0.8; }

/* ---------- stats ---------- */
.gbc-stat-number { font-family: var(--gbc-font-heading, inherit); font-size: clamp(44px, 2rem + 2.6vw, 72px) !important; line-height: 1 !important; font-weight: 700; margin: 0 0 10px !important; }
.gbc-tone-dark .gbc-stat-number { color: var(--gcid-gbc-dark-text, var(--gbc-dark-text)); }
.gbc-stat-number::after { content: ""; display: block; width: 40px; height: 3px; border-radius: 2px; margin: 14px auto 0; background: var(--gcid-gbc-dark-heading, var(--gbc-dark-heading)); }
.gbc-tone-bold .gbc-stat-number::after { background: currentColor; opacity: .6; }
.gbc-stat-label { font-size: 15px !important; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 600; }
.gbc-stats .et_pb_column + .et_pb_column { border-left: 1px solid rgba(255, 255, 255, 0.14); }
@media (max-width: 980px) { .gbc-stats .et_pb_column + .et_pb_column { border-left: 0; } }

/* ---------- process ---------- */
.gbc-step-number {
  display: inline-flex !important; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 50%;
  font-family: var(--gbc-font-heading, inherit); font-weight: 700; font-size: 18px !important; margin-bottom: 18px !important;
  border: 2px solid var(--gcid-gbc-accent-ui, var(--gbc-accent-ui)); color: var(--gcid-heading-color, var(--gbc-heading));
}

/* ---------- FAQ ---------- */
.gbc-faq .et_pb_toggle {
  border: 0; border-bottom: 1px solid color-mix(in srgb, currentColor 18%, transparent); background: transparent !important;
  padding: 22px 0; margin: 0 !important;
}
.gbc-faq .et_pb_toggle:first-child { border-top: 1px solid color-mix(in srgb, currentColor 18%, transparent); }
.gbc-faq .et_pb_toggle_title { font-family: var(--gbc-font-heading, inherit); font-size: 20px !important; line-height: 1.35 !important; font-weight: 600; padding-right: 40px; color: var(--gcid-heading-color, var(--gbc-heading)) !important; }
.gbc-faq .et_pb_toggle_title::before { color: var(--gcid-gbc-accent-ui, var(--gbc-accent-ui)) !important; font-size: 22px; right: 0; }
.gbc-faq .et_pb_toggle_content { padding-top: 12px; }
/* 2026-10-28 (Ryan, review): Divi hides the icon on the open item, so only closed items had a "+". The open one
   shows Divi's own minus glyph (.et_pb_toggle_open > .et_pb_toggle_title::before). */
.gbc-faq .et_pb_accordion_item.et_pb_toggle_open > .et_pb_toggle_title::before { display: block !important; }

/* ---------- contact ---------- */
.gbc-lib ul.gbc-details { list-style: none !important; padding: 12px 0 0 !important; margin: 0; display: grid; gap: 16px; }
.gbc-details li { line-height: 1.5; }
.gbc-details li span {
  display: block; font-size: 13px; letter-spacing: 0.12em; text-transform: uppercase; font-weight: 700; margin-bottom: 2px;
  color: var(--gcid-link-color, var(--gbc-link));
}
.gbc-tone-dark .gbc-details li span, .gbc-footer .gbc-details li span { color: inherit; opacity: 0.75; }
.gbc-details a { font-weight: 600; }
.gbc-form-card .gform_wrapper { margin: 0 !important; }
.gbc-form-card .gform_wrapper .gfield_label { font-weight: 600; font-size: 15px; }
/* 2026-10-28 (Ryan, review): every field full width (backstop for forms made before plugins-setup.php set size large). */
.gbc-form-card .gform_wrapper .gfield input.medium, .gbc-form-card .gform_wrapper .gfield input.small,
.gbc-form-card .gform_wrapper .ginput_container_phone input, .gbc-form-card .gform_wrapper .gfield textarea { width: 100% !important; max-width: none !important; }
.gbc-form-card .gform_wrapper input[type="text"], .gbc-form-card .gform_wrapper input[type="email"],
.gbc-form-card .gform_wrapper input[type="tel"], .gbc-form-card .gform_wrapper textarea {
  border: 1px solid color-mix(in srgb, currentColor 25%, transparent) !important; border-radius: 8px !important; padding: 12px 14px !important;
  font-size: 17px !important; background: var(--gbc-page, #fff) !important;
}
.gbc-form-card .gform_wrapper .gform_footer { padding-top: 8px; margin: 0; }
.gbc-form-card .gform_wrapper .gform_footer .gform_button, .gbc-form-card .gform_wrapper .gform_footer input[type="submit"] {
  padding: 14px 28px !important; font-size: 17px !important; font-weight: 600; cursor: pointer; border: 0 !important; border-radius: 8px !important;
  background: var(--gcid-gbc-button, var(--gbc-button-bg)) !important; color: var(--gcid-gbc-button-text, var(--gbc-button-text)) !important;
  font-family: var(--gbc-font-heading, inherit) !important;
}
.gbc-form-card .gform_wrapper .gform_footer .gform_button:hover { background: var(--gcid-gbc-button-hover, var(--gbc-button-hover-bg)) !important; }
.gbc-form-card .gform_wrapper { --gf-color-primary: var(--gcid-gbc-button, var(--gbc-button-bg)); --gf-color-primary-contrast: var(--gcid-gbc-button-text, var(--gbc-button-text)); --gf-ctrl-outline-color-focus: var(--gcid-gbc-accent-ui, var(--gbc-accent-ui)); }

/* ---------- Theme Builder header ---------- */
.gbc-header { border-bottom: 1px solid color-mix(in srgb, var(--gcid-heading-color, var(--gbc-heading)) 10%, transparent); }
.gbc-header .et_pb_menu__logo img { width: auto; }
.gbc-header .et_pb_menu .et-menu > li > a { font-size: 16px; padding: 10px 0 !important; }
.gbc-header .et_pb_menu .et-menu > li { padding-left: 14px; padding-right: 14px; }
.gbc-header .et_pb_menu_inner_container { display: flex; align-items: center; }
.gbc-header .et_pb_menu .et_pb_menu__wrap { flex: 1 1 auto !important; justify-content: flex-end !important; align-items: center; margin: 0 !important; }
.gbc-header .et_pb_menu .et-menu-nav, .gbc-header .et_pb_menu .et-menu { justify-content: flex-end; align-items: center; }
.gbc-header .et-menu > li { padding-top: 0 !important; }
.gbc-header .et-menu > li > a { color: var(--gcid-heading-color, var(--gbc-heading)) !important; }
.gbc-header .et-menu > li > a:hover { color: var(--gcid-link-color, var(--gbc-link)) !important; opacity: 1; }
.gbc-header .gbc-header-cta .et_pb_button, .gbc-header .gbc-header-cta .et_pb_button:hover { padding: 10px 22px !important; font-size: 16px !important; min-height: 0; }
.gbc-header .et_mobile_menu { border-top-color: var(--gcid-gbc-accent-ui, var(--gbc-accent-ui)); }
/* 2026-10-28 (Ryan, review): no logo = the business name as a text wordmark beside the menu. */
.gbc-header .gbc-header-menu:has(.gbc-wordmark-text) { display: flex !important; flex-direction: row !important; align-items: center; gap: 24px; }
.gbc-header .gbc-wordmark-text { flex: 0 1 auto; margin: 0 !important; width: auto !important; }
.gbc-header .gbc-wordmark-text + .et_pb_menu { flex: 1 1 auto; margin: 0 !important; }
.gbc-wordmark { margin: 0 !important; padding: 0 !important; font-family: var(--gbc-font-heading, inherit); font-weight: 700; font-size: clamp(20px, 1rem + 0.6vw, 26px) !important; line-height: 1.15 !important; }
.gbc-wordmark a { color: var(--gcid-heading-color, var(--gbc-heading)) !important; text-decoration: none; }
@media (max-width: 980px) {
  .gbc-header .gbc-header-cta-col { display: none !important; }
  .gbc-header .et_pb_column { margin-bottom: 0 !important; }
}

/* ---------- Theme Builder footer ---------- */
.gbc-footer .et_pb_text, .gbc-footer p, .gbc-footer li { font-size: 16px !important; line-height: 1.6 !important; }
.gbc-footer .gbc-footer-name { font-family: var(--gbc-font-heading, inherit); font-size: 24px !important; line-height: 1.2 !important; font-weight: 700; margin-bottom: 10px !important; }
.gbc-footer-head { font-size: 13px !important; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 700; opacity: 0.75; margin-bottom: 12px !important; }
.gbc-lib ul.gbc-footer-links { list-style: none !important; padding: 0 !important; margin: 0; display: grid; gap: 8px; }
.gbc-footer a:not(.et_pb_button) { text-decoration: none; }
.gbc-footer a:not(.et_pb_button):hover { text-decoration: underline; }
.gbc-footer-bottom { border-top: 1px solid rgba(255, 255, 255, 0.14); }
.gbc-footer-legal { font-size: 14px !important; opacity: 0.85; }
.gbc-footer ul.gbc-details { gap: 10px; padding-top: 0 !important; }
.gbc-socials a { margin-right: 4px; }

/* ---------- plain pages (Privacy, Cookie Policy) ---------- */
/* 2026-10-28 (Ryan): the Cookie Policy table (5 columns) pushed the page 347px wider than a phone. It scrolls
   inside its own box instead; the page never scrolls sideways. */
.entry-content table { display: block; max-width: 100%; overflow-x: auto; border-collapse: collapse; -webkit-overflow-scrolling: touch; }
.entry-content th, .entry-content td { min-width: 120px; vertical-align: top; padding: 10px 14px; }
.entry-content td:nth-child(4), .entry-content th:nth-child(4) { min-width: 240px; }
/* Divi's default body text is 14px; on the plain pages (no builder layout) that read small next to the
   library pages' 17px. */
body:not(.et_pb_pagebuilder_layout) .entry-content { font-size: 17px; line-height: 1.7; }
body:not(.et_pb_pagebuilder_layout) .entry-content h2 { font-size: 30px; margin-top: 1.4em; }
body:not(.et_pb_pagebuilder_layout) .entry-content li { margin-bottom: 0.35em; }
body:not(.et_pb_pagebuilder_layout) .entry-content table { font-size: 15px; }
/* 2026-10-28 (Ryan, review): the last heading on the policy pages sat right against the footer. */
body:not(.et_pb_pagebuilder_layout):not(.error404) #left-area { padding-bottom: 72px; }
/* Cookie Policy table on phones: one card per row, each cell labelled (the column names are fixed by the
   template, class gbc-cookie-table), instead of a sideways-scrolling table with very tall rows. */
@media (max-width: 640px) {
  .entry-content table.gbc-cookie-table, .gbc-cookie-table tbody, .gbc-cookie-table tr, .gbc-cookie-table td { display: block; width: 100%; min-width: 0 !important; overflow: visible; }
  .gbc-cookie-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .gbc-cookie-table tr { border: 1px solid color-mix(in srgb, currentColor 18%, transparent); border-radius: 8px; padding: 6px 0; margin: 0 0 14px; }
  .gbc-cookie-table td { border: 0 !important; padding: 6px 14px !important; }
  .gbc-cookie-table td::before { display: block; font-size: 12px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; opacity: 0.7; }
  .gbc-cookie-table td:nth-child(1)::before { content: "Name"; }
  .gbc-cookie-table td:nth-child(2)::before { content: "Category"; }
  .gbc-cookie-table td:nth-child(3)::before { content: "Set by"; }
  .gbc-cookie-table td:nth-child(4)::before { content: "Purpose"; }
  .gbc-cookie-table td:nth-child(5)::before { content: "Lasts"; }
}
/* The 404 page (gbc-client 404.php). */
.gbc-404 { padding: 96px 0 112px; max-width: 720px; }
.gbc-404 h1 { font-family: var(--gbc-font-heading, inherit); font-size: clamp(34px, 1.4rem + 2.4vw, 54px); line-height: 1.1; color: var(--gcid-heading-color, var(--gbc-heading)); margin: 0 0 18px; }
.gbc-404 p { font-size: 19px; line-height: 1.6; margin: 0 0 28px; }
.gbc-404 .gbc-404-home { display: inline-block; padding: 12px 28px; border-radius: 8px; font-weight: 600; text-decoration: none;
  background: var(--gcid-gbc-button, var(--gbc-button-bg)); color: var(--gcid-gbc-button-text, var(--gbc-button-text)); }
.gbc-404 .gbc-404-home:hover { background: var(--gcid-gbc-button-hover, var(--gbc-button-hover-bg)); }
