/**
 * Layout Styles - Grid, Containers, Header, Footer
 * Coach Dave Academy Theme
 *
 * This file contains the CSS grid system, containers, and structural layouts.
 * Requires variables.css and base.css to be loaded first.
 *
 * @package CoachDaveAcademy
 * @version 1.1.0
 */

/* ==========================================================================
   Clearfix (Legacy Support)
   ========================================================================== */

.clearfix::before,
.clearfix::after {
	content: " ";
	display: table;
}

.clearfix::after {
	clear: both;
}

.row::before,
.row::after {
	content: " ";
	display: table;
}

.row::after {
	clear: both;
}

/* ==========================================================================
   Site Wrappers
   ========================================================================== */

#wrapper-site,
.wrapper-site {
	width: 100%;
	position: relative;
	left: 0;
	top: 0;
	transition: left var(--transition-slow), opacity var(--transition-default), top var(--transition-slow), width var(--transition-slow);
	z-index: var(--z-base);
	opacity: 1;
}

.wrapper-content {
	position: relative;
}

/* ==========================================================================
   Containers
   ========================================================================== */

.container {
	max-width: var(--container-xl);
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--space-5);
	padding-right: var(--space-5);
}

.container-fluid {
	width: 100%;
	padding-left: var(--space-5);
	padding-right: var(--space-5);
}

.container-full-width {
	max-width: none;
	padding-left: 0;
	padding-right: 0;
}

.wrapper-site.container {
	max-width: 1140px;
}

/* Elementor container overrides */
.elementor .container,
.elementor.container {
	max-width: none;
	padding: unset;
}

/* ==========================================================================
   Flexbox Grid System
   ========================================================================== */

.grid {
	display: flex;
	flex-flow: row wrap;
	position: relative;
}

.container .grid {
	margin-left: calc(var(--gutter-sm) * -1);
	margin-right: calc(var(--gutter-sm) * -1);
}

/* Elementor grid override */
body[class*='elementor'] .container .grid {
	margin-left: 0;
	margin-right: 0;
}

/* ==========================================================================
   Columns
   ========================================================================== */

.column {
	margin-left: var(--gutter-sm);
	margin-right: var(--gutter-sm);
	margin-bottom: var(--space-5);
	position: relative;
	max-width: calc(100% - var(--space-5));
}

.column-flush {
	margin: 0;
	position: relative;
	max-width: 100%;
}

/* Fallback for older browsers */
.row .column {
	float: left;
}

/* ==========================================================================
   12-Column Grid Spans
   ========================================================================== */

.span-1 {
	min-width: calc(((100% / 12) * 1) - var(--space-5));
	width: calc(((100% / 12) * 1) - var(--space-5));
}

.span-2 {
	min-width: calc(((100% / 12) * 2) - var(--space-5));
	width: calc(((100% / 12) * 2) - var(--space-5));
}

.span-3 {
	min-width: calc(((100% / 12) * 3) - var(--space-5));
	width: calc(((100% / 12) * 3) - var(--space-5));
}

.span-4 {
	min-width: calc(((100% / 12) * 4) - var(--space-5));
	width: calc(((100% / 12) * 4) - var(--space-5));
}

.span-5 {
	min-width: calc(((100% / 12) * 5) - var(--space-5));
	width: calc(((100% / 12) * 5) - var(--space-5));
}

.span-6 {
	min-width: calc(((100% / 12) * 6) - var(--space-5));
	width: calc(((100% / 12) * 6) - var(--space-5));
}

.span-7 {
	min-width: calc(((100% / 12) * 7) - var(--space-5));
	width: calc(((100% / 12) * 7) - var(--space-5));
}

.span-8 {
	min-width: calc(((100% / 12) * 8) - var(--space-5));
	width: calc(((100% / 12) * 8) - var(--space-5));
}

.span-9 {
	min-width: calc(((100% / 12) * 9) - var(--space-5));
	width: calc(((100% / 12) * 9) - var(--space-5));
}

