/* =========================================================================
   Breon Verhaal — 3 tabs die tijdens het scrollen wisselen (v2)
   Gebruikt de kleuren uit style.css (--breon-…) en .breon-btn uit de hero.
   ========================================================================= */
.breon-story {
	--bs-ink: var(--breon-paars, rgb(47, 43, 82));
	--bs-accent: var(--breon-groen, rgb(174, 201, 55));
	--bs-card: var(--breon-wit, #fff);
	--bs-soft: var(--breon-beige, rgb(240, 235, 225));
	--bs-gutter: clamp(20px, 5.56vw, 80px);
	position: relative;
	height: 400vh; /* 3 tabs × scrollafstand + 1 scherm */
	color: var(--bs-ink);
	font-family: var(--breon-font-sans, -apple-system, "Segoe UI", sans-serif);
}
.breon-story, .breon-story *, .breon-story *::before, .breon-story *::after { box-sizing: border-box; }
.breon-story__pin {
	position: sticky;
	top: 0;
	height: 100vh;
	height: 100svh;
	display: flex;
	align-items: center;
	overflow: hidden;
}
.breon-story__grid {
	width: 100%;
	max-width: 1440px;
	margin: 0 auto;
	padding-inline: var(--bs-gutter);
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	column-gap: 24px;
	align-items: center;
}
.breon-story__l {
	grid-column: 1 / 6;
	position: relative;
	z-index: 5;
	display: flex;
	flex-direction: column;
	gap: 40px;
}

/* Tabs */
.breon-story__nav { display: flex; gap: 28px; flex-wrap: wrap; }
.breon-story__nav button {
	all: unset;
	cursor: pointer;
	display: flex;
	flex-direction: column;
	gap: 10px;
	font-size: 14px;
	opacity: .4;
	transition: opacity .4s;
}
.breon-story__nav button.on { opacity: 1; }
.breon-story__nav button span { display: flex; gap: 8px; }
.breon-story__nav button span b { font-weight: 400; }
.breon-story__nav button i {
	width: 72px;
	height: 3px;
	border-radius: 2px;
	background: rgba(47, 43, 82, .15);
	position: relative;
	overflow: hidden;
}
.breon-story__nav button i b {
	position: absolute;
	inset: 0;
	background: var(--bs-accent);
	transform: scaleX(var(--p, 0));
	transform-origin: left;
}
.breon-story__nav button:focus-visible { outline: 2px solid var(--bs-accent); outline-offset: 6px; }

/* Teksten per tab (liggen op elkaar) */
.breon-story__steps { display: grid; }
.breon-story__step {
	grid-area: 1 / 1;
	display: flex;
	flex-direction: column;
	gap: 22px;
	pointer-events: none;
}
.breon-story__step.on { pointer-events: auto; }
.breon-story__kick, .breon-story__mvis { display: none; } /* alleen mobiel */
.breon-story__step h2 {
	margin: 0;
	color: inherit;
	font-family: var(--breon-font-display, Georgia, serif);
	font-weight: 400;
	font-size: clamp(40px, 4.3vw, 68px);
	line-height: 1;
	letter-spacing: -.015em;
}
.breon-story__step h2 .w { display: block; overflow: hidden; padding-bottom: .08em; }
.breon-story__step h2 .w > span {
	display: block;
	transform: translateY(110%);
	transition: transform .6s cubic-bezier(.5, 0, .75, 0);
}
.breon-story__step.on h2 .w > span {
	transform: none;
	transition: transform 1s cubic-bezier(.2, .8, .2, 1);
	transition-delay: calc(.3s + var(--i, 0) * .12s);
}
.breon-story__step .tx {
	margin: 0;
	font-size: clamp(17px, 1.25vw, 19px);
	line-height: 1.55;
	max-width: 42ch;
	text-wrap: pretty;
	opacity: 0;
	transform: translateY(16px);
	transition: opacity .35s, transform .5s;
}
.breon-story__step .tx strong, .breon-story__step .tx b { font-weight: 600; }
.breon-story__step .tx em {
	font-style: normal;
	background: linear-gradient(var(--bs-accent), var(--bs-accent)) 0 92% / 100% 2px no-repeat;
}
.breon-story__step.on .tx {
	opacity: 1;
	transform: none;
	transition: opacity .8s .55s, transform 1s cubic-bezier(.2, .7, .2, 1) .55s;
}

/* Knop per tab (optioneel) */
.breon-story__cta {
	display: flex;
	gap: 32px;
	align-items: center;
	flex-wrap: wrap;
	margin-top: 10px;
	opacity: 0;
	transform: translateY(10px);
	transition: opacity .3s, transform .4s;
}
.breon-story__step.on .breon-story__cta { opacity: 1; transform: none; transition: opacity .6s .7s, transform .8s cubic-bezier(.2, .7, .2, 1) .7s; }

/* Scroll-hint onder de tabs */
.breon-story__hint {
	all: unset;
	cursor: pointer;
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	gap: 14px;
	font-size: 14px;
	letter-spacing: .02em;
	opacity: .65;
	transition: opacity .3s;
}
.breon-story__hint:hover { opacity: 1; }
.breon-story__hint:focus-visible { outline: 2px solid var(--bs-accent); outline-offset: 6px; }
.breon-story__hint .ln { position: relative; width: 1.5px; height: 44px; background: rgba(47, 43, 82, .2); overflow: hidden; }
.breon-story__hint .ln::after {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--bs-ink);
	animation: breon-cue 2.2s cubic-bezier(.6, 0, .2, 1) infinite;
}
@keyframes breon-cue { 0% { transform: translateY(-100%); } 60%, 100% { transform: translateY(100%); } }

