/*
 * Forge16 Widgets for Elementor
 * Styles for: Homepage Hero, Projects Slider, Split Accordion
 *
 * This file only styles the widget-specific classes (.hp-hero__*,
 * .projects__*, .split-accordion__*). Shared site utilities — .container,
 * .btn, .seo-title, .page-title, .section-title, colors, fonts — are
 * intentionally NOT redefined here; they already live in the Hello
 * Elementor Child theme stylesheet and these widgets are built to sit on
 * top of it. If this plugin is ever activated on a site without that
 * theme, the var(--color-*)/var(--font-*) fallbacks below keep things
 * legible, but won't match your brand until the theme vars are present.
 *
 * Desktop rules below are ported directly from the theme's style.css so
 * behavior matches the live site exactly. The @media blocks are new —
 * the original stylesheet had no responsive rules for these three
 * widgets, so this is the mobile layer requested alongside the rebuild.
 *
 * Breakpoints used throughout:
 *   1024px — tablet
 *    768px — large mobile / where two-column layouts stack
 *    480px — small mobile
 */

/* ==========================================================================
   Homepage Hero
   ========================================================================== */

.hp-hero__container {
	display: flex;
	gap: 80px;
}

.hp-hero__slider {
	width: 100%;
	max-width: 50%;
}

.hp-hero .swiper-wrapper {
	margin-bottom: 100px;
}

.hp-hero__slide-wrap {
	position: relative;
}

.hp-hero__slide-media {
	width: 100%;
	aspect-ratio: 4 / 2.75;
	overflow: hidden;
}

.hp-hero__slide-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
}

@supports not (aspect-ratio: 4 / 2.75) {
	.hp-hero__slide-media {
		position: relative;
		padding-top: calc(100% * 2.75 / 4);
	}
	.hp-hero__slide-media img {
		position: absolute;
		inset: 0;
	}
}

