/* =========================================================================
   SVSW 2026 — Direction C "Crowd Density" homepage.
   Pulled from /design_handoff_svsw_homepage/SVSW Home - Direction C.html.
   Display type is Archivo at font-stretch 125% (extended) and font-weight 900.
   ========================================================================= */

:root {
	--svsw-black:       #10151F;
	--svsw-paper:       #F4F4F1;
	--svsw-white:       #FFFFFF;
	--svsw-blue:        #1D5FD6;
	--svsw-blue-deep:   #15409A;
	--svsw-blue-lite:   #6E9FF2;
	--svsw-green:       #1F7A4D;
	--svsw-green-deep:  #14573A;
	--svsw-green-lite:  #5DBE92;
	--svsw-ink-dim:     rgba(16, 21, 31, 0.62);
	--svsw-hair-l:      rgba(16, 21, 31, 0.14);
	--svsw-hair-d:      rgba(255, 255, 255, 0.22);
	/* Max readable width for section content. Backgrounds (the hero shows
	   split, the room band's grid texture, paper / black panels) keep
	   running full-bleed, but the inner content (headlines, lede, stat
	   rows, photo mosaic, sponsor names, footer CTA) caps at this width
	   so the page doesn't sprawl on ultra-wide displays. */
	--svsw-content-max: 1400px;
}

body {
	background: var(--svsw-paper);
	color: var(--svsw-black);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	font-synthesis: none;
	margin: 0;
}
/* Section-flow reset — applies to BOTH home and inner pages so there's no
   gap between the header/sections/footer. Previously scoped to body.home
   which left a white bar above the hero on /faq, /travel-venue, etc. */
.wp-site-blocks,
.svsw-site-header,
.svsw-main { gap: 0 !important; }
.wp-site-blocks > * + *,
.wp-site-blocks > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }
.svsw-site-header,
.svsw-site-header > .wp-block-group,
.svsw-site-header > .wp-block-group > .wp-block-group { margin: 0 !important; padding-top: 0 !important; padding-bottom: 0 !important; }
.svsw-site-header .svsw-utility-bar,
.svsw-site-header .svsw-primary-bar { margin: 0 !important; }
.svsw-main, .svsw-main > * { margin-top: 0 !important; margin-bottom: 0 !important; }
.svsw-main > * + * { margin-top: 0 !important; }
.svsw-main { padding: 0 !important; }


/* -------------------------------------------------------------------------
   Display type (.exp) — Archivo MAX wide + MAX weight.
   Used for every section H2 and the hero H2s in the show panels.
   ------------------------------------------------------------------------- */
.svsw-exp,
.is-style-svsw-exp,
.svsw-display {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	text-transform: uppercase;
	letter-spacing: 0.005em;
	line-height: 1;
	margin: 0;
}

/* Override theme.json default for site-content headings inside SVSW sections. */
.svsw-section h1,
.svsw-section h2,
.svsw-section h3,
.svsw-section h4 {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	text-transform: uppercase;
	letter-spacing: 0.005em;
}

/* -------------------------------------------------------------------------
   Small label / eyebrow.
   ------------------------------------------------------------------------- */
.svsw-label,
.is-style-svsw-label {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--svsw-ink-dim);
	margin: 0;
}
.svsw-on-black .svsw-label,
.svsw-on-black .is-style-svsw-label {
	color: rgba(255, 255, 255, 0.5);
}

/* -------------------------------------------------------------------------
   Buttons — square, ultra-thin, uppercase, .1em tracking.
   These override the parent theme.json rounded-pill defaults inside SVSW
   sections by stripping border-radius and re-spacing.
   ------------------------------------------------------------------------- */
.svsw-btn {
	display: inline-block;
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 13px;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	padding: 14px 30px;
	text-decoration: none;
	border-radius: 0;
	border: none;
	cursor: pointer;
	line-height: 1;
}
.svsw-btn--white {
	background: var(--svsw-white);
	color: var(--svsw-black);
}
.svsw-btn--white:hover {
	background: var(--svsw-paper);
}
.svsw-btn--black {
	background: var(--svsw-black);
	color: var(--svsw-white);
}
.svsw-btn--black:hover {
	background: #000;
}
.svsw-btn--line-w {
	background: transparent;
	color: var(--svsw-white);
	border: 1.5px solid var(--svsw-white);
}
.svsw-btn--line-w:hover {
	background: var(--svsw-white);
	color: var(--svsw-black);
}
.svsw-btn--bare {
	color: var(--svsw-white);
	padding: 14px 0;
}

/* Sweep button radius INSIDE svsw sections (paper buttons rendered by
   wp:button still inherit the parent's 999px pill from theme.json). */
.svsw-section .wp-block-button__link,
.svsw-section-paper .wp-block-button__link,
.svsw-section-black .wp-block-button__link {
	border-radius: 0 !important;
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 13px;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	padding: 14px 30px;
}

/* -------------------------------------------------------------------------
   Site header — utility bar + sticky nav.
   ------------------------------------------------------------------------- */
.svsw-utility-bar {
	background: var(--svsw-black);
	color: rgba(255, 255, 255, 0.6);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	line-height: 1.4;
	padding: 14px 44px;
	border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.svsw-utility-bar .wp-block-group {
	display: flex;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 6px 24px;   /* row-gap × column-gap — keeps stacked lines breathing */
	max-width: none;
}
.svsw-utility-bar p {
	padding: 4px 0;  /* per-line vertical breathing inside the bar */
}
.svsw-utility-bar a {
	color: inherit;
	text-decoration: none;
	border-bottom: none;
}
.svsw-utility-bar a:hover { color: var(--svsw-white); }

.svsw-primary-bar {
	background: var(--svsw-black) !important;
	color: var(--svsw-white);
	padding: 18px 44px !important;
	border-bottom: 1px solid rgba(255, 255, 255, 0.12) !important;
}

/* Make the WHOLE header sticky so logo + menu stay pinned at the top of the
   viewport on scroll. Both bars (utility + primary) stay visible.
   `position: sticky` needs to be on a child of the scrolling container — in
   WordPress FSE the scrolling container is the body, and the header sits as
   a direct child of .wp-site-blocks. */
body.home .wp-site-blocks > .svsw-site-header,
.svsw-site-header {
	position: sticky !important;
	top: 0 !important;
	z-index: 50;
	background: var(--svsw-black);
}
/* WordPress 6+ wraps template-parts in .wp-block-template-part. If that's our
   real ancestor, hoist sticky onto it instead. */
.wp-block-template-part:has(> .svsw-site-header) {
	position: sticky;
	top: 0;
	z-index: 50;
}
.svsw-primary-bar > .wp-block-group {
	display: flex !important;
	align-items: center;
	justify-content: space-between;
	gap: 36px;
	flex-wrap: nowrap;
}
.svsw-primary-bar .wp-block-site-logo {
	flex: 0 0 auto;
}
.svsw-primary-bar .wp-block-site-logo img {
	/* The svsw_white.png asset is 1000×241 but only the top 204px have pixels
	   — the bottom 15.4% (~13px at 88px height) is transparent. Pushing the
	   img down by half that amount with margin-top makes the *visible* top
	   and bottom gaps inside the bar equal. */
	height: 88px !important;
	max-height: 88px !important;
	width: auto !important;
	max-width: none !important;
	display: block;
	margin-top: 14px;
}
.svsw-primary-nav {
	margin-left: auto !important;
	flex: 1 1 auto;
	display: flex;
	justify-content: flex-end;
}
.svsw-primary-bar .wp-block-buttons {
	flex: 0 0 auto;
	margin-left: 28px;
}
.svsw-primary-nav .wp-block-navigation__container {
	gap: 28px;
}
.svsw-primary-nav .wp-block-navigation__container {
	flex-wrap: nowrap;
}

/* Home icon — replaces the "Home" text on the first nav item with a small
   SVG glyph. Stays in the nav block so it collapses into the hamburger
   overlay at narrow widths along with the other items. */
.svsw-primary-nav .svsw-nav-home > a {
	color: transparent !important;
	font-size: 0 !important;
	letter-spacing: 0 !important;
	padding: 0 !important;
	width: 22px !important;
	height: 22px !important;
	background-color: rgba(255, 255, 255, 0.85);
	-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 3 3 11h2v10h5v-7h4v7h5V11h2Z'/></svg>") center / contain no-repeat;
	        mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M12 3 3 11h2v10h5v-7h4v7h5V11h2Z'/></svg>") center / contain no-repeat;
	display: inline-block;
	vertical-align: middle;
	transition: background-color 0.15s ease;
}
.svsw-primary-nav .svsw-nav-home > a:hover { background-color: var(--svsw-white); }
.svsw-primary-nav .svsw-nav-home.current-menu-item > a,
body.home .svsw-primary-nav .svsw-nav-home > a { background-color: var(--svsw-blue-lite); }

/* Submenu dropdowns inside the primary nav — WP default is a white card on
   white text. Restyle to the SVSW dark theme so items are actually readable.
   The dropdown sits directly below the parent link (no margin gap). A
   transparent ::before bridge gives a generous catch-zone in case the mouse
   travels slightly off-axis. */
.svsw-primary-nav .wp-block-navigation__submenu-container {
	background-color: var(--svsw-black) !important;
	border: 1px solid rgba(255, 255, 255, 0.15) !important;
	border-radius: 10px !important;
	padding: 8px 0 !important;
	min-width: 220px !important;
	box-shadow: 0 18px 40px -16px rgba(0, 0, 0, 0.55) !important;
	margin-top: 0 !important;
}
/* Generous transparent hover bridge above the dropdown — keeps the parent
   :hover engaged while the mouse travels from "More" to the menu items. */
.svsw-primary-nav .wp-block-navigation__submenu-container::before {
	content: "";
	position: absolute;
	left: -12px;
	right: -12px;
	top: -18px;
	height: 18px;
	background: transparent;
	display: block;
}
.svsw-primary-nav .wp-block-navigation__submenu-container .wp-block-navigation-item {
	display: block;
}
.svsw-primary-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	color: rgba(255, 255, 255, 0.88) !important;
	background: transparent !important;
	padding: 10px 18px !important;
	font-size: 13px !important;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	white-space: nowrap;
}
.svsw-primary-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
.svsw-primary-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus {
	color: var(--svsw-white) !important;
	background: rgba(255, 255, 255, 0.06) !important;
}
.svsw-primary-nav .wp-block-navigation__submenu-icon {
	color: rgba(255, 255, 255, 0.7);
	margin-left: 6px;
}
.svsw-primary-nav .wp-block-navigation__container > .wp-block-navigation-item > a,
.svsw-primary-nav .wp-block-navigation-item__content {
	color: rgba(255, 255, 255, 0.85) !important;
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	text-decoration: none;
	white-space: nowrap; /* keeps overflow detection honest */
}
.svsw-primary-nav .wp-block-navigation__container > .wp-block-navigation-item > a:hover,
.svsw-primary-nav .wp-block-navigation-item__content:hover {
	color: var(--svsw-white) !important;
}

