:root {
	/* Fallback for the sticky header's real height, set precisely by
	   logo-travel.js on load/resize once the header has rendered. */
	--lww-header-height: 96px;
}
/* Page scrollbar: neutral by default, orange while hovered/dragged.
   scrollbar-color is scoped to browsers without ::-webkit-scrollbar support
   (Firefox) — Chrome 121+ gives scrollbar-color precedence over the webkit
   pseudo-elements when both are set on the same element, which silently
   kills the :hover rule below. */
@supports not selector(::-webkit-scrollbar) {
	html {
		scrollbar-color: var(--wp--preset--color--orange) transparent;
	}
}
html::-webkit-scrollbar {
	width: 8px;
}
html::-webkit-scrollbar-track {
	background: transparent;
}
html::-webkit-scrollbar-thumb {
	background-color: var(--wp--preset--color--orange);
	border-radius: 6px;
}
html::-webkit-scrollbar-thumb:active {
	background-color: var(--wp--preset--color--orange-dark);
}

header.wp-block-template-part {
	position: sticky;
	top: 0;
	z-index: 50;
	background-color: transparent;
	border-bottom: 1px solid transparent;
	box-shadow: 0 4px 20px transparent;
	transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
header.wp-block-template-part.lww-header-scrolled {
	background-color: #1A1A1A;
	border-bottom-color: var(--wp--preset--color--orange);
	box-shadow: 0 4px 20px rgba(239, 126, 60, 0.25);
}

/* Header logo and hero logo: only one of the two is ever visible.
   JS toggles these instantly (no transition) so the traveling clone
   is always the only copy on screen mid-flight. */
.lww-header .wp-block-site-logo {
	opacity: 0;
	pointer-events: none;
}
.lww-header .wp-block-site-logo.lww-logo-visible {
	opacity: 1;
	pointer-events: auto;
}
.lww-hero-logo.lww-logo-hidden {
	opacity: 0;
}

/* Same one-visible-at-a-time rule for the "// it just works" tagline. */
.lww-header-tagline {
	opacity: 0;
	pointer-events: none;
}
.lww-header-tagline.lww-tagline-visible {
	opacity: 1;
	pointer-events: auto;
}
.lww-hero-tagline.lww-tagline-hidden {
	opacity: 0;
}

/* Footer text: lighter weight than the rest of the (regular-weight) site. */
.lww-footer {
	font-weight: 300;
}

/* Content block: orange outline with a faint glow. */
.lww-content-block {
	border: 1px solid var(--wp--preset--color--orange);
	border-radius: 12px;
	box-shadow: 0 0 28px rgba(239, 126, 60, 0.25);
	/* In-page anchor links (header "Contact" button, the "services"/"request
	   something else" links in the pricing block) target these blocks by id.
	   Without this, the sticky header covers the top of the block on landing. */
	scroll-margin-top: calc(var(--lww-header-height) + 1.5rem);
}

/* Trust bar: thin one-liner, not a full content block — hairline top/bottom
   instead of a heavy outline+glow box. */
.lww-trust-bar {
	border-top: 1px solid rgba(239, 126, 60, 0.35);
	border-bottom: 1px solid rgba(239, 126, 60, 0.35);
	letter-spacing: 0.02em;
}

/* Flex items default to min-width:auto, so a column with a fixed-width
   percentage still refuses to shrink below its content's natural width —
   that's what was pushing the carousel column past its container. */
.lww-content-block__text,
.lww-content-block__image {
	min-width: 0;
}

/* Portfolio carousel: rectangular project cards, horizontal scroll-snap
   (native swipe on touch), arrow buttons for pointer/mouse users. */
.lww-portfolio-carousel {
	position: relative;
	margin-top: 2rem;
	padding: 0 1.75rem;
	max-width: 66.6667%;
	margin-left: auto;
	margin-right: auto;
}
.lww-portfolio-track {
	display: flex;
	gap: 1.5rem;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	-webkit-overflow-scrolling: touch;
	padding-bottom: 0.5rem;
	scrollbar-width: none;
	min-width: 0;
}
.lww-portfolio-track::-webkit-scrollbar {
	display: none;
}
.lww-portfolio-card {
	box-sizing: border-box;
	flex: 0 0 280px;
	scroll-snap-align: start;
	border: 1px solid var(--wp--preset--color--orange);
	border-radius: 12px;
	padding: 1rem;
	background: rgba(239, 126, 60, 0.06);
}
/* Single-slide variant (used inside the Portfolio block's text column):
   one full-width card per view instead of several partial ones. */
.lww-portfolio-carousel--single .lww-portfolio-track {
	scroll-snap-type: x mandatory;
}
.lww-portfolio-carousel--single .lww-portfolio-card {
	flex: 0 0 100%;
}
.lww-portfolio-card-images {
	margin-bottom: 0.75rem;
}
.lww-portfolio-card-images img {
	width: 100%;
	height: 380px;
	object-fit: contain;
	background: rgba(0, 0, 0, 0.2);
	border-radius: 8px;
	display: none;
}
.lww-portfolio-card-images img.is-active {
	display: block;
}

/* Per-card image picker: numbered dots (1/2/3), independent from the
   project-level prev/next arrows, which move between cards, not images. */
.lww-portfolio-image-nav {
	display: flex;
	justify-content: center;
	gap: 0.4rem;
	margin-bottom: 0.75rem;
}
.lww-portfolio-image-nav button {
	width: 1.6rem;
	height: 1.6rem;
	padding: 0;
	border-radius: 50%;
	border: none;
	background: #5A5A5A;
	color: var(--wp--preset--color--ink);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.8rem;
	font-weight: 600;
	line-height: 1;
	cursor: pointer;
}
.lww-portfolio-image-nav button.is-active {
	background: var(--wp--preset--color--orange);
	cursor: default;
}
.lww-portfolio-image-nav button:not(.is-active):hover {
	background: var(--wp--preset--color--orange-dark);
	color: var(--wp--preset--color--paper);
}
.lww-portfolio-card h3 {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--medium);
}
.lww-portfolio-link {
	display: inline-flex;
	color: var(--wp--preset--color--orange);
	margin-left: 0.75rem;
	vertical-align: -0.1em;
}
.lww-portfolio-link:hover {
	color: var(--wp--preset--color--orange-dark);
}
.lww-portfolio-card p {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
}
.lww-carousel-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	display: flex;
	align-items: center;
	justify-content: center;
	background: #5A5A5A;
	color: var(--wp--preset--color--ink);
	border: none;
	border-radius: 50%;
	width: 2.5rem;
	height: 2.5rem;
	font-family: var(--wp--preset--font-family--mono);
	font-variant-ligatures: none;
	font-feature-settings: "calt" 0, "liga" 0, "dlig" 0;
	font-size: 1rem;
	font-weight: 600;
	line-height: 1;
	cursor: default;
	z-index: 5;
}
.lww-carousel-arrow:not(:disabled) {
	background: var(--wp--preset--color--orange);
	cursor: pointer;
}
.lww-carousel-arrow:not(:disabled):hover {
	background: var(--wp--preset--color--orange-dark);
	color: var(--wp--preset--color--paper);
}
.lww-carousel-arrow:disabled {
	visibility: hidden;
}
.lww-carousel-prev {
	left: 0;
}
.lww-carousel-next {
	right: 0;
}
/* Touch devices (mobile/tablet): rely on native swipe, hide the arrows. */
@media (hover: none) {
	.lww-carousel-arrow {
		display: none;
	}
	.lww-portfolio-carousel {
		padding: 0;
	}
}

