/* ── Elementor bridge ──────────────────────────────────────────────────────
   Adapts Elementor's wrapper markup to the prototype stylesheet. Filled in Task 9.
   Spike findings (Elementor 4.2.4, 2026-09-08):
   - Container CSS-class control is `css_classes`; widget control is `_css_classes`.
   - Optimized markup is on: no .elementor-widget-container wrapper; widget wrapper is
     <div class="elementor-element w-* elementor-widget elementor-widget-<type>"> with the
     inner element (h2.elementor-heading-title / <p> / a.elementor-button / img) directly inside.
   - Containers render as <section|div|a class="elementor-element e-con-full <classes> e-flex e-con">.
   - Global colour/typography schemes are disabled, so per-element CSS only carries --display:flex.
   - Stylesheet order: elementor-frontend → kit post-6.css → styles.css → bridge → post-<page>.css. */

/* Marker classes emitted by generate.py:
     .e-con.w-con                  prototype block-level wrapper/section (class on the container itself)
     .elementor-widget.w-heading / .w-text / .w-rich / .w-btn / .w-image / .w-html
     .w-noclass + .w-h2/.w-p     the prototype element had no class (bridge restates :not([class]) rules)
     .w-bare (+ .w-raw)          no class and no inline style: wrapper vanishes, inner element is styled
   How it works: functions.php loads Elementor's base CSS inside @layer elementor, so any unlayered rule
   (prototype styles.css, this file) wins regardless of specificity. Defaults below use :where() (zero
   specificity) so every prototype rule beats them; `revert` restores user-agent values. */
@layer elementor;

/* 1. Containers: plain block boxes by default; prototype classes supply layout. */
:where(.e-con.w-con) {
  display: block; position: static; width: auto; max-width: none; min-width: auto; min-height: auto; height: auto;
  padding: 0; margin: 0; gap: 0; overflow: visible; text-align: start;
  flex-direction: row; flex-wrap: nowrap; justify-content: normal; align-items: normal; align-content: normal;
  flex: 0 1 auto; align-self: auto; order: 0;
}

/* 2. Widget wrappers: transparent boxes carrying the prototype class. */
:where(.w-heading, .w-text, .w-rich, .w-btn, .w-image, .w-html) {
  position: static; width: auto; max-width: none; min-width: auto; min-height: auto; margin: 0; padding: 0;
}

/* 3. Classed headings/text: the inner element inherits everything from the wrapper. */
:where(.w-heading:not(.w-bare) > .elementor-heading-title, .w-text:not(.w-bare) > p) {
  font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; line-height: inherit;
  text-align: inherit; text-shadow: inherit; text-wrap: inherit; margin: 0; padding: 0; max-width: none;
}

/* 4. Bare elements: wrapper vanishes; inner element gets UA defaults + prototype descendant rules. */
body:not(.elementor-editor-active) :where(.w-bare) { display: contents; }
:where(.w-bare.w-heading > .elementor-heading-title, .w-bare.w-text > p) {
  margin: revert; padding: revert; line-height: revert; font-size: revert; font-weight: revert;
}
/* Prototype rule `h1:not([class]), h2:not([class]), h3:not([class])` can't match Elementor's classed
   inner heading; restate it on the wrapper (inherited), where a generated inline-style class still overrides it. */
:where(.w-noclass.w-h1, .w-noclass.w-h2, .w-noclass.w-h3) { font-family: var(--font-serif); letter-spacing: 0; }

/* 5. Rich text blocks keep UA spacing on their children (Elementor's widget CSS is layered away). */
:where(.w-rich :is(p, h1, h2, h3, h4, h5, h6, ul, ol, li, blockquote, hr)) { margin: revert; padding: revert; }

/* 6. Buttons: wrapper is the visual button; the <a> overlays the whole wrapper. */
:where(.w-btn) { position: relative; }
:where(.w-btn .elementor-button-wrapper) { display: contents; }
:where(.w-btn .elementor-button) { all: unset; cursor: pointer; }
.w-btn .elementor-button::after { content: ""; position: absolute; inset: 0; }
:where(.w-btn .elementor-button-content-wrapper, .w-btn .elementor-button-text) { display: inline; }
.w-btn:focus-within { outline: 2px solid var(--accent); outline-offset: 3px; }
/* The prototype styles the <a> itself; here the <a> sits inside the wrapper, so its text never underlines. */
.w-btn .elementor-button, .w-btn .elementor-button-text { text-decoration: none; }