/* CTA Register button in nav — solid white. */
.svsw-cta-register .wp-block-button__link {
	background: var(--svsw-white) !important;
	color: var(--svsw-black) !important;
	border: none !important;
}

/* -------------------------------------------------------------------------
   Section 1: shows split (the hero).
   Two side-by-side panels, gradient tint over a desaturated photo, with a
   white circle "hub" floating over the seam.
   ------------------------------------------------------------------------- */
.svsw-shows {
	display: grid;
	grid-template-columns: 1fr 1fr;
	position: relative;
	background: var(--svsw-black);
}
.svsw-show {
	position: relative;
	min-height: 560px;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	padding: 44px;
	color: var(--svsw-white);
	overflow: hidden;
}
.svsw-show--inno { padding-right: 130px; }
.svsw-show--mil  { padding-left:  130px; }
.svsw-show__media {
	position: absolute; inset: 0;
}
.svsw-show__media img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: grayscale(1) contrast(1.08) brightness(0.92);
}

/* Satellite Innovation panel — trim ceiling/pipes off the top of the crowd
   shot so the audience is the dominant element behind the gradient. */
.svsw-show--inno .svsw-show__media img {
	object-position: 50% 100%; /* anchor bottom — top gets clipped first */
	transform: scale(1.18);
	transform-origin: center bottom;
}

/* MilSat panel — keep the two-shot composition. Just a touch of upward
   shift so the speakers land roughly where the gradient is darkest. */
.svsw-show--mil .svsw-show__media img {
	object-position: 50% 60%;
}
.svsw-show__tint {
	position: absolute; inset: 0;
	mix-blend-mode: multiply;
	opacity: 0.88;
	pointer-events: none;
}
.svsw-show--inno .svsw-show__tint { background: linear-gradient(160deg, var(--svsw-blue),  var(--svsw-blue-deep)); }
.svsw-show--mil  .svsw-show__tint { background: linear-gradient(160deg, var(--svsw-green), var(--svsw-green-deep)); }
.svsw-show__shade {
	position: absolute; inset: 0;
	background: linear-gradient(180deg, rgba(0,0,0,0.15), transparent 38%, rgba(0,0,0,0.45));
	pointer-events: none;
}
.svsw-show__body {
	position: relative;
	pointer-events: none;
}
.svsw-show__body a { pointer-events: auto; }
.svsw-show__meta {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	opacity: 0.85;
}
.svsw-show__title {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: 50px;
	line-height: 0.98;
	text-transform: uppercase;
	margin: 14px 0 12px;
	color: var(--svsw-white);
}
.svsw-show__lede {
	font-size: 15px;
	line-height: 1.55;
	max-width: 380px;
	margin: 0 0 22px;
	opacity: 0.92;
	text-wrap: pretty;
}
.svsw-show__row {
	display: flex;
	flex-wrap: wrap;
	gap: 12px 10px;
}
/* Below 1200px the three-button row was overflowing each show panel
   (especially with the 110–130px inner padding reserved for the central
   hub). Trim button padding, kill the line-height ceiling on wrapped
   buttons, and let the bare "Who attends" link drop to its own line so
   the two solid CTAs sit side-by-side instead of being clipped. */
@media (max-width: 1200px) {
	.svsw-show__row .svsw-btn {
		font-size: 12px;
		padding: 12px 18px;
		letter-spacing: 0.08em;
	}
	.svsw-show__row .svsw-btn--bare {
		padding: 12px 0;
		flex-basis: 100%;
	}
}

.svsw-hub {
	position: absolute;
	left: 50%;
	/* Sit above the MilSat speakers' heads — moved up from 34% to 24%. */
	top: 24%;
	transform: translate(-50%, -50%);
	width: 168px; height: 168px;
	border-radius: 50%;
	background: var(--svsw-white);
	color: var(--svsw-black);
	display: grid; place-items: center;
	text-align: center;
	box-shadow: 0 12px 40px rgba(0, 0, 0, 0.35);
	z-index: 5;
	pointer-events: none;
}
.svsw-hub__t1 {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: 13px;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	line-height: 1.2;
}
.svsw-hub__t2 {
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: 0.14em;
	margin-top: 6px;
	color: var(--svsw-ink-dim);
}

@media (max-width: 1100px) {
	.svsw-show--inno { padding-right: 110px; }
	.svsw-show--mil  { padding-left:  110px; }
	.svsw-show__title { font-size: 42px; }
}
@media (max-width: 720px) {
	.svsw-shows { grid-template-columns: 1fr; }
	.svsw-show--inno, .svsw-show--mil { padding: 44px; }
	.svsw-hub { top: auto; bottom: -79px; }
}

/* -------------------------------------------------------------------------
   Who attends — white break between the dark hero and the dark room band.
   Anchor target for the WHO ATTENDS → buttons in the hero.
   ------------------------------------------------------------------------- */
.svsw-who {
	background: var(--svsw-white);
	color: var(--svsw-black);
	padding: 80px 44px 72px;
	scroll-margin-top: 130px; /* clear sticky header on scroll-to */
}
.svsw-who__head {
	max-width: 900px;
	margin-bottom: 48px;
}
.svsw-who__head .svsw-label { display: block; margin-bottom: 14px; }
.svsw-who__head h2 {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: clamp(2rem, 1.4rem + 2.2vw, 3rem);
	line-height: 1.02;
	text-transform: uppercase;
	letter-spacing: 0.005em;
	margin: 0 0 16px;
	color: var(--svsw-black);
}
.svsw-who__lede {
	font-size: 17px;
	line-height: 1.55;
	color: var(--svsw-ink-dim);
	margin: 0;
	max-width: 900px;
	text-wrap: pretty;
}

/* Stats row */
.svsw-who__stats {
	list-style: none;
	margin: 0 0 56px;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 20px;
}
.svsw-who__stats li {
	padding: 22px 24px 20px;
	border: 1px solid var(--svsw-hair-l);
	border-radius: 12px;
	background: var(--svsw-white);
	box-shadow: 0 1px 0 rgba(16, 21, 31, 0.03);
}
.svsw-who__stat-n {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: clamp(2rem, 1.4rem + 2vw, 2.8rem);
	line-height: 1;
	color: var(--svsw-black);
	margin-bottom: 6px;
}
.svsw-who__stat-suffix {
	color: var(--svsw-blue);
	margin-left: 1px;
}
.svsw-who__stats li:nth-child(2) .svsw-who__stat-suffix { color: var(--svsw-green); }
.svsw-who__stats li:nth-child(3) .svsw-who__stat-suffix { color: var(--svsw-blue); }
.svsw-who__stats li:nth-child(4) .svsw-who__stat-suffix { color: var(--svsw-green); }
.svsw-who__stat-l {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--svsw-ink-dim);
	line-height: 1.4;
}

/* Commercial / National-security split — same colored cards as the speaking
   page programs section, with bullet lists inside. */
.svsw-who__split {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 18px;
}
.svsw-who-card {
	position: relative;
	padding: 32px 30px 28px;
	border-radius: 12px;
	color: var(--svsw-paper);
	box-shadow: 0 18px 40px -20px rgba(16, 21, 31, 0.45);
	overflow: hidden;
}
.svsw-who-card--blue  { background: linear-gradient(160deg, var(--svsw-blue) 0%, var(--svsw-blue-deep) 100%); }
.svsw-who-card--green { background: linear-gradient(160deg, var(--svsw-green) 0%, var(--svsw-green-deep) 100%); }
.svsw-who-card::after {
	content: "";
	position: absolute; inset: 0;
	background:
		radial-gradient(circle at 10% 90%, rgba(255, 255, 255, 0.12) 0, transparent 40%),
		linear-gradient(180deg, transparent 60%, rgba(0, 0, 0, 0.18) 100%);
	pointer-events: none;
}
.svsw-who-card > * { position: relative; z-index: 1; }
.svsw-who-card__eyebrow {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	opacity: 0.9;
	margin-bottom: 8px;
}
.svsw-who-card__title {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: clamp(1.4rem, 1rem + 1vw, 1.8rem);
	line-height: 1.05;
	text-transform: uppercase;
	margin: 0 0 18px;
	color: var(--svsw-paper);
}
.svsw-who-card ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
.svsw-who-card li {
	font-size: 14.5px;
	line-height: 1.45;
	padding: 8px 0;
	border-top: 1px solid rgba(255, 255, 255, 0.18);
}
.svsw-who-card li:first-child { border-top: none; padding-top: 0; }

