/* ==========================================================================
   Loop Builder: Elementor Pro Loop Grid widgets and Loop Item templates
   Cards reuse the design-system classes (card, hover-lift, chip, link-arrow,
   ratio-3x2, pad-*, gap-*); this file only adds loop-specific layout.
   See inc/loops.php for the query IDs, dynamic tags and "evo-if-value".
   ========================================================================== */

/* ---------- Grid ---------- */
.elementor-widget-loop-grid.evo-loop { --grid-column-gap: var(--sp-20); --grid-row-gap: var(--sp-20); }
.elementor-widget-loop-grid.evo-loop-lg { --grid-row-gap: var(--sp-48); }
.elementor-widget-loop-grid.evo-loop-sm { --grid-row-gap: var(--sp-12); }
.e-con.evo-feature { --gap: 0px; --row-gap: 0px; --column-gap: 0px; }
.evo-loop .e-loop-item > .e-con { height: 100%; }
.e-con.evo-grow { flex-grow: 1; }
.elementor-widget.evo-push { margin-top: auto; }

.evo-loop .e-loop-nothing-found-message__text {
	display: block; padding: var(--sp-24); text-align: center; color: var(--c-muted);
	border: 1px dashed var(--c-navy-200); border-radius: var(--r-xs); background: var(--c-white);
}

/* ---------- Card pieces ---------- */
.evo-media, .evo-media .elementor-widget-container, .evo-media a { display: block; }
.evo-media img { display: block; }

.e-con.evo-meta { --gap: .5rem .8rem; --row-gap: .5rem; --column-gap: .8rem; align-items: center; }
.evo-meta-text .elementor-heading-title { letter-spacing: .04em; text-transform: uppercase; }
.evo-dot .elementor-heading-title::before { content: "·"; margin-inline-end: .8rem; }

.chip .elementor-heading-title a { color: inherit; }
.chip.chip-link .elementor-heading-title { cursor: pointer; transition: box-shadow .2s; }
.chip.chip-link .elementor-heading-title:hover { box-shadow: inset 0 0 0 1px var(--c-navy); }
.chip.chip-dark .elementor-heading-title { background: rgba(255, 255, 255, .1); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .22); }
.chip.chip-dark .elementor-heading-title:hover { box-shadow: inset 0 0 0 1px var(--c-accent); }

.evo-card-title .elementor-heading-title a {
	color: inherit;
	background-image: linear-gradient(var(--c-accent), var(--c-accent));
	background-size: 0 2px; background-position: 0 100%; background-repeat: no-repeat;
	transition: background-size .3s;
}
.hover-lift:hover .evo-card-title .elementor-heading-title a,
.evo-card-title .elementor-heading-title a:focus-visible { background-size: 100% 2px; }

