/*
 * igs-theme, build-1 (2026-09-28).
 * Direction B (practical local guide) as the base, A (reading column) for
 * long reads, C (full-width photo) only on the home page and area hubs.
 *
 * Tokens come from theme.json (brand measured on the current site:
 * navy #093274 logo, primary #576C7E buttons, heading #537391,
 * link #476581, sky #74A4CB accent, text #212121). No raw colour values
 * below: everything goes through the aliases in :root.
 *
 * Sections: 1 tokens, 2 base, 3 layout, 4 header + nav, 5 hero,
 * 6 page heads, 7 prose (migrated block content), 8 listing, 9 facts
 * panel, 10 CTA bar, 11 cards + directory + chips + pagination,
 * 12 article + TOC, 13 search / 404 / archive, 14 footer, 15 utilities,
 * 16 R2 components (trust, hours, status, beach facts, events, affiliate,
 * disclosure, video, photo credit; inc/components.php).
 */

/* 1. Tokens ------------------------------------------------------------ */
:root {
	--c-navy: var(--wp--preset--color--navy);
	--c-primary: var(--wp--preset--color--primary);
	--c-heading: var(--wp--preset--color--heading);
	--c-link: var(--wp--preset--color--link);
	--c-sky: var(--wp--preset--color--sky);
	--c-sky-tint: var(--wp--preset--color--sky-tint);
	--c-text: var(--wp--preset--color--text);
	--c-muted: var(--wp--preset--color--muted);
	--c-rule: var(--wp--preset--color--rule);
	--c-border: var(--wp--preset--color--border);
	--c-surface: var(--wp--preset--color--surface);
	--c-surface-alt: var(--wp--preset--color--surface-alt);
	--c-white: var(--wp--preset--color--white);
	--c-success: var(--wp--preset--color--success);
	--c-navy-90: color-mix(in srgb, var(--c-navy) 90%, transparent);
	--c-navy-60: color-mix(in srgb, var(--c-navy) 60%, transparent);
	--c-navy-15: color-mix(in srgb, var(--c-navy) 15%, transparent);
	--c-white-80: color-mix(in srgb, var(--c-white) 82%, transparent);
	--c-white-20: color-mix(in srgb, var(--c-white) 20%, transparent);
	/* R2: status colour (closed, cancelled), measured 7.2:1 on white.
	   R3: the value lives in theme.json (palette "alert"); the fallback
	   keeps it if the preset is ever missing. */
	--c-alert: var(--wp--preset--color--alert, #A4262C);

	--f-heading: var(--wp--preset--font-family--heading);
	--f-body: var(--wp--preset--font-family--body);
	--fs-xs: var(--wp--preset--font-size--xs);
	--fs-sm: var(--wp--preset--font-size--sm);
	--fs-base: var(--wp--preset--font-size--base);
	--fs-md: var(--wp--preset--font-size--md);
	--fs-lg: var(--wp--preset--font-size--lg);
	--fs-xl: var(--wp--preset--font-size--xl);
	--fs-2xl: var(--wp--preset--font-size--2-xl);
	--fs-3xl: var(--wp--preset--font-size--3-xl);
	--fs-4xl: var(--wp--preset--font-size--4-xl);

	--s-1: var(--wp--preset--spacing--10);
	--s-2: var(--wp--preset--spacing--20);
	--s-3: var(--wp--preset--spacing--30);
	--s-4: var(--wp--preset--spacing--40);
	--s-5: var(--wp--preset--spacing--50);
	--s-6: var(--wp--preset--spacing--60);
	--s-7: var(--wp--preset--spacing--70);
	--s-8: var(--wp--preset--spacing--80);
	--s-9: var(--wp--preset--spacing--90);

	--r-sm: var(--wp--custom--radius--sm);
	--r-md: var(--wp--custom--radius--md);
	--r-lg: var(--wp--custom--radius--lg);
	--r-pill: var(--wp--custom--radius--pill);
	--sh-sm: var(--wp--preset--shadow--sm);
	--sh-md: var(--wp--preset--shadow--md);
	--sh-lg: var(--wp--preset--shadow--lg);
	--t-fast: var(--wp--custom--motion--fast);
	--t-base: var(--wp--custom--motion--base);
	--ease: var(--wp--custom--motion--ease);
	--measure: var(--wp--custom--measure);
	--tap: var(--wp--custom--tap);

	--header-h: 64px;
	--gutter: var(--s-4);
	--container: 1200px;
}

@media (min-width: 720px) {
	:root { --gutter: var(--s-5); }
}

/* Metric-matched fallbacks (Arial / Helvetica adjusted to Roboto and
   Open Sans), so the swap to the vendored fonts does not move text. */
@font-face { font-family: "Roboto Fallback"; src: local("Arial"), local("Helvetica"); size-adjust: 100.3%; ascent-override: 92.49%; descent-override: 24.34%; line-gap-override: 0%; }
@font-face { font-family: "Open Sans Fallback"; src: local("Arial"), local("Helvetica"); size-adjust: 105.23%; ascent-override: 101.65%; descent-override: 27.86%; line-gap-override: 0%; }

/* 2. Base -------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--header-h) + var(--s-4)); }
body {
	margin: 0;
	background: var(--c-white);
	color: var(--c-text);
	font-family: var(--f-body);
	font-size: var(--fs-base);
	line-height: 1.65;
	overflow-wrap: break-word;
	text-rendering: optimizeLegibility;
}
body.igs-drawer-open { overflow: hidden; }
img, svg, video, iframe { max-width: 100%; }
img { height: auto; }
a { color: var(--c-link); text-underline-offset: 0.18em; text-decoration-thickness: 1px; }
a:hover { color: var(--c-navy); }
h1, h2, h3, h4, h5, h6 { font-family: var(--f-heading); line-height: 1.25; margin: 0; text-wrap: balance; }
p { margin: 0; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
:focus-visible { outline: 3px solid var(--c-link); outline-offset: 2px; border-radius: 2px; }
.igs-icon { width: 20px; height: 20px; flex: none; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%);
	white-space: nowrap; border: 0;
}
.igs-skip {
	position: absolute; left: var(--s-4); top: -100px; z-index: 100;
	background: var(--c-navy); color: var(--c-white);
	padding: var(--s-3) var(--s-4); border-radius: var(--r-md); font-weight: 700;
}
.igs-skip:focus { top: var(--s-2); color: var(--c-white); }

/* 3. Layout ------------------------------------------------------------ */
.igs-container {
	width: 100%;
	max-width: calc(var(--container) + 2 * var(--gutter));
	margin-inline: auto;
	padding-inline: var(--gutter);
}
.igs-main { display: block; padding-bottom: var(--s-8); }
.igs-rule {
	display: block; width: 56px; height: 3px;
	background: var(--c-sky); border-radius: 2px;
	margin-top: var(--s-4);
}
.igs-kicker {
	font: 700 var(--fs-xs)/1.4 var(--f-body);
	letter-spacing: 0.1em; text-transform: uppercase;
	color: var(--c-heading);
	margin-bottom: var(--s-2);
}
.igs-title {
	font-family: var(--f-heading); font-weight: 700;
	font-size: clamp(1.75rem, 1.1rem + 2.4vw, 2.625rem);
	line-height: 1.14; letter-spacing: -0.01em;
	color: var(--c-navy);
}
.igs-lead { font-size: var(--fs-md); color: var(--c-muted); }
.igs-section-title {
	font: 700 var(--fs-2xl)/1.2 var(--f-heading);
	color: var(--c-navy);
}

/* Buttons (theme) */
.igs-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: var(--s-2);
	min-height: var(--tap); padding: var(--s-2) var(--s-5);
	border-radius: var(--r-md); border: 1px solid var(--c-primary);
	background: var(--c-primary); color: var(--c-white);
	font: 700 var(--fs-base)/1.2 var(--f-body); text-decoration: none;
	transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.igs-btn:hover { background: var(--c-navy); border-color: var(--c-navy); color: var(--c-white); }
.igs-btn--ghost { background: var(--c-white); color: var(--c-navy); border-color: var(--c-border); }
.igs-btn--ghost:hover { background: var(--c-sky-tint); color: var(--c-navy); border-color: var(--c-sky); }
.igs-btn--light { background: var(--c-white); color: var(--c-navy); border-color: var(--c-white); }
.igs-btn .igs-icon { width: 18px; height: 18px; }

/* Badges */
.igs-badge {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 4px 12px 4px 10px; border-radius: var(--r-pill);
	font: 700 var(--fs-xs)/1.3 var(--f-body);
	background: var(--c-sky-tint); color: var(--c-navy);
	white-space: nowrap;
}
.igs-badge .igs-icon { width: 14px; height: 14px; stroke-width: 3; }
.igs-badge--featured { background: var(--c-navy); color: var(--c-white); }
.igs-badge--featured .igs-icon { fill: currentColor; stroke-width: 1; }

/* 4. Header + nav ------------------------------------------------------ */
.igs-header {
	position: sticky; top: 0; z-index: 50;
	background: var(--c-white);
	border-bottom: 1px solid var(--c-border);
}
.admin-bar .igs-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .igs-header { top: 0; } }
.igs-header__bar {
	display: flex; align-items: center; gap: var(--s-4);
	min-height: var(--header-h);
}
.igs-brand {
	display: inline-flex; align-items: center; gap: 10px;
	text-decoration: none; color: var(--c-navy);
	min-height: var(--tap);
}
.igs-brand__mark { width: 32px; height: 36px; }
.igs-brand__word {
	font: 500 1.25rem/1 var(--f-heading); letter-spacing: 1px;
	color: var(--c-navy); white-space: nowrap;
}
.igs-brand:hover .igs-brand__word { color: var(--c-link); }

