/*
Theme Name: Bridgewater
Theme URI: https://highrise.digital
Author: Highrise Digital
Author URI: https://highrise.digital
Description: A custom WordPress theme built for Bridgewater by Highrise Digital.
Requires at least: 6.4
Tested up to: 6.7
Requires PHP: 8.0
Version: 1.0.2
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: bridgewater
Tags: custom-colors, custom-logo, custom-menu, editor-style, full-site-editing, block-patterns
*/


/* Block helpers/defaults */

.wp-site-blocks > .wp-block-template-part {
  margin-block-start: 0;
}

b, strong {
  font-weight: 700;
}


:root {

    --group-spacing--normal: var(--wp--preset--spacing--5);
    --group-spacing--wide: var(--wp--preset--spacing--7);
    --group-spacing--full: var(--wp--preset--spacing--10);

    /* Brand accent tokens — defaults to red. Override under a wrapper class
       (e.g. .is-style-graduate) to recolour all accent uses across the page. */
    --accent: var(--wp--preset--color--red);
    --accent-dark: var(--wp--preset--color--red-dark);
    --accent-tint: var(--wp--preset--color--red-tint);

}

/* Graduate scope: swap brand accent from red to green for any nested content. */
.is-style-graduate {
    --accent: var(--wp--preset--color--green);
    --accent-dark: var(--wp--preset--color--green-dark);
    --accent-tint: var(--wp--preset--color--green-tint);
}

/* Professional scope: swap brand accent from red to blue for any nested content. */
.is-style-professional {
    --accent: var(--wp--preset--color--blue);
    --accent-dark: var(--wp--preset--color--blue-dark);
    --accent-tint: var(--wp--preset--color--blue-tint);
}

:where(.wp-block-group).has-background {

  padding-top: var(--group-spacing--normal);
  padding-bottom: var(--group-spacing--normal);
  padding-left: var(--group-spacing--normal);
  padding-right: var(--group-spacing--normal);
  margin-top: var(--group-spacing--normal);
  margin-bottom: var(--group-spacing--normal);

}


.wp-block-cover.alignwide,
:where(.wp-block-group).alignwide {

  margin-top: var(--group-spacing--wide);
  margin-bottom: var(--group-spacing--wide);

}

.wp-block-cover,
.alignwide.has-background {

  padding: var(--group-spacing--wide);
  
}

.wp-block-cover.alignfull,
.wp-block-group.alignfull.has-background  {

  padding-top: var(--group-spacing--full);
  padding-bottom: var(--group-spacing--full);

}

:where(.wp-block-group).alignfull {

  margin-top: var(--group-spacing--full);
  margin-bottom: var(--group-spacing--full);
  border-radius: 0;

}

/* Editor overrides — WP 7's editor layout styles have higher specificity than
   our :where() rules, so we re-assert padding/margin values inside the editor. */
.editor-styles-wrapper :where(.wp-block-group).has-background {
  padding-top: var(--group-spacing--normal);
  padding-bottom: var(--group-spacing--normal);
  padding-left: var(--group-spacing--normal);
  padding-right: var(--group-spacing--normal);
  margin-block-start: var(--group-spacing--normal);
  margin-block-end: var(--group-spacing--normal);
}

.editor-styles-wrapper :where(.wp-block-group).alignwide {
  margin-block-start: var(--group-spacing--wide);
  margin-block-end: var(--group-spacing--wide);
}

.editor-styles-wrapper :where(.wp-block-group).alignfull {
  margin-block-start: var(--group-spacing--full);
  margin-block-end: var(--group-spacing--full);
  border-radius: 0;
}

.editor-styles-wrapper :where(.wp-block-group).alignfull.has-background + :where(.wp-block-group).alignfull.has-background,
.editor-styles-wrapper :where(.wp-block-group).alignfull.has-background + .wp-block-cover.alignfull,
.editor-styles-wrapper .wp-block-cover.alignfull + :where(.wp-block-group).alignfull.has-background,
.editor-styles-wrapper .wp-block-cover.alignfull + .wp-block-cover.alignfull {
  margin-block-start: calc(-1 * var(--group-spacing--full));
}

.editor-styles-wrapper :where(.wp-block-group).alignfull.has-background + .wp-block-separator.alignfull + :where(.wp-block-group).alignfull.has-background {
  margin-block-start: 0;
}

