/*
Theme Name: Twenty Twenty-Five
Theme URI: https://wordpress.org/themes/twentytwentyfive/
Author: the WordPress team
Author URI: https://wordpress.org
Description: Twenty Twenty-Five emphasizes simplicity and adaptability. It offers flexible design options, supported by a variety of patterns for different page types, such as services and landing pages, making it ideal for building personal blogs, professional portfolios, online magazines, or business websites. Its templates cater to various blog styles, from text-focused to image-heavy layouts. Additionally, it supports international typography and diverse color palettes, ensuring accessibility and customization for users worldwide.
Requires at least: 6.7
Tested up to: 6.9
Requires PHP: 7.2
Version: 1.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: twentytwentyfive
Tags: one-column, custom-colors, custom-menu, custom-logo, editor-style, featured-images, full-site-editing, block-patterns, rtl-language-support, sticky-post, threaded-comments, translation-ready, wide-blocks, block-styles, style-variations, accessibility-ready, blog, portfolio, news
*/

/*
 * IMPORTANT: This file is only served on the frontend when `SCRIPT_DEBUG` is enabled;
 * in most instances, the `style.min.css` file will be served. It is not recommended that you
 * use the Theme File Editor to modify this stylesheet. Instead, add the necessary style
 * overrides via "Additional CSS" in the Site Editor.
 */

/*
 * Link styles
 * https://github.com/WordPress/gutenberg/issues/42319
 */
a {
	text-decoration-thickness: 1px !important;
	text-underline-offset: .1em;
}

/* Focus styles */
:where(.wp-site-blocks *:focus) {
	outline-width: 2px;
	outline-style: solid;
}

/* Increase the bottom margin on submenus, so that the outline is visible. */
.wp-block-navigation .wp-block-navigation-submenu .wp-block-navigation-item:not(:last-child) {
	margin-bottom: 3px;
}

/* Increase the outline offset on the parent menu items, so that the outline does not touch the text. */
.wp-block-navigation .wp-block-navigation-item .wp-block-navigation-item__content {
	outline-offset: 4px;
}

/* Remove outline offset from the submenus, otherwise the outline is visible outside the submenu container. */
.wp-block-navigation .wp-block-navigation-item ul.wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	outline-offset: 0;
}

/*
 * Progressive enhancement to reduce widows and orphans
 * https://github.com/WordPress/gutenberg/issues/55190
 */
h1,
h2,
h3,
h4,
h5,
h6,
blockquote,
caption,
figcaption,
p {
	text-wrap: pretty;
}

/*
 * Change the position of the more block on the front, by making it a block level element.
 * https://github.com/WordPress/gutenberg/issues/65934
*/
.more-link {
	display: block;
}

/*
 * Prevents unnecessary scrollbars while handling long lines of preformatted text.
 * https://core.trac.wordpress.org/ticket/63875
 */
:where(pre) {
	overflow-x: auto;
}

/* --- MAIN LAYOUT --- */
.ecf-landing-wrapper {
	width: 100%;
	height: calc(100vh - 160px);
	display: flex;
	flex-direction: column;
	background: #f4f7f8;
	font-family: "Inter", "Roboto", "Helvetica Neue", sans-serif;

	/* Removes the gap without over-correcting and bleeding into the header padding */
	margin-top: 0 !important;
	overflow: hidden;
}

.ecf-map-section {
	flex-grow: 1;
	width: 100%;
	position: relative;
	overflow: hidden;
}

/* --- MAP TOOLTIP (MINIMAL) --- */
.ecf-tooltip {
	position: absolute;
	background: #ffffff;
	border-radius: 4px;
	padding: 0;
	box-shadow: 0 4px 15px rgba(5, 80, 104, 0.1);
	pointer-events: none;
	opacity: 0;
	transition: opacity 0.2s ease, transform 0.2s ease;
	z-index: 9999999;
	border: 1px solid #e2e8f0;
	width: 260px;
}

/* Override global category tag for detail state */
.category-tag {
	padding: 2px 6px;
	border-radius: 4px;
	font-weight: 700;
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	display: inline-block;
}