/* 7. Images, HTML widgets and whole lists: wrappers disappear on the frontend so the inner element
   is a direct child of the prototype container (needed for absolute/overlay/grid children, and so a
   <ul>/<ol> that is itself a grid is not boxed inside a wrapper). */
body:not(.elementor-editor-active) :where(.w-image, .w-html, .w-list) { display: contents; }
/* The Shortcode widget adds an inner div; it must vanish too, or an empty shortcode still takes a grid cell. */
body:not(.elementor-editor-active) :where(.w-html > .elementor-shortcode) { display: contents; }
.elementor-editor-active .w-image { text-align: inherit; }

/* 7a. Native widgets generated from prototype blocks that used to ship as raw HTML.
   FAQ: the Accordion widget (.w-faq) is restyled as the prototype's <details class="faq-item">;
   Elementor's own accordion CSS is layered away, so only the properties it sets need restating. */
.w-faq { width: auto; }
.w-faq .e-n-accordion { display: block; }
.w-faq .e-n-accordion-item { display: block; position: static; padding: 24px 0; margin: 0; border: none; border-bottom: 1px solid var(--rule); }
.faq-group .w-faq .e-n-accordion-item:last-child { border-bottom: none; } /* the group below draws its own top rule */
.w-faq .e-n-accordion-item-title {
  font-family: var(--font-display); font-size: 22px; font-weight: 600; cursor: pointer; line-height: 1.3;
  display: flex; justify-content: space-between; align-items: center; gap: 0;
  padding: 0; margin: 0; border: none; background: none; color: inherit; overflow-wrap: break-word;
}
.w-faq .e-n-accordion-item-title-header { display: contents; }
.w-faq .e-n-accordion-item-title-text { font: inherit; color: inherit; margin: 0; padding: 0; }
.w-faq .e-n-accordion-item-title::after { content: '+'; color: var(--accent); font-family: var(--font-mono); font-size: 14px; flex-shrink: 0; margin-left: 16px; }
.w-faq .e-n-accordion-item[open] > .e-n-accordion-item-title::after { content: '−'; }
.w-faq .e-n-accordion-item-title:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.w-faq .e-n-accordion-item > .e-con { display: block; padding: 0; margin: 0; border: none; }
.w-faq .e-n-accordion-item p { font-size: 17px; line-height: 1.6; color: var(--muted); margin: 16px 0 0; max-width: 720px; }
/* The header logo is an Image widget: the prototype's .logo-full class lands on the wrapper, so its
   sizing is restated on the <img> inside (an SVG with only a viewBox has no size of its own). */
.site-header .logo-full > img { display: block; height: 54px; width: auto; }
.site-header.is-scrolled .logo-full > img { height: 44px; }
@media (max-width: 900px) { .site-header .logo-full > img, .site-header.is-scrolled .logo-full > img { height: 42px; } }
/* Video cards: the poster <button> is a linked container; the poster image sits inside a
   (display: contents) Image widget, so the prototype's child selector is restated here. */
a.w-con.video-card { text-decoration: none; }
.video-card .w-image > img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* 7b. Elementor Pro Theme Builder header and footer. The templates are generated from the
   prototype's <header>/<footer>, so .site-header/.site-footer keep styling them; only the
   navigation is Pro's Nav Menu widget, whose markup is restated here in the prototype's terms. */
