/*
 * VIS theme CSS: what theme.json can't express.
 * Reproduces the established vis.org.au look on a clean, token-based build.
 * Rule: colours and sizes come from theme.json tokens (var(--wp--preset--*), var(--wp--custom--*)).
 */

:root {
	--vis-gutter: max(1rem, 5vw);
	--vis-arrow: url("data:image/svg+xml,%3Csvg width='44' height='44' viewBox='0 0 44 44' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='22' cy='22' r='22' fill='%23F8981D'/%3E%3Cpath d='M17.3 27.4 27.7 16.6m0 0H17.3m10.4 0v10.8' stroke='%23002C76' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* Base ------------------------------------------------------------------ */
html { scroll-behavior: smooth; scroll-padding-top: 2rem; }
body { -webkit-font-smoothing: antialiased; }
.wp-site-blocks > * + * { margin-block-start: 0; }
:where(h1, h2, h3, h4) { text-wrap: balance; }
:where(p, li) { text-wrap: pretty; }
img { height: auto; }
button, input, select, textarea { font: inherit; }
:where(h1, h2, h3) a { color: inherit; text-decoration: none; }

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: var(--wp--custom--focus--ring);
	outline-offset: var(--wp--custom--focus--offset);
	border-radius: var(--wp--custom--radius--sm);
}
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}
.vis-visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* Buttons: white pill with the gold arrow circle ------------------------ */
.wp-block-button:not(.is-style-outline) > .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 1rem;
	min-height: 52px;
	transition: background-color var(--wp--custom--motion--fast) var(--wp--custom--motion--ease);
}
.wp-block-button:not(.is-style-outline) > .wp-block-button__link::after {
	content: "";
	flex: none;
	width: 44px;
	height: 44px;
	background: var(--vis-arrow) center / contain no-repeat;
	transition: transform var(--wp--custom--motion--base) var(--wp--custom--motion--ease);
}
.wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover::after { transform: rotate(45deg); }
.wp-block-button.is-style-outline > .wp-block-button__link { min-height: 48px; display: inline-flex; align-items: center; }
.wp-block-button.is-style-outline > .wp-block-button__link:hover { background: color-mix(in srgb, currentColor 12%, transparent); }

/* Countdown bar --------------------------------------------------------- */
.vis-countdown {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 0.25rem 1.25rem;
	min-height: 52px;
	padding: 4px var(--vis-gutter);
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy-900);
	position: relative;
	z-index: 20;
}
.vis-countdown p { margin: 0; }
.vis-countdown__label { font-family: var(--wp--preset--font-family--display); font-size: clamp(1.125rem, 1rem + 0.6vw, 1.375rem); text-transform: uppercase; line-height: 1; }
.vis-countdown__clock { display: flex; align-items: flex-start; gap: 0.6rem; font-variant-numeric: tabular-nums; }
.vis-countdown__unit { display: grid; justify-items: center; line-height: 1.1; }
.vis-countdown__unit b { font-size: 1rem; font-weight: 700; min-width: 2ch; text-align: center; }
.vis-countdown__unit small { font-size: 0.75rem; }
.vis-countdown__sep { font-weight: 700; }

