﻿/* Base font */
body {
	font-family: 'Source Sans Pro', sans-serif;
	font-weight: 300;
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
	font-weight: 700;
}

/* Kaushan Script font utility */
.font-kaushan {
	font-family: 'Kaushan Script', cursive !important;
}

/* Honeypot spam field */
.emailaddresspot {
	display: none !important;
	visibility: hidden !important;
}

/* Contact form client-side error highlighting */
.has-error,
.has-error .form-control {
	border-color: #ff2400;
	border: 2px solid #ff2400;
	color: #ff2400 !important;
}

/* GLOBAL theme color variables */
:root,
[data-bs-theme="light"],
[data-bs-theme="dark"] {
	--bs-primary: #1D809F;
	--bs-primary-rgb: 29, 128, 159;
	--bs-secondary: #ecb807;
	--bs-secondary-rgb: 236, 184, 7;
	--bs-purple-rgb: 128, 0, 128;
}

/* XL button utility */
.btn-xl {
	padding: 1.25rem 1.5rem;
	font-size: 0.95rem;
	border-radius: 0.5rem;
	margin: 0.2rem;
}

/* PRIMARY buttons */
.btn.btn-primary {
	--bs-btn-color: #fff;
	--bs-btn-bg: var(--bs-primary);
	--bs-btn-border-color: var(--bs-primary);
	--bs-btn-hover-color: #fff;
	--bs-btn-hover-bg: color-mix(in srgb, var(--bs-primary) 85%, black);
	--bs-btn-hover-border-color: color-mix(in srgb, var(--bs-primary) 85%, black);
	--bs-btn-active-color: #fff;
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-primary) 75%, black);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-primary) 75%, black);
	--bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
	background-color: var(--bs-btn-bg);
	border-color: var(--bs-btn-border-color);
	color: var(--bs-btn-color);
}

/* SECONDARY buttons */
.btn.btn-secondary {
	--bs-btn-color: #000;
	--bs-btn-bg: var(--bs-secondary);
	--bs-btn-border-color: var(--bs-secondary);
	--bs-btn-hover-color: #000;
	--bs-btn-hover-bg: color-mix(in srgb, var(--bs-secondary) 85%, black);
	--bs-btn-hover-border-color: color-mix(in srgb, var(--bs-secondary) 85%, black);
	--bs-btn-active-color: #000;
	--bs-btn-active-bg: color-mix(in srgb, var(--bs-secondary) 75%, black);
	--bs-btn-active-border-color: color-mix(in srgb, var(--bs-secondary) 75%, black);
	--bs-btn-focus-shadow-rgb: var(--bs-secondary-rgb);
	background-color: var(--bs-btn-bg);
	border-color: var(--bs-btn-border-color);
	color: var(--bs-btn-color);
}

/* Contact section */
section#contact {
	/* choose one of these and keep it consistent */
	background: url("../images/2CubIH6NMEo_copy.jpg");
	background-position: center center;
	background-repeat: no-repeat;
	background-size: cover;
}

#contactForm .form-group {
	margin-bottom: 1.5rem;
}

	#contactForm .form-group input,
	section#contact form#contactForm .form-group textarea {
		padding: 1.25rem;
	}

		#contactForm .form-group input.form-control {
			height: auto;
		}

#contactForm .form-group-textarea {
	height: 100%;
}

	#contactForm .form-group-textarea textarea {
		height: 100%;
		min-height: 10rem;
	}

/* Text utility: real purple */
.text-purple {
	--bs-text-opacity: 1;
	color: rgba(var(--bs-purple-rgb), var(--bs-text-opacity));
}

/* Validation (Bootstrap 5 patterns) */
.is-invalid { /* add only needed tweaks */
}

.invalid-feedback {
	font-weight: 600;
	color: orangered;
}

/* Legacy hook if required */
.form-hint-error {
	width: 100%;
	margin-top: 0.25rem;
	font-size: 0.875em;
	font-weight: 700;
	color: orangered;
}

/* List group: borderless items */
.list-group-item {
	background-color: inherit;
	border: 0;
}