.editor-styles-wrapper :where(.wp-block-group).alignfull.has-background + .wp-block-separator.alignfull {
  margin-block-start: calc(-1 * var(--group-spacing--full));
  margin-block-end: 0;
}

.editor-styles-wrapper :where(.wp-block-group).has-background > *:first-child {
  margin-block-start: 0;
}

.editor-styles-wrapper .wp-block-heading.alignwide + :where(.wp-block-group).alignwide {
  margin-block-start: var(--wp--preset--spacing--4);
}

:where(.wp-block-group).alignfull.has-background + :where(.wp-block-group).alignfull.has-background,
:where(.wp-block-group).alignfull.has-background + .wp-block-cover.alignfull,
.wp-block-cover.alignfull + :where(.wp-block-group).alignfull.has-background,
.wp-block-cover.alignfull + .wp-block-cover.alignfull {

  margin-top: calc(-1 * var(--group-spacing--full));

}

:where(.wp-block-group).alignfull.has-background + .wp-block-separator.alignfull + :where(.wp-block-group).alignfull.has-background {

  margin-top: 0;

}

:where(.wp-block-group).alignfull.has-background + .wp-block-separator.alignfull {

  margin-top: calc(-1 * var(--group-spacing--full));
  margin-bottom: 0;

}

.entry-content > :where(.wp-block-group):first-child {

  margin-top: 0;

}

:where(.wp-block-group).has-background > *:first-child {

  margin-top: 0;

}

.wp-block-heading.alignwide + :where(.wp-block-group).alignwide {
    margin-top: var(--wp--preset--spacing--4);
} 

:where(.is-layout-grid) {
  gap: var(--wp--preset--spacing--6);
}

.has-1-font-size { line-height: 1.75; }
.has-2-font-size { line-height: 1.75; }
.has-3-font-size { line-height: 1.75; }
.has-4-font-size { line-height: 1.6; }
.has-5-font-size { line-height: 1.2; }
.has-6-font-size { line-height: 1.15; }
.has-7-font-size { line-height: 1.05; }

.wp-block-image.is-style-rounded img {
  border-radius: 0.5rem;
}

.wp-block-image.is-style-circle img {
  border-radius: 50%;
  aspect-ratio: 1;
  object-fit: cover;
}

:is(h1, h2, h3, h4, h5, h6, blockquote) {
    text-wrap: balance;
}

p {
    text-wrap: pretty;
}


/*
 * blocks.css
 * Custom block styles — enqueued via functions.php
 * Overrides WordPress core block styles where theme.json cannot reach.
 */

/* ─── BUTTON: Outline style ─────────────────────────────────────────────── */
/*
 * Core outputs its outline styles inside :root :where() which has near-zero
 * specificity. A single class selector here is enough to override it cleanly.
 */

.wp-block-button.is-style-outline .wp-block-button__link,
.wp-block-button.is-style-outline .wp-block-button__link:visited {
  background: transparent;
  color: var(--wp--preset--color--black);
  border: 1px solid var(--wp--preset--color--grey-200);
  border-radius: 3px;
  padding: var(--wp--preset--spacing--4) var(--wp--preset--spacing--6);
}

.wp-block-button.is-style-outline .wp-block-button__link:hover,
.wp-block-button.is-style-outline .wp-block-button__link:focus {
  background: transparent;
  color: var(--wp--preset--color--black);
  border-color: var(--wp--preset--color--grey-600);
}

/*
 * On dark sections the outline button should use white text and a white border.
 * These rules apply when the button sits inside a group with the dark-section
 * or accent-section variation.
 */
.is-style-dark-section .wp-block-button.is-style-outline .wp-block-button__link,
.is-style-accent-section .wp-block-button.is-style-outline .wp-block-button__link,
.is-style-card-accent-section .wp-block-button.is-style-outline .wp-block-button__link,
.is-style-green-section .wp-block-button.is-style-outline .wp-block-button__link {
  color: var(--wp--preset--color--white);
  border-color: rgba(255, 255, 255, 0.25);
}

