/**
 * Prolific Mega Menu - Public Styles (Layout Only)
 *
 * This CSS provides LAYOUT ONLY - no colors, typography, or decorative styles.
 * Themes are responsible for all visual styling.
 *
 * BEM naming convention: .jmm-block__element--modifier
 *
 * @package ProlificMegaMenu
 * @since 2.0.0
 *
 * ============================================================================
 * THEME INTEGRATION
 * ============================================================================
 * Copy the following CSS custom properties to your theme and customize:
 *
 * :root {
 *   --jmm-color-primary: #0073aa;
 *   --jmm-color-primary-hover: #005a87;
 *   --jmm-color-text: #333333;
 *   --jmm-color-text-light: #666666;
 *   --jmm-color-bg: #ffffff;
 *   --jmm-color-bg-alt: #f5f5f5;
 *   --jmm-color-border: #e0e0e0;
 *   --jmm-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
 *   --jmm-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
 *   --jmm-shadow-lg: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
 *   --jmm-font-size-sm: 0.875rem;
 *   --jmm-font-size-base: 1rem;
 *   --jmm-font-size-lg: 1.125rem;
 *   --jmm-font-weight-normal: 400;
 *   --jmm-font-weight-medium: 500;
 *   --jmm-font-weight-bold: 600;
 *   --jmm-border-radius: 4px;
 * }
 *
 * See public-theme-starter.css for a complete theming reference.
 * ============================================================================
 */

/* ==========================================================================
   CSS Custom Properties (Layout Only)
   ========================================================================== */

:root {
	/* Spacing */
	--jmm-spacing-xs: 0.25rem;
	--jmm-spacing-sm: 0.5rem;
	--jmm-spacing-md: 1rem;
	--jmm-spacing-lg: 1.5rem;
	--jmm-spacing-xl: 2rem;

	/* Animation Timing */
	--jmm-animation-duration: 200ms;
	--jmm-animation-easing: ease-out;

	/* Layout */
	--jmm-max-width: 1200px;
	--jmm-z-index-dropdown: 1000;
	--jmm-z-index-flyout: 1001;

	/* Panel Dimensions */
	--jmm-panel-width: auto;
	--jmm-panel-max-width: none;
}

/* Reduced motion preference */
@media (prefers-reduced-motion: reduce) {
	:root {
		--jmm-animation-duration: 0ms;
	}
}

/* ==========================================================================
   Base Menu Item Styles
   ========================================================================== */

.jmm-item {
	position: relative;
}

/* Menu item link styles */
.jmm-item__link {
	display: inline-flex;
	align-items: center;
	gap: var(--jmm-spacing-xs);
}

/* Menu item text wrapper */
.jmm-item__text {
	/* Inherits styling from parent link */
}

/* Chevron icon for items with children */
.jmm-item__chevron {
	flex-shrink: 0;
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

/* Rotate chevron when menu item is open/active */
.jmm-item.is-open > .jmm-item__link > .jmm-item__chevron,
.jmm-item--has-mega.is-open > .jmm-item__link > .jmm-item__chevron {
	transform: rotate(180deg);
}

/* Mega menu enabled items need relative positioning for dropdown */
.jmm-item--has-mega {
	position: relative;
}

/* Hide default WordPress submenu when mega menu is enabled */
.jmm-item--has-mega > .sub-menu {
	display: none !important;
	visibility: hidden !important;
}

/* Override theme navigation bullet points for mega menu items */
.jmm-item--has-mega,
.jmm-item--has-mega::before,
.jmm-item--has-mega::marker {
	list-style: none !important;
	list-style-type: none !important;
}

/* Ensure mega menu panel wrapper is properly positioned on mobile */
@media (max-width: 768px) {
	.jmm-item--has-mega > .jmm-panel-wrapper {
		position: relative;
		top: auto;
		left: auto;
		width: 100%;
		opacity: 1;
		visibility: visible;
		pointer-events: auto;
		margin-top: 0;
	}

	/* Hide the panel wrapper when menu item is not open */
	.jmm-item--has-mega:not(.is-open) > .jmm-panel-wrapper {
		display: none;
	}
}

/* Panel wrapper provides positioning context for mega panels */
.jmm-panel-wrapper {
	/*
	 * Smart positioning: Panel alignment is calculated by JavaScript.
	 * JS sets --jmm-panel-left to position the panel optimally.
	 *
	 * Width fills up to 1100px, with 20px edge margin on small screens.
	 */
	position: absolute;
	top: 100%;
	margin-top: 10px;
	left: var(--jmm-panel-left, 50%);
	transform: translateX(var(--jmm-panel-translate, -50%));
	width: 1100px;
	max-width: calc(100vw - 40px);
	z-index: var(--jmm-z-index-dropdown, 9999);
	/* Hidden by default */
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity var(--jmm-animation-duration, 200ms) var(--jmm-animation-easing, ease),
	            visibility var(--jmm-animation-duration, 200ms) var(--jmm-animation-easing, ease);
}

/* Show panel wrapper when menu item is open */
.jmm-item--has-mega.is-open > .jmm-panel-wrapper {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}

/* Alignment modifiers set by JavaScript */
.jmm-panel-wrapper--align-left {
	--jmm-panel-translate: 0;
}

.jmm-panel-wrapper--align-right {
	--jmm-panel-translate: -100%;
}

.jmm-panel-wrapper--align-center {
	--jmm-panel-translate: -50%;
}

/* Full-width viewport mode - uses fixed positioning */
.jmm-item--has-mega.jmm-item--full-width > .jmm-panel-wrapper {
	position: fixed;
	left: 0;
	right: 0;
	width: 100vw;
	max-width: none;
	transform: none;
}

.jmm-item--has-mega > .jmm-item__link {
	display: flex;
	align-items: center;
	gap: var(--jmm-spacing-xs);
}

.jmm-item__toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	background: none;
	border: none;
	cursor: pointer;
}

