/* IAG Expo — site styles. Values come from the Elementor-era site (kit 60, header 227, footer 283, single 398);
   spacing is on one scale (--ex-s-*) instead of per-widget numbers. */

:root {
	--ex-navy: #000125;      /* page background, header bar, pills */
	--ex-navy-2: #05074c;    /* hover / Bridge pill */
	--ex-navy-3: #0b0d45;    /* footer band */
	--ex-gold: #be9622;      /* kit accent */
	--ex-link: #a98bb3;      /* links (Code Snippet 11) */
	--ex-text: #ffffff;
	--ex-muted: #adadad;
	--ex-radius: 25px;
	--ex-width: 1140px;
	--ex-s-1: 5px;
	--ex-s-2: 10px;
	--ex-s-3: 16px;
	--ex-s-4: 30px;
	--ex-s-5: 50px;
	--ex-s-6: 80px;
	/* Spacing rules (see "Content flow" below): every gap in page content is one of these, never a per-block value. */
	/* Roomier since 2026-10-28 (Cory: "let it breathe more"), close to the Elementor-era gaps. */
	--ex-flow: 24px;                     /* text to text: paragraph, list, and the gap after a heading */
	--ex-flow-block: 48px;              /* around anything that isn't running text: images, embeds, tables, galleries,
	                                      groups, columns, card grids, buttons, forms, plugin output; before h3–h6 */
	--ex-flow-section: 80px;            /* before h1/h2 and around the Sponsor Section block */
	--ex-gap: 40px;                     /* between cards / tiles / columns in a grid */
	--ex-pad: 24px;                     /* inside cards and panels */
	--ex-display: "Special Gothic Condensed One", "Roboto Condensed", sans-serif;
	--ex-body: Roboto, -apple-system, "Segoe UI", sans-serif;
}

/* ---------- Base: undo GeneratePress's boxed defaults ---------- */
body {
	background: var(--ex-navy);
	color: var(--ex-text);
	font-family: var(--ex-body);
	font-size: 16px;
	line-height: 1.5;
}
.site.grid-container,
.site-content,
.content-area,
.site-main {
	max-width: none;
	width: 100%;
	padding: 0;
	margin: 0;
	background: transparent;
	display: block;
}
a { color: var(--ex-link); }
a:hover, a:focus { color: #c9b2d1; }
h1, h2, h3, h4, h5, h6 {
	font-family: var(--ex-display);
	color: var(--ex-text);
	font-weight: 400;
	line-height: 1.15;
}

/* ---------- Header ---------- */
.ex-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 1000;
	padding: var(--ex-s-2);
	background-color: rgba(0, 1, 37, 0);
	transition: background-color 0.5s ease;
	box-sizing: border-box;
}
body.admin-bar .ex-header { top: 32px; }
@media (max-width: 782px) { body.admin-bar .ex-header { top: 46px; } }
.ex-header.scrolled,
.ex-header.nav-collapsed { background-color: var(--ex-navy); }
.ex-header__inner {
	margin: 0 auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--ex-s-2);
}

/* Logo + date lockup: one navy pill split in two, transparent over the home page's video. */
.ex-lockup {
	display: flex;
	align-items: stretch;
	flex: 0 0 auto;
}
.ex-lockup__logo,
.ex-lockup__date { background: var(--ex-navy); }
.home .ex-lockup__logo,
.home .ex-lockup__date { background: transparent; }
.ex-lockup__logo {
	display: flex;
	align-items: center;
	padding: 4px;
	padding-left: var(--ex-s-2);
	border-radius: var(--ex-radius) 0 0 var(--ex-radius);
}
.ex-lockup__logo img {
	display: block;
	width: auto;
	height: clamp(48px, 8.9vw, 153px);
	transition: height 0.3s ease;
}
.ex-header.scrolled .ex-lockup__logo img { height: clamp(48px, 7.4vw, 127px); }
.ex-lockup__date {
	display: flex;
	align-items: center;
	margin: 0;
	padding: 0 var(--ex-s-3) 0 var(--ex-s-2);
	border-radius: 0 var(--ex-radius) var(--ex-radius) 0;
	font-family: var(--ex-display);
	font-size: clamp(1rem, 1.4vw, 1.5rem);
	line-height: 1.25;
	color: var(--ex-text);
	white-space: nowrap;
}