.is-style-dark-section .wp-block-button.is-style-outline .wp-block-button__link:hover,
.is-style-dark-section .wp-block-button.is-style-outline .wp-block-button__link:focus,
.is-style-accent-section .wp-block-button.is-style-outline .wp-block-button__link:hover,
.is-style-accent-section .wp-block-button.is-style-outline .wp-block-button__link:focus,
.is-style-card-accent-section .wp-block-button.is-style-outline .wp-block-button__link:hover,
.is-style-card-accent-section .wp-block-button.is-style-outline .wp-block-button__link:focus,
.is-style-green-section .wp-block-button.is-style-outline .wp-block-button__link:hover,
.is-style-green-section .wp-block-button.is-style-outline .wp-block-button__link:focus {
  border-color: rgba(255, 255, 255, 0.55);
  background: transparent;
}

/* ─── BUTTON: Arrow Link style ────────────────────────────────────────── */

.wp-block-button.is-style-arrow-link .wp-block-button__link,
.wp-block-button.is-style-arrow-link .wp-block-button__link:visited {
  background: transparent;
  border: none;
  padding: 0;
  color: var(--accent);
  text-transform: uppercase;
  font-weight: 700;
  font-size: var(--wp--preset--font-size--1);
  letter-spacing: 0.08em;
}

.wp-block-button.is-style-arrow-link .wp-block-button__link::after {
  content: ' \279D';
}

.wp-block-button.is-style-arrow-link .wp-block-button__link:hover,
.wp-block-button.is-style-arrow-link .wp-block-button__link:focus {
  background: transparent;
  color: var(--accent-dark);
}

/* ─── HEADING: Eyebrow — accent section override ───────────────────────── */

.is-style-accent-section .wp-block-heading.is-style-eyebrow,
.is-style-card-accent-section .wp-block-heading.is-style-eyebrow,
.is-style-green-section .wp-block-heading.is-style-eyebrow {
  color: var(--wp--preset--color--white-60);
}

.is-style-accent-section .wp-block-heading.is-style-eyebrow::before,
.is-style-card-accent-section .wp-block-heading.is-style-eyebrow::before,
.is-style-green-section .wp-block-heading.is-style-eyebrow::before {
  background-color: var(--wp--preset--color--white);
}

/* ─── HEADING: Card heading style ───────────────────────────────────────── */
/*
 * The ::before bar is defined in theme.json but the hover-to-red transition
 * requires knowledge of the parent card being hovered, so it lives here.
 * Targets any card-like container (group, column) that is hovered and
 * contains a card-heading styled heading.
 */
 
.wp-block-group:hover .wp-block-heading.is-style-card-heading::before,
.wp-block-column:hover .wp-block-heading.is-style-card-heading::before {
  /* background: var(--wp--preset--color--red); */
}


/* ─── Columns: remove flow layout margin ────────────────────────────────── */
/*
 * WordPress's .is-layout-flow > * + * rule adds margin-block-start to every
 * sibling, including wp-block-column. Since column spacing is handled by the
 * flex gap on the parent, the margin is redundant and causes a visible top gap.
 */

.wp-block-columns > .wp-block-column {
  margin-block-start: 0;
}

/* ─── Group: Grid style ─────────────────────────────────────────────── */

.wp-block-group.is-style-grid {

    background-color:var(--wp--preset--color--grey-200);
    border: 1px solid var(--wp--preset--color--grey-200);
    display: flex;
    gap: 1px;
    flex-wrap: wrap;

}

.wp-block-group.is-style-grid .wp-block-columns,
.wp-block-group.is-style-grid .wp-block-group  {
    gap: 1px;
    margin: 0;
}

.wp-block-group.is-style-grid .wp-block-column {
    background-color: white;
    padding: var(--wp--preset--spacing--6);
}

.wp-block-column {
    box-sizing: border-box ;
}

/* ─── SEPARATOR: custom background colour ──────────────────────────────── */
/*
 * Core renders the separator line via border-top (hardcoded to black-10 in
 * theme.json). When the editor user picks a custom colour, WordPress applies
 * it as background-color only, leaving the border-top stuck at black-10.
 * Suppress the border-top so the chosen background shows through as the line.
 */
.wp-block-separator.has-background:not(.is-style-dots) {
    border-top: none;
}

/* ─── SEPARATOR: Accent Bar style ──────────────────────────────────────── */