/* Contact form: live character counter under the message field. */
.lww-char-count {
	margin-top: 0.25rem;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--small);
	text-align: right;
	color: var(--wp--preset--color--orange);
}

/* Pricing tiers: three cards in a row, distinguished from the surrounding
   .lww-content-block glow-box by a tint + top accent stripe rather than a
   full border, to avoid a box-within-a-box look. */
.lww-pricing-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1.5rem;
	margin-top: 1.5rem;
}
.lww-pricing-card {
	display: flex;
	flex-direction: column;
	border-top: 3px solid var(--wp--preset--color--orange);
	border-radius: 8px;
	padding: 1.5rem;
	background: rgba(239, 126, 60, 0.08);
}
.lww-pricing-card__name {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--orange);
}
.lww-pricing-card__price {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--large);
	font-weight: 700;
}
.lww-pricing-card__maintenance {
	margin: 0 0 1.25rem;
	font-size: var(--wp--preset--font-size--small);
	opacity: 0.85;
}
.lww-pricing-card__desc {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
}
.lww-pricing-card__features {
	list-style: none;
	margin: 1rem 0 0;
	padding: 0;
	font-size: var(--wp--preset--font-size--small);
	flex-grow: 1;
}
.lww-pricing-card__features li {
	position: relative;
	padding-left: 1.25rem;
	margin-bottom: 0.5rem;
	line-height: 1.4;
}
.lww-pricing-card__features li::before {
	content: "✓";
	position: absolute;
	left: 0;
	color: var(--wp--preset--color--orange);
	font-weight: 700;
}
@media (max-width: 781px) {
	.lww-pricing-grid {
		grid-template-columns: 1fr;
	}
}

/* Content block, image-left variant: columns stack in DOM order below 782px
   (image first, text second). Force text above image at that point so it
   always reads the same way regardless of the left/right variant. */
@media (max-width: 781px) {
	.lww-content-block--image-left .lww-content-block__image {
		order: 2;
	}
	.lww-content-block--image-left .lww-content-block__text {
		order: 1;
	}

	/* Content block images: center in their column on mobile, regardless
	   of the image's own width (matters once an image is narrower than
	   the full stacked column). */
	.lww-content-block .wp-block-image {
		margin-left: auto;
		margin-right: auto;
	}
}

/* FAQ: native <details>/<summary> accordion, no JS needed for collapse.
   Each item styled as its own clickable card, matching the tint+border
   treatment used for pricing cards, to make the click affordance obvious. */
.lww-faq {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}
.lww-faq-item {
	border: 1px solid var(--wp--preset--color--orange);
	border-radius: 8px;
	padding: 1rem 1.25rem;
	background: rgba(239, 126, 60, 0.08);
}
.lww-faq-item__question {
	cursor: pointer;
	list-style: none;
	font-family: var(--wp--preset--font-family--mono);
	font-weight: 600;
	color: var(--wp--preset--color--orange);
}
.lww-faq-item__question:hover {
	color: var(--wp--preset--color--orange-dark);
}
.lww-faq-item__question::-webkit-details-marker {
	display: none;
}
.lww-faq-item__answer {
	margin-top: 0.75rem;
}
.lww-faq-item__answer p {
	margin: 0 0 0.75rem;
}
.lww-faq-item__answer p:last-child {
	margin-bottom: 0;
}
