/*!
Theme Name: Atlantic Glass
Theme URI: https://atlanticglass.net/
Author: SmartSites
Author URI: https://www.smartsites.com/
Description: Custom WordPress theme for Atlantic Glass — residential, commercial and storefront glass, Wilmington NC.
Version: 0.1.0
Tested up to: 6.7
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: LICENSE
Text Domain: atlanticglass_theme
Tags:

This theme, like WordPress, is licensed under the GPL.

Atlantic Glass is based on _tw https://underscoretw.com/, (C) 2021-2024 Greg Sullivan
_tw is distributed under the terms of the GNU GPL v2 or later.

_tw is based on Underscores https://underscores.me/ and Varia https://github.com/Automattic/themes/tree/master/varia, (C) 2012-2023 Automattic, Inc.
Underscores and Varia are distributed under the terms of the GNU GPL v2 or later.
*/

/**
 * `Version` above is cosmetic. The real version is the
 * ATLANTICGLASS_THEME_VERSION constant in functions.php, which
 * node_scripts/zip.js replaces with a base36 timestamp on `npm run bundle`.
 */

/**
 * The line above injects the WordPress file header. It must be first, before
 * this comment — WordPress only reads a theme header at the very top of
 * style.css.
 */

/**
 * @font-face declarations + the icon-font glyph map.
 * Paths are relative to the BUILD OUTPUT (theme/style.css), so `fonts/x.woff2`
 * resolves to theme/fonts/x.woff2.
 */

/* ═══════════════════════════════════════════════════════════════════════════
 * TEXT FONT — Poppins, and nothing else.
 *
 * The design uses a single family across every role. Weights it actually uses:
 *   300 Light     body copy, why-choose-us list items
 *   400 Regular   eyebrows, form labels, legal/consent copy
 *   500 Medium    all headings, buttons, card titles, text links
 *   600 SemiBold  announcement bar, step numerals
 *   700 Bold      hero phone number, "4.9/5 Google Rating"
 * No italics are used anywhere in the design — none are loaded.
 *
 * CURRENTLY DELIVERED VIA GOOGLE FONTS, wired in theme/header.php.
 * Deliberately NOT an @import here: a remote @import blocks rendering and
 * breaks postcss-import.
 *
 *   <link rel="preconnect" href="https://fonts.googleapis.com">
 *   <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
 *   <link rel="stylesheet"
 *     href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap">
 *
 * TODO before launch: self-host as .woff2 in theme/fonts/ and preload the two
 * render-blocking faces (Poppins 300 for body, 500 for headings). Faster, no
 * third-party origin, no GDPR question. Replace this block with real
 * @font-face rules at that point.
 * ═══════════════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════════════
 * ICON FONT (icomoon)
 *
 * TODO: no icomoon export received yet. Uncomment once theme/fonts/icomoon.*
 * exist, then paste the glyph map below.
 *
 * font-display: block — NOT swap. With swap, every icon flashes as a random
 * Latin letter before the font loads.
 *
 * Icons this design needs (read from the homepage frame; all are currently
 * exported SVGs in Figma, not glyphs):
 *   long right arrow           link affordance on every button and text link
 *   arrow-up rotated 90°       "Explore Service" card links      (10911:148)
 *   phone                      header CTA + hero + footer
 *   envelope                   footer
 *   location pin               footer
 *   star (filled)              hero rating row                   (10911:98)
 *   quote mark                 testimonials                      (10911:221)
 *   chevron                    accordion / tabs / country select
 *   announcement-bar glyph     (10911:371)
 *
 * ⚠ Export the set ONCE and commit selection.json. Re-exporting from scratch
 *   renumbers codepoints and silently breaks every content-['\eXXX'] rule.
 * ═══════════════════════════════════════════════════════════════════════════ */

/*
@font-face {
	font-family: 'icomoon';
	src: url('fonts/icomoon.woff2?v=1') format('woff2'),
		url('fonts/icomoon.woff?v=1') format('woff');
	font-weight: normal;
	font-style: normal;
	font-display: block;
}
*/

/*
 * The !important defends against browser extensions and user stylesheets that
 * override font-family globally, which would turn every icon into gibberish.
 */

[class^="icon-"],
[class*=" icon-"] {
  font-family: "icomoon" !important;
  speak: never;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ── GLYPH MAP ───────────────────────────────────────────────────────────────
 * Paste from the icomoon download's style.css, sorted by name.
 * Keep this list in sync with codepoints referenced from component CSS.
 * ─────────────────────────────────────────────────────────────────────────── */

*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*/

/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box;
  /* 1 */
  border-width: 0;
  /* 2 */
  border-style: solid;
  /* 2 */
  border-color: #e5e7eb;
  /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
  -moz-tab-size: 4;
  /* 3 */
  -o-tab-size: 4;
     tab-size: 4;
  /* 3 */
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  /* 4 */
  font-feature-settings: normal;
  /* 5 */
  font-variation-settings: normal;
  /* 6 */
  -webkit-tap-highlight-color: transparent;
  /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0;
  /* 1 */
  line-height: inherit;
  /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0;
  /* 1 */
  color: inherit;
  /* 2 */
  border-top-width: 1px;
  /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  /* 1 */
  font-feature-settings: normal;
  /* 2 */
  font-variation-settings: normal;
  /* 3 */
  font-size: 1em;
  /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0;
  /* 1 */
  border-color: inherit;
  /* 2 */
  border-collapse: collapse;
  /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
  /* 1 */
  font-feature-settings: inherit;
  /* 1 */
  font-variation-settings: inherit;
  /* 1 */
  font-size: 100%;
  /* 1 */
  font-weight: inherit;
  /* 1 */
  line-height: inherit;
  /* 1 */
  letter-spacing: inherit;
  /* 1 */
  color: inherit;
  /* 1 */
  margin: 0;
  /* 2 */
  padding: 0;
  /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button;
  /* 1 */
  background-color: transparent;
  /* 2 */
  background-image: none;
  /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/

dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1;
  /* 1 */
  color: #9ca3af;
  /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1;
  /* 1 */
  color: #9ca3af;
  /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/

:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block;
  /* 1 */
  vertical-align: middle;
  /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */

[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}

html,
	body {
  height: 100%;
  width: 100%;
}

body {
  margin: 0px;
  min-width: 320px;
  overflow-x: hidden;
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 0.9375rem;
  font-weight: 300;
  line-height: 1.5;
  letter-spacing: 0.03em;
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

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

/* ── Layout scaffolding — sticky-footer flex column ──────────────────── */

.site-wrapper {
  position: relative;
  margin-top: 0px;
  margin-bottom: 0px;
  margin-left: auto;
  margin-right: auto;
  display: flex;
  min-height: 100%;
  flex-direction: column;
  align-items: stretch;
  overflow: hidden;
}

.site-content {
  flex-grow: 1;
}

.site-header,
	.site-content,
	.site-footer {
  flex-shrink: 0;
}

/* ── Media ──────────────────────────────────────────────────────────── */

picture,
	figure {
  margin-bottom: 1rem;
  display: block;
  vertical-align: middle;
}

img {
  display: inline;
  height: auto;
  width: auto;
  max-width: 100%;
  vertical-align: middle;
}

/* ── Text ───────────────────────────────────────────────────────────── */

p {
  margin-bottom: 1rem;
}

/*
	 * Hover is theme-authored — the design shows no link states at all.
	 * primary.700 is the darker, AA-passing step (see tailwind.config.js).
	 */

a {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

a:hover {
  --tw-text-opacity: 1;
  color: rgb(201 58 34 / var(--tw-text-opacity, 1));
}

hr {
  margin-top: 1rem;
  margin-bottom: 1rem;
  border-color: rgb(15 29 37 / 0.15);
}

/*
	 * Shared heading properties. Poppins Medium (500), dark ink, UPPERCASE.
	 *
	 * ⚠ UPPERCASE IS GLOBAL because every heading in the homepage design is
	 *   set that way (10911:75, 126, 144, 205, 280). Watch this on the blog:
	 *   a long post title in all caps reads badly, and the blog frame
	 *   (12946:3920) has not been checked yet. If it turns out to be sentence
	 *   case, add `normal-case` to the single-post title rather than dropping
	 *   it here.
	 *
	 * No letter-spacing: unlike the previous (Mr. Short Sale) scale, this
	 * design applies NO tracking to headings — only to body copy.
	 *
	 * Keep the .h1–.h6 aliases: templates use <h3 class="h2"> to get a size
	 * without breaking semantic heading order.
	 */

h1,
	.h1,
	h2,
	.h2,
	h3,
	.h3,
	h4,
	.h4,
	h5,
	.h5,
	h6,
	.h6 {
  margin-bottom: 1rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-weight: 500;
  text-transform: uppercase;
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

/*
	 * ⚠ H1 AND H2 ARE THE SAME SIZE IN THIS DESIGN — both 36px/42px Medium
	 *   (hero 10911:75, section heading 10911:126). There is no larger display
	 *   size anywhere. The two share a ramp deliberately; the aliases still
	 *   exist so a template can pick a size without breaking heading order.
	 *
	 *   This also means the type scale is unusually flat: 36 / 24 / 16, plus
	 *   14 and 12 for forms. h4–h6 do not appear in the homepage at all.
	 */

h1,
	.h1,
	h2,
	.h2 {
  font-size: 1.5rem;
  line-height: 1.1667;
}

@media (min-width: 992px) {
  h1,
	.h1,
	h2,
	.h2 {
    font-size: 1.75rem;
  }
}

@media (min-width: 1200px) {
  h1,
	.h1,
	h2,
	.h2 {
    font-size: 2rem;
  }
}

@media (min-width: 1440px) {
  h1,
	.h1,
	h2,
	.h2 {
    font-size: 2.25rem;
  }
}

/* ✓ 24px / 1.5 lh / 500 / uppercase — service card title (10911:144) */

h3,
	.h3 {
  font-size: 1.125rem;
  line-height: 1.5;
}

@media (min-width: 1200px) {
  h3,
	.h3 {
    font-size: 1.25rem;
  }
}

@media (min-width: 1440px) {
  h3,
	.h3 {
    font-size: 1.5rem;
  }
}

/* ~ h4–h6 do not appear in the design. Interpolated so the scale is
	 * complete and `.h4`–`.h6` are usable. Replace if a sub-page introduces
	 * them. */

h4,
	.h4 {
  font-size: 1rem;
  line-height: 1.4;
}

@media (min-width: 1440px) {
  h4,
	.h4 {
    font-size: 1.25rem;
  }
}

h5,
	.h5 {
  font-size: 0.9375rem;
  line-height: 1.4;
}

@media (min-width: 1440px) {
  h5,
	.h5 {
    font-size: 1.125rem;
  }
}

h6,
	.h6 {
  font-size: 0.875rem;
  line-height: 1.5;
}

@media (min-width: 1440px) {
  h6,
	.h6 {
    font-size: 1rem;
  }
}

strong,
	b {
  font-weight: 600;
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

/* ── Lists ──────────────────────────────────────────────────────────────
	 * Structural lists (nav, socials, pills) reset these with
	 * `list-none m-0 p-0 space-y-0`.
	 * ─────────────────────────────────────────────────────────────────────── */

ul,
	ol {
  margin-bottom: 1rem;
  margin-left: 1.125rem;
}

ul > :not([hidden]) ~ :not([hidden]),
	ol > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
}

@media (min-width: 992px) {
  ul > :not([hidden]) ~ :not([hidden]),
	ol > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(1rem * var(--tw-space-y-reverse));
  }
}

ul {
  list-style-type: disc;
}

ul *::marker {
  color: rgb(228 70 43 );
}

ul::marker {
  color: rgb(228 70 43 );
}

ol {
  list-style-type: decimal;
}

ol *::marker {
  color: rgb(228 70 43 );
}

ol::marker {
  color: rgb(228 70 43 );
}

dl {
  margin-bottom: 1rem;
}

dl dt {
  font-weight: 600;
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

dl dd {
  margin-left: 1rem;
}

/* ── Tables ─────────────────────────────────────────────────────────── */

table {
  width: 100%;
  border-collapse: collapse;
}

caption {
  margin-bottom: 0.5rem;
  text-align: center;
  font-size: 1.125rem;
  line-height: 1.75rem;
  font-weight: 600;
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

th,
	td {
  border-width: 1px;
  border-color: rgb(15 29 37 / 0.2);
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

/* ── Quotes, code, misc ─────────────────────────────────────────────── */

blockquote {
  margin-bottom: 1rem;
  border-left-width: 3px;
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(243 248 250 / var(--tw-bg-opacity, 1));
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  padding-left: 1rem;
  font-style: italic;
}

abbr,
	acronym,
	dfn {
  border-bottom-width: 1px;
  border-style: dashed;
  border-bottom-color: rgb(15 29 37 / 0.4);
}

pre {
  margin-bottom: 1rem;
  overflow-x: auto;
  --tw-bg-opacity: 1;
  background-color: rgb(243 248 250 / var(--tw-bg-opacity, 1));
  padding: 1rem;
}

code,
	tt {
  background-color: rgb(15 29 37 / 0.1);
  padding: 0.25rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}

kbd {
  border-radius: 0.25rem;
  border-width: 1px;
  border-color: rgb(15 29 37 / 0.2);
  padding-left: 0.5rem;
  padding-right: 0.5rem;
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}

var,
	samp {
  border-radius: 0.25rem;
  background-color: rgb(15 29 37 / 0.1);
  padding-left: 0.25rem;
  padding-right: 0.25rem;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}

address {
  margin-bottom: 1rem;
}

/* ── Focus ──────────────────────────────────────────────────────────────
	 * A visible ring on every interactive element. The Figma design shows no
	 * focus states; this is theme-authored. secondary.700 is used rather than
	 * `primary` because it clears 3:1 against BOTH the white page and the
	 * off-white panels — `primary` does not on the latter.
	 * ─────────────────────────────────────────────────────────────────────── */

:focus-visible {
  outline-style: solid;
  outline-width: 2px;
  outline-offset: 2px;
  outline-color: #24818D;
}

/**
 * Element defaults, responsive type scale and layout scaffolding.
 *
 * LIGHT THEME: white page, dark ink (#0F1D25) body copy, off-white text only
 * where a section sits over photography. `.title-white` is the exception here,
 * not the norm.
 *
 * Values marked ✓ are read from Figma nodes (ids given). Values marked ~ are
 * DERIVED — the Figma has a single 1440 frame and no mobile or tablet design,
 * so EVERY sub-2xl size in this file is an interpolation, not a measurement.
 * Confirm the whole ramp against a mobile frame when one exists.
 */

/**
 * `@import-glob` pulls in every file in ./custom/components/ alphabetically
 * except components.css, which is then imported explicitly LAST so it can
 * override the others without !important.
 */

.container {
  width: 100%;
  margin-right: auto;
  margin-left: auto;
  padding-right: 1rem;
  padding-left: 1rem;
}

@media (min-width: 576px) {
  .container {
    max-width: 576px;
    padding-right: 1.5rem;
    padding-left: 1.5rem;
  }
}

@media (min-width: 768px) {
  .container {
    max-width: 768px;
  }
}

@media (min-width: 992px) {
  .container {
    max-width: 992px;
    padding-right: 2rem;
    padding-left: 2rem;
  }
}

@media (min-width: 1200px) {
  .container {
    max-width: 1200px;
  }
}

@media (min-width: 1440px) {
  .container {
    max-width: 1440px;
    padding-right: 5rem;
    padding-left: 5rem;
  }
}

.prose {
  color: var(--tw-prose-body);
}

.prose :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 1.25em;
  margin-bottom: 1.25em;
}

.prose :where([class~="lead"], [class~="is-style-lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-lead);
  font-size: 1.25em;
  line-height: 1.6;
  margin-top: 1.2em;
  margin-bottom: 1.2em;
}

.prose :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-links);
  text-decoration: underline;
  font-weight: 500;
}

.prose :where(strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-bold);
  font-weight: 600;
}

.prose :where(a strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}

.prose :where(blockquote strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}

.prose :where(thead th strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}

.prose :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: decimal;
  margin-top: 1.25em;
  margin-bottom: 1.25em;
  padding-inline-start: 1.625em;
}

.prose :where(ol[type="A"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: upper-alpha;
}

.prose :where(ol[type="a"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: lower-alpha;
}

.prose :where(ol[type="A" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: upper-alpha;
}

.prose :where(ol[type="a" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: lower-alpha;
}

.prose :where(ol[type="I"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: upper-roman;
}

.prose :where(ol[type="i"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: lower-roman;
}

.prose :where(ol[type="I" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: upper-roman;
}

.prose :where(ol[type="i" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: lower-roman;
}

.prose :where(ol[type="1"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: decimal;
}

.prose :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  list-style-type: disc;
  margin-top: 1.25em;
  margin-bottom: 1.25em;
  padding-inline-start: 1.625em;
}

.prose :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *))::marker {
  font-weight: 400;
  color: var(--tw-prose-counters);
}

.prose :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *))::marker {
  color: var(--tw-prose-bullets);
}

.prose :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-headings);
  font-weight: 600;
  margin-top: 1.25em;
}

.prose :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  border-color: var(--tw-prose-hr);
  border-top-width: 1px;
  margin-top: 3em;
  margin-bottom: 3em;
  border-bottom: none;
}

.prose :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  font-weight: 500;
  font-style: italic;
  color: var(--tw-prose-quotes);
  border-inline-start-width: 0.25rem;
  border-inline-start-color: var(--tw-prose-quote-borders);
  quotes: "\201C""\201D""\2018""\2019";
  margin-top: 1.6em;
  margin-bottom: 1.6em;
  padding-inline-start: 1em;
}

.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {
  content: open-quote;
}

.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::after {
  content: close-quote;
}

.prose :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-headings);
  font-weight: 800;
  font-size: 2.25em;
  margin-top: 0;
  margin-bottom: 0.8888889em;
  line-height: 1.1111111;
}

.prose :where(h1 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  font-weight: 900;
  color: inherit;
}

.prose :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-headings);
  font-weight: 700;
  font-size: 1.5em;
  margin-top: 2em;
  margin-bottom: 1em;
  line-height: 1.3333333;
}

.prose :where(h2 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  font-weight: 800;
  color: inherit;
}

.prose :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-headings);
  font-weight: 600;
  font-size: 1.25em;
  margin-top: 1.6em;
  margin-bottom: 0.6em;
  line-height: 1.6;
}

.prose :where(h3 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  font-weight: 700;
  color: inherit;
}

.prose :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-headings);
  font-weight: 600;
  margin-top: 1.5em;
  margin-bottom: 0.5em;
  line-height: 1.5;
}

.prose :where(h4 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  font-weight: 700;
  color: inherit;
}

.prose :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 2em;
  margin-bottom: 2em;
}

.prose :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  display: block;
  margin-top: 2em;
  margin-bottom: 2em;
}

.prose :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 2em;
  margin-bottom: 2em;
}

.prose :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  font-weight: 500;
  font-family: inherit;
  color: var(--tw-prose-kbd);
  box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);
  font-size: 0.875em;
  border-radius: 0.3125rem;
  padding-top: 0.1875em;
  padding-inline-end: 0.375em;
  padding-bottom: 0.1875em;
  padding-inline-start: 0.375em;
}

.prose :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-code);
  font-weight: 600;
  font-size: 0.875em;
}

.prose :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {
  content: "`";
}

.prose :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *))::after {
  content: "`";
}

.prose :where(a code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}

.prose :where(h1 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}

.prose :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
  font-size: 0.875em;
}

.prose :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
  font-size: 0.9em;
}

.prose :where(h4 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}

.prose :where(blockquote code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}

.prose :where(thead th code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: inherit;
}

.prose :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-pre-code);
  background-color: var(--tw-prose-pre-bg);
  overflow-x: auto;
  font-weight: 400;
  font-size: 0.875em;
  line-height: 1.7142857;
  margin-top: 1.7142857em;
  margin-bottom: 1.7142857em;
  border-radius: 0.375rem;
  padding-top: 0.8571429em;
  padding-inline-end: 1.1428571em;
  padding-bottom: 0.8571429em;
  padding-inline-start: 1.1428571em;
}

.prose :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  background-color: transparent;
  border-width: 0;
  border-radius: 0;
  padding: 0;
  font-weight: inherit;
  color: inherit;
  font-size: inherit;
  font-family: inherit;
  line-height: inherit;
}

.prose :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {
  content: none;
}

.prose :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *))::after {
  content: none;
}

.prose :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  width: 100%;
  table-layout: auto;
  margin-top: 2em;
  margin-bottom: 2em;
  font-size: 0.875em;
  line-height: 1.7142857;
}

.prose :where(thead):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  border-bottom-width: 1px;
  border-bottom-color: var(--tw-prose-th-borders);
}

.prose :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-headings);
  font-weight: 600;
  vertical-align: bottom;
  padding-inline-end: 0.5714286em;
  padding-bottom: 0.5714286em;
  padding-inline-start: 0.5714286em;
}

.prose :where(tbody tr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  border-bottom-width: 1px;
  border-bottom-color: var(--tw-prose-td-borders);
}

.prose :where(tbody tr:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  border-bottom-width: 0;
}

.prose :where(tbody td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  vertical-align: baseline;
}

.prose :where(tfoot):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  border-top-width: 1px;
  border-top-color: var(--tw-prose-th-borders);
}

.prose :where(tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  vertical-align: top;
}

.prose :where(th, td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  text-align: start;
}

.prose :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
  margin-bottom: 0;
}

.prose :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-captions);
  font-size: 0.875em;
  line-height: 1.4285714;
  margin-top: 0.8571429em;
}

.prose {
  --tw-prose-body: #374151;
  --tw-prose-headings: #111827;
  --tw-prose-lead: #4b5563;
  --tw-prose-links: #111827;
  --tw-prose-bold: #111827;
  --tw-prose-counters: #6b7280;
  --tw-prose-bullets: #d1d5db;
  --tw-prose-hr: #e5e7eb;
  --tw-prose-quotes: #111827;
  --tw-prose-quote-borders: #e5e7eb;
  --tw-prose-captions: #6b7280;
  --tw-prose-kbd: #111827;
  --tw-prose-kbd-shadows: rgb(17 24 39 / 10%);
  --tw-prose-code: #111827;
  --tw-prose-pre-code: #e5e7eb;
  --tw-prose-pre-bg: #1f2937;
  --tw-prose-th-borders: #d1d5db;
  --tw-prose-td-borders: #e5e7eb;
  --tw-prose-invert-body: #d1d5db;
  --tw-prose-invert-headings: #fff;
  --tw-prose-invert-lead: #9ca3af;
  --tw-prose-invert-links: #fff;
  --tw-prose-invert-bold: #fff;
  --tw-prose-invert-counters: #9ca3af;
  --tw-prose-invert-bullets: #4b5563;
  --tw-prose-invert-hr: #374151;
  --tw-prose-invert-quotes: #f3f4f6;
  --tw-prose-invert-quote-borders: #374151;
  --tw-prose-invert-captions: #9ca3af;
  --tw-prose-invert-kbd: #fff;
  --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);
  --tw-prose-invert-code: #fff;
  --tw-prose-invert-pre-code: #d1d5db;
  --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);
  --tw-prose-invert-th-borders: #4b5563;
  --tw-prose-invert-td-borders: #374151;
  font-size: 1rem;
  line-height: 1.75;
}

.prose :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
  margin-bottom: 0;
}

.prose :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

.prose :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-inline-start: 0.375em;
}

.prose :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-inline-start: 0.375em;
}

.prose :where(.prose > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0.75em;
  margin-bottom: 0.75em;
}

.prose :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 1.25em;
}

.prose :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-bottom: 1.25em;
}

.prose :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 1.25em;
}

.prose :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-bottom: 1.25em;
}

.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0.75em;
  margin-bottom: 0.75em;
}

.prose :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 1.25em;
  margin-bottom: 1.25em;
}

.prose :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0.5em;
  padding-inline-start: 1.625em;
}

.prose :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
}

.prose :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
}

.prose :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
}

.prose :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
}

.prose :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-inline-start: 0;
}

.prose :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-inline-end: 0;
}

.prose :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-top: 0.5714286em;
  padding-inline-end: 0.5714286em;
  padding-bottom: 0.5714286em;
  padding-inline-start: 0.5714286em;
}

.prose :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-inline-start: 0;
}

.prose :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  padding-inline-end: 0;
}

.prose :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 2em;
  margin-bottom: 2em;
}

.prose :where(.prose > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-top: 0;
}