.wp-block-separator.wp-block-separator.is-style-accent-bar {
    width: 32px;
    height: 3px;
    background: var(--accent);
    border: none;
    border-radius: 2px;
    margin-left: 0 !important;
    margin-right: auto !important;
    margin-bottom: var(--wp--preset--spacing--5);
}

/* ─── Number Card ─────────────────────────────────────────────────────── */

/* Default & grey-section: number at 10% black, text at 60% black */
.number-card > p.has-7-font-size {
    color: var(--wp--preset--color--black-10);
}

.number-card > p:not(.has-7-font-size) {
    color: rgba(0, 0, 0, 0.6);
}

/* Red, green & dark sections: separator white, number 10% white, text 60% white */
.is-style-accent-section .number-card > p.has-7-font-size,
.is-style-green-section .number-card > p.has-7-font-size,
.is-style-dark-section .number-card > p.has-7-font-size {
    color: var(--wp--preset--color--white-10);
}

.is-style-accent-section .number-card > p,
.is-style-dark-section .number-card > p {
    color: var(--wp--preset--color--white-60);
}

.is-style-accent-section .number-card .wp-block-separator.wp-block-separator.is-style-accent-bar {
    background: var(--wp--preset--color--white) !important;
}

.is-style-green-section .number-card .wp-block-separator.wp-block-separator.is-style-accent-bar {
    background: var(--wp--preset--color--black) !important;
}

/* ─── QUOTE: Testimonial Card — specificity overrides ─────────────────── */

.wp-block-quote.is-style-testimonial-card cite {
    font-size: var(--wp--preset--font-size--1);
    line-height: 1;
    font-weight: 400;
    color: var(--wp--preset--color--grey-600);
    font-style: normal;
}

.wp-block-quote.is-style-testimonial-card.has-black-background-color p,
.wp-block-quote.is-style-testimonial-card.has-black-background-color cite strong {
    color: var(--wp--preset--color--white);
}

/* Accent section: transparent white background, white border, white text & quote mark */
.is-style-accent-section .wp-block-quote.is-style-testimonial-card,
.is-style-card-accent-section .wp-block-quote.is-style-testimonial-card {
    background: rgba(255, 255, 255, 0.1);
    border-color: rgba(255, 255, 255, 0.25);
}

.is-style-accent-section .wp-block-quote.is-style-testimonial-card::before,
.is-style-card-accent-section .wp-block-quote.is-style-testimonial-card::before,
.is-style-accent-section .wp-block-quote.is-style-testimonial-card cite strong,
.is-style-card-accent-section .wp-block-quote.is-style-testimonial-card cite strong {
    color: var(--wp--preset--color--white);
}

.is-style-accent-section .wp-block-quote.is-style-testimonial-card p,
.is-style-card-accent-section .wp-block-quote.is-style-testimonial-card p {
    color: var(--wp--preset--color--white-88);
}

.is-style-accent-section .wp-block-quote.is-style-testimonial-card cite,
.is-style-card-accent-section .wp-block-quote.is-style-testimonial-card cite {
    color: var(--wp--preset--color--white-60);
}

.is-style-accent-section .wp-block-quote.is-style-testimonial-card cite::before,
.is-style-card-accent-section .wp-block-quote.is-style-testimonial-card cite::before {
    background: var(--wp--preset--color--white);
}

/* ─── Manual Grid: stack on mobile/small tablet ───────────────────────── */
/*
 * Group blocks using the Grid layout with "Manual" item positioning get
 * inline styles on the group (grid-template-columns) and on each child
 * (grid-column / grid-row). These stay fixed at every viewport, so on
 * narrow screens the columns become unusably cramped. Below 768px, force
 * a single column and reset child placements so items stack like the
 * Columns block does. !important is required to beat the inline styles.
 */

@media (max-width: 767px) {
    .wp-block-group.is-layout-grid {
        grid-template-columns: 1fr !important;
        grid-template-rows: auto !important;
    }

    .wp-block-group.is-layout-grid > * {
        grid-column: auto !important;
        grid-row: auto !important;
    }
}

/* ─── Grid span utilities (desktop only) ──────────────────────────────── */