.igs-search {
	position: relative; display: flex; align-items: center;
	background: var(--c-white);
	border: 1px solid var(--c-border); border-radius: var(--r-pill);
	min-height: var(--tap);
	transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
.igs-search:focus-within { border-color: var(--c-link); box-shadow: 0 0 0 3px var(--c-sky-tint); }
.igs-search__icon { position: absolute; left: 14px; width: 18px; height: 18px; color: var(--c-muted); pointer-events: none; }
.igs-search input {
	flex: 1; min-width: 0; border: 0; background: transparent;
	padding: 10px 8px 10px 42px; font-size: var(--fs-base);
	border-radius: var(--r-pill);
}
.igs-search input:focus { outline: none; }
.igs-search input::placeholder { color: var(--c-muted); }
.igs-search__submit {
	border: 0; background: var(--c-primary); color: var(--c-white);
	font-weight: 700; font-size: var(--fs-sm);
	min-height: 36px; padding: 0 var(--s-4); margin-right: 4px;
	border-radius: var(--r-pill);
}
.igs-search__submit:hover { background: var(--c-navy); }
.igs-search--header { flex: 1; max-width: 460px; display: none; }
.igs-search--block { max-width: 640px; margin: var(--s-5) 0; }
.igs-search--block, .igs-search--drawer { min-height: 54px; }
.igs-search--block .igs-search__submit, .igs-search--drawer .igs-search__submit { min-height: var(--tap); min-width: var(--tap); padding: 0 var(--s-5); }

.igs-header__actions { margin-left: auto; display: flex; align-items: center; gap: var(--s-1); }
.igs-header__link {
	display: inline-flex; align-items: center; gap: 6px;
	min-height: var(--tap); padding: 0 var(--s-3);
	font-weight: 600; font-size: var(--fs-sm); color: var(--c-text); text-decoration: none;
	border-radius: var(--r-md);
}
.igs-header__link:hover { background: var(--c-surface); color: var(--c-navy); }
.igs-header__link .igs-icon { width: 18px; height: 18px; }
.igs-iconbtn {
	display: inline-flex; align-items: center; justify-content: center; gap: 6px;
	min-width: var(--tap); min-height: var(--tap); padding: 0 10px;
	border: 1px solid transparent; background: transparent; color: var(--c-navy);
	border-radius: var(--r-md); font-weight: 600; font-size: var(--fs-sm);
}
.igs-iconbtn:hover { background: var(--c-surface); }
.igs-header__menubtn { border-color: var(--c-border); }
/* R6: under 480 px the word is visually hidden, not display:none, so the
   button keeps its name «Menu» for screen readers (Lighthouse button-name). */
.igs-header__menulabel { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

@media (min-width: 480px) { .igs-header__menulabel { position: static; width: auto; height: auto; margin: 0; overflow: visible; clip-path: none; } }
@media (min-width: 900px) {
	.igs-search--header { display: flex; }
	.igs-header__searchbtn { display: none; }
}
@media (max-width: 380px) {
	.igs-brand__word { font-size: 1.0625rem; letter-spacing: 0.5px; }
	.igs-brand__mark { width: 28px; height: 32px; }
	.igs-header__bar { gap: var(--s-2); }
}

/* F1: language switcher (template-parts/lang-switch.php) */
.igs-langs { position: relative; }
.igs-langs__btn { padding: 0 8px; }
.igs-langs__icon { width: 18px; height: 18px; display: none; }
.igs-langs__code { font-size: var(--fs-sm); font-weight: 700; letter-spacing: 0.5px; }
.igs-langs__list {
	position: absolute; right: 0; top: calc(100% + 4px); z-index: 60;
	min-width: 11rem; margin: 0; padding: var(--s-1) 0; list-style: none;
	background: var(--c-white); border: 1px solid var(--c-border); border-radius: var(--r-md);
	box-shadow: 0 8px 24px rgba(9, 50, 116, 0.14);
}
.igs-langs__list[hidden] { display: none; }
.igs-langs__list a {
	display: flex; align-items: center; gap: var(--s-3);
	min-height: var(--tap); padding: 0 var(--s-4);
	color: var(--c-text); text-decoration: none; font-size: var(--fs-sm);
}
.igs-langs__list a:hover, .igs-langs__list a:focus-visible { background: var(--c-surface); color: var(--c-navy); }
.igs-langs__list a[aria-current] { font-weight: 700; color: var(--c-navy); }
.igs-langs__abbr { min-width: 1.75rem; font-weight: 700; font-size: var(--fs-xs); color: var(--c-muted); }
@media (min-width: 480px) { .igs-langs__icon { display: inline-block; } }

/* Nav: shared */
.igs-nav ul { list-style: none; margin: 0; padding: 0; }
.igs-nav__link, .igs-nav__label { text-decoration: none; color: var(--c-text); }
.igs-nav__label { color: var(--c-muted); }
.igs-nav__toggle {
	display: inline-flex; align-items: center; justify-content: center;
	border: 0; background: transparent; color: var(--c-navy);
	border-radius: var(--r-sm);
}
.igs-nav__toggle .igs-icon { width: 18px; height: 18px; transition: transform var(--t-base) var(--ease); }
.igs-nav__toggle[aria-expanded="true"] .igs-icon { transform: rotate(180deg); }
.igs-nav__sub--1 { display: none; }
.igs-nav__toggle[aria-expanded="true"] + .igs-nav__sub--1 { display: block; }
.igs-nav__drawerhead, .igs-search--drawer { display: none; }
.igs-nav__backdrop { display: none; }

/* Nav: drawer (< 1200px) */
@media (max-width: 1199.98px) {
	.igs-nav {
		position: fixed; z-index: 60; top: 0; right: 0; bottom: 0;
		width: min(420px, calc(100vw - 40px));
		background: var(--c-white); box-shadow: var(--sh-lg);
		overflow-y: auto; overscroll-behavior: contain;
		transform: translateX(100%); visibility: hidden;
		transition: transform var(--t-base) var(--ease), visibility 0s linear var(--t-base);
		padding-bottom: var(--s-7);
	}
	.igs-drawer-open .igs-nav {
		transform: none; visibility: visible;
		transition: transform var(--t-base) var(--ease), visibility 0s;
	}
	.igs-drawer-open .igs-nav__backdrop:not([hidden]) {
		display: block; position: fixed; inset: 0; z-index: 55;
		background: var(--c-navy-60);
	}
	.igs-nav__drawerhead {
		display: flex; align-items: center; justify-content: space-between;
		position: sticky; top: 0; z-index: 1; background: var(--c-white);
		padding: var(--s-2) var(--s-2) var(--s-2) var(--s-4);
		border-bottom: 1px solid var(--c-border);
	}
	.igs-nav__drawertitle { font: 700 var(--fs-md)/1 var(--f-heading); color: var(--c-navy); }
	.igs-search--drawer { display: flex; margin: var(--s-4); }
	.igs-nav__list > li { border-bottom: 1px solid var(--c-border); }
	.igs-nav__item { position: relative; }
	.igs-nav__item--d0 { display: flex; flex-wrap: wrap; align-items: stretch; }
	.igs-nav__item--d0 > .igs-nav__link,
	.igs-nav__item--d0 > .igs-nav__label {
		flex: 1; display: flex; align-items: center;
		min-height: 52px; padding: var(--s-2) var(--s-4);
		font: 600 var(--fs-base)/1.35 var(--f-body);
	}
	.igs-nav__item--d0 > .igs-nav__toggle { width: 52px; min-height: 52px; border-left: 1px solid var(--c-border); border-radius: 0; }
	.igs-nav__sub--1 { flex-basis: 100%; background: var(--c-surface-alt); padding: var(--s-1) 0 var(--s-3); }
	.igs-nav__sub a {
		display: flex; align-items: center; min-height: var(--tap);
		padding: var(--s-2) var(--s-4) var(--s-2) var(--s-6);
		font-size: var(--fs-sm); line-height: 1.35;
	}
	.igs-nav__sub--2 a { padding-left: var(--s-8); color: var(--c-muted); }
	.igs-nav__sub--2 a.igs-nav__link { color: var(--c-text); }
	.igs-nav .is-current > .igs-nav__link { color: var(--c-navy); font-weight: 700; }
	.igs-nav__item--d1 > .igs-nav__label { font-weight: 700; font-size: var(--fs-xs); letter-spacing: 0.08em; text-transform: uppercase; }
}

/* Nav: desktop row (>= 1200px) */
@media (min-width: 1200px) {
	html { scroll-padding-top: 150px; }
	.igs-header__menubtn, .igs-header__searchbtn { display: none; }
	.igs-nav { border-top: 1px solid var(--c-border); }
	.igs-nav .igs-nav__list {
		display: flex; align-items: stretch; justify-content: space-between; gap: var(--s-1);
		max-width: calc(var(--container) + 2 * var(--gutter)); margin-inline: auto; padding-inline: var(--gutter);
	}
	.igs-nav__item--d0 { position: relative; display: flex; align-items: center; }
	.igs-nav__item--d0 > .igs-nav__link,
	.igs-nav__item--d0 > .igs-nav__label {
		display: flex; align-items: center; min-height: 48px;
		padding: var(--s-1) var(--s-2);
		font: 600 var(--fs-sm)/1.25 var(--f-body);
		max-width: 22ch;
		border-bottom: 3px solid transparent;
	}
	.igs-nav__item--d0 > .igs-nav__link:hover { color: var(--c-navy); border-bottom-color: var(--c-sky); }
	.igs-nav__item--d0.is-current > .igs-nav__link { color: var(--c-navy); border-bottom-color: var(--c-navy); }
	.igs-nav__item--d0 > .igs-nav__toggle { width: 28px; min-height: 40px; margin-left: -4px; }
	.igs-nav__item--d0 > .igs-nav__toggle:hover { background: var(--c-surface); }
	.igs-nav__sub--1 {
		position: absolute; top: 100%; left: 0; z-index: 10;
		min-width: 300px; max-width: 380px;
		background: var(--c-white); border: 1px solid var(--c-border);
		border-radius: var(--r-lg); box-shadow: var(--sh-lg);
		padding: var(--s-3);
	}
	.igs-nav__list > li:nth-last-child(-n+3) > .igs-nav__sub--1 { left: auto; right: 0; }
	@media (hover: hover) {
		.igs-nav__item--d0.has-children:hover > .igs-nav__sub--1 { display: block; }
	}
	.igs-nav__sub a {
		display: block; padding: var(--s-2) var(--s-3); border-radius: var(--r-sm);
		font-size: var(--fs-sm); line-height: 1.35;
	}
	.igs-nav__sub a.igs-nav__link:hover { background: var(--c-sky-tint); color: var(--c-navy); }
	.igs-nav__item--d1 > .igs-nav__label { font-weight: 700; font-size: var(--fs-xs); letter-spacing: 0.08em; text-transform: uppercase; padding-top: var(--s-3); }
	.igs-nav__sub--2 { margin: 0 0 var(--s-1) var(--s-3); border-left: 2px solid var(--c-sky-tint); }
	.igs-nav__sub--2 a { color: var(--c-muted); }
}

/* 5. Hero (home + area hubs) ----------------------------------------------- */
.igs-hero {
	position: relative; isolation: isolate;
	display: flex; align-items: flex-end;
	min-height: clamp(360px, 62vh, 640px);
	background: var(--c-navy); color: var(--c-white);
	overflow: hidden;
}
.home .igs-hero { min-height: clamp(420px, 72vh, 720px); }
.igs-hero__img {
	position: absolute; inset: 0; z-index: -2;
	width: 100%; height: 100%; max-width: none; object-fit: cover;
}
.igs-hero::after {
	content: ""; position: absolute; inset: 0; z-index: -1;
	/* The navy rises from 22% so a long title on a light photo (the
	   header photos of the hubs, B2) stays readable on a phone. */
	background: linear-gradient(180deg, color-mix(in srgb, var(--c-navy) 35%, transparent) 0%, transparent 22%, color-mix(in srgb, var(--c-navy) 58%, transparent) 50%, var(--c-navy-90) 100%);
}
.igs-hero--plain { min-height: 280px; }
.igs-hero--plain::after { display: none; }
.igs-hero__inner { padding-block: var(--s-8) var(--s-7); }
.igs-hero__kicker {
	font: 700 var(--fs-xs)/1.4 var(--f-body); letter-spacing: 0.18em; text-transform: uppercase;
	color: var(--c-white); opacity: 0.92; margin-bottom: var(--s-3);
}
.igs-hero__title {
	font: 500 clamp(2rem, 1.2rem + 3.6vw, 3.625rem)/1.08 var(--f-heading);
	letter-spacing: -0.01em; color: var(--c-white);
	max-width: 22ch;
	text-shadow: 0 1px 2px color-mix(in srgb, var(--c-navy) 45%, transparent), 0 1px 24px color-mix(in srgb, var(--c-navy) 40%, transparent);
}
.igs-hero .igs-rule { width: 72px; }
.igs-hero__jump, .igs-page__jump { margin-top: var(--s-5); }
.igs-hero__caption { font-size: var(--fs-sm); color: var(--c-muted); padding-top: var(--s-2); }

/* 6. Page heads ------------------------------------------------------- */
.igs-crumbs { font-size: var(--fs-sm); color: var(--c-muted); }
.igs-crumbs ol {
	list-style: none; margin: 0; padding: var(--s-2) 0 0;
	display: flex; align-items: center; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none;
	white-space: nowrap;
}
.igs-crumbs ol::-webkit-scrollbar { display: none; }
.igs-crumbs li { display: inline-flex; align-items: center; }
.igs-crumbs li + li::before { content: "/"; margin: 0 var(--s-2); color: var(--c-rule); }
.igs-crumbs a { display: inline-flex; align-items: center; justify-content: center; min-height: var(--tap); min-width: var(--tap); color: var(--c-muted); text-decoration: none; }
.igs-crumbs a:hover { color: var(--c-navy); text-decoration: underline; }
.igs-crumbs [aria-current] { color: var(--c-text); font-weight: 600; }

.igs-page__head { padding-block: var(--s-5) var(--s-6); }
.igs-page__head--left { max-width: none; }
.igs-page__head .igs-title { max-width: 28ch; }

/* 7. Prose: migrated block content --------------------------------------- */
.igs-prose { font-size: 1.0625rem; line-height: 1.7; }
@media (max-width: 719.98px) { .igs-prose { font-size: var(--fs-base); } }
.igs-page__content, .igs-page .igs-page__head, .igs-page .igs-hero__inner { max-width: calc(760px + 2 * var(--gutter)); }
.igs-page--hero .igs-page__content { padding-top: var(--s-7); }

.igs-entry-content > * + * { margin-top: 1.1em; }
.igs-entry-content > :first-child { margin-top: 0; }
.igs-entry-content p, .igs-entry-content li { max-width: var(--measure); }
.igs-entry-content h2 {
	font-size: clamp(1.375rem, 1.1rem + 1vw, 1.75rem); color: var(--c-heading);
	margin-top: 2em; line-height: 1.25;
}
.igs-entry-content h3 { font-size: var(--fs-xl); color: var(--c-heading); margin-top: 1.6em; }
.igs-entry-content h4 { font-size: var(--fs-lg); color: var(--c-heading); margin-top: 1.4em; }
.igs-entry-content h2 + *, .igs-entry-content h3 + *, .igs-entry-content h4 + * { margin-top: 0.6em; }
.igs-entry-content ul, .igs-entry-content ol { padding-left: 1.3em; }
.igs-entry-content li + li { margin-top: 0.35em; }
.igs-entry-content li::marker { color: var(--c-heading); }
.igs-entry-content strong { font-weight: 700; color: var(--c-text); }
.igs-entry-content hr { border: 0; border-top: 1px solid var(--c-border); margin: 2.5em 0; }

.igs-entry-content .wp-block-image { margin-block: 1.6em; }
.igs-entry-content .wp-block-image img {
	--igs-maxh: min(82vh, 760px);
	display: block; border-radius: var(--r-lg);
	max-height: var(--igs-maxh); width: auto; margin-inline: auto;
	background: var(--c-surface);
}
/* R6 (CLS): width:auto has no size until the file arrives, so the text
   below jumped when the image loaded. inc/assets.php gives every content
   image with width / height attributes --igs-ar (width / height) and
   --igs-iw (width in px); the width is then known before loading and is the
   same as width:auto gave after loading: not wider than the column, than
   the image itself, or than the max height allows. */
.igs-entry-content .wp-block-image img[style*="--igs-ar"] { width: min(100%, var(--igs-iw), calc(var(--igs-maxh) * var(--igs-ar))); }
.igs-entry-content .wp-block-image a { display: block; border-radius: var(--r-lg); }
.igs-page .igs-entry-content .wp-block-image a img { --igs-maxh: min(62vh, 540px); }
.igs-entry-content .wp-block-image a img { transition: transform var(--t-base) var(--ease), box-shadow var(--t-base) var(--ease); }
.igs-entry-content .wp-block-image a:hover img { box-shadow: var(--sh-md); transform: translateY(-2px); }
.igs-entry-content figcaption, .igs-article__lead figcaption {
	font-size: var(--fs-sm); color: var(--c-muted); text-align: center; margin-top: var(--s-2);
}
.igs-entry-content .wp-block-gallery { gap: var(--s-2); }
.igs-entry-content .wp-block-gallery .wp-block-image img, .igs-entry-content .wp-block-gallery .wp-block-image img[style*="--igs-ar"] { border-radius: var(--r-md); max-height: none; width: 100%; }
.igs-entry-content .wp-block-gallery.has-nested-images figure.wp-block-image figcaption {
	background: linear-gradient(0deg, var(--c-navy-60), transparent);
	border-radius: 0 0 var(--r-md) var(--r-md); font-size: var(--fs-xs); color: var(--c-white);
}

.igs-entry-content .wp-block-buttons { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.igs-entry-content .wp-block-buttons + .wp-block-buttons { margin-top: var(--s-2); }
.igs-entry-content .wp-block-button { max-width: 100%; }
.igs-entry-content .wp-block-button__link {
	display: inline-flex; align-items: center; justify-content: center; gap: var(--s-2);
	min-height: var(--tap); max-width: 100%; padding: 10px var(--s-5);
	border-radius: var(--r-md); border: 1px solid var(--c-primary);
	background: var(--c-primary); color: var(--c-white);
	font: 700 var(--fs-base)/1.25 var(--f-body); text-decoration: none; text-align: center;
	overflow-wrap: anywhere;
	transition: background-color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.igs-entry-content .wp-block-button__link:hover { background: var(--c-navy); border-color: var(--c-navy); color: var(--c-white); }
.igs-entry-content .wp-block-button__link:focus-visible {
	outline: 3px solid var(--c-navy); outline-offset: 3px; border-radius: var(--r-md);
}
.igs-entry-content .wp-block-button__link strong { color: inherit; }
.igs-entry-content .is-style-outline .wp-block-button__link { background: transparent; color: var(--c-primary); }
.igs-entry-content .is-style-outline .wp-block-button__link:hover { background: var(--c-sky-tint); color: var(--c-navy); }
/* Content buttons by link target. inc/buttons.php adds the classes and
   spans at render time (the content is not changed):
   - external actions (maps, WhatsApp, tel, mailto, Booking.com / Airbnb,
     Instagram, Facebook, any other external link) stay solid primary
     buttons with an icon in front, drawn with a CSS mask in the text
     colour; full width on phones, auto on larger screens;
   - internal links (igs-cbtn--row) are quiet link rows: full width, text
     left, arrow right, divider under each; runs of them (igs-links) read
     as one list;
   - a leading emoji (igs-btn__emoji) is hidden only on action buttons
     (igs-cbtn--action: maps, WhatsApp, tel, mailto, Booking / Airbnb,
     Instagram, Facebook), where the icon means the same; link rows and
     generic external links keep it. A leading arrow (igs-cbtn__lead)
     is hidden on any button with an icon, a trailing arrow
     (igs-cbtn__trail) only on link rows. */
@media (max-width: 600px) {
	.igs-entry-content .wp-block-buttons > .wp-block-button { flex: 1 1 100%; }
	.igs-entry-content .wp-block-buttons > .wp-block-button > .wp-block-button__link { display: flex; width: 100%; }
}
.igs-entry-content .igs-cbtn__label { min-width: 0; }
.igs-entry-content .igs-cbtn--action .igs-btn__emoji,
.igs-entry-content .igs-cbtn--has-icon .igs-cbtn__lead { display: none; }
.igs-entry-content .igs-cbtn--has-icon > .wp-block-button__link::before {
	content: ""; flex: none; width: 18px; height: 18px;
	background-color: currentColor;
	-webkit-mask: var(--igs-btn-icon) center / contain no-repeat;
	mask: var(--igs-btn-icon) center / contain no-repeat;
}
.igs-entry-content .igs-cbtn--maps { --igs-btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.2-7-11a7 7 0 0 1 14 0c0 4.8-7 11-7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E"); }
.igs-entry-content .igs-cbtn--whatsapp { --igs-btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 12a9 9 0 0 1-13.4 7.8L3 21l1.3-4.4A9 9 0 1 1 21 12z'/%3E%3C/svg%3E"); }
.igs-entry-content .igs-cbtn--phone { --igs-btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h4l2 5-2.5 1.5a11 11 0 0 0 5 5L15 13l5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2'/%3E%3C/svg%3E"); }
.igs-entry-content .igs-cbtn--mail { --igs-btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3 7l9 6 9-6'/%3E%3C/svg%3E"); }
.igs-entry-content .igs-cbtn--booking { --igs-btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E"); }
.igs-entry-content .igs-cbtn--instagram { --igs-btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='18' rx='5'/%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Ccircle cx='17.5' cy='6.5' r='0.5'/%3E%3C/svg%3E"); }
.igs-entry-content .igs-cbtn--facebook { --igs-btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z'/%3E%3C/svg%3E"); }
.igs-entry-content .igs-cbtn--external { --igs-btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M20 4l-9 9M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5'/%3E%3C/svg%3E"); }
.igs-entry-content .igs-cbtn--internal { --igs-btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E"); }
/* Link rows (internal links). */
.igs-entry-content .wp-block-buttons > .wp-block-button.igs-cbtn--row { flex: 1 1 100%; }
.igs-entry-content .wp-block-button.igs-cbtn--row > .wp-block-button__link {
	display: flex; width: 100%; justify-content: space-between; gap: var(--s-3);
	min-height: 48px; padding: 12px var(--s-2);
	background: transparent; color: var(--c-link);
	border: 0; border-bottom: 1px solid var(--c-border); border-radius: 0;
	font-weight: 600; text-align: left;
}
.igs-entry-content .wp-block-button.igs-cbtn--row > .wp-block-button__link::before { content: none; }
.igs-entry-content .wp-block-button.igs-cbtn--row > .wp-block-button__link::after {
	content: ""; flex: none; width: 18px; height: 18px;
	background-color: currentColor;
	-webkit-mask: var(--igs-btn-icon) center / contain no-repeat;
	mask: var(--igs-btn-icon) center / contain no-repeat;
	transition: transform var(--t-fast) var(--ease);
}
.igs-entry-content .wp-block-button.igs-cbtn--row > .wp-block-button__link:hover { background: var(--c-sky-tint); color: var(--c-navy); }
.igs-entry-content .wp-block-button.igs-cbtn--row > .wp-block-button__link:hover::after { transform: translateX(3px); }
.igs-entry-content .wp-block-button.igs-cbtn--row > .wp-block-button__link:focus-visible {
	outline: 3px solid var(--c-navy); outline-offset: -3px; border-radius: var(--r-sm);
}
.igs-entry-content .igs-cbtn--row .igs-cbtn__trail { display: none; }
.igs-entry-content .wp-block-button.igs-cbtn--back > .wp-block-button__link { justify-content: flex-start; }
.igs-entry-content .wp-block-button.igs-cbtn--back > .wp-block-button__link::after { content: none; }
.igs-entry-content .wp-block-buttons.igs-links { gap: 0; }
.igs-entry-content .wp-block-buttons.igs-links + .wp-block-buttons.igs-links { margin-top: 0; }
.igs-entry-content .wp-block-buttons.igs-links:not(.igs-links + .igs-links) > .igs-cbtn--row:first-child > .wp-block-button__link { border-top: 1px solid var(--c-border); }
@media (prefers-reduced-motion: reduce) {
	.igs-entry-content .wp-block-button.igs-cbtn--row > .wp-block-button__link::after { transition: none; }
}
/* "Συμβουλή" (block style of core/group, pattern "Συμβουλή"). */
.igs-entry-content .is-style-igs-tip {
	max-width: var(--measure);
	padding: var(--s-4) var(--s-5);
	background: var(--c-sky-tint); color: var(--c-text);
	border-left: 4px solid var(--c-sky); border-radius: var(--r-md);
}
.igs-entry-content .is-style-igs-tip > * + * { margin-top: 0.6em; }
.igs-entry-content .is-style-igs-tip > :first-child { margin-top: 0; }
@media (max-width: 600px) {
	.igs-entry-content .is-style-igs-tip { padding: var(--s-4); }
}
/* Two photos side by side (pattern): columns stack on phones (core). */
.igs-entry-content .wp-block-column > .wp-block-image { margin-block: 0; }
.igs-entry-content .wp-block-columns { gap: var(--s-4); }

.igs-entry-content .wp-block-details,
.igs-faq details {
	border: 1px solid var(--c-border); border-radius: var(--r-md);
	background: var(--c-white); padding: 0 var(--s-4);
	max-width: var(--measure);
}
.igs-entry-content .wp-block-details + .wp-block-details { margin-top: var(--s-2); }
.igs-entry-content .wp-block-details summary,
.igs-faq summary {
	list-style: none; cursor: pointer;
	display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
	min-height: 52px; padding: var(--s-3) 0;
	font-weight: 600; color: var(--c-navy); line-height: 1.4;
}
.igs-entry-content .wp-block-details summary::-webkit-details-marker,
.igs-faq summary::-webkit-details-marker { display: none; }
.igs-entry-content .wp-block-details summary::after,
.igs-faq summary::after {
	content: ""; flex: none; width: 10px; height: 10px;
	border-right: 2px solid var(--c-heading); border-bottom: 2px solid var(--c-heading);
	transform: rotate(45deg) translate(-2px, -2px);
	transition: transform var(--t-base) var(--ease);
}
.igs-entry-content .wp-block-details[open] summary::after,
.igs-faq details[open] summary::after { transform: rotate(225deg) translate(-2px, -2px); }
.igs-entry-content .wp-block-details[open],
.igs-faq details[open] { padding-bottom: var(--s-4); border-color: var(--c-sky); }
.igs-entry-content .wp-block-details > :not(summary) { margin-top: var(--s-2); }

.igs-entry-content .wp-block-table { overflow-x: auto; }
.igs-entry-content table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); }
.igs-entry-content th, .igs-entry-content td { border: 1px solid var(--c-border); padding: var(--s-2) var(--s-3); text-align: left; vertical-align: top; }
.igs-entry-content thead th, .igs-entry-content tr:first-child th { background: var(--c-surface-alt); color: var(--c-navy); }
.igs-entry-content blockquote, .igs-entry-content .wp-block-quote {
	margin-inline: 0; padding: var(--s-2) 0 var(--s-2) var(--s-5);
	border-left: 3px solid var(--c-sky); font-size: var(--fs-md); color: var(--c-navy);
}
.igs-entry-content iframe { display: block; width: 100%; border: 0; border-radius: var(--r-md); }
.igs-entry-content .wp-block-embed__wrapper { position: relative; }
.igs-entry-content .wp-block-html { overflow-x: auto; }

/* Migrated in-content table of contents (ul.igs-toc from the import). */
.igs-entry-content ul.igs-toc {
	list-style: none; padding: var(--s-3) var(--s-4); max-width: var(--measure);
	border: 1px solid var(--c-border); border-left: 3px solid var(--c-sky); border-radius: var(--r-md);
	background: var(--c-surface-alt); font-size: var(--fs-sm);
}
.igs-entry-content ul.igs-toc li + li { margin-top: 0; }
.igs-entry-content ul.igs-toc a { display: flex; align-items: center; min-height: var(--tap); padding: 4px 0; text-decoration: none; color: var(--c-link); line-height: 1.4; }
.igs-entry-content ul.igs-toc a:hover { color: var(--c-navy); text-decoration: underline; }

/* 8. Listing single ----------------------------------------------------- */
.igs-listing__head { padding-block: var(--s-4) var(--s-5); }
.igs-listing__head .igs-title { max-width: 26ch; }
.igs-listing__meta {
	display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2) var(--s-4);
	margin-top: var(--s-4); font-size: var(--fs-sm); color: var(--c-muted);
}
.igs-rating { display: inline-flex; align-items: center; gap: 4px; color: var(--c-text); }
.igs-rating b { color: var(--c-navy); }
.igs-rating .igs-icon--star { width: 16px; height: 16px; color: var(--c-heading); fill: currentColor; stroke-width: 1; }
.igs-rating__count { color: var(--c-muted); }
.igs-listing__fact { color: var(--c-text); }

.igs-listing__body { display: flex; flex-direction: column; gap: var(--s-6); }
.igs-facts { display: contents; }
.igs-listing__thumb { margin: 0 0 1.6em; }
.igs-listing__thumb img { border-radius: var(--r-lg); display: block; }

@media (min-width: 960px) {
	.igs-listing__body.has-facts {
		display: grid; align-items: start;
		grid-template-columns: minmax(0, 1fr) 340px;
		column-gap: var(--s-7); row-gap: var(--s-7);
	}
	.igs-listing__body.has-facts .igs-listing__content { grid-column: 1; grid-row: 1; }
	.igs-listing__body.has-facts .igs-facts__panel { grid-column: 2; grid-row: 1 / span 2; order: 0; }
	.igs-listing__body.has-facts .igs-faq { grid-column: 1; grid-row: 2; }
	.igs-facts__panel.is-sticky { position: sticky; top: calc(var(--header-h) + 64px); }
	.igs-listing__content { max-width: 760px; }
}
@media (min-width: 1200px) {
	.igs-facts__panel.is-sticky { top: calc(var(--header-h) + 72px); }
}

/* 9. Facts panel ------------------------------------------------------- */
.igs-facts__panel {
	background: var(--c-white);
	border: 1px solid var(--c-border); border-radius: var(--r-lg);
	box-shadow: var(--sh-sm);
	padding: var(--s-5);
}
.igs-facts__panel > * + * { margin-top: var(--s-4); }
.igs-verified-badge {
	display: flex; align-items: center; gap: var(--s-2);
	background: var(--c-sky-tint); color: var(--c-navy);
	border-radius: var(--r-md); padding: var(--s-2) var(--s-3);
	font-weight: 700; font-size: var(--fs-sm); line-height: 1.35;
}
.igs-verified-badge .igs-icon { width: 18px; height: 18px; stroke-width: 3; color: var(--c-navy); }
.igs-facts__title {
	font: 700 var(--fs-xs)/1.4 var(--f-body); letter-spacing: 0.1em; text-transform: uppercase;
	color: var(--c-muted);
}
.igs-facts__title + * { margin-top: var(--s-2); }
.igs-facts__panel > .igs-facts__title { margin-top: var(--s-5); }
.igs-facts__panel > .igs-facts__title:first-child { margin-top: 0; }
.igs-keyfacts {
	display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-3) var(--s-4);
	margin: 0;
}
.igs-keyfacts > div { min-width: 0; }
.igs-keyfacts > div.is-wide { grid-column: 1 / -1; }
.igs-keyfacts dt { font-size: var(--fs-xs); color: var(--c-muted); font-weight: 600; }
.igs-keyfacts dd { margin: 2px 0 0; font-size: var(--fs-base); color: var(--c-text); font-weight: 600; line-height: 1.4; }
.igs-at-a-glance { list-style: none; margin: 0; padding: 0; }
.igs-at-a-glance li {
	position: relative; padding-left: 28px; font-size: var(--fs-sm); line-height: 1.5;
}
.igs-at-a-glance li + li { margin-top: var(--s-2); }
.igs-at-a-glance li::before {
	content: ""; position: absolute; left: 0; top: 2px; width: 18px; height: 18px;
	border-radius: 50%; background: var(--c-sky-tint);
}
.igs-at-a-glance li::after {
	content: ""; position: absolute; left: 6px; top: 6px; width: 6px; height: 9px;
	border-right: 2px solid var(--c-navy); border-bottom: 2px solid var(--c-navy);
	transform: rotate(45deg);
}
.igs-ctas { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-2); }
.igs-ctas a {
	display: flex; align-items: center; justify-content: center; gap: var(--s-2);
	min-height: 48px; padding: var(--s-2) var(--s-4);
	border: 1px solid var(--c-border); border-radius: var(--r-md);
	background: var(--c-white); color: var(--c-navy);
	font-weight: 700; text-decoration: none;
	transition: background-color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.igs-ctas a:hover { background: var(--c-sky-tint); border-color: var(--c-sky); color: var(--c-navy); }
.igs-ctas .igs-cta--primary a { background: var(--c-primary); border-color: var(--c-primary); color: var(--c-white); }
.igs-ctas .igs-cta--primary a:hover { background: var(--c-navy); border-color: var(--c-navy); }
.igs-ctas .igs-icon { width: 18px; height: 18px; }
.igs-facts__note { font-size: var(--fs-xs); color: var(--c-muted); text-align: center; }
.igs-facts__note a { color: var(--c-link); }

.igs-map { background: var(--c-surface-alt); border: 1px solid var(--c-border); border-radius: var(--r-md); padding: var(--s-3); text-align: center; }
.igs-map__load {
	display: inline-flex; align-items: center; gap: var(--s-2);
	min-height: var(--tap); padding: 0 var(--s-4);
	border: 1px solid var(--c-border); border-radius: var(--r-md);
	background: var(--c-white); color: var(--c-navy); font-weight: 700;
}
.igs-map__load:hover { border-color: var(--c-sky); background: var(--c-sky-tint); }
.igs-map__note { font-size: var(--fs-xs); color: var(--c-muted); margin-top: var(--s-1); }
.igs-map.is-loaded { padding: 0; overflow: hidden; }
.igs-map__canvas { height: 260px; }

.igs-faq > * + * { margin-top: var(--s-2); }
.igs-faq__title { font: 700 var(--fs-xl)/1.25 var(--f-heading); color: var(--c-navy); margin-bottom: var(--s-4); }
.igs-faq details > div { color: var(--c-text); font-size: var(--fs-base); }
.igs-faq details > div > * + * { margin-top: 0.8em; }

/* 10. Sticky mobile CTA bar ------------------------------------------ */
.igs-ctabar {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 40;
	display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: var(--s-2);
	padding: var(--s-2) var(--s-3) calc(var(--s-2) + env(safe-area-inset-bottom));
	background: var(--c-white); border-top: 1px solid var(--c-border);
	box-shadow: 0 -6px 20px var(--c-navy-15);
}
.igs-ctabar--n1, .igs-ctabar--n2 { grid-auto-columns: 1fr; }
.igs-ctabar__btn {
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
	min-height: 52px; padding: 4px;
	border: 1px solid var(--c-border); border-radius: var(--r-md);
	color: var(--c-navy); background: var(--c-white);
	font-weight: 700; font-size: var(--fs-xs); text-decoration: none; line-height: 1.2;
}
.igs-ctabar__btn .igs-icon { width: 20px; height: 20px; }
.igs-ctabar__btn.is-primary { background: var(--c-primary); border-color: var(--c-primary); color: var(--c-white); }
.igs-ctabar--n1 .igs-ctabar__btn, .igs-ctabar--n2 .igs-ctabar__btn { flex-direction: row; gap: var(--s-2); font-size: var(--fs-sm); }
body:has(.igs-ctabar) { padding-bottom: 76px; }
@media (min-width: 960px) {
	.igs-ctabar { display: none; }
	body:has(.igs-ctabar) { padding-bottom: 0; }
}

/* 11. Cards, directory, chips, pagination ------------------------------ */
.igs-directory, .igs-related { background: var(--c-surface-alt); border-top: 1px solid var(--c-border); padding-block: var(--s-7) var(--s-8); }
.igs-directory__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--s-2) var(--s-4); }
.igs-directory__count { color: var(--c-muted); font-size: var(--fs-sm); margin: var(--s-2) 0 var(--s-4); }
.igs-related .igs-section-title { margin-bottom: var(--s-5); }

.igs-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: var(--s-5); }
.igs-card {
	position: relative; display: flex; flex-direction: column;
	background: var(--c-white); border: 1px solid var(--c-border); border-radius: var(--r-lg);
	overflow: hidden; min-width: 0;
	transition: box-shadow var(--t-base) var(--ease), transform var(--t-base) var(--ease), border-color var(--t-base) var(--ease);
}
.igs-card:hover { box-shadow: var(--sh-md); transform: translateY(-2px); border-color: var(--c-sky-tint); }
.igs-card:focus-within { box-shadow: 0 0 0 3px var(--c-sky-tint), var(--sh-md); }
.igs-card--featured { border-color: var(--c-navy); }
.igs-card__media { position: relative; aspect-ratio: 4 / 3; background: var(--c-surface); overflow: hidden; }
.igs-card__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.igs-card__badges { position: absolute; left: var(--s-3); top: var(--s-3); display: flex; flex-wrap: wrap; gap: 6px; }
.igs-card__badges .igs-badge--verified { background: var(--c-white); box-shadow: var(--sh-sm); }
.igs-card__body { display: flex; flex-direction: column; flex: 1; padding: var(--s-4); }
.igs-card__kicker { font: 700 0.6875rem/1.4 var(--f-body); letter-spacing: 0.1em; text-transform: uppercase; color: var(--c-heading); }
.igs-card__title { font: 700 var(--fs-lg)/1.25 var(--f-heading); color: var(--c-navy); margin-top: 4px; }
.igs-card__title a { color: inherit; text-decoration: none; }
.igs-card__title a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.igs-card__title a:focus-visible { outline: none; }
.igs-card__excerpt { font-size: var(--fs-sm); color: var(--c-muted); margin-top: var(--s-2); line-height: 1.55; }
.igs-card__meta {
	display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
	margin-top: auto; padding-top: var(--s-3);
	font-size: var(--fs-sm);
}
.igs-card__excerpt + .igs-card__meta, .igs-card__title + .igs-card__meta { margin-top: auto; }
.igs-card__body > .igs-card__meta { border-top: 1px solid var(--c-border); margin-top: auto; }
.igs-card__body > p + .igs-card__meta, .igs-card__body > h2 + .igs-card__meta, .igs-card__body > h3 + .igs-card__meta { margin-top: var(--s-4); }
.igs-card__facts { display: flex; flex-wrap: wrap; gap: 2px var(--s-3); color: var(--c-muted); min-width: 0; }
.igs-card__fact { color: var(--c-text); }
.igs-card__cta {
	position: relative; z-index: 2;
	display: inline-flex; align-items: center; gap: 6px; flex: none;
	min-height: var(--tap); padding: 0 var(--s-3);
	border-radius: var(--r-md); color: var(--c-link); font-weight: 700; text-decoration: none;
}
.igs-card__cta:hover { background: var(--c-sky-tint); color: var(--c-navy); }
.igs-card__cta .igs-icon { width: 18px; height: 18px; }

@media (max-width: 719.98px) {
	.igs-grid { grid-template-columns: 1fr; gap: var(--s-3); }
	.igs-card { flex-direction: row; }
	.igs-card__media { flex: 0 0 112px; aspect-ratio: auto; min-height: 120px; }
	.igs-card__badges { display: none; }
	.igs-card__body { padding: var(--s-3); }
	.igs-card__title { font-size: var(--fs-md); }
	.igs-card__excerpt { display: none; }
	.igs-card__meta { flex-wrap: wrap; gap: 0 var(--s-2); padding-top: var(--s-2); font-size: var(--fs-xs); }
	.igs-card__body > .igs-card__meta { border-top: 0; }
	.igs-card__cta { padding: 0; margin-left: -2px; }
}

.igs-chips { margin: var(--s-2) 0 var(--s-5); }
.igs-chips ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--s-2); }
.igs-chip {
	display: inline-flex; align-items: center; gap: 6px;
	min-height: var(--tap); padding: 0 var(--s-4);
	border: 1px solid var(--c-border); border-radius: var(--r-pill);
	background: var(--c-white); color: var(--c-text);
	font-weight: 600; font-size: var(--fs-sm); text-decoration: none; white-space: nowrap;
	transition: background-color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.igs-chip:hover { border-color: var(--c-sky); background: var(--c-sky-tint); color: var(--c-navy); }
.igs-chip.is-current { background: var(--c-navy); border-color: var(--c-navy); color: var(--c-white); }
.igs-chip__count { font-size: var(--fs-xs); color: var(--c-muted); font-weight: 600; }
.igs-chip.is-current .igs-chip__count { color: var(--c-white-80); }
@media (max-width: 719.98px) {
	.igs-chips { margin-inline: calc(-1 * var(--gutter)); }
	.igs-chips ul { flex-wrap: nowrap; overflow-x: auto; padding-inline: var(--gutter); scrollbar-width: none; }
	.igs-chips ul::-webkit-scrollbar { display: none; }
}

.igs-pagination, .igs-pagination .nav-links { display: flex; flex-wrap: wrap; gap: var(--s-2); margin-top: var(--s-6); }
.igs-pagination .nav-links { margin-top: 0; }
.igs-pagination__item, .igs-pagination .page-numbers {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: var(--tap); min-height: var(--tap); padding: 0 var(--s-3);
	border: 1px solid var(--c-border); border-radius: var(--r-md);
	background: var(--c-white); color: var(--c-navy); font-weight: 700; text-decoration: none;
}
.igs-pagination a:hover { border-color: var(--c-sky); background: var(--c-sky-tint); }
.igs-pagination .is-current, .igs-pagination .current { background: var(--c-navy); border-color: var(--c-navy); color: var(--c-white); }
.igs-pagination .screen-reader-text + .nav-links { margin: 0; }
.igs-empty { padding: var(--s-6) 0; color: var(--c-muted); }

/* 12. Article + TOC ----------------------------------------------------- */
.igs-article__head { text-align: center; padding-block: var(--s-5) var(--s-6); max-width: 900px; }
.igs-article__head .igs-title { margin-inline: auto; max-width: 24ch; }
.igs-article__head .igs-rule { margin-inline: auto; }
.igs-article__meta { font-size: var(--fs-sm); color: var(--c-muted); margin-top: var(--s-3); }
.igs-article__lead { margin: 0 auto var(--s-7); max-width: 1140px; padding-inline: var(--gutter); }
.igs-article__lead img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--r-lg); background: var(--c-surface); }
@media (max-width: 719.98px) {
	.igs-article__lead { padding-inline: 0; }
	.igs-article__lead img { aspect-ratio: 4 / 3; border-radius: 0; }
	.igs-article__lead figcaption { padding-inline: var(--gutter); }
}
.igs-article__body { display: block; }
.igs-article__content { max-width: calc(var(--measure) + 2px); margin-inline: auto; }
.igs-article__content .igs-entry-content .wp-block-image img { --igs-maxh: min(80vh, 720px); }
.igs-article__aside { margin-bottom: var(--s-5); }
.igs-article__aside:empty { display: none; }
@media (min-width: 1100px) {
	.igs-article__body.has-toc {
		display: grid; grid-template-columns: 240px minmax(0, var(--measure)); justify-content: center;
		column-gap: var(--s-8); align-items: start;
	}
	.igs-article__body.has-toc .igs-article__aside { position: sticky; top: calc(var(--header-h) + 72px); margin: 0; max-height: calc(100vh - 160px); overflow-y: auto; }
	.igs-article__body.has-toc .igs-article__content { margin: 0; }
}
.igs-pagetoc { border: 1px solid var(--c-border); border-radius: var(--r-md); background: var(--c-white); max-width: var(--measure); margin-inline: auto; }
.igs-pagetoc summary {
	list-style: none; display: flex; align-items: center; gap: var(--s-2);
	min-height: 48px; padding: 0 var(--s-4); cursor: pointer;
	font-weight: 700; font-size: var(--fs-sm); color: var(--c-navy);
}
.igs-pagetoc summary::-webkit-details-marker { display: none; }
.igs-pagetoc summary .igs-icon { width: 18px; height: 18px; color: var(--c-heading); }
.igs-pagetoc ol { list-style: none; margin: 0; padding: 0 var(--s-2) var(--s-3); counter-reset: toc; }
.igs-pagetoc li { counter-increment: toc; }
.igs-pagetoc a {
	display: flex; gap: var(--s-2); min-height: var(--tap); padding: 11px var(--s-2); border-radius: var(--r-sm);
	font-size: var(--fs-sm); line-height: 1.4; color: var(--c-text); text-decoration: none;
}
.igs-pagetoc a::before { content: counter(toc, decimal-leading-zero); color: var(--c-heading); font-weight: 700; font-size: var(--fs-xs); padding-top: 2px; }
.igs-pagetoc a:hover { background: var(--c-sky-tint); color: var(--c-navy); }
@media (min-width: 1100px) {
	.igs-article__body.has-toc .igs-pagetoc { border: 0; border-left: 2px solid var(--c-sky-tint); border-radius: 0; }
	.igs-article__body.has-toc .igs-pagetoc summary { padding-left: var(--s-3); pointer-events: none; }
	.igs-article__body.has-toc .igs-pagetoc ol { padding-left: 0; }
}
.igs-glancebox { background: var(--c-sky-tint); border-radius: var(--r-lg); padding: var(--s-5); margin-bottom: var(--s-6); }
.igs-glancebox .igs-at-a-glance li::before { background: var(--c-white); }

/* 13. Search, 404, archive ---------------------------------------------- */
.igs-searchpage .igs-page__head, .igs-archive .igs-page__head { padding-bottom: var(--s-3); }
.igs-404__inner { max-width: 760px; padding-block: var(--s-8); }
.igs-404__inner > * + * { margin-top: var(--s-4); }
.igs-404__subtitle { font: 700 var(--fs-xs)/1.4 var(--f-body); letter-spacing: 0.1em; text-transform: uppercase; color: var(--c-muted); margin-top: var(--s-6); }
.igs-404__links { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: var(--s-2); }
.igs-404__links .igs-icon { width: 16px; height: 16px; }

/* 14a. Newsletter (N1, inc/newsletter.php) ------------------------------
   Light band above the footer, or a card inside content (block). The form
   and the message share one grid cell; the hidden one keeps its size
   (visibility hidden), the error line has a fixed height: nothing moves. */
.igs-nl { background: var(--c-sky-tint); color: var(--c-text); }
.igs-nl__inner { display: grid; gap: var(--s-4) var(--s-7); padding-block: var(--s-7); }
@media (min-width: 900px) { .igs-nl:not(.igs-nl--card) .igs-nl__inner { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); align-items: center; } }
.igs-nl__title { margin: 0 0 var(--s-2); font: 700 var(--fs-xl)/1.25 var(--f-heading); color: var(--c-navy); }
.igs-nl__text { margin: 0; max-width: 52ch; line-height: 1.6; }
.igs-nl__box { display: grid; }
.igs-nl__box > * { grid-area: 1 / 1; min-width: 0; }
.igs-nl__box > [hidden] { display: block; visibility: hidden; }
.igs-nl__label { display: block; margin: 0 0 var(--s-2); font-size: var(--fs-sm); font-weight: 700; color: var(--c-navy); }
.igs-nl__row { display: grid; gap: var(--s-2); }
@media (min-width: 420px) { .igs-nl__row { grid-template-columns: minmax(0, 1fr) auto; } }
.igs-nl__input {
	box-sizing: border-box; display: block; width: 100%; min-height: 48px; margin: 0; padding: var(--s-2) var(--s-3);
	border: 1px solid var(--c-muted); border-radius: var(--r-md); background: var(--c-white); color: var(--c-text); font: inherit; font-size: 16px;
}
.igs-nl__input:focus-visible { outline: 3px solid var(--c-sky); outline-offset: 1px; border-color: var(--c-navy); }
.igs-nl__input[aria-invalid="true"] { border: 2px solid var(--c-alert); }
.igs-nl .igs-btn { min-height: 48px; cursor: pointer; }
.igs-nl .igs-btn:focus-visible { outline: 3px solid var(--c-sky); outline-offset: 2px; }
.igs-nl .igs-btn[disabled] { opacity: 0.6; cursor: wait; }
.igs-nl__err { min-height: 1.5em; margin: var(--s-1) 0 0; color: var(--c-alert); font-size: var(--fs-sm); font-weight: 700; line-height: 1.5; }
.igs-nl__consent { margin: 0; font-size: var(--fs-xs); line-height: 1.5; color: var(--c-muted); }
.igs-nl__consent a { display: inline-block; min-height: 24px; color: var(--c-link); }
.igs-nl__hp { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.igs-nl__done { align-self: center; padding: var(--s-4) var(--s-5); border-radius: var(--r-lg); background: var(--c-white); box-shadow: var(--sh-sm); }
.igs-nl__done:focus { outline: 3px solid var(--c-sky); outline-offset: 2px; }
.igs-nl__done-title { display: flex; align-items: center; gap: var(--s-2); margin: 0; font-weight: 700; line-height: 1.5; color: var(--c-navy); }
.igs-nl__done-title .igs-icon { width: 22px; height: 22px; flex: none; }
.igs-nl--card { margin-block: var(--s-6); border-radius: var(--r-lg); }
.igs-nl--card .igs-nl__inner { padding: var(--s-5); gap: var(--s-4); }
.igs-entry-content .igs-nl__title { margin: 0 0 var(--s-2); font-size: var(--fs-xl); line-height: 1.25; color: var(--c-navy); }
.igs-entry-content .igs-nl__text { margin-top: 0; }

/* 14. Footer ------------------------------------------------------------ */
.igs-footer { background: var(--c-navy); color: var(--c-white-80); font-size: var(--fs-sm); }
.igs-footer a { color: var(--c-white); text-decoration: none; }
.igs-footer a:hover { text-decoration: underline; color: var(--c-white); }
.igs-footer :focus-visible { outline-color: var(--c-white); }
.igs-footer__grid { display: grid; gap: var(--s-6); padding-block: var(--s-7) var(--s-6); }
@media (min-width: 720px) { .igs-footer__grid { grid-template-columns: 1.4fr 1fr 1fr; } }
@media (min-width: 1100px) { .igs-footer__grid:has(> :nth-child(4)) { grid-template-columns: 1.4fr 1fr 1fr 1fr; } }
.igs-footer__brand p { margin-top: var(--s-3); max-width: 36ch; line-height: 1.6; }
.igs-brand--light .igs-brand__word { color: var(--c-white); }
.igs-footer__title { font: 700 var(--fs-xs)/1.4 var(--f-body); letter-spacing: 0.12em; text-transform: uppercase; color: var(--c-sky); margin-bottom: var(--s-2); }
.igs-footer__col ul { list-style: none; margin: 0; padding: 0; }
.igs-footer__col li a { display: inline-flex; align-items: center; min-height: var(--tap); min-width: var(--tap); line-height: 1.3; }
.igs-footer__col p { margin-bottom: var(--s-3); }
.igs-footer__bottom {
	display: flex; flex-wrap: wrap; gap: var(--s-2) var(--s-5); align-items: center;
	border-top: 1px solid var(--c-white-20);
	padding-block: var(--s-4) var(--s-5); font-size: var(--fs-xs);
}
.igs-footer__menu { list-style: none; margin: 0; padding: 0; display: flex; gap: var(--s-4); }

/* 14b. L2: legal row of the footer and «Cookie settings» (inc/legal.php) --- */
.igs-footer__legal ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; column-gap: var(--s-4); }
.igs-footer__legal a { display: inline-flex; align-items: center; min-height: var(--tap); }
@media (min-width: 720px) { .igs-footer__legal { margin-left: auto; } }
dialog.igs-consent {
	box-sizing: border-box; width: min(520px, calc(100% - 32px)); max-width: none; max-height: calc(100dvh - 32px);
	padding: 0; border: 0; border-radius: var(--r-lg); background: var(--c-white); color: var(--c-text);
	box-shadow: var(--sh-lg); overflow: auto; overscroll-behavior: contain; font-size: var(--fs-sm); line-height: 1.5;
}
.igs-consent::backdrop { background: var(--c-navy-60); }
.igs-consent__box { padding: var(--s-5); }
@media (max-width: 599.98px) {
	dialog.igs-consent { width: 100%; margin: auto 0 0; max-height: 92dvh; border-radius: var(--r-lg) var(--r-lg) 0 0; }
	.igs-consent__box { padding: var(--s-4) var(--s-4) calc(var(--s-4) + env(safe-area-inset-bottom)); }
}
.igs-consent__head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--s-3); }
.igs-consent__title { margin: 0; font: 700 var(--fs-xl)/1.25 var(--f-heading); color: var(--c-navy); }
.igs-consent__x { flex: none; display: inline-flex; align-items: center; justify-content: center; width: var(--tap); height: var(--tap); margin: -10px -10px 0 0; padding: 0; border: 0; border-radius: var(--r-md); background: transparent; color: var(--c-navy); }
.igs-consent__x:hover { background: var(--c-sky-tint); }
.igs-consent__x .igs-icon { width: 22px; height: 22px; }
.igs-consent__intro { margin: var(--s-2) 0 var(--s-4); }
.igs-consent__cat { padding: var(--s-3) 0; border-top: 1px solid var(--c-border); }
.igs-consent__row { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); min-height: var(--tap); }
.igs-consent__name { margin: 0; font-weight: 700; color: var(--c-navy); }
label.igs-consent__name { flex: 1; min-height: var(--tap); display: flex; align-items: center; cursor: pointer; }
.igs-consent__always { margin: 0; font-weight: 700; font-size: var(--fs-xs); color: var(--c-navy); }
.igs-consent__text { margin: var(--s-1) 0 0; font-size: var(--fs-xs); color: var(--c-muted); }
.igs-consent__switch {
	flex: none; appearance: none; -webkit-appearance: none; position: relative; width: 52px; height: 30px; margin: 7px 0;
	border: 2px solid var(--c-muted); border-radius: var(--r-pill); background: var(--c-white); cursor: pointer;
	transition: background-color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.igs-consent__switch::before {
	content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%;
	background: var(--c-muted); transition: transform var(--t-fast) var(--ease), background-color var(--t-fast) var(--ease);
}
.igs-consent__switch:checked { background: var(--c-navy); border-color: var(--c-navy); }
.igs-consent__switch:checked::before { transform: translateX(22px); background: var(--c-white); }
.igs-consent__switch:focus-visible { outline: 3px solid var(--c-sky); outline-offset: 2px; }
.igs-consent__more { margin: 0; padding-top: var(--s-3); border-top: 1px solid var(--c-border); font-size: var(--fs-xs); }
.igs-consent__more a { display: inline-flex; align-items: center; min-height: var(--tap); color: var(--c-link); font-weight: 700; }
.igs-consent__id { margin: 0; padding-top: var(--s-2); font-size: var(--fs-xs); color: var(--c-muted); overflow-wrap: anywhere; }
.igs-consent__id[hidden] { display: none; }
.igs-consent__code { font-size: var(--fs-xs); color: var(--c-text); user-select: all; -webkit-user-select: all; }
.igs-consent__copy { display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 var(--s-2); border: 0; background: transparent; color: var(--c-link); font: 700 var(--fs-xs)/1 var(--f-body); text-decoration: underline; cursor: pointer; }
.igs-consent__copy:focus-visible { outline: 3px solid var(--c-sky); outline-offset: 2px; }
.igs-consent__actions { display: grid; grid-template-columns: 1fr; gap: var(--s-2); margin-top: var(--s-3); }
@media (min-width: 480px) { .igs-consent__actions { grid-template-columns: repeat(3, 1fr); } }
.igs-consent__btn { width: 100%; padding-inline: var(--s-3); font-size: var(--fs-sm); }
.igs-consent__btn:focus-visible, .igs-consent__x:focus-visible, .igs-consent__more a:focus-visible { outline: 3px solid var(--c-sky); outline-offset: 2px; }

/* 14c. G1: consent bar (inc/legal.php). Fixed at the bottom, so showing it
   moves nothing (no layout shift); no overlay, the page stays usable. The
   body gets the bar height as bottom padding (--igs-cbar-h, set by igs.js)
   so the footer can still be reached. Under 960 px, on listings with the
   CTA bar, it sits right above that bar (bottom set by igs.js). */
.igs-cbar {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 45;
	padding: var(--s-3) var(--gutter) calc(var(--s-3) + env(safe-area-inset-bottom));
	background: var(--c-white); color: var(--c-text); border-top: 1px solid var(--c-border);
	box-shadow: 0 -6px 20px var(--c-navy-15); font-size: var(--fs-sm); line-height: 1.45;
}
.igs-cbar[hidden] { display: none; }
.igs-cbar.is-stacked { padding-bottom: var(--s-3); }
.igs-cbar__in { max-width: var(--container); margin-inline: auto; display: grid; gap: var(--s-3); }
.igs-cbar__text { margin: 0; }
.igs-cbar__text a { color: var(--c-link); font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }
.igs-cbar__actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--s-2); }
.igs-cbar__btn { width: 100%; padding-inline: var(--s-2); font-size: var(--fs-sm); }
.igs-cbar__btn:focus-visible, .igs-cbar__text a:focus-visible { outline: 3px solid var(--c-sky); outline-offset: 2px; }
@media (min-width: 900px) {
	.igs-cbar__in { grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--s-5); }
	.igs-cbar__actions { grid-template-columns: repeat(3, 128px); }
}
body.igs-cbar-on { padding-bottom: var(--igs-cbar-h, 0px); }
@media (max-width: 959.98px) {
	body.igs-cbar-on:has(.igs-ctabar) { padding-bottom: calc(76px + var(--igs-cbar-h, 0px)); }
}
.igs-main[tabindex="-1"]:focus { outline: none; }

