@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@200;300;400;500;600;700;800&display=swap');

html { scroll-behavior: auto; }

:root {
  --pad: 0.2em;
  --logo-w: 118px; /* match your logo column */
}

body, p, button, .button, pre, ul, ol {
    font-family: "Manrope", Arial, sans-serif !important;
    font-weight: 400;
    font-style: normal;
}
body {
    line-height: 1;
    background: #FFF;
    color: #1a1a1a;
    margin: 0;
}

header, main, footer, nav, article, aside, hgroup { display: block; }

a {
    text-decoration: none;
    cursor: pointer;
    color: #00adef;
}

a:hover { color: #00adef; }

.hp-hidden {
  position: absolute !important;
  left: -10000px !important;
  width: 1px; height: 1px; overflow: hidden;
}
.sr-only {
  position: absolute !important;
  width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); border: 0;
}
.notice { margin:.75rem 0; padding:.75rem 1rem; border-radius:.5rem; text-align: center; color: #fff; }
.notice--ok  {
    background: #43b993;
    border: 1px solid #469172;
	margin: .5rem 0;
}
.notice--err {
    background: #af3d3d;
    border: 1px solid #7a251e;
}

ul.error-list { 
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0;
	list-style: none;
}

/* If there are at least two li’s, add gap */
ul.error-list:has(> li + li) {
  gap: .5rem;                  /* adjust spacing */
}

input.field-error {
	outline: 3px solid #af3d3d !important;
	box-shadow: 0 0 0 3px rgba(23,94,142,.15) !important;
}



.blur-header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100px;
    z-index: 50;
    backdrop-filter: blur(30px);
    -webkit-backdrop-filter: blur(30px);
    -webkit-mask-image: linear-gradient(to bottom, black 0px, black 50px, transparent 100%);
    mask-image: linear-gradient(to bottom, black 0px, black 50px, transparent 100%);
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    mask-repeat: no-repeat;
    -webkit-mask-repeat: no-repeat;
}

main.main {
    padding: 0;
    position: relative;
    background: #FFF;
    min-height: 50vh;
	min-width: 385px;
}

main.main p {
    line-height: 150%;
    margin: 1em 0;
}

nav.main {
  display: flex;
  position: fixed;
  top: 1.1em;
  left: 0;
  right: 0;
  justify-content: center;
  z-index: 60;
  font-size: 1em;
  padding: 0 1em;
}

nav.main {
  display: flex;
  position: fixed;
  top: 1.1em;
  left: 0;
  right: 0;
  justify-content: center;
  z-index: 60;
  font-size: 1em;
  padding: 0 1em;
}

/* === Container: symmetric, centered, no spill === */
nav.main .container {
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #00adef;
    color: #fff;
    max-width: 1600px;
    width: 100%;
    border-radius: 4em;
    padding: .45em .55em;
    box-sizing: border-box;
    position: relative;
    transition: background-color 2s ease;
    box-shadow: 0 12px 10px -12px rgb(0 0 0 / 75%);
    overflow: hidden;
}

/* Left column: fixed logo width */
nav.main .logo {
  /* no fixed flex-basis column */
  display: flex;
  align-items: center;
  flex: 0 1 auto;         /* allow natural sizing, not forced */
}

nav.main .logo a { display: inline-flex; align-items: center; line-height: 1; }

/* Keep aspect; height will adjust via media queries */
nav.main #header-logo {
    height: 60px;
    width: auto;
    fill: #fff;
    vertical-align: middle;
    display: block;
}

/* Middle column: nav centered in remaining space */
nav.main .menu {
  flex: 1 1 auto;
  display: flex;
  justify-content: center;
  align-items: center;
  list-style: none;
  margin: 0;
  padding: 0;
  min-width: 0;
  flex-wrap: nowrap;                              /* force single row */
  gap: clamp(0.35em, 1.6vw, 2em);                /* smooth spacing */
}