.svsw-who__foot {
	margin: 28px 0 0;
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--svsw-ink-dim);
	text-align: center;
}

/* Highlight pulse — fires once when the section is scrolled to from a hero
   button click. JS adds .is-svsw-flashing for ~2s. */
.svsw-who.is-svsw-flashing { animation: svsw-flash 1.8s ease-out 1; }
@keyframes svsw-flash {
	0%   { box-shadow: 0 0 0 0 rgba(29, 95, 214, 0.0); }
	30%  { box-shadow: inset 0 0 0 3px rgba(29, 95, 214, 0.18); }
	100% { box-shadow: 0 0 0 0 rgba(29, 95, 214, 0.0); }
}

/* Per-card bounce — Innovation button pulses the blue card, MilSat button
   pulses the green card. Subtle scale + colored ring so the user sees what
   they clicked, then settles. */
.svsw-who-card { transform-origin: center top; }
.svsw-who-card.is-svsw-pulse { animation: svsw-pulse 1.2s cubic-bezier(0.34, 1.56, 0.64, 1) 1; }
@keyframes svsw-pulse {
	0%   { transform: scale(1);    box-shadow: 0 18px 40px -20px rgba(16, 21, 31, 0.45); }
	25%  { transform: scale(1.018); box-shadow: 0 22px 48px -18px rgba(16, 21, 31, 0.5), 0 0 0 4px rgba(255, 255, 255, 0.18); }
	60%  { transform: scale(0.998); box-shadow: 0 18px 40px -20px rgba(16, 21, 31, 0.45); }
	100% { transform: scale(1);    box-shadow: 0 18px 40px -20px rgba(16, 21, 31, 0.45); }
}

@media (max-width: 800px) {
	.svsw-who { padding: 56px 20px 48px; }
	.svsw-who__stats { grid-template-columns: 1fr 1fr; gap: 12px; }
	.svsw-who__split { grid-template-columns: 1fr; }
}

/* Smooth scroll to in-page anchors when triggered via [data-svsw-scroll]. */
html { scroll-behavior: smooth; }

/* -------------------------------------------------------------------------
   Section 2: The room.
   Black band, mixed-color display headline, 5-photo mosaic, stats row.
   ------------------------------------------------------------------------- */
.svsw-room {
	position: relative;
	background: var(--svsw-black);
	color: var(--svsw-white);
	padding: 64px 44px 56px;
	overflow: hidden;
	isolation: isolate;
}
/* Grid + stars texture layer behind the headline / mosaic / stats. */
.svsw-room::before {
	content: "";
	position: absolute;
	inset: 0;
	background: url("../images/svsw-grid-texture.png") center/cover no-repeat;
	opacity: 0.55;
	z-index: -1;
}
/* Vignette behind the headline so the white-on-grid stays readable. */
.svsw-room::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(180deg, rgba(16, 21, 31, 0.55) 0%, rgba(16, 21, 31, 0.35) 50%, rgba(16, 21, 31, 0.55) 100%);
	z-index: -1;
	pointer-events: none;
}
.svsw-room__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 40px;
	margin-bottom: 30px;
}
.svsw-room__title {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: clamp(2rem, 1.4rem + 2vw, 3rem);
	line-height: 1.02;
	text-transform: uppercase;
	margin: 0;
	color: var(--svsw-white);
	white-space: nowrap;
}
@media (max-width: 720px) {
	.svsw-room__title { white-space: normal; font-size: clamp(1.6rem, 1.1rem + 1.5vw, 2rem); }
}
.svsw-room__title .b { color: var(--svsw-blue-lite); }
.svsw-room__title .g { color: var(--svsw-green-lite); }
.svsw-room__head .svsw-label {
	color: rgba(255, 255, 255, 0.5);
	white-space: nowrap;
}
.svsw-mosaic {
	display: grid;
	grid-template-columns: 1.6fr 1fr 1fr;
	grid-template-rows: 260px 200px;
	gap: 12px;
}
.svsw-mosaic figure {
	margin: 0;
	position: relative;
	overflow: hidden;
}
.svsw-mosaic figure:first-child {
	grid-row: 1 / 3;
}
.svsw-mosaic img {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	object-fit: cover;
	filter: saturate(0.65) contrast(1.05);
}
.svsw-mosaic figcaption {
	position: absolute; left: 0; right: 0; bottom: 0;
	padding: 14px 16px 12px;
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.85);
	background: linear-gradient(180deg, transparent, rgba(16,21,31,0.85));
	pointer-events: none;
}
.svsw-stats {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 18px 0;
	margin-top: 34px;
	padding-top: 24px;
	border-top: 1px solid var(--svsw-hair-d);
}
.svsw-stat {
	display: flex;
	align-items: baseline;
	gap: 10px;
	padding-right: 28px;
	margin-right: 28px;
	border-right: 1px solid var(--svsw-hair-d);
}
.svsw-stat:last-of-type {
	border-right: none;
	margin-right: 0;
	padding-right: 0;
}
.svsw-stat__n {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: clamp(24px, 2.6vw, 34px);
	color: var(--svsw-white);
}
.svsw-stat:nth-child(1) .svsw-stat__n { color: var(--svsw-blue-lite); }
.svsw-stat:nth-child(2) .svsw-stat__n { color: var(--svsw-green-lite); }
.svsw-stat__l {
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.55);
}
.svsw-stats .svsw-btn { margin-left: auto; white-space: nowrap; }

@media (max-width: 1100px) {
	.svsw-stats .svsw-btn { margin-left: 0; }
}
@media (max-width: 720px) {
	.svsw-mosaic { grid-template-columns: 1fr 1fr; grid-template-rows: repeat(3, 180px); }
	.svsw-mosaic figure:first-child { grid-row: auto; grid-column: 1 / 3; }
}

/* -------------------------------------------------------------------------
   Section 3: Agenda preview.
   ------------------------------------------------------------------------- */
.svsw-agenda {
	padding: 64px 44px;
	background: var(--svsw-paper);
}
.svsw-agenda__head {
	display: flex;
	align-items: center;
	gap: 22px;
	margin-bottom: 26px;
}
.svsw-agenda__head h2 {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: 36px;
	text-transform: uppercase;
	margin: 0;
}
.svsw-agenda__legend {
	margin-left: auto;
	display: flex;
	gap: 8px;
}
.svsw-tag {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 10.5px;
	font-weight: 800;
	letter-spacing: 0.12em;
	color: var(--svsw-white);
	padding: 6px 12px;
}
.svsw-tag--inno { background: var(--svsw-blue); }
.svsw-tag--mil  { background: var(--svsw-green); }
.svsw-tag--both { background: linear-gradient(90deg, var(--svsw-blue) 50%, var(--svsw-green) 50%); }

.svsw-sess {
	display: grid;
	grid-template-columns: 12px 96px 1fr auto;
	align-items: center;
	gap: 22px;
	background: var(--svsw-white);
	border: 1px solid var(--svsw-hair-l);
	margin-bottom: 8px;
}
.svsw-sess__spine { align-self: stretch; }
.svsw-sess__spine--inno { background: var(--svsw-blue); }
.svsw-sess__spine--mil  { background: var(--svsw-green); }
.svsw-sess__spine--both { background: linear-gradient(180deg, var(--svsw-blue) 50%, var(--svsw-green) 50%); }
.svsw-sess__time {
	font-weight: 900;
	font-size: 19px;
	padding: 18px 0;
}
.svsw-sess__what-t {
	font-weight: 700;
	font-size: 17.5px;
	line-height: 1.3;
}
.svsw-sess__what-w {
	font-size: 12.5px;
	color: var(--svsw-ink-dim);
	margin-top: 3px;
}
.svsw-sess__tags {
	display: flex;
	gap: 8px;
	padding-right: 18px;
}
.svsw-agenda__more {
	display: inline-block;
	margin-top: 16px;
	font-size: 12.5px;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--svsw-black);
	text-decoration: none;
	border-bottom: 2px solid var(--svsw-black);
	padding-bottom: 3px;
}

/* -------------------------------------------------------------------------
   Agenda page preset row.
   On /agenda/ the user sees the full week. The two coloured pills link to
   the schedule-group taxonomy archives — /schedule/satellite-innovation/
   and /schedule/milsat-symposium/ — which render the same agenda block
   auto-scoped to that track via the parent's taxonomy-schedule-group.html.
   ------------------------------------------------------------------------- */