/* Map Dot Hover */
.ecf-map-dot {
	transition: filter 0.2s ease, transform 0.2s ease, stroke 0.2s ease, stroke-width 0.2s ease;
	transform-origin: center center;
	cursor: pointer;
}
.ecf-map-dot:hover, .ecf-map-dot.active {
	filter: drop-shadow(0 0 4px rgba(0, 146, 170, 0.3));
}

/* --- INDEX SECTION (Right Rail) --- */
.ecf-carousel-section {
	height: 20%;
	min-height: 180px;
	width: 100%;
	background: #055068;
	position: relative;
	box-shadow: -4px 0 15px rgba(0,0,0,0.1);
	border-top: none;
	padding-top: 60px;
	box-sizing: border-box;
}

.carousel-viewport {
	width: 100%;
	height: 100%;
	overflow: hidden;
}

.carousel-track {
	display: flex;
	height: 100%;
	will-change: transform;
}

.carousel-item {
	flex: 0 0 25%;
	height: 100%;
	position: relative;
	cursor: pointer;
	box-sizing: border-box;
	background: transparent;
	border-bottom: 1px solid rgba(255,255,255,0.08);
	transition: background 0.2s ease;
}

.carousel-item:hover {
	background: rgba(255,255,255,0.03);
}

.carousel-index-card {
	padding: 24px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	height: 100%;
	box-sizing: border-box;
	transition: transform 0.2s ease;
}
.carousel-item:hover .carousel-index-card {
    transform: translateX(4px);
}

/* Responsive Index */
@media (max-width: 900px) {
	.carousel-item { flex: 0 0 50%; }
}
@media (max-width: 600px) {
	.carousel-item { flex: 0 0 100%; }
}

/* Carousel Buttons */
.carousel-btn {
	position: absolute;
	top: calc(50% + 30px);
	transform: translateY(-50%);
	background: rgba(255, 255, 255, 0.95);
	border: none;
	width: 45px;
	height: 45px;
	border-radius: 50%;
	cursor: pointer;
	z-index: 10;
	font-size: 20px;
	color: #055068;
	box-shadow: 0 6px 15px rgba(5, 80, 104, 0.2);
	transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.carousel-btn:hover {
	background: white;
	color: #0092aa;
	transform: translateY(-50%) scale(1.08);
	box-shadow: 0 8px 20px rgba(5, 80, 104, 0.3);
}

.btn-prev {
	left: 15px;
}

.btn-next {
	right: 15px;
}

/* Hide buttons until hover to cleanly reveal underlying images */
.ecf-carousel-section .carousel-btn {
	opacity: 0;
	pointer-events: none;
}

.ecf-carousel-section:hover .carousel-btn {
	opacity: 1;
	pointer-events: auto;
}

/* Carousel Sponsor Overlay Styling */
.carousel-sponsor {
	margin-top: 12px;
	padding-top: 8px;
	border-top: 1px solid rgba(255, 255, 255, 0.2);
	display: flex;
	align-items: center;
	justify-content: flex-start;
}



/* --- RESPONSIVE SPLIT DESKTOP LAYOUT --- */
@media (min-width: 900px) {
	.ecf-landing-wrapper {
		flex-direction: row;
	}

	#ecf-map {
		flex: 0 0 70%;
		width: 70%;
		height: 100%;
	}

	/* Shrink the D3 tooltips slightly since the map canvas width is narrower */
	.ecf-tooltip {
		max-width: 380px;
	}

	.ecf-carousel-section {
		flex: 0 0 30%;
		width: 30%;
		height: 100%;
		min-height: unset;
		box-shadow: -10px 0 30px rgba(5, 80, 104, 0.2);
	}

	.carousel-track {
		flex-direction: column;
	}

	.carousel-item {
		flex: 0 0 33.333%;
		/* 3 items vertically */
		width: 100%;
		height: 33.333%;
		padding-right: 0;
		padding-bottom: 2px;
		/* Gap for vertical gradient */
	}

	/* Rotate Previous arrow so it points UP */
	.btn-prev {
		left: auto;
		right: 20px;
		top: 25px;
		transform: rotate(90deg);
		box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
	}

	.carousel-btn:hover.btn-prev {
		transform: rotate(90deg) scale(1.08);
		/* Re-assert vertical hover mapping */
	}

	/* Rotate Next arrow so it points DOWN */
	.btn-next {
		left: auto;
		right: 20px;
		bottom: 25px;
		top: auto;
		transform: rotate(90deg);
		box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
	}

	.carousel-btn:hover.btn-next {
		transform: rotate(90deg) scale(1.08);
		/* Re-assert vertical hover mapping */
	}
}