.breon-link {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-size: 17px;
	padding-bottom: 6px;
	color: inherit;
	text-decoration: none;
	white-space: nowrap;
	background: linear-gradient(var(--bs-accent), var(--bs-accent)) 0 100% / 100% 2px no-repeat;
	transition: background-size .35s ease;
}
.breon-link:hover, .breon-link:focus { color: inherit; text-decoration: none; background-size: 0 2px; }
.breon-link .ar { transition: transform .3s ease; }
.breon-link:hover .ar { transform: translateX(5px); }

/* Rechts: foto's */
.breon-story__r { grid-column: 6 / 13; position: relative; height: min(80vh, 720px); }
.breon-story__media { position: absolute; inset: 0; transition: opacity .6s ease, transform 1s cubic-bezier(.6, 0, .2, 1); }
.breon-story.s3 .breon-story__media { opacity: 0; transform: scale(.92); pointer-events: none; }
.breon-story__orb {
	position: absolute;
	left: 50%;
	top: 50%;
	width: min(100%, 72vh, 640px);
	aspect-ratio: 1;
	transform: translate(-50%, -50%);
}
.breon-story__orb .im {
	position: absolute;
	top: 0;
	height: 100%;
	will-change: transform, opacity;
	background-size: cover;
	background-repeat: no-repeat;
}
.breon-story__orb .im-a { left: 0; width: 50%; border-radius: 999px 0 0 999px; background-position: 38% center; }
.breon-story__orb .im-b { left: 50%; width: 50%; border-radius: 0 999px 999px 0; background-position: 62% center; }
.breon-story__orb .im-c { left: 0; width: 100%; opacity: 0; border-radius: 50%; background-position: 55% center; transform: scale(var(--z, 1.06)); }

/* Rechts: kaart */
.breon-story__map {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 20px;
	z-index: 3;
	opacity: 0;
	transform: translateY(28px);
	pointer-events: none;
	transition: opacity .5s ease, transform 1s cubic-bezier(.2, .7, .2, 1);
}
.breon-story.s3 .breon-story__map { opacity: 1; transform: none; pointer-events: auto; transition-delay: .3s; }

/* Filters met symbool */
.breon-chips {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	opacity: 0;
	transform: translateY(10px);
	transition: opacity .5s, transform .6s cubic-bezier(.2, .7, .2, 1);
}
.breon-story.s3 .breon-chips { opacity: 1; transform: none; transition-delay: .9s; }
.breon-chip {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	border: 0;
	background: none;
	color: var(--bs-ink);
	box-shadow: inset 0 0 0 1.5px var(--bs-ink);
	border-radius: 999px;
	padding: 11px 18px;
	font: inherit;
	font-size: 15px;
	line-height: 1;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color .3s, box-shadow .3s, color .3s;
}
.breon-chip:hover { box-shadow: inset 0 0 0 2.5px var(--bs-accent); }
.breon-chip[aria-pressed="true"] { background: var(--bs-ink); color: var(--bs-card); box-shadow: none; }
.breon-chip svg { width: 13px; height: 13px; flex: none; fill: currentColor; }
.breon-chip svg.po { fill: var(--bs-accent); }
.breon-count { font-variant-numeric: tabular-nums; }

.breon-mapwrap {
	position: relative;
	padding: clamp(24px, 4vw, 56px) 0;
	clip-path: inset(6% 6% 6% 6%);
	transition: clip-path 1.4s cubic-bezier(.7, 0, .2, 1);
}
.breon-mapwrap.in { clip-path: inset(0 0 0 0); }
.breon-mapart { position: relative; width: 100%; }
.breon-mapart > img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	transform: scale(1.06);
	transition: transform 2.4s cubic-bezier(.2, .7, .2, 1);
}
.breon-mapwrap.in .breon-mapart > img { transform: none; }