.elementor-location-header { position: sticky; top: 0; z-index: 100; }
.site-header.e-con { display: flex; justify-content: space-between; align-items: center; }
.site-header .w-nav, .site-footer .w-nav { width: auto; }
.site-header .elementor-nav-menu--main .elementor-nav-menu { display: flex; gap: 26px; align-items: center; margin: 0; padding: 0; list-style: none; }
.site-header .elementor-nav-menu--main .elementor-nav-menu li { position: relative; margin: 0; }
.site-header .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item {
  display: inline-flex; align-items: center; gap: 6px; position: relative; white-space: nowrap;
  color: rgba(255,255,255,0.88); text-decoration: none; text-transform: uppercase; letter-spacing: 0.09em;
  font-family: var(--font-sans); font-size: 12.5px; font-weight: 500; line-height: 1.2; padding: 0 0 5px;
  transition: color var(--dur) var(--ease);
}
.site-header .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item::after {
  content: ""; position: absolute; left: 0; bottom: 0; height: 1.5px; width: 100%; background: var(--blue);
  transform: scaleX(0); transform-origin: left; transition: transform var(--dur) var(--ease);
}
.site-header .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item:hover,
.site-header .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item.elementor-item-active { color: #fff; }
.site-header .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item:hover::after,
.site-header .elementor-nav-menu--main .elementor-nav-menu > li > a.elementor-item.elementor-item-active::after { transform: scaleX(1); }
.site-header .elementor-nav-menu--main .sub-arrow { display: inline-flex; font-size: 9px; line-height: 1; }
/* Pro's dropdown chevron is an inline SVG with a black fill; on the teal header it has to be white. */
.site-header .sub-arrow svg { fill: #fff; width: 10px; height: 10px; }
/* Visibility and position of the sub-menu are Pro's (SmartMenus toggles them inline); only the look is ours.
   Sub-menu links carry elementor-sub-item, not elementor-item, so the rules match any link in the list. */
.site-header .elementor-nav-menu--main .sub-menu {
  min-width: 210px; margin: 0; padding: 8px; list-style: none;
  background: var(--ink); border: 1px solid rgba(160,181,193,0.24); box-shadow: var(--shadow-md); z-index: 120;
}
.site-header .elementor-nav-menu--main .sub-menu li + li { margin-top: 2px; }
.site-header .elementor-nav-menu--main .sub-menu a {
  display: block; padding: 10px 12px; color: rgba(255,255,255,0.88); text-decoration: none;
  font-family: var(--font-sans); font-size: 12.5px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.09em; line-height: 1.2;
}
.site-header .elementor-nav-menu--main .sub-menu a:hover { background: rgba(160,181,193,0.14); color: #fff; }
/* The CTA: Pro puts nav-cta on the <li>, so styles.css's .site-header .nav-cta rule (written for the
   prototype's <a>) would paint the list item as well as the link, one box inside another. The item is
   reset here and the link alone is the red button, like every other call to action on the site. */
.site-header .elementor-nav-menu--main li.nav-cta { background: none; padding: 0; box-shadow: none; transform: none; }
.site-header .elementor-nav-menu--main li.nav-cta > a.elementor-item {
  background: var(--accent); color: #fff; padding: 11px 18px; font-size: 11.5px; font-weight: 600; letter-spacing: 0.1em;
  transition: background var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.site-header .elementor-nav-menu--main li.nav-cta > a.elementor-item::after { display: none; }
.site-header .elementor-nav-menu--main li.nav-cta > a.elementor-item:hover { background: var(--accent-deep); box-shadow: var(--shadow-md); }
/* Pro's hamburger and dropdown, dressed as the prototype's Menu button and .mobile-nav. */
.site-header .elementor-menu-toggle {
  border: 1px solid rgba(255,255,255,0.5); border-radius: 0; color: #fff; background: none; padding: 9px 14px;
  font-family: var(--font-sans); font-size: 12px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase;
}
.site-header .elementor-menu-toggle:hover, .site-header .elementor-menu-toggle.elementor-active { color: #fff; }
/* The prototype hides `.site-header nav` under 900px for its own mobile menu; Pro's dropdown is a
   <nav> in the header too, so restate which of Pro's two navs shows at each width (Pro's own rules
   for this sit in the layer and would lose). Pro collapses/expands the dropdown with max-height. */
.site-header nav.elementor-nav-menu--dropdown { display: none; }
@media (max-width: 1024px) {
  .site-header nav.elementor-nav-menu--main { display: none; }
  .site-header nav.elementor-nav-menu--dropdown { display: block; }
}
.site-header nav.elementor-nav-menu--dropdown { background: var(--ink); border-top: 1px solid rgba(160,181,193,0.24); gap: 0; }
.site-header nav.elementor-nav-menu--dropdown .elementor-nav-menu, .site-header nav.elementor-nav-menu--dropdown .sub-menu { margin: 0; padding: 0; list-style: none; }
.site-header nav.elementor-nav-menu--dropdown a {
  display: flex; justify-content: space-between; align-items: center; padding: 14px 20px;
  color: rgba(255,255,255,0.9); text-decoration: none; text-transform: uppercase; letter-spacing: 0.09em;
  font-family: var(--font-sans); font-size: 13px; font-weight: 500; border-bottom: 1px solid rgba(160,181,193,0.2);
}
.site-header nav.elementor-nav-menu--dropdown .sub-menu a { padding-left: 36px; color: var(--blue); }
.site-header nav.elementor-nav-menu--dropdown li.nav-cta > a.elementor-item { color: var(--blue); font-weight: 600; }
/* Review round 1: the hamburger is a full-size white icon; open sub-menus and the active item keep the
   dark palette (Pro's defaults were a white panel and a grey highlight). */
.site-header .elementor-menu-toggle { border-color: rgba(255,255,255,0.8); padding: 9px 11px; }
.site-header .elementor-menu-toggle svg { width: 22px; height: 22px; fill: #fff; }
.site-header nav.elementor-nav-menu--dropdown .sub-menu { background: rgba(0,0,0,0.22); }
.site-header nav.elementor-nav-menu--dropdown .sub-menu a { color: rgba(255,255,255,0.9); background: transparent; }
.site-header nav.elementor-nav-menu--dropdown a.highlighted, .site-header nav.elementor-nav-menu--dropdown a:hover,
.site-header nav.elementor-nav-menu--dropdown a:focus-visible { background: rgba(160,181,193,0.18); color: #fff; }
.site-header nav.elementor-nav-menu--dropdown li.nav-cta { background: none; padding: 0; }
.site-header nav.elementor-nav-menu--dropdown li.nav-cta > a.elementor-item { background: var(--accent); color: #fff; }
/* "All services" / "All resources" exist for the phone menu, where the parent row only toggles its
   sub-menu; on desktop the parent link itself opens the hub, so the duplicates stay hidden. */
.site-header .elementor-nav-menu--main li.nav-overview { display: none; }
/* In the phone menu SmartMenus opens a sub-menu on the first tap of the parent and follows the link on
   the second; only the arrow collapses it. Pro's arrow was a 10px icon, so the arrow is now a full-height
   56px tap target on the right of the row and turns over while the sub-menu is open. */
.site-header nav.elementor-nav-menu--dropdown a.has-submenu { position: relative; padding-right: 72px; }
.site-header nav.elementor-nav-menu--dropdown .sub-arrow {
  position: absolute; top: 0; right: 0; bottom: 0; width: 56px; margin: 0;
  display: flex; align-items: center; justify-content: center; border-left: 1px solid rgba(160,181,193,0.2);
}
.site-header nav.elementor-nav-menu--dropdown .sub-arrow svg { width: 14px; height: 14px; transition: transform var(--dur) var(--ease); }
.site-header nav.elementor-nav-menu--dropdown a.highlighted .sub-arrow svg,
.site-header nav.elementor-nav-menu--dropdown li:has(> .sub-menu[style*="display: block"]) > a .sub-arrow svg { transform: rotate(180deg); }
/* Footer link columns as vertical menus. */
.site-footer .w-nav .elementor-nav-menu { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.site-footer .w-nav .elementor-nav-menu li { margin: 0; }
.site-footer .w-nav a.elementor-item { display: inline; padding: 0; color: inherit; text-decoration: none; font-size: 13px; line-height: 1.6; }
.site-footer .w-nav a.elementor-item:hover { color: #fff; }

/* 7c. Resource templates in Elementor Pro (loop items, singles, archive pages). The generated
   structure carries the prototype's classes; this maps Pro's Loop Grid and Taxonomy Filter
   markup onto the prototype's archive rules. */
.e-loop-item { display: block; }
.e-loop-item > .e-con.guide-card, .e-loop-item > .e-con.story-card, .e-loop-item > .e-con.news-entry { height: 100%; }
.archive-toolbar .e-filter { display: flex; flex-wrap: wrap; gap: 8px; flex: 1 1 auto; min-width: 0; max-width: 100%; }
.archive-toolbar .e-filter-item[data-filter="__all"] { order: -1; }
.archive-toolbar .e-filter-item {
  font: inherit; font-size: 15px; font-weight: 500; padding: 8px 16px; cursor: pointer;
  background: transparent; border: 1px solid var(--rule-strong); color: var(--muted); border-radius: 100px;
  transition: background var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease);
}
.archive-toolbar .e-filter-item:hover { border-color: var(--ink); color: var(--ink); }
.archive-toolbar .e-filter-item[aria-pressed="true"], .archive-toolbar .e-filter-item.e-active { background: var(--ink); border-color: var(--ink); color: #fff; }
.archive-toolbar .e-filter-item:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
.archive-news .e-loop-item + .e-loop-item .news-entry { padding-top: 0; }
/* Each entry is the only child of its loop item, so the prototype's `.news-entry:last-child`
   (no bottom padding on the final entry) matched every entry and the list ran together. */
.e-loop-item > .news-entry { padding-bottom: 40px; }
.e-loop-item:last-child > .news-entry { padding-bottom: 0; }
/* Resources hub: two Loop Grids inside the prototype's 2fr 1fr 1fr featured block. */
.resources-featured > .w-loop-hub-main { grid-column: 1; }
.resources-featured > .w-loop-hub-sm { grid-column: 2 / 4; }
.e-loop-item > .e-con.resource-card-main, .e-loop-item > .e-con.resource-card-sm, .e-loop-item > .e-con.news-item { height: 100%; }
.e-loop-item > .e-con.news-item { height: auto; }
@media (max-width: 900px) {
  .resources-featured > .w-loop-hub-main, .resources-featured > .w-loop-hub-sm { grid-column: auto; }
}
.w-text.article-intro > p, .w-text.guide-card-p > p, .w-text.news-entry-p > p { margin: 0; }

/* 8. Elementor resets the prototype relied on the UA for. */
:where(.elementor a) { text-decoration: revert; }
:where(.elementor img) { height: revert; border-radius: revert; }

/* 9. Gravity Forms — dressed as the prototype's .contact-form.
   GF's own stylesheets sit in the `gforms` cascade layer (see functions.php), so these
   unlayered rules win without needing !important or selector escalation. */
.w270-gf .gform_wrapper { margin: 0; }
.w270-gf .gform_fields { display: grid; grid-template-columns: repeat(12, 1fr); column-gap: 20px; row-gap: 0; }
.w270-gf .gfield { grid-column: 1 / -1; padding: 0 0 20px; border: none; min-width: 0; }
.w270-gf .gfield--width-half { grid-column: span 6; }
@media (max-width: 700px) { .w270-gf .gfield--width-half { grid-column: 1 / -1; } }

.w270-gf .gfield_label,
.w270-gf .gform-field-label {
  display: block; font-family: var(--font-sans); font-size: 16px; font-weight: 600;
  letter-spacing: 0; text-transform: none; color: var(--ink); margin: 0 0 8px; padding: 0;
}
.w270-gf legend.gfield_label { float: none; width: auto; }
.w270-gf .gfield_required { color: var(--muted); font-weight: 400; }
.w270-gf .gfield_required_text { font-size: 14px; }
.w270-gf .gfield_description { font-size: 15px; line-height: 1.5; color: var(--muted); padding: 6px 0 0; }

/* Sub-labels (First / Last) sit under their input, small and quiet. */
.w270-gf .ginput_complex { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; }
.w270-gf .ginput_complex > span { display: block; min-width: 0; }
.w270-gf .ginput_complex label {
  font-size: 14px; font-weight: 400; color: var(--muted); margin: 6px 0 0; text-transform: none; letter-spacing: 0;
}
@media (max-width: 700px) { .w270-gf .ginput_complex { grid-template-columns: 1fr; } }

.w270-gf input[type="text"], .w270-gf input[type="email"], .w270-gf input[type="tel"],
.w270-gf input[type="number"], .w270-gf input[type="url"], .w270-gf select, .w270-gf textarea {
  display: block; width: 100%; box-sizing: border-box; padding: 14px 16px;
  border: 1.5px solid #7C8C8F; border-radius: 6px; background: #fff;
  font: inherit; font-size: 17px; line-height: 1.4; color: var(--ink); height: auto;
  transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.w270-gf input::placeholder, .w270-gf textarea::placeholder { color: #66777A; }
.w270-gf input:hover, .w270-gf select:hover, .w270-gf textarea:hover { border-color: var(--ink); }
.w270-gf input:focus, .w270-gf select:focus, .w270-gf textarea:focus {
  outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px rgba(162,34,34,0.28);
}
.w270-gf select {
  -webkit-appearance: none; appearance: none; padding-right: 44px;
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%231A3A3F' stroke-width='1.8'/%3E%3C/svg%3E") no-repeat right 16px center;
}
.w270-gf textarea { resize: vertical; min-height: 140px; }

/* Consent: checkbox beside its wrapping sentence, not stacked. */
.w270-gf .ginput_container_consent { display: flex; align-items: flex-start; gap: 12px; }
.w270-gf .ginput_container_consent input[type="checkbox"] {
  flex: none; width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--ink);
}
.w270-gf .gfield_consent_label, .w270-gf .gform-field-label--type-inline {
  font-size: 16px; font-weight: 400; line-height: 1.5; color: var(--muted); margin: 0;
}

/* Submit: the prototype's .btn-accent. */
.w270-gf .gform_footer { margin: 4px 0 0; padding: 0; }
.w270-gf .gform_button {
  background: var(--accent); color: #fff; padding: 18px 32px; width: auto;
  font-family: var(--font-sans); font-size: 14px; font-weight: 600; letter-spacing: 0.06em;
  text-transform: uppercase; border: none; border-radius: 0; cursor: pointer;
  box-shadow: var(--shadow-sm);
  transition: background var(--dur) var(--ease), box-shadow var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.w270-gf .gform_button:hover { background: var(--accent-deep); box-shadow: var(--shadow-md); transform: translateY(-2px); }
.w270-gf .gform_button:active { transform: translateY(0); }
.w270-gf .gform_button:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }

/* Validation + confirmation in the brand voice rather than GF's default red slab. */
.w270-gf .gform_validation_errors {
  background: rgba(162,34,34,0.06); border: 1px solid var(--accent); border-radius: 6px;
  padding: 16px 20px; margin: 0 0 24px; box-shadow: none;
}
.w270-gf .gform_validation_errors h2 { font-family: var(--font-sans); font-size: 16px; font-weight: 600; color: var(--accent); margin: 0; }
.w270-gf .gfield_error input, .w270-gf .gfield_error select, .w270-gf .gfield_error textarea { border-color: var(--accent); }
.w270-gf .validation_message {
  background: none; border: none; padding: 6px 0 0; font-size: 15px; color: var(--accent);
}
.w270-gf .gform_confirmation_message {
  font-family: var(--font-serif); font-size: 24px; line-height: 1.35; color: var(--ink); padding: 8px 0;
}

/* The landing-page form card is tighter than the full-width contact page. */
.lp-form.w270-gf .gfield { padding-bottom: 16px; }
.lp-form.w270-gf .gform_button { width: 100%; justify-content: center; }

/* Reserve two lines for every half-width label, so one that wraps ("Province of Residence")
   keeps its input level with the field beside it — in the error state too, where uneven
   validation messages would otherwise knock a row out of step. */
.w270-gf .gfield_label, .w270-gf .gform-field-label { line-height: 1.3; }
@media (min-width: 701px) {
  .w270-gf .gfield--width-half > .gfield_label { min-height: 2.6em; }
}

/* GF places the name sub-labels above the inputs on these forms. */
.w270-gf .field_sublabel_above .ginput_complex label { margin: 0 0 6px; }
.w270-gf .field_sublabel_below .ginput_complex label { margin: 6px 0 0; }

/* The reassurance line the prototype ran beside the submit button. */
.w270-gf-note p { font-size: 15px; line-height: 1.5; color: var(--muted); margin: 14px 0 0; }

/* WordPress swaps emoji for <img class="emoji"> SVGs; they must stay text-sized wherever they appear. */
img.emoji, img.wp-smiley { display: inline !important; width: 1em !important; height: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; border: none !important; box-shadow: none !important; background: none !important; padding: 0 !important; }