.prose :where(.prose > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  margin-bottom: 0;
}

.prose :where(blockquote > cite):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  color: var(--tw-prose-body);
  font-style: normal;
  font-weight: 400;
}

.prose :where(blockquote > cite):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {
  content: "\2014";
}

.prose :where(table.has-fixed-layout):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
  table-layout: fixed;
  width: 100%;
}

.prose-invert {
  --tw-prose-body: var(--tw-prose-invert-body);
  --tw-prose-headings: var(--tw-prose-invert-headings);
  --tw-prose-lead: var(--tw-prose-invert-lead);
  --tw-prose-links: var(--tw-prose-invert-links);
  --tw-prose-bold: var(--tw-prose-invert-bold);
  --tw-prose-counters: var(--tw-prose-invert-counters);
  --tw-prose-bullets: var(--tw-prose-invert-bullets);
  --tw-prose-hr: var(--tw-prose-invert-hr);
  --tw-prose-quotes: var(--tw-prose-invert-quotes);
  --tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);
  --tw-prose-captions: var(--tw-prose-invert-captions);
  --tw-prose-kbd: var(--tw-prose-invert-kbd);
  --tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);
  --tw-prose-code: var(--tw-prose-invert-code);
  --tw-prose-pre-code: var(--tw-prose-invert-pre-code);
  --tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);
  --tw-prose-th-borders: var(--tw-prose-invert-th-borders);
  --tw-prose-td-borders: var(--tw-prose-invert-td-borders);
}

.prose-atlanticglass {
  --tw-prose-body: #0F1D25;
  --tw-prose-headings: #0F1D25;
  --tw-prose-lead: #0F1D25;
  --tw-prose-links: #E4462B;
  --tw-prose-bold: #0F1D25;
  --tw-prose-counters: #E4462B;
  --tw-prose-bullets: #E4462B;
  --tw-prose-hr: rgb(15 29 37 / 15%);
  --tw-prose-quotes: #0F1D25;
  --tw-prose-quote-borders: #E4462B;
  --tw-prose-captions: #5E7078;
  --tw-prose-kbd: #0F1D25;
  --tw-prose-kbd-shadows: 15 29 37;
  --tw-prose-code: #0F1D25;
  --tw-prose-pre-code: #F3F8FA;
  --tw-prose-pre-bg: #0F1D25;
  --tw-prose-th-borders: rgb(15 29 37 / 20%);
  --tw-prose-td-borders: rgb(15 29 37 / 12%);
}

.prose .wp-block-table td, .prose .wp-block-table th {
  border: 0;
}

.prose .wp-block-table thead, .prose .wp-block-table tfoot {
  border-color: var(--tw-prose-th-borders);
}

.prose .wp-block-table thead {
  border-bottom-width: 1px;
}

.prose .wp-block-table tfoot {
  border-top-width: 1px;
}

/* ── Shared media layer ─────────────────────────────────────────────── */