/* Verbindingslijnen tussen de plaatsen */
.breon-net { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.breon-net path {
	fill: none;
	stroke: var(--bs-accent);
	stroke-width: var(--sw, 5); /* lijndikte schaalt mee met de breedte van de kaartafbeelding */
	stroke-linecap: round;
	stroke-dasharray: 1 1;
	stroke-dashoffset: 1;
	opacity: .85;
	transition: stroke-dashoffset .5s ease;
}
.breon-mapwrap.live .breon-net path { stroke-dashoffset: 0; transition: stroke-dashoffset 1.4s cubic-bezier(.6, 0, .2, 1) var(--d); }

/* Symbolen */
.breon-mk {
	position: absolute;
	width: 18px;
	height: 18px;
	margin: -9px 0 0 -9px;
	border: 0;
	padding: 0;
	background: none;
	cursor: pointer;
	opacity: 0;
	transform: translateY(-24px) scale(.4);
	transition: opacity .4s var(--d), transform .7s cubic-bezier(.3, 1.6, .5, 1) var(--d);
}
.breon-mk svg { position: relative; width: 100%; height: 100%; display: block; overflow: visible; filter: drop-shadow(0 2px 3px rgba(47, 43, 82, .28)); }
.breon-mk .body { fill: var(--bs-ink); stroke: var(--bs-card); stroke-width: 2.5; stroke-linejoin: round; }
.breon-mk.po .body { fill: var(--bs-accent); }
.breon-mk::before {
	content: "";
	position: absolute;
	inset: -10px;
	border-radius: 50%;
	background: var(--h, rgba(174, 201, 55, .45));
	transform: scale(0);
	transition: transform .4s cubic-bezier(.3, 1.5, .5, 1);
}
.breon-mk.po { --h: rgba(47, 43, 82, .14); }
.breon-mk:hover::before, .breon-mk.on::before { transform: scale(1); }
.breon-mk:focus-visible { outline: 2px solid var(--bs-accent); outline-offset: 4px; }
.breon-mapwrap.live .breon-mk { opacity: 1; transform: none; }
.breon-mapwrap.live .breon-mk.dim { opacity: .15; transform: scale(.7); transition-delay: 0s; }
.breon-mapwrap.live .breon-mk:hover,
.breon-mapwrap.live .breon-mk.on { transform: scale(1.4); z-index: 5; transition-delay: 0s; }

/* Label bij hover */
.breon-tip {
	position: absolute;
	z-index: 20;
	left: 0;
	top: 0;
	transform: translate(calc(-50% + var(--dx, 0px)), calc(-100% - 16px));
	max-width: min(440px, calc(100% - 8px));
	background: var(--bs-card);
	color: var(--bs-ink);
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 12px 22px 12px 12px;
	border-radius: 999px;
	box-shadow: 0 12px 32px rgba(47, 43, 82, .18);
	white-space: nowrap;
	pointer-events: none;
	opacity: 0;
	margin-top: 6px;
	transition: opacity .2s, margin-top .3s cubic-bezier(.2, .7, .2, 1);
}
.breon-tip::after {
	content: "";
	position: absolute;
	left: calc(50% - var(--dx, 0px));
	top: 100%;
	margin-left: -7px;
	border: 7px solid transparent;
	border-top-color: var(--bs-card);
}
.breon-tip.show { opacity: 1; margin-top: 0; }
.breon-tip .lg {
	width: 56px;
	height: 56px;
	flex: none;
	border-radius: 50%;
	background: var(--bs-soft);
	display: grid;
	place-items: center;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .02em;
	overflow: hidden;
}
.breon-tip .lg.has-logo { background: var(--bs-card); box-shadow: inset 0 0 0 1px rgba(47, 43, 82, .1); } /* logo altijd in dezelfde ronde bol */
/* Logo past altijd in het rondje, ook brede of hoge logo's (7px marge = vierkant binnen de cirkel) */
.breon-tip .lg img {
	display: block;
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	max-height: none !important;
	padding: 9px 7px;
	object-fit: contain;
	object-position: center;
	background: none;
	border: 0;
	border-radius: 0;
}
.breon-tip b { display: block; font-weight: 500; font-size: 15px; line-height: 1.2; }
.breon-tip small { display: block; font-size: 12px; line-height: 1.3; opacity: .65; margin-top: 3px; }
.breon-tip { width: max-content; }
.breon-tip b { white-space: normal; }
.breon-tip small { white-space: normal; max-width: 34ch; } /* lang onderwijsaanbod mag over twee regels */
.breon-tip .go {
	display: inline-flex;
	gap: 6px;
	margin-top: 7px;
	font-size: 12px;
	padding-bottom: 3px;
	background: linear-gradient(var(--bs-accent), var(--bs-accent)) 0 100% / 100% 2px no-repeat;
}
.breon-tip.no-link .go { display: none; }

/* In de WPBakery-editor: alles plat onder elkaar */
.vc_editor .breon-story { height: auto; }

/* -------------------------------------------------------------------------
   Tablet / mobiel: drie hoofdstukken onder elkaar, elk met eigen beeld.
   Volgorde: tab 1 · tab 2 · tab 3 · kaart · knop
   ---------------------------------------------------------------------- */
@media (max-width: 1000px) {
	.breon-story { height: auto; padding: 72px 0 88px; overflow-x: hidden; overflow-x: clip; } /* inschuivende foto's mogen de pagina niet breder maken */
	.breon-story__pin { position: static; height: auto; display: block; overflow: visible; }
	.breon-story__grid { display: flex; flex-direction: column; }
	.breon-story__l, .breon-story__steps { display: contents; }
	.breon-story__nav, .breon-story__media { display: none; }
	.breon-story__step { order: 1; grid-area: auto; gap: 18px; margin-bottom: 88px; pointer-events: auto; width: 100%; min-width: 0; }
	.breon-story__step:last-child { margin-bottom: 0; }
	.breon-story__r { order: 2; height: auto; margin-top: 28px; width: 100%; min-width: 0; }
	.breon-story__cta { opacity: 1; transform: none; margin-top: 8px; }
	.breon-story__hint { display: none; }

	.breon-story__kick { display: flex; align-items: center; gap: 10px; font-size: 14px; letter-spacing: .02em; }
	.breon-story__kick b { font-weight: 400; opacity: .5; }
	.breon-story__kick::after { content: ""; width: 28px; height: 3px; background: var(--bs-accent); border-radius: 2px; margin-left: 4px; }

	.breon-story__step h2 { font-size: clamp(34px, 9vw, 52px); }
	.breon-story__step h2 .w > span { transform: none; }
	.breon-story__step .tx { opacity: 1; transform: none; }

	.breon-story__mvis { display: block; position: relative; width: min(100%, 460px); aspect-ratio: 1; margin: 8px 0 10px; }
	.breon-story__mvis span { position: absolute; top: 0; height: 100%; background-size: cover; background-repeat: no-repeat; transition: transform 1.3s cubic-bezier(.2, .7, .2, 1), opacity 1s; }
	.breon-story__mvis.v1 span:first-child { left: 0; width: 50%; border-radius: 999px 0 0 999px; background-position: 38% center; transform: translate(-10%, -8%); }
	.breon-story__mvis.v1 span:last-child { left: 50%; width: 50%; border-radius: 0 999px 999px 0; background-position: 62% center; transform: translate(10%, 8%); }
	.breon-story__mvis.v2 span { left: 0; width: 100%; border-radius: 50%; background-position: 55% center; transform: scale(.9); opacity: 0; }
	.breon-story__mvis.in span { transform: none; opacity: 1; }

	.breon-story__map { position: relative; opacity: 1; transform: none; pointer-events: auto; gap: 16px; min-width: 0; max-width: 100%; }
	.breon-chips {
		opacity: 1;
		transform: none;
		flex-wrap: nowrap;
		overflow-x: auto;
		scrollbar-width: none;
		margin-inline: calc(-1 * var(--bs-gutter));
		padding-inline: var(--bs-gutter);
	}
	.breon-chips::-webkit-scrollbar { display: none; }
	.breon-chip { flex: none; }
	.breon-mapwrap { padding: 12px 0; }
	.breon-mk { width: 14px; height: 14px; margin: -7px 0 0 -7px; }
}

/* Minder beweging */
@media (prefers-reduced-motion: reduce) {
	.breon-story *, .breon-story *::before { transition: none !important; animation: none !important; }
	.breon-mapwrap { clip-path: none; }
	.breon-mk { opacity: 1; transform: none; }
	.breon-story__mvis span { transform: none !important; opacity: 1 !important; }
}

/* Ankers: bij springen op mobiel valt de titel niet onder een vaste header */
.breon-story__step, .breon-story__map { scroll-margin-top: 96px; }



/* Label onder het symbool als er boven geen ruimte is (kleine schermen) */
.breon-tip.below { transform: translate(calc(-50% + var(--dx, 0px)), 16px); }
.breon-tip.below::after { top: auto; bottom: 100%; border-top-color: transparent; border-bottom-color: var(--bs-card); }
@media (max-width: 640px) {
	.breon-tip { gap: 10px; padding: 8px 14px 8px 8px; border-radius: 18px; }
	.breon-tip .lg { width: 44px; height: 44px; }
	.breon-tip b { font-size: 14px; }
}