/* --- NATIVE HEADER NAVIGATION PILLS --- */
.ecf-dynamic-nav .wp-block-navigation-item a,
.wp-block-navigation-item.ecf-dynamic-nav a {
	font-weight: 500;
	letter-spacing: 0.5px;
	text-transform: uppercase;
	font-size: 13px;
	padding: 6px 16px !important;
	border: 1.5px solid rgba(255,255,255,0.7) !important;
	border-radius: 30px;
	margin-left: 12px;
	transition: all 0.2s ease;
	text-decoration: none;
	display: inline-block;
	color: #ffffff;
}

.ecf-dynamic-nav .wp-block-navigation-item a:hover,
.wp-block-navigation-item.ecf-dynamic-nav a:hover {
	background-color: rgba(255, 255, 255, 0.1);
	border-color: #ffffff !important;
}

.ecf-dynamic-nav .wp-block-navigation-item.current-menu-item a,
.wp-block-navigation-item.ecf-dynamic-nav.current-menu-item a {
	background-color: rgba(255, 255, 255, 0.2);
	border-color: #ffffff !important;
}

/* Site Logo */
.wp-block-site-logo a {
	transition: opacity 0.3s ease;
	display: inline-block;
}

.wp-block-site-logo a:hover {
	opacity: 0.8;
}

/* --- DETAIL PANEL (Shared for Map + Right Rail) --- */
.ecf-detail-panel {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: #ffffff;
	z-index: 100;
	transform: translateX(100%);
	transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
	overflow-y: auto;
	display: flex;
	flex-direction: column;
}
.ecf-detail-panel.open {
	transform: translateX(0);
}

.detail-hero-image {
	width: 100%;
	height: 240px;
	object-fit: cover;
	display: block;
}

.detail-content {
	padding: 50px 40px;
	flex-grow: 1;
}

.detail-content h2 {
	margin: 0 0 15px 0;
	color: #055068;
	font-size: 24px;
	font-weight: 700;
	line-height: 1.2;
}

.detail-content p {
	font-size: 15px;
	line-height: 1.7;
	color: #334155;
}

.detail-back-btn {
	position: absolute;
	top: 15px;
	left: 15px;
	background: rgba(255,255,255,0.95);
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
	border: 1px solid #e2e8f0;
	padding: 8px 16px;
	border-radius: 50px;
	font-size: 11px;
	font-weight: 600;
	color: #055068;
	cursor: pointer;
	display: flex;
	align-items: center;
	gap: 6px;
	box-shadow: 0 4px 15px rgba(0,0,0,0.08);
	transition: all 0.2s ease;
	text-transform: uppercase;
	letter-spacing: 0.5px;
}
.detail-back-btn:hover {
	background: #ffffff;
	transform: translateY(-2px);
}

.detail-sponsor {
	padding: 0;
	background: transparent;
	border-top: none;
	text-align: left;
}
.detail-sponsor img {
	max-height: 28px;
	width: auto;
}

.map-microcopy {
	position: absolute;
	bottom: 30px;
	left: 40px;
	z-index: 10;
	font-size: 13px;
	font-weight: 500;
	color: #055068;
	pointer-events: none;
	background: rgba(255, 255, 255, 0.85);
	padding: 8px 16px;
	border-radius: 8px;
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
	box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
	border: 1px solid rgba(255, 255, 255, 1);
	display: flex;
	align-items: center;
}

@media (max-width: 900px) {
	.map-microcopy {
		bottom: 15px;
		left: 50%;
		transform: translateX(-50%);
		font-size: 11px;
		padding: 6px 12px;
		white-space: nowrap;
	}
}