.hp-hero__slide-meta {
	background-color: var(--color-navy, #141d25);
	position: absolute;
	bottom: 0;
	left: 60px;
	width: 100%;
	max-width: 467px;
	padding: 50px;
	border-bottom: 3px solid var(--color-white, #e2d5cd);
	margin-bottom: -100px;
}

.hp-hero__meta-title {
	font-family: var(--font-primary, "Libre Baskerville", Georgia, "Times New Roman", serif);
	font-size: 1rem;
	text-transform: uppercase;
	font-weight: 700;
}

.hp-hero__slide-title {
	color: var(--color-orange, #bd4500);
	font-size: 0.9rem;
	font-weight: 600;
	margin-bottom: 0.35rem;
}

.hp-hero__slide-desc {
	font-size: 0.9rem;
	font-weight: 500;
	margin-bottom: 1rem;
}

/* Not in the original stylesheet — the "View Project" link inside each
   slide's meta card had no styling rule, so this is a minimal addition
   using the same brand colors. Safe to override. */
.hp-hero__proj-link {
	display: inline-block;
	font-size: 0.85rem;
	font-weight: 700;
	text-transform: uppercase;
	color: var(--color-white, #e2d5cd);
	border-bottom: 1px solid currentColor;
}

.hp-hero__proj-link:hover {
	color: var(--color-orange, #bd4500);
}

.hp-hero__arrows {
	background-color: var(--color-white, #e2d5cd);
	position: absolute;
	bottom: 0;
	right: 0;
	display: flex;
	z-index: 1;
	margin-bottom: 100px;
}

.hp-hero__arrows .hp-hero__arrow {
	position: static !important;
	margin: 0 !important;
	padding: 28px 0px;
	width: 50px !important;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	color: var(--color-navy, #141d25);
}

.hp-hero__arrows .hp-hero__arrow:hover {
	background-color: var(--color-orange, #bd4500);
}

.hp-hero__arrows .hp-hero__arrow:after {
	display: none;
}

.hp-hero__arrow.swiper-button-disabled {
	opacity: 0.4;
	cursor: default;
}

/* Not in the original stylesheet — pagination dots weren't part of the
   theme CSS you sent, so this is a minimal addition for when the
   "Pagination Dots" control is switched on. */
.hp-hero__pagination {
	display: flex;
	justify-content: center;
	gap: 8px;
	margin-top: 16px;
}

.hp-hero__pagination .swiper-pagination-bullet {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--color-white, #e2d5cd);
	opacity: 0.5;
}

.hp-hero__pagination .swiper-pagination-bullet-active {
	background: var(--color-orange, #bd4500);
	opacity: 1;
}

.hp-hero__content {
	display: flex;
	align-items: center;
	margin-bottom: 100px;
}

.hp-hero__buttons {
	display: flex;
	gap: 1.5rem;
}

@media (max-width: 1024px) {
	.hp-hero__container {
		gap: 48px;
	}

	.hp-hero__slide-meta {
		left: 32px;
		padding: 32px;
	}
}

@media (max-width: 768px) {
	.hp-hero__container {
		flex-direction: column;
		gap: 0;
	}

	.hp-hero__slider {
		max-width: 100%;
	}

	/* The overlapping meta card + arrows box relies on fixed 100px offsets
	   that only work against a wide desktop image. On mobile we drop the
	   overlap and let the card sit in normal flow under the image. */
	.hp-hero .swiper-wrapper {
		margin-bottom: 0;
	}

	.hp-hero__slide-meta {
		position: static;
		max-width: 100%;
		margin-bottom: 0;
		left: auto;
		padding: 28px;
	}

	.hp-hero__arrows {
		position: static;
		margin-bottom: 0;
		width: 100%;
	}

	.hp-hero__arrows .hp-hero__arrow {
		flex: 1;
	}

	.hp-hero__content {
		margin-bottom: 0;
		padding: 40px 0;
	}
}

@media (max-width: 480px) {
	.hp-hero__slide-meta {
		padding: 22px;
	}

	.hp-hero__buttons {
		flex-direction: column;
		align-items: stretch;
		gap: 1rem;
	}

	.hp-hero__content {
		padding: 32px 0;
	}
}

/* ==========================================================================
   Projects Slider
   ========================================================================== */

.projects__wrapper {
	display: flex;
	gap: 48px;
	align-items: start;
}

.projects__right,
.projects__left {
	max-width: calc(50% - 24px);
}

/* Main image and thumbs */
.projects__main-media {
	position: relative;
	width: 100%;
}

.projects__main-slide img {
	width: 100%;
	display: block;
}

.projects__thumbs {
	display: flex;
	gap: 16px;
	margin-top: 8px;
	flex-wrap: wrap;
}

.projects__thumb-slide {
	width: 80px;
	height: 80px;
	border-radius: 8px;
	overflow: hidden;
	position: relative;
	cursor: pointer;
	flex: none;
}

.projects__thumb-slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.projects__thumb-slide::after {
	content: "";
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.7);
	transition: opacity 0.25s ease;
}

.projects__thumb-slide.swiper-slide-thumb-active::after {
	opacity: 0;
}

.projects__content {
	display: flex;
	flex-direction: column;
}

.projects__content-slide {
	padding: 16px;
}

/* Not individually styled in the original stylesheet — these inherit the
   theme's base text color/font, so only minimal spacing is added here to
   keep the client name, services list, and description legible. */
.projects__client {
	font-size: 0.85rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	margin-bottom: 0.5rem;
}

.projects__services {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0.75rem 0;
}

.projects__service {
	font-size: 0.8rem;
	font-weight: 600;
	padding: 4px 12px;
	border: 1px solid currentColor;
}

.projects__desc {
	margin-bottom: 1.5rem;
}

.projects__button-wrap {
	margin-top: 0.5rem;
}

.projects__nav {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-top: 16px;
}

.projects__arrows {
	display: flex;
	gap: 12px;
}

.projects__arrow {
	background: var(--color-orange, #bd4500);
	color: var(--color-navy, #141d25);
	border: none;
	padding: 8px 12px;
	border-radius: 4px;
	cursor: pointer;
	position: static !important;
}

.projects__arrow.swiper-button-disabled {
	opacity: 0.4;
	cursor: default;
}

.projects__counter {
	font-size: 14px;
	color: var(--color-white, #e2d5cd);
}

@media (max-width: 1024px) {
	.projects__wrapper {
		gap: 32px;
	}
}

@media (max-width: 768px) {
	.projects__wrapper {
		flex-direction: column;
		gap: 32px;
	}

	.projects__right,
	.projects__left {
		max-width: 100%;
	}

	.projects__thumb-slide {
		width: 64px;
		height: 64px;
	}
}

@media (max-width: 480px) {
	.projects__nav {
		flex-direction: column;
		align-items: flex-start;
		gap: 12px;
	}

	.projects__content-slide {
		padding: 16px 0;
	}
}

/* ==========================================================================
   Split Accordion
   ========================================================================== */

.split-accordion__container {
	max-width: 1320px;
}

.split-accordion__wrapper {
	display: flex;
	flex-direction: column;
	gap: 60px;
}

.split-accordion__top {
	text-align: center;
	display: flex;
	flex-direction: column;
	max-width: calc(1320px - 6.11rem);
	align-self: center;
}

/* Not individually styled in the original stylesheet — body copy and
   supporting text inherit the theme's base text styles as-is. */

.split-accordion__list-wrapper {
	display: flex;
	gap: 60px;
}

.split-accordion__left,
.split-accordion__right {
	width: 100%;
	max-width: calc(50% - 30px);
}

.split-accordion__list-items {
	color: var(--color-orange, #bd4500);
	gap: 22px;
	display: flex;
	flex-direction: column;
}

.split-accordion__item-title {
	display: flex;
	width: 100%;
	text-align: left;
	border: none;
	cursor: pointer;
	padding: 16px 34px;
	background: var(--color-white, #e2d5cd);
	border-radius: 0;
	align-items: center;
	gap: 17px;
}

.split-accordion__item-title.is-active {
	opacity: 1;
	font-weight: 600;
	background: var(--color-orange, #bd4500);
	color: var(--color-white, #e2d5cd);
}

.split-accordion__check {
	display: flex;
}

.split-accordion__check-icon--active {
	display: none;
}

.split-accordion__item-title.is-active .split-accordion__check-icon--inactive {
	display: none;
}

.split-accordion__item-title.is-active .split-accordion__check-icon--active {
	display: block;
}

.split-accordion__line {
	flex: 1;
	height: 1px;
	background: currentColor;
}

.split-accordion__number {
	font-weight: 500;
	font-size: 32px;
	font-family: var(--font-primary, "Libre Baskerville", Georgia, "Times New Roman", serif);
}

.split-accordion__title-text {
	margin: 0;
	font-size: 20px;
	font-weight: 600;
	color: var(--color-navy, #141d25);
	text-transform: uppercase;
}

.split-accordion__panels {
	position: relative;
}

.split-accordion__panel {
	opacity: 0;
	transform: translateY(10px);
	pointer-events: none;
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	transition: opacity 0.25s ease, transform 0.25s ease;
}

.split-accordion__panel.is-active {
	opacity: 1;
	transform: translateY(0);
	pointer-events: auto;
	position: relative;
}

/* Not individually styled in the original stylesheet — the panel heading
   is a plain div (not an h-tag), so it doesn't inherit the theme's
   automatic heading color. Minimal fallback added so it doesn't render
   as plain body text. */
.split-accordion__item-heading {
	font-family: var(--font-primary, "Libre Baskerville", Georgia, "Times New Roman", serif);
	font-weight: 700;
	color: var(--color-orange, #bd4500);
	font-size: 1.4rem;
	margin-bottom: 0.75rem;
}

.split-accordion__button {
	align-self: center;
}

@media (max-width: 1024px) {
	.split-accordion__wrapper {
		gap: 40px;
	}

	.split-accordion__list-wrapper {
		gap: 32px;
	}
}

@media (max-width: 768px) {
	.split-accordion__list-wrapper {
		flex-direction: column;
		gap: 24px;
	}

	.split-accordion__left,
	.split-accordion__right {
		max-width: 100%;
	}

	.split-accordion__item-title {
		padding: 14px 22px;
	}

	/* The panel stack (position: absolute, all panels overlapping) only
	   makes sense next to a fixed-width list column. Stacked on mobile,
	   we let the active panel sit in normal flow so it doesn't collapse
	   the section's height to zero. */
	.split-accordion__panel {
		position: static;
		opacity: 1;
		transform: none;
		pointer-events: auto;
		display: none;
	}

	.split-accordion__panel.is-active {
		display: block;
	}
}

@media (max-width: 480px) {
	.split-accordion__item-title {
		padding: 14px 18px;
		gap: 12px;
	}

	.split-accordion__title-text {
		font-size: 16px;
	}

	.split-accordion__number {
		font-size: 24px;
	}
}