.jmm-icon--chevron {
	width: 1em;
	height: 1em;
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-is-active .jmm-icon--chevron {
	transform: rotate(180deg);
}

/* ==========================================================================
   Panel Base Styles
   ========================================================================== */

.jmm-panel {
	position: relative;
	min-width: 280px;
	transform: translateY(-10px);
	transition-property: transform;
	transition-duration: var(--jmm-animation-duration, 200ms);
	transition-timing-function: var(--jmm-animation-easing, ease);
}

/* Panel transform when parent wrapper is visible */
.jmm-item--has-mega.is-open > .jmm-panel-wrapper .jmm-panel {
	transform: translateY(0);
}

.jmm-panel__inner {
	max-width: var(--jmm-max-width);
	padding: var(--jmm-spacing-xl);
}

/* Animation states */
.jmm-panel.jmm-is-animating {
	pointer-events: none;
}

.jmm-panel.jmm-is-entering {
	animation: jmm-fade-in var(--jmm-animation-duration) var(--jmm-animation-easing) forwards;
}

.jmm-panel.jmm-is-leaving {
	animation: jmm-fade-out var(--jmm-animation-duration) var(--jmm-animation-easing) forwards;
}

@keyframes jmm-fade-in {
	from {
		opacity: 0;
		transform: translateY(-10px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes jmm-fade-out {
	from {
		opacity: 1;
		transform: translateY(0);
	}
	to {
		opacity: 0;
		transform: translateY(-10px);
	}
}

/* ==========================================================================
   Panel Grid Pattern
   ========================================================================== */

.jmm-panel--panel-grid .jmm-panel__grid {
	display: grid;
	grid-template-columns: repeat(var(--jmm-columns, 3), 1fr);
	gap: var(--jmm-spacing-lg) var(--jmm-spacing-xl);
}

.jmm-panel--has-featured .jmm-panel__inner {
	display: grid;
	grid-template-columns: 2fr 1fr;
	gap: var(--jmm-spacing-xl);
}

.jmm-panel--featured-left .jmm-panel__inner {
	grid-template-columns: 1fr 2fr;
}

.jmm-panel__featured {
	padding: var(--jmm-spacing-lg);
}

/* ==========================================================================
   Tabs Pattern (panel-tabbed)
   ========================================================================== */

.jmm-tabs {
	display: flex;
	gap: 0;
}

/* Tab positions */
.jmm-tabs--position-left {
	flex-direction: row;
}

.jmm-tabs--position-right {
	flex-direction: row-reverse;
}

.jmm-tabs--position-top {
	flex-direction: column;
}

.jmm-tabs--position-bottom {
	flex-direction: column-reverse;
}

/* Tab list */
.jmm-tabs__list {
	display: flex;
	flex-shrink: 0;
	margin: 0;
	padding: 0;
	list-style: none;
}

.jmm-tabs--position-left .jmm-tabs__list,
.jmm-tabs--position-right .jmm-tabs__list {
	flex-direction: column;
	width: var(--jmm-tab-width, 200px);
	border-right-width: 1px;
	border-right-style: solid;
}

.jmm-tabs--position-right .jmm-tabs__list {
	border-right: none;
	border-left-width: 1px;
	border-left-style: solid;
}

.jmm-tabs--position-top .jmm-tabs__list,
.jmm-tabs--position-bottom .jmm-tabs__list {
	flex-direction: row;
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

.jmm-tabs--position-bottom .jmm-tabs__list {
	border-bottom: none;
	border-top-width: 1px;
	border-top-style: solid;
}

/* Individual tabs */
.jmm-tabs__tab {
	display: flex;
	align-items: center;
	gap: var(--jmm-spacing-sm);
	width: 100%;
	padding: var(--jmm-spacing-md) var(--jmm-spacing-lg);
	border: none;
	text-align: left;
	cursor: pointer;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-tabs__tab-icon {
	flex-shrink: 0;
	width: 1.25em;
	height: 1.25em;
}

/* Tab panels */
.jmm-tabs__panels {
	flex: 1;
	min-width: 0;
}

.jmm-tabs__panel {
	padding: var(--jmm-spacing-lg);
}

.jmm-tabs__panel[hidden] {
	display: none;
}

/* ==========================================================================
   Split Panel Pattern (panel-split)
   ========================================================================== */

.jmm-split {
	display: flex;
	min-height: 300px;
}

.jmm-split__nav {
	flex-shrink: 0;
	width: var(--jmm-split-ratio, 30%);
	border-right-width: 1px;
	border-right-style: solid;
}

.jmm-split__categories {
	margin: 0;
	padding: 0;
	list-style: none;
}

.jmm-split__category {
	display: block;
}

.jmm-split__category-link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: var(--jmm-spacing-md) var(--jmm-spacing-lg);
	text-decoration: none;
	cursor: pointer;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-split__category-icon {
	flex-shrink: 0;
	width: 1.25em;
	height: 1.25em;
	margin-right: var(--jmm-spacing-sm);
}

.jmm-split__category-text {
	flex: 1;
}

.jmm-split__category-arrow {
	flex-shrink: 0;
	width: 0;
	height: 0;
	border-top: 5px solid transparent;
	border-bottom: 5px solid transparent;
	border-left-width: 5px;
	border-left-style: solid;
	opacity: 0;
	transition: opacity var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-split__category--active .jmm-split__category-arrow {
	opacity: 1;
}

.jmm-split__preview {
	flex: 1;
	min-width: 0;
	padding: var(--jmm-spacing-lg);
}

.jmm-split__content {
	display: none;
}

.jmm-split__content--active {
	display: block;
}

.jmm-split__content[hidden] {
	display: none;
}

.jmm-split__heading {
	margin: 0 0 var(--jmm-spacing-md);
}

.jmm-split__links {
	margin: 0;
	padding: 0;
	list-style: none;
}

.jmm-split__link-item {
	margin-bottom: var(--jmm-spacing-sm);
}

.jmm-split__link {
	display: block;
	padding: var(--jmm-spacing-sm) 0;
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

/* Item preview (for items without children) */
.jmm-split__item-preview {
	display: flex;
	flex-direction: column;
	justify-content: center;
	height: 100%;
	padding: var(--jmm-spacing-lg);
}

.jmm-split__item-title {
	margin: 0 0 var(--jmm-spacing-md);
}

.jmm-split__item-description {
	margin: 0 0 var(--jmm-spacing-lg);
}

.jmm-split__item-cta {
	display: inline-flex;
	align-items: center;
	gap: var(--jmm-spacing-sm);
	padding: var(--jmm-spacing-sm) var(--jmm-spacing-lg);
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
	width: fit-content;
}

.jmm-split__item-arrow {
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-split__item-cta:hover .jmm-split__item-arrow {
	transform: translateX(4px);
}

/* ==========================================================================
   Flyout Pattern (cascading menus)
   ========================================================================== */

.jmm-flyout {
	margin: 0;
	padding: var(--jmm-spacing-sm) 0;
	list-style: none;
	min-width: 200px;
}

.jmm-flyout__item {
	position: relative;
}

.jmm-flyout__link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--jmm-spacing-md);
	padding: var(--jmm-spacing-sm) var(--jmm-spacing-lg);
	text-decoration: none;
	white-space: nowrap;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-flyout__link-text {
	flex: 1;
}

.jmm-flyout__link-icon {
	flex-shrink: 0;
	width: 1.25em;
	height: 1.25em;
	margin-right: var(--jmm-spacing-sm);
}

.jmm-flyout__arrow {
	flex-shrink: 0;
	width: 0;
	height: 0;
	border-top: 4px solid transparent;
	border-bottom: 4px solid transparent;
	border-left-width: 4px;
	border-left-style: solid;
}

/* Submenu */
.jmm-flyout__submenu {
	position: absolute;
	top: 0;
	left: 100%;
	z-index: var(--jmm-z-index-flyout);
	margin: 0;
	padding: var(--jmm-spacing-sm) 0;
	list-style: none;
	min-width: 200px;
	opacity: 0;
	visibility: hidden;
	transform: translateX(-10px);
	transition: opacity var(--jmm-animation-duration) var(--jmm-animation-easing),
	            visibility var(--jmm-animation-duration) var(--jmm-animation-easing),
	            transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-flyout__item--open > .jmm-flyout__submenu {
	opacity: 1;
	visibility: visible;
	transform: translateX(0);
}

/* Left direction */
.jmm-flyout--direction-left .jmm-flyout__submenu,
.jmm-flyout__submenu--left {
	left: auto;
	right: 100%;
	transform: translateX(10px);
}

.jmm-flyout--direction-left .jmm-flyout__item--open > .jmm-flyout__submenu,
.jmm-flyout__item--open > .jmm-flyout__submenu--left {
	transform: translateX(0);
}

.jmm-flyout--direction-left .jmm-flyout__arrow {
	border-left: none;
	border-right-width: 4px;
	border-right-style: solid;
}

/* Animation variants */
.jmm-flyout--animation-fade .jmm-flyout__submenu {
	transform: none;
}

.jmm-flyout--animation-none .jmm-flyout__submenu {
	transition: none;
}

/* ==========================================================================
   Accordion Pattern
   ========================================================================== */

.jmm-accordion {
	border-width: 1px;
	border-style: solid;
	overflow: hidden;
}

.jmm-accordion__item {
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

.jmm-accordion__item:last-child {
	border-bottom: none;
}

.jmm-accordion__header {
	display: block;
	width: 100%;
}

.jmm-accordion__toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: var(--jmm-spacing-md) var(--jmm-spacing-lg);
	border: none;
	text-align: left;
	cursor: pointer;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-accordion__title {
	flex: 1;
}

.jmm-accordion__icon {
	flex-shrink: 0;
	width: 1em;
	height: 1em;
	margin-left: var(--jmm-spacing-md);
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

/* Default chevron icon using border trick */
.jmm-accordion__icon::before {
	content: '';
	display: block;
	width: 0.5em;
	height: 0.5em;
	border-right-width: 2px;
	border-right-style: solid;
	border-bottom-width: 2px;
	border-bottom-style: solid;
	transform: rotate(45deg);
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-accordion__item--expanded .jmm-accordion__icon::before {
	transform: rotate(-135deg);
}

.jmm-accordion__content {
	padding: var(--jmm-spacing-lg);
}

.jmm-accordion__content[hidden] {
	display: none;
}

/* Accordion with link (non-expandable items) */
.jmm-accordion__link {
	display: block;
	padding: var(--jmm-spacing-md) var(--jmm-spacing-lg);
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

/* Rich accordion content */
.jmm-accordion--rich .jmm-accordion__content {
	display: flex;
	flex-direction: column;
	gap: var(--jmm-spacing-lg);
}

.jmm-accordion--rich .jmm-accordion__links {
	flex: 1;
}

.jmm-accordion__rich-content {
	padding-top: var(--jmm-spacing-md);
	border-top-width: 1px;
	border-top-style: solid;
}

/* ==========================================================================
   Links Content Type
   ========================================================================== */

.jmm-links {
	margin: 0;
	padding: 0;
	list-style: none;
}

.jmm-links--columns-2 {
	column-count: 2;
	column-gap: var(--jmm-spacing-xl);
}

.jmm-links--columns-3 {
	column-count: 3;
	column-gap: var(--jmm-spacing-xl);
}

.jmm-links--columns-4 {
	column-count: 4;
	column-gap: var(--jmm-spacing-xl);
}

.jmm-links--layout-horizontal {
	display: flex;
	flex-wrap: wrap;
	gap: var(--jmm-spacing-md);
}

.jmm-links__item {
	break-inside: avoid;
	margin-bottom: var(--jmm-spacing-xs);
}

.jmm-links__link {
	display: flex;
	align-items: flex-start;
	gap: var(--jmm-spacing-sm);
	padding: var(--jmm-spacing-sm) 0;
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-links__icon {
	flex-shrink: 0;
	width: 1.25em;
	height: 1.25em;
	margin-top: 0.125em;
}

.jmm-links--icon-right .jmm-links__link {
	flex-direction: row-reverse;
}

.jmm-links__content {
	flex: 1;
	min-width: 0;
}

.jmm-links__title {
	display: block;
}

.jmm-links__description {
	display: block;
	margin-top: var(--jmm-spacing-xs);
}

.jmm-links__badge {
	display: inline-block;
	margin-left: var(--jmm-spacing-sm);
	padding: 0.125em 0.5em;
}

/* Link styles */
.jmm-links--style-minimal .jmm-links__link {
	padding: var(--jmm-spacing-xs) 0;
}

.jmm-links--style-cards .jmm-links__item {
	margin-bottom: var(--jmm-spacing-sm);
}

.jmm-links--style-cards .jmm-links__link {
	padding: var(--jmm-spacing-md);
}

/* Nested submenus in links */
.jmm-links__submenu {
	margin-top: var(--jmm-spacing-sm);
	margin-left: var(--jmm-spacing-lg);
	padding-left: var(--jmm-spacing-md);
	border-left-width: 2px;
	border-left-style: solid;
}

/* ==========================================================================
   Card Content Type
   ========================================================================== */

.jmm-card {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
}

/* Media positions */
.jmm-card--media-top {
	flex-direction: column;
}

.jmm-card--media-left {
	flex-direction: row;
}

.jmm-card--media-right {
	flex-direction: row-reverse;
}

.jmm-card--media-background {
	position: relative;
	min-height: 250px;
}

/* Card media */
.jmm-card__media {
	flex-shrink: 0;
	overflow: hidden;
}

.jmm-card--media-left .jmm-card__media,
.jmm-card--media-right .jmm-card__media {
	width: 40%;
}

.jmm-card--media-background .jmm-card__media {
	position: absolute;
	inset: 0;
}

.jmm-card__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.jmm-card__video {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Card overlay */
.jmm-card__overlay {
	position: absolute;
	inset: 0;
}

/* Card body */
.jmm-card__body {
	flex: 1;
	display: flex;
	flex-direction: column;
	padding: var(--jmm-spacing-lg);
}

.jmm-card--media-background .jmm-card__body {
	position: relative;
	z-index: 1;
	justify-content: flex-end;
}

.jmm-card__heading {
	margin: 0 0 var(--jmm-spacing-sm);
}

.jmm-card__description {
	margin: 0 0 var(--jmm-spacing-md);
}

/* Card CTA */
.jmm-card__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: var(--jmm-spacing-sm) var(--jmm-spacing-lg);
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-card__cta--outline {
	border-width: 2px;
	border-style: solid;
}

/* Card in accordion */
.jmm-card--in-accordion {
	margin-top: var(--jmm-spacing-md);
	border-width: 1px;
	border-style: solid;
}

/* ==========================================================================
   Responsive Styles
   ========================================================================== */

@media (max-width: 992px) {
	.jmm-tabs--position-left,
	.jmm-tabs--position-right {
		flex-direction: column;
	}

	.jmm-tabs--position-left .jmm-tabs__list,
	.jmm-tabs--position-right .jmm-tabs__list {
		flex-direction: row;
		width: 100%;
		overflow-x: auto;
		border-right: none;
		border-bottom-width: 1px;
		border-bottom-style: solid;
	}

	.jmm-tabs__tab {
		white-space: nowrap;
	}

	.jmm-split {
		flex-direction: column;
	}

	.jmm-split__nav {
		width: 100%;
		border-right: none;
		border-bottom-width: 1px;
		border-bottom-style: solid;
	}

	.jmm-split__categories {
		display: flex;
		overflow-x: auto;
	}

	.jmm-split__category {
		white-space: nowrap;
	}

	.jmm-links--columns-3,
	.jmm-links--columns-4 {
		column-count: 2;
	}
}

@media (max-width: 768px) {
	/* Default mobile behavior: bottom sheet style */
	.jmm-panel {
		position: fixed;
		inset: 0;
		top: auto;
		max-height: 80vh;
		overflow-y: auto;
		border-radius: var(--jmm-border-radius) var(--jmm-border-radius) 0 0;
		transform: translateY(100%);
	}

	.jmm-panel.jmm-is-open {
		transform: translateY(0);
	}

	/* Panel-links pattern: inline accordion style instead of bottom sheet */
	.jmm-panel.jmm-panel--links,
	.jmm-panel:has(.jmm-mega--panel-links) {
		position: relative;
		inset: auto;
		max-height: none;
		border-radius: 0;
		transform: none;
		overflow: visible;
	}

	.jmm-panel--panel-grid .jmm-panel__grid {
		grid-template-columns: 1fr;
	}

	.jmm-panel--has-featured .jmm-panel__inner {
		grid-template-columns: 1fr;
	}

	.jmm-links--columns-2,
	.jmm-links--columns-3,
	.jmm-links--columns-4 {
		column-count: 1;
	}

	.jmm-card--media-left,
	.jmm-card--media-right {
		flex-direction: column;
	}

	.jmm-card--media-left .jmm-card__media,
	.jmm-card--media-right .jmm-card__media {
		width: 100%;
	}
}

/* ==========================================================================
   Utility Classes
   ========================================================================== */

/* Screen reader only */
.jmm-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Focus visible */
.jmm-focus-visible:focus-visible {
	outline-width: 2px;
	outline-style: solid;
	outline-offset: 2px;
}

/* Mobile visibility */
.jmm-hide-on-mobile {
	display: block;
}

.jmm-show-on-mobile {
	display: none;
}

/* Desktop/Mobile pattern visibility */
.jmm-desktop-pattern {
	display: block;
}

.jmm-mobile-pattern {
	display: none;
}

@media (max-width: 768px) {
	.jmm-hide-on-mobile {
		display: none;
	}

	.jmm-show-on-mobile {
		display: block;
	}

	.jmm-desktop-pattern {
		display: none;
	}

	.jmm-mobile-pattern {
		display: block;
	}
}

/* ==========================================================================
   Mobile Accordion Styles
   ========================================================================== */

.jmm-mobile-accordion__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.jmm-mobile-accordion__item {
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

.jmm-mobile-accordion__item:last-child {
	border-bottom: none;
}

.jmm-mobile-accordion__link {
	display: block;
	padding: var(--jmm-spacing-md, 1rem) var(--jmm-spacing-lg, 1.5rem);
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-mobile-accordion__children {
	margin: 0;
	padding: 0 0 var(--jmm-spacing-sm, 0.5rem) 0;
	list-style: none;
}

.jmm-mobile-accordion__child {
	margin: 0;
}

.jmm-mobile-accordion__child-link {
	display: block;
	padding: var(--jmm-spacing-sm, 0.5rem) var(--jmm-spacing-lg, 1.5rem);
	padding-left: calc(var(--jmm-spacing-lg, 1.5rem) + var(--jmm-spacing-md, 1rem));
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

/* ==========================================================================
   Fullscreen Patterns
   ========================================================================== */

/* Fullscreen Base */
.jmm-fullscreen {
	position: fixed;
	inset: 0;
	z-index: var(--jmm-z-fullscreen, 99999);
	display: flex;
	align-items: center;
	justify-content: center;
	opacity: 0;
	visibility: hidden;
	transition:
		opacity var(--jmm-transition-duration) ease,
		visibility var(--jmm-transition-duration) ease;
}

.jmm-fullscreen.is-open {
	opacity: 1;
	visibility: visible;
}

.jmm-fullscreen--blur::before {
	content: "";
	position: absolute;
	inset: 0;
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
}

/* Fullscreen Close Button */
.jmm-fullscreen__close {
	position: absolute;
	top: var(--jmm-spacing-lg);
	right: var(--jmm-spacing-lg);
	width: 48px;
	height: 48px;
	display: flex;
	align-items: center;
	justify-content: center;
	border-width: 2px;
	border-style: solid;
	cursor: pointer;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
	z-index: 10;
}

/* Fullscreen Container */
.jmm-fullscreen__container {
	position: relative;
	width: 100%;
	max-width: var(--jmm-fullscreen-max-width, 1200px);
	padding: var(--jmm-spacing-xl);
	z-index: 1;
}

/* Fullscreen Grid */
.jmm-fullscreen__grid {
	display: grid;
	grid-template-columns: repeat(var(--jmm-fullscreen-columns, 4), 1fr);
	gap: var(--jmm-spacing-xl);
	list-style: none;
	margin: 0;
	padding: 0;
}

/* Fullscreen Item */
.jmm-fullscreen__section {
	margin-bottom: var(--jmm-spacing-md);
}

.jmm-fullscreen__title {
	margin: 0 0 var(--jmm-spacing-md);
	border-bottom-width: 1px;
	border-bottom-style: solid;
	padding-bottom: var(--jmm-spacing-sm);
}

.jmm-fullscreen__title a {
	text-decoration: none;
}

.jmm-fullscreen__children {
	list-style: none;
	margin: 0;
	padding: 0;
}

.jmm-fullscreen__child {
	margin-bottom: var(--jmm-spacing-sm);
}

.jmm-fullscreen__link {
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

/* Fullscreen Search */
.jmm-fullscreen__search {
	max-width: 600px;
	margin: 0 auto var(--jmm-spacing-xl);
}

/* Fullscreen Preview Pattern */
.jmm-fullscreen--preview .jmm-fullscreen__wrapper {
	display: flex;
	width: 100%;
	height: 100vh;
}

.jmm-fullscreen--preview .jmm-fullscreen__nav-column {
	width: var(--jmm-preview-nav-width, 400px);
	padding: var(--jmm-spacing-xl);
	overflow-y: auto;
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.jmm-preview__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.jmm-preview__item {
	margin-bottom: var(--jmm-spacing-md);
}

.jmm-preview__link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: var(--jmm-spacing-md);
	text-decoration: none;
	border-bottom-width: 1px;
	border-bottom-style: solid;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-preview__link-arrow {
	opacity: 0;
	transform: translateX(-10px);
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-preview__link:hover .jmm-preview__link-arrow {
	opacity: 1;
	transform: translateX(0);
}

.jmm-preview__media {
	flex: 1;
	position: relative;
	overflow: hidden;
}

.jmm-preview__image {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0;
	transition: opacity 0.4s ease;
}

.jmm-preview__image.is-active {
	opacity: 1;
}

/* Fullscreen Split Pattern */
.jmm-fullscreen--split .jmm-split__wrapper {
	display: flex;
	width: 100%;
	height: 100vh;
}

.jmm-fullscreen--split .jmm-split__nav {
	width: var(--jmm-split-nav-width, 50%);
	padding: var(--jmm-spacing-xl);
	overflow-y: auto;
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.jmm-split__feature {
	width: var(--jmm-split-feature-width, 50%);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--jmm-spacing-xl);
}

.jmm-split__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.jmm-split__item {
	margin-bottom: var(--jmm-spacing-lg);
}

.jmm-split__title {
	margin: 0 0 var(--jmm-spacing-sm);
}

.jmm-split__children {
	list-style: none;
	margin: 0;
	padding: 0 0 0 var(--jmm-spacing-md);
}

.jmm-fullscreen--split .jmm-split__link {
	text-decoration: none;
	display: block;
	padding: var(--jmm-spacing-xs) 0;
}

/* ==========================================================================
   Drilldown Patterns
   ========================================================================== */

/* Drilldown Base */
.jmm-drilldown {
	position: absolute;
	top: 100%;
	left: 0;
	width: var(--jmm-drilldown-width, 320px);
	overflow: hidden;
	opacity: 0;
	visibility: hidden;
	transition:
		opacity var(--jmm-transition-duration) ease,
		visibility var(--jmm-transition-duration) ease;
}

.jmm-drilldown.is-open {
	opacity: 1;
	visibility: visible;
}

/* Drilldown Height Variants */
.jmm-drilldown--height-fixed {
	max-height: 400px;
}

.jmm-drilldown--height-viewport {
	max-height: 80vh;
}

/* Drilldown Viewport */
.jmm-drilldown__viewport {
	overflow: hidden;
}

.jmm-drilldown__track {
	display: flex;
	transition: transform var(--jmm-drilldown-duration, 300ms) ease;
}

/* Drilldown Panel */
.jmm-drilldown__panel {
	flex-shrink: 0;
	width: 100%;
	display: none;
}

.jmm-drilldown__panel.is-active {
	display: block;
}

/* Drilldown Header */
.jmm-drilldown__header {
	display: flex;
	align-items: center;
	gap: var(--jmm-spacing-sm);
	padding: var(--jmm-spacing-md);
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

.jmm-drilldown__back {
	display: flex;
	align-items: center;
	gap: var(--jmm-spacing-xs);
	padding: var(--jmm-spacing-xs) var(--jmm-spacing-sm);
	border-width: 1px;
	border-style: solid;
	cursor: pointer;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-drilldown__title {
	flex: 1;
	margin: 0;
}

.jmm-drilldown__view-all {
	text-decoration: none;
}

/* Drilldown List */
.jmm-drilldown__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.jmm-drilldown__item {
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

.jmm-drilldown__item:last-child {
	border-bottom: none;
}

/* Drilldown Trigger */
.jmm-drilldown__trigger {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: var(--jmm-spacing-md);
	border: none;
	text-align: left;
	cursor: pointer;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-drilldown__trigger-icon {
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

/* Drilldown Link */
.jmm-drilldown__link {
	display: block;
	padding: var(--jmm-spacing-md);
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

/* Drilldown Stack Pattern */
.jmm-drilldown--stack .jmm-stack__container {
	position: relative;
}

.jmm-stack__panel {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	transform: translateX(100%);
	opacity: 0;
	transition:
		transform var(--jmm-stack-duration, 250ms) ease,
		opacity var(--jmm-stack-duration, 250ms) ease;
}

.jmm-stack__panel.is-active {
	position: relative;
	transform: translateX(0);
	opacity: 1;
}

.jmm-stack__breadcrumb {
	padding: var(--jmm-spacing-sm) var(--jmm-spacing-md);
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

.jmm-stack__breadcrumb-list {
	display: flex;
	gap: var(--jmm-spacing-xs);
	list-style: none;
	margin: 0;
	padding: 0;
}

/* Drilldown Curtain Pattern */
.jmm-drilldown--curtain .jmm-curtain__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.jmm-curtain__item {
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

.jmm-curtain__trigger {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: var(--jmm-spacing-md);
	border: none;
	cursor: pointer;
}

.jmm-curtain__trigger-icon svg {
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-curtain__trigger[aria-expanded="true"] .jmm-curtain__trigger-icon svg {
	transform: rotate(45deg);
}

.jmm-curtain__panel {
	max-height: 0;
	overflow: hidden;
	transition: max-height var(--jmm-curtain-duration, 400ms) ease;
}

.jmm-curtain__panel.is-open {
	max-height: 500px;
}

/* ==========================================================================
   Drawer Patterns
   ========================================================================== */

/* Drawer Base */
.jmm-drawer {
	position: fixed;
	inset: 0;
	z-index: var(--jmm-z-drawer, 99998);
	pointer-events: none;
	opacity: 0;
	visibility: hidden;
}

.jmm-drawer.is-open {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
}

/* Drawer Overlay */
.jmm-drawer__overlay {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity var(--jmm-drawer-duration, 300ms) ease;
}

.jmm-drawer.is-open .jmm-drawer__overlay {
	opacity: 1;
}

/* Drawer Panel - Side */
.jmm-drawer--side .jmm-drawer__panel {
	position: absolute;
	top: 0;
	bottom: 0;
	width: var(--jmm-drawer-width, 360px);
	max-width: var(--jmm-drawer-max-width, 85vw);
	display: flex;
	flex-direction: column;
	transform: translateX(-100%);
	transition: transform var(--jmm-drawer-duration, 300ms) ease;
}

.jmm-drawer--left .jmm-drawer__panel {
	left: 0;
	transform: translateX(-100%);
}

.jmm-drawer--right .jmm-drawer__panel {
	right: 0;
	transform: translateX(100%);
}

.jmm-drawer--side.is-open .jmm-drawer__panel {
	transform: translateX(0);
}

/* Drawer Panel - Bottom */
.jmm-drawer--bottom .jmm-drawer__sheet {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	height: var(--jmm-sheet-height, 60vh);
	max-height: var(--jmm-sheet-max-height, 90vh);
	display: flex;
	flex-direction: column;
	transform: translateY(100%);
	transition: transform var(--jmm-sheet-duration, 300ms) ease;
}

.jmm-drawer--bottom.is-open .jmm-drawer__sheet {
	transform: translateY(0);
}

/* Drawer Handle */
.jmm-drawer__handle-container {
	display: flex;
	justify-content: center;
	padding: var(--jmm-spacing-sm) 0;
}

.jmm-drawer__handle {
	width: 40px;
	height: 4px;
}

/* Drawer Header */
.jmm-drawer__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: var(--jmm-spacing-md);
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

.jmm-drawer__title {
	margin: 0;
}

.jmm-drawer__close {
	width: 40px;
	height: 40px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: none;
	cursor: pointer;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

/* Drawer Body */
.jmm-drawer__body {
	flex: 1;
	overflow-y: auto;
	padding: var(--jmm-spacing-md);
}

/* Drawer List */
.jmm-drawer__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.jmm-drawer__item {
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

.jmm-drawer__group {
	display: flex;
	align-items: center;
}

.jmm-drawer__toggle {
	flex: 1;
	display: flex;
	align-items: center;
	gap: var(--jmm-spacing-sm);
	padding: var(--jmm-spacing-md);
	border: none;
	text-align: left;
	cursor: pointer;
}

.jmm-drawer__toggle-indicator {
	margin-left: auto;
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-drawer__toggle[aria-expanded="true"] .jmm-drawer__toggle-indicator {
	transform: rotate(180deg);
}

.jmm-drawer__children {
	list-style: none;
	margin: 0;
	padding: 0 0 0 var(--jmm-spacing-lg);
	max-height: 0;
	overflow: hidden;
	transition: max-height var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-drawer__children[aria-hidden="false"] {
	max-height: 500px;
}

.jmm-drawer__link {
	display: block;
	padding: var(--jmm-spacing-md);
	text-decoration: none;
}

/* Drawer Grid (Bottom Sheet) */
.jmm-drawer__grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--jmm-spacing-md);
	list-style: none;
	margin: 0;
	padding: 0;
}

.jmm-drawer__card {
	display: flex;
	flex-direction: column;
	align-items: center;
	padding: var(--jmm-spacing-lg);
	text-decoration: none;
	text-align: center;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-drawer__card-icon {
	width: 48px;
	height: 48px;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-bottom: var(--jmm-spacing-sm);
}

/* ==========================================================================
   Grid Tiles Pattern
   ========================================================================== */

.jmm-tiles {
	position: absolute;
	top: 100%;
	left: 0;
	padding: var(--jmm-spacing-lg);
	opacity: 0;
	visibility: hidden;
	transition:
		opacity var(--jmm-transition-duration) ease,
		visibility var(--jmm-transition-duration) ease;
}

.jmm-tiles.is-open {
	opacity: 1;
	visibility: visible;
}

.jmm-tiles--width-container {
	width: 100%;
	max-width: var(--jmm-container-width, 1200px);
}

.jmm-tiles--width-full {
	width: 100vw;
	left: 50%;
	transform: translateX(-50%);
}

.jmm-tiles__grid {
	display: grid;
	grid-template-columns: repeat(var(--jmm-tiles-columns, 4), 1fr);
	gap: var(--jmm-tiles-gap, 16px);
	list-style: none;
	margin: 0;
	padding: 0;
}

.jmm-tiles__tile {
	display: flex;
	flex-direction: column;
	text-decoration: none;
	overflow: hidden;
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-tiles__tile:hover {
	transform: translateY(-4px);
}

.jmm-tiles--style-card .jmm-tiles__media {
	aspect-ratio: var(--jmm-tiles-aspect, 16/9);
	overflow: hidden;
}

.jmm-tiles--style-card .jmm-tiles__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-tiles--style-card .jmm-tiles__tile:hover .jmm-tiles__image {
	transform: scale(1.05);
}

.jmm-tiles--style-card .jmm-tiles__content {
	padding: var(--jmm-spacing-md);
}

/* Overlay Style */
.jmm-tiles--style-overlay .jmm-tiles__tile {
	position: relative;
	aspect-ratio: var(--jmm-tiles-aspect, 16/9);
}

.jmm-tiles--style-overlay .jmm-tiles__media {
	position: absolute;
	inset: 0;
}

.jmm-tiles--style-overlay .jmm-tiles__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.jmm-tiles--style-overlay .jmm-tiles__content {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	padding: var(--jmm-spacing-md);
}

/* Icon Style */
.jmm-tiles--style-icon .jmm-tiles__tile {
	padding: var(--jmm-spacing-lg);
	text-align: center;
}

.jmm-tiles--style-icon .jmm-tiles__icon-wrapper {
	width: 64px;
	height: 64px;
	margin: 0 auto var(--jmm-spacing-md);
	display: flex;
	align-items: center;
	justify-content: center;
}

.jmm-tiles__description {
	margin-top: var(--jmm-spacing-xs);
}

.jmm-tiles__meta {
	margin-top: var(--jmm-spacing-xs);
}

/* ==========================================================================
   Search Integrated Pattern
   ========================================================================== */

.jmm-search {
	position: absolute;
	top: 100%;
	left: 0;
	opacity: 0;
	visibility: hidden;
	transition:
		opacity var(--jmm-transition-duration) ease,
		visibility var(--jmm-transition-duration) ease;
}

.jmm-search.is-open {
	opacity: 1;
	visibility: visible;
}

.jmm-search--width-container {
	width: 100%;
	max-width: var(--jmm-container-width, 1200px);
}

.jmm-search__container {
	display: flex;
	gap: var(--jmm-spacing-xl);
	padding: var(--jmm-spacing-lg);
}

/* Split Layout */
.jmm-search--layout-split .jmm-search__container {
	flex-direction: row;
}

.jmm-search--layout-split .jmm-search__section--search {
	flex: 1;
}

.jmm-search--layout-split .jmm-search__section--nav {
	width: 300px;
	border-left-width: 1px;
	border-left-style: solid;
	padding-left: var(--jmm-spacing-xl);
}

/* Stacked Layout */
.jmm-search--layout-stacked .jmm-search__container {
	flex-direction: column;
}

/* Search Form */
.jmm-search__form {
	margin-bottom: var(--jmm-spacing-lg);
}

.jmm-search__input-wrapper {
	display: flex;
	align-items: center;
	gap: var(--jmm-spacing-sm);
	padding: var(--jmm-spacing-sm) var(--jmm-spacing-md);
	border-width: 2px;
	border-style: solid;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-search__input {
	flex: 1;
	border: none;
	outline: none;
}

.jmm-search__submit,
.jmm-search__clear {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border: none;
	cursor: pointer;
}


/* Search Results */
.jmm-search__results {
	margin-bottom: var(--jmm-spacing-lg);
}

/* Search Suggestions */
.jmm-search__suggestions {
	display: flex;
	gap: var(--jmm-spacing-xl);
}

.jmm-search__suggestions-title {
	margin-bottom: var(--jmm-spacing-sm);
}

.jmm-search__suggestions-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: var(--jmm-spacing-xs);
}

.jmm-search__suggestion-btn {
	padding: var(--jmm-spacing-xs) var(--jmm-spacing-sm);
	border-width: 1px;
	border-style: solid;
	cursor: pointer;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

/* Search Nav Section */
.jmm-search__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.jmm-search__group {
	margin-bottom: var(--jmm-spacing-lg);
}

.jmm-search__group-title {
	margin-bottom: var(--jmm-spacing-sm);
}

.jmm-search__children {
	list-style: none;
	margin: 0;
	padding: 0;
}

.jmm-search__link {
	display: block;
	padding: var(--jmm-spacing-xs) 0;
	text-decoration: none;
}

/* ==========================================================================
   Dynamic Content Type
   ========================================================================== */

.jmm-content--dynamic {
	padding: var(--jmm-spacing-md);
}

.jmm-dynamic__grid {
	display: grid;
	grid-template-columns: repeat(var(--jmm-dynamic-columns, 2), 1fr);
	gap: var(--jmm-spacing-md);
}

.jmm-dynamic__item {
	overflow: hidden;
}

.jmm-dynamic__link {
	display: block;
	text-decoration: none;
}

.jmm-dynamic__image {
	aspect-ratio: 16/9;
	overflow: hidden;
}

.jmm-dynamic__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-dynamic__item:hover .jmm-dynamic__image img {
	transform: scale(1.05);
}

.jmm-dynamic__content {
	padding: var(--jmm-spacing-md);
}

.jmm-dynamic__title {
	margin: 0 0 var(--jmm-spacing-xs);
}

.jmm-dynamic__excerpt {
	margin: 0;
}

.jmm-dynamic__meta {
	margin-top: var(--jmm-spacing-sm);
}

/* ==========================================================================
   Rich Mega Menu (Panel Split with Rich Content)
   ========================================================================== */

/* Main Mega Container */
.jmm-mega {
	display: flex;
	width: 100%;
	min-height: 400px;
	overflow: hidden;
}

/* Left Navigation Column */
.jmm-mega__nav {
	display: flex;
	flex-direction: column;
	width: var(--jmm-nav-width, 25%);
	min-width: 200px;
	max-width: var(--jmm-nav-max-width, none);
	flex-shrink: 0;
}

.jmm-mega__nav-list {
	margin: 0;
	padding: var(--jmm-spacing-md, 1rem) 0;
	list-style: none;
	flex: 1;
}

.jmm-mega__nav-item {
	margin: 0;
	padding: 0;
}

.jmm-mega__nav-link {
	display: flex;
	align-items: center;
	gap: var(--jmm-spacing-sm, 0.75rem);
	padding: var(--jmm-spacing-md, 1rem) var(--jmm-spacing-lg, 1.5rem);
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
	cursor: pointer;
	border-left-width: 3px;
	border-left-style: solid;
	border-left-color: transparent;
}

.jmm-mega__nav-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	width: 24px;
	height: 24px;
}

.jmm-mega__nav-icon svg {
	width: 20px;
	height: 20px;
}

.jmm-mega__nav-text {
	flex: 1;
}

.jmm-mega__nav-arrow {
	flex-shrink: 0;
	opacity: 0;
	transform: translateX(-4px);
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-mega__nav-item--active .jmm-mega__nav-arrow,
.jmm-mega__nav-link:hover .jmm-mega__nav-arrow {
	opacity: 1;
	transform: translateX(0);
}

/* Navigation Footer (Contact Info) */
.jmm-mega__nav-footer {
	padding: var(--jmm-spacing-lg, 1.5rem);
	border-top-width: 1px;
	border-top-style: solid;
	margin-top: auto;
}

.jmm-mega__nav-footer-label {
	margin: 0 0 var(--jmm-spacing-sm, 0.5rem);
}

.jmm-mega__nav-phone {
	display: flex;
	align-items: center;
	gap: var(--jmm-spacing-sm, 0.5rem);
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-mega__nav-phone svg {
	width: 18px;
	height: 18px;
}

/* Main Content Area */
.jmm-mega__content {
	flex: 1;
	min-width: 0;
	overflow: hidden;
}

.jmm-mega__panel {
	display: none;
	height: 100%;
	animation: jmm-panel-fade-in 0.3s ease;
}

.jmm-mega__panel--active {
	display: block;
}

@keyframes jmm-panel-fade-in {
	from {
		opacity: 0;
		transform: translateX(10px);
	}
	to {
		opacity: 1;
		transform: translateX(0);
	}
}

/* Rich Content Layout */
.jmm-rich {
	display: grid;
	grid-template-columns: 1fr 1fr;
	grid-template-rows: auto 1fr;
	gap: 0;
	height: 100%;
	min-height: 400px;
}

/* Full Width Modifier - When right column is hidden */
.jmm-rich--full-width {
	grid-template-columns: 1fr;
}

.jmm-rich--full-width .jmm-rich__featured {
	grid-column: 1;
}

/* Featured Section (Top Left) */
.jmm-rich__featured {
	position: relative;
	grid-column: 1;
	grid-row: 1 / 3;
	overflow: hidden;
}

.jmm-rich__featured-image {
	position: absolute;
	inset: 0;
}

.jmm-rich__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.jmm-rich__featured-overlay {
	position: absolute;
	inset: 0;
}

.jmm-rich__featured-content {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	padding: var(--jmm-spacing-xl, 2rem);
	z-index: 1;
}

.jmm-rich__featured-badge {
	display: inline-block;
	padding: 0.25rem 0.75rem;
	margin-bottom: var(--jmm-spacing-sm, 0.75rem);
}

.jmm-rich__featured-title {
	margin: 0 0 var(--jmm-spacing-sm, 0.75rem);
}

.jmm-rich__featured-desc {
	margin: 0 0 var(--jmm-spacing-md, 1rem);
}

.jmm-rich__featured-cta {
	display: inline-flex;
	align-items: center;
	gap: var(--jmm-spacing-sm, 0.5rem);
	padding: 0.625rem 1.25rem;
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-rich__featured-cta:hover {
	transform: translateX(4px);
}

.jmm-rich__featured-cta svg {
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-rich__featured-cta:hover svg {
	transform: translateX(4px);
}

/* Quick Links Grid (Right Side) */
.jmm-rich__grid {
	grid-column: 2;
	grid-row: 1;
	padding: var(--jmm-spacing-lg, 1.5rem);
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

.jmm-rich__grid-title {
	margin: 0 0 var(--jmm-spacing-md, 1rem);
}

.jmm-rich__links {
	display: flex;
	flex-direction: column;
	gap: var(--jmm-spacing-sm, 0.5rem);
}

.jmm-rich__link-card {
	display: flex;
	align-items: center;
	gap: var(--jmm-spacing-md, 1rem);
	padding: var(--jmm-spacing-sm, 0.75rem);
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-rich__link-card:hover {
	transform: translateX(4px);
}

.jmm-rich__link-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	flex-shrink: 0;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-rich__link-icon svg {
	width: 20px;
	height: 20px;
}

.jmm-rich__link-text {
	flex: 1;
	min-width: 0;
}

.jmm-rich__link-title {
	display: block;
	margin-bottom: 2px;
}

.jmm-rich__link-desc {
	display: block;
}

.jmm-rich__link-arrow {
	flex-shrink: 0;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-rich__link-card:hover .jmm-rich__link-arrow {
	transform: translateX(4px);
}

/* Promotional Card Section (Bottom Right) */
.jmm-rich__promo {
	grid-column: 2;
	grid-row: 2;
	padding: var(--jmm-spacing-lg, 1.5rem);
	display: flex;
	align-items: flex-end;
}

/* Promo Card Variants */
.jmm-promo {
	display: flex;
	align-items: center;
	gap: var(--jmm-spacing-md, 1rem);
	width: 100%;
	padding: var(--jmm-spacing-md, 1rem) var(--jmm-spacing-lg, 1.5rem);
}

.jmm-promo__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	flex-shrink: 0;
}

.jmm-promo__icon svg {
	width: 24px;
	height: 24px;
}

.jmm-promo__content {
	flex: 1;
	min-width: 0;
}

.jmm-promo__title {
	margin: 0 0 0.25rem;
}

.jmm-promo__desc {
	margin: 0;
}

.jmm-promo__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0.5rem 1rem;
	text-decoration: none;
	white-space: nowrap;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
	flex-shrink: 0;
}

.jmm-promo__cta:hover {
	transform: scale(1.02);
}

/* Rich Panel Responsive */
@media (max-width: 1100px) {
	.jmm-mega {
		flex-direction: column;
		min-height: auto;
	}

	.jmm-mega__nav {
		width: 100%;
		max-width: none;
		flex-direction: row;
		flex-wrap: wrap;
	}

	.jmm-mega__nav-list {
		display: flex;
		flex-wrap: wrap;
		padding: var(--jmm-spacing-sm, 0.5rem);
	}

	.jmm-mega__nav-item {
		flex: 0 0 auto;
	}

	.jmm-mega__nav-link {
		padding: var(--jmm-spacing-sm, 0.75rem) var(--jmm-spacing-md, 1rem);
		border-radius: 6px;
		border-left: none;
	}

	.jmm-mega__nav-item--active .jmm-mega__nav-link {
		border-left: none;
		border-radius: 6px;
	}

	.jmm-mega__nav-arrow {
		display: none;
	}

	.jmm-mega__nav-footer {
		padding: var(--jmm-spacing-sm, 0.75rem) var(--jmm-spacing-md, 1rem);
		border-top: none;
		border-left-width: 1px;
		border-left-style: solid;
		margin-top: 0;
		margin-left: auto;
		display: flex;
		align-items: center;
		gap: var(--jmm-spacing-sm, 0.5rem);
	}

	.jmm-mega__nav-footer-label {
		display: none;
	}

	.jmm-rich {
		grid-template-columns: 1fr;
		grid-template-rows: auto auto auto;
	}

	.jmm-rich__featured {
		grid-column: 1;
		grid-row: 1;
		min-height: 200px;
	}

	.jmm-rich__grid {
		grid-column: 1;
		grid-row: 2;
	}

	.jmm-rich__promo {
		grid-column: 1;
		grid-row: 3;
	}
}

@media (max-width: 768px) {
	.jmm-mega__nav-list {
		flex-direction: column;
		width: 100%;
	}

	.jmm-mega__nav-item {
		width: 100%;
	}

	.jmm-mega__nav-link {
		justify-content: flex-start;
	}

	.jmm-mega__nav-footer {
		width: 100%;
		border-left: none;
		border-top-width: 1px;
		border-top-style: solid;
		justify-content: center;
	}

	.jmm-rich__links {
		gap: var(--jmm-spacing-xs, 0.25rem);
	}

	.jmm-promo {
		flex-direction: column;
		text-align: center;
		gap: var(--jmm-spacing-sm, 0.75rem);
	}

	.jmm-promo__cta {
		width: 100%;
	}
}

/* ==========================================================================
   Search Form Content Type
   ========================================================================== */

.jmm-search-form {
	display: flex;
	gap: var(--jmm-spacing-sm);
}

.jmm-search-form__wrapper {
	display: flex;
	gap: var(--jmm-spacing-sm);
	width: 100%;
}

.jmm-search-form__input-group {
	flex: 1;
	display: flex;
	align-items: center;
	gap: var(--jmm-spacing-sm);
	padding: var(--jmm-spacing-sm) var(--jmm-spacing-md);
	border-width: 2px;
	border-style: solid;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

.jmm-search-form__icon {
	flex-shrink: 0;
}

.jmm-search-form__input {
	flex: 1;
	border: none;
	outline: none;
}

.jmm-search-form__clear {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--jmm-spacing-xs);
	border: none;
	cursor: pointer;
}

.jmm-search-form__submit {
	padding: var(--jmm-spacing-sm) var(--jmm-spacing-md);
	border: none;
	cursor: pointer;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
}

/* Search Results */
.jmm-search-results {
	margin-top: var(--jmm-spacing-md);
	border-width: 1px;
	border-style: solid;
	max-height: 400px;
	overflow-y: auto;
}

.jmm-search-results__loading {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--jmm-spacing-sm);
	padding: var(--jmm-spacing-lg);
}

.jmm-search-results__spinner {
	width: 20px;
	height: 20px;
	border-width: 2px;
	border-style: solid;
	border-radius: 50%;
	animation: jmm-spin 0.8s linear infinite;
}

@keyframes jmm-spin {
	to { transform: rotate(360deg); }
}

.jmm-search-results__empty {
	padding: var(--jmm-spacing-lg);
	text-align: center;
}

.jmm-search-results__footer {
	padding: var(--jmm-spacing-sm) var(--jmm-spacing-md);
	border-top-width: 1px;
	border-top-style: solid;
}

.jmm-search-results__view-all {
	display: flex;
	align-items: center;
	gap: var(--jmm-spacing-xs);
	text-decoration: none;
}

/* ==========================================================================
   Responsive - Phase 3 Patterns
   ========================================================================== */

@media (max-width: 992px) {
	.jmm-fullscreen__grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.jmm-fullscreen--preview .jmm-preview__media {
		display: none;
	}

	.jmm-fullscreen--preview .jmm-fullscreen__nav-column {
		width: 100%;
	}

	.jmm-fullscreen--split .jmm-split__wrapper {
		flex-direction: column;
	}

	.jmm-split__nav,
	.jmm-split__feature {
		width: 100%;
		height: auto;
	}

	.jmm-tiles__grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.jmm-search--layout-split .jmm-search__container {
		flex-direction: column;
	}

	.jmm-search--layout-split .jmm-search__section--nav {
		width: 100%;
		border-left: none;
		border-top-width: 1px;
		border-top-style: solid;
		padding-left: 0;
		padding-top: var(--jmm-spacing-lg);
	}
}

@media (max-width: 768px) {
	.jmm-fullscreen__grid {
		grid-template-columns: 1fr;
	}

	.jmm-fullscreen__container {
		padding: var(--jmm-spacing-md);
	}

	.jmm-fullscreen__close {
		top: var(--jmm-spacing-md);
		right: var(--jmm-spacing-md);
		width: 40px;
		height: 40px;
	}

	.jmm-tiles__grid {
		grid-template-columns: 1fr;
	}

	.jmm-drawer__grid {
		grid-template-columns: 1fr;
	}

	.jmm-dynamic__grid {
		grid-template-columns: 1fr;
	}

	.jmm-search__suggestions {
		flex-direction: column;
	}
}


/* ==========================================================================
   Panel Links Pattern
   ========================================================================== */

.jmm-panel--links {
	--jmm-rich-width: 50%;
	--jmm-links-width: 50%;
}

.jmm-mega--panel-links {
	display: flex;
	width: 100%;
	min-height: 400px;
	overflow: hidden;
}

/* Column order modifiers */
.jmm-panel--rich-left .jmm-mega--panel-links {
	flex-direction: row;
}

.jmm-panel--rich-right .jmm-mega--panel-links {
	flex-direction: row-reverse;
}

/* Rich Content Column */
.jmm-mega__rich-content {
	position: relative;
	width: var(--jmm-rich-width, 50%);
	flex-shrink: 0;
}

.jmm-mega__rich-media {
	position: relative;
	width: 100%;
	height: 100%;
	min-height: 400px;
}

.jmm-mega__rich-image,
.jmm-mega__rich-video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.jmm-mega__rich-overlay {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding: 2rem;
}

.jmm-mega__rich-content-group {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.jmm-mega__rich-title {
	margin: 0;
}

.jmm-mega__rich-description {
	margin: 0;
}

.jmm-mega__rich-cta {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.75rem 1.5rem;
	text-decoration: none;
	transition-duration: var(--jmm-animation-duration);
	transition-timing-function: var(--jmm-animation-easing);
	width: fit-content;
}

.jmm-mega__rich-cta:hover {
	transform: translateX(4px);
}

.jmm-mega__rich-cta svg {
	transition: transform var(--jmm-animation-duration) var(--jmm-animation-easing);
}

.jmm-mega__rich-cta:hover svg {
	transform: translateX(4px);
}

/* Links Column */
.jmm-mega__links-column {
	flex: 1;
	display: flex;
	flex-direction: column;
	padding: 2rem;
	overflow-y: auto;
}

.jmm-mega__links-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.jmm-mega__link-item {
	border-bottom-width: 1px;
	border-bottom-style: solid;
}

.jmm-mega__link-item:last-child {
	border-bottom: none;
}

.jmm-mega__link {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	padding: 1rem 0.5rem;
	text-decoration: none;
	transition-duration: 0.2s;
	transition-timing-function: ease;
}

.jmm-mega__link:hover {
	padding-left: 1rem;
	margin-left: -0.5rem;
	margin-right: -0.5rem;
	padding-right: 1rem;
}

.jmm-mega__link-text {
	flex: 1;
}

.jmm-mega__link-arrow {
	flex-shrink: 0;
	transition-duration: 0.2s;
	transition-timing-function: ease;
}

.jmm-mega__link:hover .jmm-mega__link-arrow {
	transform: translateX(4px);
}

/* Link Labels */
.jmm-mega__link-label {
	display: inline-flex;
	align-items: center;
	padding: 0.125rem 0.5rem;
	white-space: nowrap;
}

/* Label positions */
.jmm-mega__link-label--before {
	margin-right: 0.5rem;
}

.jmm-mega__link-label--after {
	margin-left: 0.5rem;
}

/* Panel Links Responsive */
@media (max-width: 992px) {
	.jmm-mega--panel-links {
		min-height: 350px;
	}

	.jmm-mega__rich-media {
		min-height: 350px;
	}
}

@media (max-width: 768px) {
	.jmm-mega--panel-links {
		/* column-reverse puts links on top, rich content below */
		flex-direction: column-reverse !important;
		min-height: auto;
	}

	.jmm-mega__rich-content {
		width: 100%;
		height: 250px;
	}

	.jmm-mega__rich-media {
		min-height: 250px;
	}

	.jmm-mega__links-column {
		width: 100%;
		padding: 1.5rem;
		max-height: 300px;
		overflow-y: auto;
	}

	/* Panel-Links Mobile Override:
	   When panel-links is wrapped in desktop-pattern (due to menu item settings),
	   force it to display on mobile and hide the accordion fallback */
	.jmm-desktop-pattern:has([data-jmm-pattern="panel-links"]) {
		display: block !important;
	}

	/* Hide mobile accordion when panel-links desktop pattern is present */
	.jmm-desktop-pattern:has([data-jmm-pattern="panel-links"]) + .jmm-mobile-pattern {
		display: none !important;
	}

	/* Also handle cases where panel-links is directly in the menu (no wrapper) */
	.jmm-panel--links {
		display: block !important;
	}
}
