/* ============================================
   CW Featured Image — alignment fix
   ============================================
   The widget's Alignment control applies text-align to the wrapper, which
   only centers inline/inline-block elements. Elementor's default CSS makes
   <img> display:block, so text-align had no effect inside Grid containers
   (Flex containers were masking the issue via parent alignment).
   This rule restores inline-block on our widget's image so text-align works
   in any container type.
   ============================================ */

.elementor-widget-cw-featured-image img {
	display: inline-block;
	max-width: 100%;
	height: auto;
	vertical-align: top;
}

.elementor-widget-cw-featured-image figure.wp-caption {
	display: inline-block;
	max-width: 100%;
	margin: 0;
}

/* ============================================
   CW Navigation Menu
   ============================================ */

.cw-nav-wrapper {
	position: relative;
}

.cw-nav-menu {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
}

.cw-nav-layout-horizontal .cw-nav-menu {
	flex-direction: row;
	align-items: center;
}

.cw-nav-layout-vertical .cw-nav-menu {
	flex-direction: column;
}

.cw-nav-menu li {
	position: relative;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cw-nav-menu a {
	display: block;
	text-decoration: none;
	color: inherit;
	transition: background-color 0.2s ease, color 0.2s ease;
}

/* Submenu */
.cw-nav-menu .sub-menu {
	list-style: none;
	margin: 0;
	padding: 0;
	display: none;
	background: #fff;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.cw-nav-layout-horizontal .cw-nav-menu .sub-menu {
	position: absolute;
	top: 100%;
	left: 0;
	z-index: 1000;
	min-width: 220px;
}

.cw-nav-layout-horizontal .cw-nav-menu .sub-menu .sub-menu {
	top: 0;
	left: 100%;
}

.cw-nav-layout-vertical .cw-nav-menu .sub-menu {
	position: static;
	box-shadow: none;
	padding-left: 1em;
}

.cw-nav-menu li:hover > .sub-menu,
.cw-nav-menu li:focus-within > .sub-menu,
.cw-nav-menu li.cw-open > .sub-menu {
	display: block;
}

/* Submenu indicator */
.cw-nav-has-indicator .menu-item-has-children > a::after {
	content: "▾";
	display: inline-block;
	margin-left: 6px;
	font-size: 0.75em;
	transform: translateY(-1px);
	/* line-height 0 keeps a resized arrow from growing the line box, which
	   pushed items with submenus below items without them (2.9.1). */
	line-height: 0;
	vertical-align: middle;
}

/* Nested items: arrow pinned right and centred vertically. The text and the
   arrow are the two flex items; space-between pushes the arrow to the edge.
   (2.9.2 used margin-left: auto, but the widget's Indicator Spacing control
   writes margin-left with a higher-specificity selector, so the arrow just
   followed the text. Fixed 2.9.4.) */
.cw-nav-layout-horizontal.cw-nav-has-indicator .menu-item-has-children .menu-item-has-children > a {
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.cw-nav-layout-horizontal.cw-nav-has-indicator .menu-item-has-children .menu-item-has-children > a::after {
	content: "▸";
	padding-left: 10px;
}

/* Submenu text alignment (Style -> Submenu -> Text Alignment, 2.9.3).
   Class is set on the widget element by Elementor's prefix_class. */
.cw-nav-sub-align-center .cw-nav-menu .sub-menu a {
	text-align: center;
}

.cw-nav-sub-align-right .cw-nav-menu .sub-menu a {
	text-align: right;
}

.cw-nav-sub-align-center .cw-nav-layout-horizontal.cw-nav-has-indicator .sub-menu .menu-item-has-children > a {
	justify-content: center;
}

.cw-nav-sub-align-right .cw-nav-layout-horizontal.cw-nav-has-indicator .sub-menu .menu-item-has-children > a {
	justify-content: flex-end;
}

/* Hamburger toggle - hidden by default, shown via breakpoint class */
.cw-nav-toggle {
	display: none;
	background: transparent;
	border: 0;
	padding: 8px 12px;
	cursor: pointer;
	font-size: 28px;
	line-height: 1;
	color: inherit;
}

.cw-nav-toggle:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

/* Mobile breakpoints */
@media (max-width: 767px) {
	.cw-nav-mobile-mobile .cw-nav-toggle {
		display: inline-block;
	}
	.cw-nav-mobile-mobile .cw-nav-menu {
		display: none;
		flex-direction: column;
		width: 100%;
	}
	.cw-nav-mobile-mobile.cw-nav-open .cw-nav-menu {
		display: flex;
	}
	.cw-nav-mobile-mobile .cw-nav-menu .sub-menu {
		position: static;
		box-shadow: none;
		padding-left: 1em;
	}
	.cw-nav-mobile-mobile .cw-nav-menu li:hover > .sub-menu,
	.cw-nav-mobile-mobile .cw-nav-menu li:focus-within > .sub-menu {
		display: none;
	}
	.cw-nav-mobile-mobile .cw-nav-menu li.cw-open > .sub-menu {
		display: block;
	}
}

@media (max-width: 1024px) {
	.cw-nav-mobile-tablet .cw-nav-toggle {
		display: inline-block;
	}
	.cw-nav-mobile-tablet .cw-nav-menu {
		display: none;
		flex-direction: column;
		width: 100%;
	}
	.cw-nav-mobile-tablet.cw-nav-open .cw-nav-menu {
		display: flex;
	}
	.cw-nav-mobile-tablet .cw-nav-menu .sub-menu {
		position: static;
		box-shadow: none;
		padding-left: 1em;
	}
	.cw-nav-mobile-tablet .cw-nav-menu li:hover > .sub-menu,
	.cw-nav-mobile-tablet .cw-nav-menu li:focus-within > .sub-menu {
		display: none;
	}
	.cw-nav-mobile-tablet .cw-nav-menu li.cw-open > .sub-menu {
		display: block;
	}
}


/* ============================================
   CW Post Content (Single templates, 2.8.0)
   ============================================
   Classic-editor post HTML assumes theme styles for floats, embeds and
   images. Hello Elementor ships almost none, so give the article body the
   basics here. Colors and fonts stay with the theme / widget controls. */

.cw-post-content::after { content: ""; display: table; clear: both; }
.cw-post-content img { max-width: 100%; height: auto; }
.cw-post-content .alignleft { float: left; margin: .3em 1.5em 1em 0; }
.cw-post-content .alignright { float: right; margin: .3em 0 1em 1.5em; }
.cw-post-content .aligncenter { display: block; margin: 1em auto; }
.cw-post-content iframe,
.cw-post-content video { max-width: 100%; }
.cw-post-content blockquote { margin: 1.5em 0; padding: .2em 0 .2em 1.25em; border-left: 4px solid currentColor; }
.cw-post-content--empty,
.cw-post-comments--placeholder { padding: 2em; border: 2px dashed #ccd; text-align: center; color: #667; }
.cw-page-links { margin-top: 2em; }

@media (max-width: 600px) {
	.cw-post-content .alignleft,
	.cw-post-content .alignright { float: none; display: block; margin: 1em auto; }
}

/* CW Post Meta */
.cw-post-meta__sep { opacity: .6; margin: 0 .25em; }