/* Rounded utility */
.rounded-square {
	border-radius: 25%;
}

/* Env flag */
.envflag {
	position: fixed;
	bottom: 8px;
	left: 8px;
	padding: 4px 8px;
	border: 1px solid #ccc;
	background: #ffffe0;
	font: 12px/1.2 monospace;
	z-index: 2147483647;
}

/* Sections — responsive padding */
.content-section {
	padding-top: 3rem;
	padding-bottom: 3rem;
}

/* Back to top */
.scroll-to-top {
	line-height: 50px;
	z-index: 999;
	text-decoration: none;
}

	.scroll-to-top:focus,
	.scroll-to-top:hover {
		text-decoration: none;
	}

/* Menu toggle link */
.menu-toggle {
	text-decoration: none;
}

	.menu-toggle:focus,
	.menu-toggle:hover {
		text-decoration: none;
	}

/* Masthead background */
.masthead {
	background: linear-gradient(90deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.1) 100%), url("../images/2CubIH6NMEo_copy.jpg");
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
}

	/* Masthead headings */
	.masthead h1,
	.masthead .h1 {
		font-size: 3rem;
	}

.callout {
	padding: 6rem 0;
	background: url("../images/sOknkfWqzvM.jfif");
	background-position: center center;
	background-repeat: no-repeat;
	background-size: cover;
}

@media (min-width: 768px) {
	.callout {
		padding: 15rem 0;
	}
}

	.callout h2, .callout .h2 {
		font-size: 3.5rem;
		font-weight: 700;
		display: block;
		max-width: 30rem;
	}

@media (min-width: 992px) {
	.masthead h1,
	.masthead .h1 {
		font-size: 3.5rem;
	}
}

/* Portfolio items */
@media (min-width: 1px) {
	.portfolio-item .caption {
		padding: 10px 0;
	}

	a.portfolio-item {
		text-decoration: none;
	}

	.portfolio-item img {
		opacity: 1;
	}

	.portfolio-item .caption .caption-content {
		/* rgba, not rgb */
		color: rgba(250, 250, 250, 0.94);
		margin: 1rem;
	}

		.portfolio-item .caption .caption-content p {
			font-weight: 300;
		}
}

@media (min-width: 576px) {
	.masthead {
		height: 100vh;
	}

		.masthead h1,
		.masthead .h1 {
			font-size: 3.5rem;
		}

	.portfolio-item .caption {
		position: absolute;
	}

	.portfolio-item img {
		opacity: 0.5;
	}

	.portfolio-item .caption .caption-content {
		color: rgba(250, 250, 250, 0.94);
	}
}

@media (min-width: 992px) {
	.portfolio-item .caption {
		background-color: rgba(33, 37, 50, 0.54);
		position: absolute;
	}

		.portfolio-item .caption .caption-content {
			color: #fff;
			margin: 1rem;
		}

	.portfolio-item:hover .caption {
		background-color: rgba(29, 128, 159, 0.9);
	}
}

/* Service icon */
.service-icon {
	background-color: #fff;
	color: #1D809F;
	height: 7rem;
	width: 7rem;
	display: block;
	line-height: 7.25rem;
	font-size: 4rem;
	box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.1);
}

.service-icon-sm {
	background-color: #fff;
	color: #1D809F;
	height: 3rem;
	width: 3rem;
	display: block;
	line-height: 3.35rem;
	font-size: 1.5rem;
	box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.1);
}

/* Extra spacing */
.xpadding {
	padding-bottom: 30px;
}

/* Tel/SMS links */
a[href^="tel" i]:hover,
a[href^="tel" i]:focus-visible,
a[href^="sms" i]:hover,
a[href^="sms" i]:focus-visible {
	text-decoration: underline;
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

a[href^="tel" i],
a[href^="sms" i] {
	border: 1px solid #535353;
	border-radius: 5px;
	color: #535353;
	display: inline-block;
	font-style: normal;
	margin-top: 10px;
	padding: 3px 5px;
	text-decoration: none;
	font-weight: bold;
}