/* Right column: Bridge pill, then the menu pill. */
.ex-navcol {
	display: flex;
	align-items: center;
	gap: var(--ex-s-2);
	margin-left: auto;
	flex: 0 0 auto;
}
.ex-bridge {
	display: flex;
	align-items: center;
	padding: 12px 22px;
	background: var(--ex-navy-2);
	border: 0 solid #fff;
	border-radius: var(--ex-radius);
	transition: border 0.3s ease, background-color 0.3s ease;
}
.ex-bridge:hover { background: #0a1070; }
.ex-bridge img { display: block; height: 24px; width: auto; }
.ex-header.scrolled .ex-bridge { border: 2px solid #fff; }

.ex-menu {
	position: relative;
	background: var(--ex-navy);
	border: 0 solid #fff;
	border-radius: var(--ex-radius);
	transition: border 0.3s ease;
}
.ex-header.scrolled .ex-menu { border: 2px solid #fff; }
.ex-menu__list,
.ex-menu__list ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
.ex-menu__list { display: flex; flex-wrap: nowrap; }
.ex-menu__list > li { position: relative; }
.ex-menu__list a {
	display: block;
	color: var(--ex-text);
	text-decoration: none;
	font-family: var(--ex-display);
	white-space: nowrap;
}
.ex-menu__list > li > a {
	font-size: clamp(0.8125rem, 1.5vw, 1.375rem);
	line-height: 46px;
	padding: 0 clamp(5px, 0.8vw, 13px);
}
.ex-menu__list > li:first-child > a { padding-left: 22px; border-radius: var(--ex-radius) 0 0 var(--ex-radius); }
.ex-menu__list > li:last-child > a { padding-right: 22px; border-radius: 0 var(--ex-radius) var(--ex-radius) 0; }
.ex-menu__list a:hover,
.ex-menu__list a:focus,
.ex-menu__list .current-menu-item > a { background: var(--ex-navy-2); color: #fff; }
.ex-menu__heading { cursor: default; }
.ex-menu__list .menu-item-has-children > a::after {
	content: "";
	display: inline-block;
	width: 0.35em;
	height: 0.35em;
	margin-left: 0.4em;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: translateY(-0.2em) rotate(45deg);
}

/* Dropdowns (desktop): navy panels with rounded ends, nested panels open to the side. */
.ex-menu__list ul {
	position: absolute;
	top: 100%;
	left: 0;
	min-width: 220px;
	background: var(--ex-navy);
	border-radius: 0 0 var(--ex-radius) var(--ex-radius);
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.15s ease;
	z-index: 10;
}
.ex-menu__list ul ul {
	top: 0;
	left: 100%;
	border-radius: var(--ex-radius);
}
.ex-menu__list li:hover > ul,
.ex-menu__list li:focus-within > ul { opacity: 1; visibility: visible; }
.ex-menu__list ul a {
	font-size: 22px;
	line-height: 1.3;
	padding: 7px 1em;
}
.ex-menu__list ul li:last-child > a { border-radius: 0 0 var(--ex-radius) var(--ex-radius); }
.ex-menu__list ul ul li:first-child > a { border-radius: var(--ex-radius) var(--ex-radius) 0 0; }
.ex-menu__list ul .menu-item-has-children > a::after { transform: rotate(-45deg); }

.ex-menu__toggle {
	display: none;
	width: 48px;
	height: 48px;
	padding: 0;
	background: var(--ex-navy);
	border: 0;
	border-radius: 50px;
	cursor: pointer;
	position: relative;
}
/* Three rounded bars sized like Elementor's eicon-menu-bar at the header's 32px icon size (header 227). */
.ex-menu__bars,
.ex-menu__bars::before,
.ex-menu__bars::after {
	position: absolute;
	left: 50%;
	width: 29px;
	height: 4px;
	margin-left: -14.5px;
	border-radius: 2px;
	background: #fff;
	content: "";
}
.ex-menu__bars { top: 50%; margin-top: -2px; }
.ex-menu__bars::before { top: -8px; }
.ex-menu__bars::after { top: 8px; }

/* Hamburger: below ~900 px (em, so larger browser text collapses it earlier), or whenever the menu would not fit. */
@media (max-width: 56.25em) {
	.ex-header { background-color: var(--ex-navy); }
}
@media (max-width: 56.25em) {
	.ex-menu { background: transparent; border: 0 !important; }
	.ex-menu__toggle { display: block; }
	.ex-menu__list { display: none; }
}
.ex-header.nav-collapsed .ex-menu { background: transparent; border: 0; }
.ex-header.nav-collapsed .ex-menu__toggle { display: block; }
.ex-header.nav-collapsed .ex-menu__list { display: none; }

/* The open hamburger panel: one column, submenus expand in place. */
.ex-header.menu-open .ex-menu__list {
	display: block;
	position: absolute;
	top: calc(100% + 8px);
	right: 0;
	width: min(320px, calc(100vw - 20px));
	max-height: calc(100vh - 140px);
	overflow-y: auto;
	background: var(--ex-navy);
	border: 1px solid #fff;
	border-radius: var(--ex-radius);
	padding: var(--ex-s-2) 0;
}
.ex-header.menu-open .ex-menu__list > li > a,
.ex-header.menu-open .ex-menu__list ul a {
	font-size: 1.0625rem;
	line-height: 1.3;
	padding: 7px 1.2em;
	border-radius: 0 !important;
}
.ex-header.menu-open .ex-menu__list ul {
	position: static;
	opacity: 1;
	visibility: visible;
	display: none;
	background: transparent;
	border-radius: 0;
	padding-left: 1em;
}
.ex-header.menu-open .ex-menu__list li.sub-open > ul { display: block; }
.ex-header.menu-open .ex-menu__list .menu-item-has-children > a::after { transform: translateY(-0.2em) rotate(45deg); }

/* Bridge pill shrinks through the narrow widths, as in header 227. */
@media (max-width: 1100px) {
	.ex-bridge { padding: 11px 16px; }
	.ex-bridge img { height: 22px; }
}
@media (max-width: 56.25em) {
	.ex-bridge { padding: 9px 14px; }
	.ex-bridge img { height: 18px; }
}
@media (max-width: 600px) {
	.ex-lockup { flex: 0 1 auto; min-width: 0; }
	.ex-lockup__date { white-space: normal; }
	.ex-bridge { padding: 8px 12px; }
	.ex-bridge img { height: 16px; }
}
@media (max-width: 430px) {
	.ex-navcol { gap: 4px; }
	.ex-bridge { padding: 7px 8px; }
	.ex-bridge img { height: 13px; }
}
@media (max-width: 400px) {
	.ex-lockup__date { font-size: 0.88rem; }
}

/* ---------- Page (single template 398) ---------- */
.ex-hero {
	min-height: 55vh;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--ex-s-1);
	/* Equal top and bottom padding the height of the fixed header: short titles stay centred exactly as before,
	   long ones (wrapping to several lines) grow the hero instead of sliding under the header. */
	padding: max(110px, calc(clamp(48px, 8.9vw, 153px) + 28px)) var(--ex-s-3);
	background: var(--ex-navy) center / cover no-repeat;
	text-align: center;
	box-sizing: border-box;
}
.ex-hero__title {
	display: inline-block;
	margin: var(--ex-s-5) var(--ex-s-1) var(--ex-s-1);
	padding: var(--ex-s-1) 20px;
	background: #fff;
	color: #000;
	font-size: 40px;
	line-height: 1;
	font-weight: 400;
}
.ex-hero h2.subtitle {
	display: inline-block;
	margin: 0 auto;
	padding: var(--ex-s-1);
	background: #fff;
	color: #000;
	font-size: 1.4em;
}
.ex-content {
	max-width: var(--ex-width);
	margin: 0 auto;
	padding: var(--ex-s-6) var(--ex-s-3);
	box-sizing: border-box;
}
.ex-content a { text-decoration: none; }
@media (max-width: 767px) {
	.ex-content { padding-top: var(--ex-s-5); padding-bottom: var(--ex-s-5); }
	:root { --ex-flow-section: 56px; --ex-flow-block: 36px; }
}
/* Text inside plugin output (sponsor lists, people grids, forms) keeps a paragraph's bottom gap. */
.ex-content p,
.ex-content ul,
.ex-content ol { margin: 0 0 1em; }

/* ---------- Content flow: the spacing rules ----------
   Blocks directly in the content column (and directly in a group, column or card) carry no margins of their own;
   the gap ABOVE each block comes from what it follows:
     text after text ........................ --ex-flow (16)
     anything else, either side ............. --ex-flow-block (30)
     before h3–h6 ........................... --ex-flow-block (30)
     before h1/h2, around Sponsor Section ... --ex-flow-section (50; 30 on phones)
     after any heading ...................... --ex-flow (16)
     around a separator ..................... --ex-flow (16)
   This replaces GeneratePress's and core's per-element margins (h1 20px, p 1.5em, image/embed 1em, columns 1.75em),
   the spacer blocks and empty paragraphs pages used as gaps (ex-spacing.php renders those as nothing) and margins
   saved in block attributes (inline style, hence !important). `body` lifts these rules over core's block CSS. */
body .ex-content > *,
body .ex-content :is(.wp-block-group.is-layout-flow, .wp-block-group.is-layout-constrained, .wp-block-group__inner-container, .wp-block-column, .ex-card) > * {
	margin-top: 0;
	margin-bottom: 0;
}
body .ex-content > * + *,
body .ex-content :is(.wp-block-group.is-layout-flow, .wp-block-group.is-layout-constrained, .wp-block-group__inner-container, .wp-block-column, .ex-card) > * + * {
	margin-top: var(--ex-flow-block);
}
body .ex-content > :is(p, ul, ol, dl, blockquote) + :is(p, ul, ol, dl, blockquote),
body .ex-content :is(.wp-block-group.is-layout-flow, .wp-block-group.is-layout-constrained, .wp-block-group__inner-container, .wp-block-column, .ex-card) > :is(p, ul, ol, dl, blockquote) + :is(p, ul, ol, dl, blockquote) {
	margin-top: var(--ex-flow);
}
body .ex-content > * + :is(h3, h4, h5, h6) { margin-top: var(--ex-flow-block); }
body .ex-content > * + :is(h1, h2) { margin-top: var(--ex-flow-section); }
body .ex-content > :is(h1, h2, h3, h4, h5, h6) + *,
body .ex-content :is(.wp-block-group.is-layout-flow, .wp-block-group.is-layout-constrained, .wp-block-group__inner-container, .wp-block-column, .ex-card) > :is(h1, h2, h3, h4, h5, h6) + * {
	margin-top: var(--ex-flow);
}
/* Inside a card everything sits at the text gap. */
body .ex-content .ex-card > * + * { margin-top: var(--ex-flow); }
body .ex-content > * + .wp-block-separator,
body .ex-content > .wp-block-separator + * { margin-top: var(--ex-flow); }
/* The carried Additional CSS (Hello Elementor's, moves to this theme at the switch) zeroes gallery margins and pads
   videos 2.5em top and bottom, both with two-class selectors; the rules win back. */
body .ex-content > * + .wp-block-gallery.has-nested-images,
body .ex-content > * + .wp-block-embed.is-type-video { margin-top: var(--ex-flow-block); }
body .ex-content .wp-block-embed.is-type-video { padding-block: 0; }
/* Margins saved on a block (Registration panels, Bridge cards row) give way to the rules. */
body .ex-content > [style*="margin"] { margin-bottom: 0 !important; }
body .ex-content > [style*="margin"]:not(:first-child) { margin-top: var(--ex-flow-block) !important; }
body .ex-content > [style*="margin"]:first-child { margin-top: 0 !important; }
/* Sponsor Section (reusable block 13423, saved with 45px margins and 10px padding). */
body .ex-content > .sponsor-section:not(:first-child),
body .ex-content > .sponsor-section + * { margin-top: var(--ex-flow-section) !important; }
body .ex-content .sponsor-section { padding: var(--ex-s-2) !important; }
/* Grids and inline rows: one gap. */
body .ex-content .wp-block-columns { gap: var(--ex-gap); }
body .ex-content .wp-block-buttons { gap: var(--ex-s-2); }
body .ex-content :is(.wp-block-image, .wp-block-embed, .wp-block-video) figcaption { margin: var(--ex-s-2) 0 0; }
/* Lists keep the browser's 40px indent, as on the Elementor site (GeneratePress zeroes list padding and indents with
   a margin instead, which the rule above removes). Only plain and block-editor lists; plugin lists keep their own. */
.ex-content :where(ul:not([class]), ol:not([class]), ul.wp-block-list, ol.wp-block-list) { padding-left: 40px; }
/* Headings that were Elementor heading widgets (el2blocks adds .ex-el-heading): Elementor drew them in the kit's
   primary font, Roboto 600, at Hello's reset sizes and line-height 1 — not in the display face text-editor headings use. */
.ex-content .ex-el-heading { font-family: var(--ex-body); font-weight: 600; line-height: 1; }
.ex-content h1.ex-el-heading { font-size: 2.5rem; }
.ex-content h2.ex-el-heading { font-size: 2rem; }
.ex-content h3.ex-el-heading { font-size: 1.75rem; }
.ex-content h4.ex-el-heading { font-size: 1.5rem; }
.ex-content h5.ex-el-heading { font-size: 1.25rem; }
.ex-content h6.ex-el-heading { font-size: 1rem; }
.ex-content .iti__dropdown-content * { color: #333; }

/* Card grid (Team page): dark blue panels, three across, as the Elementor rows were. The block's own grid layout
   sets the columns in the editor; these rules make the front end match at every width. */
.ex-content .ex-cards {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--ex-gap);
}
@media (max-width: 1024px) { .ex-content .ex-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) { .ex-content .ex-cards { grid-template-columns: minmax(0, 1fr); } }
.ex-card {
	padding: var(--ex-pad);
	background: #1a1c4b;
	text-align: center;
}
.ex-card > * { max-width: none !important; }
.ex-card .wp-block-image img { width: 100%; height: auto; display: block; }
/* People cards (Team): round photos, as the Elementor page had, whatever shape the uploaded photo is. */
.cmg-people-card .wp-block-image img {
	width: 80%;
	margin: var(--ex-s-2) auto 0;
	aspect-ratio: 1;
	object-fit: cover;
	border-radius: 50%;
}
.ex-card h2 {
	font-family: var(--ex-body);
	font-size: 32px;
	font-weight: 600;
	line-height: 1;
}

/* Email Reveal (Code Snippet 15) button, as it looks under Hello Elementor's reset.css: outlined in Hello's #c36. */
button.reveal-email {
	padding: 0.5rem 1rem;
	background: transparent;
	border: 1px solid #c36;
	border-radius: 3px;
	color: #c36;
	font: inherit;
	line-height: 1.5;
	cursor: pointer;
}
button.reveal-email:hover, button.reveal-email:focus { background: #c36; color: #fff; }

/* ---------- Footer (footer 283) ---------- */
.ex-footer {
	margin: 2em 0 1em;
	padding: var(--ex-s-4) var(--ex-s-3);
	background: var(--ex-navy-3);
}
.ex-footer__inner {
	max-width: 600px;
	margin: 0 auto;
	text-align: center;
	font-size: 13px;
	color: var(--ex-muted);
}
.ex-footer__inner p { margin: 0 0 1em; }
.ex-footer__inner p:last-child { margin-bottom: 0; }
.ex-footer a { color: var(--ex-muted); }

/* Sponsors: tier titles stay white on the CiG iDEA teal panel, as on the Elementor-era site (Cory 2026-10-28);
   the iag-content plugin defaults them to black there. Sponsor names keep the plugin's black. */
.iag-sponsors__event--cig-idea-summit .iag-sponsors__tier-title { color: #fff; }

/* Sponsor lists ([iag_sponsors], iag-content) and speaker grids ([people_grid], cmg-people-grid): their own
   per-element gaps (40 / 25 / 50+20 / 26 / 24 px) mapped onto the scale. The plugins stay as they are. */
.ex-content .iag-sponsors__event { margin: 0; }
.ex-content .iag-sponsors__event + .iag-sponsors__event { margin-top: var(--ex-flow-section); }
.ex-content .iag-sponsors__event-title { margin: 0 0 var(--ex-s-4); }
.ex-content .iag-sponsors__event--accented .iag-sponsors__event-title { margin-top: 0; }
.ex-content .iag-sponsors__event--accented { padding: var(--ex-s-3) var(--ex-s-4) var(--ex-s-4); }
.ex-content .iag-sponsors__tier-title { margin: var(--ex-flow-section) 0 var(--ex-s-3); }
.ex-content .iag-sponsors__event-title + .iag-sponsors__tier-title,
.ex-content .iag-sponsors__powered + .iag-sponsors__tier-title { margin-top: var(--ex-s-4); }
.ex-content .iag-sponsors__grid { gap: var(--ex-gap); margin: 0 auto; }
.ex-content .cmg-people-grid { gap: var(--ex-gap); }
@media (max-width: 900px) { .ex-content .cmg-people-grid { gap: var(--ex-s-3); } }
@media (max-width: 767px) {
	.ex-content .iag-sponsors__event--accented { padding: var(--ex-s-2) var(--ex-s-3) var(--ex-s-3); }
	.ex-content .iag-sponsors__grid { gap: var(--ex-s-3); }
}

/* Dropdowns near the right edge open leftwards: the last two top items (More, History) by default, and any submenu
   ex-site.js finds would run past the viewport (.ex-open-left). Nested panels then open to the left too. */
@media (min-width: 56.3125em) {
	.ex-menu__list > li:nth-last-child(-n+2) > ul { left: auto; right: 0; }
	.ex-menu__list > li:nth-last-child(-n+2) ul ul,
	.ex-menu__list li.ex-open-left > ul { left: auto; right: 100%; }
	.ex-menu__list ul .menu-item-has-children.ex-open-left > a::after,
	.ex-menu__list > li:nth-last-child(-n+2) ul .menu-item-has-children > a::after { transform: rotate(135deg); }
}

/* Tableberg cells whose border was saved without a colour ("border-top: 1px solid;") would draw it in the text
   colour, white on this theme (Schedule page, "Event" header). Give those the black the other cells use. */
.wp-block-tableberg [style*="border-top: 1px solid;"] { border-top-color: #000 !important; }
.wp-block-tableberg [style*="border-bottom: 1px solid;"] { border-bottom-color: #000 !important; }
.wp-block-tableberg [style*="border-left: 1px solid;"] { border-left-color: #000 !important; }
.wp-block-tableberg [style*="border-right: 1px solid;"] { border-right-color: #000 !important; }