/* Header ---------------------------------------------------------------- */
.vis-header { position: relative; z-index: 15; padding-block: 1.25rem; }
.vis-home .vis-header, .home .vis-header { background: transparent; }
.home .vis-header { position: absolute; left: 0; right: 0; }
.vis-header__bar { gap: 1.5rem; }
.vis-logo { margin: 0; flex: none; }
.vis-logo img { width: clamp(132px, 14vw, 204px) !important; height: auto; }
.vis-nav { flex: 1 1 auto; }
.vis-nav .wp-block-navigation-item__content { color: var(--vis-ink); padding-block: 0.5rem; }
.vis-nav .vis-nav-soon { cursor: default; opacity: .75; }
.vis-nav-soon__tag { margin-left: .35rem; padding: .1rem .45rem; border-radius: 999px; background: color-mix(in srgb, currentColor 14%, transparent); font-size: .75em; font-weight: 600; white-space: nowrap; }
.vis-nav .wp-block-navigation__submenu-container {
	background: var(--wp--preset--color--white) !important;
	color: var(--wp--preset--color--blue-700) !important;
	border: 0 !important;
	border-radius: var(--wp--custom--radius--md);
	padding: 0.75rem 1rem;
	min-width: 15rem !important;
	box-shadow: 0 20px 40px -16px rgba(3, 25, 63, 0.45);
}
.vis-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content { color: var(--wp--preset--color--blue-700); padding: 0.4rem 0; line-height: 1.6; }
.vis-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover { color: var(--vis-accent-ink); }
.vis-nav .current-menu-item > .wp-block-navigation-item__content { color: var(--vis-accent-ink); }
.vis-header__actions { gap: 1rem; flex: none; }
.vis-header__actions .wp-block-button__link { font-size: 1rem; padding: 0.95rem 1.1rem; }
.vis-header-search .wp-block-search__button {
	width: 48px; height: 48px; padding: 0; border: 0; border-radius: 50%;
	background: var(--wp--preset--color--gold-500); color: var(--wp--preset--color--navy-900);
	display: grid; place-items: center;
}
.vis-header-search .wp-block-search__button svg { fill: currentColor; width: 24px; height: 24px; }
.vis-header-search .wp-block-search__input { border-radius: var(--wp--custom--radius--pill); border: 0; padding-inline: 1rem; }
.wp-block-navigation__responsive-container.is-menu-open { padding: 1.5rem var(--vis-gutter) !important; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content { font-size: 1.375rem; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container { background: transparent !important; box-shadow: none; padding: 0 0 0 1rem; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content { color: var(--vis-ink); font-size: 1.125rem; }
.wp-block-navigation__responsive-container-open, .wp-block-navigation__responsive-container-close { color: var(--vis-ink); }
@media (max-width: 1100px) {
	.vis-header__actions .wp-block-buttons { display: none; }
}

/* Hero slider ----------------------------------------------------------- */
.vis-slider { display: grid; position: relative; margin-block: 0 !important; background: var(--wp--preset--color--navy-900); }
.vis-slider > .vis-slider__slide { grid-area: 1 / 1; }
.vis-slider.is-multi > .vis-slider__slide { opacity: 0; visibility: hidden; transition: opacity 0.8s ease, visibility 0s linear 0.8s; }
.vis-slider.is-multi > .vis-slider__slide.is-active { opacity: 1; visibility: visible; transition: opacity 0.8s ease; }
.vis-slider picture.vis-hero-video__media img { width: 100%; height: 100%; object-fit: cover; }
.vis-hero-video__embed { border: 0; pointer-events: none; transform: scale(1.35); }
.vis-slider__text { margin-top: 1rem; }
.vis-slider .vis-hero-video__inner .wp-block-buttons { margin-top: 1.5rem; }
.vis-slider__pause { position: absolute; z-index: 4; left: var(--vis-gutter); top: 12rem; width: 44px; height: 44px; border-radius: 50%; border: 2px solid color-mix(in srgb, var(--vis-ink) 80%, transparent); background: rgba(3, 25, 63, 0.4); cursor: pointer; }
.vis-slider__pause::before { content: ""; position: absolute; inset: 0; margin: auto; width: 12px; height: 14px; border-inline: 4px solid var(--wp--preset--color--white); box-sizing: border-box; }
.vis-slider__pause[aria-pressed="true"]::before { width: 0; height: 0; border-inline: 0; border-style: solid; border-width: 7px 0 7px 12px; border-color: transparent transparent transparent var(--wp--preset--color--white); margin-left: 15px; }
/* VIS Hub slider inside page content: no photo band below, so less bottom space. */
.vis-legacy .vis-slider .vis-hero-video { min-height: min(80svh, 720px); }

.vis-legacy .vis-slider .vis-hero-video__toggle { bottom: clamp(5rem, 9vw, 8rem); }

/* Hero video ------------------------------------------------------------ */
.vis-hero-video {
	position: relative;
	min-height: min(100svh, 900px);
	display: grid;
	align-items: end;
	overflow: hidden;
	background: var(--wp--preset--color--navy-900);
	margin-block: 0 !important;
}
.vis-hero-video__media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.vis-hero-video::before, .vis-hero-video::after { content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 1; }

.vis-hero-video__inner { position: relative; z-index: 2; width: 100%; margin-inline: auto; padding: 0 var(--vis-gutter) calc(17rem + clamp(2rem, 4vw, 4rem)); }
@media (max-width: 767px) { .vis-hero-video__inner { padding-bottom: 9rem; } .vis-hero-video__toggle { bottom: 9rem !important; } }
.vis-hero-video__title { margin: 0; font-size: var(--wp--preset--font-size--huge); color: var(--vis-ink); }
.vis-hero-video__toggle {
	position: absolute; z-index: 3; right: var(--vis-gutter); bottom: calc(17rem + clamp(2rem, 4vw, 4rem));
	width: 44px; height: 44px; border-radius: 50%; border: 2px solid color-mix(in srgb, var(--vis-ink) 80%, transparent); background: rgba(3, 25, 63, 0.4); cursor: pointer;
}
.vis-hero-video__toggle::before { content: ""; position: absolute; inset: 0; margin: auto; width: 12px; height: 14px; border-inline: 4px solid var(--wp--preset--color--white); box-sizing: border-box; }
.vis-hero-video__toggle[aria-pressed="true"]::before { width: 0; height: 0; border-inline: 0; border-style: solid; border-width: 7px 0 7px 12px; border-color: transparent transparent transparent var(--wp--preset--color--white); margin-left: 15px; }

/* Photo band: the curved photo that overlaps the bottom of the hero. */
.vis-photo-band { position: relative; z-index: 3; pointer-events: none; }
.vis-photo-band img { width: 100%; display: block; }

/* Sections -------------------------------------------------------------- */
.vis-section { padding-block: var(--vis-section-space); position: relative; z-index: 4; }
.vis-section__head { gap: 1.5rem; margin-bottom: clamp(2rem, 1rem + 2vw, 3.5rem); }
.vis-section__head h2 { margin: 0; }
.vis-section--news { padding-top: 0; }

/* Cards ----------------------------------------------------------------- */
.vis-card { position: relative; gap: 0 !important; }
.vis-card :is(.wp-block-post-featured-image, .wp-block-image) { margin: 0; overflow: hidden; border-radius: var(--wp--custom--radius--md); }
.vis-card :is(.wp-block-post-featured-image, .wp-block-image) img { width: 100%; object-fit: cover; transition: scale var(--wp--custom--motion--base) var(--wp--custom--motion--ease), filter var(--wp--custom--motion--base) var(--wp--custom--motion--ease); }
.vis-card:hover :is(.wp-block-post-featured-image, .wp-block-image) img { scale: 1.03; }
.vis-card .wp-block-post-title a::after { content: ""; position: absolute; inset: 0; border-radius: inherit; }
.vis-card:focus-within { outline: var(--wp--custom--focus--ring); outline-offset: var(--wp--custom--focus--offset); }
.vis-card .wp-block-post-title a:focus-visible { outline: none; }
.vis-card__body { gap: 0.6rem !important; padding: 1.5rem 1rem 1.75rem; }
.vis-card__body > * { margin: 0 !important; }
.vis-card--news .wp-block-post-featured-image { aspect-ratio: 16 / 9; }
.vis-card__title { font-family: var(--wp--preset--font-family--body); font-style: normal; text-transform: none; font-weight: 700; font-size: 1.375rem; line-height: 1.3; color: var(--wp--preset--color--navy-900); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.vis-card__excerpt p { margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.vis-card__excerpt .wp-block-post-excerpt__more-text { display: none; }
.vis-card--athlete .wp-block-post-featured-image { aspect-ratio: 290 / 272; }
.vis-card__name { font-style: normal; font-size: var(--wp--preset--font-size--x-large); color: var(--wp--preset--color--blue-700); }
.vis-card__sport { font-size: 1.125rem; color: var(--wp--preset--color--gray-600); }
.vis-card__sport a { pointer-events: none; }

/* Carousel (CSS scroll snap, no library) -------------------------------- */
.vis-carousel .wp-block-post-template { display: grid; grid-auto-flow: column; gap: 1.5rem; overflow-x: auto; scroll-snap-type: x mandatory; padding: 0 0 1.5rem; margin: 0; scrollbar-color: var(--wp--preset--color--gold-500) color-mix(in srgb, var(--vis-ink) 15%, transparent); }
.vis-carousel .wp-block-post-template > li { scroll-snap-align: start; list-style: none; }

/* Engage with us -------------------------------------------------------- */
.vis-engage .wp-block-cover__inner-container { width: 100%; }
.vis-engage__tabs { list-style: none; margin: 0; padding: 0 0.5rem 0 0; display: grid; gap: 0.6rem; border-right: 12px solid var(--wp--preset--color--white); padding-block: 3rem; }
.vis-engage__tabs a {
	display: block; background: var(--wp--preset--color--white); color: var(--wp--preset--color--navy-800);
	font-family: var(--wp--preset--font-family--display); font-size: 1.5rem; text-transform: uppercase; text-decoration: none; line-height: 1.6;
	padding: 1.25rem 2rem 1rem 5rem; border-radius: var(--wp--custom--radius--lg) 0 0 var(--wp--custom--radius--lg);
	transition: background-color var(--wp--custom--motion--fast), color var(--wp--custom--motion--fast);
}
.vis-engage__tabs a:hover { background: var(--wp--preset--color--gold-500); color: var(--wp--preset--color--navy-950); }
@media (max-width: 781px) { .vis-engage__tabs a { padding-left: 2rem; } }

/* Our champions --------------------------------------------------------- */
.vis-champions { position: relative; margin-top: -10rem !important; z-index: 3; }
.vis-champions__bg { margin: 0 !important; }
.vis-champions__bg img { width: 100%; min-height: 34rem; object-fit: cover; object-position: center top; display: block; }
.vis-champions__content { position: absolute; inset: 22% 0 0 0; display: flex; flex-direction: column; justify-content: space-between; padding-bottom: 2rem; }
.vis-champions__content > * { width: 100%; }
.vis-champions__caption { margin: 0; font-style: italic; font-weight: 700; font-size: 1rem; color: color-mix(in srgb, var(--vis-ink) 75%, transparent); }
.vis-champions__tiles { gap: 0.75rem !important; }
.vis-champion-tile { border-radius: var(--wp--custom--radius--md); overflow: hidden; padding: 1.5rem !important; }
.vis-champion-tile p { margin: 0; }
.vis-champion-tile__num { font-family: var(--wp--preset--font-family--display); line-height: 1; color: var(--vis-accent-ink); }
.vis-champion-tile__num a { color: inherit; text-decoration: none; }
.vis-champion-tile__num a::after { content: ""; position: absolute; inset: 0; }
@media (max-width: 900px) {
	.vis-champions__content { position: relative; inset: auto; margin-top: -20rem; gap: 12rem; }
	.vis-champions__tiles { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

/* Partners -------------------------------------------------------------- */
.vis-section--partners .wp-block-button__link { background: var(--vis-btn-bg); color: var(--vis-btn-fg); }
.vis-logos .wp-block-post-template { flex-wrap: wrap; justify-content: space-between; margin: 0; padding: 0; }
.vis-logos .wp-block-post-template > li { list-style: none; }
.vis-logos .wp-block-post-featured-image { margin: 0; border-radius: 0; }
.vis-logos img { width: auto !important; object-fit: contain; border-radius: 0 !important; }

/* Newsletter ------------------------------------------------------------ */
.vis-newsletter { padding-block: 4.5rem calc(4.5rem + 9vw); }
.vis-newsletter h2 { margin: 0; }
.vis-signup { display: flex; border-bottom: 2px solid var(--wp--preset--color--blue-700); }
.vis-signup input, .vis-newsletter .mc4wp-form input[type="email"] { flex: 1; border: 0; background: transparent; padding: 0.75rem 0; font: inherit; color: var(--wp--preset--color--navy-900); }
.vis-signup input::placeholder { color: var(--wp--preset--color--gray-600); }
.vis-signup button { width: 44px; border: 0; cursor: pointer; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23002C76' stroke-width='1.6' stroke-linejoin='round'%3E%3Cpath d='M22 2 11 13M22 2l-7 20-4-9-9-4 20-7Z'/%3E%3C/svg%3E") center / 26px no-repeat; }

/* Footer ---------------------------------------------------------------- */
.vis-footer {
	position: relative;
	margin-top: -9vw !important;
	padding-block: calc(9vw + 2rem) 2.5rem;
	/* Curve artwork on top (transparent above the curve, so the newsletter band shows through),
	   then a continuation of its bottom colour for the rest of the footer. */
	background:
		url("../images/footer-curb.webp") top center / 100% auto no-repeat,
		linear-gradient(#14345a, #10305a) 0 calc(53.4vw - 2px) / 100% 100% no-repeat;
	font-size: 0.9375rem;
}
.vis-footer a { color: var(--vis-ink); text-decoration: none; }
.vis-footer a:hover { color: var(--vis-accent-ink); }
.vis-footer__tagline { font-family: var(--wp--preset--font-family--display); font-size: clamp(1.75rem, 1rem + 2.5vw, 3rem); line-height: 1.1; text-transform: uppercase; color: var(--vis-accent-ink); max-width: 1100px; margin: 0 auto clamp(2.5rem, 4vw, 4rem) !important; }
.vis-footer__heading { font-style: normal; font-size: 1.375rem; text-transform: none; margin-bottom: 1rem; }
.vis-footer__cols p { margin: 0 0 0.6rem; }
.vis-footer__list { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.5rem; }
.vis-footer__logos img { max-width: 100%; height: auto; }
.vis-footer__legal { border-block: 1px solid color-mix(in srgb, var(--vis-ink) 20%, transparent); padding-block: 1.5rem; margin-top: 2.5rem !important; }
.vis-footer__legal p { margin: 0; }
.vis-footer__ack { gap: 1.5rem !important; padding-top: 1.5rem; }
.vis-footer__ack figure { margin: 0; flex: none; }
.vis-footer__ack p { margin: 0; }

/* Inner pages ----------------------------------------------------------- */
.wp-block-post-content a:where(:not(.wp-element-button)) { color: var(--vis-accent-ink); }
.vis-section--athletes { padding-bottom: calc(var(--vis-section-space) + 10rem); }

/* Page banner + VIS curve ------------------------------------------------ */
/* The header sits over the banner on every page, as on the current site. */
body:not(.home) .vis-header { position: absolute; left: 0; right: 0; background: transparent; }
.vis-banner {
	--vis-curve-h: clamp(48px, 9vw, 130px);
	--vis-next: var(--wp--preset--color--navy-900);
	position: relative;
	height: clamp(260px, 26vw, 380px);
	margin-block: 0 !important;
	background: var(--wp--preset--color--navy-900) var(--vis-banner-image, none) center 30% / cover no-repeat;
}
.vis-banner.has-image::before { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(8, 41, 80, 0.9) 0%, rgba(3, 25, 63, 0.55) 45%, rgba(3, 25, 63, 0.35) 100%); }
/* The photo as an element (page-banner block): same crop and focal point as the background it replaces, under the scrim. */
.vis-banner__img { position: absolute; inset: 0; z-index: -1; width: 100%; height: 100%; object-fit: cover; object-position: center 30%; margin: 0; }
.vis-banner--large { height: clamp(320px, 34vw, 520px); }
.vis-banner--next-white { --vis-next: var(--wp--preset--color--white); }
.vis-banner::after {
	content: "";
	position: absolute; left: 0; right: 0; bottom: -1px;
	height: var(--vis-curve-h);
	background: url("../images/curve-line.svg") center top / 100% 100% no-repeat, var(--vis-next);
	-webkit-mask: url("../images/curve-mask.svg") center / 100% 100% no-repeat;
	mask: url("../images/curve-mask.svg") center / 100% 100% no-repeat;
}
/* The gold line is drawn on the masked layer just inside the curve edge. */
.vis-banner { isolation: isolate; }
.vis-banner::after { z-index: 1; }
.vis-banner + * { position: relative; z-index: 2; }
.vis-banner:not(.has-image) { background-color: var(--wp--preset--color--navy-950); }
.vis-article__title { color: inherit; }

/* Athlete profile -------------------------------------------------------- */
.vis-section--profile { margin-top: calc(-1 * clamp(190px, 30vw, 470px)) !important; padding-top: 0; }
.vis-athlete { --vis-line: color-mix(in srgb, var(--vis-ink) 12%, transparent); --vis-gold-medal: #e8b54a; --vis-silver-medal: #cfd6de; --vis-bronze-medal: #c98a55; }
.vis-athlete__head { display: grid; grid-template-columns: minmax(0, 26rem) minmax(0, 1fr) minmax(0, 19rem); grid-template-rows: auto auto; gap: 0 clamp(2rem, 4vw, 4rem); align-items: end; }
.vis-athlete__head > .vis-athlete__photo { grid-row: 1 / 3; }
.vis-athlete__intro { grid-row: 1; grid-column: 2; }
.vis-athlete__stats { grid-row: 2; grid-column: 2 / -1; min-width: 0; }
.vis-athlete__head--no-panel { grid-template-columns: minmax(0, 26rem) minmax(0, 1fr); gap: 0 clamp(2rem, 5vw, 5.5rem); }
.vis-athlete__head--no-panel .vis-athlete__stats { grid-column: 2; }
.vis-athlete__photo { margin: 0; aspect-ratio: 4 / 5; border-radius: var(--wp--custom--radius--lg); overflow: hidden; background: var(--wp--preset--color--navy-800); box-shadow: var(--vis-shadow); display: grid; place-items: center; }
.vis-athlete__photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 22%; }
.vis-athlete__photo .vis-initials { aspect-ratio: auto; }
.vis-athlete__photo .vis-initials span { margin-top: 0; font-size: clamp(5rem, 12vw, 10rem); }
.vis-athlete__intro { min-width: 0; }
.vis-athlete__sports { list-style: none; margin: 0 0 1rem; padding: 0; display: flex; flex-wrap: wrap; gap: 0.25rem 0; font-size: var(--wp--preset--font-size--small); font-weight: 700; letter-spacing: var(--wp--custom--tracking--eyebrow); text-transform: uppercase; color: var(--vis-ink); text-shadow: 0 1px 2px rgba(3, 25, 63, 0.6), 0 0 18px rgba(3, 25, 63, 0.8); }
.vis-athlete__sports li + li::before { content: "/"; margin: 0 0.75em; color: var(--vis-accent-ink); }
.vis-athlete__name { font-size: var(--vis-title-size); line-height: 0.88; margin: 0; text-wrap: balance; overflow-wrap: normal; word-break: keep-all; hyphens: manual; }
.vis-athlete__quote { margin: 1.5rem 0 0; padding: 0 0 0 1.25rem; border-left: 2px solid var(--wp--preset--color--gold-500); max-width: 42ch; font-size: var(--wp--preset--font-size--large); line-height: 1.45; color: var(--vis-muted); }
.vis-athlete__highlights { list-style: none; margin: clamp(2rem, 4vw, 3rem) 0 0; padding: 1.5rem 0 0; border-top: 1px solid var(--vis-line); display: flex; flex-wrap: wrap; gap: 1.25rem clamp(1.75rem, 4vw, 3.5rem); }
.vis-athlete__highlights > li { display: grid; gap: 0.35rem; align-content: start; }
.vis-athlete__highlights strong { font-family: var(--wp--preset--font-family--display); font-size: clamp(2.5rem, 1.75rem + 2vw, 3.75rem); line-height: 0.9; font-weight: 400; font-variant-numeric: tabular-nums; }
.vis-athlete__highlights > li > span { font-size: var(--wp--preset--font-size--x-small); letter-spacing: var(--wp--custom--tracking--eyebrow); text-transform: uppercase; color: var(--vis-muted); }
/* Medals won at that competition, under its count: dot in the medal colour, then "1 gold". */
.vis-athlete__medals { list-style: none; margin: 0.25rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.3rem 1rem; font-size: var(--wp--preset--font-size--small); font-weight: 600; }
.vis-athlete__medals li { display: inline-flex; align-items: center; gap: 0.5em; white-space: nowrap; }
.vis-athlete__medals li::before { content: ""; width: 0.6rem; height: 0.6rem; border-radius: 50%; background: var(--vis-medal); }
.vis-athlete .is-gold { --vis-medal: var(--vis-gold-medal); }
.vis-athlete .is-silver { --vis-medal: var(--vis-silver-medal); }
.vis-athlete .is-bronze { --vis-medal: var(--vis-bronze-medal); }
.vis-athlete__meta { margin-top: 1.75rem; display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 1rem 2.5rem; }
.vis-athlete__facts { display: flex; flex-wrap: wrap; gap: 0.75rem 2.5rem; margin: 0; }
.vis-athlete__facts div { display: grid; gap: 0.2rem; }
.vis-athlete__facts dt { font-size: var(--wp--preset--font-size--x-small); letter-spacing: var(--wp--custom--tracking--eyebrow); text-transform: uppercase; color: var(--vis-muted); }
.vis-athlete__facts dd { margin: 0; font-weight: 600; }
.vis-athlete__social { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; font-size: var(--wp--preset--font-size--small); }
.vis-athlete__social a { color: inherit; text-decoration: underline; text-decoration-color: var(--wp--preset--color--gold-500); text-decoration-thickness: 2px; text-underline-offset: 0.3em; }
.vis-athlete__social a:hover { color: var(--vis-accent-ink); }

/* Results: one row per competition, year / competition / placings */
.vis-results + .vis-results { margin-top: clamp(3rem, 6vw, 4.5rem); }
.vis-athlete__empty { color: var(--vis-muted); }

/* Get to know / speaker */
.vis-athlete__qa { margin: 0; }
.vis-athlete__qa div:first-child { padding-top: 0; }
.vis-athlete__qa div { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: 0.5rem clamp(1.5rem, 4vw, 4rem); padding: 1.5rem 0; border-bottom: 1px solid var(--vis-line); }
.vis-athlete__qa dt { font-weight: 700; font-size: 1.0625rem; line-height: 1.4; text-wrap: balance; }
.vis-athlete__qa dd { margin: 0; color: var(--vis-muted); font-size: 1.0625rem; line-height: 1.7; max-width: 62ch; }
.vis-athlete__speaker { max-width: 68ch; color: var(--vis-muted); line-height: 1.7; }
.vis-athlete__speaker .vis-athlete__event { color: var(--vis-ink); font-size: var(--wp--preset--font-size--x-large); margin: 2rem 0 0.5rem; }

@media (max-width: 781px) {
	.vis-athlete__head { grid-template-rows: auto; align-items: start; }
	.vis-athlete__photo { max-width: 22rem; }
	.vis-athlete__highlights { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.vis-athlete__qa div { grid-template-columns: 1fr; }
}

/* Athlete profile: the line, facts and follow links under the name ---------- */
.vis-athlete__head { margin-bottom: 0; }
.vis-athlete__line { margin: 1.5rem 0 0; font-size: clamp(1.25rem, 1rem + 1.1vw, 1.75rem); line-height: 1.35; font-weight: 300; letter-spacing: -0.01em; max-width: 34ch; }
.vis-athlete__stats .vis-athlete__facts { margin-top: 1.75rem; padding-top: 1.25rem; border-top: 1px solid var(--vis-line); }
/* Back the athlete: a light glass panel beside the name, the one ask on the hero. */
.vis-athlete-panel { grid-row: 1; grid-column: 3; align-self: end; padding: 1.5rem; background: rgba(255, 255, 255, 0.12); -webkit-backdrop-filter: blur(18px) saturate(1.2); backdrop-filter: blur(18px) saturate(1.2); border: 1px solid rgba(255, 255, 255, 0.22); color: var(--vis-ink); }
.vis-athlete h2.vis-athlete-panel__h { margin: 0 0 0.5rem; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-style: italic; text-transform: uppercase; letter-spacing: 0; font-size: 2.25rem; line-height: 0.9; color: inherit; }
.vis-athlete-panel p { margin: 0 0 1.1rem; font-size: 0.9375rem; line-height: 1.5; color: rgba(255, 255, 255, 0.85); }
.vis-athlete-panel .vis-athlete-btn { width: 100%; padding: 1rem 1.25rem; font-size: 1rem; }
@media (max-width: 1100px) {
	.vis-athlete__head { grid-template-columns: minmax(0, 22rem) minmax(0, 1fr); grid-template-rows: auto; }
	.vis-athlete__head > .vis-athlete__photo { grid-row: 1 / 4; }
	.vis-athlete-panel { grid-row: 2; grid-column: 2; align-self: start; max-width: 24rem; margin-top: 1.75rem; }
	.vis-athlete__stats { grid-row: 3; grid-column: 2; }
}
@media (max-width: 781px) {
	.vis-athlete__head { grid-template-columns: 1fr; }
	.vis-athlete__head > .vis-athlete__photo, .vis-athlete__intro, .vis-athlete-panel, .vis-athlete__stats { grid-row: auto; grid-column: 1; }
	.vis-athlete-panel { max-width: none; }
}
.vis-athlete__follow { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.vis-athlete__follow a { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.4rem 0.8rem; border: 1.5px solid color-mix(in srgb, var(--vis-ink) 30%, transparent); border-radius: var(--wp--custom--radius--pill, 999px); color: inherit; text-decoration: none; font-size: 0.875rem; font-weight: 600; }
.vis-athlete__follow a:hover { border-color: var(--wp--preset--color--gold-500); }

/* Athlete profile: light body with a sticky rail ----------------------------
   No VIS gold as text on the light body (1.98:1): eyebrows, dates and links use
   VIS blue (11.6:1); a gold-coloured year uses #7a5905 (5.8:1). Gold stays for
   dots, rules and buttons with navy text. */
.vis-section--profile { overflow-x: clip; }
.vis-athlete-body, .vis-athlete-band { margin-inline: calc(50% - 50vw); padding-inline: max(var(--wp--style--root--padding-left, 1.5rem), calc(50vw - 50%)); position: relative; z-index: 4; }
.vis-athlete-body { --ab-ink: var(--wp--preset--color--navy-900); --ab-ink-70: color-mix(in srgb, var(--wp--preset--color--navy-900) 72%, transparent); --ab-line: color-mix(in srgb, var(--wp--preset--color--navy-900) 14%, transparent); --ab-acc: var(--wp--preset--color--blue-700); --ab-gold-text: #7a5905; background: #f5f3ee; color: var(--ab-ink); margin-top: clamp(2.5rem, 5vw, 4rem); }
.vis-athlete-body__in { display: grid; grid-template-columns: 17rem minmax(0, 1fr); gap: 0 clamp(2.5rem, 6vw, 7rem); padding: clamp(3rem, 5vw, 4.5rem) 0 clamp(1rem, 2vw, 2rem); }
.vis-athlete-rail { position: sticky; top: 5.5rem; align-self: start; display: grid; gap: 1.5rem; }
.vis-athlete-rail__nav ul { list-style: none; margin: 0; padding: 0; }
.vis-athlete-rail__nav a { display: block; padding: 0.65rem 0 0.65rem 1rem; border-left: 2px solid var(--ab-line); color: var(--ab-ink-70); text-decoration: none; font-weight: 600; font-size: 0.9375rem; }
.vis-athlete-rail__nav a:hover, .vis-athlete-rail__nav a[aria-current] { color: var(--ab-ink); }
.vis-athlete-rail__nav a[aria-current] { border-left-color: var(--wp--preset--color--gold-500); }
.vis-athlete-card { border: 1px solid var(--ab-line); border-radius: 12px; padding: 1.25rem; background: #fff; }
.vis-athlete .vis-athlete-card h3 { margin: 0 0 0.5rem; font: 700 0.75rem/1.6 var(--wp--preset--font-family--body); letter-spacing: 0.16em; text-transform: uppercase; color: var(--ab-acc); }
.vis-athlete-card p { margin: 0 0 1rem; font-size: 0.9375rem; line-height: 1.5; color: var(--ab-ink-70); }
.vis-athlete-card small { display: block; margin-top: 0.75rem; font-size: 0.75rem; color: var(--ab-ink-70); line-height: 1.5; }
.vis-athlete-card__social { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; }
.vis-athlete-card__social a { display: flex; align-items: center; gap: 0.6rem; padding: 0.6rem 0.75rem; border: 1px solid var(--ab-line); border-radius: 8px; color: var(--ab-ink); text-decoration: none; font-weight: 600; font-size: 0.9375rem; }
.vis-athlete-card__social a:hover { border-color: var(--ab-ink); }
.vis-athlete-btn { box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.85rem 1.25rem; border-radius: var(--wp--custom--radius--pill, 999px); font-weight: 700; font-size: 0.9375rem; text-decoration: none; line-height: 1.2; }
.vis-athlete-card .vis-athlete-btn { width: 100%; padding-inline: 0.75rem; font-size: 0.875rem; white-space: nowrap; }
.vis-athlete-btn--gold { background: var(--wp--preset--color--gold-500); color: var(--wp--preset--color--navy-950); }
.vis-athlete-btn--gold:hover { background: var(--wp--preset--color--gold-300); color: var(--wp--preset--color--navy-950); }
.vis-athlete-btn--line { border: 1.5px solid currentColor; color: inherit; }
.vis-athlete-btn--navy { background: var(--wp--preset--color--navy-900); color: #fff; }
.vis-athlete-btn--navy:hover { background: var(--wp--preset--color--blue-700); color: #fff; }
.vis-athlete-main { min-width: 0; }
.vis-athlete-sec { padding-bottom: clamp(3rem, 6vw, 5rem); margin-bottom: clamp(3rem, 6vw, 5rem); border-bottom: 1px solid var(--ab-line); }
.vis-athlete-sec:last-child { border-bottom: 0; margin-bottom: 0; }
.vis-athlete h2.vis-athlete-h2 { margin: 0 0 1.5rem; font-family: var(--wp--preset--font-family--display); font-weight: 700; font-style: italic; text-transform: uppercase; font-size: clamp(2rem, 1.4rem + 1.8vw, 3.25rem); line-height: 0.9; letter-spacing: 0; color: inherit; }
.vis-athlete h2.vis-athlete-h2 small { display: block; font: 700 0.75rem/2.4 var(--wp--preset--font-family--body); letter-spacing: 0.18em; text-transform: uppercase; font-style: normal; margin-bottom: 0.25rem; color: var(--ab-acc, var(--wp--preset--color--gold-500)); }
/* Games record: one block per Games, a row per event, a medal disc on medal rows; the medal table beside it. */
.vis-athlete-record { display: grid; grid-template-columns: minmax(0, 1fr) 20rem; gap: 2rem clamp(2rem, 4vw, 4rem); align-items: start; }
.vis-games { list-style: none; margin: 0; padding: 0; }
.vis-games > li { display: grid; grid-template-columns: 9rem minmax(0, 1fr); gap: 1rem 2rem; padding: 1.5rem 0; border-top: 1px solid var(--ab-line); }
.vis-games > li:first-child { border-top: 0; padding-top: 0; }
.vis-games__g { display: grid; gap: 0.25rem; align-content: start; }
.vis-games__g b { font-family: var(--wp--preset--font-family--display); font-weight: 700; font-style: italic; font-size: 2.75rem; line-height: 0.85; }
.vis-games__g.is-gold b { color: var(--ab-gold-text); }
.vis-games__g.is-major b { font-size: 1.75rem; font-style: normal; }
.vis-games__g span { font-size: 0.8125rem; color: var(--ab-ink-70); line-height: 1.3; }
.vis-games__ev { list-style: none; margin: 0; padding: 0; }
.vis-games__ev li { display: grid; grid-template-columns: minmax(0, 1fr) 7rem 1.6rem; gap: 1rem; align-items: center; padding: 0.55rem 0; border-bottom: 1px solid var(--ab-line); }
.vis-games__ev li:last-child { border-bottom: 0; }
.vis-games__ev .e { font-weight: 600; }
.vis-games__ev .e small { display: block; font-weight: 400; color: var(--ab-ink-70); font-size: 0.8125rem; }
.vis-games__ev .p { text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }
.vis-games__ev .p.n { color: var(--ab-ink-70); font-weight: 400; }
.vis-games__ev .m { width: 1.4rem; height: 1.4rem; border-radius: 50%; justify-self: end; border: 1.5px solid var(--ab-line); }
.vis-games__ev .m.is-gold, .vis-games__ev .m.is-silver, .vis-games__ev .m.is-bronze { background: var(--vis-medal); border-color: var(--vis-medal); }
.vis-medal-table { width: 100%; border-collapse: collapse; font-size: 0.9375rem; }
.vis-medal-table th { font: 700 0.6875rem/1.6 var(--wp--preset--font-family--body); letter-spacing: 0.16em; text-transform: uppercase; color: var(--ab-ink-70); text-align: right; padding: 0 0 0.5rem; border-bottom: 1px solid var(--ab-ink); }
.vis-medal-table th:first-child, .vis-medal-table tbody th { text-align: left; }
.vis-medal-table tbody th { font: 500 0.9375rem/1.4 var(--wp--preset--font-family--body); letter-spacing: 0; text-transform: none; color: var(--ab-ink); padding: 0.6rem 0; border-bottom: 1px solid var(--ab-line); }
.vis-medal-table td { padding: 0.6rem 0; border-bottom: 1px solid var(--ab-line); text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; }
.vis-medal-table td.z { color: var(--ab-line); }
.vis-medal-table thead i { display: inline-block; width: 0.6rem; height: 0.6rem; border-radius: 50%; margin-left: 0.4em; vertical-align: -0.05em; background: var(--vis-medal); }
/* In their words */
.vis-athlete-quote { margin: 0; font-size: clamp(1.75rem, 1.2rem + 1.8vw, 2.75rem); line-height: 1.15; font-weight: 300; letter-spacing: -0.015em; max-width: 24ch; }
.vis-athlete-quote.is-long { font-size: clamp(1.375rem, 1rem + 1.1vw, 1.875rem); max-width: 36ch; }
.vis-athlete-quote cite { display: block; margin-top: 1.25rem; font: 700 0.75rem/1.6 var(--wp--preset--font-family--body); font-style: normal; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ab-ink-70); }
.vis-athlete-body .vis-athlete__qa { margin: 2.5rem 0 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 3rem; }
.vis-athlete-body .vis-athlete__qa div { display: block; padding: 1rem 0; border-top: 1px solid var(--ab-line); border-bottom: 0; }
.vis-athlete-body .vis-athlete__qa dt { font-weight: 400; font-size: 0.875rem; color: var(--ab-ink-70); }
.vis-athlete-body .vis-athlete__qa dd { margin: 0.2rem 0 0; color: var(--ab-ink); font-weight: 600; font-size: 1.0625rem; line-height: 1.5; }
/* In the news */
.vis-athlete-news { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
.vis-athlete-news a { color: inherit; text-decoration: none; display: block; }
.vis-athlete-news figure { margin: 0; aspect-ratio: 16 / 9; overflow: hidden; border-radius: var(--wp--custom--radius--md); background: #ebe8e1; }
.vis-athlete-news img { width: 100%; height: 100%; object-fit: cover; display: block; transition: scale var(--wp--custom--motion--base) var(--wp--custom--motion--ease); }
.vis-athlete-news a:hover img { scale: 1.03; }
.vis-athlete-news time { display: block; margin: 1rem 0 0.35rem; font: 700 0.8125rem/1 var(--wp--preset--font-family--body); letter-spacing: 0.08em; text-transform: uppercase; color: var(--ab-acc); }
.vis-athlete-news h3 { margin: 0; font: 700 1.1875rem/1.3 var(--wp--preset--font-family--body); text-transform: none; color: var(--ab-ink); }
/* Navy band: back the journey, the squad */
.vis-athlete-band { background: var(--wp--preset--color--navy-900); color: var(--vis-ink); }
.vis-athlete-band__in { padding: clamp(3rem, 6vw, 5.5rem) 0; }
.vis-athlete-back { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 2rem clamp(2rem, 6vw, 7rem); align-items: center; }
.vis-athlete-back p { margin: 0; color: var(--vis-muted); max-width: 46ch; font-size: 1.0625rem; line-height: 1.6; }
.vis-athlete-back p b { color: var(--vis-ink); }
.vis-athlete-cta { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.75rem; }
.vis-athlete-cta .vis-athlete-btn { padding: 0.95rem 1.5rem; }
.vis-athlete-band .vis-athlete-btn--line { border-color: color-mix(in srgb, var(--vis-ink) 35%, transparent); color: var(--vis-ink); }
.vis-athlete-asf { border: 1px solid var(--vis-line); border-radius: 12px; padding: 1.5rem; display: grid; gap: 0.6rem; font-size: 0.9375rem; color: var(--vis-muted); }
.vis-athlete-asf b { color: var(--vis-ink); font-size: 1.0625rem; }
.vis-athlete-asf .tag { font: 700 0.6875rem/1 var(--wp--preset--font-family--body); letter-spacing: 0.16em; text-transform: uppercase; color: var(--vis-accent-ink); }
.vis-athlete-squad { margin-top: clamp(3rem, 6vw, 5rem); }
.vis-athlete-squad__head { display: flex; justify-content: space-between; align-items: end; gap: 1rem; margin-bottom: 1.5rem; }
.vis-athlete-squad__head .vis-athlete-h2 { margin: 0; }
.vis-athlete__head + .vis-athlete-band { margin-top: clamp(2.5rem, 5vw, 4rem); }
.vis-athlete-tiles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.vis-athlete-tiles a { position: relative; aspect-ratio: 4 / 5; overflow: hidden; border-radius: var(--wp--custom--radius--md); background: var(--wp--preset--color--navy-800); display: grid; align-content: end; padding: 1.25rem; text-decoration: none; color: var(--vis-ink); }
.vis-athlete-tiles img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 15%; transition: scale var(--wp--custom--motion--base) var(--wp--custom--motion--ease); }
.vis-athlete-tiles a:hover img { scale: 1.03; }
.vis-athlete-tiles a::after { content: ""; position: absolute; inset: 50% 0 0; background: linear-gradient(0deg, rgba(3, 25, 63, 0.95), rgba(3, 25, 63, 0)); }
.vis-athlete-tiles .vis-initials { position: absolute; inset: 0; aspect-ratio: auto; }
.vis-athlete-tiles small, .vis-athlete-tiles b { position: relative; z-index: 1; display: block; }
.vis-athlete-tiles small { font: 700 0.6875rem/1 var(--wp--preset--font-family--body); letter-spacing: 0.16em; text-transform: uppercase; color: var(--vis-accent-ink); margin-bottom: 0.4rem; }
.vis-athlete-tiles b { font-family: var(--wp--preset--font-family--display); font-weight: 700; font-style: italic; text-transform: uppercase; font-size: 1.75rem; line-height: 0.9; }
.vis-athlete-pn { display: flex; justify-content: space-between; gap: 1rem; margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--vis-line); font-weight: 600; }
.vis-athlete-pn a { color: inherit; text-decoration: none; }
.vis-athlete-pn a + a { text-align: right; }
.vis-athlete-pn small { display: block; font: 700 0.6875rem/1.8 var(--wp--preset--font-family--body); letter-spacing: 0.16em; text-transform: uppercase; color: var(--vis-muted); }
@media (max-width: 1000px) {
	.vis-athlete-body__in { grid-template-columns: 1fr; }
	.vis-athlete-rail { position: static; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 2.5rem; }
	.vis-athlete-rail__nav { grid-column: 1 / -1; }
	.vis-athlete-rail__nav ul { display: flex; gap: 0.25rem; overflow-x: auto; padding-bottom: 0.5rem; border-bottom: 1px solid var(--ab-line); }
	.vis-athlete-rail__nav a { border-left: 0; border-bottom: 2px solid transparent; padding: 0.5rem 0.75rem; white-space: nowrap; }
	.vis-athlete-rail__nav a[aria-current] { border-bottom-color: var(--wp--preset--color--gold-500); }
	.vis-athlete-record { grid-template-columns: 1fr; }
	.vis-games > li { grid-template-columns: 1fr; }
	.vis-athlete-body .vis-athlete__qa, .vis-athlete-news { grid-template-columns: 1fr; }
	.vis-athlete-back { grid-template-columns: 1fr; }
	.vis-athlete-tiles { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
	.vis-athlete-rail { grid-template-columns: 1fr; }
	.vis-games__ev li { grid-template-columns: minmax(0, 1fr) auto 1.4rem; }
	.vis-athlete-squad__head { flex-direction: column; align-items: start; }
}

/* Tabs */

/* News article ----------------------------------------------------------- */
.vis-article { padding-block: 1rem var(--vis-section-space); }
.vis-article__cols { gap: clamp(2rem, 4vw, 4rem) !important; }
.vis-article__title { font-size: var(--wp--preset--font-size--huge); margin-top: 0; }
.vis-article__meta { border-top: 1px solid var(--wp--preset--color--gray-300); padding-top: 1rem; color: var(--wp--preset--color--blue-700); }
.vis-article__meta p, .vis-article__date { margin: 0; }
.vis-article__date::before { content: ""; display: inline-block; width: 1.1em; height: 1.1em; margin-right: 0.5em; vertical-align: -0.15em; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23F8981D' stroke-width='2'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E") center / contain no-repeat; }
.vis-article__content { font-size: 1.0625rem; }
.vis-article__content a { color: var(--wp--preset--color--blue-700); }
.vis-article__aside h2 { color: var(--wp--preset--color--blue-700); }
.vis-article__tags-title { font-style: italic; text-transform: none; color: var(--wp--preset--color--blue-700); margin-top: 2rem; }
.vis-pills { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.vis-pills a { background: var(--wp--preset--color--blue-700); color: var(--wp--preset--color--white) !important; padding: 0.4rem 1rem; border-radius: var(--wp--custom--radius--pill); font-size: 0.75rem; font-weight: 700; text-transform: uppercase; text-decoration: none; }
.vis-pills .wp-block-post-terms__separator { display: none; }

.vis-article + .vis-section { padding-top: 0; }

/* Directory (filterable grid) ------------------------------------------- */
.vis-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem 1rem; margin-bottom: 1.25rem; }
.vis-filters__select {
	appearance: none; min-height: 52px; min-width: 11rem; padding: 0 2.75rem 0 1.1rem; border: 0; border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='%23002C76'/%3E%3C/svg%3E") right 1.1rem center / 12px no-repeat;
	color: var(--wp--preset--color--blue-700); font-family: var(--wp--preset--font-family--display); font-size: 1rem; text-transform: uppercase; cursor: pointer;
}
.vis-filters__toggle { display: inline-flex; align-items: center; gap: 0.6rem; font-family: var(--wp--preset--font-family--display); text-transform: uppercase; cursor: pointer; min-height: 44px; }
.vis-filters__toggle input { appearance: none; width: 52px; height: 28px; border-radius: 99px; background: color-mix(in srgb, var(--vis-ink) 85%, transparent); position: relative; cursor: pointer; margin: 0; transition: background var(--wp--custom--motion--fast); }
.vis-filters__toggle input::after { content: ""; position: absolute; top: 3px; left: 3px; width: 22px; height: 22px; border-radius: 50%; background: var(--wp--preset--color--gray-300); transition: transform var(--wp--custom--motion--fast); }
.vis-filters__toggle input:checked { background: var(--wp--preset--color--gold-500); }
.vis-filters__toggle input:checked::after { transform: translateX(24px); background: var(--wp--preset--color--white); }
.vis-filters__apply { min-height: 48px; padding: 0 1.25rem; border: 2px solid color-mix(in srgb, var(--vis-ink) 60%, transparent); border-radius: var(--wp--custom--radius--pill); background: transparent; color: inherit; font-family: var(--wp--preset--font-family--display); text-transform: uppercase; cursor: pointer; }
.vis-filters__search { margin-left: auto; display: flex; align-items: center; background: var(--wp--preset--color--white); border-radius: var(--wp--custom--radius--pill); padding: 4px 4px 4px 1.25rem; min-width: min(100%, 22rem); }
.vis-filters__search input { flex: 1; border: 0; background: transparent; font: inherit; font-size: 0.9375rem; color: var(--wp--preset--color--navy-900); min-height: 44px; }
.vis-filters__search button { width: 44px; height: 44px; border: 0; border-radius: 50%; cursor: pointer; background: var(--wp--preset--color--gold-500) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230b233f' stroke-width='2.4'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-4-4'/%3E%3C/svg%3E") center / 20px no-repeat; }
@media (max-width: 781px) { .vis-filters__search { margin-left: 0; flex-basis: 100%; } .vis-filters__select { flex: 1; } }
.vis-directory__status { font-size: 0.875rem; color: color-mix(in srgb, var(--vis-ink) 70%, transparent); margin: 0 0 1.5rem; }
.vis-directory__grid { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.5rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); }
.vis-directory[aria-busy="true"] .vis-directory__grid { opacity: 0.5; transition: opacity var(--wp--custom--motion--fast); }
.vis-directory__grid .vis-card { display: flex; flex-direction: column; }
.vis-directory__grid .vis-card--athlete .wp-block-post-featured-image img { aspect-ratio: 290 / 272; height: auto; }
.vis-directory__grid .vis-card--news .wp-block-post-featured-image img { aspect-ratio: 16 / 9; height: auto; }
.vis-directory__more { display: flex; justify-content: center; margin: 2.5rem 0 0; }
.vis-directory__empty { padding: 2rem 0; }
.vis-page-head { text-align: center; position: relative; z-index: 3; margin-top: calc(-1 * clamp(170px, 18vw, 250px)) !important; margin-bottom: clamp(5rem, 9vw, 9rem) !important; }

/* Card base (also used by server-rendered cards outside the block tree) */
.vis-card { background: var(--wp--preset--color--white); color: var(--wp--preset--color--gray-900); border-radius: var(--wp--custom--radius--lg); padding: 8px; }
.vis-card a { color: inherit; text-decoration: none; }
.vis-card .vis-card__name a { color: var(--wp--preset--color--blue-700); }
.vis-card .wp-block-post-date { margin: 0; }
.vis-filters__search { box-sizing: border-box; }

/* Legacy (not yet rebuilt) pages */
.vis-legacy .vis-legacy__title { text-align: center; margin: calc(-1 * clamp(170px, 18vw, 250px)) 0 clamp(4rem, 8vw, 7rem); position: relative; z-index: 3; font-size: var(--wp--preset--font-size--colossal); }
.vis-legacy .wp-block-post-content { overflow-wrap: anywhere; }

/* Mailchimp for WP form (its markup is edited in Mailchimp for WP > Forms) */
.vis-signup-mc4wp label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.vis-signup-mc4wp .email-input-wrapper { display: flex; border-bottom: 2px solid var(--wp--preset--color--blue-700); }
.vis-signup-mc4wp input[type="email"] { flex: 1; font: inherit; color: var(--wp--preset--color--navy-900); }
.vis-signup-mc4wp .submit-button { width: 44px; border: 0; background: transparent; color: var(--wp--preset--color--blue-700); cursor: pointer; }
.vis-signup-mc4wp .description { color: var(--wp--preset--color--gray-600); font-size: var(--wp--preset--font-size--small); margin-top: 1rem; display: flex; gap: 0.6rem; align-items: center; }
.vis-signup-mc4wp .description::before { content: ""; width: 22px; height: 16px; flex: none; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 16' fill='none' stroke='%23F8981D' stroke-width='1.6'%3E%3Crect x='1' y='1' width='20' height='14' rx='2'/%3E%3Cpath d='m1 3 10 6 10-6'/%3E%3C/svg%3E") no-repeat; }
.vis-signup-mc4wp .mc4wp-response { margin-top: 0.75rem; }

/* VIS Hub header: account button and menu */
.vis-account { position: relative; }
.vis-account__button {
	display: inline-flex; align-items: center; gap: 0.6rem; min-height: 48px; padding: 0 1.4rem; border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--gold-500); color: var(--wp--preset--color--navy-900); text-decoration: none; cursor: pointer;
	font-family: var(--wp--preset--font-family--body); font-size: .8125rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; list-style: none;
}
.vis-account__button::-webkit-details-marker { display: none; }
/* Signed in: just the lock and initials (the name is in the menu). */
.vis-account__button--in { gap: .45rem; padding: 0 1rem 0 .9rem; letter-spacing: .1em; }
.vis-account__button--in svg:first-child { width: 17px; height: 19px; }
.vis-account__button:hover { background: var(--wp--preset--color--gold-300); color: var(--wp--preset--color--navy-900); }
.vis-account__chevron { margin-left: -.15rem; transition: transform .3s ease; }
.vis-account__menu[open] .vis-account__chevron { transform: rotate(180deg); }
.vis-account__button:focus-visible { outline: 2px solid var(--wp--preset--color--white); outline-offset: 3px; }
/* The open menu: who is signed in, their links, then Log out. */
.vis-account__panel {
	position: absolute; right: 0; top: calc(100% + .6rem); z-index: 30; width: 18rem; padding: .5rem;
	background: var(--wp--preset--color--white); color: var(--wp--preset--color--navy-900); border-radius: 16px;
	box-shadow: 0 30px 60px -24px rgba(3, 25, 63, .55), 0 0 0 1px rgba(11, 35, 63, .06);
	font-family: var(--wp--preset--font-family--body); text-transform: none; transform-origin: top right;
}
.vis-account__menu[open] .vis-account__panel { animation: vis-account-in .3s cubic-bezier(.16, 1, .3, 1) both; }
@keyframes vis-account-in { from { opacity: 0; transform: translateY(-6px) scale(.97); } }
.vis-account__who { display: flex; align-items: center; gap: .8rem; padding: .75rem .75rem 1rem; margin-bottom: .35rem; border-bottom: 1px solid var(--wp--preset--color--gray-100); }
.vis-account__avatar {
	flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--wp--preset--color--navy-900);
	box-shadow: 0 0 0 2px var(--wp--preset--color--white), 0 0 0 3.5px var(--wp--preset--color--gold-500);
	color: var(--wp--preset--color--white); font-family: var(--wp--preset--font-family--display); font-style: italic; font-size: 1.125rem;
}
.vis-account__id { display: grid; min-width: 0; line-height: 1.3; }
.vis-account__id strong { font-size: .9375rem; font-weight: 700; }
.vis-account__id small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--wp--preset--color--gray-600); font-size: .8125rem; }
.vis-account__panel ul { list-style: none; margin: 0 0 .35rem; padding: 0 0 .35rem; border-bottom: 1px solid var(--wp--preset--color--gray-100); }
.vis-account__panel a {
	display: flex; align-items: center; gap: .75rem; padding: .7rem .75rem; border-radius: 10px;
	color: var(--wp--preset--color--navy-900); font-size: .9375rem; font-weight: 600; text-decoration: none; transition: background-color .2s ease, color .2s ease;
}
.vis-account__panel a svg { flex: none; color: var(--wp--preset--color--gray-600); transition: color .2s ease; }
.vis-account__panel a:hover, .vis-account__panel a:focus-visible { background: var(--wp--preset--color--gray-100); color: var(--wp--preset--color--blue-700); outline: none; }
.vis-account__panel a:hover svg, .vis-account__panel a:focus-visible svg { color: var(--wp--preset--color--blue-700); }
.vis-account__panel .vis-account__logout { color: var(--wp--preset--color--gray-600); }
@media (prefers-reduced-motion: reduce) { .vis-account__menu[open] .vis-account__panel { animation: none; } }
.vis-lms .vis-header { top: 0; }
.vis-instagram { margin-top: 2rem; }
/* Slider inside old page content: full-bleed hero, as on the old site. */
html, body { overflow-x: clip; }
.vis-legacy .wp-block-post-content .vis-slider { width: 100vw; margin-left: calc(50% - 50vw) !important; margin-right: 0 !important; }
.vis-legacy .vis-section:has(.vis-slider) { padding-top: 0; }
.vis-slider__text { font-size: var(--wp--preset--font-size--medium); max-width: 36rem; }
.vis-slider__pause, .vis-legacy .vis-slider .vis-hero-video__toggle { top: auto; left: auto; right: var(--vis-gutter); bottom: 2rem; }

/* Full-screen hero (like ngv.vic.gov.au): the video fills exactly the visible
   screen on load on every device; the LA28 bar, when present, sits above it. */
:root:has(.vis-countdown) { --vis-bar-h: 60px; }
.vis-slider .vis-hero-video,
.vis-legacy .vis-slider .vis-hero-video { min-height: calc(100svh - var(--vis-bar-h, 0px)); }
@supports not (height: 100svh) { .vis-slider .vis-hero-video { min-height: calc(100vh - var(--vis-bar-h, 0px)); } }
/* The curved photo band now only tucks its curve into the bottom of the screen. */
.vis-photo-band { margin-top: -7vw !important; }

.vis-slider .vis-hero-video__inner,
.vis-legacy .vis-slider .vis-hero-video__inner { padding-bottom: calc(7vw + clamp(3rem, 6vw, 5rem)); }
.vis-legacy .vis-slider .vis-hero-video__inner { padding-bottom: clamp(5rem, 9vw, 8rem); }
.vis-slider .vis-hero-video__toggle,
.vis-slider__pause { bottom: calc(7vw + clamp(3rem, 6vw, 5rem)) !important; right: calc(var(--vis-gutter) + 56px) !important; top: auto !important; left: auto !important; }
.vis-legacy .vis-slider .vis-hero-video__toggle, .vis-legacy .vis-slider__pause { bottom: clamp(5rem, 9vw, 8rem) !important; }
.vis-slider__down { position: absolute; z-index: 4; right: var(--vis-gutter); width: 44px; height: 44px; display: grid; place-items: center; color: var(--vis-ink); }
.vis-legacy .vis-slider__down { bottom: clamp(5rem, 9vw, 8rem); }
.vis-slider__down::before { content: ""; width: 18px; height: 34px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 17 51' fill='none'%3E%3Cpath d='M8.5 1v48m0 0L1 39m7.5 10L16 39' stroke='%23fff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat; animation: vis-nudge 2.4s ease-in-out infinite; }
@keyframes vis-nudge { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(6px); } }
.vis-slider__after { display: block; scroll-margin-top: 0; }
@media (max-width: 767px) {

	.vis-slider .vis-hero-video__toggle, .vis-slider__pause, .vis-slider__down { bottom: calc(10vw + 2.5rem) !important; }
}
@media (max-width: 767px) {
	.vis-slider .vis-hero-video__inner { padding-right: calc(var(--vis-gutter) + 104px); }
	.vis-hero-video__title { font-size: clamp(2rem, 9vw, 2.75rem); }
}
.vis-hero-video__inner { box-sizing: border-box; max-width: calc(1600px + 2 * var(--vis-gutter)); }

/* Premium layout: header, hero and sections share one wide grid (max 1600px)
   with the same side gutter, so edges line up from the logo down. */
.vis-hero-video__inner { padding-right: calc(var(--vis-gutter) + 64px); }

/* Equal-height cards in every row ------------------------------------------
   Grids and carousels stretch each item; the wrappers in between (list item,
   template-part div) pass that height down; the card is a column whose body
   grows, so card bottoms line up whatever the text length. */
:is(.wp-block-post-template, .vis-directory__grid, .vis-legacy-grid, .vis-logos .wp-block-post-template) > li { margin: 0 !important; }
.wp-block-post-template > li, .vis-directory__grid > li { display: flex; flex-direction: column; }
.wp-block-post-template > li > .wp-block-template-part { flex: 1; display: flex; flex-direction: column; }
.vis-card { display: flex !important; flex-direction: column !important; flex: 1; height: auto; }
.vis-card > :is(.wp-block-post-featured-image, .wp-block-image, figure) { flex: none; }
.vis-card__body { flex: 1; }
.vis-carousel .wp-block-post-template { align-items: stretch; }
/* Fixed line counts keep rows calm: titles 3 lines max, excerpts 2, names 2. */
.vis-card__title, .vis-card .wp-block-post-title.vis-card__title { -webkit-line-clamp: 3; line-clamp: 3; }
.vis-card__name { display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.05; }

/* Hero scrim: no flat wash over the footage (it flattened the picture).
   Only a soft gradient at the top (header legibility) and bottom-left
   (headline), like ngv.vic.gov.au. */
.vis-hero-video::before { background: linear-gradient(180deg, rgba(3, 25, 63, 0.55) 0%, rgba(3, 25, 63, 0) 22%); }
.vis-hero-video::after { background: linear-gradient(20deg, rgba(3, 25, 63, 0.7) 0%, rgba(3, 25, 63, 0.25) 35%, rgba(3, 25, 63, 0) 60%); }

/* ======================================================================
   Premium layer (14/10/2026): image-led cards, editorial news, sticky
   header, carousel controls, motion. Same brand, sharper execution.
   ====================================================================== */
:root { --vis-section-space: clamp(3.5rem, 2rem + 4vw, 6.5rem); --vis-ease: cubic-bezier(.2, .7, .2, 1); } /* one beat between bands, home included */

/* Editorial news: one feature story + two, photo-led with text on the image. */
.vis-section--news .wp-block-post-template { grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr) !important; grid-auto-rows: minmax(250px, auto); gap: 1.5rem !important; }
.vis-section--news .wp-block-post-template > li:first-child { grid-row: span 2; }
.vis-section--news .vis-card { position: relative; background: var(--wp--preset--color--navy-800); padding: 0 !important; border-radius: var(--wp--custom--radius--md); overflow: hidden; min-height: 100%; justify-content: flex-end; }
.vis-section--news .vis-card .wp-block-post-featured-image { position: absolute; inset: 0; margin: 0; border-radius: 0; aspect-ratio: auto !important; height: 100%; }
.vis-section--news .vis-card .wp-block-post-featured-image img { height: 100% !important; width: 100%; object-fit: cover; aspect-ratio: auto !important; border-radius: 0 !important; }
.vis-section--news .vis-card__body { position: relative; z-index: 1; flex: none; margin-top: auto; padding: clamp(1.25rem, 2.5vw, 2.25rem); background: linear-gradient(180deg, rgba(3, 25, 63, 0) 0%, rgba(3, 25, 63, .78) 38%, rgba(3, 25, 63, .96) 100%); color: var(--wp--preset--color--white); }
.vis-section--news .vis-card .wp-block-post-date { color: var(--vis-accent-ink); font-weight: 700; text-transform: uppercase; letter-spacing: .08em; font-size: .8125rem; }
.vis-section--news .vis-card__title { color: var(--vis-ink); font-size: clamp(1.125rem, 1rem + .5vw, 1.375rem); }
.vis-section--news li:first-child .vis-card__title { font-family: var(--wp--preset--font-family--display); font-style: italic; text-transform: uppercase; font-weight: 400; font-size: clamp(1.75rem, 1rem + 2vw, 2.75rem); line-height: 1; }
.vis-section--news .vis-card__excerpt { display: none; }
.vis-section--news li:first-child .vis-card__excerpt { display: block; color: color-mix(in srgb, var(--vis-ink) 82%, transparent); max-width: 42rem; }
.vis-section--news li:first-child .vis-card__excerpt p { -webkit-line-clamp: 3; }
/* Lead story: big headline in two balanced lines. */
.vis-section--news li:first-child .vis-card__title { max-width: 26ch; text-wrap: balance; padding-right: .1em; }
.vis-section--news li:first-child :is(.vis-card__title, .vis-card__title a) { font-size: clamp(1.875rem, 1rem + 2vw, 3rem) !important; line-height: .95; }
/* The other two: thumbnail beside the headline on navy, no text over the photo. */
@media (min-width: 901px) {
	.vis-section--news li:not(:first-child) .vis-card { flex-direction: row !important; align-items: stretch; justify-content: flex-start; gap: 0 !important; }
	.vis-section--news li:not(:first-child) .vis-card .wp-block-post-featured-image { position: relative; inset: auto; flex: 0 0 46%; height: auto; overflow: hidden; }
	.vis-section--news li:not(:first-child) .vis-card .wp-block-post-featured-image img { position: absolute; inset: 0; }
	.vis-section--news li:not(:first-child) .vis-card__body { flex: 1; margin: 0; align-self: center; background: none; padding: clamp(1.25rem, 2vw, 2rem); gap: .6rem !important; }
	.vis-section--news li:not(:first-child) :is(.vis-card__title, .vis-card__title a) { font-size: clamp(1.0625rem, .9rem + .45vw, 1.3125rem) !important; line-height: 1.3; text-wrap: pretty; }
}
@media (max-width: 900px) {
	.vis-section--news .wp-block-post-template { grid-template-columns: 1fr !important; grid-auto-rows: minmax(300px, auto); }
	.vis-section--news .wp-block-post-template > li:first-child { grid-row: auto; min-height: 420px; }
}

/* Athlete cards: full-bleed portrait, name on the photo. */
.vis-card--athlete { position: relative; padding: 0 !important; background: var(--wp--preset--color--navy-800) !important; border-radius: var(--wp--custom--radius--md); overflow: hidden; aspect-ratio: 3 / 4; justify-content: flex-end; }
.vis-card--athlete :is(.wp-block-post-featured-image, figure) { position: absolute; inset: 0; margin: 0; border-radius: 0 !important; aspect-ratio: auto !important; height: 100%; }
.vis-card--athlete :is(.wp-block-post-featured-image, figure) img { width: 100%; height: 100% !important; object-fit: cover; object-position: center 20%; aspect-ratio: auto !important; border-radius: 0 !important; }
.vis-card--athlete .vis-card__body { position: relative; z-index: 1; flex: none; margin-top: auto; padding: 4rem 1.25rem 1.25rem; background: linear-gradient(180deg, rgba(3, 25, 63, 0) 0%, rgba(3, 25, 63, .85) 55%, rgba(3, 25, 63, .96) 100%); gap: .35rem !important; }
.vis-card--athlete .vis-card__name, .vis-card--athlete .vis-card__name a { color: var(--vis-ink) !important; font-size: clamp(1.375rem, 1.1rem + .8vw, 1.875rem); }
.vis-card--athlete .vis-card__sport, .vis-card--athlete .vis-card__sport a { color: var(--vis-accent-ink); font-size: .8125rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; }
.vis-directory__grid .vis-card--athlete .wp-block-post-featured-image img, .vis-directory__grid .vis-card--athlete figure img { aspect-ratio: auto !important; }

/* Hover: slow photo zoom on every image-led card. */
:is(.vis-card) img { transition: scale .6s var(--vis-ease) !important; }
:is(.vis-card):hover img { scale: 1.03 !important; }

/* Carousels: hidden scrollbar, round previous/next buttons. */
.vis-carousel { position: relative; }
.vis-carousel .wp-block-post-template { scrollbar-width: none; padding-bottom: 0 !important; grid-auto-columns: calc((100% - 3 * 1.5rem) / 4.25) !important; }
.vis-carousel .wp-block-post-template::-webkit-scrollbar { display: none; }
@media (max-width: 1024px) { .vis-carousel .wp-block-post-template { grid-auto-columns: calc((100% - 1.5rem) / 2.3) !important; } }
@media (max-width: 600px) { .vis-carousel .wp-block-post-template { grid-auto-columns: 72% !important; } }
.vis-carousel__nav { display: flex; justify-content: flex-end; gap: .75rem; margin-top: 1.5rem; }
.vis-carousel__btn { width: 52px; height: 52px; border-radius: 50%; border: 2px solid color-mix(in srgb, var(--vis-ink) 45%, transparent); background: transparent; cursor: pointer; display: grid; place-items: center; transition: background-color .2s, border-color .2s, opacity .2s; }
.vis-carousel__btn::before { content: ""; width: 20px; height: 20px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14m-6-6 6 6-6 6'/%3E%3C/svg%3E") center / contain no-repeat; }
.vis-carousel__btn.is-prev::before { transform: rotate(180deg); }
.vis-carousel__btn:hover:not(:disabled) { background: var(--wp--preset--color--gold-500); border-color: var(--wp--preset--color--gold-500); }
.vis-carousel__btn:disabled { opacity: .3; cursor: default; }

/* Engage tiles */
.vis-tiles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.25rem; }
@media (max-width: 1024px) { .vis-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .vis-tiles { grid-template-columns: 1fr; } }

/* Reveal on scroll (JS adds .vis-reveal only to things below the first screen) */

/* Champion tiles: taller, cleaner */
.vis-champion-tile { min-height: clamp(220px, 20vw, 300px) !important; border: 0 !important; }
.vis-champion-tile__num { font-size: clamp(2.75rem, 1.5rem + 3vw, 4.25rem); font-variant-numeric: tabular-nums; }

/* Partners: uniform, calm logo wall */
.vis-logos .wp-block-post-template { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 2.5rem 2rem !important; align-items: center; justify-items: center; }
.vis-logos img { max-height: 56px !important; max-width: 140px !important; filter: grayscale(1); opacity: .7; transition: filter .3s, opacity .3s; }
.vis-logos li:hover img { filter: none; opacity: 1; }

/* Newsletter: the Mailchimp field matches the design (plugin styles reset) */
.vis-signup-mc4wp input[type="email"] { border: 0 !important; border-radius: 0 !important; box-shadow: none !important; background: transparent !important; padding: .9rem 0 !important; font-size: 1.125rem !important; width: 100%; outline: none; }
.vis-signup-mc4wp .email-input-wrapper:focus-within { border-bottom-color: var(--wp--preset--color--gold-500); }

/* Photo band (Brooke Buschkuehl, as on vis.org.au). Its transparent curve is
   ~10.5% of the image width deep, so it overlaps the hero by 12vw: the curve
   always lands on the video and no page background shows through. */
.vis-photo-band { margin: -12vw 0 0 !important; max-width: none; }
.vis-photo-band picture, .vis-photo-band img { display: block; width: 100%; height: auto; }
.vis-slider .vis-hero-video__inner { padding-bottom: calc(12vw + clamp(2rem, 4vw, 4rem)); }
.vis-slider__down { bottom: calc(12vw + clamp(2rem, 4vw, 4rem)) !important; }
.vis-section--news { margin-top: -14vw !important; }
@media (max-width: 767px) {
	.vis-photo-band { margin-top: -12vw !important; }
	.vis-slider .vis-hero-video__inner { padding-bottom: calc(12vw + 2.5rem); }
	.vis-slider__down { bottom: calc(12vw + 2.5rem) !important; }
	.vis-section--news { margin-top: -40vw !important; }
}
/* Fade the bottom of the photo into the page, as the live site does. */
.vis-photo-band::after { content: ""; position: absolute; inset: auto 0 -1px; height: 45%; background: linear-gradient(180deg, rgba(11, 35, 63, 0) 0%, var(--wp--preset--color--navy-900) 92%); pointer-events: none; }

/* Motion (assets/js/motion.js) ------------------------------------------ */
html.vis-motion:not(.vis-motion-ready) .vis-slider .vis-hero-video__title { visibility: hidden; animation: vis-release 0s 1.2s forwards; }
@keyframes vis-release { to { visibility: visible; } }
.vis-line { padding-bottom: .08em; margin-bottom: -.08em; } /* room for descenders inside the line mask */
.vis-progress { position: fixed; z-index: 1000; inset: 0 0 auto; height: 3px; background: linear-gradient(90deg, var(--wp--preset--color--gold-300), var(--wp--preset--color--gold-500)); transform-origin: left; transform: scaleX(0); pointer-events: none; }
.vis-history .vis-legacy__title, .vis-history h1 { text-wrap: balance; }

/* Page-to-page transitions (browsers that support cross-document View
   Transitions; others simply navigate). The header stays put while the
   page beneath cross-fades and lifts. */
@media (prefers-reduced-motion: no-preference) {
	@view-transition { navigation: auto; }
	.vis-header { view-transition-name: vis-header; }
	/* The new page sweeps up over the old one along a curve, like the VIS swoosh. */
	::view-transition-old(root) { animation: vis-vt-out .25s ease-out both; }
	::view-transition-new(root) { animation: vis-vt-in .35s ease-out both; }
	@keyframes vis-vt-out { to { opacity: 0; } }
	@keyframes vis-vt-in { from { opacity: 0; } }
}

/* Menu links: gold underline draws in from the left */
@media (hover: hover) {
	.vis-header .wp-block-navigation-item__content { background: linear-gradient(var(--wp--preset--color--gold-500), var(--wp--preset--color--gold-500)) left bottom / 0 2px no-repeat; transition: background-size .35s cubic-bezier(.2, .7, .2, 1); }
	.vis-header .wp-block-navigation-item__content:hover, .vis-header .current-menu-item > .wp-block-navigation-item__content { background-size: 100% 2px; }
	.vis-header .wp-block-navigation__submenu-container .wp-block-navigation-item__content { background-position: 1rem calc(100% - .4rem); }
}

/* Saved items: the heart (inc/saved.php, assets/js/saved.js) ---------------- */
.vis-save {
	display: inline-grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 50%;
	background: rgba(255, 255, 255, .92); color: var(--wp--preset--color--navy-900); cursor: pointer;
	box-shadow: 0 6px 18px -8px rgba(3, 25, 63, .45); transition: background-color .25s ease, transform .3s var(--vis-ease);
}
.vis-save svg { width: 20px; height: 20px; fill: transparent; stroke: currentColor; stroke-width: 1.8; stroke-linejoin: round; transition: fill .25s ease, stroke .25s ease; }
.vis-save:hover { background: var(--wp--preset--color--white); }
.vis-save:hover svg { stroke: var(--wp--preset--color--gold-500); }
.vis-save[aria-pressed="true"] svg { fill: var(--wp--preset--color--gold-500); stroke: var(--wp--preset--color--gold-500); }
.vis-save:focus-visible { outline: var(--wp--custom--focus--ring); outline-offset: 2px; }
/* On a card: top right of the photo, above the card's full-size title link. */
.vis-card__save { position: absolute; top: 16px; right: 16px; z-index: 2; }
/* Item pages: "Save" beside the heart, under the title. */
.vis-save--pill { width: auto; height: 44px; grid-auto-flow: column; gap: .5rem; padding: 0 1.15rem 0 .95rem; border-radius: var(--wp--custom--radius--pill); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--vis-ink, #0b233f) 18%, transparent); background: transparent; color: inherit; font: inherit; font-size: .9375rem; font-weight: 600; }
.vis-save--pill:hover { background: transparent; box-shadow: inset 0 0 0 1px currentColor; }
.vis-save-row { display: flex; justify-content: center; position: relative; z-index: 3; margin-top: 1.5rem; }
.vis-save-toast {
	position: fixed; left: 50%; bottom: max(1.25rem, env(safe-area-inset-bottom)); z-index: 1000; translate: -50% 1rem; opacity: 0; pointer-events: none;
	max-width: calc(100vw - 2rem); padding: .8rem 1.2rem; border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--navy-950); color: var(--wp--preset--color--white); font-size: .9375rem; box-shadow: 0 18px 40px -18px rgba(3, 25, 63, .7);
	transition: opacity .3s ease, translate .4s var(--vis-ease);
}
.vis-save-toast.is-shown { opacity: 1; translate: -50% 0; pointer-events: auto; }
.vis-save-toast a { color: var(--wp--preset--color--gold-500); font-weight: 600; text-underline-offset: .2em; }
@media (prefers-reduced-motion: no-preference) {
	.vis-save.is-popping svg { animation: vis-save-pop .45s var(--vis-ease); }
}
@keyframes vis-save-pop { 0% { scale: 1; } 35% { scale: 1.28; } 70% { scale: .94; } 100% { scale: 1; } }