/* TranslatePress floating language switcher: keep it clear of the CTA bar and the drawer. */
@media (max-width: 959.98px) {
	body:has(.igs-ctabar) .trp-floating-switcher { bottom: calc(76px + env(safe-area-inset-bottom)) !important; }
}
.igs-drawer-open .trp-floating-switcher { display: none !important; }

/* 15. Utilities, motion ------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; scroll-behavior: auto !important; }
	.igs-card:hover { transform: none; }
}
@media print {
	.igs-header, .igs-ctabar, .igs-cbar, .igs-footer, .igs-directory, .igs-related, .igs-crumbs, .igs-nl { display: none; }
}

/* 16. R2 components (inc/components.php) --------------------------------- */
[hidden].igs-card, .igs-hours__exceptions li[hidden] { display: none !important; }

/* Trust: badges linked to the trust page (only once it is published). */
.igs-badge-link { position: relative; z-index: 2; display: inline-flex; align-items: center; min-height: var(--tap); text-decoration: none; }
.igs-badge-link:hover .igs-badge { background: var(--c-navy); color: var(--c-white); }
.igs-verified-badge a { display: flex; align-items: center; gap: var(--s-2); min-height: var(--tap); margin-block: -8px; color: inherit; text-decoration: none; }
.igs-verified-badge a:hover { text-decoration: underline; }
.igs-facts__panel > .igs-verified-badge + .igs-checked-group { margin-top: var(--s-2); }
.igs-checked-group > * + * { margin-top: var(--s-1); }
.igs-checked { display: flex; align-items: flex-start; gap: var(--s-2); font-size: var(--fs-xs); line-height: 1.45; color: var(--c-muted); }
.igs-checked .igs-icon { width: 16px; height: 16px; flex: none; margin-top: 1px; }
.igs-checked--link a { display: inline-flex; align-items: center; min-height: var(--tap); padding-left: 24px; color: var(--c-link); }