@media (min-width: 768px) {
    .span-col-2 { grid-column: span 2; }
    .span-col-3 { grid-column: span 3; }
    .span-col-4 { grid-column: span 4; }
    .span-col-5 { grid-column: span 5; }
    .span-col-6 { grid-column: span 6; }

    .span-row-2 { grid-row: span 2; }
    .span-row-3 { grid-row: span 3; }
    .span-row-4 { grid-row: span 4; }
    .span-row-5 { grid-row: span 5; }
    .span-row-6 { grid-row: span 6; }
}

/* ─── Article Card ─
───────────────────────────── */
.article-card {

  background: white;
  border: 1px solid var(--wp--preset--color--grey-200);
  border-radius: 6px;
  overflow: hidden;
  transition: box-shadow 0.25s, transform 0.25s;
  text-decoration: none;
  display: flex;
  flex-direction: column;
  height: 100%;

}

.article-card:hover {
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.08);
  transform: translateY(-3px);
}

.article-card__content {

  display: flex;
  flex-direction: column;
  flex-grow: 1;

}

.taxonomy-category.wp-block-post-terms {
  text-transform: uppercase;
  font-size: var(--wp--preset--font-size--1);
  font-weight: 500;
  letter-spacing: 0.1em;
}

.taxonomy-category.wp-block-post-terms a[rel="tag"] {
  text-decoration: none;
  color: var(--accent);
}

.article-card__content .wp-block-post-terms a[rel="tag"]{

  text-decoration: none;
  color: var(--accent);

}

.article-card .wp-block-post-title {
  letter-spacing: 0;
}

.article-card .wp-block-read-more {

  background: transparent;
  color: var(--accent);
  font-weight: 700;
  text-transform: uppercase;
  font-size: var(--wp--preset--font-size--1);
  letter-spacing: 0.08em;
  margin-top: auto;

}

.wp-block-post-excerpt .wp-block-post-excerpt__excerpt {
  font-size: inherit;
}

.article-card .wp-block-post-excerpt__excerpt {

  font-size: var(--wp--preset--font-size--2);
  margin-bottom: var(--wp--preset--spacing--5);

}


/* ─── Yoast Breadcrumb style ──────────────────────────────────────── */
.yoast-breadcrumbs {
  color: var(--wp--preset--color--white-60);
  font-size: var(--wp--preset--font-size--1);
}

.yoast-breadcrumbs > span > span {
  color: var(--wp--preset--color--white);
}

.yoast-breadcrumbs a {

  color: inherit;
  text-decoration: none;
  transition: all 0.3s ease;

}

.yoast-breadcrumbs a:hover {

  color: var(--wp--preset--color--white);

}

.yoast-breadcrumbs .breadcrumb_last {

  color: var(--wp--preset--color--white);
  font-weight: 500;

}

:is(.has-white-background-color, .has-grey-100-background-color, .has-grey-200-background-color)  .yoast-breadcrumbs {

  color: var(--wp--preset--color--black-50);

}

:is(.has-white-background-color, .has-grey-100-background-color, .has-grey-200-background-color)  .yoast-breadcrumbs > span > span {
  color: var(--wp--preset--color--grey-600);
}

:is(.has-white-background-color, .has-grey-100-background-color, .has-grey-200-background-color) .yoast-breadcrumbs .breadcrumb_last {

  color: var(--accent);

}

:is(.has-white-background-color, .has-grey-100-background-color, .has-grey-200-background-color) .yoast-breadcrumbs a:hover {

  color: var(--wp--preset--color--black);

}

/* ─── CATEGORIES: Outline Buttons style ────────────────────────────────── */

