html {
    height: 100%
}

body
{
    min-height: 100%;
    position: relative;
    margin: 0;
    padding: 0;
    font-family: Karla, Arial, Helvetica, sans-serif;
    color: #4f4f4f;
    font-size: 18px;
    line-height: 30px;
}

body * {            /* Applies color change transition to all children of body */
    transition: color 0.1s;
}

a {
    color: #4f4f4f;
    text-decoration: none;
}

a:hover {
    color: #a5a5a5;
}

a:active {
    color: #a5a5a5;
}

h1 {
    font-family: Montserrat, Arial, Helvetica, sans-serif;
    font-size: 2em;
    font-weight: 400;
    letter-spacing: 0.25px;
    line-height: 42px;
    vertical-align: baseline;
    color: #2d2d2d;
}

h2 {
    font-family: Montserrat, Arial, Helvetica, sans-serif;
    font-size: 25px;
    font-weight: 400;
    letter-spacing: 0.25px;
    line-height: 37.5px;
    vertical-align: baseline;
    color: #2d2d2d;
}

h3 {
    font-family: Montserrat, Arial, Helvetica, sans-serif;
    font-size: 22px;
    font-weight: 400;
    letter-spacing: 0.25px;
    line-height: 35px;
    vertical-align: baseline;
    color: #2d2d2d;
}

h4 {
    font-family: Montserrat, Arial, Helvetica, sans-serif;
    font-size: 1.5em;
    font-weight: 400;
    letter-spacing: 0.25px;
    line-height: 30px;
    vertical-align: baseline;
    color: #2d2d2d;
}

h4:target {
    color: #00983e;
    transition: color 0.5s;
}

h5 {
    font-family: Montserrat, Arial, Helvetica, sans-serif;
    font-size: 1.1em;
    font-weight: 400;
    letter-spacing: 0.25px;
    line-height: 21px;
    vertical-align: baseline;
    color: #2d2d2d;
    margin: 0 0 11px 0;
}

b {
    font-weight: bold;
}

.bodyText {
    padding-left: 20px;
    padding-right: 20px;
}

.button, .ctaButton {
    display: block;
    position: relative;
    padding: 0.35em;
    margin-left: auto;
    margin-right: auto;
    max-width: 90%;
    margin-top: 2em;
    margin-bottom: 3.5em;
    text-align: center;
    border-radius: 4px;
    border: none;
    cursor: pointer;
    color: #ffffff;
    clear: both;
}

.button {
    background-color: #2d2d2d;
}

.ctaButton {
    background-color: #00983e;
}

.ctaButton:hover {
    background-color: #018537;
    color: #ffffff;
    transition: background-color 0.15s ease;
}

#largeMenu {
    display: none;
}

#subMenu {
    position: absolute;
    margin: 0;
    padding: 0;
    width: 100%;
    text-align: center;
    font-size: 16px;
    white-space: nowrap;
    background-color: rgba(0, 0, 0, 0.55);
    max-height: 30vh;
    overflow: hidden;
    list-style: none;
    z-index: 2;
}

#subMenu::-webkit-scrollbar {
    display: none;
}

#subMenu li a {
    color: #ffffff;
}

.topImg {
    display: inline-block;
    position: relative;
    top: 0;
    width: 100%;
    height: 350px;
    max-height: 40vh;
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center top;
    z-index: -10;
}

.body {
    padding-left: 14px;
    padding-right: 14px;
    max-width: 1150px;
    margin-left: auto;
    margin-right: auto;
    background-color: #fff;
}

ul.serviceSummary>li {
    display: inline-block;
    padding-right: 0.5em;
}

ul.serviceSummary>li::before {
    content:'\2022';
    margin-right:0.5em;
}

.preload {
    display: none;
}

.footer {
    color: #a5a5a5;
    text-align: center;
    padding-top: 42px;
    padding-bottom: 42px;
    border-top: 1px solid #e8e8e8;
    box-sizing: border-box;
}

.footer a {
    color: #a5a5a5;
    text-decoration: none;
}

.footer a:hover {
    color: #2d2d2d;
}

.footer a:active {
    color: #2d2d2d;
}

.footer .socialLinks .fa {
    color: #4f4f4f;
    font-size: 27px;
}

.footer .socialLinks .fa:hover {
    color: #a5a5a5;
}

ul#footLinks {
    list-style: none;
    line-height: 150%;
    padding: 0;
    margin-top: 25px;
    margin-bottom: 25px;
}

ul#footLinks li {
    display: inline;
    padding-left: 10px;
    padding-right: 10px;
}