.span-10 {
	min-width: calc(((100% / 12) * 10) - var(--space-5));
	width: calc(((100% / 12) * 10) - var(--space-5));
}

.span-11 {
	min-width: calc(((100% / 12) * 11) - var(--space-5));
	width: calc(((100% / 12) * 11) - var(--space-5));
}

.span-12 {
	min-width: calc(100% - var(--space-5));
	width: calc(100% - var(--space-5));
}

/* Flush column spans */
.column-flush.span-1 { width: calc((100% / 12) * 1); min-width: calc((100% / 12) * 1); }
.column-flush.span-2 { width: calc((100% / 12) * 2); min-width: calc((100% / 12) * 2); }
.column-flush.span-3 { width: calc((100% / 12) * 3); min-width: calc((100% / 12) * 3); }
.column-flush.span-4 { width: calc((100% / 12) * 4); min-width: calc((100% / 12) * 4); }
.column-flush.span-5 { width: calc((100% / 12) * 5); min-width: calc((100% / 12) * 5); }
.column-flush.span-6 { width: calc((100% / 12) * 6); min-width: calc((100% / 12) * 6); }
.column-flush.span-7 { width: calc((100% / 12) * 7); min-width: calc((100% / 12) * 7); }
.column-flush.span-8 { width: calc((100% / 12) * 8); min-width: calc((100% / 12) * 8); }
.column-flush.span-9 { width: calc((100% / 12) * 9); min-width: calc((100% / 12) * 9); }
.column-flush.span-10 { width: calc((100% / 12) * 10); min-width: calc((100% / 12) * 10); }
.column-flush.span-11 { width: calc((100% / 12) * 11); min-width: calc((100% / 12) * 11); }
.column-flush.span-12 { width: 100%; min-width: 100%; }

/* Centered columns */
.middled,
.row .column.middled {
	float: none;
	margin-left: auto;
	margin-right: auto;
}

.no-gutter {
	margin-right: 0 !important;
}

/* ==========================================================================
   Content Padding Classes
   ========================================================================== */

.content {
	padding: var(--space-5);
}

.content-small {
	padding: var(--space-2-5);
}

.content-large {
	padding: 3%;
}

.content-extra-large {
	padding: 4%;
}

.content-massive {
	padding: 6%;
}

.layers-content-main {
	padding: 6% var(--space-5);
}

div[class*='elementor'] .layers-content-main {
	padding: 0 var(--space-5);
}

/* Vertical padding */
.content-vertical {
	padding-top: 2%;
	padding-bottom: 2%;
}

.content-vertical-large {
	padding-top: 3%;
	padding-bottom: 3%;
}

.content-vertical-extra-large {
	padding-top: 4%;
	padding-bottom: 4%;
}

.content-vertical-massive {
	padding-top: 6%;
	padding-bottom: 6%;
}

/* ==========================================================================
   Well (Content Box)
   ========================================================================== */

.well {
	background-color: var(--color-bg-light);
	border: 1px solid var(--color-border-light);
	border-radius: var(--radius-default);
}

.well-dark {
	background-color: var(--color-bg-dark);
	border-color: transparent;
	color: var(--color-white);
}

/* ==========================================================================
   Header
   ========================================================================== */

.header-site {
	background-color: var(--header-bg);
	position: relative;
	z-index: var(--z-sticky);
	border-bottom: var(--header-border);
}

.header-site .container {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: space-between;
	padding-top: var(--space-2-5);
	padding-bottom: var(--space-2-5);
	min-height: var(--header-height);
}

/* Sticky header */
.header-sticky {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: var(--z-sticky);
	transition: transform var(--transition-default), box-shadow var(--transition-default);
}

.header-sticky.is-scrolled {
	box-shadow: var(--shadow-md);
}

.header-sticky.is-hidden {
	transform: translateY(-100%);
}

/* Header layouts */
.header-inline .inline-site-logo {
	display: flex;
	align-items: center;
}

.header-inline .inline-site-logo img {
	max-height: 50px;
	width: auto;
}

/* Site title in header */
.site-title {
	font-size: var(--text-xl);
	font-weight: var(--font-bold);
	margin: 0;
	line-height: 1;
}