.wp-block-categories.is-style-outline-buttons {
  list-style: none;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.wp-block-categories.is-style-outline-buttons li {
  margin: 0;
}

.wp-block-categories.is-style-outline-buttons li a {
  display: inline-block;
  background: transparent;
  color: var(--wp--preset--color--black);
  border: 1px solid var(--wp--preset--color--grey-200);
  border-radius: 3px;
  padding: var(--wp--preset--spacing--3) var(--wp--preset--spacing--5);
  text-decoration: none;
  font-size: 0.65rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  transition: border-color 0.2s ease;
}

.wp-block-categories.is-style-outline-buttons li a:hover,
.wp-block-categories.is-style-outline-buttons li a:focus {
  background: transparent;
  color: var(--wp--preset--color--black);
  border-color: var(--wp--preset--color--grey-600);
}

/* Dark / accent section overrides */
.is-style-dark-section .wp-block-categories.is-style-outline-buttons li a,
.is-style-accent-section .wp-block-categories.is-style-outline-buttons li a,
.is-style-card-accent-section .wp-block-categories.is-style-outline-buttons li a,
.is-style-green-section .wp-block-categories.is-style-outline-buttons li a {
  color: var(--wp--preset--color--white);
  border-color: rgba(255, 255, 255, 0.25);
}

.is-style-dark-section .wp-block-categories.is-style-outline-buttons li a:hover,
.is-style-dark-section .wp-block-categories.is-style-outline-buttons li a:focus,
.is-style-accent-section .wp-block-categories.is-style-outline-buttons li a:hover,
.is-style-accent-section .wp-block-categories.is-style-outline-buttons li a:focus,
.is-style-card-accent-section .wp-block-categories.is-style-outline-buttons li a:hover,
.is-style-card-accent-section .wp-block-categories.is-style-outline-buttons li a:focus,
.is-style-green-section .wp-block-categories.is-style-outline-buttons li a:hover,
.is-style-green-section .wp-block-categories.is-style-outline-buttons li a:focus {
  border-color: rgba(255, 255, 255, 0.55);
  background: transparent;
}

/* ─── Single Post: Meta Row — author block ─────────────────────────────── */

.wp-block-post-author {
  display: flex;
  align-items: center;
}

.wp-block-post-author__avatar img {
  border-radius: 50%;
}

.wp-block-post-author__name {
  font-size: var(--wp--preset--font-size--1);
  font-weight: 700;
}

.wp-block-group.is-style-card-white-section:has(.wp-block-post-navigation-link:empty) {
  display: none;
}

.wp-block-post-navigation-link a {
  text-decoration: none;
  font-weight: 700;
}

/* ─── Job Description: list marker accent colours ─────────────────────── */

.job_description ul,
.job_description ol {
  padding-inline-start: 1em;
}

.job_description li::marker {
  color: var(--accent);
}

.job_description li + li {
  margin-top: var(--wp--preset--spacing--3);
}

/* ─── Job Meta: hide rows with empty values ───────────────────────────── */

.job-meta-row:has(.wp-block-column:last-child:empty) {
  display: none;
}


/* =========================================================
   Gravity Forms — Bridgewater theme overrides
   Scope: only applies inside .gform-theme--framework wrappers
   Strategy: override the framework's own custom properties
   so every nested rule inherits the new values.
   ========================================================= */

/* ---------- 1. Design tokens ---------- */
.gform-theme--framework,
.gform-theme--framework.gform-theme.gform_wrapper {
	/* Brand colours */
	--gf-color-primary: var(--accent);
	--gf-color-primary-contrast: #ffffff;
	--gf-color-primary-contrast-rgb: 255, 255, 255;
	--gf-color-primary-darker: var(--accent-dark);
	--gf-color-primary-lighter: var(--accent-tint);

	/* Field surface */
	--gf-color-in-ctrl: #ffffff;
	--gf-color-in-ctrl-contrast: #1A1A1A;
	--gf-color-in-ctrl-contrast-rgb: 26, 26, 26;
	--gf-color-in-ctrl-primary: var(--accent);
	--gf-color-in-ctrl-primary-contrast: #ffffff;
	--gf-color-in-ctrl-primary-darker: var(--accent-dark);

	/* Outer / muted text and borders */
	--gf-color-out-ctrl-dark: #4A4A4A;
	--gf-color-out-ctrl-dark-darker: #1A1A1A;
	--gf-color-out-ctrl-dark-lighter: #6B6B6B;
	--gf-color-out-ctrl-light: #E5E5E5;
	--gf-color-out-ctrl-light-darker: #CFCFCF;
	--gf-color-out-ctrl-light-lighter: #F5F5F5;

	/* Danger (validation) — keep red but our shade */
	--gf-color-danger: #C0272D;
	--gf-color-danger-rgb: 192, 39, 45;

	/* Typography */
	--gf-font-family-base: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
	--gf-font-family-primary: var(--gf-font-family-base);
	--gf-font-family-secondary: var(--gf-font-family-base);
	--gf-font-family-tertiary: var(--gf-font-family-base);
	--gf-font-size-primary: 16px;
	--gf-font-size-secondary: 15px;
	--gf-font-size-tertiary: 14px;
	--gf-font-weight-secondary: 600;     /* labels */
	--gf-line-height-primary: 1.5;

	/* Form layout */
	--gf-form-gap-y: var(--wp--preset--spacing--4);

	/* Radii — match site (subtle, not pill) */
	--gf-radius: 6px;
	--gf-ctrl-radius: 6px;
	--gf-ctrl-textarea-radius: 6px;
	--gf-ctrl-multiselect-radius: 6px;

	/* Field control */
	--gf-ctrl-size-md: 48px;
	--gf-ctrl-padding-x: 16px;
	--gf-ctrl-border-color: #CFCFCF;
	--gf-ctrl-border-color-hover: #1A1A1A;
	--gf-ctrl-border-color-focus: var(--accent);
	--gf-ctrl-border-width: 1px;
	--gf-ctrl-shadow: none;
	--gf-ctrl-color: #1A1A1A;
	--gf-ctrl-placeholder-color: #6B6B6B;
	--gf-ctrl-outline-color-focus: color-mix(in srgb, var(--accent) 25%, transparent);
	--gf-ctrl-outline-width-focus: 3px;
	--gf-ctrl-outline-offset: 0;

	/* Labels */
	--gf-ctrl-label-color-primary: #1A1A1A;
	--gf-ctrl-label-font-weight-primary: 600;
	--gf-ctrl-label-color-req: #C0272D;
	--gf-label-space-primary: 8px;

	/* Buttons */
	--gf-ctrl-btn-radius: 6px;
	--gf-ctrl-btn-size-md: 52px;
	--gf-ctrl-btn-padding-x-md: 28px;
	--gf-ctrl-btn-font-size-md: 16px;
	--gf-ctrl-btn-font-weight: 700;
	--gf-ctrl-btn-letter-spacing: 0.01em;
	--gf-ctrl-btn-shadow: none;
	--gf-ctrl-btn-shadow-hover: none;

	/* Validation summary block */
	--gf-form-validation-radius: 6px;
	--gf-form-validation-bg-color: rgba(192, 39, 45, 0.04);
	--gf-form-validation-border-color: rgba(192, 39, 45, 0.30);
}

/* ---------- 2. Form-wide font (framework hardcodes inherit, but be safe) ---------- */
.gform-theme--framework.gform_wrapper,
.gform-theme--framework.gform_wrapper input,
.gform-theme--framework.gform_wrapper select,
.gform-theme--framework.gform_wrapper textarea,
.gform-theme--framework.gform_wrapper button {
	font-family: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
}

/* ---------- 3. Field focus ring — framework default offset is 1px outside,
       which can clash with sibling fields. Tighten and recolour. ---------- */
.gform-theme--framework input[type]:where(:not(.gform-text-input-reset):not([type=hidden])):focus,
.gform-theme--framework select:focus,
.gform-theme--framework textarea:focus {
	box-shadow: 0 0 0 3px rgba(192, 39, 45, 0.18);
}

/* ---------- 4. The "I am a…" select — framework's chevron icon is grey;
       give it our colour without rewriting the SVG ---------- */
.gform-theme--framework select:where(:not([multiple])) {
	background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%231A1A1A' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-size: 12px 8px;
}

/* ---------- 5. Submit button — primary brand, full transition ---------- */
/* Gravity Forms sets --gf-color-primary per-form via an ID selector, so we
   must use !important on the actual properties to ensure the accent colour wins. */
.gform-theme--framework.gform-theme.gform_wrapper input[type=submit].button.gform_button {
	background-color: var(--accent) !important;
	color: #fff !important;
	border: 1px solid var(--accent) !important;
	transition: background-color 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
}
.gform-theme--framework.gform-theme.gform_wrapper input[type=submit].button.gform_button:hover {
	background-color: var(--accent-dark) !important;
	border-color: var(--accent-dark) !important;
}
.gform-theme--framework.gform-theme.gform_wrapper input[type=submit].button.gform_button:focus-visible {
	outline: 3px solid color-mix(in srgb, var(--accent) 35%, transparent);
	outline-offset: 2px;
}

/* ---------- 6. Footer button alignment (left by default; remove if you want centred) ---------- */
.gform-theme--framework .gform-footer.gform_footer {
	padding-block-start: 8px;
}

/* ---------- 7. Required asterisk: sit closer to label, lighter weight ---------- */
.gform-theme--framework .gfield_required {
	font-weight: 500;
	margin-inline-start: 4px;
}
.gform-theme--framework .gfield_required_text {
	font-size: 13px;
	color: #6B6B6B;
}

/* ---------- 8. Sub-labels (First / Last under Name) ---------- */
.gform-theme--framework .gform-field-label--type-sub {
	font-size: 13px;
	font-weight: 500;
	color: #6B6B6B;
	margin-block-start: 6px;
}

/* ---------- 9. File upload: framework draws a dashed dropzone for HTML5 uploads;
       the basic input[type=file] (your form) just needs the button styled. ---------- */
.gform-theme--framework input[type=file]::file-selector-button {
	background-color: #F5F5F5;
	color: #1A1A1A;
	font-weight: 600;
	border-inline-end: 1px solid #CFCFCF;
}
.gform-theme--framework input[type=file]:hover::file-selector-button {
	background-color: #ECECEC;
}

/* ---------- 10. Validation message — framework uses --gf-color-danger which we set,
       but pin the icon circle so it doesn't get a red tint we don't want ---------- */
.gform-theme--framework .gform_validation_errors .gform-icon {
	background-color: rgba(192, 39, 45, 0.08);
}

/* ---------- 11. Field error state — currently relies on --gf-color-danger.
       Add a faint red field background for clearer error scanning. ---------- */
.gform-theme--framework .gfield_error input[type]:where(:not(.gform-text-input-reset):not([type=hidden])),
.gform-theme--framework .gfield_error select,
.gform-theme--framework .gfield_error textarea {
	background-color: rgba(192, 39, 45, 0.03);
}

/* ---------- 12. Spacing between stacked fields — framework default is tight ---------- */
.gform-theme--framework .gform_fields {
	row-gap: 20px;
}

/* ─── Header: Submenu dropdown ────────────────────────────────────────── */

/* Desktop dropdown */
.wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__submenu-container {
  background: var(--wp--preset--color--white);
  border: none;
  border-radius: 0 0 8px 8px;
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.10), 0 1px 4px rgba(0, 0, 0, 0.06);
  padding: 0.5rem 0;
  margin-top: 0;
  min-width: 200px;
  overflow: hidden;
  animation: submenu-fade-in 0.18s ease;
  border-top: 3px solid var(--accent);
}

.wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  padding: 0.6rem 1.25rem;
  display: block;
  transition: background-color 0.15s ease, color 0.15s ease;
  color: var(--wp--preset--color--black);
}

.wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
.wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus {
  background-color: var(--accent-tint, rgba(0, 0, 0, 0.04));
  color: var(--accent);
}

/* Mobile submenu — flat inline list, no card styling */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
  background: transparent;
  border: none;
  border-radius: 0;
  box-shadow: none;
  padding: 0;
  margin: 0;
  min-width: 0;
  animation: none;
}

@keyframes submenu-fade-in {
  from {
    opacity: 0;
    transform: translateY(-4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ─── Header: Contact button ──────────────────────────────────────────── */

.wp-block-navigation__responsive-container:not(.is-menu-open) .menu-item--contact .wp-block-navigation-item__content {
  background-color: var(--wp--preset--color--red);
  color: var(--wp--preset--color--white) !important;
  padding: 0.5rem 1.25rem;
  border-radius: 6px;
  transition: background-color 0.18s ease;
}

.wp-block-navigation__responsive-container:not(.is-menu-open) .menu-item--contact .wp-block-navigation-item__content:hover,
.wp-block-navigation__responsive-container:not(.is-menu-open) .menu-item--contact .wp-block-navigation-item__content:focus {
  background-color: var(--wp--preset--color--red-dark);
}

/* ─── Header: Nav link hover & current page ──────────────────────────── */

.wp-block-navigation .wp-block-navigation-item__content:hover,
.wp-block-navigation .wp-block-navigation-item__content:focus {
  color: var(--accent);
}

.wp-block-navigation .current-menu-item > .wp-block-navigation-item__content {
  color: var(--accent);
}