/* Status pill: the text is filled in by igs.js in the same place. Long
   texts wrap, never cut (review 29/9, M5); room for two lines is kept
   where igs.js writes the text, so nothing moves when it does. */
.igs-open {
	display: flex; align-items: center; gap: var(--s-2); min-height: 28px; min-width: 0;
	font-size: var(--fs-sm); font-weight: 600; line-height: 1.35; color: var(--c-text);
}
.igs-open__text { min-width: 0; overflow-wrap: anywhere; }
.igs-open__dot { width: 8px; height: 8px; flex: none; border-radius: 50%; background: var(--c-rule); }
.igs-open.is-open .igs-open__dot { background: var(--c-success); box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-success) 22%, transparent); }
.igs-open.is-closed .igs-open__dot { background: var(--c-alert); }
.igs-open.is-season .igs-open__dot { background: var(--c-sky); }
.igs-open.is-alert { color: var(--c-alert); }
.igs-listing__open { margin-top: var(--s-3); }
.igs-listing__open a { display: inline-flex; align-items: center; gap: var(--s-2); min-height: var(--tap); min-width: 0; color: inherit; text-decoration: none; }
.igs-listing__open a:hover .igs-open__text { text-decoration: underline; }
.igs-card__open { margin-top: var(--s-2); min-height: 20px; font-size: var(--fs-xs); }
.igs-card__open[data-igs-hours] { min-height: 2.7em; }