.svsw-agenda-presets {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0 0 32px;
	padding: 18px;
	background: var(--svsw-paper, #F4F4F1);
	border: 1px solid var(--svsw-hair-l, #d9d9d4);
	border-radius: 2px;
}
.svsw-agenda-preset {
	display: inline-flex;
	align-items: center;
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 110%;
	font-weight: 700;
	font-size: 13px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	padding: 11px 18px;
	border: 1.5px solid var(--svsw-black);
	background: transparent;
	color: var(--svsw-black);
	text-decoration: none;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
a.svsw-agenda-preset:hover {
	background: var(--svsw-black);
	color: var(--svsw-white);
}
.svsw-agenda-preset--current {
	background: var(--svsw-black);
	color: var(--svsw-white);
	cursor: default;
}
.svsw-agenda-preset--blue {
	border-color: var(--wp--preset--color--blue, #1D5FD6);
	color: var(--wp--preset--color--blue, #1D5FD6);
}
.svsw-agenda-preset--green {
	border-color: var(--wp--preset--color--green, #1F7A4D);
	color: var(--wp--preset--color--green, #1F7A4D);
}
a.svsw-agenda-preset--blue:hover {
	background: var(--wp--preset--color--blue, #1D5FD6);
	border-color: var(--wp--preset--color--blue, #1D5FD6);
	color: var(--svsw-white);
}
a.svsw-agenda-preset--green:hover {
	background: var(--wp--preset--color--green, #1F7A4D);
	border-color: var(--wp--preset--color--green, #1F7A4D);
	color: var(--svsw-white);
}
/* On a /schedule/<slug>/ archive WP adds a body class like
   `term-satellite-innovation` / `term-milsat-symposium`. Use it to render
   the current track's pill in its filled style, so the active context
   reads instantly without JS. */
body.term-satellite-innovation .svsw-agenda-preset--blue {
	background: var(--wp--preset--color--blue, #1D5FD6);
	color: var(--svsw-white);
	cursor: default;
	pointer-events: none;
}
body.term-milsat-symposium .svsw-agenda-preset--green {
	background: var(--wp--preset--color--green, #1F7A4D);
	color: var(--svsw-white);
	cursor: default;
	pointer-events: none;
}

@media (max-width: 600px) {
	.svsw-agenda-presets { padding: 12px; gap: 6px; }
	.svsw-agenda-preset  { font-size: 11px; padding: 9px 12px; flex: 1 1 auto; justify-content: center; }
}

/* -------------------------------------------------------------------------
   Section 4: Venue.
   Two-column intro (text + facts), then full-width CHM banner image below.
   ------------------------------------------------------------------------- */
.svsw-venue {
	display: flex;
	flex-direction: column;
	background: var(--svsw-white);
	border-top: 1px solid var(--svsw-hair-l);
}
/* Eyebrow + headline span the full width of the section. */
.svsw-venue__head {
	padding: 64px 48px 24px;
}
.svsw-venue__head .svsw-label {
	display: block;
	margin-bottom: 14px;
}
.svsw-venue__head h2 {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: clamp(2rem, 1.4rem + 2.2vw, 3rem);
	line-height: 1.02;
	text-transform: uppercase;
	letter-spacing: 0.005em;
	color: var(--svsw-black);
	margin: 0;
}
.svsw-venue__intro {
	display: grid;
	grid-template-columns: 1.4fr 1fr;
	gap: 56px;
	padding: 8px 48px 40px;
	align-items: start;
}
@media (max-width: 800px) {
	.svsw-venue__head { padding: 40px 20px 16px; }
	.svsw-venue__intro {
		grid-template-columns: 1fr;
		gap: 28px;
		padding: 8px 20px 28px;
	}
}
.svsw-venue__text {
	display: flex;
	flex-direction: column;
	max-width: 640px;
}
.svsw-venue__text p {
	font-size: 15px;
	line-height: 1.6;
	color: var(--svsw-ink-dim);
	max-width: 480px;
	margin: 0 0 24px;
	text-wrap: pretty;
}
.svsw-venue__text .svsw-btn { align-self: flex-start; }

/* Quick facts column — balances the right side and gives venue trivia
   instead of leaving the upper-right empty. */
.svsw-venue__facts {
	list-style: none;
	margin: 6px 0 0;
	padding: 22px 26px;
	background: var(--svsw-paper);
	border: 1px solid var(--svsw-hair-l);
	border-radius: 12px;
	display: flex;
	flex-direction: column;
	gap: 16px;
}
.svsw-venue__facts li {
	display: grid;
	grid-template-columns: 92px 1fr;
	gap: 18px;
	align-items: baseline;
}
.svsw-venue__facts-k {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--svsw-ink-dim);
	line-height: 1.5;
}
.svsw-venue__facts-v {
	font-size: 14px;
	line-height: 1.45;
	color: var(--svsw-black);
}
@media (max-width: 480px) {
	.svsw-venue__facts li { grid-template-columns: 1fr; gap: 4px; }
}

.svsw-venue__banner {
	margin: 0;
	width: 100%;
	background: var(--svsw-white);
	overflow: hidden;
}
.svsw-venue__banner img {
	display: block;
	width: 100%;
	height: auto;
	object-fit: contain;
}
@media (max-width: 720px) {
	.svsw-venue__text { padding: 40px 20px 28px; }
}

/* -------------------------------------------------------------------------
   Section 5: Sponsor names.
   ------------------------------------------------------------------------- */
.svsw-sponsors {
	padding: 48px 44px 56px;
	border-top: 1px solid var(--svsw-hair-l);
	background: var(--svsw-paper);
}
.svsw-sponsors .svsw-label {
	color: var(--svsw-ink-dim);
	margin-bottom: 22px;
	display: block;
}
.svsw-sponsors__names {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	align-items: center;
	margin: 0;
	padding: 0;
	list-style: none;
}
.svsw-sponsors__names li {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-weight: 700;
	font-size: 12.5px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--svsw-black);
	background: var(--svsw-white);
	border: 1px solid var(--svsw-hair-l);
	border-radius: 999px;
	padding: 9px 18px;
	line-height: 1;
	box-shadow: 0 1px 0 rgba(16, 21, 31, 0.03);
}

/* -------------------------------------------------------------------------
   Footer CTA + base.
   ------------------------------------------------------------------------- */
.svsw-footer-cta {
	background: var(--svsw-black);
	color: var(--svsw-white);
	padding: 72px 44px 36px;
}
.svsw-footer-cta__cta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 40px;
	padding-bottom: 48px;
	border-bottom: 1px solid var(--svsw-hair-d);
}
.svsw-footer-cta__cta h2 {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: 44px;
	line-height: 1;
	text-transform: uppercase;
	margin: 0;
	max-width: 640px;
	text-wrap: balance;
	color: var(--svsw-white);
}
.svsw-footer-cta__cta h2 .b { color: var(--svsw-blue-lite); }
.svsw-footer-cta__cta h2 .g { color: var(--svsw-green-lite); }
.svsw-footer-cta__base {
	display: flex;
	justify-content: space-between;
	padding-top: 26px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.45);
}

/* -------------------------------------------------------------------------
   Sponsor / Exhibit page — stats row, why-exhibit cards, tier list,
   closing call-band. svsw-spex-* prefix to avoid collisions.
   ------------------------------------------------------------------------- */
.svsw-spex-stats {
	list-style: none;
	margin: 0 0 8px;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 16px;
}
.svsw-spex-stats li {
	background: var(--svsw-white);
	border: 1px solid var(--svsw-hair-l);
	border-radius: 12px;
	padding: 22px 22px 20px;
}
.svsw-spex-stats__n {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: clamp(2rem, 1.4rem + 2vw, 2.8rem);
	line-height: 1;
	color: var(--svsw-black);
	margin-bottom: 6px;
}
.svsw-spex-stats__n span { color: var(--svsw-blue); margin-left: 2px; }
.svsw-spex-stats li:nth-child(2) .svsw-spex-stats__n span { color: var(--svsw-green); }
.svsw-spex-stats li:nth-child(4) .svsw-spex-stats__n span { color: var(--svsw-green); }
.svsw-spex-stats__l {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--svsw-ink-dim);
	line-height: 1.4;
}
@media (max-width: 720px) {
	.svsw-spex-stats { grid-template-columns: 1fr 1fr; }
}

.svsw-spex-photos {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr;
	gap: 12px;
	margin: 48px 0 8px;
}
.svsw-spex-photos figure {
	margin: 0;
	border-radius: 12px;
	overflow: hidden;
	box-shadow: 0 14px 36px -18px rgba(16, 21, 31, 0.35);
}
.svsw-spex-photos figure:first-child {
	grid-row: span 1;
}
.svsw-spex-photos img {
	display: block;
	width: 100%;
	height: 100%;
	min-height: 240px;
	aspect-ratio: 4/3;
	object-fit: cover;
}
@media (max-width: 800px) {
	.svsw-spex-photos { grid-template-columns: 1fr 1fr; }
	.svsw-spex-photos figure:first-child { grid-column: 1 / 3; }
}
@media (max-width: 480px) {
	.svsw-spex-photos { grid-template-columns: 1fr; }
	.svsw-spex-photos figure:first-child { grid-column: auto; }
}

.svsw-spex-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 16px;
}
.svsw-spex-grid--alt { grid-template-columns: repeat(2, 1fr); gap: 20px; }
@media (max-width: 980px) {
	.svsw-spex-grid { grid-template-columns: 1fr 1fr; }
	.svsw-spex-grid--alt { grid-template-columns: 1fr; }
}
@media (max-width: 580px) {
	.svsw-spex-grid { grid-template-columns: 1fr; }
}
.svsw-spex-card {
	background: var(--svsw-white);
	border: 1px solid var(--svsw-hair-l);
	border-radius: 12px;
	padding: 24px 22px 22px;
	box-shadow: 0 1px 0 rgba(16, 21, 31, 0.03);
}
.svsw-spex-card__n {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: 12.5px;
	letter-spacing: 0.18em;
	color: var(--svsw-blue);
	margin-bottom: 8px;
}
.svsw-spex-grid > .svsw-spex-card:nth-child(2) .svsw-spex-card__n { color: var(--svsw-green); }
.svsw-spex-grid > .svsw-spex-card:nth-child(3) .svsw-spex-card__n { color: var(--svsw-blue); }
.svsw-spex-grid > .svsw-spex-card:nth-child(4) .svsw-spex-card__n { color: var(--svsw-green); }
.svsw-spex-card h3 {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 110%;
	font-weight: 800;
	font-size: 1.05rem;
	line-height: 1.2;
	margin: 0 0 8px;
	color: var(--svsw-black);
	text-transform: none;
	letter-spacing: 0;
}
.svsw-spex-card p {
	margin: 0;
	font-size: 14.5px;
	line-height: 1.55;
	color: #374151;
}

.svsw-spex-tiers {
	list-style: none;
	margin: 0;
	padding: 0;
	border: 1px solid var(--svsw-hair-l);
	border-radius: 12px;
	background: var(--svsw-white);
	overflow: hidden;
}
.svsw-spex-tiers li {
	display: grid;
	grid-template-columns: 220px 1fr;
	gap: 24px;
	padding: 18px 24px;
	border-top: 1px solid var(--svsw-hair-l);
	align-items: baseline;
}
.svsw-spex-tiers li:first-child { border-top: none; }
.svsw-spex-tier__name {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 110%;
	font-weight: 800;
	font-size: 14.5px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--svsw-black);
}
.svsw-spex-tier__name--accent {
	color: var(--svsw-blue);
	position: relative;
}
.svsw-spex-tier__name--accent::after {
	content: "★";
	margin-left: 8px;
	color: var(--svsw-green);
	font-size: 12px;
	vertical-align: middle;
}
.svsw-spex-tier__what {
	font-size: 14.5px;
	line-height: 1.55;
	color: #374151;
}
@media (max-width: 720px) {
	.svsw-spex-tiers li { grid-template-columns: 1fr; gap: 4px; }
}

.svsw-spex-callband {
	margin: 56px 0 0;
	background: var(--svsw-black);
	color: var(--svsw-paper);
	border-radius: 14px;
	padding: 36px 36px 32px;
	display: grid;
	grid-template-columns: 1.4fr 1fr;
	gap: 32px;
	align-items: center;
	box-shadow: 0 20px 48px -24px rgba(16, 21, 31, 0.45);
}
.svsw-spex-callband__text h3 {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: clamp(1.4rem, 1rem + 1.2vw, 2rem);
	line-height: 1.05;
	text-transform: uppercase;
	margin: 0 0 12px;
	color: var(--svsw-paper);
}
.svsw-spex-callband__text p {
	margin: 0;
	font-size: 15px;
	line-height: 1.55;
	color: rgba(244, 244, 241, 0.85);
}
.svsw-spex-callband__cta {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 10px;
}
.svsw-spex-callband__tel {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(244, 244, 241, 0.75);
	text-decoration: none;
	border-bottom: 1px solid rgba(244, 244, 241, 0.3);
	padding-bottom: 2px;
}
@media (max-width: 800px) {
	.svsw-spex-callband { grid-template-columns: 1fr; padding: 28px 24px; }
}

/* -------------------------------------------------------------------------
   Travel & Venue page — jump-nav, hotel promo, rental cards, airport cards,
   venue card.
   ------------------------------------------------------------------------- */
.svsw-jump {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 8px 0 0;
}
.svsw-jump a {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--svsw-black);
	background: var(--svsw-white);
	border: 1px solid var(--svsw-hair-l);
	border-radius: 999px;
	padding: 9px 18px;
	text-decoration: none;
	transition: border-color 0.15s ease, background 0.15s ease;
}
.svsw-jump a:hover {
	border-color: var(--svsw-blue);
	background: rgba(29, 95, 214, 0.06);
}

/* Hotel block promo card — gradient feature card */
.svsw-travel-promo {
	display: block;
	position: relative;
	padding: 36px 36px 32px;
	border-radius: 14px;
	color: var(--svsw-paper);
	text-decoration: none;
	overflow: hidden;
	box-shadow: 0 20px 48px -22px rgba(16, 21, 31, 0.45);
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.svsw-travel-promo:hover { transform: translateY(-2px); box-shadow: 0 26px 56px -22px rgba(29, 95, 214, 0.55); }
.svsw-travel-promo--blue { background: linear-gradient(160deg, var(--svsw-blue) 0%, var(--svsw-blue-deep) 100%); }
.svsw-travel-promo::after {
	content: "";
	position: absolute; inset: 0;
	background:
		radial-gradient(circle at 10% 90%, rgba(255,255,255,0.12) 0, transparent 40%),
		linear-gradient(180deg, transparent 60%, rgba(0,0,0,0.18) 100%);
	pointer-events: none;
}
.svsw-travel-promo > * { position: relative; z-index: 1; }
.svsw-travel-promo__eyebrow {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	opacity: 0.9;
	margin-bottom: 10px;
}
.svsw-travel-promo__title {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 110%;
	font-weight: 800;
	font-size: clamp(1.4rem, 1rem + 1vw, 1.9rem);
	line-height: 1.15;
	color: var(--svsw-paper);
	margin-bottom: 10px;
}
.svsw-travel-promo__lede {
	font-size: 15px;
	line-height: 1.55;
	margin-bottom: 18px;
	opacity: 0.94;
	max-width: 720px;
}
.svsw-travel-promo__cta {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	border-bottom: 1.5px solid rgba(255, 255, 255, 0.6);
	padding-bottom: 4px;
}

/* Rental cards (Airbnb / VRBO) */
.svsw-travel-rentals {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
}
@media (max-width: 640px) { .svsw-travel-rentals { grid-template-columns: 1fr; } }
.svsw-travel-rental {
	display: flex;
	flex-direction: column;
	padding: 26px 28px 24px;
	background: var(--svsw-white);
	border: 1px solid var(--svsw-hair-l);
	border-radius: 12px;
	text-decoration: none;
	color: var(--svsw-black);
	transition: border-color 0.15s ease, transform 0.15s ease;
}
.svsw-travel-rental:hover { border-color: var(--svsw-blue); transform: translateY(-1px); }
.svsw-travel-rental__brand {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 115%;
	font-weight: 800;
	font-size: 1.8rem;
	letter-spacing: -0.01em;
	margin-bottom: 6px;
}
.svsw-travel-rental__what {
	font-size: 13.5px;
	color: var(--svsw-ink-dim);
	margin-bottom: 18px;
}
.svsw-travel-rental__cta {
	margin-top: auto;
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--svsw-blue);
}

/* Airport cards */
.svsw-travel-airports {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
}
@media (max-width: 800px) { .svsw-travel-airports { grid-template-columns: 1fr; } }
.svsw-travel-airport {
	background: var(--svsw-white);
	border: 1px solid var(--svsw-hair-l);
	border-radius: 12px;
	padding: 24px 24px 22px;
	box-shadow: 0 1px 0 rgba(16, 21, 31, 0.03);
}
.svsw-travel-airport__code {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.2rem);
	line-height: 1;
	color: var(--svsw-blue);
	letter-spacing: 0.02em;
	margin-bottom: 8px;
}
.svsw-travel-airports > .svsw-travel-airport:nth-child(2) .svsw-travel-airport__code { color: var(--svsw-green); }
.svsw-travel-airports > .svsw-travel-airport:nth-child(3) .svsw-travel-airport__code { color: var(--svsw-blue); }
.svsw-travel-airport__name {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-weight: 800;
	font-size: 1.05rem;
	color: var(--svsw-black);
	margin-bottom: 4px;
}
.svsw-travel-airport__time {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--svsw-ink-dim);
	margin-bottom: 14px;
}
.svsw-travel-airport__note {
	font-size: 14px;
	line-height: 1.5;
	color: #374151;
}

/* Venue card with photo */
.svsw-travel-venue {
	display: grid;
	grid-template-columns: 1fr 1.1fr;
	gap: 20px;
	align-items: stretch;
}
@media (max-width: 800px) { .svsw-travel-venue { grid-template-columns: 1fr; } }
.svsw-travel-venue__card {
	padding: 28px 30px;
	background: var(--svsw-white);
	border: 1px solid var(--svsw-hair-l);
	border-radius: 12px;
	display: flex;
	flex-direction: column;
}
.svsw-travel-venue__eyebrow {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 115%;
	font-weight: 800;
	font-size: 1.3rem;
	color: var(--svsw-black);
	margin-bottom: 10px;
}
.svsw-travel-venue__lede {
	font-size: 14.5px;
	line-height: 1.55;
	color: #374151;
	margin-bottom: 18px;
}
.svsw-travel-venue__row {
	display: grid;
	grid-template-columns: 80px 1fr;
	gap: 12px;
	padding: 10px 0;
	border-top: 1px solid var(--svsw-hair-l);
	text-decoration: none;
	color: var(--svsw-black);
	font-size: 14px;
	line-height: 1.45;
}
.svsw-travel-venue__row > span:first-child {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--svsw-ink-dim);
	align-self: center;
}
a.svsw-travel-venue__row:hover > span:last-child { color: var(--svsw-blue); }
.svsw-travel-venue__row--static { cursor: default; }
.svsw-travel-venue__photo {
	margin: 0;
	border-radius: 12px;
	overflow: hidden;
	min-height: 280px;
}
.svsw-travel-venue__photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* -------------------------------------------------------------------------
   Contact page — Sean Payne / venue cards + media list.
   ------------------------------------------------------------------------- */
.svsw-contact-card {
	margin: 28px 0 0;
	padding: 24px 28px;
	background: var(--svsw-white);
	border: 1px solid var(--svsw-hair-l);
	border-radius: 12px;
	max-width: 560px;
	box-shadow: 0 1px 0 rgba(16, 21, 31, 0.03);
}
.svsw-contact-card__eyebrow {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--svsw-ink-dim);
	margin-bottom: 8px;
}
.svsw-contact-card__name {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 115%;
	font-weight: 800;
	font-size: 1.4rem;
	line-height: 1.1;
	color: var(--svsw-black);
	margin-bottom: 14px;
}
.svsw-contact-card__line {
	font-size: 14px;
	color: #374151;
	margin-bottom: 10px;
}
.svsw-contact-card__row {
	display: grid;
	grid-template-columns: 70px 1fr;
	gap: 12px;
	padding: 8px 0;
	border-top: 1px solid var(--svsw-hair-l);
	color: var(--svsw-black);
	text-decoration: none;
	font-size: 14.5px;
	line-height: 1.4;
}
.svsw-contact-card__row > span:first-child {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--svsw-ink-dim);
	align-self: center;
}
.svsw-contact-card__row:hover > span:last-child { color: var(--svsw-blue); }