.site-title a {
	color: inherit;
}

.site-title a:hover {
	color: var(--color-primary);
}

.site-description {
	font-size: var(--text-sm);
	color: var(--color-text-muted);
	margin: 0;
}

/* ==========================================================================
   Navigation
   ========================================================================== */

.nav-horizontal ul {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-1);
}

.nav-horizontal ul li {
	position: relative;
}

.nav-horizontal ul li a {
	display: block;
	padding: var(--space-2) var(--space-3);
	font-size: var(--text-sm);
	font-weight: var(--font-medium);
	color: var(--color-text);
	transition: var(--transition-colors);
}

.nav-horizontal ul li a:hover,
.nav-horizontal ul li.current-menu-item > a {
	color: var(--color-primary);
}

/* Dropdown menus */
.nav-horizontal ul ul {
	display: none;
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 200px;
	background-color: var(--color-white);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-default);
	box-shadow: var(--shadow-lg);
	z-index: var(--z-dropdown);
	flex-direction: column;
	gap: 0;
}

.nav-horizontal ul li:hover > ul {
	display: flex;
}

.nav-horizontal ul ul li a {
	padding: var(--space-2-5) var(--space-4);
	border-bottom: 1px solid var(--color-border-light);
}

.nav-horizontal ul ul li:last-child a {
	border-bottom: none;
}

/* ==========================================================================
   Mobile Navigation Toggle
   ========================================================================== */

.responsive-nav {
	display: none;
	cursor: pointer;
	padding: var(--space-2-5);
	background: none;
	border: none;
}

.responsive-nav span {
	display: block;
	width: 25px;
	height: 3px;
	background-color: var(--color-text);
	margin: 5px 0;
	transition: var(--transition-default);
	border-radius: var(--radius-full);
}

.responsive-nav.active span:nth-child(1) {
	transform: rotate(45deg) translate(5px, 6px);
}

.responsive-nav.active span:nth-child(2) {
	opacity: 0;
}

.responsive-nav.active span:nth-child(3) {
	transform: rotate(-45deg) translate(5px, -6px);
}

/* ==========================================================================
   Off-Canvas Sidebar (Mobile Menu)
   ========================================================================== */

.off-canvas-left,
.off-canvas-right {
	background-color: var(--color-bg-dark);
	padding: var(--space-8) var(--space-5);
	position: fixed;
	top: 0;
	bottom: 0;
	width: 300px;
	max-width: 85vw;
	z-index: var(--z-modal);
	opacity: 0;
	visibility: hidden;
	transition: transform var(--transition-slow), opacity var(--transition-default), visibility var(--transition-default);
	overflow-y: auto;
}

.off-canvas-left {
	left: 0;
	transform: translateX(-100%);
}

.off-canvas-right {
	right: 0;
	transform: translateX(100%);
}

.off-canvas-left.open,
.off-canvas-right.open {
	opacity: 1;
	visibility: visible;
	transform: translateX(0);
}

/* Off-canvas navigation */
.off-canvas-left ul,
.off-canvas-right ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.off-canvas-left ul li a,
.off-canvas-right ul li a {
	display: block;
	padding: var(--space-3) 0;
	color: var(--color-white);
	font-size: var(--text-md);
	border-bottom: 1px solid var(--overlay-white-light);
	transition: var(--transition-colors);
}

.off-canvas-left ul li a:hover,
.off-canvas-right ul li a:hover {
	color: var(--color-primary);
}

/* Off-canvas overlay */
.off-canvas-overlay {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background-color: var(--overlay-dark);
	z-index: calc(var(--z-modal) - 1);
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--transition-default), visibility var(--transition-default);
}

.off-canvas-overlay.active {
	opacity: 1;
	visibility: visible;
}

/* ==========================================================================
   Footer
   ========================================================================== */

.footer-site {
	background-color: var(--footer-bg);
	color: var(--footer-text);
	padding: var(--space-12) 0 var(--space-6);
}

.footer-site a {
	color: var(--color-gray-400);
}