.hero-media {
  position: absolute;
  inset: 0px;
  z-index: -1;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

/*
	 * ✓ A 40px teal bar closing the banner (10911:67/68 — Rectangle 149838,
	 * 1441×40). Present on the home hero and on every inner banner.
	 * Purely decorative, hence aria-hidden in the markup.
	 *
	 * ✓ IT IS A GRADIENT, NOT A SOLID. Sampled across the export at row 690:
	 *   x=50 #2A8C98 · x=600 #389DAB · x=1400 #4CB6C6
	 * — i.e. left-to-right from `secondary` (#298B97) to `tertiary` (#4DB8C8).
	 * It was built as flat bg-secondary.
	 *
	 * This also answers open question #6 in BUILD-NOTES ("two teals — kept
	 * separate, worth one confirmation"): they are the two ends of this ramp,
	 * which is the only place both appear together.
	 */

.hero-strip {
  position: absolute;
  left: 0px;
  right: 0px;
  bottom: 0px;
  z-index: 4;
  display: block;
  height: 1.25rem;
  background-image: linear-gradient(to right, var(--tw-gradient-stops));
  --tw-gradient-from: #298B97 var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(41 139 151 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
  --tw-gradient-to: #4DB8C8 var(--tw-gradient-to-position);
}

@media (min-width: 992px) {
  .hero-strip {
    height: 2.5rem;
  }
}

/* ── Home hero ──────────────────────────────────────────────────────────
	 * The banner carries the header clearance, NOT .site-content — the header
	 * is transparent and the photo runs up behind it on every page in this
	 * design. `--header-h` is published by ss.nav(); the 11rem fallback
	 * (60px announcement bar + 116px nav) covers the first paint and the
	 * no-JS case.
	 * ─────────────────────────────────────────────────────────────────────── */

.hero {
  position: relative;
  z-index: 1;
  display: flex;
  min-height: 32rem;
  align-items: center;
  overflow: hidden;
  --tw-bg-opacity: 1;
  background-color: rgb(15 29 37 / var(--tw-bg-opacity, 1));
  padding-top: calc(var(--header-h,11rem) + 3rem);
  padding-bottom: 7rem;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

.hero :is(h1,h2,h3,h4,h5,h6) {
  color: #F3F8FA;
}

.hero::before {
  position: absolute;
  inset: 0px;
  z-index: 1;
  background-image: linear-gradient(to right, var(--tw-gradient-stops));
  --tw-gradient-from: rgb(0 0 0 / 0.75) var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
  --tw-gradient-to: rgb(0 0 0 / 0)  var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), rgb(0 0 0 / 0.45) var(--tw-gradient-via-position), var(--tw-gradient-to);
  --tw-gradient-to: rgb(0 0 0 / 0.1) var(--tw-gradient-to-position);
  --tw-content: '';
  content: var(--tw-content);
}

@media (min-width: 992px) {
  .hero {
    min-height: 38rem;
  }
}

@media (min-width: 1200px) {
  .hero {
    min-height: 42rem;
    padding-top: calc(var(--header-h,11rem) + 4rem);
    padding-bottom: 8rem;
  }
}

@media (min-width: 1440px) {
  .hero {
    min-height: 44.625rem;
    padding-bottom: 9.25rem;
  }
}

.hero-inner {
  position: relative;
  z-index: 3;
}

/*
	 * ✓ 680px content column (10911:71). Accent words inside the H1 take the
	 * brand orange — colour only, no weight or style change (10911:75).
	 */

.hero-content {
  max-width: 42.5rem;
}

.hero-content h1 {
  margin-bottom: 1rem;
  max-width: 33.6875rem;
}

.hero-content h1 em {
  font-style: normal;
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

.hero-content h1 span {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

/* ✓ 525px measure (10911:76). */

.hero-description {
  max-width: 32.8125rem;
}

.hero-description p:last-child {
  margin-bottom: 0px;
}

/* ✓ 30px gap between the button and the phone (10911:77). */

.banner-actions {
  margin-top: 2rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  -moz-column-gap: 2rem;
       column-gap: 2rem;
  row-gap: 1rem;
}

@media (min-width: 992px) {
  .banner-actions {
    margin-top: 2.5rem;
  }
}

/*
	 * ✓ Hero only: 28px above the CTA row, not 40.
	 *
	 * Measured against the export — with lg:mt-10 the pill sat at row 434 where
	 * the design has it at 422. Scoped to .hero rather than changed on
	 * .banner-actions, because that class is shared with the inner banner and
	 * cta_band and their frames have not been measured.
	 */

@media (min-width: 992px) {
  .hero .banner-actions {
    margin-top: 1.75rem;
  }
}

/* ── Phone pairing ───────────────────────────────────────────────────────
	 * ✓ 46.4px circular glyph + Poppins Bold 20.625px number (10911:82/88).
	 * Shared by the hero, the inner banner and the cta_band module.
	 * ─────────────────────────────────────────────────────────────────────── */

.banner-phone {
  display: inline-flex;
  align-items: center;
  gap: 1rem;
  white-space: nowrap;
  font-family: Poppins, system-ui, sans-serif;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.25;
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
  text-decoration-line: none;
}

@media (min-width: 1440px) {
  .banner-phone {
    font-size: 1.2890625rem;
  }
}

.banner-phone:hover {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
  text-decoration-line: none;
}

/*
	 * ✓ WHITE disc, PRIMARY handset — sampled off the design export at
	 * 10911:83 (#EC4D26 glyph on #F6FFFC). This was inverted: a solid
	 * bg-primary disc with off-white ink, and because the icomoon <i> inside
	 * it was empty the result read as a plain orange dot.
	 */

.banner-phone-glyph {
  display: grid;
  width: 2.5rem;
  height: 2.5rem;
  flex-shrink: 0;
  place-items: center;
  border-radius: 9999px;
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

@media (min-width: 1440px) {
  .banner-phone-glyph {
    width: 2.9rem;
    height: 2.9rem;
  }
}

.banner-phone-glyph svg {
  width: 1.25rem;
  height: 1.25rem;
}

.banner-phone:hover .banner-phone-glyph {
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}

/* ── Trust row ───────────────────────────────────────────────────────────
	 * ✓ Four 50px avatars overlapping by 24px, then stars + rating + count
	 * (10911:89–114).
	 * ─────────────────────────────────────────────────────────────────────── */

.hero-trust {
  margin-top: 2rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  -moz-column-gap: 1.5rem;
       column-gap: 1.5rem;
  row-gap: 1rem;
}

@media (min-width: 992px) {
  .hero-trust {
    margin-top: 3rem;
  }
}

/*
	 * The overlap is done with a negative margin on every child except the
	 * last, so the count of avatars is free — the design's four is not baked in.
	 */

.hero-avatars {
  display: flex;
  align-items: center;
}

.hero-avatars img:not(:last-child) {
  margin-right: -1.5rem;
}

.hero-avatars img {
  width: 3.125rem;
  height: 3.125rem;
  flex-shrink: 0;
  border-radius: 9999px;
  -o-object-fit: cover;
     object-fit: cover;
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
  --tw-ring-color: rgb(243 248 250 / 0.6);
}

.hero-rating {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.hero-rating-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  -moz-column-gap: 0.875rem;
       column-gap: 0.875rem;
  row-gap: 0.25rem;
}

/*
	 * ✓ Five 20px stars on a 24px pitch — so a 4px gap (10911:97).
	 *
	 * Now an inline SVG via atg_star(), NOT the icomoon class. The "renders
	 * empty rather than wrong" reasoning above held right up until someone
	 * looked: the row measured 16x0 and the design's five gold stars were
	 * simply absent from the hero.
	 *
	 * ✓ #FCC729, sampled from the export — the `star` token.
	 */

.hero-stars {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  line-height: 1;
  --tw-text-opacity: 1;
  color: rgb(252 199 41 / var(--tw-text-opacity, 1));
}

.hero-stars svg {
  width: 1.25rem;
  height: 1.25rem;
}

/* ✓ Poppins Bold 16px white (10911:113). */

.hero-rating-label {
  font-family: Poppins, system-ui, sans-serif;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.5;
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}

/* ✓ Poppins Regular 16px white at 85% (10911:114). */

.hero-reviews {
  font-size: 1rem;
  line-height: 1.5;
  color: rgb(255 255 255 / 0.85);
}

/* ── Inner banner ───────────────────────────────────────────────────── */

.inner-banner {
  position: relative;
  z-index: 1;
  display: flex;
  min-height: 20rem;
  align-items: center;
  overflow: hidden;
  --tw-bg-opacity: 1;
  background-color: rgb(15 29 37 / var(--tw-bg-opacity, 1));
  padding-top: calc(var(--header-h,11rem) + 2rem);
  padding-bottom: 5rem;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

.inner-banner :is(h1,h2,h3,h4,h5,h6) {
  color: #F3F8FA;
}

.inner-banner::before {
  position: absolute;
  inset: 0px;
  z-index: 1;
  background-image: linear-gradient(to right, var(--tw-gradient-stops));
  --tw-gradient-from: rgb(0 0 0 / 0.75) var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
  --tw-gradient-to: rgb(0 0 0 / 0)  var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), rgb(0 0 0 / 0.45) var(--tw-gradient-via-position), var(--tw-gradient-to);
  --tw-gradient-to: rgb(0 0 0 / 0.1) var(--tw-gradient-to-position);
  --tw-content: '';
  content: var(--tw-content);
}

@media (min-width: 992px) {
  .inner-banner {
    min-height: 26rem;
    padding-bottom: 6rem;
  }
}

@media (min-width: 1200px) {
  .inner-banner {
    padding-top: calc(var(--header-h,11rem) + 3rem);
  }
}

/*
	 * No background image uploaded: drop the photo treatment and fall back to
	 * the brand teal, so the banner still reads as a band rather than a hole.
	 */

/*
	 * No background image uploaded. Falls back to the DARK ink, not the brand
	 * teal — three reasons:
	 *   1. the transparent header's current-menu-item is `primary`, and orange
	 *      on teal measures ~1:1. It disappears completely.
	 *   2. off-white nav links on teal are 4.01:1, under the AA floor.
	 *   3. the announcement bar above and the footer below are both teal, so a
	 *      teal banner between them reads as one undifferentiated slab.
	 * Dark ink keeps the header behaving exactly as it does over a real banner
	 * photograph, which is what every populated page will have.
	 *
	 * Only the BOTTOM padding is reduced — the top must keep clearing the
	 * transparent header, or the heading slides under the nav.
	 */

.inner-banner--plain {
  min-height: 0px;
  --tw-bg-opacity: 1;
  background-color: rgb(15 29 37 / var(--tw-bg-opacity, 1));
  padding-bottom: 2.5rem;
}

.inner-banner--plain::before {
  content: var(--tw-content);
  background-image: none;
}

@media (min-width: 992px) {
  .inner-banner--plain {
    min-height: 0px;
    padding-bottom: 3.5rem;
  }
}

.inner-banner-inner {
  position: relative;
  z-index: 3;
}

.inner-banner-content {
  max-width: 42.5rem;
}

.inner-banner-content h1 {
  margin-bottom: 1rem;
}

.inner-banner-content h1 em {
  font-style: normal;
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

.inner-banner-content h1 span {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

.inner-banner-description {
  max-width: 36rem;
}

.inner-banner-description p:last-child {
  margin-bottom: 0px;
}

/* ── Breadcrumbs (Yoast output) ─────────────────────────────────────────
	 * ⚠ NOT IN THE DESIGN — no frame shows breadcrumbs. Kept because Yoast is
	 *   installed and they are an SEO/orientation win, styled to sit quietly.
	 * ─────────────────────────────────────────────────────────────────────── */

.breadcrumbs {
  margin-top: 1.5rem;
  font-size: 0.8125rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgb(243 248 250 / 0.6);
}

.breadcrumbs .breadcrumb last {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

.breadcrumbs a {
  font-weight: 500;
  color: rgb(243 248 250 / 0.8);
  text-decoration-line: none;
}

.breadcrumbs a:hover {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

/*
	 * ✓ Solid #298B97 (10911:271). Note the design does NOT put a photo behind
	 * the footer — unlike most house builds, this is a flat brand band.
	 */

/*
	 * ✓ Body copy is 15px on a 24px line — 1.6, not the 16px/1.5 house default
	 * (10911:278, 323, 326). The 429px blurb is 48 tall for two lines and the
	 * three-line address is 72, both of which only work at 24.
	 *
	 * It used to bump to 16 at sm. Measured against the export the build's ink
	 * came out 5% wide everywhere in this column — address 180 vs 171, phone
	 * 120 vs 110 — and the blurb, which the design sets on two lines inside its
	 * 429px measure, needed 455px and broke to three. That one extra line
	 * pushed LOCATION / PHONE / EMAIL 24px down the whole way.
	 */

.site-footer {
  position: relative;
  z-index: 1;
  --tw-bg-opacity: 1;
  background-color: rgb(41 139 151 / var(--tw-bg-opacity, 1));
  font-size: 0.9375rem;
  line-height: 1.6;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

.site-footer a:not(.btn):hover {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
  text-decoration-line: underline;
}

.site-footer a {
  color: inherit;
  text-decoration-line: none;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

/*
	 * ✓ 51px top AND bottom (10911:268 → 269). The footer is 773 tall and the
	 * form panel is 671 of it: 51 + 671 + 51. It was on the canonical py-20
	 * rhythm — "close enough" — which put 80px at each end and made the band
	 * 58px taller than the design.
	 */

.footer-main {
  margin-left: -0.75rem;
  margin-right: -0.75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  row-gap: 2.5rem;
  padding-top: 3rem;
  padding-bottom: 3rem;
}

@media (min-width: 992px) {
  .footer-main {
    padding-top: 4rem;
    padding-bottom: 4rem;
  }
}

@media (min-width: 1200px) {
  .footer-main {
    margin-left: -1rem;
    margin-right: -1rem;
    padding-top: 5rem;
    padding-bottom: 5rem;
  }
}

@media (min-width: 1440px) {
  .footer-main {
    padding-top: 3.1875rem;
    padding-bottom: 3.1875rem;
  }
}

/*
	 * ✓ 660 / 652 at 1440 (10911:272, 10911:279).
	 *
	 * These look like odd numbers because they are stated in ROW space, not
	 * container space: `.footer-main` is `-mx-4` so the row is 1312 wide, and
	 * each column gives 16px back as `px-4`. 660 + 652 = 1312 exactly, which
	 * puts the panel's painted box at 740..1360 and its 500px fields at
	 * 800..1300 — the design's numbers, with no gutter maths at the call site.
	 *
	 * 45/55 put the panel at 656 and made it 704 wide.
	 */

.footer-brand-col {
  width: 100%;
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}

@media (min-width: 992px) {
  .footer-brand-col {
    width: 45%;
  }
}

@media (min-width: 1200px) {
  .footer-brand-col {
    padding-left: 1rem;
    padding-right: 1rem;
  }
}

@media (min-width: 1440px) {
  .footer-brand-col {
    width: 41.25rem;
  }
}

.footer-form-col {
  width: 100%;
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}

@media (min-width: 992px) {
  .footer-form-col {
    width: 55%;
  }
}

@media (min-width: 1200px) {
  .footer-form-col {
    padding-left: 1rem;
    padding-right: 1rem;
  }
}

@media (min-width: 1440px) {
  .footer-form-col {
    width: 40.75rem;
  }
}

/*
	 * ✓ 126 × 138 of visible ink — the design's 143.9 × 158.3 frame (10911:274)
	 * less the 13% of transparent padding the Figma asset carries.
	 *
	 * These are INK heights now, not box heights: the shared brand attachment is
	 * trimmed to its ink box so `height` means the mark (see the note on
	 * .navbar-brand in header.css). Multiplying the old box heights by 0.874
	 * keeps the footer crest exactly the size it already rendered.
	 */

/*
	 * ⚠ THE FOOTER USES THE REVERSED MARK — attachment "…-reversed.png".
	 *
	 * The design does not ship a second logo file. Figma 10911:273 is the
	 * ordinary mark with a "Mask group" over its lower 68.5px: a white fill
	 * clipped to the wordmark's own alpha. Sampling the 3× export of that node
	 * confirms it — the wordmark band holds only #F3F9F7 and the background
	 * teal, with zero red-dominant pixels, so the "Commercial | Residential"
	 * divider goes white too. `qa/white-wordmark.php` reproduces it from the
	 * trimmed asset; re-run that rather than hand-editing a PNG.
	 *
	 * Without it the teal wordmark sat on the teal band and was very nearly
	 * invisible.
	 *
	 * ✓ 118×138 of visible ink — the design's 143.9×158.3 frame (10911:274)
	 * with the asset fitted by height inside it. Ink, not box: the attachment is
	 * trimmed so `height` means the mark (see .navbar-brand in header.css).
	 */

.footer-logo {
  margin-bottom: 1.5rem;
  display: inline-block;
  line-height: 1;
}

@media (min-width: 1440px) {
  .footer-logo {
    margin-bottom: 2.375rem;
  }
}

.footer-logo:hover {
  text-decoration-line: none;
}

.footer-logo img {
  height: 6.125rem;
  width: auto;
}

@media (min-width: 1440px) {
  .footer-logo img {
    height: 8.625rem;
  }
}

/* ✓ 429px measure (10911:278) — two lines at 1440. */

.footer-blurb {
  margin-bottom: 2rem;
  max-width: 26.8125rem;
}

@media (min-width: 992px) {
  .footer-blurb {
    margin-bottom: 2.5rem;
  }
}

@media (min-width: 1440px) {
  .footer-blurb {
    margin-bottom: 2.125rem;
  }
}

.footer-blurb p:last-child {
  margin-bottom: 0px;
}

/* ✓ 24px between blocks (10911:321 → 324 → 327). */

.footer-contact > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));
}

@media (min-width: 992px) {
  .footer-contact > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(2rem * var(--tw-space-y-reverse));
  }
}

@media (min-width: 1440px) {
  .footer-contact > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));
  }
}

/*
	 * ✓ 32px uppercase heading over its value (10911:322/323).
	 * `.h2` is not used because these are not section headings — they are
	 * labels that happen to be set large. The size is stated directly.
	 *
	 * The line box is 33px, not the 42 the house 1.3125 would give: the design
	 * sets these tight, and the 43px from heading top to value top only works
	 * at that leading. Was 24px/1.3125, which rendered a 17px cap against the
	 * design's 22.
	 */

.footer-contact-heading {
  margin-bottom: 0.5rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 1.25rem;
  font-weight: 500;
  text-transform: uppercase;
  line-height: 1.3125;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

@media (min-width: 1440px) {
  .footer-contact-heading {
    margin-bottom: 0.625rem;
    font-size: 2rem;
    line-height: 1.03125;
  }
}

.footer-contact-block p:last-child {
  margin-bottom: 0px;
}

/*
	 * ✓ The phone and email values are UNDERLINED at rest (10911:326/329) —
	 * they are the only links in the left column and the design marks them as
	 * such. `.site-footer` clears underlines site-wide and adds one on hover,
	 * so this puts it back for these two and drops it on hover instead, keeping
	 * hover a visible state change.
	 */

.footer-contact-block a {
  text-decoration-line: underline;
  text-decoration-thickness: from-font;
}

.footer-contact-block a:hover {
  text-decoration-line: none;
}

/*
	 * ✓ #F3F8FA at 80%, 60px / 40px padding (10911:279).
	 *
	 * The panel is LIGHT and sits on the teal band, so everything inside it
	 * flips to dark ink — the footer's inherited off-white would be invisible.
	 * forms.css owns the field styling; only the reset lives here.
	 */

.footer-form-panel {
  background-color: rgb(243 248 250 / 0.8);
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  padding-top: 2rem;
  padding-bottom: 2rem;
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

@media (min-width: 576px) {
  .footer-form-panel {
    padding-left: 2.5rem;
    padding-right: 2.5rem;
  }
}

@media (min-width: 1440px) {
  .footer-form-panel {
    padding-left: 3.75rem;
    padding-right: 3.75rem;
    padding-top: 2.5rem;
    padding-bottom: 2.5rem;
  }
}

.footer-form-panel a:not(.btn):hover {
  --tw-text-opacity: 1;
  color: rgb(201 58 34 / var(--tw-text-opacity, 1));
}

.footer-form-panel a {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

/*
	 * ✓ Poppins Medium 32px uppercase #E4462B (10911:280).
	 *
	 * Line box 33, not 42 — same tight leading as the contact headings, and it
	 * is what puts 30px between the heading and the first field label rather
	 * than 21.
	 */

.footer-form-heading {
  margin-bottom: 1.5rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 1.5rem;
  font-weight: 500;
  text-transform: uppercase;
  line-height: 1.3125;
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

@media (min-width: 1440px) {
  .footer-form-heading {
    margin-bottom: 1.875rem;
    font-size: 2rem;
    line-height: 1.03125;
  }
}

/* ── Form geometry inside the panel ──────────────────────────────────────
	 * forms.css owns how a field LOOKS; these four rules own where it sits, and
	 * only inside this panel. All measured off 10911:281.
	 *
	 * The house form has a 4px label margin and a 10px row gap, giving a 65px
	 * field pitch. The design's is 61: the input starts flush against the
	 * label's line box, and the 10px gap does the rest.
	 * ─────────────────────────────────────────────────────────────────────── */

/*
	 * ✓ 13px on a 17px line box (10911:284), and the input starts flush against
	 * that box — which is what gives the 61px pitch.
	 *
	 * 13, not the house form's 14: at 14 every label measured ~7% wide against
	 * the export ("Type Your Message Here" 182 against 171). The 17px box is
	 * the design's, and it holds at either size, so the width was the only tell.
	 */

@media (min-width: 1440px) {
  .footer-form-panel .gform_wrapper .gfield_label {
    margin-bottom: 0px;
    font-size: 0.8125rem;
    line-height: 1.3077;
  }
}

/*
	 * ✓ The required marker is the LABEL's teal and sits tight against the text
	 * — "Full Name*", not "Full Name *" (10911:284).
	 *
	 * ⚠ The house default is `ml-0.5 text-primary`, and a red asterisk is the
	 * stronger required-field signal. Overridden here because the design is
	 * explicit, but it is a small accessibility step down — same category as the
	 * #298B97-on-white contrast note at the top of forms.css. Scoped to this
	 * panel so no other form loses the red marker.
	 */

@media (min-width: 1440px) {
  .footer-form-panel .gform_wrapper .gfield_required {
    margin-left: 0px;
    color: inherit;
  }
}

/*
	 * ✓ 30px above the consent row (10911:282 ends at 373, 10911:310 starts at
	 * 403). The consent is just another grid row to Gravity Forms, so the extra
	 * 20 sits on top of the row gap.
	 */

.footer-form-panel .gform_wrapper .gfield--type-consent {
  /*
		 * The 5px below is the design's own: 10911:311 is a 59px block holding
		 * 54px of text (three lines at 18). Without it the submit and the whole
		 * band land 5px high.
		 */
}

@media (min-width: 1440px) {
  .footer-form-panel .gform_wrapper .gfield--type-consent {
    margin-bottom: 0.3125rem;
    margin-top: 1.25rem;
  }
}

/* ✓ 20px above the button (10911:311 ends at 59, 10911:316 starts at 79). */

@media (min-width: 1440px) {
  .footer-form-panel .gform_wrapper .gform_footer {
    margin-top: 1.25rem;
  }
}

/*
	 * ✓ 96×46 (10911:316/317) — 19px sides, 12px ends around a 22px line box.
	 * That is exactly `.btn`'s geometry, so borrow its numbers instead of the
	 * house form button's px-6 py-3, which came out 111×42.
	 */

@media (min-width: 1440px) {
  .footer-form-panel .gform_wrapper .gform_footer input[type="submit"],
	.footer-form-panel .gform_wrapper .gform_footer button {
    padding-left: 1.1875rem;
    padding-right: 1.1875rem;
    padding-top: 0.6875rem;
    padding-bottom: 0.6875rem;
    line-height: 1.35625;
  }
}

/* ═══════════════════════════════════════════════════════════════════════
	 * SHARED
	 * ═══════════════════════════════════════════════════════════════════════ */

.gform_wrapper form {
  margin: 0px;
}

/* Gravity's own heading/description — modules supply their own. */

.gform_wrapper .gform_heading {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/* ── Field grid ─────────────────────────────────────────────────────────
	 * ✓ 10px between fields (10911:286).
	 *
	 * GF emits width classes (`gfield--width-half`, `--width-third`, …) from
	 * each field's layoutGridColumnSpan, but the CSS that consumes them lives
	 * in Gravity's own stylesheet — which `gform_disable_css` turns off. So the
	 * 12-column grid has to be declared here or every field stacks full width,
	 * regardless of how the form is configured.
	 *
	 * Single column below sm: side-by-side name fields are unusable on a phone.
	 * ─────────────────────────────────────────────────────────────────────── */

.gform_wrapper .gform_fields {
  margin: 0px;
  display: grid;
  list-style-type: none;
  grid-template-columns: repeat(1, minmax(0, 1fr));
  -moz-column-gap: 1rem;
       column-gap: 1rem;
  row-gap: 0.625rem;
  padding: 0px;
}

@media (min-width: 576px) {
  .gform_wrapper .gform_fields {
    grid-template-columns: repeat(12, minmax(0, 1fr));
  }
}

.gform_wrapper .gfield {
  margin: 0px;
  min-width: 0px;
  padding: 0px;
}

@media (min-width: 576px) {
  .gform_wrapper .gfield {
    grid-column: span 12 / span 12;
  }

  .gform_wrapper .gfield--width-half {
    grid-column: span 6 / span 6;
  }

  .gform_wrapper .gfield--width-third {
    grid-column: span 4 / span 4;
  }

  .gform_wrapper .gfield--width-two-thirds {
    grid-column: span 8 / span 8;
  }

  .gform_wrapper .gfield--width-quarter {
    grid-column: span 3 / span 3;
  }
}

/* GF's spacer field — keeps a deliberate gap in the grid. */

.gform_wrapper .gfield--type-spacer {
  display: none;
}

@media (min-width: 576px) {
  .gform_wrapper .gfield--type-spacer {
    display: block;
  }
}

/* ✓ Poppins Regular 14px, sentence case, NOT bold (10911:284). */

.gform_wrapper .gfield_label {
  margin-bottom: 0.25rem;
  display: block;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 0.875rem;
  font-weight: 400;
  line-height: 1.2142;
  --tw-text-opacity: 1;
  color: rgb(41 139 151 / var(--tw-text-opacity, 1));
}

.gform_wrapper .gfield_required {
  margin-left: 0.125rem;
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

.gform_wrapper .ginput_container {
  position: relative;
}

/* ── Fields: the underline default ─────────────────────────────────────
	 * ✓ 34px tall, bottom border only, no fill, no radius (10911:285).
	 * ─────────────────────────────────────────────────────────────────── */

.gform_wrapper
		input:where(
			[type="text"],
			[type="email"],
			[type="tel"],
			[type="url"],
			[type="number"],
			[type="password"],
			[type="date"]
		),
	.gform_wrapper select,
	.gform_wrapper textarea {
  display: block;
  width: 100%;
  border-radius: 0px;
  border-width: 0px;
  border-bottom-width: 1px;
  --tw-border-opacity: 1;
  border-bottom-color: rgb(41 139 151 / var(--tw-border-opacity, 1));
  background-color: transparent;
  padding-left: 0px;
  padding-right: 0px;
  padding-top: 0.375rem;
  padding-bottom: 0.375rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 0.9375rem;
  line-height: 1.4;
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
  outline: 2px solid transparent;
  outline-offset: 2px;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.gform_wrapper
		input:where(
			[type="text"],
			[type="email"],
			[type="tel"],
			[type="url"],
			[type="number"],
			[type="password"],
			[type="date"]
		)::-moz-placeholder, .gform_wrapper select::-moz-placeholder, .gform_wrapper textarea::-moz-placeholder {
  --tw-text-opacity: 1;
  color: rgb(94 112 120 / var(--tw-text-opacity, 1));
}

.gform_wrapper
		input:where(
			[type="text"],
			[type="email"],
			[type="tel"],
			[type="url"],
			[type="number"],
			[type="password"],
			[type="date"]
		)::placeholder,
	.gform_wrapper select::placeholder,
	.gform_wrapper textarea::placeholder {
  --tw-text-opacity: 1;
  color: rgb(94 112 120 / var(--tw-text-opacity, 1));
}

/*
	 * ✓ 51px textarea (10911:309) — the design's message field is the same
	 * height as every other input, not a tall box.
	 *
	 * `h-`, not just `min-h-`: Gravity Forms emits rows="10" on the element,
	 * and that won out over a minimum, rendering 227px and pushing the whole
	 * footer 281px past the design. resize-y is kept so a visitor can still
	 * drag it open.
	 */

.gform_wrapper textarea {
  height: 3.1875rem;
  min-height: 3.1875rem;
  resize: vertical;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

/*
	 * ✓ The consent field carries no visible label in the design (10911:311) —
	 * the checkbox sits directly beside its description. sr-only rather than
	 * hidden, so it still names the control for assistive tech.
	 */

.gform_wrapper .gfield--type-consent .gfield_label {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/*
	 * ~ NOT IN THE DESIGN. A bottom border alone gives no visible focus, so
	 * the border thickens and takes the brand orange. The `outline-none` above
	 * is only safe because this replaces it.
	 */

.gform_wrapper input:focus,
	.gform_wrapper select:focus,
	.gform_wrapper textarea:focus {
  border-bottom-width: 2px;
  --tw-border-opacity: 1;
  border-bottom-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
  padding-bottom: 0.3125rem;
}

/* ── Checkbox / radio ──────────────────────────────────────────────────
	 * ✓ 16px square, 1px border, unfilled (10911:313).
	 * ─────────────────────────────────────────────────────────────────── */

.gform_wrapper .gfield_checkbox,
	.gform_wrapper .gfield_radio {
  margin: 0px;
  list-style-type: none;
}

.gform_wrapper .gfield_checkbox > :not([hidden]) ~ :not([hidden]),
	.gform_wrapper .gfield_radio > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
}

.gform_wrapper .gfield_checkbox,
	.gform_wrapper .gfield_radio {
  padding: 0px;
}

.gform_wrapper .gchoice {
  display: flex;
  align-items: flex-start;
  gap: 0.625rem;
}

/*
	 * ⚠ THE CONSENT FIELD IS NOT .gchoice AND HAS NO .gfield_consent_description.
	 *
	 * Gravity Forms renders a consent field as
	 *   .ginput_container_consent > input[type=checkbox] + label.gform-field-label
	 * with no .gchoice wrapper and no description element, so every rule below
	 * that was written for checkboxes missed it entirely. The footer shipped a
	 * 13×13 unstyled browser checkbox next to 16px/24 copy where the design has
	 * a 16px bordered box next to 12px/18 — which ran the block to 96px against
	 * the design's 59 and pushed the submit button 37px down.
	 *
	 * The label is also `display: inline`, so its second and third lines wrapped
	 * back under the checkbox instead of staying in their own 472px column.
	 * Hence the flex row here rather than relying on inline flow.
	 *
	 * ✓ 16px box, 12px gap, text column 472 wide (10911:311/313/315).
	 */

.gform_wrapper .ginput_container_consent {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
}

.gform_wrapper .gchoice input[type="checkbox"],
	.gform_wrapper .gchoice input[type="radio"],
	.gform_wrapper .ginput_container_consent input[type="checkbox"] {
  margin-top: 0.125rem;
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  border-width: 1px;
  --tw-border-opacity: 1;
  border-color: rgb(41 139 151 / var(--tw-border-opacity, 1));
  background-color: transparent;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 200ms;
}

.gform_wrapper .gchoice input[type="checkbox"]:checked,
	.gform_wrapper .gchoice input[type="radio"]:checked,
	.gform_wrapper .ginput_container_consent input[type="checkbox"]:checked {
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
}

.gform_wrapper .gchoice input[type="checkbox"]:focus-visible,
	.gform_wrapper .gchoice input[type="radio"]:focus-visible,
	.gform_wrapper .ginput_container_consent input[type="checkbox"]:focus-visible {
  outline-style: solid;
  outline-width: 2px;
  outline-offset: 2px;
  outline-color: #E4462B;
}

.gform_wrapper .gchoice input[type="radio"] {
  border-radius: 9999px;
}

/* Tick drawn with gradients — the icomoon set is not exported yet. */

.gform_wrapper .gchoice input[type="checkbox"]:checked,
	.gform_wrapper .ginput_container_consent input[type="checkbox"]:checked {
  background-image:
			linear-gradient(
				45deg,
				transparent 45%,
				#f3f8fa 45%,
				#f3f8fa 55%,
				transparent 55%
			),
			linear-gradient(
				-45deg,
				transparent 45%,
				#f3f8fa 45%,
				#f3f8fa 55%,
				transparent 55%
			);
  background-size:
			60% 2px,
			60% 2px;
  background-position:
			30% 62%,
			52% 55%;
  background-repeat: no-repeat;
}

/* ✓ 12px consent copy (10911:315). */

.gform_wrapper .gchoice label,
	.gform_wrapper .gfield_consent_description,
	.gform_wrapper .ginput_container_consent label {
  margin: 0px;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 0.75rem;
  font-weight: 400;
  line-height: 1.5;
  --tw-text-opacity: 1;
  color: rgb(41 139 151 / var(--tw-text-opacity, 1));
}

/* ── Submit ────────────────────────────────────────────────────────────
	 * ✓ The standard .btn, NOT full width (10911:317). 30px above.
	 * ─────────────────────────────────────────────────────────────────── */

.gform_wrapper .gform_footer {
  margin: 0px;
  margin-top: 1.875rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem;
  padding: 0px;
}

.gform_wrapper .gform_footer input[type="submit"],
	.gform_wrapper .gform_footer button {
  display: inline-flex;
  cursor: pointer;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  border-radius: 0.625rem;
  border-width: 1px;
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 1rem;
  font-weight: 500;
  line-height: 1;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.gform_wrapper .gform_footer input[type="submit"]:hover,
	.gform_wrapper .gform_footer button:hover {
  --tw-border-opacity: 1;
  border-color: rgb(201 58 34 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(201 58 34 / var(--tw-bg-opacity, 1));
}

.gform_wrapper .gform_footer input[type="submit"]:focus-visible,
	.gform_wrapper .gform_footer button:focus-visible {
  outline-style: solid;
  outline-width: 2px;
  outline-offset: 2px;
  outline-color: #24818D;
}

/* Gravity's AJAX spinner. */

.gform_wrapper .gform_ajax_spinner {
  margin-left: 0.75rem;
  display: inline-block;
  width: 1rem;
  height: 1rem;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

.gform_wrapper .gform_ajax_spinner {
  animation: spin 1s linear infinite;
  border-radius: 9999px;
  border-width: 2px;
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
  border-top-color: transparent;
}

/* ── Validation ────────────────────────────────────────────────────────
	 * ~ NOT IN THE DESIGN — no error state is drawn anywhere. `danger` is a
	 * theme token added for exactly this.
	 * ─────────────────────────────────────────────────────────────────── */

.gform_wrapper .gfield_error input,
	.gform_wrapper .gfield_error select,
	.gform_wrapper .gfield_error textarea {
  border-bottom-width: 2px;
  --tw-border-opacity: 1;
  border-bottom-color: rgb(179 38 30 / var(--tw-border-opacity, 1));
}

.gform_wrapper .validation_message {
  margin-top: 0.375rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 0.75rem;
  line-height: 1.4;
  --tw-text-opacity: 1;
  color: rgb(179 38 30 / var(--tw-text-opacity, 1));
}

.gform_wrapper .gform_validation_errors {
  margin-bottom: 1.25rem;
  border-left-width: 2px;
  --tw-border-opacity: 1;
  border-color: rgb(179 38 30 / var(--tw-border-opacity, 1));
  background-color: rgb(179 38 30 / 0.05);
  padding: 1rem;
}

.gform_wrapper .gform_validation_errors h2,
	.gform_wrapper .gform_submission_error {
  margin: 0px;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 0.9375rem;
  font-weight: 500;
  text-transform: none;
  --tw-text-opacity: 1;
  color: rgb(179 38 30 / var(--tw-text-opacity, 1));
}

.gform_confirmation_message {
  border-left-width: 2px;
  --tw-border-opacity: 1;
  border-color: rgb(41 139 151 / var(--tw-border-opacity, 1));
  background-color: rgb(41 139 151 / 0.05);
  padding: 1.25rem;
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

/* ═══════════════════════════════════════════════════════════════════════
	 * BOXED VARIANT — Contact page (12946:4217)
	 *
	 * Bordered boxes with placeholders and no visible labels. Opted into by
	 * wrapping the form in .contact-form-panel.
	 * ═══════════════════════════════════════════════════════════════════════ */

.contact-form-panel .gform_wrapper .gfield_label {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

.contact-form-panel .gform_wrapper .gform_fields {
  row-gap: 1rem;
}

.contact-form-panel
		.gform_wrapper
		input:where(
			[type="text"],
			[type="email"],
			[type="tel"],
			[type="url"],
			[type="number"],
			[type="date"]
		),
	.contact-form-panel .gform_wrapper select,
	.contact-form-panel .gform_wrapper textarea {
  border-width: 1px;
  border-color: rgb(15 29 37 / 0.15);
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}

.contact-form-panel .gform_wrapper textarea {
  min-height: 7.5rem;
}

.contact-form-panel .gform_wrapper input:focus,
	.contact-form-panel .gform_wrapper select:focus,
	.contact-form-panel .gform_wrapper textarea:focus {
  border-width: 2px;
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
  padding-left: 0.9375rem;
  padding-right: 0.9375rem;
  padding-top: 0.6875rem;
  padding-bottom: 0.6875rem;
}

/* ✓ Full-width submit on this form only (12946:4217). */

.contact-form-panel .gform_wrapper .gform_footer input[type="submit"] {
  width: 100%;
  text-transform: uppercase;
}

.contact-form-panel .gform_wrapper .gfield_error input,
	.contact-form-panel .gform_wrapper .gfield_error textarea {
  --tw-border-opacity: 1;
  border-color: rgb(179 38 30 / var(--tw-border-opacity, 1));
}

/* ═══════════════════════════════════════════════════════════════════════
	 * SEARCH + COMMENTS
	 * ═══════════════════════════════════════════════════════════════════════ */

form[role="search"] {
  position: relative;
  display: flex;
}

form[role="search"] label {
  flex-grow: 1;
}

.comment-form input:where([type="text"], [type="email"], [type="url"]),
	.comment-form textarea {
  width: 100%;
  border-radius: 0px;
  border-width: 1px;
  border-color: rgb(15 29 37 / 0.15);
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 0.9375rem;
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
  outline: 2px solid transparent;
  outline-offset: 2px;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.comment-form input:where([type="text"], [type="email"], [type="url"]):focus,
	.comment-form textarea:focus {
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
}

.comment-form .submit {
  cursor: pointer;
  border-radius: 0.625rem;
  border-width: 1px;
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-weight: 500;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.comment-form .submit:hover {
  --tw-border-opacity: 1;
  border-color: rgb(201 58 34 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(201 58 34 / var(--tw-bg-opacity, 1));
}

/* ── Third-party form embed ──────────────────────────────────────────────
	 * ⚠ NOT IN THE DESIGN, and NOT STYLEABLE. These providers hand back a
	 * cross-origin iframe, so everything inside it — the heading, the fields,
	 * the submit button — belongs to them and no rule written here can reach
	 * it. Whatever styling control exists is in the snippet the editor pastes
	 * (Glazier, for one, takes a `color` for its submit button).
	 *
	 * So these rules stop at the box: fill the panel, and hold a sensible
	 * height until the provider's resize message arrives with the real one.
	 * Without the min-height the panel collapses on first paint and the footer
	 * visibly jumps.
	 * ─────────────────────────────────────────────────────────────────────── */

.form-embed {
  width: 100%;
}

.form-embed iframe {
  display: block;
  min-height: 37.5rem;
  width: 100%;
  border-width: 0px;
}

.site-header {
  position: fixed;
  top: 0px;
  left: 0px;
  right: 0px;
  z-index: 99;
  width: 100%;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

/* ── Announcement bar ───────────────────────────────────────────────────
	 * ✓ 60px tall, solid #298B97, content centred (10911:368/370).
	 * Collapses out of the way when the header goes sticky, so the nav keeps
	 * the top of the viewport — mirrors what .header-top did in the reference
	 * theme.
	 * ─────────────────────────────────────────────────────────────────────── */

.announcement-bar {
  overflow: hidden;
  --tw-bg-opacity: 1;
  background-color: rgb(41 139 151 / var(--tw-bg-opacity, 1));
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

@media not all and (min-width: 992px) {
  .announcement-bar {
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
  }
}

@media (min-width: 992px) {
  .announcement-bar {
    height: 3.75rem;
  }
}

@media not all and (min-width: 992px) {
  .stickyHeader .announcement-bar {
    height: 0px;
    padding-top: 0px;
    padding-bottom: 0px;
  }
}

@media (min-width: 992px) {
  .stickyHeader .announcement-bar {
    height: 0px;
  }
}

.announcement-bar-inner {
  display: flex;
  width: 100%;
  height: 100%;
  align-items: center;
  justify-content: center;
  gap: 0.625rem;
  padding-left: 1rem;
  padding-right: 1rem;
  text-align: center;
  font-family: Poppins, system-ui, sans-serif;
  font-size: 0.8125rem;
  font-weight: 600;
  text-transform: uppercase;
  line-height: 1.5;
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
  text-decoration-line: none;
}

@media (min-width: 992px) {
  .announcement-bar-inner {
    font-size: 1rem;
  }
}

.announcement-bar-inner:where(a) {
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.announcement-bar-inner:where(a):hover {
  color: rgb(243 248 250 / 0.85);
}

/* ✓ 36×36 (10911:371). shrink-0 so a long label never squashes it. */

.announcement-bar-icon {
  width: 1.5rem;
  height: 1.5rem;
  flex-shrink: 0;
}

@media (min-width: 992px) {
  .announcement-bar-icon {
    width: 2.25rem;
    height: 2.25rem;
  }
}

/* ── Scrolled state ───────────────────────────────────────────────────
	 * ✓ RESOLVED FROM THE DESIGN (was blocker #4 — "two near-identical nav
	 *   frames, neither marked"). The names mislead; the renders do not:
	 *     10911:348 "Navigation Bar Top"  = RESTING — transparent over the
	 *                                       hero photo, off-white labels
	 *     10911:330 "Navigation Bar Main" = SCROLLED — solid light bar,
	 *                                       TEAL labels, soft drop shadow
	 *
	 * Sampled straight off the 10911:330 export: background #F3F8FA (exactly
	 * atg-gray-50), labels #298B97 (exactly secondary), and a ~12px shadow
	 * fading from #E0E4E6 at the edge.
	 *
	 * This replaces a dark-navy bar with off-white labels. The old note here
	 * argued against teal because "the announcement bar above is teal and two
	 * adjacent teals read as one slab" — but the bar is LIGHT, not teal, and
	 * the announcement bar collapses to h-0 in this state anyway, so the two
	 * are never adjacent.
	 *
	 * ⚠ THIS RULE WAS BEING PURGED. `stickyHeader` is added by script.js and
	 * appeared in no file Tailwind was told to scan, so the whole block was
	 * dropped from style.css and the scrolled bar shipped fully transparent with
	 * no shadow. Its DESCENDANT rules survived — they also name .navbar-nav /
	 * .announcement-bar, which are in the markup — so the labels went teal on a
	 * see-through bar and it looked like a styling bug rather than a missing
	 * rule. Fixed by adding ./javascript/**\/*.js to `content`; see the note
	 * there before removing it.
	 *
	 * Nothing about the GEOMETRY changes here — see the state table at the top
	 * of the file. Only paint.
	 * ─────────────────────────────────────────────────────────────────────── */

/*
	 * xl:backdrop-blur-sm, not backdrop-blur-sm. `backdrop-filter` makes its
	 * element a containing block for `position: fixed` descendants — and the
	 * off-canvas panel (.navbar-collapse, max-xl:fixed max-xl:top-0
	 * max-xl:bottom-0) is exactly that below xl. Unscoped, scrolling past the
	 * threshold reflowed the panel's fixed offsets against .site-header's own
	 * short box instead of the viewport, collapsing the full-height drawer
	 * into a squashed strip pinned near the top. Desktop keeps the blur since
	 * the bar there is genuinely translucent; mobile's panel is already an
	 * opaque bg-atg-gray-900, so it loses nothing visually.
	 */

.stickyHeader {
  background-color: rgb(243 248 250 / 0.95);
  --tw-shadow: 0 4px 12px rgba(15,29,37,0.10);
  --tw-shadow-colored: 0 4px 12px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

@media (min-width: 1200px) {
  .stickyHeader {
    --tw-backdrop-blur: blur(4px);
    -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
    backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
  }
}

.site-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-top: 1rem;
  padding-bottom: 1rem;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

@media (min-width: 1200px) {
  .site-nav {
    padding-top: 0.75rem;
    padding-bottom: 0.75rem;
  }
}

@media (min-width: 1440px) {
  .site-nav {
    min-height: 7.25rem;
    gap: 1.5rem;
    padding-top: 0px;
    padding-bottom: 0px;
  }
}

.site-nav ul {
  margin: 0px;
  list-style-type: none;
}

.site-nav ul > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0px * var(--tw-space-y-reverse));
}

.site-nav ul {
  padding: 0px;
}

/*
	 * No `.stickyHeader .site-nav` height override. The bar is 116px in BOTH
	 * design frames; squeezing it to py-3 (80px total) on scroll was invented
	 * here, and because the crest shrank with it the nav row also slid 26px
	 * left mid-scroll.
	 */

/*
	 * NO top offset on .site-content.
	 *
	 * The reference theme offsets it by the header height and lets body.home
	 * opt out, because only its homepage hero sat under the transparent header.
	 * In THIS design every page does — the inner banner photo runs up behind
	 * the nav on all of 12946:99, 401, 1053, 3703, 1929, 2408 … — so offsetting
	 * here pushed the banner down and left the off-white nav sitting on the
	 * white page background, invisible.
	 *
	 * Header clearance is padding-top on .hero / .inner-banner instead, driven
	 * by the same --header-h custom property. See banner.css.
	 */

.site-content {
  margin-top: 0px;
}

/* Lock scroll behind the open off-canvas panel. */

.nav-open {
  overflow: hidden;
}

/* ── Brand ──────────────────────────────────────────────────────────────
	 * ⚠ THESE HEIGHTS ARE INK, NOT BOX — and that only works because the
	 * attachment is TRIMMED.
	 *
	 * The Figma asset is 210×246 with the mark floating in transparent padding;
	 * its ink is 183×215, i.e. 87% of the canvas. Setting `h-[7.25rem]` on that
	 * file drew a 101px mark, not a 116px one, so the crest read ~7% small
	 * against the design however the number was tuned. `qa/trim-logo.php` crops
	 * to the ink box, which is what makes `height` mean what it says — the same
	 * fix the client logo strip already needed.
	 *
	 * ✓ 109px — the design's visible crest (93×109, 10911:332). Unchanged when
	 * scrolled: see the state table at the top of this file.
	 *
	 * The sub-2xl values are ~ derived — the design has no mobile or tablet
	 * frame — and are the previous box heights × 0.874, so the visible mark is
	 * the size it has always been at those widths.
	 * ─────────────────────────────────────────────────────────────────────── */

.site-header .navbar-brand {
  display: inline-block;
  flex: none;
  line-height: 1;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.site-header .navbar-brand figure {
  margin-bottom: 0px;
}

.site-header .navbar-brand img {
  height: 2.875rem;
  width: auto;
}

@media (min-width: 1200px) {
  .site-header .navbar-brand img {
    height: 4.75rem;
  }
}

@media (min-width: 1440px) {
  .site-header .navbar-brand img {
    height: 6.8125rem;
  }
}

.site-header .navbar-brand {
  /* ✓ 109px ink (10911:332) */
}

/* ── Off-canvas panel below xl, inline row above ─────────────────────── */

.site-header .navbar-collapse {
  width: 100%;
  gap: 1rem;
}

@media not all and (min-width: 1200px) {
  .site-header .navbar-collapse {
    visibility: hidden;
    position: fixed;
    top: 0px;
    bottom: 0px;
    left: -20rem;
    z-index: 10000;
    width: 17.5rem;
    max-width: 85vw;
    flex-direction: column;
    align-items: stretch;
    gap: 0px;
    overflow-y: auto;
    --tw-bg-opacity: 1;
    background-color: rgb(15 29 37 / var(--tw-bg-opacity, 1));
    padding-top: 6rem;
    padding-bottom: 6rem;
    padding-left: 0px;
    padding-right: 0px;
    --tw-shadow: 0 0 40px rgba(0,0,0,0.6);
    --tw-shadow-colored: 0 0 40px var(--tw-shadow-color);
    box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
    transition-property: all;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 300ms;
  }
}

@media (min-width: 1200px) {
  .site-header .navbar-collapse {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
  }
}

@media (min-width: 1440px) {
  .site-header .navbar-collapse {
    gap: 2rem;
  }
}

@media not all and (min-width: 1200px) {
  .site-header .navbar-collapse.show {
    visibility: visible;
    left: 0px;
  }
}

/* ── Top-level items ──────────────────────────────────────────────────
	 *
	 * ⚠ FIT NOTE (Phase 9). The design only specifies 1440, where the row has
	 * plenty of room. At the xl band the numbers are much tighter: at 1200 the
	 * container is 1136px inside its padding, and logo + five items + gaps +
	 * the button needed 1162px at the original 28px gap — so the whole
	 * 1200–1439 range rendered a TWO-ROW nav with the button's label wrapped
	 * across three lines. 1280 and 1366 are common laptop widths, so this was
	 * not an edge case.
	 *
	 * Tightening three gaps at xl only — this one to 4, .site-nav to 4 and
	 * .navbar-collapse to 4 — fits one row from 1200 up, with the 1440 design
	 * values untouched at 2xl.
	 *
	 * ⚠ THE REMAINING SLACK IS 15px AT xl AND 9px AT 2xl (measured, 5-item menu).
	 * The row is inherently tight — that 9px is the DESIGN's own margin at 1440,
	 * not something introduced here. The header comment at the top of this file
	 * records SIX items in the Figma nav (…· About · Resources); the menu
	 * currently has five. Adding the sixth WILL overflow at every width.
	 *
	 * When it does, do not shave gaps further — move the off-canvas → inline
	 * switch from xl to 2xl (swap every max-xl:/xl: prefix in this file) so
	 * 1200–1439 gets the hamburger instead of a broken row. That is a UX change
	 * and needs the designer, which is why it is not done here.
	 */

/*
	 * wp_nav_menu's container div, so the flex child of .navbar-collapse.
	 * mx-auto here is what centres the nav between the crest and the CTA —
	 * 180.5px each side at 1440 in the design (10911:331).
	 */

@media (min-width: 1200px) {
  .site-header .nav-primary-inner {
    margin-left: auto;
    margin-right: auto;
  }

  .site-header .navbar-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    -moz-column-gap: 1rem;
         column-gap: 1rem;
  }
}

@media (min-width: 1440px) {
  .site-header .navbar-nav {
    -moz-column-gap: 1.625rem;
         column-gap: 1.625rem;
  }
}

.site-header .navbar-nav {
  /* ✓ 26px item pitch (10911:336) */
}

/*
	 * ✓ #F3F8FA on a 22px line box (10911:337). Poppins REGULAR at 16px.
	 *
	 * This was Medium on the reasoning that "the design's nav sits between
	 * Regular body and the heading weight" — a guess, and measurably wrong. At
	 * matching cap height (12px) every label rendered ~7% wide against the
	 * export: COMMERCIAL 111 vs 104, RESIDENTIAL 99 vs 91, RESOURCES 95 vs 88.
	 * Same size, more weight. Regular lands on the design's widths.
	 *
	 * Hover goes to `primary` rather than primary-700: the nav is over a dark
	 * photo, where the lighter brand orange has the contrast and the darker
	 * accessibility step does not.
	 */

.site-header .navbar-nav .nav-link {
  position: relative;
  display: block;
  width: 100%;
  border-bottom-width: 1px;
  border-bottom-color: rgb(243 248 250 / 0.1);
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  padding-top: 0.875rem;
  padding-bottom: 0.875rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 0.9375rem;
  font-weight: 400;
  text-transform: uppercase;
  line-height: 1.375;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
  text-decoration-line: none;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.site-header .navbar-nav .nav-link:hover {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

@media (min-width: 1200px) {
  .site-header .navbar-nav .nav-link {
    width: auto;
    border-bottom-width: 0px;
    padding: 0px;
  }
}

@media (min-width: 1440px) {
  .site-header .navbar-nav .nav-link {
    font-size: 1rem;
  }
}

/*
	 * ✓ Scrolled: labels go teal on the light bar (#298B97 on #F3F8FA,
	 * 10911:330). Off-white labels would be invisible there.
	 *
	 * Scoped to xl and up: below xl these links live inside the dark
	 * off-canvas panel, which is unaffected by the sticky bar, so they must
	 * stay off-white.
	 */

@media (min-width: 1200px) {
  .stickyHeader .navbar-nav .nav-link {
    --tw-text-opacity: 1;
    color: rgb(41 139 151 / var(--tw-text-opacity, 1));
  }

  .stickyHeader .navbar-nav .nav-link:hover {
    --tw-text-opacity: 1;
    color: rgb(228 70 43 / var(--tw-text-opacity, 1));
  }
}

/* Current item: brand orange, with a rule beneath on desktop. */

.site-header .current-menu-item > .nav-link,
	.site-header .current-menu-ancestor > .nav-link,
	.site-header .current-menu-parent > .nav-link {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

@media (min-width: 1200px) {
  .site-header .current-menu-item > .nav-link::after,
	.site-header .current-menu-ancestor > .nav-link::after,
	.site-header .current-menu-parent > .nav-link::after {
    position: absolute;
    bottom: -0.375rem;
    left: 0px;
    height: 1px;
    width: 100%;
    --tw-bg-opacity: 1;
    background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
    --tw-content: '';
    content: var(--tw-content);
  }
}

.site-header .menu-item-has-children {
  position: relative;
}

/* Room for the caret below xl only — at xl the caret is hidden. */

.site-header .menu-item-has-children > .nav-link {
  padding-right: 3rem;
}

@media (min-width: 1200px) {
  .site-header .menu-item-has-children > .nav-link {
    padding-right: 0px;
  }
}

/* ── Caret ──────────────────────────────────────────────────────────────
	 * The walker emits <i class="caret icon-chevron-down">. The icomoon set has
	 * not been exported yet, so the glyph is drawn with borders instead.
	 *
	 * TODO: once icomoon lands, delete the ::before block and let the font glyph
	 * render. Keep the sizing and hit-area rules.
	 * ─────────────────────────────────────────────────────────────────────── */

/*
	 * ✓ HIDDEN AT xl. The design's nav has no chevron on "Resources"
	 * (10911:348 / 10911:330) — the dropdown opens on hover up there.
	 *
	 * It also had to go: the walker emits the caret as a SIBLING of .nav-link
	 * inside a block <li>, so `xl:static` put it on its own line *under* the
	 * label. That made the Resources li 29px against everyone else's 22px and
	 * knocked the whole row out of vertical alignment.
	 *
	 * Below xl it stays — there it is the submenu toggle in the off-canvas panel.
	 */

.site-header .caret {
  position: absolute;
  top: 0.25rem;
  right: 0.5rem;
  display: grid;
  width: 2.75rem;
  height: 2.75rem;
  cursor: pointer;
  place-items: center;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.site-header .caret::before {
  display: block;
  width: 0.4375rem;
  height: 0.4375rem;
  --tw-translate-y: -1px;
  --tw-rotate: 45deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  border-bottom-width: 2px;
  border-right-width: 2px;
  content: var(--tw-content);
  border-color: currentColor;
}

@media (min-width: 1200px) {
  .site-header .caret {
    display: none;
  }
}

.site-header .caret[aria-expanded="true"]::before {
  --tw-translate-y: 1px;
  content: var(--tw-content);
  --tw-rotate: -135deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.site-header .menu-item-has-children:hover > .caret,
	.site-header .caret:hover {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

@media (min-width: 1200px) {
  .site-header .navbar-nav > .menu-item-has-children > .caret {
    pointer-events: none;
  }
}

/* ── Dropdowns — hover above xl, slide-toggle below ──────────────────── */

@media not all and (min-width: 1200px) {
  .navbar-nav .menu-item .dropdown-menu {
    display: none;
  }
}

@media (min-width: 1200px) {
  .navbar-nav .menu-item .dropdown-menu {
    visibility: hidden;
    position: absolute;
    top: 130%;
    left: 0px;
    min-width: 15rem;
    border-radius: 0.75rem;
    border-width: 1px;
    border-color: rgb(243 248 250 / 0.15);
    --tw-bg-opacity: 1;
    background-color: rgb(15 29 37 / var(--tw-bg-opacity, 1));
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
    opacity: 0;
    --tw-shadow: 0 18px 40px rgba(0,0,0,0.55);
    --tw-shadow-colored: 0 18px 40px var(--tw-shadow-color);
    box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
    transition-property: all;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 300ms;
  }

  .navbar-nav .menu-item-has-children:hover > .dropdown-menu {
    visibility: visible;
    top: 100%;
    opacity: 1;
  }
}

.navbar-nav .dropdown-item {
  display: block;
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 0.875rem;
  line-height: 1.375;
  --tw-text-opacity: 1;
  color: rgb(200 214 219 / var(--tw-text-opacity, 1));
  text-decoration-line: none;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 200ms;
}

.navbar-nav .dropdown-item:hover {
  background-color: rgb(243 248 250 / 0.05);
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

@media not all and (min-width: 1200px) {
  .navbar-nav .dropdown-item {
    border-bottom-width: 1px;
    border-bottom-color: rgb(243 248 250 / 0.05);
  }
}

@media (min-width: 1200px) {
  .navbar-nav .dropdown-item {
    padding-top: 0.625rem;
    padding-bottom: 0.625rem;
    font-size: 0.9375rem;
  }
}

.navbar-nav .current-menu-item > .dropdown-item {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

/* Third level flies out to the right on desktop, indents on mobile. */

@media not all and (min-width: 1200px) {
  .navbar-nav .dropdown-menu .dropdown-menu {
    padding-left: 1rem;
  }
}

@media (min-width: 1200px) {
  .navbar-nav .dropdown-menu .dropdown-menu {
    left: calc(100% + 2px);
    top: 0px;
  }

  .navbar-nav .dropdown-menu .menu-item-has-children:hover > .dropdown-menu {
    top: 0px;
  }

  .navbar-nav .dropdown-menu .caret {
    position: absolute;
    right: 0.75rem;
    top: 50%;
    --tw-translate-y: -50%;
    transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  }

  .navbar-nav .dropdown-menu .caret::before {
    content: var(--tw-content);
    --tw-rotate: -45deg;
    transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  }
}

/* ── Header actions ──────────────────────────────────────────────────────
	 * Just the "Call Us Now" pill (10911:343). The reference theme also put a
	 * bare phone link up here; this design does not — the number appears in the
	 * hero and the footer instead, so `.header-phone` has been removed rather
	 * than left as dead CSS.
	 * ─────────────────────────────────────────────────────────────────────── */

.header-actions {
  display: flex;
  align-items: center;
  gap: 1rem;
}

@media not all and (min-width: 1200px) {
  .header-actions {
    flex-direction: column;
    align-items: stretch;
    gap: 0.75rem;
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    padding-top: 1.5rem;
  }
}

/*
	 * ✓ 42px tall (10911:343) — the header pill is its own size, between .btn's
	 * 46px and .btn-sm's 37px. Set as a height rather than by re-tuning padding
	 * so the 1px border is inside the number, the way .btn already handles it.
	 * .btn is inline-flex + items-center, so the label stays centred.
	 *
	 * Height only, and only from xl: the width already lands on the design's
	 * 122px from .btn-sm's px-4, and below xl this button is full-width inside
	 * the off-canvas panel.
	 */

@media (min-width: 1200px) {
  .header-actions .btn {
    height: 2.625rem;
    padding-top: 0px;
    padding-bottom: 0px;
  }
}

/* ── Hamburger → X ──────────────────────────────────────────────────── */

.site-header .navbar-toggler {
  position: relative;
  display: block;
  height: 2.375rem;
  width: 2.75rem;
  border-radius: 0.625rem;
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  padding: 0.5rem;
  transition-property: all;
  transition-duration: 300ms;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.site-header .navbar-toggler:focus-visible {
  outline-style: solid;
  outline-width: 2px;
  outline-offset: 2px;
  outline-color: #24818D;
}

@media (min-width: 1200px) {
  .site-header .navbar-toggler {
    display: none;
  }
}

.site-header .navbar-toggler span {
  display: block;
  height: 0.1875rem;
  border-radius: 9999px;
  --tw-bg-opacity: 1;
  background-color: rgb(243 248 250 / var(--tw-bg-opacity, 1));
  transition-property: all;
  transition-duration: 150ms;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.site-header .navbar-toggler span:nth-child(2) {
  margin-top: 0.3125rem;
  margin-bottom: 0.3125rem;
  width: calc(100% - 8px);
  transition-property: all;
  transition-duration: 300ms;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.site-header .navbar-toggler span:nth-child(3) {
  width: calc(100% - 15px);
  transition-property: all;
  transition-duration: 300ms;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.site-header .navbar-toggler.collapsed span:first-child {
  width: 100%;
  --tw-translate-y: 9px;
  --tw-rotate: 45deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transition-property: all;
  transition-delay: 300ms;
  transition-duration: 300ms;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.site-header .navbar-toggler.collapsed span:nth-child(2) {
  visibility: hidden;
  width: 0px;
  opacity: 0;
  transition-property: all;
  transition-duration: 300ms;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.site-header .navbar-toggler.collapsed span:last-child {
  width: 100%;
  --tw-translate-y: -7px;
  --tw-rotate: 130deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  transition-property: all;
  transition-delay: 300ms;
  transition-duration: 300ms;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.toc-list {
  margin: 0px;
  list-style-type: none;
}

.toc-list > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
}

.toc-list {
  padding: 0px;
  counter-reset: toc;
}

.toc-item {
  position: relative;
  padding-left: 1.5rem;
  font-size: 0.875rem;
  line-height: 1.5;
  counter-increment: toc;
}

.toc-item::before {
  position: absolute;
  left: 0px;
  top: 0px;
  font-weight: 500;
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
  content: counter(toc) ".";
}

/* Sub-entries indent and drop their numeral — they inherit the parent's. */

.toc-item--sub {
  padding-left: 2.5rem;
  font-size: 0.8125rem;
  counter-increment: none;
}

.toc-item--sub::before {
  left: 1.5rem;
  --tw-text-opacity: 1;
  color: rgb(94 112 120 / var(--tw-text-opacity, 1));
  content: "–";
}

.toc-item a {
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
  text-decoration-line: none;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.toc-item a:hover {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

/* Set by the scroll spy on whichever heading is nearest the viewport top. */

.toc-item a.is-active {
  font-weight: 500;
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

/* Anchor offset so a jumped-to heading clears the fixed header. */

.js-toc-source :is(h2, h3) {
  scroll-margin-top: calc(var(--header-h, 11rem) + 1rem);
}

/* ── Article content: the two callouts the hurricane guide draws ─────────
	 *
	 * Both live in POST BODY HTML, so both class names are in tailwind.config's
	 * `raw` block — a class that appears only in the database is purged (trap 7).
	 */

/*
	 * ✓ The full-width teal caption band above a figure (12946:3458) — 816×60
	 * with the title centred. The Saffir-Simpson chart ships with its OWN teal
	 * header baked in; the frame crops that off and draws this instead, so the
	 * band runs the content width rather than the image's 750.
	 */

.article-caption {
  margin-bottom: 0px;
  display: flex;
  min-height: 3.75rem;
  align-items: center;
  justify-content: center;
  --tw-bg-opacity: 1;
  background-color: rgb(41 139 151 / var(--tw-bg-opacity, 1));
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
  text-align: center;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-weight: 500;
  text-transform: uppercase;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

/* The figure that band captions: 16px of padding around the image (12946:3460). */

.article-caption + figure {
  margin-bottom: 1.5rem;
  border-width: 1px;
  border-top-width: 0px;
  border-color: rgb(15 29 37 / 0.1);
  padding: 1rem;
}

@media (min-width: 992px) {
  .article-caption + figure {
    margin-bottom: 2rem;
  }
}

.article-caption + figure img {
  margin-left: auto;
  margin-right: auto;
  display: block;
  height: auto;
  max-width: 100%;
}

/*
	 * ✓ "Pro Tip:" — the lead-in is primary and the sentence stays body ink
	 * (12946:3478, 12946:3569). Not a blockquote: base.css gives those an italic
	 * bar and a tinted ground, and the frame draws neither.
	 */

.article-tip {
  margin-top: 1.5rem;
}

@media (min-width: 992px) {
  .article-tip {
    margin-top: 2rem;
  }
}

.article-tip strong {
  font-weight: 500;
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

/*
	 * ⚠ A SIX-ROW, THREE-COLUMN TABLE DOES NOT FIT A PHONE, AND THE AUDIT IS RIGHT
	 * TO SAY SO. The hurricane guide's shutter comparison (12946:3516) is 816 wide
	 * with three text columns; at 375 it pushed the document to 463 and took the
	 * whole page into horizontal overflow.
	 *
	 * The table scrolls inside its own figure rather than the page scrolling —
	 * the same rule the handoff's audit note describes for a legitimate scroll
	 * container. No frame under 1440 exists to measure against, so the desktop
	 * geometry is untouched.
	 */

.default-block .wp-block-table {
  margin-left: -0.75rem;
  margin-right: -0.75rem;
  overflow-x: auto;
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}

@media (min-width: 576px) {
  .default-block .wp-block-table {
    margin-left: 0px;
    margin-right: 0px;
    padding-left: 0px;
    padding-right: 0px;
  }
}

.default-block .wp-block-table table {
  min-width: 36rem;
}

/* ── Privacy Policy: the numbered section headings (12946:4547) ──────────
	 *
	 * Ten sections, each opening with a 32px primary disc holding its number and
	 * a 22px SemiBold uppercase title 12px to its right. Both class names live in
	 * post-body HTML, so both are in tailwind.config's `raw` block (trap 7).
	 *
	 * ⚠ A CLASS RATHER THAN THE h2 TOKEN. base.css sets every heading to 36px
	 * uppercase; this frame's section title is 22, so the size has to be stated.
	 * Scoped under .default-block so it cannot leak into a module heading.
	 */

.default-block .policy-heading {
  margin-bottom: 1rem;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 1.375rem;
  font-weight: 600;
  text-transform: uppercase;
  line-height: 1.375;
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

/*
	 * ✓ 32px disc, white Bold numeral centred. `shrink-0` so a two-digit number
	 * (section 10) cannot squash it, and `leading-none` so the digit sits on the
	 * optical centre rather than the line box's.
	 */

.default-block .policy-num {
  display: grid;
  width: 2rem;
  height: 2rem;
  flex-shrink: 0;
  place-items: center;
  border-radius: 9999px;
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  font-size: 1rem;
  font-weight: 700;
  line-height: 1;
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}

/*
	 * The frame gives this page's body copy #505050 rather than the site's
	 * #0F1D25 — the same grey the hurricane guide uses. Long legal copy at a
	 * lighter weight is the one place that reads as deliberate rather than a
	 * stray fill, so it is honoured here and nowhere else.
	 */

.default-block .policy-body {
  --tw-text-opacity: 1;
  color: rgb(80 80 80 / var(--tw-text-opacity, 1));
}

/**
 * Hero and inner banner.
 *
 * Figma 10911:66 / 71 (home) and 12946:99 / 401 / 1053 / 3703 (inner).
 *
 * The z-index ladder matters:
 *   media  z-[-1]  →  scrim  z-[1]  →  content  z-[3]  →  teal strip  z-[4]
 *
 * ⚠ THE SCRIM IS THEME-AUTHORED. The Figma hero is a single flattened photo
 *   with the darkening baked into the image, so there is no overlay value to
 *   read. Off-white text over an arbitrary client upload needs one regardless —
 *   a left-to-right gradient, heaviest behind the copy, matching how the
 *   supplied photograph is shaded.
 *
 * ⚠ NOT IN THE DESIGN: every breakpoint below 1440, and all hover states.
 */

/**
 * Buttons.
 *
 * Figma: the "Link" component, four identical instances on the homepage —
 * hero CTA (10911:78), about CTA (10911:131), services CTA (10911:198),
 * form submit (10911:316).
 *   fill #E4462B · 1px border same colour · rounded 10px
 *   padding 19px / 12px · Poppins Medium 16px · label #F3F8FA · lh 21.7px
 *   NOT uppercase — the label is sentence case ("Get A Free Quote")
 *
 * Every instance carries a hidden SVG arrow frame (`hidden="true"` in Figma),
 * so the design intends a trailing arrow but does not show one. Not rendered.
 *
 * ⚠ `tracking-normal` IS LOAD-BEARING. `body` sets `tracking-body` (0.03em) and
 * it inherits into every button, which the Link component does not have on any
 * instance. On "Request a Free Estimate" that was 12.5px of extra width — the
 * CTA button measured 244.5 against the frame's 232. Auto-width buttons, so it
 * costs no layout; it only stops every label being ~5% too wide.
 *
 * ⚠ CONTRAST: #F3F8FA on #E4462B is 3.77:1 — below the 4.5:1 AA floor for
 *   16px text. Shipping the brand colour as designed; `primary.700` (#C93A22)
 *   is defined in tailwind.config.js and clears 4.76:1 if the client approves
 *   the shift. Swap `bg-primary`/`border-primary` below to change it.
 *
 * Gravity Forms submit/next/previous are filtered to use .btn, so changes here
 * apply to every form button on the site.
 */

.btn {
  display: inline-flex;
  cursor: pointer;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  border-radius: 0.625rem;
  border-width: 1px;
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  padding-top: 0.6875rem;
  padding-bottom: 0.6875rem;
  padding-left: 1.1875rem;
  padding-right: 1.1875rem;
  text-align: center;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.35625;
  letter-spacing: 0em;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
  text-decoration-line: none;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.btn:focus-visible {
  outline-style: solid;
  outline-width: 2px;
  outline-offset: 2px;
  outline-color: #24818D;
}

.btn:not(.btn-disabled):hover {
  --tw-border-opacity: 1;
  border-color: rgb(201 58 34 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(201 58 34 / var(--tw-bg-opacity, 1));
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

.btn i {
  font-size: 80%;
}

/*
 * ⚠ NOT IN THE DESIGN — hover is theme-authored. The Figma shows resting
 * states only, for every button, link, card and nav item on the page.
 * primary.700 is the AA-passing darker step, so hover both darkens and fixes
 * the contrast shortfall noted above.
 */

/*
 * Outline variant — for a secondary action over photography. Not in the
 * homepage design (which pairs the CTA with a plain phone number, not a second
 * button), but kept because the shared module layer expects a `.btn-white`
 * style alternate to exist.
 */

.btn-white {
  border-color: rgb(243 248 250 / 0.4);
  background-color: transparent;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

.btn-white:not(.btn-disabled):hover {
  --tw-border-opacity: 1;
  border-color: rgb(243 248 250 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(243 248 250 / var(--tw-bg-opacity, 1));
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

/* Applied by JS while a request is in flight, and to "no more results" pills. */

.btn-disabled {
  pointer-events: none;
  cursor: default;
  opacity: 0.6;
}

.btn-sm {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  padding-left: 1rem;
  padding-right: 1rem;
  font-size: 0.875rem;
}

/*
 * TEXT LINK WITH TRAILING ARROW — the "Explore Service" card link
 * (10911:147 + the rotated arrow at 10911:148).
 *   Poppins Medium 16px · #E4462B · UNDERLINED · tracking −0.1px
 *   · 8px gap · 19×20 arrow, an arrow-up glyph rotated 90°
 *
 * Underlined by default here, unlike most house builds — the design underlines
 * it at rest, so the hover affordance is the gap shift and the colour step.
 *
 * The arrow is an exported SVG in Figma, not a font glyph. Using an icomoon
 * class pending the icon export; swap for the real glyph name once the set
 * lands (see fonts.css).
 */

.link-arrow {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: -0.00625em;
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
  text-decoration-line: underline;
  text-decoration-thickness: from-font;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.link-arrow:hover {
  gap: 0.75rem;
  --tw-text-opacity: 1;
  color: rgb(201 58 34 / var(--tw-text-opacity, 1));
}

.link-arrow i {
  font-size: 1.25em;
  line-height: 1;
}

/*
 * The arrow returned by atg_arrow().
 *
 * ⚠⚠ THIS RULE AND THE GLYPH HAD DRIFTED APART, AND NOTHING CAUGHT IT BECAUSE
 * atg_arrow() WAS CALLED FROM NOWHERE. It was written for the placeholder — a
 * 19×20 "mingcute:arrow-up-line" that needed `rotate-90` to point right — and
 * kept both the fixed box and the rotation after the helper was replaced with
 * the real 22.5×7.364 export from 30471:514, which already points right. The
 * first time anything rendered it (the blog card's "Read More", Round 46) the
 * arrow came out pointing DOWN and squashed into a 19×20 square.
 *
 * No rotation, and no size override: the SVG carries its own width and height,
 * so the arrow keeps the export's aspect. `shrink-0` keeps it from squashing
 * when the label wraps; `fill: currentColor` on the path means the hover colour
 * shift is inherited from .link-arrow rather than restated here.
 */

.link-arrow-glyph {
  display: inline-block;
  flex-shrink: 0;
}

/**
 * Footer.
 *
 * Figma 10911:268 — a solid teal band, two columns:
 *   LEFT   logo, blurb, then LOCATION / PHONE / EMAIL as headed blocks
 *   RIGHT  an off-white 80% panel holding the quote form
 *
 * The design has NO menu columns and NO copyright bar, so there are no
 * `.toggleBtn` / `.toggleBlock` collapsibles here — the reference theme's
 * mobile-accordion columns do not apply. See footer-content.php.
 *
 * ⚠ NOT IN THE DESIGN: hover states, and everything below 1440. The single
 *   Figma frame stacks nothing.
 */

/**
 * Forms — Gravity Forms, search form, comment form.
 *
 * `functions.php` filters `gform_disable_css` to true, so this file owns 100%
 * of form styling. There is no Gravity Forms CSS to override or fight.
 *
 * ── TWO TREATMENTS ─────────────────────────────────────────────────────────
 * The design draws forms two different ways, and both ship as drawn:
 *
 *   DEFAULT — underline (10911:279, the footer quote panel)
 *     No fill, no radius, no box. A 1px bottom border only, label stacked
 *     directly above. This is the base, so a form dropped anywhere inherits it.
 *
 *   .contact-form-panel — boxed (12946:4217, the Contact page)
 *     Bordered 1px boxes with placeholder text and no visible labels. Opt in by
 *     wrapping the form; contact_details_map.php does this.
 *
 * Flagged as risk #4 in section-inventory.md — worth confirming two treatments
 * are intended rather than one having been drawn later than the other.
 *
 * ── VALUES (Figma 10911:284–317) ───────────────────────────────────────────
 *   label     Poppins Regular 14px / #298B97 / lh 17px / sentence case
 *             — NOT uppercase, NOT bold
 *   input     34px tall, 1px #298B97 bottom border, no fill, no radius
 *   textarea  same treatment, 51px tall
 *   checkbox  16px square, 1px #298B97 border, unfilled
 *   consent   Poppins Regular 12px / #298B97 / lh 18px
 *   submit    the standard .btn — orange, radius 10px, NOT full width
 *   gaps      10px between fields, 30px before the submit block
 *
 * ⚠ CONTRAST: #298B97 on white is 4.01:1 — under the AA floor for the 14px
 *   labels and worse for the 12px consent copy. Shipped as designed; swap
 *   `secondary` for `secondary-700` here if the client takes the AA fix.
 *
 * ⚠ NOT IN THE DESIGN: focus rings, error states, the validation summary and
 *   the confirmation message. No frame shows any of them. They are
 *   theme-authored below and labelled — a form with no visible focus state is
 *   unusable by keyboard, so these are not optional.
 *
 * The form PANEL (background, padding) belongs to the module that renders it,
 * not here — a form embedded elsewhere must not inherit it.
 */

/**
 * Header and navigation.
 *
 * Figma 10911:368 (announcement bar) + 10911:330 (nav).
 *   announcement bar  60px, #298B97, centred 36px glyph + Poppins SemiBold
 *                     16px uppercase white                  (10911:368)
 *   main bar          116px tall, TRANSPARENT over the hero
 *   crest             93×109 of visible ink, left edge at the container's 80px
 *   nav               6 items — Commercial · Residential · Storefront ·
 *                     Locations · About · Resources — #F3F8FA, 22px line box
 *   CTA               "Call Us Now" pill, 42px tall, right
 *   total resting     176px desktop, consumed by .site-content
 *
 * ✓ STICKY BEHAVIOUR IS RESOLVED (was blocker #4). See the scrolled-state block
 *   below. The headline is that **only the paint changes**: bar height, crest
 *   size and every horizontal position are identical in both frames. Measured
 *   off the two exports, in the scrolled frame's coordinates:
 *
 *                    resting (10911:348)      scrolled (10911:330)
 *     crest ink      93×109 at 83,64          93×109 at 83,64
 *     CTA            122×42  at 1238,97       122×42  at 1238,97
 *     bar            116, transparent         116, #F3F8FA + shadow
 *
 *   The build used to shrink the crest 116→56 and squeeze the bar to 80 on
 *   scroll. Neither is in the design.
 *
 * Written against WP_Bootstrap_Navwalker's output — .nav-item / .nav-link /
 * .dropdown-menu / .dropdown-item / .menu-item-has-children / .caret. The walker
 * and this file travel together: restyle here, don't swap the walker.
 *
 * JS classes (javascript/script.js → atg.nav()):
 *   .stickyHeader          added past 60px scroll
 *   .navbar-collapse.show  off-canvas panel open
 *   .navbar-toggler.collapsed  hamburger → X
 *   --header-h             published on :root, consumed by .site-content
 *
 * xl (1200px) is the mobile↔desktop switch.
 *
 * ⚠ NOT IN THE DESIGN: every hover and focus state below, and the entire
 *   mobile/off-canvas treatment. The Figma has 1440 frames only. The scrolled
 *   state used to be listed here too — it is not a gap, it is 10911:330.
 */

/**
 * Module-level components.
 *
 * Only patterns that repeat across modules, or that are too complex to read
 * inline, live here. Single-section layout stays as inline utilities — extract
 * to this file at the THIRD repetition, not before.
 *
 * ── EMPTY ON PURPOSE ────────────────────────────────────────────────────────
 * This file previously carried ~2,100 lines of Mr. Short Sale module CSS,
 * inherited when the scaffold was cloned from `mrshortsale_theme`. It styled
 * modules that do not exist in this theme (theme/template-parts/modules/ is
 * empty), and every rule referenced tokens from that project's dark navy/gold
 * palette. Removed as part of the Phase 1 strip.
 *
 * Rules arrive here as Phase 6 modules are built. Candidates already visible in
 * the Atlantic Glass homepage frame, each needing a third use before promotion:
 *   · the service card — full-bleed photo, black 16→80% gradient plus a
 *     tertiary/15 tint, off-white title + body, underlined primary link
 *     (10911:141 and five siblings)
 *   · the numbered why-choose-us row — 36px numeral, 3px rule, Light 36px label
 *     (10911:202)
 *   · the testimonial card — 90px avatar overlapping a panel, 71×4 accent rule
 *     (10911:220, 243)
 * ─────────────────────────────────────────────────────────────────────────── */

/**
 * Editor output, pagination, search results.
 *
 * `.default-block` wraps WYSIWYG and Gutenberg content in modules and pages.
 * DISTINCT from Tailwind Typography's `prose` — never both on one element.
 *
 * LIGHT theme: dark ink body copy on white, orange links. (This file was
 * written for the dark Mr. Short Sale build — `.default-block` was setting
 * body copy to atg-gray-100, which on Atlantic Glass's white page is pale
 * grey on white and effectively unreadable. Corrected below.)
 */

.default-block {
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

/*
 * The same block on a photo surface.
 *
 * `.default-block`'s dark ink is an explicit colour, so it beats the off-white
 * a photo section sets on itself by inheritance. Any module putting editor
 * content over a photograph has to opt in — the About accordion's panel copy
 * rendered #0F1D25 on a dark building photo until it did.
 *
 * Named to match `.block-title--white`, which solves the same problem for
 * headings.
 */

.default-block--white {
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

@media (min-width: 1440px) {
  .default-block p + p {
    margin-top: 1.25rem;
  }
}

.default-block :is(h1, h2, h3, h4, h5, h6) {
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

.default-block p + :is(h1, h2, h3, h4, h5, h6),
.default-block blockquote + :is(h1, h2, h3, h4, h5, h6) {
  margin-top: 1.5rem;
}

@media (min-width: 992px) {
  .default-block p + :is(h1, h2, h3, h4, h5, h6),
.default-block blockquote + :is(h1, h2, h3, h4, h5, h6) {
    margin-top: 2rem;
  }
}

.default-block ul > :not([hidden]) ~ :not([hidden]),
.default-block ol > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
}

@media (min-width: 992px) {
  .default-block ul > :not([hidden]) ~ :not([hidden]),
.default-block ol > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(1rem * var(--tw-space-y-reverse));
  }
}

/* Links underlined as well as coloured — not colour alone. */

.default-block ul a,
.default-block ol a,
.default-block p a {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
  text-decoration-line: underline;
}

.default-block ul a:hover,
.default-block ol a:hover,
.default-block p a:hover {
  --tw-text-opacity: 1;
  color: rgb(201 58 34 / var(--tw-text-opacity, 1));
}

.default-block .wp-block-quote {
  margin-top: 1.5rem;
  margin-bottom: 1.5rem;
}

@media (min-width: 992px) {
  .default-block .wp-block-quote {
    margin-top: 2rem;
    margin-bottom: 2rem;
  }
}

@media (min-width: 1440px) {
  .default-block .wp-block-quote {
    margin-top: 2.5rem;
    margin-bottom: 2.5rem;
  }
}

.default-block .wp-block-quote p:last-of-type {
  margin-bottom: 0px;
}

.default-block p + .wp-block-buttons,
.default-block .wp-block-buttons + p {
  margin-top: 1.5rem;
}

@media (min-width: 992px) {
  .default-block p + .wp-block-buttons,
.default-block .wp-block-buttons + p {
    margin-top: 2rem;
  }
}

@media (min-width: 1440px) {
  .default-block p + .wp-block-buttons,
.default-block .wp-block-buttons + p {
    margin-top: 2.5rem;
  }
}

/* ── Images ─────────────────────────────────────────────────────────────── */

.default-block .wp-block-image {
  margin-top: 1.5rem;
  margin-bottom: 1.5rem;
  text-align: center;
}

@media (min-width: 576px) {
  .default-block .wp-block-image {
    margin-top: 2rem;
    margin-bottom: 2rem;
  }
}

@media (min-width: 992px) {
  .default-block .wp-block-image {
    margin-top: 2.5rem;
    margin-bottom: 2.5rem;
  }
}

.default-block .wp-block-image img {
  margin-left: auto;
  margin-right: auto;
}

.default-block img {
  border-radius: 1.25rem;
}

/* ── Columns / media-text — force the theme's gutter system ─────────────── */

.default-block .wp-block-columns {
  display: flex !important;
}

.default-block .wp-block-media-text {
  display: grid !important;
}

.default-block .wp-block-columns,
.default-block .wp-block-media-text {
  margin-left: -1rem;
  margin-right: -1rem;
  align-items: center !important;
  row-gap: 1.5rem;
}

@media not all and (min-width: 576px) {
  .default-block .wp-block-columns,
.default-block .wp-block-media-text {
    display: block;
  }
}

@media (min-width: 768px) {
  .default-block .wp-block-columns,
.default-block .wp-block-media-text {
    margin-top: 1.5rem;
    margin-bottom: 1.5rem;
  }
}

@media (min-width: 992px) {
  .default-block .wp-block-columns,
.default-block .wp-block-media-text {
    margin-top: 2.25rem;
    margin-bottom: 2.25rem;
  }
}

.default-block .wp-block-column,
.default-block .wp-block-media-text__media,
.default-block .wp-block-media-text__content {
  padding-left: 1rem;
  padding-right: 1rem;
}

.default-block .wp-block-column:nth-child(2n),
.default-block .wp-block-media-text__media:nth-child(2n),
.default-block .wp-block-media-text__content:nth-child(2n) {
  margin-left: 0px;
}

.default-block .wp-block-columns .wp-block-image {
  margin-top: 0px;
  margin-bottom: 0px;
}

@media not all and (min-width: 576px) {
  .default-block .wp-block-columns .wp-block-image {
    margin-top: 0.5rem;
  }
}

@media (min-width: 768px) {
  .default-block .wp-block-columns .wp-block-image {
    margin-bottom: 1.5rem;
  }
}

.default-block .wp-block-columns .wp-block-gallery,
.default-block .wp-block-columns .blocks-gallery-item {
  margin: 0px;
  padding: 0px;
}

.default-block .wp-block-columns .wp-block-gallery {
  list-style-type: none;
}

.default-block .wp-block-columns .blocks-gallery-item::before {
  content: var(--tw-content);
  display: none;
}

/* ── Two-column list utility (class added in the editor) ────────────────── */

@media (min-width: 992px) {
  .default-block .list-columns-2 ul,
.default-block ul.list-columns-2 {
    -moz-columns: 2;
         columns: 2;
  }
}

.default-block .list-columns-2 ul li,
.default-block ul.list-columns-2 li {
  -moz-column-break-inside: avoid;
       break-inside: avoid;
}

.default-block .list-columns-2 ul li>strong,
.default-block ul.list-columns-2 li>strong {
  font-weight: 600;
}

/* ── Search results ────────────────────────────────────────────────────── */

.search-result-article {
  margin-bottom: 1rem;
  border-radius: 1.25rem;
  border-width: 1px;
  border-color: rgb(15 29 37 / 0.15);
  --tw-bg-opacity: 1;
  background-color: rgb(243 248 250 / var(--tw-bg-opacity, 1));
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
  padding-left: 1rem;
  padding-right: 1rem;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.search-result-article:hover {
  border-color: rgb(228 70 43 / 0.6);
}

@media (min-width: 576px) {
  .search-result-article {
    margin-bottom: 2rem;
    padding: 1.5rem;
    padding-top: 2rem;
    padding-bottom: 2rem;
  }
}

.search-result-article>*:empty {
  display: none;
}

.entry-footer > *,
.entry-meta > * {
  margin-right: 0.5rem;
  border-right-width: 1px;
  border-right-color: rgb(15 29 37 / 0.2);
  padding-right: 0.5rem;
}

.entry-footer > *:last-child,
.entry-meta > *:last-child {
  margin-right: 0px;
  border-width: 0px;
  padding-right: 0px;
}

.entry-footer > * time+time,
.entry-meta > * time+time {
  margin-left: 0.5rem;
}

/* ── Pagination ────────────────────────────────────────────────────────── */

.pagination {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  row-gap: 0.75rem;
  -moz-column-gap: 0.5rem;
       column-gap: 0.5rem;
}

.pagination .page-numbers {
  display: flex;
  width: 2.25rem;
  height: 2.25rem;
  align-items: center;
  justify-content: center;
  border-radius: 9999px;
  border-width: 1px;
  border-color: rgb(15 29 37 / 0.2);
  font-size: 0.875rem;
  line-height: 1;
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
  text-decoration-line: none;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.pagination .page-numbers:hover {
  text-decoration-line: none;
}

.pagination .page-numbers:focus-visible {
  outline-style: solid;
  outline-width: 2px;
  outline-offset: 2px;
  outline-color: #24818D;
}

.pagination .page-numbers.current {
  pointer-events: none;
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

.pagination .page-numbers.disabled {
  opacity: 0.5;
}

.pagination .page-numbers:not(.disabled):hover {
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

/* ═══════════════════════════════════════════════════════════════════════════
 * TABLE OF CONTENTS — blog single sidebar (12946:3313)
 *
 * Built at runtime by atg.tableOfContents(), so the markup is minimal and the
 * styling lives here rather than in JS strings — Tailwind never scans JS, so
 * classes written there would not be generated.
 *
 * The design shows a numbered list with indented sub-entries. Numbering is a
 * CSS counter rather than <ol> defaults, because H3s nest visually without
 * being a nested list in the DOM.
 * ═══════════════════════════════════════════════════════════════════════════ */

/**
 * Carousel overrides.
 *
 * DECISION MADE: no library. The scroll-snap track below replaces the
 * slick + jQuery pairing the Premix theme used (~40KB for the slider alone),
 * exactly as the note below argued for.
 *
 * DECISION PENDING (raise at Phase 0 sign-off): the Premix theme uses slick +
 * jQuery (~40KB for the slider alone). The only carousel-ish sections in this
 * design so far are the "As Seen On" logo strip (30471:122) and the testimonial
 * block (30471:186), both of which CSS scroll-snap or a marquee animation would
 * handle with no library.
 *
 * If slick IS adopted, port the Premix rules here — including the CLS fix that
 * lays slides out flex and hides them until slick adds `.slick-slider`, so an
 * un-initialised carousel never flashes as a vertical stack:
 *
 *   [class^='slider-col-'], .ss-logo-slider { @apply flex invisible; }
 *   [class^='slider-col-'].slick-slider,
 *   .ss-logo-slider.slick-slider          { @apply block visible; }
 */

/* Logo marquee — library-free, using the `animate-marquee` keyframes from the
 * Tailwind config. Content must be duplicated in the markup for a seamless
 * loop, because the animation translates by -50%. */

.marquee-track {
  display: flex;
  width: -moz-max-content;
  width: max-content;
}

@keyframes marquee {
  0% {
    transform: translate3d(0, 0, 0);
  }

  100% {
    transform: translate3d(-50%, 0, 0);
  }
}

.marquee-track {
  animation: marquee 15s linear infinite;
  align-items: center;
}

@media (prefers-reduced-motion: reduce) {
  .marquee-track {
    animation: none;
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
 * Scroll-snap slider — the gallery rows on the homepage (10911:209 / 213).
 *
 * `.slider-col-{n}` is the house hook: the number is the DESKTOP column count,
 * so `.slider-col-3` shows three cards at xl and steps down below it.
 *
 * Native overflow scrolling carries the behaviour — touch drag, trackpad,
 * shift-scroll and keyboard arrow keys on the focused track all work with no
 * JS at all. atg.slider() only nudges scrollLeft for the buttons and toggles
 * their disabled state, so with JS off this stays a usable scrollable row.
 *
 * ⚠ The comp draws no arrows or dots, so the control treatment is
 * theme-authored — a slider with no affordance is unusable.
 * ═══════════════════════════════════════════════════════════════════════════ */

.slider-track {
  margin: 0px;
  display: flex;
  scroll-snap-type: x var(--tw-scroll-snap-strictness);
  --tw-scroll-snap-strictness: mandatory;
  list-style-type: none;
}

.slider-track > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0px * var(--tw-space-y-reverse));
}

.slider-track {
  overflow-x: auto;
  scroll-behavior: smooth;
  padding: 0px;
  -ms-overflow-style: none;
  scrollbar-width: none;
}

.slider-track::-webkit-scrollbar {
  display: none;
}

@media (prefers-reduced-motion: reduce) {
  .slider-track {
    scroll-behavior: auto;
  }
}

.slider-slide {
  width: 100%;
  flex-shrink: 0;
  scroll-snap-align: start;
}

/* ✓ Three across at lg, matching the design's three 400px cards in 1280. */

@media (min-width: 576px) {
  .slider-col-3 > .slider-slide {
    width: 50%;
  }
}

@media (min-width: 992px) {
  .slider-col-3 > .slider-slide {
    width: 33.333333%;
  }
}

@media (min-width: 576px) {
  .slider-col-2 > .slider-slide {
    width: 50%;
  }

  .slider-col-4 > .slider-slide {
    width: 50%;
  }
}

@media (min-width: 992px) {
  .slider-col-4 > .slider-slide {
    width: 33.333333%;
  }
}

@media (min-width: 1200px) {
  .slider-col-4 > .slider-slide {
    width: 25%;
  }
}

/* ── Arrows ──────────────────────────────────────────────────────────────────
 * ⚠ NOT IN THE COMP. The design draws no controls at all — this pair is
 * requested, so the row can be driven by hand instead of only waiting on the
 * autoplay tick. The treatment is therefore theme-authored: the brand's own
 * teal-to-orange pairing, borrowed from the team card ring, rather than an
 * invented accent.
 *
 * Still no dots. A looping row of photographs has no meaningful "slide 3 of 7"
 * to report, and the duplicated slide set would make any count read wrong.
 *
 * They overlay the row's outer edges, which on a scroll-snap track means they
 * sit over the first and last visible card. That is deliberate: floating them
 * outside the container would push them into the page gutter, where they
 * collide with the 1281 content column at the design width.
 *
 * `[hidden]` is set by atg.slider() when the row has nothing to scroll to. It
 * needs to out-specify `.slider-arrow`'s own `grid`, hence the attribute
 * selector rather than relying on the UA stylesheet.
 * ─────────────────────────────────────────────────────────────────────────── */

.slider-arrow {
  position: absolute;
  top: 50%;
  z-index: 10;
  display: grid;
  width: 2.5rem;
  height: 2.5rem;
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  place-items: center;
  border-radius: 9999px;
  border-width: 1px;
  --tw-border-opacity: 1;
  border-color: rgb(41 139 151 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
  --tw-text-opacity: 1;
  color: rgb(41 139 151 / var(--tw-text-opacity, 1));
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.slider-arrow:hover {
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}

.slider-arrow:focus-visible {
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}

@media (min-width: 1200px) {
  .slider-arrow {
    width: 3rem;
    height: 3rem;
  }
}

.slider-arrow[hidden] {
  display: none;
}

.slider-arrow--prev {
  left: 0.25rem;
}

@media (min-width: 1200px) {
  .slider-arrow--prev {
    left: 0.5rem;
  }
}

.slider-arrow--next {
  right: 0.25rem;
}

@media (min-width: 1200px) {
  .slider-arrow--next {
    right: 0.5rem;
  }
}

/*
 * One glyph, two directions. atg_chevron() points DOWN, so clockwise a quarter
 * turn puts the tip on the left and anticlockwise puts it on the right — no
 * second SVG to keep in sync with the first.
 */

.slider-arrow .accordion-chevron {
  /* The glyph carries width/height attributes; h-auto keeps it on its own
	 * 20:11 ratio once CSS overrides the width. */
  height: auto;
  width: 0.875rem;
}

@media (min-width: 1200px) {
  .slider-arrow .accordion-chevron {
    width: 1rem;
  }
}

.slider-arrow--prev .accordion-chevron {
  --tw-rotate: 90deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.slider-arrow--next .accordion-chevron {
  --tw-rotate: -90deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

/*
 * Motion is paused on hover and on keyboard focus inside the track, and never
 * starts at all under prefers-reduced-motion. NOTE for review: WCAG 2.2.2 wants
 * a discoverable pause for content that moves for more than five seconds. The
 * arrows above are a visible control and holding focus on one holds the row
 * still, but the pause ends at focusout — so if the criterion matters for this
 * site, the honest fix is still a visible pause toggle rather than pretending
 * hover/focus covers it.
 */

/**
 * Named components. Imported LAST in the components layer, so anything here
 * overrides the other component files without !important.
 *
 * Only add a class once a pattern has appeared THREE times inline.
 */

.page-title,
.entry-title {
  margin-bottom: 1.5rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-weight: 500;
  text-transform: uppercase;
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

/* Gutenberg alignment — widths come from theme.json via @_tw/themejson. */

.entry-content > .alignwide {
  max-width: 1440px;
}

.entry-content > .alignfull {
  max-width: none;
}

.entry-content > .alignleft {
  float: left;
  margin-right: 2rem;
}

.entry-content > .alignright {
  float: right;
  margin-left: 2rem;
}

/* ═══════════════════════════════════════════════════════════════════════════
 * SECTION HEADING BLOCK
 *
 *   <header class="block-title">
 *     <small class="title-small">our services</small>
 *     <h2>Solutions Designed Around Your Space</h2>
 *   </header>
 *
 * Figma eyebrow: 10911:125 — Poppins Regular 16px, lh 21px, uppercase,
 * #E4462B, NO tracking. Identical at 10911:137 (services), 10911:205
 * (gallery), 10911:218 (testimonials) and on the why-choose-us band
 * (I10911:202;10834:1698) — five uses, same treatment, so it is one token.
 *
 * NOTE: this design's eyebrow has NO decorative rule flanks, so there are no
 * has-lines-* modifiers. Plain orange uppercase label above the heading.
 *
 * ⚠ CONTRAST: #E4462B at 16px on white is 4.03:1, under the 4.5:1 AA floor.
 *   Shipping as designed; `primary.700` clears it. See tailwind.config.js.
 *
 * Gap to the heading is 10px in Figma; `mb-2.5` is exactly that.
 * ═══════════════════════════════════════════════════════════════════════════ */

.block-title .title-small {
  margin-bottom: 0.625rem;
  display: block;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 0.875rem;
  font-weight: 400;
  text-transform: uppercase;
  line-height: 1.3125;
  letter-spacing: 0em;
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

@media (min-width: 1440px) {
  .block-title .title-small {
    font-size: 1rem;
  }
}

/*
 * Accent words inside a section heading. The designer marks them by switching
 * colour only — no weight or style change. See the hero:
 * "Glass Company in <span>Wilmington, NC</span>" (10911:75).
 *
 * Editors produce this by wrapping words in <span>, which is why headings are
 * echoed with wp_kses_post() rather than esc_html().
 */

.block-title h2 em,
.block-title h1 em {
  font-style: normal;
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

.block-title h2 span,
.block-title h1 span {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

/*
 * Undersized section heading — the footer form heading is 32px against the
 * 36px h2 token (10911:280). Opt in per section rather than bending the scale.
 */

@media (min-width: 1440px) {
  .block-title--sm h2 {
    font-size: 2rem;
  }
}

.block-title--sm h2 {
  /* 32px */
}

/* ═══════════════════════════════════════════════════════════════════════════
 * SERVICE DETAIL PAGES: 32px SECTION HEADINGS, WITH THREE EXCEPTIONS
 *
 * ✓ Read off the nodes, not inferred. On Curtain Wall — the only detail page
 * with content — the h2 size splits by band, and the split is not arbitrary:
 *
 *   32px  media_text 12946:908 · feature_list 12946:916 · process_steps
 *         (12946:928, flattened — cap height 22px off the 1:1 export, matching
 *         the two read nodes) · feature_cards 12946:972
 *   36px  why_choose_us 12946:961 · image_trio 12946:962 · cta_band 12946:836
 *
 * The 36px three are the bands PASTED IN FROM THE HUB PAGES — the shared
 * why-choose, the shared gallery trio and the site-wide CTA — and they carry the
 * 36/42 token with them (Industries 12946:1589, homepage 10911:126). The 32px
 * four are the bands written for the detail page.
 *
 * So the default here is 32 and those three opt out with `.block-title--36`.
 * Round 29 shipped this rule WITHOUT the opt-out and made all seven 32px, which
 * shrank the CTA heading to one line where the frame takes two.
 *
 * ⚠ THE LINE BOX STAYS 42 — which is why the leading is absolute rather than
 * left to the h2 token's 1.1667 ratio. At 32px that ratio gives 37.3, and the
 * Benefits band came out 860.3 against the frame's 865 with its header 68.3
 * instead of 73. Both sizes sit on a 42 line box, so the size change costs no
 * height at all — it only changes how wide the heading runs, and therefore where
 * it breaks. The Benefits heading measured 1076 wide against the frame's 934.
 *
 * Keyed on the body class WordPress already emits rather than a template edit,
 * so it covers every band on the page at once. `.block-title` in the selector is
 * what keeps Tailwind from purging the rule — see the note in tailwind.config.js
 * about selectors naming only a class the theme files never mention.
 *
 * ⚠ The heading-tracking inherit is SITE-WIDE and is NOT fixed here — every
 * heading on every page is 0.03em wider than its Figma node, which base.css
 * explicitly says the design does not do. Fixing it globally can re-wrap
 * headings on fourteen already-measured pages, so it wants its own round.
 * ═══════════════════════════════════════════════════════════════════════════ */

/*
 * ⚠ AND LOCATION DETAIL PAGES DO THE SAME THING, with the same one exception.
 *
 * Burgaw (12946:2192) splits four to two: 32px on its media_text About band
 * (12946:2294), its media_text residential band and its why_choose_us
 * (12946:2335); 36px on the feature_list (12946:2305) and the CTA (12946:2222).
 * Same shape as the service pages — the bands written for the page are 32 and
 * the ones pasted in from elsewhere keep the site token — so the same rule and
 * the same opt-out cover both, and adding the selector here rather than a second
 * rule keeps them from drifting.
 */

body.single-ss_services .block-title:not(.block-title--36) h2,
body.single-ss_locations .block-title:not(.block-title--36) h2 {
  letter-spacing: 0em;
}

@media (min-width: 1440px) {
  body.single-ss_services .block-title:not(.block-title--36) h2,
body.single-ss_locations .block-title:not(.block-title--36) h2 {
    font-size: 2rem;
    line-height: 2.625rem;
  }
}

body.single-ss_services .block-title:not(.block-title--36) h2,
body.single-ss_locations .block-title:not(.block-title--36) h2 {
  /* ✓ 42 — an ABSOLUTE line box, see above */
}

/*
 * The opt-out. Carries the 36/42 token explicitly rather than just cancelling
 * the rule above, so it reads the same on a hub page as on a detail page and
 * cannot be broken by a later change to the default.
 */

@media (min-width: 1440px) {
  .block-title--36 h2 {
    font-size: 2.25rem;
    line-height: 2.625rem;
  }
}

.block-title--36 h2 {
  /* ✓ 36 / 42 */
}

/*
 * Over photography. The eyebrow stays orange — it is legible on the dark
 * gradient and the design keeps it that way (I10911:202;10834:1698) — but
 * accent words inside the heading go off-white, because an orange span on a
 * dark photo loses the contrast that made it an accent on white.
 * Headings themselves are handled by .title-white (tailwind.config.js plugin).
 */

.block-title--white h1 span,
.block-title--white h2 span,
.block-title--white h1 em,
.block-title--white h2 em {
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

/*
 * ⚠ THE CTA BAND IS THE EXCEPTION TO THE RULE ABOVE.
 *
 * Its accent span IS primary over the photograph — `#e4462b` on 12946:836, and
 * the 1:1 render shows the whole second line orange. The off-white rule above
 * was measured on the HERO (I10911:202), where the design really does reverse
 * the accent out, so both are right and they disagree by band.
 *
 * Scoped to the module rather than generalised: the hero, the accordion band and
 * the testimonials all keep the off-white accent.
 */

.block-title--cta h2 span,
.block-title--cta h2 em {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

/* ═══════════════════════════════════════════════════════════════════════════
 * SERVICE CARD — the 6 tiles in "Solutions Designed Around Your Space"
 * (10911:141 and five siblings, 411×391).
 *
 * A full-bleed photo under two stacked gradients: a vertical black wash
 * (16% → 80%, stop at 82%) for text legibility, plus a flat light-teal tint
 * at 15% that unifies the six photos. Both are opacity modifiers on existing
 * tokens, not new palette entries.
 *
 * No radius and no border in the design — the tiles butt against each other
 * on a 24px gutter.
 * ═══════════════════════════════════════════════════════════════════════════ */

.surface-card {
  position: relative;
  height: 100%;
  overflow: hidden;
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

.surface-card img {
  position: absolute;
  inset: 0px;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 500ms;
}

.surface-card img:hover {
  --tw-scale-x: 1.05;
  --tw-scale-y: 1.05;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

/*
 * The two overlays, as one pseudo-element each would be one too many — the
 * teal tint is flat so it rides on the same layer as the black gradient.
 */

.surface-card::after {
  position: absolute;
  inset: 0px;
  z-index: 1;
  background-image: linear-gradient(to bottom, var(--tw-gradient-stops));
  --tw-gradient-from: rgb(0 0 0 / 0.16) var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
  --tw-gradient-to: rgb(0 0 0 / 0.8) var(--tw-gradient-to-position);
  --tw-content: '';
  content: var(--tw-content);
}

/*
 * Card title — Poppins Medium 24px uppercase off-white, centred (10911:144).
 * Use on a real <h3>, not a <div>. Sits above the overlay.
 */

.surface-card-title {
  margin-bottom: 0.75rem;
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  font-size: 1.25rem;
  font-weight: 500;
  text-transform: uppercase;
  line-height: 1.5;
  letter-spacing: 0em;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

@media (min-width: 1440px) {
  .surface-card-title {
    font-size: 1.5rem;
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
 * ICON LIST — wrap a WYSIWYG <ul> to swap bullets for an icon.
 *
 * The design's own bulleted list (the Key Capabilities grid, 10911:520) uses a
 * plain 6px orange dot rather than a glyph, so this class stays available for
 * WYSIWYG content but is not what that section should use.
 *
 * TODO: `\e932` is a placeholder codepoint — set it once the icomoon set lands.
 * ═══════════════════════════════════════════════════════════════════════════ */

.list-icon ul,
ul.list-icon {
  margin-left: 0px;
  list-style-type: none;
}

.list-icon ul li,
ul.list-icon li {
  position: relative;
  padding-left: 2rem;
}

.list-icon ul li::before,
ul.list-icon li::before {
  position: absolute;
  top: 0.15em;
  left: 0px;
  font-family: icomoon;
  font-size: 1.2em;
  font-weight: 400;
  line-height: 1;
  content: var(--tw-content);
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

@media (min-width: 992px) {
  .list-icon ul li,
ul.list-icon li {
    padding-left: 2.25rem;
  }
}

.list-icon ul li strong,
ul.list-icon li strong {
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

/* ═══════════════════════════════════════════════════════════════════════════
 * Skip link — first child of .site-wrapper.
 * ═══════════════════════════════════════════════════════════════════════════ */

.skip-link {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

.skip-link:focus {
  position: static;
  width: auto;
  height: auto;
  padding: 0;
  margin: 0;
  overflow: visible;
  clip: auto;
  white-space: normal;
  position: fixed;
  left: 1rem;
  top: 1rem;
  z-index: 100000;
  border-radius: 0.25rem;
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  padding-left: 1rem;
  padding-right: 1rem;
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

/* ═══════════════════════════════════════════════════════════════════════════
 * Media collage — the offset treatment on the home About section.
 *
 * ✓ Figma 10911:118 / 10911:120. All coordinates below are relative to the
 *   1440-wide SECTION, which is how the export reports them:
 *
 *     backdrop  x 1010..1440   430x684  y   0   flush to the VIEWPORT edge
 *     block     x  861..1159   298x334  y 160   orange, behind the front photo
 *     front     x  720..1140   420x340  y 184   starts on the section midpoint
 *
 * Two things this gets right that the first cut did not:
 *
 * 1. The backdrop is anchored to the SECTION, not to the media column, so
 *    `right: 0` lands on the viewport edge at ANY width. Pinned to the column
 *    with a fixed -60px it only touched at exactly 1440 and left a 240px gap
 *    at 1920.
 * 2. The front photo and the block sit at y=184 / y=160 of the 684 block, not
 *    at 24 / 0 — they were riding ~160px too high, bunched at the top.
 *
 * The column cell carries px-3 / xl:px-4, which would push the front photo
 * inboard of the section midpoint, so .media-collage cancels it with a
 * matching negative margin.
 *
 * Below lg it collapses to the two photos stacked with no overlap — the offset
 * needs horizontal room a phone does not have — and the orange block becomes a
 * thin accent bar rather than vanishing, since it is the only brand colour here.
 * ═══════════════════════════════════════════════════════════════════════════ */

@media (min-width: 992px) {
  .media-text--collage {
    position: relative;
  }
}

.media-text--collage {
  /* containing block for all three collage layers */
}

/*
 * `lg:static` on purpose. Below lg this is a relative flex column; from lg up it
 * must NOT be a containing block, so the three layers resolve against the
 * SECTION instead — which is what lets the backdrop reach the viewport edge and
 * what makes the design's section-relative coordinates usable directly.
 * It keeps its height so the row still reserves 684px of space.
 */

.media-collage {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

@media (min-width: 992px) {
  .media-collage {
    position: static;
    display: block;
    height: 42.75rem;
    gap: 0px;
  }
}

/*
 * ✓ Anchored so the OVERLAP with the front photo is what stays constant.
 *
 * `right: 0` alone was not enough. The backdrop kept touching the viewport edge,
 * but as the screen grew it walked away from the front photo:
 *
 *     1440  overlap 130   (the design)
 *     1680  overlap  10
 *     1920  overlap -110  (a gap)
 *     2560  overlap -430  (a wide gap — the composition falls apart)
 *
 * `.container` caps at 1440 and centres, so its left edge is `50vw - 720`. The
 * design puts the backdrop 1010px into that container, hence
 * `calc(50vw + 290px)`. Because the front photo sits on the viewport centre and
 * is 420 wide, the overlap comes out at 420 - 290 = 130px at EVERY width.
 *
 * Width is then whatever is left to the viewport edge (430 at 1440, 990 at
 * 2560), so the photo keeps bleeding off the screen and simply shows more of
 * itself on a wide monitor — which is what a full-bleed image should do.
 */

.media-collage-backdrop {
  overflow: hidden;
}

@media not all and (min-width: 992px) {
  .media-collage-backdrop {
    aspect-ratio: 4/3;
  }
}

@media (min-width: 992px) {
  .media-collage-backdrop {
    position: absolute;
    left: calc(50vw + 290px);
    right: 0px;
    top: 4rem;
    height: 42.75rem;
    width: auto;
    max-width: none;
  }
}

@media (min-width: 1200px) {
  .media-collage-backdrop {
    top: 5rem;
  }
}

@media (min-width: 1440px) {
  .media-collage-backdrop {
    top: 7.5rem;
  }
}

.media-collage-front {
  overflow: hidden;
  --tw-shadow: 0 10px 30px rgba(15,29,37,0.18);
  --tw-shadow-colored: 0 10px 30px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

@media not all and (min-width: 992px) {
  .media-collage-front {
    aspect-ratio: 4/3;
  }
}

@media (min-width: 992px) {
  .media-collage-front {
    position: absolute;
    left: 50%;
    top: 15.5rem;
    z-index: 2;
    height: 21.25rem;
    width: 26.25rem;
  }
}

@media (min-width: 1200px) {
  .media-collage-front {
    top: 16.5rem;
  }
}

@media (min-width: 1440px) {
  .media-collage-front {
    top: 19rem;
  }
}

.media-collage-front {
  /* 120 pad + 184 */
}

/* ✓ x=861 = the midpoint + 141px (10911:121). */

.media-collage-block {
  display: block;
  height: 0.5rem;
  width: 6rem;
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
}

@media (min-width: 992px) {
  .media-collage-block {
    position: absolute;
    left: calc(50% + 8.8125rem);
    top: 14rem;
    z-index: 1;
    height: 20.875rem;
    width: 18.625rem;
  }
}

@media (min-width: 1200px) {
  .media-collage-block {
    top: 15rem;
  }
}

@media (min-width: 1440px) {
  .media-collage-block {
    top: 17.5rem;
  }
}

.media-collage-block {
  /* 120 pad + 160 */
}

/*
 * ⚠ The collage section KEEPS its normal vertical rhythm.
 *
 * An earlier pass stripped it, on a misreading: the Figma frames on this page
 * are CONTENT blocks separated by a uniform 120px gap (774→894, 1095→1215,
 * 1899→2019, 3088→3208, 3800→3920), and that gap IS 2xl:py-30. Cropping the
 * build from the section top rather than the content top made correctly-placed
 * copy look 117px low.
 *
 * So there is nothing to override here — the rule is kept, empty, as a marker
 * that the collage variant was checked and needs no padding change.
 */

.media-text--collage {
  /* intentionally no overrides — see the note above */
}

/* ═══════════════════════════════════════════════════════════════════════════
 * Why Choose Us — per-reason background swap.
 *
 * ⚠ NOT IN THE DESIGN. The Figma band (10911:202) carries one static photo;
 * this is a requested enhancement, driven by atg.whyChooseUs().
 *
 * The layers cross-fade rather than cut, and the non-hovered reasons dim so the
 * active one reads as selected. `has-[...]` is avoided deliberately — the JS
 * already owns the state and duplicating it in CSS invites the two to disagree.
 * ═══════════════════════════════════════════════════════════════════════════ */

.wcu-layer {
  transition-property: opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 500ms;
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}

/*
 * ✓ Numerals are WHITE; only the active row's goes primary and gains a 3px
 * underline (10911:202 — measured: 01 is #E4462B with its rule at y242-244,
 * 32px wide; 02/03/04 are pure white).
 *
 * Both `:hover` and `.is-active` so the pointer state works even if the JS has
 * not run, and the JS-driven state (which also covers focus) matches it.
 */

.wcu-num {
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 300ms;
}

/*
 * On a white surface the numerals are INK, not off-white — Commercial Services
 * (12946:645) sets them #0F1D25 with only the active one going primary. The
 * light branch used to paint every numeral `text-primary` permanently, so all
 * four read as active.
 */

.wcu-num--ink {
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

/*
 * ✓ …EXCEPT ON THE COMPACT LIST, where all four ARE primary and all four carry
 * the rule (Apartment Buildings 12946:1861 / 1866 / 1871 / 1876 — every one has
 * its Rectangle 149854). There is no active row to distinguish on that frame, so
 * the marked state is the resting state.
 *
 * The rule is 2px and 29 wide here against the 3px/32 of the hover state, and it
 * is drawn unconditionally rather than on `:hover` — which also means this
 * variant needs no JS and no `is-active`.
 */

.wcu-num--marked {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

.wcu-num--marked::after {
  position: absolute;
  bottom: -0.5rem;
  left: 0px;
  height: 2px;
  width: 1.8125rem;
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  --tw-content: '';
  content: var(--tw-content);
}

/*
 * ⚠ KEYED ON `.wcu-row`, NOT `.wcu-reason`.
 *
 * The two classes do different jobs and used to be conflated. `.wcu-reason` is
 * the JS hook for the photo variant's background swap and is only emitted when
 * there are layers to swap; `.wcu-row` is every row in both variants and owns
 * the numeral's colour and underline. While these rules were keyed on
 * `.wcu-reason` the beside-image variant got no hover state at all, because it
 * has one static photograph and therefore no reason to carry the JS hook.
 */

.wcu-row:hover .wcu-num,
.wcu-row.is-active .wcu-num {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

.wcu-row:hover .wcu-num::after,
.wcu-row.is-active .wcu-num::after {
  position: absolute;
  bottom: -0.5rem;
  left: 0px;
  height: 3px;
  width: 2rem;
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
  --tw-content: '';
  content: var(--tw-content);
}

.wcu-layer.is-active {
  opacity: 1;
}

/*
 * ⚠ The non-hovered reasons are NOT dimmed.
 *
 * An earlier pass faded them to 55% to mark the active row. The design does not:
 * in the export, 02/03/04 stay pure white while 01 is active. The active state
 * is carried entirely by the numeral going primary plus its 3px underline, so
 * dimming was inventing emphasis the design does not use — and it made the
 * other three harder to read over the photo.
 */

/*
 * Respect reduced motion: swap instantly instead of cross-fading. The swap
 * itself stays — it is information, not decoration — but the 500ms fade goes.
 */

@media (prefers-reduced-motion: reduce) {
  .wcu-layer,
	.wcu-num {
    transition-property: none;
  }
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

.pointer-events-none {
  pointer-events: none;
}

.visible {
  visibility: visible;
}

.invisible {
  visibility: hidden;
}

.collapse {
  visibility: collapse;
}

.static {
  position: static;
}

.fixed {
  position: fixed;
}

.absolute {
  position: absolute;
}

.relative {
  position: relative;
}

.sticky {
  position: sticky;
}

.inset-0 {
  inset: 0px;
}

.inset-y-0 {
  top: 0px;
  bottom: 0px;
}

.bottom-2 {
  bottom: 0.5rem;
}

.bottom-3 {
  bottom: 0.75rem;
}

.left-2 {
  left: 0.5rem;
}

.left-3 {
  left: 0.75rem;
}

.right-3 {
  right: 0.75rem;
}

.top-1\/2 {
  top: 50%;
}

.z-\[-1\] {
  z-index: -1;
}

.z-\[-2\] {
  z-index: -2;
}

.z-\[1\] {
  z-index: 1;
}

.z-\[2\] {
  z-index: 2;
}

.z-\[3\] {
  z-index: 3;
}

.m-0 {
  margin: 0px;
}

.-mx-3 {
  margin-left: -0.75rem;
  margin-right: -0.75rem;
}

.-mx-4 {
  margin-left: -1rem;
  margin-right: -1rem;
}

.mx-auto {
  margin-left: auto;
  margin-right: auto;
}

.my-12 {
  margin-top: 3rem;
  margin-bottom: 3rem;
}

.my-4 {
  margin-top: 1rem;
  margin-bottom: 1rem;
}

.my-9 {
  margin-top: 2.25rem;
  margin-bottom: 2.25rem;
}

.\!mt-0 {
  margin-top: 0px !important;
}

.mb-0 {
  margin-bottom: 0px;
}

.mb-10 {
  margin-bottom: 2.5rem;
}

.mb-12 {
  margin-bottom: 3rem;
}

.mb-14 {
  margin-bottom: 3.5rem;
}

.mb-2 {
  margin-bottom: 0.5rem;
}

.mb-2\.5 {
  margin-bottom: 0.625rem;
}

.mb-3 {
  margin-bottom: 0.75rem;
}

.mb-4 {
  margin-bottom: 1rem;
}

.mb-5 {
  margin-bottom: 1.25rem;
}

.mb-6 {
  margin-bottom: 1.5rem;
}

.mb-7 {
  margin-bottom: 1.75rem;
}

.mb-8 {
  margin-bottom: 2rem;
}

.mb-9 {
  margin-bottom: 2.25rem;
}

.ml-0 {
  margin-left: 0px;
}

.mt-10 {
  margin-top: 2.5rem;
}

.mt-12 {
  margin-top: 3rem;
}

.mt-2 {
  margin-top: 0.5rem;
}

.mt-2\.5 {
  margin-top: 0.625rem;
}

.mt-3 {
  margin-top: 0.75rem;
}

.mt-4 {
  margin-top: 1rem;
}

.mt-5 {
  margin-top: 1.25rem;
}

.mt-6 {
  margin-top: 1.5rem;
}

.mt-7 {
  margin-top: 1.75rem;
}

.mt-8 {
  margin-top: 2rem;
}

.mt-9 {
  margin-top: 2.25rem;
}

.mt-auto {
  margin-top: auto;
}

.block {
  display: block;
}

.inline {
  display: inline;
}

.flex {
  display: flex;
}

.inline-flex {
  display: inline-flex;
}

.table {
  display: table;
}

.grid {
  display: grid;
}

.contents {
  display: contents;
}

.hidden {
  display: none;
}

.aspect-\[10\/13\] {
  aspect-ratio: 10/13;
}

.aspect-\[16\/10\] {
  aspect-ratio: 16/10;
}

.aspect-\[371\/220\] {
  aspect-ratio: 371/220;
}

.aspect-\[4\/3\] {
  aspect-ratio: 4/3;
}

.aspect-\[564\/223\] {
  aspect-ratio: 564/223;
}

.aspect-\[638\/419\] {
  aspect-ratio: 638/419;
}

.aspect-\[638\/581\] {
  aspect-ratio: 638/581;
}

.size-12 {
  width: 3rem;
  height: 3rem;
}

.size-14 {
  width: 3.5rem;
  height: 3.5rem;
}

.size-16 {
  width: 4rem;
  height: 4rem;
}

.size-2 {
  width: 0.5rem;
  height: 0.5rem;
}

.size-20 {
  width: 5rem;
  height: 5rem;
}

.size-28 {
  width: 7rem;
  height: 7rem;
}

.size-6 {
  width: 1.5rem;
  height: 1.5rem;
}

.size-8 {
  width: 2rem;
  height: 2rem;
}

.size-9 {
  width: 2.25rem;
  height: 2.25rem;
}

.size-full {
  width: 100%;
  height: 100%;
}

.h-1 {
  height: 0.25rem;
}

.h-10 {
  height: 2.5rem;
}

.h-20 {
  height: 5rem;
}

.h-72 {
  height: 18rem;
}

.h-auto {
  height: auto;
}

.h-full {
  height: 100%;
}

.max-h-16 {
  max-height: 4rem;
}

.min-h-72 {
  min-height: 18rem;
}

.min-h-80 {
  min-height: 20rem;
}

.min-h-\[15rem\] {
  min-height: 15rem;
}

.min-h-\[24\.4375rem\] {
  min-height: 24.4375rem;
}

.w-1\/2 {
  width: 50%;
}

.w-\[4\.4375rem\] {
  width: 4.4375rem;
}

.w-auto {
  width: auto;
}

.w-full {
  width: 100%;
}

.w-max {
  width: -moz-max-content;
  width: max-content;
}

.min-w-\[38rem\] {
  min-width: 38rem;
}

.max-w-16 {
  max-width: 4rem;
}

.max-w-\[26rem\] {
  max-width: 26rem;
}

.max-w-\[40\.3125rem\] {
  max-width: 40.3125rem;
}

.max-w-\[40\.5rem\] {
  max-width: 40.5rem;
}

.max-w-\[42\.5rem\] {
  max-width: 42.5rem;
}

.max-w-\[46rem\] {
  max-width: 46rem;
}

.max-w-\[50rem\] {
  max-width: 50rem;
}

.max-w-\[51rem\] {
  max-width: 51rem;
}

.max-w-\[52\.8125rem\] {
  max-width: 52.8125rem;
}

.max-w-\[52rem\] {
  max-width: 52rem;
}

.max-w-\[53\.375rem\] {
  max-width: 53.375rem;
}

.max-w-\[54\.5625rem\] {
  max-width: 54.5625rem;
}

.max-w-\[55\.125rem\] {
  max-width: 55.125rem;
}

.max-w-\[56\.5rem\] {
  max-width: 56.5rem;
}

.max-w-\[71\.875rem\] {
  max-width: 71.875rem;
}

.max-w-none {
  max-width: none;
}

.flex-1 {
  flex: 1 1 0%;
}

.shrink-0 {
  flex-shrink: 0;
}

.grow {
  flex-grow: 1;
}

.-translate-x-1\/2 {
  --tw-translate-x: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.-translate-y-1\/2 {
  --tw-translate-y: -50%;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.rotate-90 {
  --tw-rotate: 90deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

@keyframes marquee {
  0% {
    transform: translate3d(0, 0, 0);
  }

  100% {
    transform: translate3d(-50%, 0, 0);
  }
}

.animate-marquee {
  animation: marquee 15s linear infinite;
}

.cursor-default {
  cursor: default;
}

.select-none {
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

.resize {
  resize: both;
}

.list-none {
  list-style-type: none;
}

.grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}

.grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.grid-cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.grid-rows-\[0fr\] {
  grid-template-rows: 0fr;
}

.flex-col {
  flex-direction: column;
}

.flex-wrap {
  flex-wrap: wrap;
}

.place-items-center {
  place-items: center;
}

.items-start {
  align-items: flex-start;
}

.items-center {
  align-items: center;
}

.items-baseline {
  align-items: baseline;
}

.items-stretch {
  align-items: stretch;
}

.justify-start {
  justify-content: flex-start;
}

.justify-end {
  justify-content: flex-end;
}

.justify-center {
  justify-content: center;
}

.justify-between {
  justify-content: space-between;
}

.gap-0\.5 {
  gap: 0.125rem;
}

.gap-12 {
  gap: 3rem;
}

.gap-2 {
  gap: 0.5rem;
}

.gap-2\.5 {
  gap: 0.625rem;
}

.gap-4 {
  gap: 1rem;
}

.gap-5 {
  gap: 1.25rem;
}

.gap-6 {
  gap: 1.5rem;
}

.gap-\[20px\] {
  gap: 20px;
}

.gap-px {
  gap: 1px;
}

.gap-x-3 {
  -moz-column-gap: 0.75rem;
       column-gap: 0.75rem;
}

.gap-x-6 {
  -moz-column-gap: 1.5rem;
       column-gap: 1.5rem;
}

.gap-x-8 {
  -moz-column-gap: 2rem;
       column-gap: 2rem;
}

.gap-x-\[0\.9375rem\] {
  -moz-column-gap: 0.9375rem;
       column-gap: 0.9375rem;
}

.gap-y-1 {
  row-gap: 0.25rem;
}

.gap-y-10 {
  row-gap: 2.5rem;
}

.gap-y-2\.5 {
  row-gap: 0.625rem;
}

.gap-y-3 {
  row-gap: 0.75rem;
}

.gap-y-4 {
  row-gap: 1rem;
}

.gap-y-6 {
  row-gap: 1.5rem;
}

.gap-y-8 {
  row-gap: 2rem;
}

.space-y-0 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0px * var(--tw-space-y-reverse));
}

.space-y-2 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
}

.space-y-2\.5 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.625rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.625rem * var(--tw-space-y-reverse));
}

.space-y-3 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
}

.space-y-4 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1rem * var(--tw-space-y-reverse));
}

.self-start {
  align-self: flex-start;
}

.overflow-hidden {
  overflow: hidden;
}

.overflow-x-auto {
  overflow-x: auto;
}

.rounded {
  border-radius: 0.25rem;
}

.rounded-full {
  border-radius: 9999px;
}

.rounded-lg {
  border-radius: 0.5rem;
}

.border {
  border-width: 1px;
}

.border-0 {
  border-width: 0px;
}

.border-b {
  border-bottom-width: 1px;
}

.border-l-0 {
  border-left-width: 0px;
}

.border-l-2 {
  border-left-width: 2px;
}

.border-t {
  border-top-width: 1px;
}

.border-atg-gray-50 {
  --tw-border-opacity: 1;
  border-color: rgb(243 248 250 / var(--tw-border-opacity, 1));
}

.border-atg-gray-50\/20 {
  border-color: rgb(243 248 250 / 0.2);
}

.border-atg-gray-50\/25 {
  border-color: rgb(243 248 250 / 0.25);
}

.border-atg-gray-50\/40 {
  border-color: rgb(243 248 250 / 0.4);
}

.border-atg-gray-900\/10 {
  border-color: rgb(15 29 37 / 0.1);
}

.border-atg-gray-900\/15 {
  border-color: rgb(15 29 37 / 0.15);
}

.border-danger\/40 {
  border-color: rgb(179 38 30 / 0.4);
}

.border-primary {
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
}

.border-white\/20 {
  border-color: rgb(255 255 255 / 0.2);
}

.border-t-\[\#CBDDE0\] {
  --tw-border-opacity: 1;
  border-top-color: rgb(203 221 224 / var(--tw-border-opacity, 1));
}

.border-t-atg-gray-50\/40 {
  border-top-color: rgb(243 248 250 / 0.4);
}

.border-t-atg-gray-900\/10 {
  border-top-color: rgb(15 29 37 / 0.1);
}

.bg-\[\#CACACA\]\/10 {
  background-color: rgb(202 202 202 / 0.1);
}

.bg-\[\#EEDFDC\] {
  --tw-bg-opacity: 1;
  background-color: rgb(238 223 220 / var(--tw-bg-opacity, 1));
}

.bg-\[\#EFF1F1\] {
  --tw-bg-opacity: 1;
  background-color: rgb(239 241 241 / var(--tw-bg-opacity, 1));
}

.bg-atg-gray-100 {
  --tw-bg-opacity: 1;
  background-color: rgb(200 214 219 / var(--tw-bg-opacity, 1));
}

.bg-atg-gray-300 {
  --tw-bg-opacity: 1;
  background-color: rgb(94 112 120 / var(--tw-bg-opacity, 1));
}

.bg-atg-gray-50 {
  --tw-bg-opacity: 1;
  background-color: rgb(243 248 250 / var(--tw-bg-opacity, 1));
}

.bg-atg-gray-50\/10 {
  background-color: rgb(243 248 250 / 0.1);
}

.bg-atg-gray-50\/15 {
  background-color: rgb(243 248 250 / 0.15);
}

.bg-atg-gray-50\/70 {
  background-color: rgb(243 248 250 / 0.7);
}

.bg-atg-gray-50\/80 {
  background-color: rgb(243 248 250 / 0.8);
}

.bg-atg-gray-900 {
  --tw-bg-opacity: 1;
  background-color: rgb(15 29 37 / var(--tw-bg-opacity, 1));
}

.bg-atg-gray-900\/40 {
  background-color: rgb(15 29 37 / 0.4);
}

.bg-danger {
  --tw-bg-opacity: 1;
  background-color: rgb(179 38 30 / var(--tw-bg-opacity, 1));
}

.bg-danger\/5 {
  background-color: rgb(179 38 30 / 0.05);
}

.bg-primary {
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
}

.bg-primary-700 {
  --tw-bg-opacity: 1;
  background-color: rgb(201 58 34 / var(--tw-bg-opacity, 1));
}

.bg-primary\/10 {
  background-color: rgb(228 70 43 / 0.1);
}

.bg-secondary {
  --tw-bg-opacity: 1;
  background-color: rgb(41 139 151 / var(--tw-bg-opacity, 1));
}

.bg-secondary-700 {
  --tw-bg-opacity: 1;
  background-color: rgb(36 129 141 / var(--tw-bg-opacity, 1));
}

.bg-tertiary {
  --tw-bg-opacity: 1;
  background-color: rgb(77 184 200 / var(--tw-bg-opacity, 1));
}

.bg-tertiary\/15 {
  background-color: rgb(77 184 200 / 0.15);
}

.bg-transparent {
  background-color: transparent;
}

.bg-white {
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
}

.bg-white\/10 {
  background-color: rgb(255 255 255 / 0.1);
}

.bg-gradient-to-b {
  background-image: linear-gradient(to bottom, var(--tw-gradient-stops));
}

.from-secondary {
  --tw-gradient-from: #298B97 var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(41 139 151 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}

.from-white {
  --tw-gradient-from: #fff var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}

.from-white\/\[0\.24\] {
  --tw-gradient-from: rgb(255 255 255 / 0.24) var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}

.to-\[\#CCE3E6\] {
  --tw-gradient-to: #CCE3E6 var(--tw-gradient-to-position);
}

.to-primary {
  --tw-gradient-to: #E4462B var(--tw-gradient-to-position);
}

.to-secondary\/\[0\.24\] {
  --tw-gradient-to: rgb(41 139 151 / 0.24) var(--tw-gradient-to-position);
}

.bg-cover {
  background-size: cover;
}

.bg-center {
  background-position: center;
}

.bg-no-repeat {
  background-repeat: no-repeat;
}

.object-contain {
  -o-object-fit: contain;
     object-fit: contain;
}

.object-cover {
  -o-object-fit: cover;
     object-fit: cover;
}

.object-\[68\%_center\] {
  -o-object-position: 68% center;
     object-position: 68% center;
}

.object-center {
  -o-object-position: center;
     object-position: center;
}

.p-0 {
  padding: 0px;
}

.p-4 {
  padding: 1rem;
}

.p-5 {
  padding: 1.25rem;
}

.p-6 {
  padding: 1.5rem;
}

.p-7 {
  padding: 1.75rem;
}

.p-8 {
  padding: 2rem;
}

.p-\[2px\] {
  padding: 2px;
}

.px-2 {
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}

.px-2\.5 {
  padding-left: 0.625rem;
  padding-right: 0.625rem;
}

.px-3 {
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}

.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}

.px-5 {
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}

.py-0\.5 {
  padding-top: 0.125rem;
  padding-bottom: 0.125rem;
}

.py-1 {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}

.py-12 {
  padding-top: 3rem;
  padding-bottom: 3rem;
}

.py-14 {
  padding-top: 3.5rem;
  padding-bottom: 3.5rem;
}

.py-16 {
  padding-top: 4rem;
  padding-bottom: 4rem;
}

.py-30 {
  padding-top: 7.5rem;
  padding-bottom: 7.5rem;
}

.py-4 {
  padding-top: 1rem;
  padding-bottom: 1rem;
}

.py-6 {
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}

.py-8 {
  padding-top: 2rem;
  padding-bottom: 2rem;
}

.pb-12 {
  padding-bottom: 3rem;
}

.pb-3 {
  padding-bottom: 0.75rem;
}

.pb-4 {
  padding-bottom: 1rem;
}

.pb-6 {
  padding-bottom: 1.5rem;
}

.pb-8 {
  padding-bottom: 2rem;
}

.pl-14 {
  padding-left: 3.5rem;
}

.pl-5 {
  padding-left: 1.25rem;
}

.pt-1\.5 {
  padding-top: 0.375rem;
}

.pt-4 {
  padding-top: 1rem;
}

.text-left {
  text-align: left;
}

.text-center {
  text-align: center;
}

.font-primary {
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
}

.font-secondary {
  font-family: Poppins, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
}

.font-tertiary {
  font-family: Poppins, system-ui, sans-serif;
}

.text-\[0\.6875rem\] {
  font-size: 0.6875rem;
}

.text-\[0\.8125rem\] {
  font-size: 0.8125rem;
}

.text-\[0\.875rem\] {
  font-size: 0.875rem;
}

.text-\[0\.9375rem\] {
  font-size: 0.9375rem;
}

.text-\[1\.0625rem\] {
  font-size: 1.0625rem;
}

.text-\[1\.125rem\] {
  font-size: 1.125rem;
}

.text-\[1\.25rem\] {
  font-size: 1.25rem;
}

.text-\[1\.5rem\] {
  font-size: 1.5rem;
}

.text-\[1\.75rem\] {
  font-size: 1.75rem;
}

.text-\[1rem\] {
  font-size: 1rem;
}

.text-\[3rem\] {
  font-size: 3rem;
}

.text-\[7rem\] {
  font-size: 7rem;
}

.font-bold {
  font-weight: 700;
}

.font-light {
  font-weight: 300;
}

.font-medium {
  font-weight: 500;
}

.font-semibold {
  font-weight: 600;
}

.uppercase {
  text-transform: uppercase;
}

.normal-case {
  text-transform: none;
}

.italic {
  font-style: italic;
}

.not-italic {
  font-style: normal;
}

.leading-6 {
  line-height: 1.5rem;
}

.leading-\[1\.15\] {
  line-height: 1.15;
}

.leading-\[1\.2857\] {
  line-height: 1.2857;
}

.leading-\[1\.3125\] {
  line-height: 1.3125;
}

.leading-\[1\.375rem\] {
  line-height: 1.375rem;
}

.leading-\[1\.3\] {
  line-height: 1.3;
}

.leading-\[1\.4\] {
  line-height: 1.4;
}

.leading-\[1\.5\] {
  line-height: 1.5;
}

.leading-\[1\.5rem\] {
  line-height: 1.5rem;
}

.leading-\[1\.6\] {
  line-height: 1.6;
}

.leading-none {
  line-height: 1;
}

.leading-normal {
  line-height: 1.5;
}

.leading-snug {
  line-height: 1.375;
}

.leading-tight {
  line-height: 1.25;
}

.tracking-\[0\.06em\] {
  letter-spacing: 0.06em;
}

.tracking-body {
  letter-spacing: 0.03em;
}

.tracking-normal {
  letter-spacing: 0em;
}

.text-\[\#333333\] {
  --tw-text-opacity: 1;
  color: rgb(51 51 51 / var(--tw-text-opacity, 1));
}

.text-\[\#505050\] {
  --tw-text-opacity: 1;
  color: rgb(80 80 80 / var(--tw-text-opacity, 1));
}

.text-atg-gray-100 {
  --tw-text-opacity: 1;
  color: rgb(200 214 219 / var(--tw-text-opacity, 1));
}

.text-atg-gray-300 {
  --tw-text-opacity: 1;
  color: rgb(94 112 120 / var(--tw-text-opacity, 1));
}

.text-atg-gray-50 {
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

.text-atg-gray-900 {
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

.text-atg-gray-900\/80 {
  color: rgb(15 29 37 / 0.8);
}

.text-danger {
  --tw-text-opacity: 1;
  color: rgb(179 38 30 / var(--tw-text-opacity, 1));
}

.text-inherit {
  color: inherit;
}

.text-primary {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

.text-primary\/35 {
  color: rgb(228 70 43 / 0.35);
}

.text-secondary-700 {
  --tw-text-opacity: 1;
  color: rgb(36 129 141 / var(--tw-text-opacity, 1));
}

.text-white\/85 {
  color: rgb(255 255 255 / 0.85);
}

.underline {
  text-decoration-line: underline;
}

.no-underline {
  text-decoration-line: none;
}

.opacity-0 {
  opacity: 0;
}

.opacity-80 {
  opacity: 0.8;
}

.shadow {
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.outline {
  outline-style: solid;
}

.ring {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}

.ring-1 {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}

.ring-inset {
  --tw-ring-inset: inset;
}

.ring-atg-gray-900\/10 {
  --tw-ring-color: rgb(15 29 37 / 0.1);
}

.blur {
  --tw-blur: blur(8px);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.backdrop-blur-md {
  --tw-backdrop-blur: blur(12px);
  -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}

.backdrop-blur-sm {
  --tw-backdrop-blur: blur(4px);
  -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}

.transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-all {
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-colors {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-opacity {
  transition-property: opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-transform {
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.duration-200 {
  transition-duration: 200ms;
}

.duration-300 {
  transition-duration: 300ms;
}

.duration-500 {
  transition-duration: 500ms;
}

.content-\[\'\\eXXX\'\] {
  --tw-content: '\eXXX';
  content: var(--tw-content);
}

.stretched-link::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 10;
}

.title-white :is(h1,h2,h3,h4,h5,h6) {
  color: #F3F8FA;
}

.\[mask-image\:linear-gradient\(to_right\2c transparent\2c black_6\%\2c black_94\%\2c transparent\)\] {
  -webkit-mask-image: linear-gradient(to right,transparent,black 6%,black 94%,transparent);
          mask-image: linear-gradient(to right,transparent,black 6%,black 94%,transparent);
}

/**
 * Custom styles to immediately follow Tailwind's `utilities` layer.
 *
 * For PLAIN utility classes only. Anything needing a variant (hover:, lg:,
 * group-hover:) belongs in tailwind.config.js → plugins → addUtilities().
 */

.before\:absolute::before {
  content: var(--tw-content);
  position: absolute;
}

.before\:inset-0::before {
  content: var(--tw-content);
  inset: 0px;
}

.before\:left-0::before {
  content: var(--tw-content);
  left: 0px;
}

.before\:top-\[0\.55em\]::before {
  content: var(--tw-content);
  top: 0.55em;
}

.before\:top-\[0\.5em\]::before {
  content: var(--tw-content);
  top: 0.5em;
}

.before\:z-\[1\]::before {
  content: var(--tw-content);
  z-index: 1;
}

.before\:block::before {
  content: var(--tw-content);
  display: block;
}

.before\:size-1\.5::before {
  content: var(--tw-content);
  width: 0.375rem;
  height: 0.375rem;
}

.before\:h-0\.5::before {
  content: var(--tw-content);
  height: 0.125rem;
}

.before\:w-2\.5::before {
  content: var(--tw-content);
  width: 0.625rem;
}

.before\:rounded-full::before {
  content: var(--tw-content);
  border-radius: 9999px;
}

.before\:bg-atg-gray-900::before {
  content: var(--tw-content);
  --tw-bg-opacity: 1;
  background-color: rgb(15 29 37 / var(--tw-bg-opacity, 1));
}

.before\:bg-black\/40::before {
  content: var(--tw-content);
  background-color: rgb(0 0 0 / 0.4);
}

.before\:bg-current::before {
  content: var(--tw-content);
  background-color: currentColor;
}

.before\:bg-primary::before {
  content: var(--tw-content);
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
}

.before\:content-\[\'\'\]::before {
  --tw-content: '';
  content: var(--tw-content);
}

.after\:absolute::after {
  content: var(--tw-content);
  position: absolute;
}

.after\:inset-0::after {
  content: var(--tw-content);
  inset: 0px;
}

.after\:z-\[-1\]::after {
  content: var(--tw-content);
  z-index: -1;
}

.after\:z-\[1\]::after {
  content: var(--tw-content);
  z-index: 1;
}

.after\:h-2\.5::after {
  content: var(--tw-content);
  height: 0.625rem;
}

.after\:w-0\.5::after {
  content: var(--tw-content);
  width: 0.125rem;
}

.after\:bg-atg-gray-900\/55::after {
  content: var(--tw-content);
  background-color: rgb(15 29 37 / 0.55);
}

.after\:bg-atg-gray-900\/70::after {
  content: var(--tw-content);
  background-color: rgb(15 29 37 / 0.7);
}

.after\:bg-atg-gray-900\/80::after {
  content: var(--tw-content);
  background-color: rgb(15 29 37 / 0.8);
}

.after\:bg-atg-gray-900\/\[0\.48\]::after {
  content: var(--tw-content);
  background-color: rgb(15 29 37 / 0.48);
}

.after\:bg-current::after {
  content: var(--tw-content);
  background-color: currentColor;
}

.after\:bg-tertiary\/20::after {
  content: var(--tw-content);
  background-color: rgb(77 184 200 / 0.2);
}

.after\:transition-transform::after {
  content: var(--tw-content);
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.after\:duration-300::after {
  content: var(--tw-content);
  transition-duration: 300ms;
}

.after\:content-\[\'\'\]::after {
  --tw-content: '';
  content: var(--tw-content);
}

.first\:pt-0:first-child {
  padding-top: 0px;
}

.last\:mb-0:last-child {
  margin-bottom: 0px;
}

.last\:border-0:last-child {
  border-width: 0px;
}

.last\:pb-0:last-child {
  padding-bottom: 0px;
}

.hover\:border-atg-gray-900\/30:hover {
  border-color: rgb(15 29 37 / 0.3);
}

.hover\:bg-atg-gray-50:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(243 248 250 / var(--tw-bg-opacity, 1));
}

.hover\:bg-atg-gray-50\/20:hover {
  background-color: rgb(243 248 250 / 0.2);
}

.hover\:bg-atg-gray-900\/5:hover {
  background-color: rgb(15 29 37 / 0.05);
}

.hover\:bg-primary:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
}

.hover\:text-atg-gray-50:hover {
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

.hover\:text-atg-gray-900:hover {
  --tw-text-opacity: 1;
  color: rgb(15 29 37 / var(--tw-text-opacity, 1));
}

.hover\:text-primary:hover {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

.hover\:text-white:hover {
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}

.group:focus-within .group-focus-within\:grid-rows-\[1fr\] {
  grid-template-rows: 1fr;
}

.group:focus-within .group-focus-within\:opacity-100 {
  opacity: 1;
}

.group:hover .group-hover\:scale-105 {
  --tw-scale-x: 1.05;
  --tw-scale-y: 1.05;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.group:hover .group-hover\:grid-rows-\[1fr\] {
  grid-template-rows: 1fr;
}

.group:hover .group-hover\:bg-atg-gray-50\/25 {
  background-color: rgb(243 248 250 / 0.25);
}

.group:hover .group-hover\:opacity-100 {
  opacity: 1;
}

.group:hover .group-hover\:\[animation-play-state\:paused\] {
  animation-play-state: paused;
}

@media not all and (min-width: 1200px) {
  .max-xl\:hidden {
    display: none;
  }

  .max-xl\:w-full {
    width: 100%;
  }
}

@media (min-width: 576px) {
  .sm\:my-12 {
    margin-top: 3rem;
    margin-bottom: 3rem;
  }

  .sm\:h-96 {
    height: 24rem;
  }

  .sm\:w-1\/2 {
    width: 50%;
  }

  .sm\:w-1\/3 {
    width: 33.333333%;
  }

  .sm\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .sm\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (min-width: 768px) {
  .md\:w-1\/2 {
    width: 50%;
  }
}

@media (min-width: 992px) {
  .lg\:absolute {
    position: absolute;
  }

  .lg\:relative {
    position: relative;
  }

  .lg\:sticky {
    position: sticky;
  }

  .lg\:inset-x-3 {
    left: 0.75rem;
    right: 0.75rem;
  }

  .lg\:inset-y-0 {
    top: 0px;
    bottom: 0px;
  }

  .lg\:left-0 {
    left: 0px;
  }

  .lg\:top-\[calc\(var\(--header-h\2c 11rem\)\+1\.5rem\)\] {
    top: calc(var(--header-h,11rem) + 1.5rem);
  }

  .lg\:my-16 {
    margin-top: 4rem;
    margin-bottom: 4rem;
  }

  .lg\:mb-0 {
    margin-bottom: 0px;
  }

  .lg\:mb-10 {
    margin-bottom: 2.5rem;
  }

  .lg\:mb-12 {
    margin-bottom: 3rem;
  }

  .lg\:mb-8 {
    margin-bottom: 2rem;
  }

  .lg\:mb-9 {
    margin-bottom: 2.25rem;
  }

  .lg\:ml-auto {
    margin-left: auto;
  }

  .lg\:mt-10 {
    margin-top: 2.5rem;
  }

  .lg\:mt-12 {
    margin-top: 3rem;
  }

  .lg\:mt-8 {
    margin-top: 2rem;
  }

  .lg\:mt-9 {
    margin-top: 2.25rem;
  }

  .lg\:h-auto {
    height: auto;
  }

  .lg\:h-full {
    height: 100%;
  }

  .lg\:w-1\/2 {
    width: 50%;
  }

  .lg\:w-1\/3 {
    width: 33.333333%;
  }

  .lg\:w-1\/4 {
    width: 25%;
  }

  .lg\:w-1\/5 {
    width: 20%;
  }

  .lg\:w-\[36\%\] {
    width: 36%;
  }

  .lg\:w-\[43\.6\%\] {
    width: 43.6%;
  }

  .lg\:w-\[64\%\] {
    width: 64%;
  }

  .lg\:flex-1 {
    flex: 1 1 0%;
  }

  .lg\:-translate-x-1\/2 {
    --tw-translate-x: -50%;
    transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
  }

  .lg\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .lg\:grid-cols-5 {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }

  .lg\:flex-row {
    flex-direction: row;
  }

  .lg\:flex-row-reverse {
    flex-direction: row-reverse;
  }

  .lg\:items-stretch {
    align-items: stretch;
  }

  .lg\:gap-x-10 {
    -moz-column-gap: 2.5rem;
         column-gap: 2.5rem;
  }

  .lg\:space-y-4 > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(1rem * var(--tw-space-y-reverse));
  }

  .lg\:p-10 {
    padding: 2.5rem;
  }

  .lg\:py-16 {
    padding-top: 4rem;
    padding-bottom: 4rem;
  }

  .lg\:py-20 {
    padding-top: 5rem;
    padding-bottom: 5rem;
  }

  .lg\:pb-16 {
    padding-bottom: 4rem;
  }

  .lg\:pl-\[2\.8125rem\] {
    padding-left: 2.8125rem;
  }
}

@media (min-width: 1200px) {
  .xl\:inset-x-4 {
    left: 1rem;
    right: 1rem;
  }

  .xl\:-mx-4 {
    margin-left: -1rem;
    margin-right: -1rem;
  }

  .xl\:my-20 {
    margin-top: 5rem;
    margin-bottom: 5rem;
  }

  .xl\:size-20 {
    width: 5rem;
    height: 5rem;
  }

  .xl\:max-h-24 {
    max-height: 6rem;
  }

  .xl\:max-w-24 {
    max-width: 6rem;
  }

  .xl\:gap-20 {
    gap: 5rem;
  }

  .xl\:gap-6 {
    gap: 1.5rem;
  }

  .xl\:gap-y-8 {
    row-gap: 2rem;
  }

  .xl\:p-5 {
    padding: 1.25rem;
  }

  .xl\:p-6 {
    padding: 1.5rem;
  }

  .xl\:p-8 {
    padding: 2rem;
  }

  .xl\:px-4 {
    padding-left: 1rem;
    padding-right: 1rem;
  }

  .xl\:px-5 {
    padding-left: 1.25rem;
    padding-right: 1.25rem;
  }

  .xl\:py-20 {
    padding-top: 5rem;
    padding-bottom: 5rem;
  }

  .xl\:py-24 {
    padding-top: 6rem;
    padding-bottom: 6rem;
  }

  .xl\:py-5 {
    padding-top: 1.25rem;
    padding-bottom: 1.25rem;
  }

  .xl\:pb-20 {
    padding-bottom: 5rem;
  }

  .xl\:pb-5 {
    padding-bottom: 1.25rem;
  }

  .xl\:pl-\[4\.5rem\] {
    padding-left: 4.5rem;
  }

  .xl\:text-\[1\.625rem\] {
    font-size: 1.625rem;
  }

  .xl\:text-\[1\.875rem\] {
    font-size: 1.875rem;
  }
}

@media (min-width: 1440px) {
  .\32xl\:bottom-3 {
    bottom: 0.75rem;
  }

  .\32xl\:bottom-5 {
    bottom: 1.25rem;
  }

  .\32xl\:left-5 {
    left: 1.25rem;
  }

  .\32xl\:right-\[1\.4375rem\] {
    right: 1.4375rem;
  }

  .\32xl\:-mx-3 {
    margin-left: -0.75rem;
    margin-right: -0.75rem;
  }

  .\32xl\:-mx-5 {
    margin-left: -1.25rem;
    margin-right: -1.25rem;
  }

  .\32xl\:my-24 {
    margin-top: 6rem;
    margin-bottom: 6rem;
  }

  .\32xl\:my-30 {
    margin-top: 7.5rem;
    margin-bottom: 7.5rem;
  }

  .\32xl\:my-5 {
    margin-top: 1.25rem;
    margin-bottom: 1.25rem;
  }

  .\32xl\:mb-0 {
    margin-bottom: 0px;
  }

  .\32xl\:mb-4 {
    margin-bottom: 1rem;
  }

  .\32xl\:mb-5 {
    margin-bottom: 1.25rem;
  }

  .\32xl\:mb-6 {
    margin-bottom: 1.5rem;
  }

  .\32xl\:mb-\[1\.3125rem\] {
    margin-bottom: 1.3125rem;
  }

  .\32xl\:mb-\[1\.5625rem\] {
    margin-bottom: 1.5625rem;
  }

  .\32xl\:mb-\[2\.6875rem\] {
    margin-bottom: 2.6875rem;
  }

  .\32xl\:mb-\[3\.75rem\] {
    margin-bottom: 3.75rem;
  }

  .\32xl\:mt-0 {
    margin-top: 0px;
  }

  .\32xl\:mt-10 {
    margin-top: 2.5rem;
  }

  .\32xl\:mt-6 {
    margin-top: 1.5rem;
  }

  .\32xl\:mt-\[0\.875rem\] {
    margin-top: 0.875rem;
  }

  .\32xl\:mt-\[1\.1875rem\] {
    margin-top: 1.1875rem;
  }

  .\32xl\:mt-\[1\.3125rem\] {
    margin-top: 1.3125rem;
  }

  .\32xl\:mt-\[1\.875rem\] {
    margin-top: 1.875rem;
  }

  .\32xl\:mt-\[2\.375rem\] {
    margin-top: 2.375rem;
  }

  .\32xl\:mt-\[2\.8125rem\] {
    margin-top: 2.8125rem;
  }

  .\32xl\:mt-\[3\.75rem\] {
    margin-top: 3.75rem;
  }

  .\32xl\:mt-\[5\.0625rem\] {
    margin-top: 5.0625rem;
  }

  .\32xl\:mt-\[6\.4375rem\] {
    margin-top: 6.4375rem;
  }

  .\32xl\:aspect-\[106\/100\] {
    aspect-ratio: 106/100;
  }

  .\32xl\:size-14 {
    width: 3.5rem;
    height: 3.5rem;
  }

  .\32xl\:size-20 {
    width: 5rem;
    height: 5rem;
  }

  .\32xl\:size-8 {
    width: 2rem;
    height: 2rem;
  }

  .\32xl\:size-\[5\.625rem\] {
    width: 5.625rem;
    height: 5.625rem;
  }

  .\32xl\:size-\[9\.125rem\] {
    width: 9.125rem;
    height: 9.125rem;
  }

  .\32xl\:h-\[32\.5rem\] {
    height: 32.5rem;
  }

  .\32xl\:max-h-32 {
    max-height: 8rem;
  }

  .\32xl\:min-h-\[18\.125rem\] {
    min-height: 18.125rem;
  }

  .\32xl\:min-h-\[24\.4375rem\] {
    min-height: 24.4375rem;
  }

  .\32xl\:min-h-\[9\.4375rem\] {
    min-height: 9.4375rem;
  }

  .\32xl\:w-\[2\.0625rem\] {
    width: 2.0625rem;
  }

  .\32xl\:w-\[2\.9375rem\] {
    width: 2.9375rem;
  }

  .\32xl\:w-\[32\%\] {
    width: 32%;
  }

  .\32xl\:w-\[34\.5rem\] {
    width: 34.5rem;
  }

  .\32xl\:w-\[34\.875rem\] {
    width: 34.875rem;
  }

  .\32xl\:w-\[36rem\] {
    width: 36rem;
  }

  .\32xl\:w-\[38\.8125rem\] {
    width: 38.8125rem;
  }

  .\32xl\:w-\[39\.5rem\] {
    width: 39.5rem;
  }

  .\32xl\:w-\[40\.4375rem\] {
    width: 40.4375rem;
  }

  .\32xl\:w-\[40\.6875rem\] {
    width: 40.6875rem;
  }

  .\32xl\:w-\[41\.875rem\] {
    width: 41.875rem;
  }

  .\32xl\:w-\[42\.0625rem\] {
    width: 42.0625rem;
  }

  .\32xl\:w-\[43rem\] {
    width: 43rem;
  }

  .\32xl\:w-\[45\.75rem\] {
    width: 45.75rem;
  }

  .\32xl\:w-\[68\%\] {
    width: 68%;
  }

  .\32xl\:max-w-32 {
    max-width: 8rem;
  }

  .\32xl\:max-w-\[62\.1875rem\] {
    max-width: 62.1875rem;
  }

  .\32xl\:justify-between {
    justify-content: space-between;
  }

  .\32xl\:gap-3\.5 {
    gap: 0.875rem;
  }

  .\32xl\:gap-5 {
    gap: 1.25rem;
  }

  .\32xl\:gap-7 {
    gap: 1.75rem;
  }

  .\32xl\:gap-x-6 {
    -moz-column-gap: 1.5rem;
         column-gap: 1.5rem;
  }

  .\32xl\:gap-x-\[0\.9375rem\] {
    -moz-column-gap: 0.9375rem;
         column-gap: 0.9375rem;
  }

  .\32xl\:gap-x-\[1\.875rem\] {
    -moz-column-gap: 1.875rem;
         column-gap: 1.875rem;
  }

  .\32xl\:gap-x-\[7\.1875rem\] {
    -moz-column-gap: 7.1875rem;
         column-gap: 7.1875rem;
  }

  .\32xl\:gap-y-4 {
    row-gap: 1rem;
  }

  .\32xl\:gap-y-6 {
    row-gap: 1.5rem;
  }

  .\32xl\:space-y-4 > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(1rem * var(--tw-space-y-reverse));
  }

  .\32xl\:space-y-5 > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(1.25rem * var(--tw-space-y-reverse));
  }

  .\32xl\:space-y-\[1\.125rem\] > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(1.125rem * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(1.125rem * var(--tw-space-y-reverse));
  }

  .\32xl\:space-y-\[1\.3125rem\] > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(1.3125rem * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(1.3125rem * var(--tw-space-y-reverse));
  }

  .\32xl\:p-5 {
    padding: 1.25rem;
  }

  .\32xl\:p-6 {
    padding: 1.5rem;
  }

  .\32xl\:p-8 {
    padding: 2rem;
  }

  .\32xl\:p-\[1\.875rem\] {
    padding: 1.875rem;
  }

  .\32xl\:px-3 {
    padding-left: 0.75rem;
    padding-right: 0.75rem;
  }

  .\32xl\:px-5 {
    padding-left: 1.25rem;
    padding-right: 1.25rem;
  }

  .\32xl\:px-6 {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }

  .\32xl\:px-7 {
    padding-left: 1.75rem;
    padding-right: 1.75rem;
  }

  .\32xl\:px-\[0\.9375rem\] {
    padding-left: 0.9375rem;
    padding-right: 0.9375rem;
  }

  .\32xl\:py-10 {
    padding-top: 2.5rem;
    padding-bottom: 2.5rem;
  }

  .\32xl\:py-3\.5 {
    padding-top: 0.875rem;
    padding-bottom: 0.875rem;
  }

  .\32xl\:py-30 {
    padding-top: 7.5rem;
    padding-bottom: 7.5rem;
  }

  .\32xl\:py-5 {
    padding-top: 1.25rem;
    padding-bottom: 1.25rem;
  }

  .\32xl\:py-\[0\.6875rem\] {
    padding-top: 0.6875rem;
    padding-bottom: 0.6875rem;
  }

  .\32xl\:py-\[0\.8125rem\] {
    padding-top: 0.8125rem;
    padding-bottom: 0.8125rem;
  }

  .\32xl\:py-\[6\.25rem\] {
    padding-top: 6.25rem;
    padding-bottom: 6.25rem;
  }

  .\32xl\:py-\[6\.8125rem\] {
    padding-top: 6.8125rem;
    padding-bottom: 6.8125rem;
  }

  .\32xl\:py-\[7\.9375rem\] {
    padding-top: 7.9375rem;
    padding-bottom: 7.9375rem;
  }

  .\32xl\:py-\[7rem\] {
    padding-top: 7rem;
    padding-bottom: 7rem;
  }

  .\32xl\:py-\[8\.90625rem\] {
    padding-top: 8.90625rem;
    padding-bottom: 8.90625rem;
  }

  .\32xl\:pb-20 {
    padding-bottom: 5rem;
  }

  .\32xl\:pb-30 {
    padding-bottom: 7.5rem;
  }

  .\32xl\:pb-6 {
    padding-bottom: 1.5rem;
  }

  .\32xl\:pb-8 {
    padding-bottom: 2rem;
  }

  .\32xl\:pb-\[0\.625rem\] {
    padding-bottom: 0.625rem;
  }

  .\32xl\:pb-\[4\.3125rem\] {
    padding-bottom: 4.3125rem;
  }

  .\32xl\:pl-4 {
    padding-left: 1rem;
  }

  .\32xl\:pl-\[5\.25rem\] {
    padding-left: 5.25rem;
  }

  .\32xl\:pr-\[2\.8125rem\] {
    padding-right: 2.8125rem;
  }

  .\32xl\:pt-10 {
    padding-top: 2.5rem;
  }

  .\32xl\:pt-24 {
    padding-top: 6rem;
  }

  .\32xl\:pt-6 {
    padding-top: 1.5rem;
  }

  .\32xl\:pt-\[1\.125rem\] {
    padding-top: 1.125rem;
  }

  .\32xl\:pt-\[1\.625rem\] {
    padding-top: 1.625rem;
  }

  .\32xl\:pt-\[6\.25rem\] {
    padding-top: 6.25rem;
  }

  .\32xl\:text-\[0\.75rem\] {
    font-size: 0.75rem;
  }

  .\32xl\:text-\[0\.875rem\] {
    font-size: 0.875rem;
  }

  .\32xl\:text-\[1\.125rem\] {
    font-size: 1.125rem;
  }

  .\32xl\:text-\[1\.25rem\] {
    font-size: 1.25rem;
  }

  .\32xl\:text-\[1\.5625rem\] {
    font-size: 1.5625rem;
  }

  .\32xl\:text-\[1\.5rem\] {
    font-size: 1.5rem;
  }

  .\32xl\:text-\[1\.75rem\] {
    font-size: 1.75rem;
  }

  .\32xl\:text-\[1rem\] {
    font-size: 1rem;
  }

  .\32xl\:text-\[2\.25rem\] {
    font-size: 2.25rem;
  }

  .\32xl\:text-\[2rem\] {
    font-size: 2rem;
  }

  .\32xl\:font-medium {
    font-weight: 500;
  }

  .\32xl\:normal-case {
    text-transform: none;
  }

  .\32xl\:leading-6 {
    line-height: 1.5rem;
  }

  .\32xl\:leading-\[1\.3125\] {
    line-height: 1.3125;
  }

  .\32xl\:leading-\[1\.35625rem\] {
    line-height: 1.35625rem;
  }

  .\32xl\:leading-\[1\.625rem\] {
    line-height: 1.625rem;
  }

  .\32xl\:leading-\[1\.835rem\] {
    line-height: 1.835rem;
  }

  .\32xl\:tracking-\[0\.42px\] {
    letter-spacing: 0.42px;
  }

  .\32xl\:tracking-normal {
    letter-spacing: 0em;
  }

  .\32xl\:before\:top-\[0\.625em\]::before {
    content: var(--tw-content);
    top: 0.625em;
  }

  .\32xl\:before\:w-3\.5::before {
    content: var(--tw-content);
    width: 0.875rem;
  }

  .\32xl\:after\:h-3\.5::after {
    content: var(--tw-content);
    height: 0.875rem;
  }

  .\32xl\:first\:pt-0:first-child {
    padding-top: 0px;
  }

  .\32xl\:last\:pb-0:last-child {
    padding-bottom: 0px;
  }
}

.\[\&\.is-active\]\:border-primary.is-active {
  --tw-border-opacity: 1;
  border-color: rgb(228 70 43 / var(--tw-border-opacity, 1));
}

.\[\&\.is-active\]\:bg-primary.is-active {
  --tw-bg-opacity: 1;
  background-color: rgb(228 70 43 / var(--tw-bg-opacity, 1));
}

.\[\&\.is-active\]\:text-atg-gray-50.is-active {
  --tw-text-opacity: 1;
  color: rgb(243 248 250 / var(--tw-text-opacity, 1));
}

.hover\:\[\&\.is-active\]\:border-primary-700.is-active:hover {
  --tw-border-opacity: 1;
  border-color: rgb(201 58 34 / var(--tw-border-opacity, 1));
}

.hover\:\[\&\.is-active\]\:bg-primary-700.is-active:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(201 58 34 / var(--tw-bg-opacity, 1));
}

.\[\&\.itemActive\]\:to-primary\/\[0\.24\].itemActive {
  --tw-gradient-to: rgb(228 70 43 / 0.24) var(--tw-gradient-to-position);
}

.\[\&\.itemActive\]\:ring-primary.itemActive {
  --tw-ring-opacity: 1;
  --tw-ring-color: rgb(228 70 43 / var(--tw-ring-opacity, 1));
}

.\[\&\>\*\:last-child\]\:mb-0>*:last-child {
  margin-bottom: 0px;
}

.\[\&\>\*\]\:mb-0>* {
  margin-bottom: 0px;
}

@media (min-width: 1440px) {
  .\32xl\:\[\&\>\*\]\:mb-0>* {
    margin-bottom: 0px;
  }

  .\32xl\:\[\&\>h2\]\:mb-0>h2 {
    margin-bottom: 0px;
  }
}

.\[\&_a\]\:text-primary a {
  --tw-text-opacity: 1;
  color: rgb(228 70 43 / var(--tw-text-opacity, 1));
}

.\[\&_a\]\:underline a {
  text-decoration-line: underline;
}

@media (min-width: 1440px) {
  .\32xl\:\[\&_h2\]\:mx-auto h2 {
    margin-left: auto;
    margin-right: auto;
  }

  .\32xl\:\[\&_h2\]\:mb-\[1\.875rem\] h2 {
    margin-bottom: 1.875rem;
  }

  .\32xl\:\[\&_h2\]\:max-w-lg h2 {
    max-width: 32rem;
  }

  .\32xl\:\[\&_h2\]\:tracking-normal h2 {
    letter-spacing: 0em;
  }
}

.\[\&_iframe\]\:block iframe {
  display: block;
}

.\[\&_iframe\]\:h-64 iframe {
  height: 16rem;
}

.\[\&_iframe\]\:h-80 iframe {
  height: 20rem;
}

.\[\&_iframe\]\:w-full iframe {
  width: 100%;
}

@media (min-width: 992px) {
  .lg\:\[\&_iframe\]\:h-\[19rem\] iframe {
    height: 19rem;
  }

  .lg\:\[\&_iframe\]\:h-\[26rem\] iframe {
    height: 26rem;
  }
}

@media (min-width: 1440px) {
  .\32xl\:\[\&_iframe\]\:h-\[31\.25rem\] iframe {
    height: 31.25rem;
  }

  .\32xl\:\[\&_li\]\:leading-6 li {
    line-height: 1.5rem;
  }

  .\32xl\:\[\&_li\]\:text-\[\#333333\] li {
    --tw-text-opacity: 1;
    color: rgb(51 51 51 / var(--tw-text-opacity, 1));
  }

  .\32xl\:\[\&_li\]\:marker\:text-primary * li::marker {
    color: rgb(228 70 43 );
  }

  .\32xl\:\[\&_li\]\:marker\:text-primary li::marker {
    color: rgb(228 70 43 );
  }
}

.last\:\[\&_p\]\:mb-0 p:last-child {
  margin-bottom: 0px;
}

@media (min-width: 1440px) {
  .\32xl\:\[\&_p\]\:mx-auto p {
    margin-left: auto;
    margin-right: auto;
  }

  .\32xl\:\[\&_p\]\:mb-6 p {
    margin-bottom: 1.5rem;
  }

  .\32xl\:\[\&_p\]\:mb-\[1\.125rem\] p {
    margin-bottom: 1.125rem;
  }

  .\32xl\:\[\&_p\]\:max-w-\[43\.75rem\] p {
    max-width: 43.75rem;
  }

  .\32xl\:\[\&_p\]\:leading-\[1\.625rem\] p {
    line-height: 1.625rem;
  }

  .\32xl\:\[\&_p\]\:text-\[\#333333\] p {
    --tw-text-opacity: 1;
    color: rgb(51 51 51 / var(--tw-text-opacity, 1));
  }

  .\32xl\:\[\&_strong\]\:text-primary strong {
    --tw-text-opacity: 1;
    color: rgb(228 70 43 / var(--tw-text-opacity, 1));
  }
}

.\[\&_svg\]\:size-4 svg {
  width: 1rem;
  height: 1rem;
}

.\[\&_svg\]\:size-\[8\.125rem\] svg {
  width: 8.125rem;
  height: 8.125rem;
}

@media (min-width: 1440px) {
  .\32xl\:\[\&_ul\]\:space-y-2 ul > :not([hidden]) ~ :not([hidden]) {
    --tw-space-y-reverse: 0;
    margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
    margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
  }
}

[aria-expanded=true] .\[\[aria-expanded\=true\]_\&\]\:-rotate-180 {
  --tw-rotate: -180deg;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

[aria-expanded=true] .\[\[aria-expanded\=true\]_\&\]\:after\:scale-y-0::after {
  content: var(--tw-content);
  --tw-scale-y: 0;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