/* Media list */
.svsw-media-list {
	list-style: none;
	margin: 0;
	padding: 0;
	border: 1px solid var(--svsw-hair-l);
	border-radius: 12px;
	background: var(--svsw-white);
	overflow: hidden;
}
.svsw-media-list li {
	display: grid;
	grid-template-columns: 280px 1fr;
	gap: 24px;
	padding: 16px 24px;
	border-top: 1px solid var(--svsw-hair-l);
	align-items: baseline;
}
.svsw-media-list li:first-child { border-top: none; }
.svsw-media-list__outlet {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 110%;
	font-weight: 800;
	font-size: 14px;
	letter-spacing: 0.04em;
	color: var(--svsw-black);
}
.svsw-media-list__name {
	font-size: 14.5px;
	line-height: 1.5;
	color: #374151;
}
@media (max-width: 720px) {
	.svsw-media-list li { grid-template-columns: 1fr; gap: 4px; }
}

/* -------------------------------------------------------------------------
   Inner page baseline — kept for /faq, /rates, etc.
   ------------------------------------------------------------------------- */
.svsw-page-hero {
	position: relative;
	background: var(--svsw-black);
	color: var(--svsw-white);
	padding: 80px 44px 72px;
	overflow: hidden;
}
/* Grid texture as its own layer so we can tune opacity independently of any
   gradient or block-editor inline background. */