.footer-site a:hover {
	color: var(--color-white);
}

.footer-site .widget-title,
.footer-site h5 {
	color: var(--color-white);
	font-size: var(--text-md);
	font-weight: var(--font-semibold);
	margin-bottom: var(--space-4);
}

.footer-site .widget {
	margin-bottom: var(--space-8);
}

.footer-copyright {
	border-top: 1px solid var(--overlay-white-light);
	padding-top: var(--space-6);
	margin-top: var(--space-6);
	font-size: var(--text-sm);
	color: var(--color-gray-500);
}

/* ==========================================================================
   Sidebar
   ========================================================================== */

.sidebar-left,
.sidebar-right {
	width: 100%;
}

.sidebar-left .widget,
.sidebar-right .widget {
	margin-bottom: var(--space-6);
	padding: var(--space-5);
	background-color: var(--color-bg-light);
	border-radius: var(--radius-default);
}

.sidebar-left .widget-title,
.sidebar-right .widget-title {
	font-size: var(--text-md);
	font-weight: var(--font-semibold);
	margin-bottom: var(--space-4);
	padding-bottom: var(--space-3);
	border-bottom: 2px solid var(--color-primary);
}

/* ==========================================================================
   Masonry Layout
   ========================================================================== */

.layers-masonry-column .grid {
	flex-direction: column;
}

.container.list-masonry {
	max-width: 1040px;
	padding: 0 var(--space-2-5);
	position: relative;
}

.list-masonry .grid {
	margin-left: var(--space-2-5);
	margin-right: calc(var(--space-2-5) * -1);
}

.list-masonry .column {
	margin-left: 0;
	margin-right: 0;
}

/* Masonry loading state */
.container.list-masonry .grid.loaded > *:not(.masonry-loading) {
	opacity: 1;
	transition: opacity var(--transition-default);
}

.container.list-masonry .masonry-loading {
	width: 48px;
	height: 48px;
	margin: -25px 0 0 -25px;
	position: absolute;
	left: 50%;
	top: 50px;
	background: var(--overlay-dark) url(images/spinner.gif) no-repeat center center;
	border-radius: var(--radius-full);
	overflow: hidden;
	opacity: 0;
}

/* ==========================================================================
   Responsive Layout
   ========================================================================== */

/* Tablet and below */
@media screen and (max-width: 768px) {
	.container {
		padding-left: var(--space-4);
		padding-right: var(--space-4);
	}

	.header-site .container {
		min-height: var(--header-height-mobile);
	}

	.responsive-nav {
		display: block;
	}

	.nav-horizontal {
		display: none;
	}

	/* Stack columns on mobile */
	.span-1, .span-2, .span-3, .span-4, .span-5, .span-6,
	.span-7, .span-8, .span-9, .span-10, .span-11, .span-12 {
		width: calc(100% - var(--space-5));
		min-width: calc(100% - var(--space-5));
	}

	.column-flush.span-1, .column-flush.span-2, .column-flush.span-3,
	.column-flush.span-4, .column-flush.span-5, .column-flush.span-6,
	.column-flush.span-7, .column-flush.span-8, .column-flush.span-9,
	.column-flush.span-10, .column-flush.span-11, .column-flush.span-12 {
		width: 100%;
		min-width: 100%;
	}

	.layers-content-main {
		padding: var(--space-8) var(--space-4);
	}
}

/* Tablet landscape */
@media screen and (min-width: 481px) and (max-width: 768px) {
	/* 2-column layout for medium screens */
	.span-3, .span-4 {
		width: calc(50% - var(--space-5));
		min-width: calc(50% - var(--space-5));
	}

	.column-flush.span-3, .column-flush.span-4 {
		width: 50%;
		min-width: 50%;
	}
}

/* Desktop */
@media screen and (min-width: 769px) {
	.desktop-collapse {
		display: none;
	}
}

/* Large desktop */
@media screen and (min-width: 1024px) {
	.container {
		padding-left: var(--space-5);
		padding-right: var(--space-5);
	}
}