nav.main .item > a {
  color: #fff;
  text-decoration: none;
  display: inline-block;
  position: relative;
  z-index: 1;
  background: none;
  background-repeat: no-repeat;
  background-position: bottom center;
  background-size: 100% 0.3em;
  transition: background 0.3s ease, color 0.3s ease;
  font-weight: bold;
  cursor: pointer;

  /* squeeze-friendly sizing */
  white-space: nowrap;                            /* never wrap labels */
  font-size: clamp(.74em, 1.2vw + .62em, 1.1em);   /* scales down smoothly */
  padding-inline: clamp(.18em, 0.6vw, .5em);     /* trims at small widths */
  padding-block: 1em;                             /* matches your original */
}

nav.main .item > a:hover { color: #e2e8e8; }

/* Right column: ghost spacer to mirror logo width (for centering) */
nav.main .container::after {
  content: "";
  flex: 0 0 var(--logo-w);
}

h2 {
  font-size: 2em;
  font-weight: 400;
  color: #3b3b3b;
  text-align: center;
  padding: .5em;
  margin: auto auto auto;
}

	h2 span.sub {
		font-weight: 700;
		font-style: italic;
		color: #00adef;
	}

/* inner container */
.content {
  max-width: 1200px;
  margin: 0 auto;
  padding: 2rem;
}

/* base */
.cards { 
  display: grid;
}
.cards.two   { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.cards.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cards.four { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* card (now used on <figure>) */
.card {
  margin: 0;                 /* figures have default margins; reset */
  padding: 1.5rem;
}

.card.icon h3 { text-align: center; color: #365a88; }
.card.icon p { text-align: center; }

/* --- critical fixes for your overflow issue --- */
*, *::before, *::after { box-sizing: border-box; }
.contact-form .form-grid > * { min-width: 0; }           /* let grid children shrink */
.contact-form input, .contact-form textarea {
  width: 100%;
  max-width: 100%;                                        /* don't bleed past gaps */
}

/* Section shell (matches your style) */
.section-testimonials { background: #fff; }
.section-company { background: #fff; }
.section-products { background: #e2e8e8; }

.section-company .card p {
    padding-top: 1rem;
	border-top: 2px solid #3b3b3b;
}

/* Section shell (matches your style) */
.section-contact { background: #e2e8e8; }

/* Grid: 2 cols -> 1 col */
.contact-form .form-grid {
	display: grid;
    gap: 2rem;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-areas: "left right";
	align-items: start;
	padding-top: 1rem;
}

.form-actions { grid-area: actions; }

.header-blurb {
  max-width: 750px;
  margin: 0 auto;
  text-align: center;
}

#products .form-actions { border-top: none; padding-top: 1rem; }

/* Fieldset styling */
.fs {
    margin: 0;
    border: none;
    display: grid;
    gap: 1.5rem;
    padding: 0 0 2em 0;
}

.contact-form input,
.contact-form textarea {
	display: block;
	outline: none;
    margin: 0;
    border: none;
    box-shadow: none;
    width: 100%;
    font-family: inherit;
    background: #fafafa;
    box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, .2);
    border-radius: .25em;
    padding: 1em;
    font-size: 1em;
    color: #1a1a1a;
}
.contact-form textarea { resize: vertical; min-height: 9rem; }

.contact-form input:focus,
.contact-form textarea:focus {
  outline: 3px solid #00adef;
  box-shadow: 0 0 0 3px rgba(23,94,142,.15);
}

/* Actions */
.form-actions {
	display: flex;
	justify-content: center;
	border-top: 2px solid #175e8e;
	padding-top: 1.5rem;
	margin: 0;
}
.btn {
    appearance: none;
	font-size: 1rem;
    border-bottom: 2px solid #194570;
    background: #00adef;
    color: #fff;
    padding: .7rem 1.2rem;
    border-radius: .5rem;
    font-weight: 600;
    cursor: pointer;
    border-top: none;
    border-left: none;
    border-right: none;
}
	.btn svg {
		width: 14px;
		vertical-align: middle;
		margin-left: 2px;
		margin-top: -2px;
		fill: #fff
	}

.btn:hover { filter: brightness(1.05); }
.btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(23,94,142,.25);
}

div.content div.content-inner {
    margin: auto;
    color: #3b3b3b;
}
div.content div.content-inner.large { max-width: 1200px; }
div.content div.content-inner.medium { max-width: 950px; }
div.content div.content-inner.small { max-width: 750px; }
div.content div.content-inner.xtra-small { max-width: 650px; }

div.column-icon {
    text-align: center;
    height: 120px;
    align-content: flex-end;
}

	div.column-icon.small {
		height: 110px;
	}

	div.column-icon svg { height: 100%; width: 100%; }
	div.column-icon.small.smaller svg { height: 85%; }
	div.column-icon.small.smallest svg { height: 80%; }

footer.footer {
    background: #3b3b3b;
    padding: 2em 1em;
    text-align: center;
}

footer.footer p {
    color: #a7a8a9;
    font-size: 0.9em;
	line-height: 150%;
	max-width: 900px;
    margin-left: auto;
    margin-right: auto;
}

footer.footer ul {
    list-style: none;
}
ul.social-links {
    max-width: 200px;
    padding: 0;
    margin: 1em auto;
    text-align: center;
}

footer.footer li {
    display: inline-block;
    padding: 0.5em 0em;
}


div.footer-blurb {
    margin-left: auto;
    margin-right: auto;
    text-align: center;
}

	div.footer-blurb.large { max-width: 900px; }
	div.footer-blurb.medium { max-width: 650px; }

	div.footer-blurb h3 {
		font-size: 1.5rem;
		font-weight: 600;
		font-style: italic;
		margin: 0 auto;
		color: #365a88;
	}

ul.social-links li {
    display: inline-block;
    width: 31% !important;
    padding: 0;
    margin: 0;
}

ul.social-links li a {
    display: block;
    width: 100%;
    color: #FFF;
}

	ul.social-links li a svg {
		fill: #fff;
		width: 30px;
	}

ul.social-links li a:before {
    font-size: 1.6em;
    text-align: center;
}

ul.social-links li a span {
    display: none;
}

footer.footer ul.legal {
    font-size: 0.8em;
    margin-top: 2em;
	padding: 0;
}

footer.footer ul.legal a { color: #AAA; }

	footer.footer ul.legal a:hover { color: #00adef; }

/* DROP-IN REPLACEMENT */
.menu-footer.contact {
  /* desktop: 3-column grid: left | • | right */
  display: grid;
  grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
  align-items: center;
  justify-items: stretch;
  grid-auto-flow: row;          /* ensure one row by default */
  width: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
  color: #fff;                  /* base color; links can inherit if you want */
}

/* centered dot (desktop only) */
.menu-footer.contact::before {
  content: "•";
  grid-column: 2;
  grid-row: 1;
  justify-self: center;
  align-self: center;
  line-height: 1;
  opacity: .85;
}

/* place items on the same row as the dot */
.menu-footer.contact li { grid-row: 1; }
.menu-footer.contact li:first-child { grid-column: 1; justify-self: end; }
.menu-footer.contact li:last-child  { grid-column: 3; justify-self: start; }

/* links */
.menu-footer.contact a {
  display: inline-block;
  padding: 0 .9rem;             /* left/right padding for each link */
  text-decoration: none;
  color: #00adef;               /* or `inherit` to use the container color */
}
.menu-footer.contact a:hover { text-decoration: underline; }




.hero {
  height: clamp(280px, 45vh, 560px);
  width: 100%;
  max-width: 100%;
  background-repeat: no-repeat;
  background-position: center 35%;
  background-size: cover;

  /* fallback */
  background-image: url("/assets/images/hero-1280.jpg");

  /* prefer WebP + higher DPR sources */
  background-image: image-set(
    url("/assets/images/hero-1280.webp") type("image/webp") 1x,
    url("/assets/images/hero-2560.webp") type("image/webp") 2x,
    url("/assets/images/hero-1280.jpg")  type("image/jpeg") 1x,
    url("/assets/images/hero-2560.jpg")  type("image/jpeg") 2x
  );
}
@media (min-width: 1024px){
  .hero { background-image: image-set(
    url("/assets/images/hero-1920.webp") type("image/webp") 1x,
    url("/assets/images/hero-3200.webp") type("image/webp") 2x,
    url("/assets/images/hero-1920.jpg")  type("image/jpeg") 1x,
    url("/assets/images/hero-3200.jpg")  type("image/jpeg") 2x
  );}
}

/* Each column */
/* keep columns as flex in your existing CSS */
.two-col .col { 
  display: flex;
  flex-direction: column;
  align-items: flex-start;   /* text stays left */
}

/* center the SVG inside the column */
.col-logo {
  display: block;            /* kill inline baseline quirks */
  width: clamp(64px, 10vw, 110px);
  height: auto;
  margin-inline: auto;       /* centers it */
  /* or: align-self: center;  // alternative for flex containers */
}

/* Paragraph blurbs */
.col-blurb {
  margin: 0;
  line-height: 1.5;
  text-wrap: pretty;        /* nicer wrapping if supported */
}

/* H3 should span the same page width as the container */
.subhead {
  margin: 1rem 0 .5rem;
  font-size: clamp(1rem, 2.2vw, 1.25rem);
  line-height: 1.25;
}

/* Final blurb (full-width inside container) */
.final-blurb {
  margin: 0 0 .5rem;
  line-height: 1.6;
}


/* ------------ Responsive squeezes to avoid the 445–442px wrap ------------ */

/* Start relaxing the ghost; tiny logo reduction */
@media (max-width: 900px) {
  nav.main .container::after { flex-basis: 60px; }

  .cards.two,
  .cards.three,
  .cards.four { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Collapse to one column */
@media (max-width: 800px) {
  .contact-form .form-grid {
    grid-template-columns: 1fr;
    grid-template-areas:
      "left"
      "right";
  }
  
  .fs { padding-bottom: 1.5rem; }
  
  .contact-form .form-grid { gap: 0; }
}

/* Kill the ghost entirely; tighten pill padding */
@media (max-width: 720px) {
  nav.main .container::after { flex-basis: 0; }
  nav.main .container { padding: .25em .45em; }
  nav.main #header-logo { height: 44px; }
}

/* collapse to 1 col <= 600px */
@media (max-width: 600px) {
  .cards,
  .cards.two,
  .cards.three,
  .cards.four { grid-template-columns: 1fr; }
  
  .feature-row {
    grid-template-columns: 1fr;      /* stack */
    justify-items: center;           /* center icon */
    text-align: center;              /* center text on small screens */
  }
  .feature-row.row--flip .feat-media,
  .feature-row.row--flip .feat-text { grid-column: initial; }
  .feat-text { text-align: inherit; }
  
  div.slotmachine { font-size: 1.1em; }
  div.slotmachine div.words { width: 245px; }
}

/* === Mobile: stack links, hide the dot === */
@media (max-width: 520px) {
  .menu-footer.contact {
    display: flex;                /* switch from grid to flex */
    flex-direction: column;       /* stack vertically */
    align-items: center;          /* center horizontally */
    justify-content: center;
    gap: .45rem;
    width: 100%;
  }

  .menu-footer.contact::before { content: none; } /* hide the dot */

  .menu-footer.contact li {
    margin: 0;
  }

  .menu-footer.contact a {
    display: inline-block;
    text-align: center;           /* center the text inside the link */
    padding: 0 .4rem;             /* optional tighter padding */
  }
}

/* Pre-pinch tightening */
@media (max-width: 480px) {
  nav.main #header-logo { height: 44px; }  /* frees space left */
  nav.main .menu { gap: .4em; }            /* tighter gaps */
  nav.main .item > a { letter-spacing: -.01em; }
  
  div.slotmachine { font-size: .9em; }
  div.slotmachine div.words { width: 190px; height: 1.7em; }
}

/* Critical pinch zone ~455→442px: keep one line */
@media (max-width: 455px) {
  nav.main .container { padding: .14em .5em; }
  nav.main .menu { gap: .32em; }
  nav.main .item > a {
    font-size: .76em;                      /* enough to avoid wrap */
    padding-inline: .18em;
  }
  
  .card { padding: 1rem; }
}

/* If some devices still push a wrap at ~442px, enable this final squeeze */
@media (max-width: 442px) {
  nav.main #header-logo { height: 26px; }
  nav.main .item > a { font-size: .74em; }
  
  h2 { font-size: 1.75em; }
}