/* Opening hours list (facts panel). */
.igs-hours__week { margin: 0; display: grid; gap: 2px; }
.igs-hours__week > div, .igs-hours__exceptions li {
	display: flex; justify-content: space-between; gap: var(--s-3);
	padding: 6px var(--s-2); border-radius: var(--r-sm); font-size: var(--fs-sm);
}
.igs-hours__week dt { color: var(--c-muted); font-weight: 600; }
.igs-hours__week dd { margin: 0; text-align: right; font-weight: 600; color: var(--c-text); font-variant-numeric: tabular-nums; }
.igs-hours__week > div.is-today, .igs-hours__exceptions li.is-today { background: var(--c-sky-tint); }
.igs-hours__week > div.is-today dt { color: var(--c-navy); }
.igs-hours__subtitle { margin-top: var(--s-3); font-size: var(--fs-xs); font-weight: 700; color: var(--c-muted); }
.igs-hours__exceptions { list-style: none; margin: var(--s-1) 0 0; padding: 0; }
.igs-hours__exceptions b { white-space: nowrap; font-variant-numeric: tabular-nums; }

/* Status banner at the top of a listing. */
.igs-status-banner {
	display: flex; align-items: flex-start; gap: var(--s-3);
	margin-bottom: var(--s-4); padding: var(--s-3) var(--s-4);
	background: var(--c-surface-alt); border: 1px solid var(--c-border); border-left: 4px solid var(--c-sky); border-radius: var(--r-md);
	font-size: var(--fs-sm); line-height: 1.5; color: var(--c-text);
}
.igs-status-banner .igs-icon { width: 20px; height: 20px; flex: none; margin-top: 1px; color: var(--c-navy); }
.igs-status-banner--temporarily-closed, .igs-status-banner--permanently-closed { border-left-color: var(--c-alert); }
.igs-status-banner--permanently-closed .igs-icon { color: var(--c-alert); }
.igs-status-banner a { display: inline-flex; align-items: center; min-height: var(--tap); color: var(--c-link); font-weight: 700; }