#scrollToTopBtn {
    display: none; /* Hidden by default - overriden by js */
    position: fixed;
    height: 50px;
    width: 50px;
    line-height: 50px;
    vertical-align: middle;
    bottom: 20px;
    right: 30px;
    z-index: 99;
    border: none;
    outline: none;
    background-color: rgba(0, 0, 0, 0.05);
    color: #4f4f4f;
    cursor: pointer;
    border-radius: 50%;
    background-clip: padding-box;
    font-size: 1.3em;
    transition: background-color 0.5s;
}

#scrollToTopBtn:hover {
    background-color: rgba(0, 0, 0, 0.15);
}

.affiliateContainer {
    display: block;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
}

.affiliateImages {
    vertical-align: middle;
    padding: 7px;
    max-width: 100%;
}

.inlineImage {
    display: block;
    width: 350px;
    height: auto;
    max-width: 75%;
    max-height: auto;
    margin-top: 1em;
    margin-bottom: 1em;
    margin-left: auto;
    margin-right: auto;
    box-shadow: 0 0 10px 0px rgba(0, 0, 0, 0.1);
    border-radius: 8px;
}

.homePromoDiv {
    border: 0;
    box-sizing: border-box;
    margin-top: 2em;
    margin-bottom: 2em;
    margin-left: auto;
    margin-right: auto;
    padding: 0;
    background: rgb(249,157,29);
    background: linear-gradient(148deg, rgba(249,157,29,1) 4%, rgba(203,60,109,1) 37%, rgba(120,42,143,1) 71%, rgba(203,60,109,1) 92%, rgba(249,157,29,1) 100%);
}

.whiteBorder {
    display: inline-block;
    box-sizing: border-box;
    width: calc(100% - 2em);
    height: calc(100% - 2em);
    border: 1px solid #fff;
    margin: 1em;
    padding: 0.5em;
}

.subPromo {
    
}

.promoButton {
    display: inline-block;
    position: relative;
    width: 250px;
    padding: 0.35em;
    max-width: 90%;
    margin-top: 1.5em;
    margin-bottom: 0.5em;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
    border-radius: 4px;
    color: #ffffff;
    clear: both;
}

.black {
    background-color: #2d2d2d;
}

.green {
    background-color: #00983e;
}


.form {
    padding: 20px;
    margin-bottom: 1em;
    border-radius: 5px;
    background-color: #f2f2f2;
    box-sizing: border-box;
}

form .ctaButton {
    margin-top: 0;
    margin-bottom: 0;
    padding-left: 1em;
    padding-right: 1em;
}


 /* Style inputs with type="text", select elements and textareas */
input[type=text], select, textarea {
  width: 100%; /* Full width */
  padding: 12px; /* Some padding */ 
  border: 1px solid #ccc; /* Gray border */
  border-radius: 4px; /* Rounded borders */
  box-sizing: border-box; /* Make sure that padding and width stays in place */
  margin-top: 6px; /* Add a top margin */
  margin-bottom: 16px; /* Bottom margin */
  resize: vertical; /* Allow the user to vertically resize the textarea (not horizontally) */
}

input, textarea, button {
    font-family: inherit;
    font-size: inherit;
}






/* hamburger menu below */



nav {
    position: absolute;
    top: 0;
    left: 0;
}

#menuToggle
{
  display: block;
  position: relative;
  top: 13px;
  left: 11px;
  padding: 7px;
  
  z-index: 100;
  
  -webkit-user-select: none;
  user-select: none;
}

#menuToggle input
{
  display: block;
  width: 40px;
  height: 32px;
  position: absolute;
  top: -7px;
  left: -5px;
  
  cursor: pointer;
  
  opacity: 0; /* hide this */
  z-index: 2; /* and place it over the hamburger */
  
  -webkit-touch-callout: none;
}

/*
 * Just a quick hamburger
 */
#menuToggle span
{
  display: block;
  width: 20px;
  height: 2px;
  margin-bottom: 5px;
  position: relative;
  
  background: #2d2d2d;
  
  z-index: 1;
  
  /* transform-origin: 4px 0px; */
  
  transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0),
              background 0.5s cubic-bezier(0.77,0.2,0.05,1.0),
              opacity 0.55s ease;
}

#menuToggle span:first-child
{
    /* transform-origin: 0% 0%; */
}

#menuToggle span:nth-last-child(2)
{
    /* transform-origin: 0% 100%; */
}

/* 
 * Transform all the slices of hamburger
 * into a crossmark.
 */
#menuToggle input:checked ~ span
{
  opacity: 1;
  transform: rotate(45deg) translate(5px, 5px);
  background: #2d2d2d;
}

/*
 * But let's hide the middle one.
 */
#menuToggle input:checked ~ span:nth-last-child(3)
{
  opacity: 0;
  transform: rotate(0deg) scale(0.2, 0.2);
}

/*
 * Ohyeah and the last one should go the other direction
 */
#menuToggle input:checked ~ span:nth-last-child(2)
{
  transform: rotate(-45deg) translate(5px, -5px);
}