.svsw-page-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	background: url("../images/svsw-grid-texture.png") center/cover no-repeat;
	opacity: 0.85;
	z-index: 0;
}
/* Subtle dark vignette so text contrast stays high without losing the grid. */
.svsw-page-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		radial-gradient(ellipse at 30% 50%, rgba(16, 21, 31, 0.35) 0%, rgba(16, 21, 31, 0.65) 100%);
	z-index: 0;
	pointer-events: none;
}
.svsw-page-hero > * { position: relative; z-index: 1; }
.svsw-page-hero h1,
.svsw-page-hero .wp-block-post-title,
.svsw-page-hero .wp-block-post-title a,
.svsw-page-hero .wp-block-query-title,
.svsw-page-hero .wp-block-query-title a {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: clamp(40px, 4vw, 64px);
	line-height: 1;
	text-transform: uppercase;
	margin: 0;
	color: var(--svsw-white) !important;
}
.svsw-page-hero .svsw-eyebrow {
	color: var(--svsw-paper);
	opacity: 0.7;
}
/* On taxonomy archives the term-description sits below the H1 inside the
   same dark hero — pull it back from default body colour to a soft
   white that reads cleanly over the grid texture. */
.svsw-page-hero .wp-block-term-description,
.svsw-page-hero .wp-block-term-description p {
	color: var(--svsw-paper);
	opacity: 0.85;
	margin: 0;
}
@media (max-width: 640px) {
	.svsw-page-hero { padding: 56px 18px 48px; }
}

/* -------------------------------------------------------------------------
   Speaking page — "Why speak" + "One stage" sections.
   ------------------------------------------------------------------------- */
.svsw-why-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
	margin: 0 0 8px;
}
@media (max-width: 800px) { .svsw-why-grid { grid-template-columns: 1fr; } }
.svsw-why-card {
	background: var(--svsw-white);
	border: 1px solid var(--svsw-hair-l);
	padding: 28px 26px 24px;
	border-radius: 10px;
	box-shadow: 0 1px 0 rgba(16, 21, 31, 0.04);
}
.svsw-why-card__n {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: 38px;
	line-height: 1;
	color: var(--svsw-black);
	margin-bottom: 4px;
}
.svsw-why-card__t {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 100%;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--svsw-ink-dim);
	margin-bottom: 14px;
}
.svsw-why-card p {
	margin: 0;
	font-size: 15px;
	line-height: 1.55;
	color: #374151;
}

/* Program cards — bold blue + green, like the home show panels but lighter. */
.svsw-program-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 18px;
}
@media (max-width: 800px) { .svsw-program-grid { grid-template-columns: 1fr; } }
.svsw-program-card {
	position: relative;
	padding: 36px 32px 32px;
	border-radius: 12px;
	color: var(--svsw-paper);
	overflow: hidden;
	box-shadow: 0 18px 40px -20px rgba(16, 21, 31, 0.45);
	display: flex;
	flex-direction: column;
}
.svsw-program-card--blue {
	background: linear-gradient(160deg, var(--svsw-blue) 0%, var(--svsw-blue-deep) 100%);
}
.svsw-program-card--green {
	background: linear-gradient(160deg, var(--svsw-green) 0%, var(--svsw-green-deep) 100%);
}
.svsw-program-card::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		radial-gradient(circle at 10% 90%, rgba(255, 255, 255, 0.12) 0, transparent 40%),
		linear-gradient(180deg, transparent 50%, rgba(0, 0, 0, 0.18) 100%);
	pointer-events: none;
}
.svsw-program-card > * { position: relative; z-index: 1; }
.svsw-program-card__when {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	opacity: 0.88;
	margin-bottom: 10px;
}
.svsw-program-card__eyebrow {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	opacity: 0.92;
	margin-bottom: 6px;
}
.svsw-program-card__title {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 125%;
	font-weight: 900;
	font-size: clamp(1.6rem, 1.1rem + 1.2vw, 2.4rem);
	line-height: 1.02;
	text-transform: uppercase;
	letter-spacing: 0.005em;
	color: var(--svsw-paper);
	margin: 0 0 10px;
}
.svsw-program-card__lede {
	font-size: 15px;
	font-weight: 600;
	margin: 0 0 16px;
	opacity: 0.95;
}
.svsw-program-card__body {
	font-size: 14.5px;
	line-height: 1.55;
	margin: 0 0 18px;
	opacity: 0.94;
}
.svsw-program-card__link {
	margin-top: auto;
	color: var(--svsw-paper);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-decoration: none;
	border-bottom: 1.5px solid rgba(255, 255, 255, 0.6);
	padding-bottom: 4px;
	align-self: flex-start;
}
.svsw-program-card__link:hover { border-bottom-color: var(--svsw-paper); }

/* CF7 checkbox group — Innovation/MilSat/Both styled as pill chips. */
.wpcf7-form .svsw-cf7-checkboxes {
	margin: 4px 0 28px;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
}
.wpcf7-form .svsw-cf7-checkboxes__label {
	display: inline-block;
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--svsw-black);
	margin: 0;
}
.wpcf7-form .wpcf7-checkbox {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0;
}
.wpcf7-form .wpcf7-checkbox .wpcf7-list-item {
	margin: 0 !important;
	display: inline-block;
}
/* The pill border + padding go on the <label> that wraps BOTH the checkbox
   and the visible text — not the inner label span — so the checkbox sits
   inside the pill visually. */
.wpcf7-form .wpcf7-checkbox .wpcf7-list-item > label {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 10px 16px;
	border: 1.5px solid rgba(16, 21, 31, 0.22);
	border-radius: 999px;
	background: var(--svsw-white);
	cursor: pointer;
	transition: border-color 0.15s ease, background 0.15s ease;
}
.wpcf7-form .wpcf7-checkbox .wpcf7-list-item-label {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 13px;
	font-weight: 600;
	color: var(--svsw-black);
	letter-spacing: 0;
	text-transform: none;
	line-height: 1;
}
.wpcf7-form .wpcf7-checkbox input[type="checkbox"] {
	appearance: none;
	-webkit-appearance: none;
	width: 18px;
	height: 18px;
	border: 1.5px solid rgba(16, 21, 31, 0.35);
	border-radius: 4px;
	background: var(--svsw-white);
	cursor: pointer;
	flex-shrink: 0;
	position: relative;
}
.wpcf7-form .wpcf7-checkbox input[type="checkbox"]:checked {
	background: var(--svsw-black);
	border-color: var(--svsw-black);
}
.wpcf7-form .wpcf7-checkbox input[type="checkbox"]:checked::after {
	content: "";
	position: absolute;
	left: 5px;
	top: 1px;
	width: 5px;
	height: 10px;
	border: solid var(--svsw-paper);
	border-width: 0 2px 2px 0;
	transform: rotate(45deg);
}
.wpcf7-form .wpcf7-checkbox .wpcf7-list-item > label:hover {
	border-color: var(--svsw-blue);
}
.svsw-page-body {
	background: var(--svsw-paper);
	padding: 60px 44px 80px;
}

/* -------------------------------------------------------------------------
   Speaking page — speaker / panel feature image.
   ------------------------------------------------------------------------- */
.svsw-speak-image {
	margin: 0 0 56px;
	border-radius: 4px;
	overflow: hidden;
	aspect-ratio: 21 / 8;
}
.svsw-speak-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
@media (max-width: 960px) {
	.svsw-speak-image { aspect-ratio: 16 / 7; margin-bottom: 40px; }
}
@media (max-width: 640px) {
	.svsw-speak-image { aspect-ratio: 16 / 9; margin-bottom: 32px; }
}

/* -------------------------------------------------------------------------
   FAQ page — feature image + 3-column grid of categories.
   ------------------------------------------------------------------------- */