/* Beach facts: icon grid. */
.igs-factgrid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-3) var(--s-4); }
.igs-factgrid li { display: flex; align-items: flex-start; gap: var(--s-2); min-width: 0; }
.igs-factgrid li.is-wide { grid-column: 1 / -1; }
.igs-factgrid .igs-icon { width: 22px; height: 22px; flex: none; margin-top: 2px; color: var(--c-heading); }
.igs-factgrid__k { display: block; font-size: var(--fs-xs); font-weight: 600; color: var(--c-muted); }
.igs-factgrid__v { display: block; font-size: var(--fs-sm); font-weight: 600; line-height: 1.4; color: var(--c-text); overflow-wrap: anywhere; }

/* Languages, amenities. */
.igs-tags-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); }
.igs-tags__label { font-size: var(--fs-sm); font-weight: 600; color: var(--c-muted); }
.igs-tags { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.igs-tags li { padding: 4px 10px; border-radius: var(--r-pill); background: var(--c-surface); font-size: var(--fs-xs); font-weight: 600; color: var(--c-text); }

/* External link row (official timetable). */
.igs-linkrow {
	display: flex; align-items: center; justify-content: space-between; gap: var(--s-3);
	min-height: 48px; padding: 0 var(--s-2); border-block: 1px solid var(--c-border);
	color: var(--c-link); font-weight: 700; text-decoration: none;
}
.igs-linkrow:hover { background: var(--c-sky-tint); color: var(--c-navy); }
.igs-linkrow:focus-visible { outline: 3px solid var(--c-navy); outline-offset: -3px; }
.igs-linkrow .igs-icon { width: 18px; height: 18px; flex: none; }

/* Key fact linked to a listing (event venue): 44px target, same line height. */
.igs-keyfacts dd a { display: inline-flex; align-items: center; min-height: var(--tap); margin-block: -11px; color: var(--c-link); }

/* Price level. */
.igs-price { font-weight: 700; letter-spacing: 0.04em; white-space: nowrap; }
.igs-price > span[aria-hidden="true"] { color: var(--c-rule); }
.igs-price b { color: var(--c-navy); }

/* Events: date tile, status label, date line. */
.igs-datetile {
	display: inline-flex; flex-direction: column; align-items: center; justify-content: center; flex: none;
	width: 52px; height: 56px; border: 1px solid var(--c-border); border-radius: var(--r-md);
	background: var(--c-white); color: var(--c-navy); box-shadow: var(--sh-sm); line-height: 1;
}
.igs-datetile b { font: 700 var(--fs-xl)/1 var(--f-heading); }
.igs-datetile span { margin-top: 3px; font: 700 0.6875rem/1 var(--f-body); letter-spacing: 0.06em; text-transform: uppercase; color: var(--c-heading); }
.igs-card__tile { position: absolute; top: var(--s-3); right: var(--s-3); }
.igs-event-when { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2) var(--s-3); margin-top: var(--s-4); font-weight: 700; color: var(--c-navy); }
.igs-status-label {
	display: inline-flex; align-items: center; padding: 2px 10px; border-radius: var(--r-pill);
	background: color-mix(in srgb, var(--c-alert) 9%, var(--c-white)); color: var(--c-alert);
	font: 700 0.6875rem/1.5 var(--f-body); letter-spacing: 0.06em; text-transform: uppercase;
}
.igs-card__status { align-self: flex-start; margin-top: 4px; }
@media (max-width: 719.98px) {
	.igs-card__tile { top: 6px; right: auto; left: 6px; width: 40px; height: 44px; }
	.igs-card__tile b { font-size: var(--fs-md); }
}