/*
 * Make this absolute positioned
 * at the top left of the screen
 */
#menu
{
  position: absolute;
  width: calc(100vw - 18px);
  margin: 0 0 0 -50px;
  padding: 10px 0 10px 50px;
  top: 40px;
    min-height: 100vw;
  
  background: #f2f2f2;
  list-style-type: none;
  -webkit-font-smoothing: antialiased;
  /* to stop flickering of text in safari */
  
  transform-origin: 0% 0%;
  transform: translate(-100%, 0);
  
  transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0);
}

#menu li
{
  padding: 10px 0;
}

/*
 * And let's slide it in from the left
 */
#menuToggle input:checked ~ ul
{
  transform: none;
}

#menu li {
    text-transform: uppercase;
}

#menu li a {
    color: #2d2d2d;
    font-size: 20px;
    font-weight: 700;
}


/* ========================================================= */
/* START: Desktop-Fixed Logo + Mobile-Responsive + Snap     */
/* ========================================================= */
/* Header container */
.header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    padding: clamp(10px, 3vh, 20px) clamp(10px, 4vw, 20px);
    overflow: visible;
    border-bottom: 1px solid #e8e8e8;
    box-sizing: border-box;
    min-height: auto;
    height: auto;
}

/* Logo container */
.logoContainer {
    flex-shrink: 0;
    margin-bottom: 0;
}

/* Logo image */
#siteLogo, .header-logo-image {
    display: block;
    width: 220px !important;
    height: auto !important;
    transform: scale(1.25) !important; /* Makes logo 25% larger in all directions */
    transform-origin: bottom !important; /* Grows upward from bottom edge */
    margin-left: auto;
    margin-right: auto;
}

/* Make logo even bigger on larger screens */
@media (min-width: 768px) {
    #siteLogo, .header-logo-image {
        width: 250px !important;
        transform: scale(1.40) !important;
        transform-origin: bottom !important;
    }
}

/* Header text container */
.headerText {
    display: flex;
    align-items: center;
    gap: clamp(8px, 2vw, 15px);
    flex-wrap: wrap;
    justify-content: flex-end;
    flex-grow: 1;
}

/* Large tablets and small laptops - start reducing gaps */
@media (max-width: 900px) {
    #siteLogo, .header-logo-image {
        width: clamp(162px, 15vw, 225px);
    }
    .header {
        min-height: auto;
        height: auto;
    }
    .headerText {
        gap: clamp(6px, 1.8vw, 12px);
    }
}

/* Medium tablets - tighter spacing */
@media (max-width: 768px) {
    .headerText {
        gap: clamp(5px, 1.5vw, 10px);
        flex-wrap: wrap;
    }
}

/* Small tablets - prepare for stacking */
@media (max-width: 700px) {
    #siteLogo, .header-logo-image {
        width: clamp(150px, 18.75vw, 200px);
    }
    .header {
        justify-content: center;
        gap: clamp(8px, 2vw, 15px);
    }
    .logoContainer {
        margin-bottom: 0;
    }
    .headerText {
        justify-content: center;
        gap: clamp(6px, 1.8vw, 12px);
    }
}

/* Large phones and small tablets - begin stacking */
@media (max-width: 650px) {
    .header {
        flex-direction: column;
        align-items: center;
        text-align: center;
        gap: clamp(8px, 2vh, 15px);
    }
    .logoContainer {
        width: 100%;
    }
    .headerText {
        width: 100%;
        justify-content: center;
        flex-wrap: wrap;
        gap: clamp(8px, 2vw, 15px);
    }
    .headerText a {
        flex: 0 1 auto;
        min-width: max-content;
    }
}

/* Medium phones - more compact horizontal nav */
@media (max-width: 550px) {
    #siteLogo, .header-logo-image {
        width: clamp(125px, 25vw, 175px);
    }
    .headerText {
        gap: clamp(6px, 1.5vw, 10px);
    }
    .headerText div {
        padding: 4px 6px;
        font-size: clamp(14px, 3.5vw, 16px);
    }
}

/* Small phones - full vertical stacking */
@media (max-width: 480px) {
    .headerText {
        flex-direction: column;
        align-items: center;
        gap: 8px;
    }
    .headerText a {
        display: block;
        width: 100%;
        text-align: center;
    }
    .headerText div {
        display: inline-block;
        padding: 6px 0;
        font-size: 14px;
    }
}

/* Extra small phones - most compact */
@media (max-width: 400px) {
    #siteLogo, .header-logo-image {
        width: clamp(80px, 30vw, 140px);
    }
}

@media (max-width: 380px) {
    .header {
        gap: clamp(6px, 1.5vh, 10px);
    }
    .headerText {
        gap: 6px;
    }
}



