:root { --main-bg: #fff; --light: #f5f5f5; --light-comp: #4d4d4d; --dark: #333; --dark-comp: #fff; --primary: #233694; --primary-comp: #fff; --secondary: #da0019; --secondary-comp: #fff; }
/* GENERAL */
* { box-sizing: border-box; scroll-behavior: smooth; outline-offset: 4px }
body { font-family: "Montserrat", Arial, Helvetica, sans-serif; font-size: 18px; line-height: 1.6; text-align: center; min-width: 320px; }
body, header a, footer a, .choose a { color: var(--light-comp, #4d4d4d); }
body, header ul, .hero p { padding: 0; margin: 0; }
h1, h2, h3, h4, h5, h6, p, th, td, dd, dt, li, blockquote { text-align: left; }
h1, h2 { color: var(--primary, #233694); line-height: 1.4; }
img, iframe, video { max-width: 100%; height: auto; display: block; margin: 0 auto; border: none }
iframe { display: block; aspect-ratio: auto 16 / 9; width: 100%; margin: 1em auto; }
a img, iframe { border: none; }
a, .choose h3 { transition: ease-in-out .3s; }
header a, header a:hover, form input[type=submit]:hover, .btn, .btn:hover, .choose a:hover, footer a, footer a:hover, .choose a, .choose a:hover { text-decoration: none; }
a, header a:hover, .choose a:hover h3, footer a:hover { color: var(--secondary, #da0019); }
a:hover { text-decoration-color: var(--primary) }
hr { border-width: 1px; border-color: #eee; border-style: none none solid; margin: 40px 0; }
.imgLeft, .imgRight { max-width: 45%; }
.imgLeft { float: left; margin: 10px 4% 2% 0; }
.imgRight { float: right; margin: 10px 0 2% 4%; }
.clear { clear: both; }
.nowrap, a[href^=tel] { white-space: nowrap; }
sup { line-height: 0; }
.hide { display: none !important; }
.center, .hero p, .choose h2, .choose p, .reviews h2, .cta h2, .cta p { text-align: center; }
.wrap { display: block; max-width: 1100px; margin: 0 auto; position: relative; }
.bg-dark, .bg-primary { color: var(--dark-comp, #fff); }
.bg-dark { background-color: var(--dark, #333); }
.bg-primary { background-color: var(--primary, #233694); }
.bg-light { background-color: var(--light, #f5f5f5); color: var(--dark, #333); }
.mid { align-items: center; align-self: center; }
.grid { display: grid; grid-gap: 10px 40px; }
.grid.half { grid-template-columns: repeat(2,1fr); }
.grid.third { grid-template-columns: repeat(3,1fr); }
.grid.fourth { grid-template-columns: repeat(4,1fr); }
.bgimg { position: relative }
.bgimg > img:first-of-type { position: absolute; width: 100%; height: 100%; inset: 0; object-fit: cover; z-index: 0 }

/* HEADER & NAVIGATION */
header, .hero { position: relative; }
header > .wrap { padding: 10px 2px; }
header .grid { grid-template-columns: 600px 1fr; }
header img { max-width: 600px; width: 100% }
header .grid li { text-align: right; }
header .grid li:first-of-type { font-size: 24px; margin-bottom: 10px; }
nav { line-height: 1.7; border-color: var(--primary); border-style: solid none; border-width: 1px }
nav ul { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; grid-gap: 0 }
nav a { display: block; margin: 5px; padding: 5px; text-align: center }
nav a, .hero h1, .hero p { color: var(--dark-comp, #fff); }
nav a:hover { color: var(--dark-comp); text-decoration-line: underline; text-decoration-thickness: 2px; text-decoration-color: var(--secondary); text-underline-offset: 4px }
main a { text-underline-offset: 4px }
/* HERO */
.hero { background-size: cover; background-position: center; background-color: var(--dark, #333); position: relative; }
.hero { width: 100%; height: clamp(250px, 50vw, 500px); background-position-y: 30%; }
.hero > .wrap { top: 50%; transform: translateY(-50%); z-index: 2; position: relative }
.hero p { font-size: 36px; padding: 0 10px; text-shadow: 2px 2px 3px rgba(0,0,0,.3); }
.hero video { position: absolute; inset: 0; object-fit: cover; width: 100%; height: 100%; z-index: 0 }
.hero h1 { padding: 0 10px; font-size: clamp(40px, 8vw, 80px); text-align: center; color: #fff; line-height: 1.25; margin: 0; text-shadow: 0 0 3px #000 }
/* HOME */
.home > div { padding: 40px 10px 50px; }
.choose .grid h3, .choose .grid p { padding: 0 clamp(10px, 4vw, 40px); }
.choose .grid, .reviews .grid { grid-gap: 20px; margin: 40px 0; }
.choose .grid > a { background-color: var(--dark-comp, #fff); }
.choose .grid p { text-align: left; }
.reviews .grid > div, .featured { background-color: var(--bg-light, #f5f5f5); padding: 20px 0 50px; position: relative }
.reviews .grid div div, .featured div { position: absolute; bottom: 20px; width: 100% }
.reviews .grid div div p, .featured div p { margin: 0 }
.reviews .grid > div > p, .reviews .grid > div > div, .services .grid h2, .services .grid p, .featured p, .featured div { padding: 0 clamp(10px, 4vw, 40px) }
.reviews svg { float: right; }
.reviews .grid div div p, .reviews svg { vertical-align: middle; line-height: 1 }
.home .cta { padding: 100px 10px; }
/* FORMS */
form { text-align: left; margin: 40px 0; }
form .grid { grid-gap: 0 10px; }
form :is(label, input, select, textarea) { display: block; width: 100% }
form :is(input, select, textarea) { padding: 10px; margin-bottom: 10px; border: 1px solid #ddd; font-size: 16px }
form :is(input, select, textarea), .btn { font-family: "Montserrat", Arial, Helvetica, sans-serif; }
form textarea { height: 150px }
form input[type=submit] { min-width: 250px; margin: 0; }
form input[type=submit], .btn { width: auto; display: inline-block; text-align: center; text-transform: uppercase; line-height: 1.7; background-color: var(--secondary, #da0019); color: var(--primary-comp, #fff); padding: 10px 40px; margin: 10px 0; border: none; transition: ease-in-out .3s; }
form input[type=submit]:hover, .btn:hover { cursor: pointer; background-color: #c10016; color: var(--primary-comp, #fff); }
.btn { min-width: 150px; font-size: 18px; }

/* FOOTER */
footer .wrap { padding: 20px 10px; }
footer .grid.third { padding: 30px 0; }
footer .subfoot { border-top: 10px solid var(--primary, #233694); }
footer .subfoot .grid { grid-template-columns: 1fr 150px; }
.ccpaNotice { text-align: center !important; }
/* MAIN & EVERYTHING ELSE */
main { border-top: 20px solid var(--primary, #448ccb); padding: 40px 10px 50px; }
main h1, main h2, .choose h3 { font-size: 30px; }
main h3, .about li strong { font-size: 24px; }
main h4, .about li { font-size: 20px; }
main ul, main ol { padding-left: 25px; }
main li, footer li { margin: 5px 0; }
.nolist, header ul, footer ul, .contact ul { list-style: none; padding-left: 0; }
.about li { line-height: 1.4; margin: 0; }
.about li strong { color: #c10016; letter-spacing: 1px; }
.team .grid { grid-template-columns: 300px 1fr }
.team .grid:nth-of-type(odd) { grid-template-columns: 1fr 300px }
.team .grid:nth-of-type(odd) img { order: 2 }
.team h1, .team h2 { text-align: center; }
.team img { object-fit: cover; width: 300px; height: auto; margin-top: 20px; }
.team svg, .team a { display: inline-block; vertical-align: middle; }
.team svg { margin-right: 10px; }
.services .gridbox { border: 1px solid #eee; margin: 50px 0 }
.services .grid { grid-gap: 0; }
.services .grid img { object-fit: cover; width: 100%; height: 100%; }
.services .grid:nth-of-type(even) > img { order: 2; }
.projects img, .gallery img { object-fit: cover; width: 100%; }
.projects img { display: block; height: 300px; }
.projects .bottom { object-position: bottom; }
.gallery { display: grid; grid-template-columns: repeat( auto-fit, minmax(210px, 1fr) ); grid-gap: 10px }
.gallery a { display: block; vertical-align: top; height: 200px; }
.gallery img { height: 100%; }
.contact .grid { grid-gap: 0 10px }
.contact .grid ul { padding: 10px 0 10px 50px; position: relative; margin-top: 0 }
.contact .grid svg { position: absolute; top: 15px; left: 0; }

@media(prefers-reduced-motion) {
    * { transition: all 0s !important; scroll-behavior: unset; animation: none }
}

@media(max-width:999px) {
    header .grid { grid-template-columns: 1fr }
    header .grid li { text-align: center }

}

@media(max-width:767px) {
    nav ul { grid-template-columns: 1fr 1fr 1fr; }
    main .grid.third { grid-template-columns: 1fr 1fr }
    main .grid.third > div:last-of-type:nth-of-type(odd) { grid-column: 1/-1 }
    .services .grid, .team .grid, .team .grid:nth-of-type(odd) { grid-template-columns: 1fr }
    .services .grid:nth-of-type(even) > img, .team .grid:nth-of-type(odd) img { order: unset; }
    .services .grid img { height: max(50vw, 250px) }
    .team h3 { text-align: center }
}

@media(max-width:600px) {
    .grid.half, .grid.third, footer .subfoot .grid { grid-template-columns: 1fr }
    .subfoot p, footer :is(li, h3), p:has(.btn) { text-align: center }
}

@media(max-width:500px) {
    main .grid.third { grid-template-columns: 1fr }
    .subfoot p, footer :is(li, h3), p:has(.btn) { text-align: center }
}

@media(max-width:400px) {
    nav ul { grid-template-columns: 1fr 1fr }
    form input[type=submit] { display: block; width: 100% }
}
