/*
Theme Name: YesEarth Eco
Theme URI: https://www.yeseartheco.com/
Author: YesEarth Eco Consulting
Author URI: https://www.yeseartheco.com/
Description: A professional, responsive and flexible WordPress theme for environment, climate, carbon, sustainability, CSR and development-sector organisations. Corporate in structure, organic in feel. Fully manageable from the Customizer — colours, typography, header & footer layouts, homepage sections, banners, social links and contact details. SEO-friendly, schema-ready, translation-ready, accessible and plugin-compatible (Gutenberg, Elementor, WooCommerce, Rank Math, Yoast, Contact Form 7, Polylang, WPML).
Version: 1.0.7
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: yesearth-eco
Tags: corporate, business, blog, custom-colors, custom-logo, custom-menu, featured-images, full-width-template, left-sidebar, right-sidebar, theme-options, threaded-comments, translation-ready, block-styles, wide-blocks, accessibility-ready, footer-widgets, sticky-post
*/

/* =============================================================
   YesEarth Eco — Design System
   Palette "Retro sunset": #BE5103 #FFCE1B #069494 #B7410E
   Teal anchors the environmental feel; warm tones add earthiness.
   All colour variables below are overridable from the Customizer
   (see inc/dynamic-css.php).
   ============================================================= */

:root {
	/* Brand palette */
	--ye-teal:        #069494;
	--ye-teal-dark:   #057576;
	--ye-teal-deep:   #033b3c;
	--ye-teal-ink:    #022a2b;
	--ye-orange:      #be5103;
	--ye-gold:        #ffce1b;
	--ye-rust:        #b7410e;

	/* Neutrals */
	--ye-ink:         #14201d;
	--ye-body:        #2c3a36;
	--ye-muted:       #5d6b66;
	--ye-line:        #e3ddd0;
	--ye-line-soft:   #efe9dd;
	--ye-paper:       #fbf9f3;
	--ye-cream:       #f4efe4;
	--ye-white:       #ffffff;

	/* Semantic mapping */
	--ye-accent:      var(--ye-teal);
	--ye-accent-2:    var(--ye-orange);
	--ye-highlight:   var(--ye-gold);

	/* Typography */
	--ye-font-head: "Fraunces", Georgia, "Times New Roman", serif;
	--ye-font-body: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--ye-fs-base: 16px;
	--ye-lh-base: 1.62;

	/* Layout */
	--ye-container: 1200px;
	--ye-container-wide: 1400px;
	--ye-container-narrow: 760px;
	--ye-radius: 14px;
	--ye-radius-sm: 8px;
	--ye-gap: 24px;
	--ye-section-y: 60px;

	/* Effects */
	--ye-shadow-sm: 0 2px 10px rgba(20, 32, 29, 0.05);
	--ye-shadow:    0 14px 40px rgba(20, 32, 29, 0.09);
	--ye-shadow-lg: 0 30px 70px rgba(3, 59, 60, 0.16);
	--ye-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

/* -------------------------------------------------------------
   Reset & base
   ------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
	margin: 0;
	font-family: var(--ye-font-body);
	font-size: var(--ye-fs-base);
	line-height: var(--ye-lh-base);
	color: var(--ye-body);
	background: var(--ye-paper);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-x: hidden;
}

img { max-width: 100%; height: auto; display: block; }
a { color: var(--ye-teal-dark); text-decoration: none; transition: color .2s var(--ye-ease); }
a:hover { color: var(--ye-orange); }

h1, h2, h3, h4, h5, h6 {
	font-family: var(--ye-font-head);
	color: var(--ye-ink);
	font-weight: 600;
	line-height: 1.16;
	margin: 0 0 .5em;
	letter-spacing: -0.01em;
	/* Pin Fraunces' optical size so glyphs render consistently at every
	   size; "auto" pushed hairlines into a distorted high-contrast display
	   cut on longer multi-line headings. */
	font-optical-sizing: none;
	font-variation-settings: "opsz" 40;
	text-wrap: balance;
}
h1 { font-size: clamp(2rem, 4vw, 2.9rem); }
h2 { font-size: clamp(1.6rem, 2.8vw, 2.15rem); }
h3 { font-size: clamp(1.2rem, 1.8vw, 1.45rem); }
h4 { font-size: 1.12rem; }
h5 { font-size: 1rem; }
h6 { font-size: .95rem; }