.evo-clamp-3 .elementor-widget-container,
.evo-clamp-4 .elementor-widget-container { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.evo-clamp-3 .elementor-widget-container { -webkit-line-clamp: 3; }
.evo-clamp-4 .elementor-widget-container { -webkit-line-clamp: 4; }

/* Featured (first) news card: photo fills the left column */
.evo-fill, .evo-fill .elementor-widget-container, .evo-fill a { height: 100%; }
.evo-fill img { width: 100%; height: 100% !important; min-height: 360px; object-fit: cover; }
@media (max-width: 1024px) {
	.evo-fill img { min-height: 0; height: auto !important; aspect-ratio: 16 / 9; }
}

/* ---------- Upcoming conference card ---------- */
.e-con.evo-ev { flex-wrap: nowrap; align-items: stretch; }
/* Elementor gives inner containers width:100%; the date column must keep its own width */
.e-con.evo-ev-date {
	flex: 0 0 auto; width: auto; --width: auto; min-width: 112px; justify-content: center; text-align: center;
	background-color: var(--c-navy);
	--padding-top: var(--sp-20); --padding-bottom: var(--sp-20); --padding-left: var(--sp-16); --padding-right: var(--sp-16);
	--gap: .5rem; --row-gap: .5rem;
}
.evo-ev-date .elementor-heading-title { white-space: nowrap; line-height: 1; }
.evo-ev-month .elementor-heading-title { font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.e-con.evo-ev--compact .e-con.evo-ev-date {
	min-width: 92px;
	--padding-top: var(--sp-12); --padding-bottom: var(--sp-12); --padding-left: var(--sp-12); --padding-right: var(--sp-12);
}
.e-con.evo-links { --gap: .5rem 1.5rem; --row-gap: .5rem; --column-gap: 1.5rem; --padding-top: .25rem; }
@media (max-width: 480px) {
	.e-con.evo-ev { --flex-direction: column; flex-direction: column; }
	.e-con.evo-ev-date {
		--flex-direction: row; flex-direction: row; align-items: baseline; justify-content: flex-start;
		--gap: .75rem; --column-gap: .75rem; min-width: 0; text-align: left;
	}
}

/* ---------- Conference galleries ---------- */
.e-con.evo-gal { border-top: var(--rule-strong) solid var(--c-navy); --padding-top: var(--sp-16); --gap: var(--sp-16); --row-gap: var(--sp-16); }
.e-con.evo-gal-head { --gap: .6rem .8rem; --row-gap: .6rem; --column-gap: .8rem; align-items: center; }
.e-con.evo-gal-title { --gap: 0px; --row-gap: 0px; --column-gap: 0px; align-items: baseline; width: auto; --width: auto; flex: 0 1 auto; min-width: 0; }
.e-con.evo-ev > .e-con.evo-grow { min-width: 0; }
.e-con.evo-gal-media { position: relative; }

.evo-gal-grid .gallery { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 0 !important; }
.evo-gal-grid .gallery br,
.evo-gal-grid .gallery-caption { display: none; }
.evo-gal-grid .gallery-item { width: auto !important; max-width: none !important; margin: 0 !important; padding: 0 !important; }
.evo-gal-grid .gallery-item:nth-child(n+9) { display: none; }
.evo-gal-grid .gallery-icon a { display: block; aspect-ratio: 3 / 2; overflow: hidden; border-radius: var(--r-xs); background: var(--c-navy-50); }
.evo-gal-grid .gallery-icon img { width: 100%; height: 100%; object-fit: cover; display: block; border: 0 !important; transition: transform .6s ease; }
.evo-gal-grid .gallery-icon a:hover img { transform: scale(1.04); }

/* "+N photos": the 8th photo is darkened edge to edge, and the label is centred on it
   (bottom-right cell: 4 columns, or 2 on phones) */
.evo-gal-grid .gallery-icon a { position: relative; }
.evo-gal-media:has(.evo-gal-more) .evo-gal-grid .gallery-item:nth-child(8) .gallery-icon a::after {
	content: ""; position: absolute; inset: 0; pointer-events: none;
	background: color-mix(in srgb, var(--c-navy-900) 72%, transparent);
}
.elementor-widget.evo-gal-more {
	position: absolute !important; right: 0; bottom: 0; z-index: 2; pointer-events: none;
	width: calc((100% - 24px) / 4) !important; max-width: none !important; aspect-ratio: 3 / 2;
	margin: 0 !important; padding: 0 !important; background: none !important;
}
.elementor-widget.evo-gal-more > .elementor-widget-container {
	position: absolute; inset: 0; margin: 0 !important; padding: 0 !important; background: none !important;
	display: flex; align-items: center; justify-content: center;
}
.evo-gal-more .elementor-heading-title {
	margin: 0; padding: 0; background: none; box-shadow: none;
	font-size: clamp(.9rem, .8rem + .4vw, 1.125rem); font-weight: 600; letter-spacing: .08em; line-height: 1;
}
@media (max-width: 767px) {
	.evo-gal-grid .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.elementor-widget.evo-gal-more { width: calc((100% - 8px) / 2) !important; }
}

/* ---------- Books of Abstracts: the PDF's own first page is the cover ---------- */
.e-con.evo-book-media {
	background: var(--c-navy-50); border-bottom: var(--rule) solid var(--c-navy-100);
	--padding-top: var(--sp-24); --padding-right: var(--sp-24); --padding-bottom: var(--sp-24); --padding-left: var(--sp-24);
}
.evo-book-img img {
	width: 100%; aspect-ratio: 3 / 4; height: auto; object-fit: cover; object-position: top center;
	display: block; background: var(--c-white);
	border: var(--rule) solid var(--c-navy-100); border-radius: var(--r-xs);
	box-shadow: 0 14px 28px -18px color-mix(in srgb, var(--c-navy-900) 75%, transparent);
	transition: transform .35s ease, box-shadow .35s ease;
}
.hover-lift:hover .evo-book-img img {
	transform: translateY(-3px);
	box-shadow: 0 20px 34px -18px color-mix(in srgb, var(--c-navy-900) 80%, transparent);
}
.e-con.evo-book-foot {
	margin-top: auto; justify-content: space-between; align-items: center;
	--gap: .5rem .75rem; --row-gap: .5rem; --column-gap: .75rem;
	--padding-top: var(--sp-12); border-top: var(--rule) solid var(--c-navy-100);
}
.evo-book-size .elementor-heading-title { letter-spacing: .04em; text-transform: uppercase; }

/* ---------- Topic filter (Taxonomy Filter widget) ---------- */
.elementor-widget-taxonomy-filter.evo-filter-bar {
	--e-filter-space-between: 8px; --e-filter-justify-content: flex-start; --e-filter-item-padding: 0px;
}
.elementor-widget-taxonomy-filter.evo-filter-bar .e-filter { padding-bottom: var(--sp-24); border-bottom: var(--rule) solid var(--c-navy-100); }
.elementor-widget-taxonomy-filter.evo-filter-bar .e-filter-item {
	display: inline-flex; align-items: center; padding: .65rem .95rem; border: 0; border-radius: var(--r-xs);
	background: var(--c-white); color: var(--c-navy); box-shadow: inset 0 0 0 1px var(--c-navy-200);
	font-family: var(--e-global-typography-label-font-family), ui-monospace, monospace;
	font-size: var(--e-global-typography-label-font-size);
	font-weight: 500; letter-spacing: .06em; text-transform: uppercase; line-height: 1;
	cursor: pointer; transition: box-shadow .2s, background-color .2s, color .2s;
}
.elementor-widget-taxonomy-filter.evo-filter-bar .e-filter-item:hover:not([aria-pressed="true"]) { background: var(--c-white); color: var(--c-navy); box-shadow: inset 0 0 0 1px var(--c-navy); }
.elementor-widget-taxonomy-filter.evo-filter-bar .e-filter-item[aria-pressed="true"] { background: var(--c-navy); color: var(--c-white); box-shadow: inset 0 -3px 0 var(--c-accent); }

/* ---------- Pagination ---------- */
.elementor-widget-loop-grid.evo-loop .elementor-pagination {
	display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin-top: var(--sp-40);
}
.elementor-widget-loop-grid.evo-loop .elementor-pagination .page-numbers {
	min-width: 44px; height: 44px; margin: 0 !important; padding: 0 .9rem;
	display: inline-grid; place-items: center;
	background: var(--c-white); color: var(--c-navy); text-decoration: none;
	box-shadow: inset 0 0 0 1px var(--c-navy-200); border-radius: var(--r-xs);
	font-family: var(--e-global-typography-label-font-family), ui-monospace, monospace;
	font-size: .85rem; font-weight: 500;
	transition: box-shadow .2s, background-color .2s, color .2s;
}
.elementor-widget-loop-grid.evo-loop .elementor-pagination a.page-numbers:hover { box-shadow: inset 0 0 0 1px var(--c-navy); }
.elementor-widget-loop-grid.evo-loop .elementor-pagination .page-numbers.current { background: var(--c-navy); color: var(--c-white); box-shadow: inset 0 -3px 0 var(--c-accent); }
.elementor-widget-loop-grid.evo-loop .elementor-pagination .page-numbers.dots { background: transparent; box-shadow: none; }
.elementor-widget-loop-grid.evo-loop .elementor-pagination span.page-numbers.prev,
.elementor-widget-loop-grid.evo-loop .elementor-pagination span.page-numbers.next { opacity: .45; }

/* ---------- Single post ---------- */
.e-con.evo-post-head { max-width: 860px; }
.evo-post-hero .evo-meta-text .elementor-heading-title { color: var(--on-dark-72) !important; }
.evo-post-lead .elementor-widget-container { max-width: 62ch; color: var(--on-dark-86) !important; }

.evo-post-figure img { width: 100%; aspect-ratio: 16 / 9; height: auto; object-fit: cover; border-radius: var(--r-lg); display: block; }
.evo-post-figure .widget-image-caption { margin-top: .6rem; color: var(--c-muted); font-size: var(--e-global-typography-bodysm-font-size); text-align: start; }

.e-con.evo-share-row {
	max-width: 72ch; border-top: var(--rule) solid var(--c-navy-100);
	--padding-top: var(--sp-24); --gap: 1rem 2rem; --row-gap: 1rem; --column-gap: 2rem;
}
.e-con.evo-share-row > .e-con { width: auto; --width: auto; flex: 0 1 auto; }
.e-con.evo-share-links { --gap: 6px; --row-gap: 6px; --column-gap: 6px; }
.elementor-widget.evo-share-icon { width: auto; --container-widget-width: auto; --container-widget-flex-grow: 0; }
.evo-share-icon .elementor-icon {
	width: 40px; height: 40px; display: grid; place-items: center; font-size: 18px;
	background: var(--c-white); border-radius: var(--r-xs); box-shadow: inset 0 0 0 1px var(--c-navy-200);
	transition: background-color .2s, box-shadow .2s;
}
.evo-share-icon .elementor-icon svg { width: 18px; height: 18px; }
.evo-share-icon .elementor-icon:hover { background: var(--c-navy); box-shadow: inset 0 -3px 0 var(--c-accent); }
.evo-share-icon .elementor-icon:hover svg { fill: var(--c-white) !important; }

/* Sidebar */
@media (min-width: 1025px) { .e-con.evo-sticky { position: sticky; top: 110px; } }
.e-con.evo-side-block { border-top: var(--rule-strong) solid var(--c-navy); --padding-top: var(--sp-16); }
.elementor-widget-loop-grid.evo-side-loop { --grid-row-gap: 0px; }
.evo-side-loop .e-loop-item + .e-loop-item { border-top: var(--rule) solid var(--c-navy-100); }
.e-con.evo-side-item { flex-wrap: nowrap; align-items: center; --padding-top: .8rem; --padding-bottom: .8rem; --gap: .85rem; --column-gap: .85rem; }
.elementor-widget.evo-thumb { flex: none; width: 72px; --container-widget-width: 72px; --container-widget-flex-grow: 0; }
.evo-thumb img { width: 72px !important; height: 54px !important; object-fit: cover; border-radius: var(--r-xs); display: block; }
.evo-side-title .elementor-heading-title a { color: inherit; transition: color .2s; }
.evo-side-title .elementor-heading-title a:hover { color: var(--c-blue); }

/* Topic chips (taxonomy Loop Grid) */
.evo-topic-loop .elementor-loop-container { display: flex !important; flex-wrap: wrap; gap: 6px; }
.evo-topic-loop .e-loop-item { width: auto; }
.e-con.evo-topic {
	width: auto; flex-wrap: nowrap; align-items: center;
	--gap: .55rem; --column-gap: .55rem;
	--padding-top: .55rem; --padding-bottom: .55rem; --padding-left: .9rem; --padding-right: .55rem;
	background: var(--c-white); border-radius: var(--r-xs); box-shadow: inset 0 0 0 1px var(--c-navy-200);
	transition: box-shadow .2s;
}
.e-con.evo-topic:hover { box-shadow: inset 0 0 0 1px var(--c-navy); }
.evo-topic-name .elementor-heading-title { letter-spacing: .06em; text-transform: uppercase; line-height: 1; }
.evo-topic-name .elementor-heading-title a { color: inherit; }
.evo-topic-name .elementor-heading-title a::after { content: ""; position: absolute; inset: 0; }
.e-con.evo-topic { position: relative; }
.evo-topic-count .elementor-heading-title {
	display: inline-grid; place-items: center; min-width: 1.5rem; height: 1.5rem; padding: 0 .35rem;
	background: var(--c-navy-50); border-radius: var(--r-xs); font-size: .7rem; line-height: 1;
}

@media (prefers-reduced-motion: reduce) {
	.evo-card-title .elementor-heading-title a, .evo-gal-grid .gallery-icon img, .e-con.evo-topic,
	.evo-filter-bar .e-filter-item, .evo-share-icon .elementor-icon { transition: none; }
}