.svsw-faq-image {
	margin: 0 0 56px;
	border-radius: 4px;
	overflow: hidden;
	aspect-ratio: 21 / 7;
}
.svsw-faq-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.svsw-faq-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 48px;
	align-items: start;
}
.svsw-faq-col {
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.svsw-faq-col__title {
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-stretch: 110%;
	font-weight: 800;
	font-size: 0.78rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--svsw-black);
	margin: 0 0 6px;
	padding-bottom: 14px;
	border-bottom: 2px solid var(--svsw-black);
}
.svsw-faq-q {
	background: var(--svsw-white);
	border: 1px solid var(--svsw-hair-l);
	border-radius: 4px;
	overflow: hidden;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.svsw-faq-q[open] {
	border-color: var(--svsw-black);
	box-shadow: 0 1px 0 rgba(16, 21, 31, 0.03);
}
.svsw-faq-q > summary {
	cursor: pointer;
	list-style: none;
	padding: 14px 40px 14px 16px;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.4;
	color: var(--svsw-black);
	position: relative;
	text-wrap: balance;
}
.svsw-faq-q > summary::-webkit-details-marker { display: none; }
.svsw-faq-q > summary::after {
	content: "+";
	position: absolute;
	right: 14px;
	top: 50%;
	transform: translateY(-50%);
	font-size: 20px;
	font-weight: 400;
	line-height: 1;
	color: var(--svsw-ink-dim);
	transition: transform 0.15s ease;
}
.svsw-faq-q[open] > summary::after {
	content: "−";
	color: var(--svsw-black);
}
.svsw-faq-a {
	padding: 0 16px 16px;
	font-size: 14.5px;
	line-height: 1.55;
	color: rgba(16, 21, 31, 0.78);
}
.svsw-faq-a a { color: var(--svsw-blue); }

@media (max-width: 960px) {
	.svsw-faq-grid { grid-template-columns: 1fr 1fr; gap: 36px; }
	.svsw-faq-image { aspect-ratio: 16 / 6; margin-bottom: 40px; }
}
@media (max-width: 640px) {
	.svsw-faq-grid { grid-template-columns: 1fr; gap: 28px; }
	.svsw-faq-image { aspect-ratio: 16 / 8; margin-bottom: 32px; }
}

/* =========================================================================
   Contact Form 7 — base styling so the speaker forms read as SVSW.
   ========================================================================= */
.wpcf7 {
	margin: 32px 0 0;
	padding: 32px 36px 28px;
	background: var(--svsw-white);
	border: 1px solid var(--svsw-hair-l);
	border-radius: 12px;
	box-shadow: 0 1px 0 rgba(16, 21, 31, 0.02);
}
@media (max-width: 640px) {
	.wpcf7 { padding: 22px 18px 18px; border-radius: 8px; }
}
.wpcf7-form p {
	margin: 0 0 16px;
}
.wpcf7-form label {
	display: block;
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--svsw-black);
	margin: 0;
}
/* CF7 emits a stray <br> between the label text and the input wrapper, which
   contributes ~16px of vertical whitespace. Kill it and use a small explicit
   margin on the wrap span instead. */
.wpcf7-form label > br { display: none; }
.wpcf7-form .wpcf7-form-control-wrap {
	display: block;
	margin-top: 4px;
}
.wpcf7-form .svsw-cf7-req {
	color: var(--svsw-blue);
	font-weight: 700;
	margin-left: 4px;
}
.wpcf7-form .svsw-cf7-hint {
	display: block;
	font-size: 13px;
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
	color: var(--svsw-ink-dim);
	margin: 2px 0 6px;
}
.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form input[type="url"],
.wpcf7-form textarea,
.wpcf7-form select {
	display: block;
	width: 100%;
	max-width: 100%;
	box-sizing: border-box;
	padding: 12px 14px;
	font-family: inherit;
	font-size: 15px;
	line-height: 1.4;
	color: var(--svsw-black);
	background: var(--svsw-white);
	border: 1px solid rgba(16, 21, 31, 0.18);
	border-radius: 4px;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.wpcf7-form textarea { min-height: 110px; resize: vertical; }
.wpcf7-form input[type="text"]:focus,
.wpcf7-form input[type="email"]:focus,
.wpcf7-form input[type="tel"]:focus,
.wpcf7-form input[type="url"]:focus,
.wpcf7-form textarea:focus {
	outline: none;
	border-color: var(--svsw-blue);
	box-shadow: 0 0 0 3px rgba(29, 95, 214, 0.12);
}

/* Two-column row of short fields */
.wpcf7-form .svsw-cf7-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 24px;
}
@media (max-width: 600px) {
	.wpcf7-form .svsw-cf7-grid { grid-template-columns: 1fr; }
}
.wpcf7-form .svsw-cf7-grid p {
	margin-bottom: 14px;
}

/* Submit button — uses the SVSW black-button classes the [submit] shortcode
   emits via class:svsw-btn class:svsw-btn--black. */
.wpcf7-form .wpcf7-submit {
	display: inline-block;
	font-family: "Archivo", system-ui, -apple-system, sans-serif;
	font-size: 13px;
	font-weight: 800;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	padding: 14px 30px;
	background: var(--svsw-black);
	color: var(--svsw-paper);
	border: none;
	border-radius: 0;
	cursor: pointer;
}
.wpcf7-form .wpcf7-submit:hover {
	background: var(--svsw-blue);
}

/* CF7 feedback messages */
.wpcf7 .wpcf7-response-output {
	margin: 24px 0 0;
	padding: 14px 16px;
	font-size: 14px;
	border-width: 2px;
	border-radius: 4px;
}
.wpcf7-not-valid-tip {
	display: block;
	color: var(--svsw-blue);
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.04em;
	margin-top: 4px;
}
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output {
	border-color: var(--svsw-blue);
	background: rgba(29, 95, 214, 0.06);
	color: var(--svsw-blue);
}
.wpcf7 form.sent .wpcf7-response-output {
	border-color: var(--svsw-green);
	background: rgba(31, 122, 77, 0.08);
	color: var(--svsw-green);
}

/* =========================================================================
   RESPONSIVE — tablet + phone.
   Everything below this block overrides desktop styles when the viewport
   gets narrow. Ordered tablet (≤1024) → phone (≤640) → small phone (≤400).
   ========================================================================= */

/* Prevent any single element from forcing horizontal scroll on small screens.
   Use `overflow-x: clip` — `hidden` makes <html>/<body> a scroll container,
   which breaks `position: sticky` on descendants. `clip` doesn't. */
html, body { overflow-x: clip; }
* { min-width: 0; } /* let flex/grid children shrink past their content */

/* -------- Tablet (≤ 1024px) -------- */
@media (max-width: 1024px) {
	.svsw-utility-bar         { padding: 14px 24px; font-size: 10.5px; }
	.svsw-primary-bar         { padding: 14px 24px !important; }
	.svsw-primary-bar .wp-block-site-logo img { height: 64px !important; max-height: 64px !important; margin-top: 9px; }
	.svsw-primary-nav .wp-block-navigation__container { gap: 14px; }
	.svsw-primary-nav .wp-block-navigation__container > .wp-block-navigation-item > a { font-size: 11.5px; }

	.svsw-show                { min-height: 480px; padding: 32px; }
	.svsw-show--inno          { padding-right: 80px; }
	.svsw-show--mil           { padding-left: 80px; }
	.svsw-show__title         { font-size: 38px; }
	.svsw-show__lede          { font-size: 14px; }
	.svsw-hub                 { width: 124px; height: 124px; }
	.svsw-hub__t1             { font-size: 12px; }

	.svsw-room                { padding: 48px 24px 40px; }
	.svsw-room__title         { font-size: 32px; max-width: none; }
	.svsw-mosaic              { grid-template-columns: 1.4fr 1fr 1fr; grid-template-rows: 220px 160px; }

	.svsw-agenda              { padding: 48px 24px; }
	.svsw-agenda__head h2     { font-size: 30px; }

	.svsw-venue__text         { padding: 40px 24px; }
	.svsw-venue__text h2      { font-size: 26px; }

	.svsw-sponsors            { padding: 36px 24px 44px; }

	.svsw-footer-cta          { padding: 56px 24px 32px; }
	.svsw-footer-cta__cta h2  { font-size: 34px; }
}

/* ====================================================================
   Adaptive nav collapse — monotonic behavior.

   How it works:
   - At all viewports ≤ 1100px the CSS unconditionally hides the inline
     nav and shows the hamburger. This eliminates the "bouncing" behavior
     where the JS measurement triggered hamburger at one width but the
     tablet CSS rules shrank the nav back to fit at a narrower one.
   - Above 1100px the JS measures and adds .is-nav-collapsed only when
     the inline nav actually wouldn't fit (logo + nav + REGISTER button).

   When hamburger is showing, position it right next to REGISTER on
   the right edge — not in the middle of the bar.
   ==================================================================== */

/* Default state: nav inline, hamburger hidden. */
.svsw-primary-nav .wp-block-navigation__responsive-container-open { display: none; }

/* Class added by JS at wide widths if the inline nav wouldn't fit. */
.svsw-site-header.is-nav-collapsed .svsw-primary-nav .wp-block-navigation__container,
.svsw-site-header.is-nav-collapsed .svsw-primary-nav .wp-block-navigation__responsive-container { display: none !important; }
.svsw-site-header.is-nav-collapsed .svsw-primary-nav .wp-block-navigation__responsive-container-open {
	display: inline-flex !important;
	color: var(--svsw-white);
	background: transparent;
	border: 1px solid var(--svsw-white);
	border-radius: 999px;
	padding: 10px 14px;
}