p { margin: 0 0 1.2em; }
ul, ol { margin: 0 0 1.2em; padding-left: 1.3em; }
li { margin-bottom: .4em; }
blockquote {
	margin: 1.6em 0;
	padding: 1em 1.6em;
	border-left: 4px solid var(--ye-teal);
	background: var(--ye-cream);
	border-radius: 0 var(--ye-radius-sm) var(--ye-radius-sm) 0;
	font-family: var(--ye-font-head);
	font-size: 1.2rem;
	font-style: italic;
	color: var(--ye-ink);
}
code, pre { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
pre { background: var(--ye-teal-ink); color: #d6efed; padding: 1.2em; border-radius: var(--ye-radius-sm); overflow:auto; }
hr { border: 0; border-top: 1px solid var(--ye-line); margin: 2.5em 0; }
table { border-collapse: collapse; width: 100%; margin-bottom: 1.5em; }
th, td { padding: .75em 1em; border: 1px solid var(--ye-line); text-align: left; }
th { background: var(--ye-cream); font-family: var(--ye-font-head); }

/* -------------------------------------------------------------
   Accessibility helpers
   ------------------------------------------------------------- */
.screen-reader-text {
	border: 0; clip: rect(1px,1px,1px,1px); clip-path: inset(50%);
	height: 1px; width: 1px; margin: -1px; overflow: hidden; padding: 0;
	position: absolute !important; word-wrap: normal !important;
}
.skip-link {
	position: absolute; left: -9999px; top: 8px; z-index: 100000;
	background: var(--ye-ink); color: #fff; padding: 12px 20px;
	border-radius: 0 0 8px 0; font-weight: 700;
}
.skip-link:focus { left: 8px; color: #fff; }
:focus-visible { outline: 3px solid var(--ye-gold); outline-offset: 2px; }

/* -------------------------------------------------------------
   Layout primitives
   ------------------------------------------------------------- */
.ye-container { width: 100%; max-width: var(--ye-container); margin: 0 auto; padding: 0 24px; }
.ye-container--wide { max-width: var(--ye-container-wide); }
.ye-container--narrow { max-width: var(--ye-container-narrow); }
.ye-section { padding: var(--ye-section-y) 0; }
.ye-section--tight { padding: 64px 0; }

.layout-boxed #page { max-width: 1340px; margin: 0 auto; background: var(--ye-paper); box-shadow: var(--ye-shadow); }
.layout-frame #page { margin: 26px; border-radius: 18px; overflow: hidden; box-shadow: var(--ye-shadow); }

.ye-eyebrow {
	display: inline-flex; align-items: center; gap: 9px;
	font-family: var(--ye-font-body);
	font-size: .74rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
	color: var(--ye-teal-dark); margin-bottom: 12px;
}
.ye-eyebrow::before { content: ""; width: 26px; height: 2px; background: var(--ye-orange); display:inline-block; }
.ye-section-head { max-width: 720px; margin-bottom: 34px; }
.ye-section-head.is-center { margin-left: auto; margin-right: auto; text-align: center; }
.ye-section-head.is-center .ye-eyebrow { justify-content: center; }
.ye-lead { font-size: 1.05rem; color: var(--ye-muted); line-height: 1.55; }

/* Grid helpers */
.ye-grid { display: grid; gap: var(--ye-gap); }
.ye-grid-2 { grid-template-columns: repeat(2, 1fr); }
.ye-grid-3 { grid-template-columns: repeat(3, 1fr); }
.ye-grid-4 { grid-template-columns: repeat(4, 1fr); }
.ye-grid-5 { grid-template-columns: repeat(5, 1fr); }
.ye-grid-6 { grid-template-columns: repeat(6, 1fr); }

/* -------------------------------------------------------------
   Buttons
   ------------------------------------------------------------- */
.ye-btn, .wp-block-button__link, button, input[type="submit"], .ye-content .wp-element-button {
	display: inline-flex; align-items: center; justify-content:center; gap: 10px;
	font-family: var(--ye-font-body); font-weight: 700; font-size: .98rem;
	padding: 15px 30px; border-radius: 999px; border: 2px solid transparent;
	background: var(--ye-teal); color: #fff; cursor: pointer;
	transition: transform .25s var(--ye-ease), background .25s var(--ye-ease), box-shadow .25s var(--ye-ease), color .2s;
	line-height: 1; text-align: center;
}
.ye-btn:hover, button:hover, input[type="submit"]:hover { background: var(--ye-teal-deep); color:#fff; transform: translateY(-2px); box-shadow: var(--ye-shadow); }
.ye-btn--outline { background: transparent; border-color: currentColor; color: var(--ye-ink); }
.ye-btn--outline:hover { background: var(--ye-ink); border-color: var(--ye-ink); color:#fff; }
.ye-btn--ghost { background: rgba(255,255,255,.14); color:#fff; border-color: rgba(255,255,255,.4); }
.ye-btn--ghost:hover { background:#fff; color: var(--ye-teal-deep); border-color:#fff; }
.ye-btn--accent { background: var(--ye-orange); }
.ye-btn--accent:hover { background: var(--ye-rust); }
.ye-btn--lg { padding: 18px 38px; font-size: 1.05rem; }
.ye-btn .ye-arrow { transition: transform .25s var(--ye-ease); }
.ye-btn:hover .ye-arrow { transform: translateX(4px); }

/* -------------------------------------------------------------
   Header
   ------------------------------------------------------------- */
.ye-topbar {
	background: var(--ye-teal-deep); color: #cfe9e8;
	font-size: .85rem;
}
.ye-topbar .ye-container { display: flex; align-items: center; justify-content: space-between; min-height: 44px; gap: 16px; flex-wrap: wrap; }
.ye-topbar a { color: #cfe9e8; }
.ye-topbar a:hover { color: var(--ye-gold); }
.ye-topbar-info { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
.ye-topbar-info span { display: inline-flex; align-items: center; gap: 7px; }
.ye-topbar-info svg { width: 15px; height: 15px; opacity: .85; }
.ye-topbar-social { display: flex; align-items: center; gap: 14px; }
.ye-topbar-social a { display:inline-flex; }
.ye-topbar-social svg { width: 16px; height: 16px; }

.ye-header { background: var(--ye-paper); border-bottom: 1px solid var(--ye-line-soft); position: relative; z-index: 90; }
.ye-header-inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 84px; }
.ye-header.is-sticky.stuck { position: fixed; top: 0; left: 0; right: 0; background: rgba(251,249,243,.96); backdrop-filter: blur(10px); box-shadow: var(--ye-shadow-sm); animation: yeSlideDown .35s var(--ye-ease); }
@keyframes yeSlideDown { from { transform: translateY(-100%);} to { transform: translateY(0);} }
.admin-bar .ye-header.is-sticky.stuck { top: 32px; }

.ye-branding { display: flex; align-items: center; gap: 14px; }
.ye-branding .custom-logo-link { display:block; }
.ye-branding .custom-logo { max-height: 54px; width: auto; }
.ye-site-title { font-family: var(--ye-font-head); font-size: 1.45rem; font-weight: 600; margin: 0; color: var(--ye-ink); line-height: 1.05; }
.ye-site-title a { color: inherit; }
.ye-site-desc { font-size: .8rem; color: var(--ye-muted); margin: 2px 0 0; }

/* Primary nav */
.ye-nav-wrap { display: flex; align-items: center; gap: 20px; }
.ye-primary-menu { list-style: none; display: flex; align-items: center; gap: 4px; margin: 0; padding: 0; }
.ye-primary-menu li { position: relative; margin: 0; }
.ye-primary-menu a {
	display: block; padding: 12px 16px; font-weight: 600; font-size: .98rem;
	color: var(--ye-ink); border-radius: 8px; transition: color .2s, background .2s;
}
.ye-primary-menu > li > a::after {
	content:""; display:block; height:2px; width:0; background: var(--ye-orange);
	transition: width .25s var(--ye-ease); margin-top: 3px;
}
.ye-primary-menu > li:hover > a::after,
.ye-primary-menu > li.current-menu-item > a::after { width: 100%; }
.ye-primary-menu a:hover { color: var(--ye-teal-dark); }
.ye-primary-menu .current-menu-item > a,
.ye-primary-menu .current-menu-ancestor > a { color: var(--ye-teal-dark); }
.ye-primary-menu .menu-item-has-children > a::before,
.ye-primary-menu .page_item_has_children > a::before {
	content: ""; display:inline-block; width: 6px; height: 6px; margin-left: 6px;
	border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
	transform: rotate(45deg) translateY(-2px); vertical-align: middle; opacity: .6;
}
/* Sub-menus (handles both assigned-menu .sub-menu and page-list fallback .children) */
.ye-primary-menu ul.sub-menu,
.ye-primary-menu ul.children {
	position: absolute; top: calc(100% + 6px); left: 0; min-width: 240px;
	background: #fff; border: 1px solid var(--ye-line-soft); border-radius: var(--ye-radius-sm);
	box-shadow: var(--ye-shadow); padding: 8px; list-style: none; margin: 0;
	opacity: 0; visibility: hidden; transform: translateY(8px);
	transition: all .22s var(--ye-ease); z-index: 50;
}
.ye-primary-menu li:hover > ul.sub-menu,
.ye-primary-menu li:focus-within > ul.sub-menu,
.ye-primary-menu li:hover > ul.children,
.ye-primary-menu li:focus-within > ul.children { opacity: 1; visibility: visible; transform: translateY(0); }
.ye-primary-menu ul.sub-menu li,
.ye-primary-menu ul.children li { width: 100%; }
.ye-primary-menu ul.sub-menu a,
.ye-primary-menu ul.children a { padding: 10px 14px; font-size: .92rem; font-weight: 500; }
.ye-primary-menu ul.sub-menu a:hover,
.ye-primary-menu ul.children a:hover { background: var(--ye-cream); }
.ye-primary-menu ul.sub-menu ul.sub-menu,
.ye-primary-menu ul.children ul.children { top: -8px; left: 100%; }
.ye-primary-menu ul.sub-menu .menu-item-has-children > a::before,
.ye-primary-menu ul.children .page_item_has_children > a::before { transform: rotate(-45deg); float: right; }

.ye-header-actions { display: flex; align-items: center; gap: 10px; }
.ye-search-toggle, .ye-menu-toggle {
	background: transparent; border: 0; padding: 8px; cursor: pointer; color: var(--ye-ink);
	display: inline-flex; align-items: center; border-radius: 8px;
}
.ye-search-toggle:hover { background: var(--ye-cream); transform:none; box-shadow:none; }
.ye-search-toggle svg, .ye-menu-toggle svg { width: 22px; height: 22px; }

/* Centered logo header variant */
.header-centered .ye-header-inner { flex-direction: column; gap: 14px; padding: 16px 0; }
.header-centered .ye-nav-wrap { width: 100%; justify-content: center; }

/* Search overlay */
.ye-search-overlay {
	position: fixed; inset: 0; background: rgba(3,59,60,.97); z-index: 9999;
	display: flex; align-items: center; justify-content: center; padding: 24px;
	opacity: 0; visibility: hidden; transition: opacity .3s var(--ye-ease);
}
.ye-search-overlay.open { opacity: 1; visibility: visible; }
.ye-search-overlay .search-form { width: min(640px, 100%); display: flex; gap: 12px; }
.ye-search-overlay .search-field {
	flex: 1; background: transparent; border: 0; border-bottom: 2px solid rgba(255,255,255,.4);
	color: #fff; font-size: 1.6rem; font-family: var(--ye-font-head); padding: 12px 0;
}
.ye-search-overlay .search-field::placeholder { color: rgba(255,255,255,.5); }
.ye-search-overlay .search-field:focus { outline: none; border-color: var(--ye-gold); }
.ye-search-close { position: absolute; top: 28px; right: 32px; background: transparent; border:0; color:#fff; cursor:pointer; }
.ye-search-close svg { width: 30px; height: 30px; }

/* -------------------------------------------------------------
   Mobile navigation
   ------------------------------------------------------------- */
.ye-menu-toggle { display: none; }

/* Drawer + overlay are off-canvas / hidden at every width by default.
   They are only ever revealed via the toggle, which itself only shows
   on small screens — so on desktop the drawer can never appear. */
.ye-mobile-nav {
	position: fixed; top: 0; right: 0; height: 100%; width: min(360px, 86%);
	background: var(--ye-paper); z-index: 9998; box-shadow: var(--ye-shadow-lg);
	transform: translateX(100%); transition: transform .35s var(--ye-ease);
	overflow-y: auto; padding: 80px 24px 40px;
}
.ye-mobile-nav.open { transform: translateX(0); }
.ye-mobile-nav ul { list-style: none; margin: 0; padding: 0; }
.ye-mobile-nav li { border-bottom: 1px solid var(--ye-line-soft); }
.ye-mobile-nav a { display: block; padding: 14px 4px; font-weight: 600; color: var(--ye-ink); }
.ye-mobile-nav .sub-menu, .ye-mobile-nav .children { padding-left: 14px; }
.ye-mobile-nav .sub-menu a, .ye-mobile-nav .children a { font-weight: 500; font-size: .95rem; color: var(--ye-body); }
.ye-mobile-close { position: absolute; top: 22px; right: 22px; background: transparent; border:0; cursor:pointer; padding: 6px; }
.ye-mobile-close svg { width: 26px; height: 26px; }
.ye-nav-overlay { position: fixed; inset: 0; background: rgba(3,30,30,.5); z-index: 9997; opacity:0; visibility:hidden; transition: opacity .3s; }
.ye-nav-overlay.open { opacity: 1; visibility: visible; }
.ye-mobile-search { margin-bottom: 18px; }

@media (max-width: 991px) {
	.ye-nav-wrap .ye-primary-menu { display: none; }
	.ye-menu-toggle { display: inline-flex; }
}

/* -------------------------------------------------------------
   Hero
   ------------------------------------------------------------- */
.ye-hero { position: relative; background: var(--ye-teal-ink); color: #fff; overflow: hidden; }
.ye-hero-bg { position: absolute; inset: 0; z-index: 0; }
.ye-hero-bg img { width:100%; height:100%; object-fit: cover; }
.ye-hero-overlay { position: absolute; inset: 0; z-index: 1;
	background: linear-gradient(110deg, rgba(2,42,43,.92) 0%, rgba(3,59,60,.78) 45%, rgba(5,148,148,.42) 100%); }
.ye-hero-inner { position: relative; z-index: 2; padding: clamp(60px, 9vh, 110px) 0 clamp(54px, 8vh, 96px); }
.ye-hero-content { max-width: 720px; }
.ye-hero h1 { color: #fff; font-size: clamp(2.1rem, 4.6vw, 3.4rem); margin-bottom: 16px; font-variation-settings: "opsz" 60; }
.ye-hero h1 .accent { color: var(--ye-gold); font-style: italic; }
.ye-hero-sub { font-size: clamp(1.05rem, 1.8vw, 1.25rem); color: #d9f0ee; font-family: var(--ye-font-head); font-style: italic; margin-bottom: 14px; }
.ye-hero-text { font-size: 1rem; color: rgba(255,255,255,.86); max-width: 600px; margin-bottom: 26px; }
.ye-hero-actions { display: flex; gap: 14px; flex-wrap: wrap; }
.ye-hero-meta { margin-top: 30px; display:flex; gap: 10px 26px; flex-wrap: wrap; font-size: .78rem; letter-spacing: .12em; text-transform: uppercase; color: rgba(255,255,255,.7); }
.ye-hero-meta span { display:inline-flex; align-items:center; gap: 8px; }
.ye-hero-meta span::before { content:""; width:7px; height:7px; border-radius:50%; background: var(--ye-gold); }
/* organic leaf accent */
.ye-hero-leaf { position:absolute; right:-60px; bottom:-60px; width: 360px; height:360px; z-index:1; opacity:.16; color: var(--ye-teal); }

/* -------------------------------------------------------------
   Cards
   ------------------------------------------------------------- */
.ye-card {
	background: #fff; border: 1px solid var(--ye-line-soft); border-radius: var(--ye-radius);
	overflow: hidden; transition: transform .3s var(--ye-ease), box-shadow .3s var(--ye-ease), border-color .3s;
	display: flex; flex-direction: column; height: 100%;
}
.ye-card:hover { transform: translateY(-6px); box-shadow: var(--ye-shadow); border-color: transparent; }
.ye-card-media { aspect-ratio: 16/10; overflow: hidden; background: var(--ye-cream); }
.ye-card-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ye-ease); }
.ye-card:hover .ye-card-media img { transform: scale(1.05); }
.ye-card-body { padding: 22px; display:flex; flex-direction: column; flex: 1; }
.ye-card-body h3 { margin-bottom: 8px; font-size: 1.15rem; }
.ye-card-body p { color: var(--ye-muted); margin-bottom: 18px; font-size: .98rem; }
.ye-card-link { margin-top: auto; font-weight: 700; color: var(--ye-teal-dark); display:inline-flex; align-items:center; gap: 7px; }
.ye-card-link:hover { gap: 11px; color: var(--ye-orange); }

/* Service / icon card */
.ye-service { padding: 26px 24px; }
.ye-service-icon { width: 48px; height: 48px; border-radius: 12px; background: var(--ye-cream); color: var(--ye-teal); display:flex; align-items:center; justify-content:center; margin-bottom: 16px; }
.ye-service-icon svg { width: 28px; height: 28px; }
.ye-service:hover .ye-service-icon { background: var(--ye-teal); color: #fff; }
.ye-service h3 { font-size: 1.12rem; }

/* -------------------------------------------------------------
   Stats / By the numbers
   ------------------------------------------------------------- */
.ye-stats { background: var(--ye-teal-deep); color: #fff; }
.ye-stat { text-align: center; padding: 14px; }
.ye-stat-num { font-family: var(--ye-font-head); font-size: clamp(1.9rem, 3.4vw, 2.6rem); font-weight: 600; color: var(--ye-gold); line-height: 1; }
.ye-stat-label { margin-top: 8px; font-size: .88rem; color: #cfe9e8; }
.ye-stats .ye-section-head h2 { color:#fff; }
.ye-stats .ye-section-head .ye-lead { color: #bfe2e0; }

/* -------------------------------------------------------------
   Split / about
   ------------------------------------------------------------- */
.ye-split { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; }
.ye-split-media { position: relative; }
.ye-split-media img { border-radius: var(--ye-radius); box-shadow: var(--ye-shadow); }
.ye-split-badge {
	position: absolute; bottom: -26px; left: -26px; background: var(--ye-gold);
	color: var(--ye-ink); padding: 22px 26px; border-radius: var(--ye-radius); box-shadow: var(--ye-shadow);
	max-width: 230px;
}
.ye-split-badge strong { font-family: var(--ye-font-head); font-size: 2rem; display:block; line-height:1; }
.ye-feature-list { list-style: none; padding: 0; margin: 24px 0 0; }
.ye-feature-list li { display:flex; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--ye-line-soft); margin: 0; }
.ye-feature-list svg { flex-shrink: 0; width: 24px; height: 24px; color: var(--ye-teal); margin-top: 2px; }
.ye-feature-list strong { display:block; color: var(--ye-ink); font-family: var(--ye-font-head); }

/* -------------------------------------------------------------
   Partners
   ------------------------------------------------------------- */
.ye-partners { background: var(--ye-cream); }
.ye-partner-card { background:#fff; border-radius: var(--ye-radius); padding: 30px; border: 1px solid var(--ye-line-soft); }
.ye-partner-card h3 { font-size: 1.2rem; }
.ye-partner-card p { color: var(--ye-muted); font-size: .95rem; }

/* -------------------------------------------------------------
   CTA band
   ------------------------------------------------------------- */
.ye-cta { background: linear-gradient(120deg, var(--ye-orange), var(--ye-rust)); color:#fff; border-radius: var(--ye-radius); padding: 48px; text-align:center; position: relative; overflow:hidden; }
.ye-cta h2 { color: #fff; }
.ye-cta p { color: rgba(255,255,255,.9); max-width: 620px; margin: 0 auto 28px; font-size: 1.1rem; }
.ye-cta .ye-btn--ghost { border-color: #fff; }

/* -------------------------------------------------------------
   Page banner / breadcrumbs
   ------------------------------------------------------------- */
.ye-page-banner { background: linear-gradient(110deg, var(--ye-teal-ink) 0%, var(--ye-teal-deep) 55%, var(--ye-teal) 130%); color: #fff; padding: clamp(40px, 6vw, 64px) 0; position: relative; overflow: hidden; }
.ye-page-banner::after { content:""; position:absolute; right: -80px; top: -80px; width: 320px; height: 320px; border-radius: 50%; background: radial-gradient(circle, rgba(5,148,148,.35), transparent 70%); }
.ye-page-banner h1 { color: #fff; position: relative; }
.ye-breadcrumbs { font-size: .88rem; color: rgba(255,255,255,.75); margin-bottom: 14px; position: relative; }
.ye-breadcrumbs a { color: rgba(255,255,255,.85); }
.ye-breadcrumbs a:hover { color: var(--ye-gold); }
.ye-breadcrumbs .sep { margin: 0 8px; opacity: .5; }

/* -------------------------------------------------------------
   Content / posts
   ------------------------------------------------------------- */
.ye-main { padding: var(--ye-section-y) 0; }
.ye-with-sidebar { display: grid; grid-template-columns: minmax(0,1fr) 320px; gap: 56px; }
.layout-sidebar-left .ye-with-sidebar { grid-template-columns: 320px minmax(0,1fr); }
.layout-sidebar-left .ye-with-sidebar .ye-primary-content { order: 2; }

.ye-content { font-size: 1.06rem; }
.ye-content > *:first-child { margin-top: 0; }
.ye-content img { border-radius: var(--ye-radius-sm); }
.ye-content h2 { margin-top: 1.6em; }
.ye-content h3 { margin-top: 1.4em; }
.ye-content a { text-decoration: underline; text-decoration-color: rgba(6,148,148,.4); text-underline-offset: 3px; }
.ye-content a:hover { text-decoration-color: var(--ye-orange); }

.ye-post-card { background:#fff; border:1px solid var(--ye-line-soft); border-radius: var(--ye-radius); overflow:hidden; margin-bottom: 28px; transition: box-shadow .3s, transform .3s; }
.ye-post-card:hover { box-shadow: var(--ye-shadow); transform: translateY(-3px); }
.ye-post-card .ye-card-media { aspect-ratio: 16/8; }
.ye-post-meta { display:flex; flex-wrap:wrap; gap: 8px 18px; font-size: .85rem; color: var(--ye-muted); margin-bottom: 12px; align-items:center; }
.ye-post-meta a { color: var(--ye-muted); }
.ye-post-meta .ye-cat { background: var(--ye-cream); color: var(--ye-teal-dark); padding: 3px 12px; border-radius: 999px; font-weight: 700; font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; }
.ye-post-title { font-size: 1.35rem; margin-bottom: 10px; }
.ye-blog-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 28px; }
.ye-blog-grid .ye-post-card { margin-bottom: 0; }

/* List view — editorial horizontal card */
.ye-blog-list .ye-post-card { display: grid; grid-template-columns: 300px 1fr; align-items: stretch; }
.ye-blog-list .ye-post-card .ye-card-media { aspect-ratio: auto; height: 100%; min-height: 200px; }
.ye-blog-list .ye-post-card .ye-card-body { padding: 28px 30px; display:flex; flex-direction:column; justify-content:center; }
.ye-blog-list .ye-post-card:not(.has-post-thumbnail),
.ye-blog-list .ye-post-card.no-thumb { grid-template-columns: 1fr; }
@media (max-width: 700px) {
	.ye-blog-list .ye-post-card { grid-template-columns: 1fr; }
	.ye-blog-list .ye-post-card .ye-card-media { min-height: 0; aspect-ratio: 16/8; }
}

/* Themed empty state */
.ye-no-results { background: var(--ye-cream); border-radius: var(--ye-radius); padding: 48px 40px; text-align:center; }
.ye-no-results h2 { margin-bottom: 10px; }
.ye-no-results .search-form { max-width: 460px; margin: 20px auto 0; }

article.sticky .ye-post-card { border-color: var(--ye-gold); }

/* Single */
.ye-single-header { max-width: 820px; margin: 0 auto 40px; }
.ye-single-thumb { margin-bottom: 40px; border-radius: var(--ye-radius); overflow: hidden; box-shadow: var(--ye-shadow); }
.ye-entry { max-width: 820px; margin: 0 auto; }
.ye-tags { margin-top: 36px; display:flex; flex-wrap:wrap; gap: 10px; }
.ye-tags a { background: var(--ye-cream); padding: 6px 14px; border-radius: 999px; font-size: .85rem; }
.ye-share { margin-top: 30px; display:flex; align-items:center; gap: 14px; flex-wrap:wrap; }
.ye-share-btn { width: 40px; height: 40px; border-radius: 50%; background: var(--ye-cream); display:inline-flex; align-items:center; justify-content:center; color: var(--ye-teal-dark); }
.ye-share-btn:hover { background: var(--ye-teal); color:#fff; }
.ye-share-btn svg { width: 18px; height: 18px; }

.ye-author-box { display:flex; gap: 20px; background: var(--ye-cream); border-radius: var(--ye-radius); padding: 28px; margin-top: 44px; }
.ye-author-box img { border-radius: 50%; width: 72px; height: 72px; }

.ye-related { margin-top: 64px; }
.ye-related-grid { display:grid; grid-template-columns: repeat(3,1fr); gap: 28px; }

/* Pagination */
.ye-pagination { display:flex; justify-content:center; gap: 8px; margin-top: 56px; flex-wrap: wrap; }
.ye-pagination .page-numbers {
	display:inline-flex; align-items:center; justify-content:center; min-width: 46px; height:46px; padding: 0 14px;
	border-radius: 10px; border:1px solid var(--ye-line); font-weight: 700; color: var(--ye-ink); background:#fff;
}
.ye-pagination .page-numbers.current { background: var(--ye-teal); color:#fff; border-color: var(--ye-teal); }
.ye-pagination .page-numbers:hover:not(.current) { border-color: var(--ye-teal); color: var(--ye-teal-dark); }

/* -------------------------------------------------------------
   Sidebar / widgets
   ------------------------------------------------------------- */
.ye-sidebar .widget, .ye-footer-widget { margin-bottom: 38px; }
.ye-sidebar .widget-title, .ye-footer-widget .widget-title {
	font-size: 1.2rem; margin-bottom: 18px; padding-bottom: 12px; position: relative;
}
.ye-sidebar .widget-title::after { content:""; position:absolute; bottom:0; left:0; width: 44px; height: 3px; background: var(--ye-orange); }
.ye-sidebar .widget { background: #fff; border: 1px solid var(--ye-line-soft); border-radius: var(--ye-radius); padding: 26px; }
.ye-sidebar ul { list-style: none; padding: 0; margin: 0; }
.ye-sidebar li { padding: 9px 0; border-bottom: 1px solid var(--ye-line-soft); }
.ye-sidebar li:last-child { border-bottom: 0; }
.ye-sidebar a { color: var(--ye-body); }
.ye-sidebar a:hover { color: var(--ye-teal-dark); }

/* -------------------------------------------------------------
   Forms
   ------------------------------------------------------------- */
input[type="text"], input[type="email"], input[type="url"], input[type="tel"],
input[type="search"], input[type="number"], input[type="password"], textarea, select {
	width: 100%; padding: 13px 16px; border: 1.5px solid var(--ye-line); border-radius: var(--ye-radius-sm);
	background: #fff; font-family: var(--ye-font-body); font-size: 1rem; color: var(--ye-ink);
	transition: border-color .2s, box-shadow .2s;
}
input:focus, textarea:focus, select:focus { outline: none; border-color: var(--ye-teal); box-shadow: 0 0 0 3px rgba(6,148,148,.14); }
label { font-weight: 600; color: var(--ye-ink); display:block; margin-bottom: 6px; }

/* -------------------------------------------------------------
   Footer
   ------------------------------------------------------------- */
.ye-footer { background: var(--ye-teal-ink); color: #b9d4d2; }
.ye-footer-top { padding: 72px 0 56px; }
.ye-footer-cols { display: grid; gap: 44px; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; }
.ye-footer h2, .ye-footer h3, .ye-footer h4, .ye-footer .widget-title { color: #fff; font-size: 1.1rem; margin-bottom: 20px; }
.ye-footer a { color: #b9d4d2; }
.ye-footer a:hover { color: var(--ye-gold); }
.ye-footer-about p { font-size: .96rem; line-height: 1.7; }
.ye-footer .ye-foot-logo { max-height: 50px; margin-bottom: 18px; }
.ye-footer ul { list-style: none; padding: 0; margin: 0; }
.ye-footer li { padding: 6px 0; }
.ye-footer-contact li { display:flex; gap: 12px; align-items:flex-start; }
.ye-footer-contact svg { width: 18px; height: 18px; flex-shrink: 0; margin-top: 3px; color: var(--ye-gold); }
.ye-footer-social { display:flex; gap: 12px; margin-top: 20px; }
.ye-footer-social a { width: 40px; height: 40px; border-radius: 50%; background: rgba(255,255,255,.08); display:inline-flex; align-items:center; justify-content:center; transition: background .25s, transform .25s; }
.ye-footer-social a:hover { background: var(--ye-teal); transform: translateY(-3px); }
.ye-footer-social svg { width: 18px; height: 18px; }
.ye-footer-bottom { border-top: 1px solid rgba(255,255,255,.1); padding: 22px 0; font-size: .88rem; }
.ye-footer-bottom .ye-container { display:flex; justify-content:space-between; align-items:center; gap: 16px; flex-wrap: wrap; }
.ye-footer-bottom-menu { display:flex; gap: 22px; list-style: none; margin:0; padding:0; }

/* Newsletter */
.ye-newsletter-form { display:flex; gap: 10px; margin-top: 16px; }
.ye-newsletter-form input { flex: 1; }

/* -------------------------------------------------------------
   Reveal animations
   ------------------------------------------------------------- */
.ye-reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s var(--ye-ease), transform .7s var(--ye-ease); }
.ye-reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
	.ye-reveal { opacity: 1; transform: none; }
}

/* -------------------------------------------------------------
   WordPress core / block alignment
   ------------------------------------------------------------- */
.alignwide { width: min(100%, var(--ye-container-wide)); margin-left: auto; margin-right: auto; }
.alignfull { width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
.aligncenter { display:block; margin-left:auto; margin-right:auto; }
.alignleft { float:left; margin: 0 1.5em 1em 0; }
.alignright { float:right; margin: 0 0 1em 1.5em; }
.wp-caption-text, .wp-block-image figcaption { font-size: .85rem; color: var(--ye-muted); text-align:center; margin-top: 8px; }
.sticky, .gallery-caption, .bypostauthor { display:block; }
.post-password-form input[type="password"] { max-width: 320px; }
.wp-block-quote { border-left: 4px solid var(--ye-teal); padding-left: 1.4em; }

/* -------------------------------------------------------------
   Responsive
   ------------------------------------------------------------- */
@media (max-width: 1100px) {
	.ye-grid-5, .ye-grid-6 { grid-template-columns: repeat(3, 1fr); }
	.ye-footer-cols { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 900px) {
	:root { --ye-section-y: 44px; }
	.ye-grid-3, .ye-grid-4 { grid-template-columns: repeat(2, 1fr); }
	.ye-split { grid-template-columns: 1fr; gap: 40px; }
	.ye-split-badge { left: 0; bottom: -20px; }
	.ye-with-sidebar { grid-template-columns: 1fr; gap: 48px; }
	.layout-sidebar-left .ye-with-sidebar .ye-primary-content { order: 0; }
	.ye-blog-grid, .ye-related-grid { grid-template-columns: 1fr; }
	.ye-related-grid { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 600px) {
	:root { --ye-fs-base: 15px; --ye-gap: 16px; }
	.ye-grid-2, .ye-grid-3, .ye-grid-4, .ye-grid-5, .ye-grid-6 { grid-template-columns: 1fr; }
	.ye-footer-cols { grid-template-columns: 1fr; gap: 34px; }
	.ye-cta { padding: 40px 24px; }
	.ye-related-grid { grid-template-columns: 1fr; }
	.ye-stats .ye-grid-3, .ye-stats .ye-grid-6 { grid-template-columns: repeat(2,1fr); }
	.ye-newsletter-form { flex-direction: column; }
	.ye-footer-bottom .ye-container { flex-direction: column; text-align:center; }
	.layout-frame #page { margin: 10px; }
}

/* =============================================================
   Template-part components (added with the PHP templates)
   ============================================================= */

/* Button alias — same as the default teal button. */
.ye-btn--primary { background: var(--ye-teal); color: #fff; border-color: transparent; }
.ye-btn--primary:hover { background: var(--ye-teal-deep); color: #fff; }

/* Light eyebrow for dark sections (hero). */
.ye-eyebrow--light { color: var(--ye-gold); }

/* Hero background image layer. */
.ye-hero-bg { position: absolute; inset: 0; z-index: 0; background-size: cover; background-position: center; }

/* About / split */
.ye-split-content h2 { margin-bottom: 18px; }
.ye-split-placeholder { aspect-ratio: 4/3; border-radius: var(--ye-radius); background: linear-gradient(135deg, var(--ye-teal), var(--ye-teal-deep)); display:flex; align-items:center; justify-content:center; color: rgba(255,255,255,.5); box-shadow: var(--ye-shadow); }

/* Stats grid spacing on the dark band. */
.ye-stats-grid { row-gap: 36px; }

/* Project cards */
.ye-project-loc { display:flex; align-items:center; gap: 10px; margin-bottom: 14px; color: var(--ye-teal); }
.ye-project-card .ye-card-body h3 { margin-bottom: 8px; }

/* News section header (title + “view all” button) */
.ye-news-head { display:flex; align-items:flex-end; justify-content:space-between; gap: 24px; max-width:none; }
.ye-card-media-fallback { width:100%; height:100%; display:flex; align-items:center; justify-content:center; background: linear-gradient(135deg, var(--ye-cream), #e7e0cf); color: var(--ye-teal); }

/* No-sidebar / full-width content wrappers */
.ye-no-sidebar, .ye-fullwidth { max-width: 100%; }
.ye-no-sidebar .ye-content, .ye-fullwidth .ye-content, .ye-no-sidebar .ye-entry { max-width: 980px; margin-left:auto; margin-right:auto; }

/* Landing template */
.ye-landing { padding: 0; }
.ye-landing-content > *:first-child { margin-top: 0; }

/* Contact template */
.ye-contact-grid { display:grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items:start; }
.ye-contact-info h2 { margin-bottom: 14px; }
.ye-office-cards { display:grid; grid-template-columns: 1fr 1fr; gap: 22px; margin: 30px 0; }
.ye-office-card { background:#fff; border:1px solid var(--ye-line-soft); border-radius: var(--ye-radius); padding: 26px; }
.ye-office-card h3 { font-size: 1.1rem; margin: 6px 0 10px; }
.ye-office-card address { font-style: normal; color: var(--ye-muted); line-height: 1.6; font-size: .95rem; }
.ye-office-card p { margin: 8px 0 0; font-size: .95rem; display:flex; align-items:center; gap: 8px; }
.ye-contact-methods { list-style:none; padding:0; margin: 24px 0 0; }
.ye-contact-methods li { display:flex; align-items:center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--ye-line-soft); }
.ye-contact-methods svg { color: var(--ye-teal); flex-shrink:0; }
.ye-contact-form { background: var(--ye-cream); border-radius: var(--ye-radius); padding: 38px; }

/* Page banner subtitle */
.ye-page-banner-sub { color: rgba(255,255,255,.82); margin-top: 12px; max-width: 640px; position: relative; font-size: 1.05rem; }

/* Mobile drawer contact + submenu toggles */
.ye-mobile-contact { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--ye-line-soft); display:flex; flex-direction:column; gap: 12px; }
.ye-mobile-contact a { display:flex; align-items:center; gap: 10px; color: var(--ye-teal-dark); font-weight:600; }
.ye-submenu-toggle { position:absolute; right: 0; top: 6px; width: 38px; height: 38px; background: var(--ye-cream); border:0; border-radius: 8px; font-size: 1.3rem; line-height:1; color: var(--ye-teal-dark); cursor:pointer; }
.ye-mobile-menu .menu-item-has-children,
.ye-mobile-menu .page_item_has_children { position: relative; }
.ye-mobile-menu .sub-menu,
.ye-mobile-menu .children { display:none; }
.ye-mobile-menu .submenu-open > .sub-menu,
.ye-mobile-menu .submenu-open > .children { display:block; }

/* Comments */
.ye-comments { margin-top: 56px; }
.ye-comments-title, .ye-comment-reply-title { font-size: 1.5rem; margin-bottom: 24px; }
.ye-comment-list { list-style:none; margin: 0 0 40px; padding: 0; }
.ye-comment-list ol.children { list-style:none; margin-left: 28px; padding-top: 20px; }
.ye-comment-list .comment-body { background: var(--ye-cream); border-radius: var(--ye-radius-sm); padding: 22px 24px; margin-bottom: 20px; }
.ye-comment-list .comment-author { display:flex; align-items:center; gap: 12px; font-weight: 700; margin-bottom: 10px; }
.ye-comment-list .comment-author img { border-radius: 50%; }
.ye-comment-list .comment-meta { font-size: .82rem; color: var(--ye-muted); }
.ye-comment-form { display:grid; gap: 16px; }
.ye-comment-form input[type="text"], .ye-comment-form input[type="email"], .ye-comment-form input[type="url"], .ye-comment-form textarea { width: 100%; }

/* Page wrapper / frame layout hooks */
.layout-boxed .ye-page-wrap, .layout-frame .ye-page-wrap { max-width: 1320px; margin: 0 auto; background: var(--ye-paper); }
.layout-frame .ye-page-wrap { margin: 14px auto; box-shadow: var(--ye-shadow); border-radius: var(--ye-radius); overflow: hidden; }
.ye-nav-open { overflow: hidden; }

@media (max-width: 880px) {
	.ye-contact-grid { grid-template-columns: 1fr; gap: 36px; }
	.ye-office-cards { grid-template-columns: 1fr; }
	.ye-news-head { flex-direction: column; align-items: flex-start; }
}

/* =============================================================
   Block / imported-content styling (Gutenberg)
   ============================================================= */
.ye-content table { border-collapse: collapse; width: 100%; margin: 1.4em 0; font-size: .96rem; }
.ye-content .wp-block-table { margin: 1.6em 0; overflow-x: auto; }
.ye-content .wp-block-table table { margin: 0; }
.ye-content th, .ye-content td { padding: 13px 16px; text-align: left; vertical-align: top; border: 1px solid var(--ye-line-soft); }
.ye-content thead th { background: var(--ye-teal-deep); color: #fff; font-family: var(--ye-font-head); font-weight: 600; letter-spacing: .01em; border-color: var(--ye-teal-deep); }
.ye-content tbody tr:nth-child(odd) { background: var(--ye-cream); }
.ye-content .wp-block-table.is-style-stripes td { border-color: #fff; }
.ye-content .wp-block-table.is-style-stripes tbody tr { border-bottom: 0; }
.ye-content td:first-child { font-weight: 600; color: var(--ye-ink); white-space: nowrap; }
.ye-content .wp-block-table.is-style-stripes td:first-child { color: var(--ye-teal-dark); }

.ye-content .wp-block-columns { gap: 8px 40px; margin: 1.2em 0; }
.ye-content .wp-block-column ul { margin-top: 0; }
.ye-content ul.wp-block-list { padding-left: 0; list-style: none; }
.ye-content ul.wp-block-list li { position: relative; padding: 7px 0 7px 28px; border-bottom: 1px solid var(--ye-line-soft); margin: 0; }
.ye-content ul.wp-block-list li::before { content: ""; position: absolute; left: 2px; top: 15px; width: 9px; height: 9px; border-radius: 2px; background: var(--ye-teal); transform: rotate(45deg); }

.ye-content .wp-block-group.has-background { margin: 1.6em 0; }
.ye-content .wp-block-group h3 { margin-top: 0; }
.ye-content .wp-block-quote { border-left: 4px solid var(--ye-gold); padding: 4px 0 4px 1.4em; font-family: var(--ye-font-head); font-style: italic; color: var(--ye-ink); }
.ye-content .wp-block-quote cite { display:block; margin-top: 8px; font-size: .85rem; font-style: normal; color: var(--ye-muted); }
.ye-content .wp-block-buttons { margin-top: 6px; }
.ye-content .wp-block-separator { border: 0; border-top: 1px solid var(--ye-line-soft); margin: 2em 0; }
.ye-content h2 { margin-top: 1.5em; }
.ye-content h3 { margin-top: 1.3em; }

@media (max-width: 700px) {
	.ye-content td:first-child { white-space: normal; }
	.ye-content .wp-block-columns { gap: 0 24px; }
}

/* Imported "facts & figures" band + related links */
.ye-content .ye-fact-band { text-align: center; }
.ye-content .ye-fact-band .wp-block-columns { gap: 16px 24px; margin: 0; }
.ye-content .ye-fact-num { font-size: clamp(1.8rem, 3.4vw, 2.5rem); color: var(--ye-gold); margin: 0 0 4px; line-height: 1; }
.ye-content .ye-fact-label { font-size: .8rem; letter-spacing: .04em; color: #cfe9e8; margin: 0; }
.ye-content .ye-related-link { margin: 1.2em 0; }
.ye-content .ye-related-link a { display: inline-block; color: var(--ye-teal-dark); border-bottom: 2px solid var(--ye-gold); padding-bottom: 2px; }
.ye-content .ye-related-link a:hover { color: var(--ye-orange); }

/* Icon-led content cards & step grids (imported pages) */
.ye-content .ye-icon-card { height: 100%; }
.ye-content .ye-icon-card .ye-ico { font-size: 2rem; line-height: 1; margin: 0 0 10px; }
.ye-content .ye-icon-card h3 { margin: 0 0 8px; font-size: 1.1rem; }
.ye-content .ye-icon-card p:last-child { margin-bottom: 0; }
.ye-content .ye-step-card { position: relative; }
.ye-content .ye-step-card .ye-step-no { position: absolute; top: 16px; right: 18px; font-family: var(--ye-font-head); font-size: 1.5rem; color: rgba(6,148,148,.18); font-weight: 600; }
.ye-content h2 .ye-h-ico, .ye-content h3 .ye-h-ico { margin-right: .35em; }
.ye-content .wp-block-columns { align-items: stretch; }