/* Affiliate label, disclosure. */
.igs-partner-label {
	display: inline-flex; align-items: center; margin-left: var(--s-2); padding: 1px 7px;
	border: 1px solid currentColor; border-radius: var(--r-pill);
	font: 700 0.6875rem/1.4 var(--f-body); letter-spacing: 0.04em; text-transform: uppercase;
}
.igs-disclosure {
	display: flex; align-items: flex-start; gap: var(--s-2); margin-bottom: var(--s-3);
	padding: var(--s-2) var(--s-3); border: 1px solid var(--c-border); border-radius: var(--r-md);
	background: var(--c-surface-alt); font-size: var(--fs-sm); line-height: 1.5; color: var(--c-text); text-align: left;
}
.igs-article__head .igs-disclosure { display: inline-flex; }
.igs-listing__head .igs-disclosure { margin: var(--s-3) 0 0; }
.igs-disclosure .igs-icon { width: 18px; height: 18px; flex: none; margin-top: 2px; color: var(--c-heading); }
.igs-disclosure a { color: var(--c-link); }

/* Video facade: local thumbnail, the player only after a click. */
.igs-video { margin: var(--s-6) 0 0; }
.igs-video__frame { position: relative; aspect-ratio: 16 / 9; overflow: hidden; border-radius: var(--r-lg); background: var(--c-navy); }
.igs-video__img, .igs-video__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; display: block; margin: 0; }
.igs-video__play {
	position: absolute; inset: 0; margin: auto; width: 72px; height: 72px;
	display: flex; align-items: center; justify-content: center;
	border: 0; border-radius: 50%; background: var(--c-navy-90); color: var(--c-white);
	box-shadow: var(--sh-md); cursor: pointer;
	transition: transform var(--t-fast) var(--ease), background-color var(--t-fast) var(--ease);
}
.igs-video__play:hover { transform: scale(1.06); background: var(--c-primary); }
.igs-video__play:focus-visible { outline: 3px solid var(--c-sky); outline-offset: 3px; }
.igs-video__play .igs-icon { width: 30px; height: 30px; margin-left: 4px; }
.igs-video__note { margin-top: var(--s-2); font-size: var(--fs-xs); color: var(--c-muted); }
.igs-video__note a { display: inline-flex; align-items: center; min-height: var(--tap); color: var(--c-link); }
.igs-video-link { margin-top: var(--s-6); }

/* Photo credit. */
.igs-credit { font-size: var(--fs-xs); font-style: normal; color: var(--c-muted); }
.igs-listing__thumb figcaption { margin-top: var(--s-2); }

/* Events hub groups. */
.igs-dirgroup + .igs-dirgroup { margin-top: var(--s-6); }
.igs-dirgroup__title { margin-bottom: var(--s-4); font: 700 var(--fs-lg)/1.3 var(--f-heading); color: var(--c-navy); }
.igs-dirgroup--past summary { display: flex; align-items: center; gap: var(--s-2); min-height: var(--tap); cursor: pointer; }
.igs-dirgroup--past[open] summary { margin-bottom: var(--s-4); }