/* CSS-only force: anything ≤ 1100px is always hamburger. Same styles. */
@media (max-width: 1100px) {
	.svsw-primary-nav .wp-block-navigation__container,
	.svsw-primary-nav .wp-block-navigation__responsive-container { display: none !important; }
	.svsw-primary-nav .wp-block-navigation__responsive-container-open {
		display: inline-flex !important;
		color: var(--svsw-white);
		background: transparent;
		border: 1px solid var(--svsw-white);
		border-radius: 999px;
		padding: 10px 14px;
	}
}

/* When the nav is in hamburger mode, dock it right next to REGISTER. */
.svsw-site-header.is-nav-collapsed .svsw-primary-nav,
.svsw-site-header .svsw-primary-bar .svsw-primary-nav { margin-left: auto; }
@media (max-width: 1100px) {
	.svsw-site-header .svsw-primary-nav {
		margin-left: auto !important;
		flex: 0 0 auto !important;
		justify-content: flex-end;
		gap: 8px;
	}
}
.svsw-site-header.is-nav-collapsed .svsw-primary-bar .wp-block-buttons,
.svsw-site-header .svsw-primary-bar .wp-block-buttons { margin-left: 10px !important; }

/* -------- Phone (≤ 640px) -------- */
@media (max-width: 640px) {

	/* Header — utility bar drops the dates line. Logo + REGISTER stay in
	   the primary bar; the nav collapses behind the WP overlay (hamburger). */
	.svsw-utility-bar { padding: 10px 16px; font-size: 10px; }
	.svsw-utility-bar .wp-block-group {
		gap: 10px;
		flex-wrap: wrap;
		justify-content: center;
		text-align: center;
	}
	.svsw-utility-bar p:nth-of-type(2) { display: none; }

	.svsw-primary-bar { padding: 10px 16px !important; }
	.svsw-primary-bar > .wp-block-group {
		gap: 12px;
		flex-wrap: nowrap;
	}
	.svsw-primary-bar .wp-block-site-logo img {
		height: 48px !important;
		max-height: 48px !important;
		margin-top: 6px;
	}
	.svsw-primary-bar .wp-block-buttons { margin-left: 8px; }
	.svsw-primary-bar .wp-block-buttons .wp-block-button__link {
		padding: 10px 16px !important;
		font-size: 11px !important;
	}

	/* Shows — stack vertically, normal padding, no negative right/left tricks */
	.svsw-shows { grid-template-columns: 1fr; }
	.svsw-show {
		min-height: 380px;
		padding: 28px 20px 32px !important;
	}
	.svsw-show--inno, .svsw-show--mil {
		padding-left: 20px !important;
		padding-right: 20px !important;
	}
	.svsw-show__meta  { font-size: 11px; letter-spacing: 0.18em; }
	.svsw-show__title { font-size: 30px; line-height: 1; margin: 10px 0 8px; }
	.svsw-show__lede  { font-size: 13.5px; max-width: 100%; margin-bottom: 16px; }
	.svsw-show__row   { flex-wrap: wrap; gap: 8px; }
	.svsw-show__row .svsw-btn { font-size: 11px; padding: 11px 18px; }

	/* Hub circle — relocate to the SEAM between the two stacked panels.
	   Position absolute to .svsw-shows, centered horizontally, vertically
	   placed where the SI panel ends and MIL begins. Both panels get extra
	   padding (top on MIL, bottom on SI) to keep buttons clear of the hub. */
	.svsw-hub {
		left: 50%;
		top: 50%;
		bottom: auto;
		transform: translate(-50%, -50%);
		width: 104px; height: 104px;
	}
	.svsw-hub__t1 { font-size: 10.5px; }
	.svsw-hub__t2 { font-size: 9px; margin-top: 4px; letter-spacing: 0.1em; }
	.svsw-show--inno { padding-bottom: 80px !important; }
	.svsw-show--mil  { padding-top: 80px !important; }

	/* THE ROOM — stack everything */
	.svsw-room { padding: 40px 18px 36px; }
	.svsw-room__head {
		flex-direction: column;
		align-items: flex-start;
		gap: 12px;
		margin-bottom: 22px;
	}
	.svsw-room__title { font-size: 26px; line-height: 1.05; }
	.svsw-room__head .svsw-label { font-size: 10.5px; }

	/* Mosaic — single column on phones, equal rows */
	.svsw-mosaic {
		grid-template-columns: 1fr;
		grid-template-rows: repeat(5, 180px);
		gap: 8px;
	}
	.svsw-mosaic figure:first-child {
		grid-row: auto;
		grid-column: auto;
	}

	/* Stats row — stack to single column, remove right-borders */
	.svsw-stats {
		flex-direction: column;
		align-items: flex-start;
		gap: 14px;
		margin-top: 24px;
		padding-top: 20px;
	}
	.svsw-stat {
		padding-right: 0;
		margin-right: 0;
		border-right: none;
		gap: 8px;
	}
	.svsw-stat__n { font-size: 28px; }
	.svsw-stat__l { font-size: 10.5px; }
	.svsw-stats .svsw-btn {
		margin-left: 0;
		width: 100%;
		text-align: center;
		font-size: 12px;
	}

	/* AGENDA */
	.svsw-agenda { padding: 36px 16px 40px; }
	.svsw-agenda__head {
		flex-direction: column;
		align-items: flex-start;
		gap: 12px;
		margin-bottom: 18px;
	}
	.svsw-agenda__head h2 { font-size: 24px; }
	.svsw-agenda__legend { gap: 6px; flex-wrap: wrap; }
	.svsw-tag { font-size: 9.5px; padding: 5px 9px; letter-spacing: 0.08em; }

	/* Session row — collapse to "spine + time + content / tag below" */
	.svsw-sess {
		grid-template-columns: 8px 1fr;
		grid-template-rows: auto auto;
		row-gap: 4px;
		column-gap: 12px;
		padding: 12px 14px 12px 0;
	}
	.svsw-sess__spine { grid-row: 1 / 3; }
	.svsw-sess__time {
		grid-column: 2;
		font-size: 14px;
		padding: 0;
		color: var(--svsw-ink-dim);
	}
	.svsw-sess__what {
		grid-column: 2;
	}
	.svsw-sess__what-t { font-size: 14.5px; }
	.svsw-sess__what-w { font-size: 11.5px; }
	.svsw-sess__tags {
		grid-column: 2;
		padding-right: 0;
		padding-bottom: 4px;
	}

	/* VENUE — already stacks; tighten spacing */
	.svsw-venue { grid-template-columns: 1fr; }
	.svsw-venue__text { padding: 36px 18px; }
	.svsw-venue__text h2 { font-size: 24px; }
	.svsw-venue figure { min-height: 240px; }

	/* SPONSORS — tighter wrap */
	.svsw-sponsors { padding: 28px 18px 36px; }
	.svsw-sponsors__names { gap: 10px 22px; }
	.svsw-sponsors__names li { font-size: 11.5px; }

	/* FOOTER CTA — stack headline above button */
	.svsw-footer-cta { padding: 48px 18px 28px; }
	.svsw-footer-cta__cta {
		flex-direction: column;
		align-items: flex-start;
		gap: 22px;
		padding-bottom: 32px;
	}
	.svsw-footer-cta__cta h2 { font-size: 26px; }
	.svsw-footer-cta__cta .svsw-btn { width: 100%; text-align: center; font-size: 12px; }
	.svsw-footer-cta__base {
		flex-direction: column;
		gap: 8px;
		font-size: 10px;
	}

	/* INNER PAGES — tighten gutters */
	.svsw-page-hero { padding: 36px 18px 28px; }
	.svsw-page-hero h1 { font-size: 32px; }
	.svsw-page-body { padding: 32px 18px 48px; }
}

/* -------- Small phone (≤ 400px) -------- */
@media (max-width: 400px) {
	.svsw-primary-bar .wp-block-site-logo img {
		height: 40px !important;
		max-height: 40px !important;
		margin-top: 4px;
	}
	.svsw-primary-bar .wp-block-buttons .wp-block-button__link {
		padding: 9px 12px !important;
		font-size: 10.5px !important;
	}
	.svsw-show__title { font-size: 26px; }
	.svsw-room__title { font-size: 22px; }
	.svsw-footer-cta__cta h2 { font-size: 22px; }
}

/* =========================================================================
   Wide-viewport content cap.

   Below the hero, on ultra-wide displays, the eyebrow / headline / lede /
   mosaic / stat row was reading "awkwardly left of centre" — the text
   started from the section's 44px left padding, hundreds of pixels short
   of the visual centre of the screen.

   Earlier attempt (max-width + margin auto on every direct child) broke
   the brochure-style left alignment of each block: the constrained box
   centred on the page while text still flowed from its own left edge.

   Approach: grow the section's horizontal padding at wide widths so the
   inner content reaches the centre. The natural left alignment of each
   block is preserved; backgrounds and full-bleed textures still run
   edge-to-edge because the padding lives on the section itself, not on
   an inner wrapper. Excluded: .svsw-shows (hero's 2-column split must
   stay full-bleed). Placed at the very end of the stylesheet so it wins
   the cascade over every base + responsive padding declaration above.
   ========================================================================= */
@media (min-width: 1500px) {
	.svsw-who,
	.svsw-room,
	.svsw-sponsors,
	.svsw-footer-cta {
		padding-left:  calc((100% - var(--svsw-content-max)) / 2);
		padding-right: calc((100% - var(--svsw-content-max)) / 2);
	}
	/* .svsw-venue has no top-level horizontal padding — its children
	   (__head, __intro, __banner) carry it. Cap those instead. */
	.svsw-venue__head,
	.svsw-venue__intro {
		padding-left:  calc((100% - var(--svsw-content-max)) / 2);
		padding-right: calc((100% - var(--svsw-content-max)) / 2);
	}
}
