/*
Theme Name: Toerbroers Child
Description: Typography and visual refinements for Toerbroers. Child of Hello Elementor.
Author: Toerbroers
Template: hello-elementor
Version: 1.0.0
Text Domain: toerbroers-child
*/

:root {
	--toerbroers-font-body: "Jost", sans-serif;
	--toerbroers-font-display: "Fraunces", serif;
	--toerbroers-section-color: #087f86;
	--toerbroers-body-size: 17px;
	--toerbroers-body-leading: 1.52;
}

body,
p,
li,
label,
input,
textarea,
select,
button,
.elementor-nav-menu,
.elementor-button,
.elementor-field,
.elementor-field-label,
.elementor-widget-text-editor,
.elementor-widget-icon-list,
.elementor-widget-form,
.elementor-widget-button,
.elementor-widget-nav-menu,
.elementor-widget-post-info,
.elementor-widget-theme-post-content {
	font-family: var(--toerbroers-font-body) !important;
}

body,
p,
.elementor-widget-text-editor,
.elementor-widget-theme-post-content {
	font-size: var(--toerbroers-body-size);
	line-height: var(--toerbroers-body-leading);
}

/* The home hero's lead line carries its own larger size. The bare `p` above
   sets body copy, and because it lands on the paragraph itself it would beat
   the size the widget inherits from its own settings. */
.page-id-12 .elementor-element-24b9c93 p {
	font-size: 20px;
}

h1,
h2,
h3,
h4,
h5,
h6,
.elementor-heading-title,
.elementor-widget-theme-post-title .elementor-heading-title,
.elementor-widget-woocommerce-product-title .product_title,
.elementor-post__title,
.entry-title,
.site-title {
	font-family: var(--toerbroers-font-display) !important;
	font-weight: 400;
}

/* Home hero title — Merienda. The widget's own typography says Merienda, but the
   shared display-font rule directly above carries !important, so that setting can
   never land on its own. This exception outranks it by specificity, which leaves
   the site-wide display font untouched for every other heading. */
body.home .elementor-element-ceac08f .elementor-heading-title {
	font-family: Merienda, cursive !important;
}

/* Page hero titles — Merienda too, by request, on every page hero except the home
   page's above. Every h1 in the site sits inside one of these hero containers and
   nowhere else, so this needs no per-page list and touches nothing but the hero
   title. Each selector ends in an element (h1) so it outranks the page-scoped hero
   rules further down this file, which also carry !important. */
body:not(.home) .tb-contact-hero h1.elementor-heading-title,
body:not(.home) .tb-hero-copy h1.elementor-heading-title,
body:not(.home) .uq-hero h1.elementor-heading-title,
body:not(.home) .tb-kampus-hero h1.elementor-heading-title,
body:not(.home) .tb-schedule-hero h1.elementor-heading-title,
body:not(.home) .toere-hero h1.elementor-heading-title {
	font-family: Merienda, cursive !important;
}

body:not(.page-id-96) h2,
body:not(.page-id-96) h2.elementor-heading-title,
body:not(.page-id-96) .elementor-widget-heading h2.elementor-heading-title,
body:not(.page-id-96) .elementor-widget-theme-post-content h2,
.page-id-96 .elementor-section:not(.toere-hero) h2.elementor-heading-title {
	color: var(--toerbroers-section-color) !important;
	font-size: 30px !important;
	font-weight: 400 !important;
	line-height: 1.2 !important;
}

.elementor-button,
button,
input[type="button"],
input[type="submit"],
input[type="reset"] {
	font-family: var(--toerbroers-font-body) !important;
}

@media (max-width: 767px) {
	body,
	p,
	.elementor-widget-text-editor,
	.elementor-widget-theme-post-content {
		font-size: var(--toerbroers-body-size);
	}
}

/* Oor Ons adventure caption */
.page-id-15 .tb-art-caption .elementor-heading-title {
	display: inline-block;
	transform: rotate(-3deg);
	transform-origin: center;
}

/* Shared header and hero system: Uniek, Oor Ons, Kontak */
:is(.page-id-14, .page-id-15, .page-id-16, .page-id-17, .page-id-18) .elementor-location-header {
	height: 136px;
}

:is(.page-id-14, .page-id-15, .page-id-16, .page-id-17, .page-id-18) .elementor-element-tbtsec1 {
	padding: 22px 30px !important;
}

.page-id-17 .tb-contact-page {
	padding: 0 !important;
}

.page-id-18 .uq-hero,
.page-id-15 .elementor-element-oorhero1,
.page-id-14 .tb-contact-hero,
.page-id-16 .tb-contact-hero,
.page-id-17 .tb-contact-hero {
	width: 100% !important;
	min-height: 590px !important;
	height: 590px !important;
	margin: 0 !important;
	padding: 150px 55px 60px !important;
}

/* Toere hero: same frame, type scale and 1240 content box as Kontak (page-id-17).
   Toere's hero is a section with columns rather than a container, so the copy is
   centred by making the section itself a centred flex column. */
.page-id-96 .toere-hero {
	width: 100% !important;
	min-height: 590px !important;
	height: 590px !important;
	margin: 0 !important;
	padding: 150px 55px 60px !important;
	display: flex !important;
	flex-direction: column !important;
	justify-content: center !important;
}

/* Kontak's hero content sits in a container with --content-width: 1240px; the
   band stays full-bleed, the copy doesn't. width:100% keeps the flex item
   definite so the auto side margins really centre it. */
.page-id-96 .toere-hero > .elementor-container {
	width: 100% !important;
	max-width: 1240px !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

/* The Toere quote wrapper carries its own tilt in the page Custom CSS; let the
   shared type rule below do the rotating, as it does on Kontak. */
.page-id-96 .elementor-element-trquote1 {
	transform: none !important;
	text-shadow: 0 3px 18px rgba(0, 0, 0, .45);
}

/* ---------------------------------------------------------------------------
   Toere page (96): the choose-a-tour band

   The band's own colours are set in Elementor — a teal kicker and a 370px
   straight teal divider — and the cards carry the page's Custom CSS. These
   rules take the band to the reference: a gold kicker flanked by gold rules,
   the gold arc under the title in place of the straight rule, gold on the small
   print of the hero, and the card's arrow outside the pill.
   --------------------------------------------------------------------------- */

/* the rule span before the hero eyebrow provides the left rule — mirror it */
.page-id-96 .elementor-element-treyeb01 .elementor-heading-title {
	display: inline-flex;
	align-items: center;
}

.page-id-96 .elementor-element-treyeb01 .elementor-heading-title::after {
	content: "";
	width: 46px;
	height: 2px;
	margin-left: 14px;
	background: #d29b16;
}

/* "jou" in the hero sub-line */
.page-id-96 .elementor-element-trsub001 .elementor-heading-title em {
	color: #f2b91f;
	font-style: italic;
}

/* the hand-drawn gold underline beneath the hero quote */
.page-id-96 .elementor-element-trquote1 .elementor-heading-title::after {
	content: "";
	display: block;
	width: 124px;
	height: 9px;
	margin: 8px auto 0;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 10'%3E%3Cpath d='M3 2C47 11 93 11 137 2' fill='none' stroke='%23d29b16' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* kicker: gold, with a rule on each side */
.page-id-96 .elementor-element-trkicker .elementor-heading-title {
	display: inline-flex;
	align-items: center;
	gap: 14px;
	color: #d29b16 !important;
}

.page-id-96 .elementor-element-trkicker .elementor-heading-title::before,
.page-id-96 .elementor-element-trkicker .elementor-heading-title::after {
	content: "";
	width: 46px;
	height: 2px;
	background: #d29b16;
}

/* the divider becomes the gold arc that sits under the section title */
.page-id-96 .elementor-element-trdivide .elementor-divider-separator {
	border: 0 !important;
	width: 140px !important;
	height: 10px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 10'%3E%3Cpath d='M3 2C47 11 93 11 137 2' fill='none' stroke='%23d29b16' stroke-width='2.5' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* the card's arrow sits just outside the pill */
.page-id-96 .toere-card .elementor-button {
	position: relative;
}

.page-id-96 .toere-card .elementor-button .elementor-button-icon {
	position: absolute;
	left: 100%;
	top: 50%;
	margin-left: 22px;
	transform: translateY(-50%);
}

@media (max-width: 767px) {
	/* the eyebrow text plus two rules no longer fits on a phone, and the band's
	   own look here is a single rule, so drop the mirrored one */
	.page-id-96 .elementor-element-treyeb01 .elementor-heading-title::after {
		content: none;
	}

	/* shorter rules keep the kicker on one line */
	.page-id-96 .elementor-element-trkicker .elementor-heading-title {
		gap: 10px;
	}

	.page-id-96 .elementor-element-trkicker .elementor-heading-title::before,
	.page-id-96 .elementor-element-trkicker .elementor-heading-title::after {
		width: 26px;
	}

	/* a phone card has no room beside its full-width pill */
	.page-id-96 .toere-card .elementor-button .elementor-button-icon {
		position: static;
		margin-left: 10px;
		transform: none;
	}

	/* at 29px "INTERNASIONALE" is wider than the card's inner width, so the
	   card's overflow cut the end off the word */
	.page-id-96 .toere-card h3.elementor-heading-title {
		font-size: 25px !important;
	}
}

/* Sillabusse (224): the hero is a copy of the Kampus one, carrying Kontak's
   kicker and quote. Those two elements join the shared type groups below; the
   page-scoped rules here are what the groups can't express — Kontak's kicker is
   white, and it draws its gold rule with a span, so the Kampus pseudo-element
   rule is switched off, as is the Kampus-only tilt on the quote wrapper. */
.tb-silabus-page .tb-kampus-eyebrow .elementor-heading-title {
	color: #fff !important;
}

.tb-silabus-page .tb-kampus-eyebrow::before {
	content: none;
}

.tb-silabus-page .tb-kampus-quote {
	transform: none !important;
}

.tb-silabus-page .tb-kampus-quote .elementor-heading-title {
	color: #fff !important;
	text-shadow: 0 2px 8px rgba(0, 0, 0, .75);
}

/* ---------------------------------------------------------------------------
   Tour pages (14 International, 16 National)

   Their heroes are Kontak's, copied verbatim, so the band, the copy box and the
   type scale come from the shared groups above. What is left is the page's own:
   the gold 2026 marker in the hero, the section title with its gold arc, and the
   tour card itself. The loop-carousel slide *is* the template wrapper
   (.elementor-41), so the panel belongs on the slide.
   --------------------------------------------------------------------------- */
.page-id-14 .elementor-element-tbyear01,
.page-id-16 .elementor-element-tbyear01 {
	margin-top: 16px;
}

.page-id-14 .elementor-element-tbyear01 .elementor-heading-title,
.page-id-16 .elementor-element-tbyear01 .elementor-heading-title {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-family: Jost, sans-serif !important;
	font-size: 12px !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	letter-spacing: 3px !important;
	color: #f2b91f !important;
}

.page-id-14 .elementor-element-tbyear01 .elementor-heading-title::before,
.page-id-16 .elementor-element-tbyear01 .elementor-heading-title::before {
	content: "";
	width: 46px;
	height: 2px;
	background: #d29b16;
}

/* Elementor's container is a flex parent, and the sections inside it are
   fit-content children: their width comes from their content rather than from
   the page. Where a section holds something wide — the tour carousel's 1240px
   content column — that props the section, and then the whole page, open past
   the viewport. Cap each level at its parent's width so the chain can't grow
   past the page. */
.e-con > .elementor-section,
.e-con > .elementor-section > .elementor-container,
.e-con .elementor-section .elementor-column,
.e-con .elementor-section .elementor-widget-wrap,
.e-con .elementor-section .elementor-widget,
.page-id-14 .elementor-element-itcarousel,
.page-id-16 .elementor-element-ntcarousel,
.page-id-14 .elementor-element-itcarousel .swiper,
.page-id-16 .elementor-element-ntcarousel .swiper {
	min-width: 0;
	max-width: 100%;
}

/* section band */
.page-id-14 .elementor-element-itsec,
.page-id-16 .elementor-element-ntsec {
	padding-top: 80px !important;
	padding-bottom: 96px !important;
}

.page-id-14 .elementor-element-itsec > .elementor-container,
.page-id-16 .elementor-element-ntsec > .elementor-container {
	max-width: 1240px !important;
}

.page-id-14 .elementor-element-itheading,
.page-id-16 .elementor-element-ntheading {
	text-align: center;
	margin-bottom: 40px !important;
}

.page-id-14 .elementor-element-itheading .elementor-heading-title,
.page-id-16 .elementor-element-ntheading .elementor-heading-title {
	font-family: Fraunces, serif !important;
	font-size: clamp(26px, 3vw, 38px) !important;
	font-weight: 500 !important;
	line-height: 1.1 !important;
	letter-spacing: -.2px !important;
	text-transform: uppercase !important;
}

.page-id-14 .elementor-element-itheading .elementor-heading-title::after,
.page-id-16 .elementor-element-ntheading .elementor-heading-title::after {
	content: "";
	display: block;
	width: 140px;
	height: 10px;
	margin: 14px auto 0;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 140 10'%3E%3Cpath d='M3 2C47 11 93 11 137 2' fill='none' stroke='%23d29b16' stroke-width='2.5' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* the card */
.page-id-14 .elementor-element-itcarousel .swiper-slide.e-loop-item,
.page-id-16 .elementor-element-ntcarousel .swiper-slide.e-loop-item {
	background: #fffdfa;
	border-radius: 20px;
	overflow: hidden;
	box-shadow: 0 18px 44px rgba(23, 32, 45, .10);
	transition: transform .35s ease, box-shadow .35s ease;
}

.page-id-14 .elementor-element-itcarousel .swiper-slide.e-loop-item:hover,
.page-id-16 .elementor-element-ntcarousel .swiper-slide.e-loop-item:hover {
	transform: translateY(-4px);
	box-shadow: 0 26px 54px rgba(23, 32, 45, .16);
}

.page-id-14 .elementor-element-itcarousel .swiper-slide.e-loop-item .elementor-section,
.page-id-16 .elementor-element-ntcarousel .swiper-slide.e-loop-item .elementor-section {
	padding: 0 !important;
}

/* photo band */
.page-id-14 .elementor-element-tccard1,
.page-id-16 .elementor-element-tccard1 {
	margin: 0 !important;
}

/* The photo is wrapped in its link now, and an inline-block anchor shrink-wraps
   to the image's own ratio — so `width: 100%` on the image had nothing to
   resolve against and the photo stopped filling the card. Stretch the anchor. */
.page-id-14 .elementor-element-tccard1 a,
.page-id-16 .elementor-element-tccard1 a {
	display: block;
	width: 100%;
}

.page-id-14 .elementor-element-tccard1 img,
.page-id-16 .elementor-element-tccard1 img {
	display: block;
	width: 100%;
	height: 220px;
	object-fit: cover;
	border-radius: 0;
}

/* everything but the photo is inset from the card edge */
.page-id-14 .elementor-element-itcarousel .swiper-slide.e-loop-item .elementor-widget:not(.elementor-widget-image),
.page-id-16 .elementor-element-ntcarousel .swiper-slide.e-loop-item .elementor-widget:not(.elementor-widget-image) {
	padding-left: 32px;
	padding-right: 32px;
}

/* name */
.page-id-14 .elementor-element-tccard2 .elementor-heading-title,
.page-id-16 .elementor-element-tccard2 .elementor-heading-title {
	font-family: Fraunces, serif !important;
	font-size: 24px !important;
	font-weight: 500 !important;
	line-height: 1.15 !important;
	color: #17202d !important;
	padding-top: 18px !important;
}

/* year - place */
.page-id-14 .elementor-element-tccard3,
.page-id-16 .elementor-element-tccard3 {
	font-family: Jost, sans-serif !important;
	font-size: 11px !important;
	font-weight: 600 !important;
	letter-spacing: 1.6px !important;
	text-transform: uppercase !important;
	color: #b8860f !important;
	margin-top: 8px !important;
}

/* description */
.page-id-14 .elementor-element-tccard4,
.page-id-16 .elementor-element-tccard4 {
	font-size: 15px !important;
	line-height: 1.6 !important;
	color: rgba(23, 32, 45, .72) !important;
	margin-top: 12px !important;
}

/* "Lees meer" as a gold link with an arrow */
.page-id-14 .elementor-element-tccard5,
.page-id-16 .elementor-element-tccard5 {
	padding-top: 22px;
	padding-bottom: 36px;
}

.page-id-14 .elementor-element-tccard5 .elementor-button,
.page-id-16 .elementor-element-tccard5 .elementor-button {
	/* The link holds its label in a flex span and the arrow in a
	   pseudo-element: as an inline-block the two broke onto separate lines,
	   dropping the arrow under "Lees meer". A flex row cannot wrap. */
	display: inline-flex !important;
	align-items: center;
	white-space: nowrap;
	background: none !important;
	padding: 0 !important;
	border: 0 !important;
	color: #b8860f !important;
	font-family: Jost, sans-serif !important;
	font-size: 12px !important;
	font-weight: 600 !important;
	letter-spacing: 1.8px !important;
	text-transform: uppercase !important;
}

.page-id-14 .elementor-element-tccard5 .elementor-button::after,
.page-id-16 .elementor-element-tccard5 .elementor-button::after {
	content: "\2192";
	margin-left: 8px;
	display: inline-block;
	flex: none;
	transition: transform .3s ease;
}

.page-id-14 .elementor-element-tccard5 .elementor-button:hover::after,
.page-id-16 .elementor-element-tccard5 .elementor-button:hover::after {
	transform: translateX(4px);
}

/* keep the label at its natural width inside the flex row */
.page-id-14 .elementor-element-tccard5 .elementor-button-content-wrapper,
.page-id-16 .elementor-element-tccard5 .elementor-button-content-wrapper {
	flex: none;
	width: auto;
}

/* round outlined gold arrows */
.page-id-14 .elementor-element-itcarousel .elementor-swiper-button,
.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	border: 1px solid rgba(210, 155, 22, .55);
	border-radius: 50%;
	background: rgba(255, 253, 250, .92);
	color: #b8860f;
	transition: background .3s ease, border-color .3s ease;
}

/* Elementor's own arrow glyph doesn't paint here, so draw the chevron instead. */
.page-id-14 .elementor-element-itcarousel .elementor-swiper-button i,
.page-id-14 .elementor-element-itcarousel .elementor-swiper-button svg,
.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button i,
.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button svg {
	display: none;
}

.page-id-14 .elementor-element-itcarousel .elementor-swiper-button::after,
.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button::after {
	content: "";
	width: 9px;
	height: 9px;
	border-right: 1.5px solid currentColor;
	border-bottom: 1.5px solid currentColor;
}

.page-id-14 .elementor-element-itcarousel .elementor-swiper-button-next::after,
.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button-next::after {
	transform: translateX(-2px) rotate(-45deg);
}

.page-id-14 .elementor-element-itcarousel .elementor-swiper-button-prev::after,
.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button-prev::after {
	transform: translateX(2px) rotate(135deg);
}

/* These pages inherited the hero CSS from Kontak, which caps the copy box at
   600px — sized around the single short word "Kontak". Their own headlines are
   much longer ("INTERNASIONALE TOERE"), so capped they break onto two lines.
   Give them room to sit on one line, but still stop short of the quote's side. */
body.page-id-14 .elementor-element-tbherocopy,
body.page-id-16 .elementor-element-tbherocopy {
	max-width: 1000px !important;
}

/* The card photo and tour name are links too (set in the Tour Card template,
   using the same dynamic post-url tag as the "Lees meer" link). The name keeps
   the card's ink colour and needs no underline — it just wants the hover cue
   the "Lees meer" link already has. */
.page-id-14 .elementor-element-tccard2 .elementor-heading-title a:hover,
.page-id-16 .elementor-element-tccard2 .elementor-heading-title a:hover {
	color: #d29b16;
}

/* Hold the arrows at the card image's mid-height (the image height changes per
   breakpoint, below). Centred on the whole card they drift with the copy length
   and end up sitting on the tour title. Elementor's own arrow rule owns `top`,
   so these have to insist. */
.page-id-14 .elementor-element-itcarousel .elementor-swiper-button,
.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button {
	top: 110px !important;
}

/* Past the width where the 1240px content column leaves room beside it, sit the
   arrows outside the cards instead of on top of them. Below this there is no
   space to spare, so Elementor's own inside placement stays. */
@media (min-width: 1440px) {
	.page-id-14 .elementor-element-itcarousel .elementor-swiper-button-prev,
	.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button-prev {
		left: -78px !important;
	}

	.page-id-14 .elementor-element-itcarousel .elementor-swiper-button-next,
	.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button-next {
		right: -78px !important;
	}
}

/* The hero quote is the right-hand flourish beside the copy, as on Kontak —
   absolute so it doesn't get squeezed by the copy box, and set a little inside
   the hero's own padding so it lines up with the content edge. */
body.page-id-14 .elementor-element-tbquote01,
body.page-id-16 .elementor-element-tbquote01 {
	position: absolute;
	right: 55px;
	bottom: 60px;
	margin: 0;
}

/* Where the hero is wide enough for the copy and the quote to sit side by side,
   centre the quote on the hero instead of parking it in the corner. Below this
   the copy's long sub-line runs under it, so the corner placement stands. */
@media (min-width: 1200px) {
	body.page-id-14 .elementor-element-tbquote01,
	body.page-id-16 .elementor-element-tbquote01 {
		top: 50%;
		bottom: auto;
		translate: 0 -50%;
	}
}

/* Deepen the card's link from gold to ink on hover. */
.page-id-14 .elementor-element-tccard5 .elementor-button:hover,
.page-id-16 .elementor-element-tccard5 .elementor-button:hover {
	color: #17202d;
}

/* Cards stretch to a common height, so pin the link to the bottom: a two-line
   title would otherwise leave the row's "Lees meer" links at different heights. */
.page-id-14 .swiper-slide.e-loop-item,
.page-id-16 .swiper-slide.e-loop-item {
	display: flex;
	flex-direction: column;
}

.page-id-14 .swiper-slide.e-loop-item > .elementor-section,
.page-id-16 .swiper-slide.e-loop-item > .elementor-section {
	flex: 1;
	display: flex;
	flex-direction: column;
}

.page-id-14 .swiper-slide.e-loop-item .elementor-container,
.page-id-16 .swiper-slide.e-loop-item .elementor-container {
	flex: 1;
	display: flex;
	flex-direction: column;
}

.page-id-14 .swiper-slide.e-loop-item .elementor-column,
.page-id-16 .swiper-slide.e-loop-item .elementor-column {
	flex: 1;
	display: flex;
	flex-direction: column;
}

/* The photo runs edge to edge: the wrap's 10px column gap would only shrink it,
   and the text widgets carry their own inset. */
.page-id-14 .swiper-slide.e-loop-item .elementor-widget-wrap,
.page-id-16 .swiper-slide.e-loop-item .elementor-widget-wrap {
	flex: 1;
	display: flex;
	flex-direction: column;
	padding: 0;
}

.page-id-14 .elementor-element-tccard5,
.page-id-16 .elementor-element-tccard5 {
	margin-top: auto;
}

/* Below the two-column breakpoint only one card shows at a time, so there is no
   row to line up: let each card end with its own content rather than carrying a
   tall empty pocket above the link. */
@media (max-width: 767px) {
	.page-id-14 .elementor-element-itcarousel .swiper-wrapper,
	.page-id-16 .elementor-element-ntcarousel .swiper-wrapper {
		align-items: flex-start;
	}
}

/* Swiper hides its own overflow, so it clips the cards' soft shadow at the box:
   with only Elementor's 16px (reserved for the pagination dots) below, the
   shadow's bottom edge is sliced off flat. Elementor's widget CSS sets that
   padding, so this has to insist. */
.page-id-14 .elementor-element-itcarousel .swiper,
.page-id-16 .elementor-element-ntcarousel .swiper {
	padding-bottom: 70px !important;
}

/* A little air between the card photo and its title. */
.page-id-14 .elementor-element-tccard2 .elementor-heading-title,
.page-id-16 .elementor-element-tccard2 .elementor-heading-title {
	padding-top: 12px;
}

.page-id-14 .elementor-element-itcarousel .elementor-swiper-button:hover,
.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button:hover {
	background: #d29b16;
	border-color: #d29b16;
	color: #fffdfa;
}

/* Nothing to scroll yet (a single tour): don't leave an empty circle sitting on
   the card. Swiper marks the unavailable direction itself. */
.page-id-14 .elementor-element-itcarousel .elementor-swiper-button.swiper-button-disabled,
.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button.swiper-button-disabled {
	opacity: 0;
	pointer-events: none;
}

@media (max-width: 1024px) {
	.page-id-14 .elementor-element-tccard1 img,
	.page-id-16 .elementor-element-tccard1 img {
		height: 200px;
	}

	.page-id-14 .elementor-element-itcarousel .elementor-swiper-button,
	.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button {
		top: 100px !important;
	}
}

@media (max-width: 767px) {
	.page-id-14 .elementor-element-itsec,
	.page-id-16 .elementor-element-ntsec {
		padding-top: 56px !important;
		padding-bottom: 70px !important;
		padding-left: 24px !important;
		padding-right: 24px !important;
	}

	.page-id-14 .elementor-element-tccard1 img,
	.page-id-16 .elementor-element-tccard1 img {
		height: 190px;
	}

	/* "INTERNASIONALE TOERE" is the longest hero title on the site; at the shared
	   44px it runs past a 390px viewport. body. outranks the shared group's
	   mobile block, which is written further down the file. */
	body.page-id-14 .tb-hero-title .elementor-heading-title {
		font-size: 32px !important;
	}

	/* Tighter to the corner on a narrow hero. */
	body.page-id-14 .elementor-element-tbquote01,
	body.page-id-16 .elementor-element-tbquote01 {
		right: 22px;
		top: auto;
		bottom: 26px;
		translate: none;
	}

	/* Arrows follow the shorter mobile image (190px). */
	.page-id-14 .elementor-element-itcarousel .elementor-swiper-button,
	.page-id-16 .elementor-element-ntcarousel .elementor-swiper-button {
		top: 95px !important;
	}

	.page-id-14 .elementor-element-tccard2 .elementor-heading-title,
	.page-id-16 .elementor-element-tccard2 .elementor-heading-title {
		font-size: 21px !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	.page-id-14 .elementor-element-itcarousel .swiper-slide.e-loop-item,
	.page-id-16 .elementor-element-ntcarousel .swiper-slide.e-loop-item,
	.page-id-14 .elementor-element-tccard5 .elementor-button::after,
	.page-id-16 .elementor-element-tccard5 .elementor-button::after {
		transition: none;
	}

	.page-id-14 .elementor-element-itcarousel .swiper-slide.e-loop-item:hover,
	.page-id-16 .elementor-element-ntcarousel .swiper-slide.e-loop-item:hover {
		transform: none;
	}
}

.page-id-18 .uq-kicker .elementor-heading-title,
.page-id-15 .elementor-element-oorlabel .elementor-heading-title,
.page-id-14 .tb-eyebrow .elementor-heading-title,
.page-id-16 .tb-eyebrow .elementor-heading-title,
.page-id-17 .tb-eyebrow .elementor-heading-title,
.page-id-96 .elementor-element-treyeb01 .elementor-heading-title,
.tb-silabus-page .tb-kampus-eyebrow .elementor-heading-title {
	font-family: Jost, sans-serif !important;
	font-size: 12px !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	letter-spacing: 3px !important;
}

.page-id-18 .uq-kicker span,
.page-id-15 .elementor-element-oorlabel span,
.page-id-14 .tb-eyebrow span,
.page-id-16 .tb-eyebrow span,
.page-id-17 .tb-eyebrow span,
.page-id-96 .elementor-element-treyeb01 span,
.tb-silabus-page .tb-kampus-eyebrow span {
	display: inline-block;
	width: 46px;
	height: 2px;
	margin-right: 14px;
	background: #d29b16;
	vertical-align: middle;
}

.page-id-18 .uq-title .elementor-heading-title,
.page-id-15 .elementor-element-oortitle .elementor-heading-title,
.page-id-14 .tb-hero-title .elementor-heading-title,
.page-id-16 .tb-hero-title .elementor-heading-title,
.page-id-17 .tb-hero-title .elementor-heading-title,
.page-id-96 .elementor-element-trtitle1 .elementor-heading-title {
	font-family: Fraunces, serif !important;
	font-size: 68px !important;
	font-weight: 400 !important;
	line-height: .96 !important;
	letter-spacing: -1px !important;
}

.page-id-18 .uq-audience .elementor-heading-title,
.page-id-15 .elementor-element-oorsub01 .elementor-heading-title,
.page-id-14 .tb-hero-sub .elementor-heading-title,
.page-id-16 .tb-hero-sub .elementor-heading-title,
.page-id-17 .tb-hero-sub .elementor-heading-title,
.page-id-96 .elementor-element-trsub001 .elementor-heading-title,
.page-id-13 .tb-sched-hero-sub .elementor-heading-title,
.tb-kampus-lead p {
	font-family: Jost, sans-serif !important;
	font-size: 17px !important;
	font-weight: 500 !important;
	line-height: 1.35 !important;
	letter-spacing: .7px !important;
}

.page-id-18 .uq-quote .elementor-heading-title,
.page-id-15 .elementor-element-oorquote .elementor-heading-title,
.page-id-14 .elementor-element-tbquote01 .elementor-heading-title,
.page-id-16 .elementor-element-tbquote01 .elementor-heading-title,
.page-id-17 .elementor-element-tbquote01 .elementor-heading-title,
.page-id-96 .elementor-element-trquote1 .elementor-heading-title,
.tb-silabus-page .tb-kampus-quote .elementor-heading-title {
	font-family: Allura, cursive !important;
	font-size: 45px !important;
	font-weight: 400 !important;
	line-height: .9 !important;
	letter-spacing: 0 !important;
	transform: rotate(-4deg);
	transform-origin: center;
}

@media (max-width: 767px) {
	:is(.page-id-14, .page-id-15, .page-id-16, .page-id-17, .page-id-18) .elementor-location-header {
		height: 118px !important;
	}

	:is(.page-id-14, .page-id-15, .page-id-16, .page-id-17, .page-id-18) .elementor-element-tbtsec1 {
		padding: 14px 16px !important;
	}

	:is(.page-id-14, .page-id-15, .page-id-16, .page-id-17, .page-id-18) .elementor-element-tbtcol1 {
		display: flex !important;
		width: 58% !important;
	}

	:is(.page-id-14, .page-id-15, .page-id-16, .page-id-17, .page-id-18) .elementor-element-tbtcol2 {
		display: none !important;
	}

	:is(.page-id-14, .page-id-15, .page-id-16, .page-id-17, .page-id-18) .elementor-element-feb2ed6 {
		display: flex !important;
		width: 42% !important;
	}

	:is(.page-id-14, .page-id-15, .page-id-16, .page-id-17, .page-id-18) .elementor-element-93e2ff8 .elementor-button {
		padding: 10px 13px !important;
		font-size: 10px !important;
	}

	:is(.page-id-14, .page-id-15, .page-id-16, .page-id-17, .page-id-18) .elementor-element-tbtlogo1 .elementor-icon-box-title {
		font-size: 17px !important;
	}

	.page-id-18 .uq-hero,
	.page-id-15 .elementor-element-oorhero1,
	.page-id-14 .tb-contact-hero,
	.page-id-16 .tb-contact-hero,
	.page-id-17 .tb-contact-hero {
		min-height: 620px !important;
		height: 620px !important;
		padding: 150px 32px 44px !important;
	}

	.page-id-96 .toere-hero {
		min-height: 620px !important;
		height: 620px !important;
		padding: 150px 32px 44px !important;
		display: flex !important;
		flex-direction: column !important;
		justify-content: center !important;
	}

	.page-id-18 .uq-title .elementor-heading-title,
	.page-id-15 .elementor-element-oortitle .elementor-heading-title,
	.page-id-14 .tb-hero-title .elementor-heading-title,
	.page-id-16 .tb-hero-title .elementor-heading-title,
	.page-id-17 .tb-hero-title .elementor-heading-title,
	.page-id-96 .elementor-element-trtitle1 .elementor-heading-title {
		font-size: 44px !important;
		line-height: .96 !important;
	}

	.page-id-18 .uq-audience .elementor-heading-title,
	.page-id-15 .elementor-element-oorsub01 .elementor-heading-title,
	.page-id-14 .tb-hero-sub .elementor-heading-title,
	.page-id-16 .tb-hero-sub .elementor-heading-title,
	.page-id-17 .tb-hero-sub .elementor-heading-title,
	.page-id-96 .elementor-element-trsub001 .elementor-heading-title,
	.page-id-13 .tb-sched-hero-sub .elementor-heading-title,
	.tb-kampus-lead p {
		font-size: 15px !important;
	}

	.page-id-18 .uq-quote .elementor-heading-title,
	.page-id-15 .elementor-element-oorquote .elementor-heading-title,
	.page-id-14 .elementor-element-tbquote01 .elementor-heading-title,
	.page-id-16 .elementor-element-tbquote01 .elementor-heading-title,
	.page-id-17 .elementor-element-tbquote01 .elementor-heading-title,
	.page-id-96 .elementor-element-trquote1 .elementor-heading-title {
		font-size: 35px !important;
		line-height: .9 !important;
	}

	body.page-id-18 .elementor-element-uqpage01 .uq-hero {
		min-height: 620px !important;
		height: 620px !important;
		padding: 150px 32px 44px !important;
	}

	body.page-id-17 .tb-contact-page .elementor-element-tbquote01 .elementor-heading-title {
		font-size: 35px !important;
		line-height: .9 !important;
	}
}

/* Schedule triptych — compact editorial treatment based on the 2026 reference */
@media (min-width: 768px) {
	.page-id-13 .tb-schedule-main {
		padding: 48px 22px !important;
	}

	.page-id-13 .tb-schedule-grid {
		border-radius: 14px !important;
		box-shadow: 0 8px 24px rgba(27, 44, 39, .09) !important;
	}

	.page-id-13 .tb-schedule-grid > .e-con-inner {
		display: grid !important;
		grid-template-columns: 34% 28% 38% !important;
		align-items: stretch !important;
		gap: 0 !important;
	}

	.page-id-13 .tb-schedule-grid > .e-con-inner > .tb-sched-col {
		width: 100% !important;
		min-width: 0 !important;
		/* A floor, not a ceiling: the year and month heading plus the longest
		   month have to fit. All thirteen months sit in the slider's track, so
		   the tallest one sizes the card and it stays put between months. */
		height: auto !important;
		min-height: 620px !important;
		padding: 26px 24px !important;
	}

	.page-id-13 .tb-sched-col-photo > .e-con-inner,
	.page-id-13 .tb-sched-col-info > .e-con-inner {
		display: flex !important;
		flex-direction: column !important;
		justify-content: center !important;
		height: 100% !important;
	}

	.page-id-13 .tb-sched-col-photo > .e-con-inner {
		justify-content: flex-start !important;
		padding-top: 34px !important;
	}

	.page-id-13 .tb-sched-col-list > .e-con-inner {
		display: flex !important;
		flex-direction: column !important;
		justify-content: center !important;
		height: 100% !important;
	}

	.page-id-13 .tb-sched-photo-overlay {
		width: 100% !important;
	}

	.page-id-13 .tb-sched-info-title .elementor-heading-title {
		font-size: 21px !important;
		line-height: 1.18 !important;
		text-align: center !important;
	}

	.page-id-13 .tb-sched-info-body p {
		font-size: 13px !important;
		line-height: 1.42 !important;
		text-align: center !important;
	}

	.page-id-13 .tb-sched-info-lede {
		margin-top: 2px !important;
		padding-top: 12px !important;
	}

	.page-id-13 .tb-sched-contact-line {
		margin-top: 5px !important;
	}

	.page-id-13 .tb-sched-contact-line .elementor-icon-box-title {
		font-size: 12px !important;
	}

	.page-id-13 .tbt-schedule-year {
		font-size: 48px !important;
		margin-bottom: 3px !important;
	}

	.page-id-13 .tb-sched-list-title .elementor-heading-title {
		font-size: 17px !important;
		line-height: 1.05 !important;
		margin-bottom: 8px !important;
	}

	.page-id-13 .tbt-schedule-row {
		gap: 10px !important;
		min-height: 30px !important;
		padding: 3px 0 !important;
		border-bottom-style: solid !important;
	}

	.page-id-13 .tbt-schedule-date {
		min-width: 88px !important;
		padding: 2px 6px !important;
		border-radius: 0 !important;
		font-size: 10px !important;
		line-height: 1.2 !important;
	}

	.page-id-13 .tbt-schedule-name {
		font-size: 13px !important;
		line-height: 1.15 !important;
	}
}

@media (max-width: 767px) {
	.page-id-13 .tb-schedule-grid {
		border-radius: 14px !important;
	}

	.page-id-13 .tb-sched-col {
		padding: 30px 24px !important;
	}

	.page-id-13 .tb-sched-col-list {
		height: auto !important;
		min-height: 0 !important;
	}

	.page-id-13 .tbt-schedule-row {
		gap: 10px !important;
		padding: 5px 0 !important;
	}

	.page-id-13 .tbt-schedule-date {
		min-width: 92px !important;
		padding: 3px 7px !important;
		border-radius: 3px !important;
		font-size: 10px !important;
		line-height: 1.35 !important;
	}

	.page-id-13 .tbt-schedule-name {
		font-size: 14px !important;
		line-height: 1.25 !important;
	}
}

/* Schedule artwork details: brand lockup, map field, and reference dividers */
.page-id-13 .tb-sched-col-photo {
	background-position: center 58% !important;
}

.page-id-13 .tb-sched-col-photo::after {
	background: linear-gradient(180deg, rgba(255, 253, 250, .98) 0%, rgba(255, 253, 250, .9) 25%, rgba(255, 253, 250, .12) 52%, rgba(8, 18, 23, .22) 100%) !important;
}

.page-id-13 .tb-sched-photo-overlay {
	text-align: center !important;
}

.page-id-13 .tb-sched-brand-logo {
	margin: 0 auto 10px !important;
	text-align: center !important;
}

.page-id-13 .tb-sched-brand-logo img {
	display: block;
	width: min(150px, 58%) !important;
	height: auto !important;
	margin: 0 auto;
	filter: drop-shadow(0 3px 5px rgba(23, 32, 45, .14));
}

.page-id-13 .tb-sched-brand-copy .elementor-heading-title {
	color: #087f86 !important;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: 1.05 !important;
	letter-spacing: 1px !important;
	text-align: center !important;
}

.page-id-13 .tb-sched-brand-copy small {
	font-size: 12px;
	letter-spacing: 2px;
}

.page-id-13 .tb-sched-brand-copy strong {
	display: block;
	margin-top: 7px;
	color: #d29b16;
	font-family: Allura, cursive;
	font-size: 28px;
	font-weight: 400;
	line-height: .9;
	letter-spacing: 0;
	text-transform: none;
}

.page-id-13 .tb-sched-brand-copy + .tb-sched-photo-quote {
	margin-top: 9px;
}

.page-id-13 .tb-sched-photo-tag::before {
	content: "";
	display: block;
	width: 44px;
	height: 44px;
	margin: 0 auto 8px;
	border: 2px solid #d29b16;
	border-radius: 50%;
	background: linear-gradient(135deg, transparent 42%, #d29b16 43% 48%, transparent 49%), linear-gradient(315deg, transparent 42%, #087f86 43% 48%, transparent 49%);
	box-shadow: inset 0 0 0 7px rgba(210, 155, 22, .08);
}

.page-id-13 .tb-sched-photo-tag .elementor-heading-title {
	color: #17202d !important;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 16px !important;
	font-weight: 600 !important;
	line-height: 1.05 !important;
	letter-spacing: .4px !important;
	text-transform: uppercase;
}

.page-id-13 .tb-sched-photo-tag span,
.page-id-13 .tb-sched-photo-tag small {
	color: #087f86;
	font-family: Fraunces, Georgia, serif;
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 1px;
}

.page-id-13 .tb-sched-photo-tag strong {
	display: block;
	margin-top: 8px;
	color: #d29b16;
	font-family: Allura, cursive;
	font-size: 28px;
	font-weight: 400;
	line-height: .9;
	letter-spacing: 0;
	text-transform: none;
}

.page-id-13 .tb-sched-photo-quote .elementor-heading-title {
	color: #087f86 !important;
	font-size: 17px !important;
	line-height: 1.15 !important;
	text-align: center !important;
	text-shadow: none !important;
}


.page-id-13 .tb-sched-info-title {
	padding-top: 72px;
}

.page-id-13 .tb-sched-info-title .elementor-heading-title,
.page-id-13 .tb-sched-info-body p {
	text-transform: uppercase;
	letter-spacing: .25px;
}

.page-id-13 .tb-sched-info-title::after,
.page-id-13 .tb-sched-info-lede::before {
	content: "";
	display: block;
	width: 46px;
	height: 2px;
	margin: 13px auto 0;
	background: #d29b16;
}

.page-id-13 .tb-sched-info-lede {
	border-top: 0 !important;
	padding-top: 0 !important;
}

.page-id-13 .tb-sched-info-lede::before {
	margin: 0 auto 13px;
}

@media (min-width: 768px) {
	.page-id-13 .tb-sched-col-photo > .e-con-inner {
		padding-top: 12px !important;
	}

	.page-id-13 .tb-sched-info-title .elementor-heading-title {
		font-size: 18px !important;
	}

	.page-id-13 .tb-sched-info-body p {
		font-family: Fraunces, Georgia, serif !important;
		font-size: 13px !important;
	}

	.page-id-13 .tb-sched-col-list {
		position: relative;
		isolation: isolate;
		overflow: hidden;
	}

	.page-id-13 .tb-sched-col-list::after {
		content: "";
		position: absolute;
		z-index: -1;
		right: 0;
		bottom: 0;
		width: 34%;
		height: 39%;
		clip-path: polygon(100% 0, 100% 100%, 0 100%);
		background: linear-gradient(rgba(8, 127, 134, .12), rgba(8, 127, 134, .12)), url("assets/skedule-corner.jpg") center / cover no-repeat;
		border-left: 1px solid #d29b16;
	}

	.page-id-13 .tb-sched-col-list > .e-con-inner {
		position: relative;
		z-index: 1;
	}
}

@media (max-width: 767px) {
	.page-id-13 .tb-sched-photo-tag::before {
		width: 38px;
		height: 38px;
	}

	.page-id-13 .tb-sched-photo-tag strong {
		font-size: 25px;
	}

	.page-id-13 .tb-sched-info-title {
		padding-top: 58px;
	}
}

/* Annotation refinements: edge-to-edge triptych, script quote, roomier dates */
.page-id-13 .tb-schedule-main {
	padding-right: 0 !important;
	padding-left: 0 !important;
}

.page-id-13 .tb-schedule-content {
	width: 100% !important;
	padding-right: 0 !important;
	padding-left: 0 !important;
}

.page-id-13 .tb-schedule-content > .e-con-inner,
.page-id-13 .tb-schedule-grid,
.page-id-13 .tb-schedule-grid > .e-con-inner {
	width: 100% !important;
	max-width: none !important;
	padding-right: 0 !important;
	padding-left: 0 !important;
}

.page-id-13 .tb-schedule-grid {
	border-right: 0 !important;
	border-left: 0 !important;
	border-radius: 18px !important;
	overflow: hidden !important;
}

.page-id-13 .tb-sched-hero-quote .elementor-heading-title {
	font-family: Allura, cursive !important;
	font-size: 45px !important;
	font-weight: 400 !important;
	line-height: .9 !important;
	text-align: center !important;
	transform: rotate(-4deg);
	transform-origin: center;
}

@media (min-width: 768px) {
	.page-id-13 .tbt-schedule-row {
		min-height: 34px !important;
		padding-top: 4px !important;
		padding-bottom: 4px !important;
	}

	.page-id-13 .tbt-schedule-date {
		min-width: 96px !important;
		padding: 6px 8px !important;
		line-height: 1.3 !important;
	}
}

@media (max-width: 767px) {
	.page-id-13 .tb-schedule-main {
		padding-right: 0 !important;
		padding-left: 0 !important;
	}

	.page-id-13 .tb-sched-hero-quote .elementor-heading-title {
		font-size: 35px !important;
	}

	.page-id-13 .tbt-schedule-date {
		padding: 7px 9px !important;
	}
}

/* Page surface — the Kampus background: cream #f8f5ef with its faint paper
   texture (two sets of concentric rings, anchored to the element).

   This is the default for every page, so any page created later inherits it
   without extra work, whichever template it uses: default-template pages get it
   on main.site-main, Elementor full-width pages on their wp-page wrapper.
   Opted out, because it carries its own treatment:
   home (12).
   Kampus (19) keeps its own texture on .tb-kampus-main.
   To opt another page out, add its body class to both :not() chains below. */
body.page:not(.home),
body.single-tour {
	background-color: #f8f5ef;
}

body.page:not(.home) > main.site-main,
body.page:not(.home):not(.page-id-19) [data-elementor-type="wp-page"],
.page-id-19 .tb-kampus-main,
body.single-tour .tb-tour-page {
	background-color: #f8f5ef;
	background-image: repeating-radial-gradient(ellipse at 0 22%, transparent 0 38px, rgba(50, 83, 71, .025) 39px 40px, transparent 41px 59px), repeating-radial-gradient(ellipse at 100% 58%, transparent 0 45px, rgba(50, 83, 71, .025) 46px 47px, transparent 48px 70px);
}

/* Kampus — tropical editorial landing page */
.page-id-19 {
	background: #f6f2e9;
	color: #17202d;
}

.page-id-19 .elementor-location-header {
	height: 136px;
}

.page-id-19 .elementor-element-tbtsec1 {
	padding: 22px 30px !important;
}

.page-id-19 .site-main,
.page-id-19 .page-content,
.page-id-19 .entry-content {
	max-width: none;
	margin: 0;
	padding: 0;
}

.tb-kampus-hero {
	position: relative;
	width: 100%;
	height: 590px;
	min-height: 590px !important;
	margin: 0;
	padding: 150px 55px 60px;
}

.tb-kampus-hero .wp-block-cover__background {
	background: linear-gradient(90deg, rgba(4, 13, 16, .72) 0%, rgba(4, 13, 16, .36) 37%, rgba(4, 13, 16, .08) 72%, rgba(4, 13, 16, .22) 100%) !important;
	opacity: 1 !important;
}

.tb-kampus-hero .wp-block-cover__inner-container {
	position: relative;
	display: flex;
	width: min(1240px, 100%);
	height: 100%;
	margin: 0 auto;
	align-items: center;
}

.tb-kampus-hero-inner {
	width: 56%;
	margin: 0 !important;
}

.tb-kampus-eyebrow {
	margin: 0 0 12px;
	color: #fff;
	font-family: Jost, sans-serif !important;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 1.4px;
	text-transform: uppercase;
	text-shadow: 0 2px 8px rgba(0, 0, 0, .65);
}

.tb-kampus-eyebrow::before {
	content: "";
	display: inline-block;
	width: 46px;
	height: 2px;
	margin-right: 14px;
	background: #d29b16;
	vertical-align: middle;
}

.tb-kampus-title {
	margin: 0 0 8px;
	color: #fff;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 68px !important;
	font-weight: 400 !important;
	line-height: .92 !important;
	letter-spacing: -1.5px;
	text-shadow: 0 3px 20px rgba(0, 0, 0, .45);
}

.tb-kampus-lead {
	margin: 0;
	color: #fff;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 19px;
	line-height: 1.25;
	text-shadow: 0 2px 8px rgba(0, 0, 0, .72);
}

.tb-kampus-quote {
	position: absolute;
	right: 1.5%;
	bottom: 10px;
	margin: 0;
	color: #fff;
	font-family: Allura, cursive !important;
	font-size: 42px;
	line-height: .86;
	text-align: center;
	text-shadow: 0 2px 8px rgba(0, 0, 0, .75);
	transform: rotate(-6deg);
}

.page-id-19 .tb-kampus-main {
	position: relative;
	z-index: 2;
	width: 100%;
	margin-top: -34px;
	padding: 46px max(24px, calc((100vw - 1240px) / 2)) 115px;
	border-radius: 52% 52% 0 0 / 34px 34px 0 0;
	/* surface colour and paper texture come from the page-surface rule above */
	overflow: hidden;
}

/* The blurred green blob decoration that used to sit in the bottom corners of
   the Kampus content is gone; the footer foliage carries that now. */

.page-id-19 .tb-programme-section,
.page-id-19 .tb-kampus-info-grid,
.page-id-19 .tb-kampus-cta {
	width: 100%;
	max-width: 1240px;
	margin-right: auto;
	margin-left: auto;
}

.page-id-19 .tb-section-kicker {
	position: relative;
	width: fit-content;
	margin: 0 auto 3px;
	color: #c98d08;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 14px;
	line-height: 1;
}

.page-id-19 .tb-section-kicker::before,
.page-id-19 .tb-section-kicker::after {
	content: "";
	position: absolute;
	top: 50%;
	width: 72px;
	height: 2px;
	background: #d29b16;
}

.page-id-19 .tb-section-kicker::before {
	right: calc(100% + 12px);
}

.page-id-19 .tb-section-kicker::after {
	left: calc(100% + 12px);
}

.page-id-19 .tb-section-title {
	margin: 0 0 14px;
	color: #17202d !important;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 32px !important;
	font-weight: 500 !important;
	line-height: 1.1 !important;
	letter-spacing: .3px;
}

.page-id-19 .tb-kampus-info-grid {
	gap: 14px;
	margin-top: 18px;
	align-items: stretch;
}

.page-id-19 .tb-kampus-info-grid > .wp-block-column {
	display: flex;
}

.page-id-19 .tb-kampus-card {
	width: 100%;
	padding: 22px 26px;
	border: 1px solid rgba(46, 75, 74, .09);
	border-radius: 18px;
	background: rgba(255, 253, 250, .97);
	box-shadow: 0 8px 22px rgba(27, 44, 39, .06);
}

.page-id-19 .tb-kampus-card > * {
	max-width: none;
}

.page-id-19 .tb-card-heading {
	position: relative;
	margin: 0 0 14px;
	padding-left: 66px;
	color: #c98d08 !important;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 24px !important;
	font-weight: 500 !important;
	line-height: 1.15 !important;
}

.page-id-19 .tb-card-heading::before {
	content: "";
	position: absolute;
	left: 0;
	top: .58em;
	width: 50px;
	height: 2px;
	background: #d29b16;
}

.page-id-19 .tb-kampus-card p,
.page-id-19 .tb-kampus-card li {
	font-family: Fraunces, Georgia, serif !important;
	font-size: 14px;
	line-height: 1.32;
}

.page-id-19 .tb-kampus-card p {
	margin: 0 0 13px;
}

.page-id-19 .tb-list-label {
	margin-bottom: 2px !important;
}

.page-id-19 .tb-campus-list {
	gap: 14px;
	margin: 0 0 13px;
}

.page-id-19 .tb-kampus-card ul {
	margin: 0;
	padding-left: 20px;
}

.page-id-19 .tb-kampus-card li::marker {
	color: #d29b16;
}

.page-id-19 .tb-kampus-cta {
	position: relative;
	z-index: 2;
	padding-top: 14px;
}

.page-id-19 .elementor-19 .tb-kampus-cta p {
	margin-bottom: 16px;
	color: #17202d !important;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 16px !important;
	line-height: 1.6;
}

.page-id-19 .tb-kampus-cta a:not(.wp-element-button) {
	color: #17202d;
}

.page-id-19 .tb-kampus-buttons {
	width: min(760px, 100%);
	margin: 0 auto;
}

.page-id-19 .tb-kampus-button .wp-element-button {
	min-width: 190px;
	padding: 13px 25px;
	border: 2px solid #d29b16;
	border-radius: 999px;
	background: #060606;
	color: #fff;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 16px;
	line-height: 1;
	text-align: center;
	transition: background .2s ease, color .2s ease;
}

.page-id-19 .tb-kampus-button .wp-element-button:hover,
.page-id-19 .tb-kampus-button .wp-element-button:focus-visible {
	background: #d29b16;
	color: #060606;
}

/* Elementor-native Kampus compatibility */
.tb-kampus-page,
.tb-silabus-page {
	padding: 0 !important;
	gap: 0;
}

.tb-kampus-eyebrow .elementor-heading-title {
	color: #fff;
	font: 600 12px/1 Jost, sans-serif;
	letter-spacing: 1.4px;
}

.tb-kampus-title .elementor-heading-title {
	color: #fff;
	font-family: Fraunces, Georgia, serif;
	font-size: 68px;
	font-weight: 400;
	line-height: .92;
}

.tb-kampus-lead p {
	margin: 0;
	color: #fff;
	font-family: Fraunces, Georgia, serif;
	font-size: 19px;
	line-height: 1.25;
}

.page-id-19 .tb-kampus-quote .elementor-heading-title {
	color: #fff !important;
	font-family: Allura, cursive !important;
	font-style: normal !important;
	font-weight: 400 !important;
	font-size: 42px !important;
	line-height: .86 !important;
	text-shadow: 0 2px 8px rgba(0, 0, 0, .75);
}

.page-id-19 .tb-section-kicker .elementor-heading-title {
	color: #c98d08;
	font-family: Fraunces, Georgia, serif;
	font-size: 14px;
}

.page-id-19 .elementor-19 .tb-section-title .elementor-heading-title {
	color: #17202d !important;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 32px !important;
	font-weight: 500 !important;
	line-height: 1.1 !important;
}

.page-id-19 .elementor-19 .tb-card-heading .elementor-heading-title {
	color: #c98d08 !important;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 24px !important;
	font-weight: 500 !important;
	line-height: 1.15 !important;
}

.page-id-19 .tb-campus-list-ele {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px;
	margin-bottom: 13px;
}

.page-id-19 .elementor-19 .tb-kampus-button .elementor-button {
	min-width: 190px;
	padding: 13px 25px;
	border: 2px solid #d29b16;
	border-radius: 999px;
	background: #060606;
	color: #fff !important;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 16px;
	line-height: 1;
	letter-spacing: .04em;
	text-transform: uppercase;
	transition: background .2s ease, color .2s ease;
}

.page-id-19 .elementor-19 .tb-kampus-button .elementor-button:hover,
.page-id-19 .elementor-19 .tb-kampus-button .elementor-button:focus-visible {
	background: #d29b16;
	color: #060606 !important;
}

@media (max-width: 1024px) {
	.page-id-19 .tb-kampus-info-grid {
		flex-wrap: wrap;
	}

	.page-id-19 .tb-kampus-info-grid > .wp-block-column {
		flex-basis: 100% !important;
	}
}

@media (max-width: 767px) {
	.page-id-19 .elementor-location-header {
		height: 118px !important;
	}

	.page-id-19 .elementor-element-tbtsec1 {
		padding: 14px 16px !important;
	}

	.page-id-19 .elementor-element-tbtcol1 {
		display: flex !important;
		width: 58% !important;
	}

	.page-id-19 .elementor-element-tbtcol2 {
		display: none;
	}

	.page-id-19 .elementor-element-feb2ed6 {
		display: flex !important;
		width: 42% !important;
	}

	.page-id-19 .elementor-element-93e2ff8 .elementor-button {
		padding: 10px 13px !important;
		font-size: 10px !important;
	}

	.page-id-19 .elementor-element-tbtlogo1 .elementor-icon-box-title {
		font-size: 17px !important;
	}

	.tb-kampus-hero {
		height: 620px;
		min-height: 620px !important;
		padding: 150px 24px 44px;
	}

	.tb-kampus-hero .wp-block-cover__image-background {
		object-position: 53% center;
	}

	.tb-kampus-hero-inner {
		width: 100%;
		align-self: flex-end;
	}

	.tb-kampus-title,
	.tb-kampus-title .elementor-heading-title {
		font-size: 44px !important;
	}

	.tb-kampus-lead,
	.tb-kampus-lead p {
		font-size: 16px;
	}

	.tb-kampus-quote {
		display: none;
	}

	.page-id-19 .tb-kampus-main {
		margin-top: -26px;
		padding: 40px 14px 100px;
		border-radius: 50% 50% 0 0 / 24px 24px 0 0;
	}

	.page-id-19 .tb-section-kicker {
		font-size: 12px;
	}

	.page-id-19 .tb-section-kicker::before,
	.page-id-19 .tb-section-kicker::after {
		width: 35px;
	}

	.page-id-19 .tb-section-title,
	.page-id-19 .elementor-19 .tb-section-title .elementor-heading-title {
		font-size: 26px !important;
	}

	.page-id-19 .tb-kampus-card {
		padding: 20px 17px;
		border-radius: 14px;
	}

	.page-id-19 .tb-card-heading {
		padding-left: 48px;
	}

	.page-id-19 .elementor-19 .tb-card-heading .elementor-heading-title {
		font-size: 21px !important;
	}

	.page-id-19 .tb-card-heading::before {
		width: 36px;
	}

	.page-id-19 .tb-campus-list {
		gap: 0;
	}

	.page-id-19 .tb-campus-list-ele {
		grid-template-columns: 1fr;
		gap: 0;
	}

	.page-id-19 .tb-kampus-buttons {
		gap: 12px;
		justify-content: center !important;
	}

	.page-id-19 .tb-kampus-button,
	.page-id-19 .tb-kampus-button .wp-element-button,
	.page-id-19 .tb-kampus-button .elementor-button {
		width: 100%;
	}
}

@media (prefers-reduced-motion: reduce) {
	.page-id-19 .tb-kampus-button .wp-element-button,
	.page-id-19 .tb-kampus-button .elementor-button {
		transition: none;
	}
}

/* ============================================================
   Global footer band
   A warm cream strip: gold rules flanking outlined social
   circles, the MENSE • PLEKKE • VERHALE tagline to the right,
   and an out-of-focus bush bleeding in from both bottom corners.
   ============================================================ */
.elementor-location-footer .tb-footer-band {
	--tb-soc: 44px;
	--tb-socgap: 5px;
	--tb-rule: 110px;
	--tb-icongap: 16px;
	--tb-tailgap: 50px;
	--tb-row: calc(4 * var(--tb-soc) + 3 * var(--tb-socgap));
	--tb-pad: clamp(38px, 3.4vw, 64px);
	--tb-pad-x: 40px;
	--tb-band-h: calc(var(--tb-pad) * 2 + 20px + var(--tb-soc));
	--tb-bush-w: calc(var(--tb-band-h) * 1.1);
	position: relative;
	overflow: hidden;
	padding: var(--tb-pad) var(--tb-pad-x) !important;
	/* Same surface as the Kampus page content, so the band reads as its continuation.
	   No texture here: the page texture above is anchored to that element, so a
	   second one would break the pattern at the join. */
	background-color: #f8f5ef;
}

/* Blurred foliage in both bottom corners: one cut-out per corner, each sized to
   contain the band's full height, so the bushes keep their natural proportions
   and the leaf tips run off the top edge the way they do in the source. */
.elementor-location-footer .tb-footer-band::before,
.elementor-location-footer .tb-footer-band::after {
	content: "";
	position: absolute;
	bottom: 0;
	width: var(--tb-bush-w);
	height: var(--tb-band-h);
	background-repeat: no-repeat;
	background-size: auto 100%;
	filter: blur(3px);
	pointer-events: none;
}

.elementor-location-footer .tb-footer-band::before {
	left: 0;
	background-image: url(assets/footer-bush-left.png);
	background-position: left bottom;
}

.elementor-location-footer .tb-footer-band::after {
	right: 0;
	background-image: url(assets/footer-bush-right.png);
	background-position: right bottom;
}

/* One row: rule · circles · rule · tagline.
   Elementor gives container children `width: calc((1 - flex-grow) * 100%)`
   (0%), which they recover only through flex-grow — so the row is a plain
   flex row: the two side slots grow equally, so the circles stay centred,
   and the rule is pushed to each slot's inner edge. */
.elementor-location-footer .tb-footer-inner > .e-con-inner {
	position: relative;
	z-index: 2;
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	gap: 0;
}

.elementor-location-footer .tb-footer-band .elementor-widget {
	width: auto;
}

.elementor-location-footer .tb-footer-inner > .e-con-inner > .tb-footer-head,
.elementor-location-footer .tb-footer-inner > .e-con-inner > .tb-footer-tail {
	flex: 1 1 0;
	min-width: 0;
}

.elementor-location-footer .tb-footer-inner > .e-con-inner > .tb-footer-socials {
	flex: 0 0 auto;
}

/* Left slot, mirroring the tail: the tagline holds the row's left edge and the
   rule is pushed to the slot's inner edge, so the circles stay dead centre. */
.elementor-location-footer .tb-footer-head {
	padding: 0 var(--tb-icongap) 0 0 !important;
}

.elementor-location-footer .tb-footer-head > .e-con-inner {
	display: flex;
	align-items: center;
	gap: var(--tb-tailgap);
	width: 100%;
	max-width: none;
	padding: 0;
}

.elementor-location-footer .tb-footer-head > .e-con-inner > .tb-footer-rule {
	flex: 0 0 auto;
	margin-left: auto;
}

.elementor-location-footer .tb-footer-head > .e-con-inner > .tb-footer-tagline {
	flex: 0 0 auto;
}

.elementor-location-footer .tb-footer-tail {
	padding: 0 0 0 var(--tb-icongap) !important;
}

.elementor-location-footer .tb-footer-tail > .e-con-inner {
	display: flex;
	align-items: center;
	gap: var(--tb-tailgap);
	width: 100%;
	max-width: none;
	padding: 0;
}

.elementor-location-footer .tb-footer-tail > .e-con-inner > .tb-footer-rule {
	flex: 0 0 auto;
}

/* The credit holds the right edge where the tagline used to sit. */
.elementor-location-footer .tb-footer-tail > .e-con-inner > .tb-footer-credit {
	flex: 0 0 auto;
	margin-left: auto;
}

.elementor-location-footer .tb-footer-credit .elementor-heading-title {
	margin: 0;
	color: #17202d;
	font-family: Jost, sans-serif !important;
	font-size: 10px;
	font-weight: 500;
	/* capped and tracked to sit as the tagline's opposite number in the row */
	letter-spacing: 2.6px;
	line-height: 1;
	text-transform: uppercase;
}

/* The whole credit is the link, so it is one target rather than a word inside
   a sentence. */
.elementor-location-footer .tb-footer-credit .elementor-heading-title a {
	color: inherit;
	text-decoration: none;
	transition: color .2s ease;
}

.elementor-location-footer .tb-footer-credit .elementor-heading-title a:hover,
.elementor-location-footer .tb-footer-credit .elementor-heading-title a:focus-visible {
	color: #b8860f;
}

.elementor-location-footer .tb-footer-rule .elementor-divider {
	flex: 0 0 auto;
	width: var(--tb-rule);
}

.elementor-location-footer .tb-footer-rule .elementor-divider-separator {
	width: 100%;
	border-top: 1px solid #c9a24b;
}

/* Outlined circles with ink glyphs */
.elementor-location-footer .tb-footer-band .tb-footer-socials .elementor-social-icons-wrapper {
	column-gap: var(--tb-socgap) !important;
}

.elementor-location-footer .tb-footer-band .tb-footer-socials .elementor-social-icon {
	width: var(--tb-soc) !important;
	height: var(--tb-soc) !important;
	background-color: transparent !important;
	border: 1.5px solid #17202d;
	color: #17202d !important;
	font-size: 18px !important;
	transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}

.elementor-location-footer .tb-footer-band .tb-footer-socials .elementor-social-icon svg {
	fill: currentColor;
}

.elementor-location-footer .tb-footer-band .tb-footer-socials .elementor-social-icon:hover,
.elementor-location-footer .tb-footer-band .tb-footer-socials .elementor-social-icon:focus-visible {
	background-color: #17202d !important;
	border-color: #17202d;
	color: #f6f2e9 !important;
}

.elementor-location-footer .tb-footer-tagline .elementor-heading-title {
	margin: 0;
	color: #17202d;
	font-family: Jost, sans-serif !important;
	font-size: 10px;
	font-weight: 500;
	letter-spacing: 2.6px;
	line-height: 1;
	text-transform: uppercase;
}

@media (max-width: 1200px) {
	.elementor-location-footer .tb-footer-band {
		--tb-soc: 42px;
		--tb-rule: 84px;
		--tb-icongap: 14px;
		--tb-tailgap: 30px;
	}

	.elementor-location-footer .tb-footer-tagline .elementor-heading-title,
	.elementor-location-footer .tb-footer-credit .elementor-heading-title {
		letter-spacing: 2.2px;
	}
}

/* Tablet and below: the row cannot hold both a rule and the tagline,
   so the circles keep the centre and the rule + tagline sit under them. */
@media (max-width: 1024px) {
	.elementor-location-footer .tb-footer-band {
		--tb-rule: 56px;
		--tb-tailgap: 16px;
		--tb-pad: 34px;
		--tb-pad-x: 24px;
	}

	.elementor-location-footer .tb-footer-inner > .e-con-inner {
		flex-direction: column;
		gap: 18px;
	}

	/* Stacked: circles, then the tagline, then the rule and the credit. The rule
	   beside the tagline is dropped here — it has no flank to sit against. */
	.elementor-location-footer .tb-footer-inner > .e-con-inner > .tb-footer-socials {
		order: 1;
	}

	.elementor-location-footer .tb-footer-inner > .e-con-inner > .tb-footer-head {
		order: 2;
	}

	.elementor-location-footer .tb-footer-inner > .e-con-inner > .tb-footer-tail {
		order: 3;
	}

	.elementor-location-footer .tb-footer-head,
	.elementor-location-footer .tb-footer-tail {
		flex: 0 0 auto;
		padding: 0 !important;
	}

	.elementor-location-footer .tb-footer-head > .e-con-inner,
	.elementor-location-footer .tb-footer-tail > .e-con-inner {
		justify-content: center;
	}

	.elementor-location-footer .tb-footer-head > .e-con-inner > .tb-footer-rule {
		display: none;
	}

	.elementor-location-footer .tb-footer-tail > .e-con-inner > .tb-footer-credit {
		margin-left: 0;
	}

	.elementor-location-footer .tb-footer-band::before,
	.elementor-location-footer .tb-footer-band::after {
		filter: blur(2.5px);
	}
}

@media (max-width: 767px) {
	.elementor-location-footer .tb-footer-band {
		--tb-soc: 40px;
		--tb-tailgap: 14px;
		--tb-pad: 28px;
		--tb-pad-x: 20px;
	}

	.elementor-location-footer .tb-footer-tagline .elementor-heading-title,
	.elementor-location-footer .tb-footer-credit .elementor-heading-title {
		letter-spacing: 2px;
	}

	.elementor-location-footer .tb-footer-band::before,
	.elementor-location-footer .tb-footer-band::after {
		filter: blur(2px);
	}
}

@media (prefers-reduced-motion: reduce) {
	.elementor-location-footer .tb-footer-socials .elementor-social-icon {
		transition: none;
	}
}

/* === Sillabusse section — [toerbroers_silabus] (plugin: toerbroers-sillabus) ===
   One tab per Silabus post, one card per tab. Markup is plugin HTML, so the
   styles live here with the rest of the site's design system: cream paper,
   gold rules, Fraunces display, Jost labels, Allura for the handwritten note.
   Without JavaScript every panel is visible and the tabs work as anchors;
   .is-enhanced (added by the script) is what turns them into tabs. */
.tb-silabus {
	--tb-sil-gold: #d29b16;
	--tb-sil-gold-deep: #b8860f;
	--tb-sil-ink: #17202d;
	--tb-sil-teal: #087f86;
	--tb-sil-paper: #fffdfa;
	--tb-sil-cream: #f6f2e9;
	--tb-sil-line: rgba(23, 32, 45, .12);
	--tb-sil-card: clamp(26px, 3vw, 38px);
	padding: clamp(56px, 6vw, 96px) clamp(20px, 4vw, 44px) clamp(64px, 7vw, 108px);
}

.tb-silabus-inner {
	width: min(1240px, 100%);
	margin: 0 auto;
}

/* ---- section heading ---- */
.tb-silabus-kicker {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 16px;
	margin: 0 0 12px;
	color: var(--tb-sil-gold);
	font-family: Jost, sans-serif;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 3px;
	line-height: 1;
	text-transform: uppercase;
}

.tb-silabus-kicker::before,
.tb-silabus-kicker::after {
	content: "";
	display: block;
	width: 46px;
	height: 2px;
	background: var(--tb-sil-gold);
}

.tb-silabus-title {
	margin: 0 0 clamp(26px, 3vw, 40px);
	color: var(--tb-sil-ink);
	font-family: Fraunces, Georgia, serif;
	font-size: clamp(30px, 3.4vw, 44px);
	font-weight: 400;
	line-height: 1.04;
	letter-spacing: -.4px;
	text-align: center;
	text-transform: uppercase;
}

/* ---- tabs ---- */
.tb-silabus-tabs {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
	margin: 0 0 clamp(22px, 2.6vw, 34px);
}

.tb-sil-tab {
	display: inline-flex;
	align-items: center;
	padding: 13px 22px;
	border: 1px solid var(--tb-sil-line);
	border-radius: 10px;
	background: var(--tb-sil-cream);
	color: var(--tb-sil-ink);
	font-family: Jost, sans-serif;
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: 1.1px;
	line-height: 1;
	text-decoration: none;
	text-transform: uppercase;
	transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}

.tb-sil-tab:hover,
.tb-sil-tab:focus-visible {
	border-color: var(--tb-sil-gold);
}

.tb-sil-tab.is-active {
	border-color: var(--tb-sil-gold);
	background: var(--tb-sil-gold);
	color: var(--tb-sil-ink);
}

.tb-sil-panel {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(280px, 374px);
	margin: 0;
	border: 1px solid rgba(210, 155, 22, .5);
	border-radius: 20px;
	background: var(--tb-sil-paper);
	overflow: hidden;
}

.tb-sil-panel:focus {
	outline: none;
}

.tb-silabus.is-enhanced .tb-sil-panel {
	display: none;
}

.tb-silabus.is-enhanced .tb-sil-panel.is-active {
	display: grid;
}

/* ---- content column ----
   The bordered card box is .tb-sil-panel (it wraps both columns); the article
   inside it is the left column, so its own children simply stack. */
.tb-sil-card {
	min-width: 0;
}

.tb-sil-name {
	margin: 0;
	padding: var(--tb-sil-card) var(--tb-sil-card) 0;
	color: var(--tb-sil-teal);
	font-family: Fraunces, Georgia, serif;
	font-size: clamp(24px, 2.5vw, 32px);
	font-weight: 400;
	line-height: 1.08;
	letter-spacing: -.2px;
	text-transform: uppercase;
}

.tb-sil-duration {
	margin: 14px var(--tb-sil-card) 0;
	padding-bottom: 18px;
	border-bottom: 1px solid var(--tb-sil-line);
	color: var(--tb-sil-ink);
	font-family: Jost, sans-serif;
	font-size: 14.5px;
	line-height: 1.45;
}

.tb-sil-duration strong {
	font-weight: 600;
}

.tb-sil-duration-sep {
	color: rgba(23, 32, 45, .4);
}

.tb-sil-content-heading {
	margin: 22px var(--tb-sil-card) 0;
	color: var(--tb-sil-gold);
	font-family: Jost, sans-serif;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 2.4px;
	line-height: 1;
	text-transform: uppercase;
}

/* ---- brochure download row ---- */
.tb-sil-download {
	display: flex;
	gap: 16px;
	align-items: flex-start;
	margin: 18px var(--tb-sil-card) 0;
}

.tb-sil-badge {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: var(--tb-sil-gold);
	color: var(--tb-sil-paper);
}

.tb-sil-download-text {
	display: flex;
	flex-direction: column;
	gap: 3px;
}

.tb-sil-download-link {
	color: var(--tb-sil-teal);
	font-family: Jost, sans-serif;
	font-size: 15.5px;
	font-weight: 600;
	line-height: 1.3;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.tb-sil-download-link:hover {
	color: var(--tb-sil-gold-deep);
}

.tb-sil-download-note {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	color: var(--tb-sil-gold-deep);
	font-family: Jost, sans-serif;
	font-size: 14px;
	line-height: 1.3;
}

.tb-sil-download-meta {
	color: rgba(23, 32, 45, .5);
	font-family: Jost, sans-serif;
	font-size: 12px;
	letter-spacing: .6px;
	text-transform: uppercase;
}

/* ---- course content (headings get a gold icon badge) ---- */
.tb-sil-content {
	margin: clamp(20px, 2.4vw, 30px) var(--tb-sil-card) var(--tb-sil-card);
	color: var(--tb-sil-ink);
	font-family: Jost, sans-serif;
	font-size: 15.5px;
	line-height: 1.55;
}

.tb-sil-content > * + * {
	margin-top: 20px;
}

.tb-sil-content h2,
.tb-sil-content h3,
.tb-sil-content h4 {
	display: flex;
	align-items: center;
	gap: 16px;
	margin: 0;
	color: var(--tb-sil-ink);
	font-family: Jost, sans-serif;
	font-size: 15.5px;
	font-weight: 600;
	letter-spacing: .4px;
	line-height: 1.3;
}

.tb-sil-content ul,
.tb-sil-content ol {
	margin: 0;
	padding-left: 60px;
	list-style: none;
}

.tb-sil-content li {
	position: relative;
	margin: 0 0 9px;
}

.tb-sil-content li::before {
	content: "";
	position: absolute;
	top: .58em;
	left: -18px;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--tb-sil-gold);
}

/* ---- brochure panel ---- */
.tb-sil-aside {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: clamp(18px, 2vw, 26px);
	padding: clamp(26px, 2.8vw, 38px) clamp(20px, 2vw, 26px);
	border-left: 1px solid rgba(210, 155, 22, .3);
	background: var(--tb-sil-cream);
	text-align: center;
}

.tb-sil-cover {
	width: min(292px, 84%);
}

.tb-sil-cover-img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 6px;
	box-shadow: 0 18px 34px rgba(23, 32, 45, .22);
	transform: rotate(-2.5deg);
}

/* Placeholder brochure cover: built from the silabus name, so an entry with no
   cover image still reads as a brochure rather than a gap. */
.tb-sil-cover-placeholder {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	aspect-ratio: 3 / 4;
	padding: 12% 9%;
	border-radius: 6px;
	background: linear-gradient(158deg, #1d2b31 0%, #122026 52%, #0a1317 100%);
	box-shadow: 0 18px 34px rgba(23, 32, 45, .22);
	color: var(--tb-sil-paper);
	transform: rotate(-2.5deg);
}

.tb-sil-cover-mark {
	font-family: Jost, sans-serif;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 3px;
	text-transform: uppercase;
	opacity: .72;
}

.tb-sil-cover-name {
	margin: 0;
	padding: 14px 0;
	border-top: 1px solid rgba(210, 155, 22, .7);
	border-bottom: 1px solid rgba(210, 155, 22, .7);
	font-family: Fraunces, Georgia, serif;
	font-size: clamp(17px, 1.6vw, 22px);
	font-weight: 400;
	line-height: 1.14;
	letter-spacing: .5px;
	text-transform: uppercase;
}

.tb-sil-cover-tag {
	color: rgba(255, 253, 250, .65);
	font-family: Jost, sans-serif;
	font-size: 10px;
	letter-spacing: 2.2px;
	text-transform: uppercase;
}

.tb-sil-quote {
	position: relative;
	margin: 0;
	padding-bottom: 16px;
	color: var(--tb-sil-ink);
	font-family: Allura, cursive;
	font-size: clamp(22px, 2.3vw, 27px);
	font-weight: 400;
	line-height: 1;
	text-align: center;
	transform: rotate(-2deg);
}

.tb-sil-quote::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 50%;
	width: 112px;
	height: 9px;
	margin-left: -56px;
	border-bottom: 2px solid var(--tb-sil-gold);
	border-radius: 50%;
}

.tb-sil-button {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin-top: auto;
	padding: 15px 26px;
	border-radius: 8px;
	background: var(--tb-sil-gold);
	color: var(--tb-sil-ink);
	font-family: Jost, sans-serif;
	font-size: 12.5px;
	font-weight: 600;
	letter-spacing: 1.6px;
	line-height: 1;
	text-decoration: none;
	text-transform: uppercase;
	transition: background-color .2s ease;
}

.tb-sil-button:hover,
.tb-sil-button:focus-visible {
	background: var(--tb-sil-gold-deep);
	color: var(--tb-sil-paper);
}

/* ---- responsive ---- */
@media (max-width: 1024px) {
	.tb-sil-panel {
		grid-template-columns: 1fr;
	}

	.tb-sil-aside {
		border-top: 1px solid rgba(210, 155, 22, .3);
		border-left: 0;
	}

	.tb-sil-cover {
		width: min(260px, 68%);
	}

	.tb-sil-button {
		margin-top: 0;
	}
}

@media (max-width: 767px) {
	.tb-silabus-tabs {
		flex-wrap: nowrap;
		justify-content: flex-start;
		padding-bottom: 6px;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	.tb-silabus-tabs::-webkit-scrollbar {
		display: none;
	}

	.tb-sil-tab {
		flex: 0 0 auto;
	}

	.tb-sil-content ul,
	.tb-sil-content ol {
		padding-left: 46px;
	}

	.tb-sil-content li::before {
		left: -14px;
	}

	.tb-sil-quote {
		transform: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tb-sil-tab,
	.tb-sil-button {
		transition: none;
	}
}

/* ==========================================================================
   Program single page — /programme/<slug>/

   One Elementor single template (261 "Single Program") drives every programme
   page, so this block styles all four at once, and any programme added later.
   The hero reuses the Kampus hero classes and inherits their rules; below is
   the body, the cross links and the closing call to action, on the same cream
   surface as the rest of the site.
   ========================================================================== */
body.single-programme {
	background-color: #f8f5ef;
}

body.single-programme .tb-programme-page,
body.single-programme .tb-programme-main {
	background-color: #f8f5ef;
	background-image: repeating-radial-gradient(ellipse at 0 22%, transparent 0 38px, rgba(50, 83, 71, .025) 39px 40px, transparent 41px 59px), repeating-radial-gradient(ellipse at 100% 58%, transparent 0 45px, rgba(50, 83, 71, .025) 46px 47px, transparent 48px 70px);
}

body.single-programme .tb-programme-page {
	--tb-prg-gold: #d29b16;
	--tb-prg-gold-deep: #b8860f;
	--tb-prg-ink: #17202d;
	--tb-prg-teal: #087f86;
	--tb-prg-paper: #fffdfa;
	--tb-prg-body: #3f4a58;
	--tb-prg-line: rgba(23, 32, 45, .12);
	width: 100%;
	padding: 74px 55px 0;
}

/* One reading column, the same on every programme page. */
/* Breathing room between the hero and the programme body. */
.tb-programme-main {
	padding-top: 96px;
}

.tb-programme-main > .elementor-element {
	width: min(880px, 100%);
	margin-inline: auto;
}

/* ---- the body ---- */
.tb-programme-body {
	font-family: Jost, sans-serif;
	color: var(--tb-prg-body);
}

.tb-programme-body p {
	margin: 0 0 20px;
	font-size: 17px;
	font-weight: 400;
	line-height: 1.75;
	letter-spacing: .2px;
}

.tb-programme-body h2 {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 54px 0 18px;
	font-family: Fraunces, Georgia, serif;
	font-size: clamp(24px, 2.6vw, 30px);
	font-weight: 400;
	line-height: 1.15;
	letter-spacing: -.3px;
	color: var(--tb-prg-teal);
}

.tb-programme-body h2::before {
	content: '';
	flex: none;
	width: 46px;
	height: 2px;
	background: var(--tb-prg-gold);
}

.tb-programme-body h2:first-of-type {
	margin-top: 0;
}

.tb-programme-body ul {
	margin: 0 0 24px;
	padding-left: 22px;
	list-style: none;
}

.tb-programme-body ul li {
	position: relative;
	margin: 0 0 10px;
	font-size: 17px;
	line-height: 1.65;
}

.tb-programme-body ul li::before {
	content: '';
	position: absolute;
	top: 10px;
	left: -18px;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--tb-prg-gold);
}

.tb-programme-body a {
	color: var(--tb-prg-teal);
	text-decoration: underline;
	text-decoration-color: rgba(8, 127, 134, .35);
	text-underline-offset: 3px;
	transition: color .2s ease, text-decoration-color .2s ease;
}

.tb-programme-body a:hover,
.tb-programme-body a:focus-visible {
	color: var(--tb-prg-gold-deep);
	text-decoration-color: var(--tb-prg-gold);
}

/* ---- cross links to the other programmes ---- */
.tb-programme-others {
	margin: 46px 0 0;
	padding-top: 30px;
	border-top: 1px solid var(--tb-prg-line);
}

.tb-programme-others-label {
	margin: 0 0 16px;
	font-family: Jost, sans-serif;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 1.6px;
	text-transform: uppercase;
	color: rgba(23, 32, 45, .62);
}

.tb-programme-others-list {
	display: flex;
	flex-wrap: wrap;
	gap: 12px 34px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.tb-programme-others-list li {
	margin: 0;
}

.tb-programme-others-list a {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: Jost, sans-serif;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 1.6px;
	text-transform: uppercase;
	color: var(--tb-prg-ink);
	text-decoration: none;
	transition: color .2s ease;
}

.tb-programme-others-list a span {
	color: var(--tb-prg-gold);
}

.tb-programme-others-list a:hover,
.tb-programme-others-list a:focus-visible {
	color: var(--tb-prg-gold-deep);
}

/* ---- closing call to action ---- */
.tb-programme-cta {
	margin: 64px 0 0;
	padding: 44px 48px;
	border: 1px solid var(--tb-prg-line);
	border-radius: 18px;
	background: var(--tb-prg-paper);
	box-shadow: 0 14px 34px rgba(22, 28, 23, .06);
}

.tb-programme-cta-title .elementor-heading-title {
	margin: 0;
	font-family: Fraunces, Georgia, serif;
	font-size: clamp(24px, 2.6vw, 30px);
	font-weight: 400;
	line-height: 1.15;
	letter-spacing: -.3px;
	color: var(--tb-prg-teal);
}

.tb-programme-cta-text p {
	margin: 0;
	font-family: Jost, sans-serif;
	font-size: 16px;
	line-height: 1.7;
	color: var(--tb-prg-body);
}

.tb-programme-cta-buttons {
	width: 100%;
	margin-top: 6px;
}

.tb-programme-button .elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 210px;
	padding: 17px 30px;
	border: 0;
	border-radius: 999px;
	background: var(--tb-prg-ink);
	color: #f8f5ef;
	font-family: Jost, sans-serif;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 2.2px;
	text-transform: uppercase;
	transition: background-color .2s ease, color .2s ease;
}

.tb-programme-button .elementor-button:hover,
.tb-programme-button .elementor-button:focus-visible {
	background: var(--tb-prg-gold);
	color: #10202a;
}

/* Long single-word programme titles must clear the hero quote and the viewport
   (e.g. Wildplaasbestuur). The clamp keeps the size in step with the viewport so
   the title never runs under the quote on desktop nor off-screen on mobile. */
.tb-programme-page .tb-kampus-title .elementor-heading-title {
	font-size: clamp(34px, 4.4vw, 58px);
	white-space: normal;
	overflow-wrap: break-word;
}

/* The handwritten hero quote: the widget typography alone loses to the site's heading
   font, so every template that reuses the hero needs its own inner-heading rule. */
:is(.tb-programme-page, .tb-tour-page) .tb-kampus-quote .elementor-heading-title {
	font-family: Allura, cursive !important;
}

@media (max-width: 1024px) {
	.tb-programme-main {
		padding: 96px 34px 0;
	}

	.tb-programme-body h2 {
		margin-top: 44px;
	}

	.tb-programme-cta {
		padding: 36px 34px;
	}
}

@media (max-width: 767px) {
	.tb-programme-main {
		padding: 44px 22px 0;
	}

	.tb-programme-body p,
	.tb-programme-body ul li {
		font-size: 16px;
	}

	.tb-programme-body h2 {
		flex-direction: column;
		align-items: flex-start;
		gap: 8px;
	}

	.tb-programme-body h2::before {
		width: 30px;
	}

	.tb-programme-others-list {
		flex-direction: column;
		gap: 12px;
	}

	.tb-programme-cta {
		margin-top: 46px;
		padding: 28px 22px;
		border-radius: 14px;
	}

	.tb-programme-cta-buttons {
		gap: 12px;
	}

	.tb-programme-button,
	.tb-programme-button .elementor-button {
		width: 100%;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tb-programme-body a,
	.tb-programme-others-list a,
	.tb-programme-button .elementor-button {
		transition: none;
	}
}

/* ==========================================================================
   Single tour page — /toere/<slug>/
   Hero reuses .tb-kampus-hero for the frame and quote placement, with the
   tour-specific sizing and the breadcrumb / lead / meta row below it.
   ========================================================================== */

/* isolation: isolate gives the header its own stacking context. Without one,
   the scrim below (a negative-z-index pseudo) paints behind the Elementor
   background image instead of over it, which is why it was invisible. */
.tb-kampus-hero.tb-tour-hero {
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	height: 620px;
	min-height: 620px !important;
	padding: 150px 55px 62px;
	isolation: isolate;
}

/* Darkening scrim: flat black at 20% opacity, so the white copy stays legible
   over any tour photo. It is a negative-z-index pseudo, so the header must keep
   its own stacking context (isolation: isolate, above) or the scrim paints
   behind the photo and never shows. */
.tb-tour-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	background: rgba(0, 0, 0, .2);
}

/* Elementor's generated container CSS is a single class and loads after this
   stylesheet, so every layout rule here carries .tb-tour-page to outrank it.

   static, not relative: with the scrim painted behind everything the copy needs
   no stacking context, and leaving this wrapper unpositioned keeps the hero as
   the quote's containing block — which is what lets top: 50% put the quote in
   the hero's vertical middle rather than halfway down the copy block. */
.tb-tour-page .tb-tour-hero-inner {
	position: static;
	width: min(1240px, 100%);
	min-width: 0;
	margin: 0 auto;
}

/* The quote's containing block is the hero, so `bottom` is measured from the
   hero's own edge: add the hero's 62px bottom padding to keep the corner
   placement below 1200px exactly as it was. */
.tb-tour-hero .tb-kampus-quote {
	right: 1.5%;
	bottom: 72px;
}

/* ---- breadcrumb ---- */
/* The two gold rules flanking the crumb are flex items on the widget wrapper
   (the shared kicker rules further down), so a bottom margin on the label
   makes them centre on the label's *margin box* and sit ~9px below the words.
   The spacing therefore lives on the wrapper and the label carries none. */
.tb-tour-page .tb-tour-hero .elementor-element-t31crumb {
	margin-bottom: 18px;
}

.tbt-tour-breadcrumb {
	margin: 0;
	color: rgba(255, 255, 255, .92);
	font-family: Jost, sans-serif;
	font-size: 12.5px;
	font-weight: 500;
	letter-spacing: 1.6px;
	text-transform: uppercase;
	text-shadow: 0 2px 8px rgba(0, 0, 0, .6);
}

.tbt-tour-breadcrumb a {
	color: inherit;
	text-decoration: none;
}

.tbt-tour-breadcrumb a:hover,
.tbt-tour-breadcrumb a:focus-visible {
	color: #f2b91f;
}

.tbt-crumb-sep {
	margin: 0 10px;
	color: rgba(255, 255, 255, .55);
}

.tbt-crumb-current {
	color: #f2b91f;
}

/* ---- hero title, lead and meta ---- */
/* the measure is in px, not ch: a ch-based box lets a long title overrun it */
.tb-tour-title .elementor-heading-title {
	max-width: min(620px, 100%);
	margin: 0;
	color: #fff;
	font-family: Fraunces, Georgia, serif !important;
	font-size: clamp(40px, 5vw, 70px);
	font-weight: 400;
	line-height: .95;
	letter-spacing: -1.6px;
	text-transform: uppercase;
	overflow-wrap: break-word;
	text-shadow: 0 3px 20px rgba(0, 0, 0, .45);
}

.tbt-tour-lead {
	max-width: 46ch;
	margin: 20px 0 0;
	color: rgba(255, 255, 255, .95);
	font-family: Jost, sans-serif;
	font-size: 18px;
	line-height: 1.45;
	text-shadow: 0 2px 10px rgba(0, 0, 0, .62);
}

.tbt-tour-meta {
	display: flex;
	align-items: center;
	gap: 22px;
	margin: 26px 0 0;
	color: #fff;
	font-family: Jost, sans-serif;
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 1.5px;
	text-transform: uppercase;
	text-shadow: 0 2px 8px rgba(0, 0, 0, .6);
}

.tbt-meta-item {
	display: inline-flex;
	align-items: center;
	gap: 10px;
}

.tbt-meta-item--country::before {
	content: "";
	flex: none;
	width: 13px;
	height: 17px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23f2b91f' d='M12 2a7 7 0 0 0-7 7c0 5.2 7 13 7 13s7-7.8 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E") no-repeat center / contain;
}

.tbt-meta-item--duration {
	padding-left: 22px;
	border-left: 1px solid rgba(255, 255, 255, .35);
}

.tbt-meta-item--duration::before {
	content: "";
	flex: none;
	width: 15px;
	height: 15px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23f2b91f' d='M7 2h2v3H7zM15 2h2v3h-2z'/%3E%3Cpath fill='%23f2b91f' d='M4 5h16a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm1 5v9h14v-9z'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* ---- main two-column body ---- */
.tb-tour-page .tb-tour-main {
	width: min(1240px, 100%);
	margin: 0 auto;
	padding: 96px 55px 110px;
	align-items: flex-start;
}

/* basis 0 + min-width 0 so the copy yields to the 350px aside instead of
   wrapping below it on its own min-content width */
.tb-tour-page .tb-tour-content {
	flex: 1 1 0;
	min-width: 0;
}

.tb-tour-page .tb-tour-aside {
	flex: 0 0 350px;
	max-width: 100%;
	position: sticky;
	top: 32px;
}

/* the plugin's own root classes are the ones that actually reach the DOM here */
.tb-tour-page .tbt-tour-gallery,
.tb-tour-page .tbt-tour-overview {
	min-width: 0;
	max-width: 100%;
}

/* ---- "OOR DIE TOER" section title ---- */
.tb-tour-section-title .elementor-heading-title {
	display: flex;
	align-items: center;
	gap: 16px;
	margin: 0 0 18px;
	color: #087f86;
	font-family: Fraunces, Georgia, serif !important;
	font-size: clamp(24px, 2.6vw, 32px);
	font-weight: 400;
	line-height: 1.15;
	letter-spacing: -.3px;
	text-transform: uppercase;
}

.tb-tour-section-title .elementor-heading-title::before {
	content: "";
	flex: none;
	width: 46px;
	height: 2px;
	background: #d29b16;
}

/* ---- overview copy ---- */
.tb-tour-overview-wrap .tbt-tour-overview {
	color: #3f4a58;
	font-family: Jost, sans-serif;
	font-size: 17px;
	line-height: 1.75;
}

.tb-tour-overview-wrap .tbt-tour-overview p {
	margin: 0 0 18px;
}

.tb-tour-overview-wrap .tbt-tour-overview p:last-child {
	margin-bottom: 0;
}

/* ---- gallery row: 1 to 3+ images share the width ---- */
.tb-tour-gallery-wrap {
	margin-top: 34px;
}

.tbt-tour-gallery {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 18px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.tbt-tour-gallery .tbt-gallery-item {
	margin: 0;
}

.tbt-tour-gallery .tbt-gallery-image {
	display: block;
	width: 100%;
	height: 220px;
	object-fit: cover;
	border-radius: 16px;
}

/* Each tile is a link to the full-size photo. The link carries the rounded
   frame so the image can drift inside it on hover. */
.tbt-tour-gallery .tbt-gallery-link {
	display: block;
	position: relative;
	overflow: hidden;
	border-radius: 16px;
	cursor: zoom-in;
}

.tbt-tour-gallery .tbt-gallery-link .tbt-gallery-image {
	border-radius: 0;
	transition: transform .5s cubic-bezier(.22, .61, .36, 1);
}

.tbt-tour-gallery .tbt-gallery-link:hover .tbt-gallery-image {
	transform: scale(1.04);
}

.tbt-tour-gallery .tbt-gallery-link::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(transparent 62%, rgba(11, 18, 32, .42));
	opacity: 0;
	transition: opacity .25s ease;
	pointer-events: none;
}

.tbt-tour-gallery .tbt-gallery-link:hover::after,
.tbt-tour-gallery .tbt-gallery-link:focus-visible::after {
	opacity: 1;
}

.tbt-tour-gallery .tbt-gallery-link:focus-visible {
	outline: 3px solid #087f86;
	outline-offset: 3px;
}

/* The overflow gallery: same tiles, further down the page. A tour with four
   photos or fewer has no overflow, so its whole block is dropped. */
.tb-tour-extras {
	margin-top: 40px;
}

.tb-tour-extras:not(:has(.tbt-tour-gallery)) {
	display: none;
}

/* ---- photo lightbox ---- */
.tb-lightbox {
	position: fixed;
	inset: 0;
	z-index: 99990;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 72px 24px;
	background: rgba(8, 14, 24, .92);
	-webkit-backdrop-filter: blur(3px);
	backdrop-filter: blur(3px);
}

/* [hidden] is only a user-agent default: the flex above would beat it and
   leave an invisible overlay swallowing every click. */
.tb-lightbox[hidden] {
	display: none;
}

.tb-lightbox-figure {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	max-width: 100%;
	max-height: 100%;
	margin: 0;
}

.tb-lightbox-image {
	width: auto;
	height: auto;
	max-width: min(1400px, 100%);
	max-height: calc(100vh - 190px);
	border-radius: 12px;
	box-shadow: 0 30px 80px rgba(0, 0, 0, .55);
}

.tb-lightbox-image.is-loading {
	opacity: .35;
}

.tb-lightbox-caption {
	max-width: 60ch;
	color: rgba(255, 255, 255, .82);
	font-family: Jost, sans-serif;
	font-size: 14px;
	text-align: center;
}

.tb-lightbox-caption:empty {
	display: none;
}

.tb-lightbox-close,
.tb-lightbox-nav {
	position: absolute;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, .38);
	border-radius: 50%;
	background: rgba(255, 255, 255, .08);
	color: #fff;
	font-family: Jost, sans-serif;
	line-height: 1;
	cursor: pointer;
	transition: background .2s ease, border-color .2s ease, transform .2s ease;
}

.tb-lightbox-close {
	top: 26px;
	right: 28px;
	width: 46px;
	height: 46px;
	font-size: 26px;
}

.tb-lightbox-nav {
	top: 50%;
	width: 52px;
	height: 52px;
	font-size: 30px;
	transform: translateY(-50%);
}

.tb-lightbox-prev {
	left: 26px;
}

.tb-lightbox-next {
	right: 26px;
}

.tb-lightbox-close:hover,
.tb-lightbox-close:focus-visible,
.tb-lightbox-nav:hover,
.tb-lightbox-nav:focus-visible {
	background: #087f86;
	border-color: #087f86;
	outline: none;
}

.tb-lightbox-nav:focus-visible {
	transform: translateY(-50%) scale(1.06);
}

/* A single photo needs no arrows. */
.tb-lightbox:not(.has-nav) .tb-lightbox-nav {
	display: none;
}

/* The page behind must not scroll while the overlay is open. */
.tb-lightbox-open {
	overflow: hidden;
}

/* ---- mobile: a smaller overlay, tighter tiles ---- */
@media (max-width: 767px) {
	.tb-lightbox {
		padding: 64px 14px;
	}

	.tb-lightbox-close {
		top: 14px;
		right: 14px;
		width: 40px;
		height: 40px;
		font-size: 22px;
	}

	.tb-lightbox-nav {
		width: 42px;
		height: 42px;
		font-size: 24px;
	}

	.tb-lightbox-prev {
		left: 10px;
	}

	.tb-lightbox-next {
		right: 10px;
	}

	.tb-lightbox-image {
		max-height: calc(100vh - 150px);
	}

	.tb-tour-extras {
		margin-top: 30px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tbt-tour-gallery .tbt-gallery-link::after,
	.tbt-tour-gallery .tbt-gallery-link .tbt-gallery-image,
	.tb-lightbox-close,
	.tb-lightbox-nav {
		transition: none;
	}

	.tbt-tour-gallery .tbt-gallery-link:hover .tbt-gallery-image {
		transform: none;
	}
}

/* ---- datums / ingesluit / uitgesluit cards ---- */
/* padding 0 kills Elementor's 10px container default so the cards sit flush
   with the copy above them, and the gap is pulled up a little */
.tb-tour-page .tb-tour-cards {
	margin-top: 24px;
	padding: 0;
	gap: 24px;
	align-items: stretch;
	min-width: 0;
	max-width: 100%;
}

.tb-tour-cards .tbt-card {
	flex: 1 1 300px;
	min-width: 0;
	padding: 26px 28px 28px;
	border: 1px solid rgba(23, 32, 45, .12);
	border-radius: 18px;
	background: #fffdfa;
	box-shadow: 0 10px 26px rgba(22, 28, 23, .05);
}

.tb-tour-cards .tbt-card-title .elementor-heading-title {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 18px;
	color: #087f86;
	font-family: Jost, sans-serif !important;
	font-size: 15px;
	font-weight: 600;
	letter-spacing: 1.6px;
	text-transform: uppercase;
}

.tb-tour-cards .tbt-card-title .elementor-heading-title::before {
	content: "";
	flex: none;
	width: 18px;
	height: 18px;
	background: no-repeat center / contain;
}

.tb-tour-cards .tbt-card--dates .tbt-card-title .elementor-heading-title::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23087f86' d='M7 2h2v3H7zM15 2h2v3h-2z'/%3E%3Cpath fill='%23087f86' d='M4 5h16a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm1 5v9h14v-9z'/%3E%3C/svg%3E");
}

.tb-tour-cards .tbt-card--includes .tbt-card-title .elementor-heading-title::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23087f86' d='M4 6h2v2H4zM9 6h11v2H9zM4 11h2v2H4zM9 11h11v2H9zM4 16h2v2H4zM9 16h11v2H9z'/%3E%3C/svg%3E");
}

.tb-tour-cards .tbt-card--excludes .tbt-card-title .elementor-heading-title::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23087f86' stroke-width='2.4' stroke-linecap='round' d='M6 12h12'/%3E%3C/svg%3E");
}

/* a card whose shortcode returned nothing (no excludes set) drops out entirely */
.tb-tour-cards .tbt-card:not(:has(ul)) {
	display: none;
}

.tbt-tour-dates {
	margin: 0;
	padding: 0;
	list-style: none;
}

/* Sized with the cards' own body copy so the dates sit inside the card instead
   of shouting over the lists next to them — still Jost-medium ink, so they stay
   the card's key line. */
.tbt-tour-dates .tbt-date-row {
	margin: 0 0 12px;
	color: #17202d;
	font-family: Jost, sans-serif;
	font-size: 15.5px;
	font-weight: 500;
	line-height: 1.6;
}

.tbt-tour-dates .tbt-date-row:last-child {
	margin-bottom: 0;
}

.tbt-tour-includes,
.tbt-tour-excludes {
	margin: 0;
	padding: 0;
	list-style: none;
}

.tbt-tour-includes li,
.tbt-tour-excludes li {
	position: relative;
	margin: 0 0 11px;
	padding-left: 26px;
	color: #3f4a58;
	font-family: Jost, sans-serif;
	font-size: 15.5px;
	line-height: 1.5;
}

.tbt-tour-includes li:last-child,
.tbt-tour-excludes li:last-child {
	margin-bottom: 0;
}

.tbt-tour-includes li::before,
.tbt-tour-excludes li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .28em;
	width: 14px;
	height: 14px;
	background: no-repeat center / contain;
}

.tbt-tour-includes li::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23087f86' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round' d='M20 6.5 9.5 17 4 11.6'/%3E%3C/svg%3E");
}

.tbt-tour-excludes li::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%2317202d' stroke-opacity='.45' stroke-width='2.4' stroke-linecap='round' d='M6 12h12'/%3E%3C/svg%3E");
}

/* ---- booking card ---- */
.tb-tour-aside .tb-tour-booking-card {
	padding: 32px 30px 30px;
	border: 1px solid rgba(23, 32, 45, .12);
	border-radius: 20px;
	background: #fffdfa;
	box-shadow: 0 16px 38px rgba(22, 28, 23, .07);
	text-align: center;
	gap: 0;
}

.tb-tour-booking-card .tbt-booking-kicker .elementor-heading-title {
	margin: 0;
	color: #087f86;
	font-family: Jost, sans-serif !important;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 2px;
	text-transform: uppercase;
}

.tb-tour-booking-card .tbt-booking-title .elementor-heading-title {
	margin: 8px 0 20px;
	color: #17202d;
	font-family: Fraunces, Georgia, serif !important;
	font-size: 27px;
	font-weight: 400;
	line-height: 1.15;
	letter-spacing: .5px;
	text-transform: uppercase;
}

.tbt-tour-booking {
	margin: 0;
	padding: 0;
	list-style: none;
	text-align: left;
}

.tbt-booking-row {
	display: grid;
	grid-template-columns: 38px 1fr;
	column-gap: 16px;
	row-gap: 3px;
	align-items: center;
	padding: 18px 0;
	border-top: 1px solid rgba(23, 32, 45, .08);
}

.tbt-booking-row:first-child {
	padding-top: 2px;
	border-top: 0;
}

.tbt-booking-row::before {
	content: "";
	grid-row: 1 / span 2;
	width: 38px;
	height: 38px;
	border: 1px solid rgba(8, 127, 134, .3);
	border-radius: 50%;
	background: no-repeat center / 17px 17px;
}

.tbt-booking-row--self::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23087f86' d='M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm0 2c-4 0-7 2.2-7 5v1h14v-1c0-2.8-3-5-7-5z'/%3E%3C/svg%3E");
}

.tbt-booking-row--transport::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23087f86' d='M6 3h12a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2v2h-2.5v-1.5h-7V18H6v-2a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm0 3v5h12V6zm1.5 7.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3zm9 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3z'/%3E%3C/svg%3E");
}

.tbt-booking-row--deposit::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23087f86' d='M3 5h18a1 1 0 0 1 1 1v3H2V6a1 1 0 0 1 1-1zM2 11h20v7a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1zM4 14v2h4v-2z'/%3E%3C/svg%3E");
}

.tbt-booking-label {
	display: block;
	color: #087f86;
	font-family: Jost, sans-serif;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 1.2px;
	line-height: 1.35;
	text-transform: uppercase;
}

.tbt-booking-value {
	display: block;
	color: #17202d;
	font-family: Jost, sans-serif;
	font-size: 17px;
	line-height: 1.35;
}

.tb-tour-booking-card .tbt-booking-button .elementor-button {
	display: flex;
	width: 100%;
	align-items: center;
	justify-content: center;
	gap: 12px;
	margin-top: 22px;
	padding: 17px 26px;
	border: 0;
	border-radius: 10px;
	background: #d29b16;
	color: #17202d;
	font-family: Jost, sans-serif;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 2px;
	text-transform: uppercase;
	transition: background .25s ease, transform .25s ease;
}

.tb-tour-booking-card .tbt-booking-button .elementor-button::after {
	content: "\2192";
	font-size: 17px;
	line-height: 1;
	transition: transform .25s ease;
}

.tb-tour-booking-card .tbt-booking-button .elementor-button:hover,
.tb-tour-booking-card .tbt-booking-button .elementor-button:focus-visible {
	background: #b8860f;
	color: #fff;
}

.tb-tour-booking-card .tbt-booking-button .elementor-button:hover::after {
	transform: translateX(4px);
}

.tb-tour-booking-card .tbt-booking-note p {
	margin: 18px 0 0;
	color: rgba(23, 32, 45, .66);
	font-family: Jost, sans-serif;
	font-size: 12.5px;
	line-height: 1.55;
}

@media (max-width: 1024px) {
	.tb-kampus-hero.tb-tour-hero {
		height: 560px;
		min-height: 560px !important;
		padding: 140px 34px 46px;
	}

	.tb-tour-hero-inner {
		width: 100%;
	}

	.tb-tour-title .elementor-heading-title {
		font-size: clamp(34px, 5.4vw, 52px);
	}

	.tb-tour-page .tb-tour-main {
		padding: 68px 34px 90px;
	}

	.tb-tour-page .tb-tour-content,
	.tb-tour-page .tb-tour-aside {
		flex: 1 1 100%;
		min-width: 0;
	}

	.tb-tour-page .tb-tour-aside {
		position: static;
	}

	.tb-tour-aside .tb-tour-booking-card {
		max-width: 440px;
		margin: 0 auto;
	}
}

@media (max-width: 767px) {
	.tb-kampus-hero.tb-tour-hero {
		height: 620px;
		min-height: 620px !important;
		padding: 150px 22px 34px;
	}

	.tb-tour-page .tb-tour-hero .elementor-element-t31crumb {
		margin-bottom: 14px;
	}

	.tbt-tour-breadcrumb {
		margin-bottom: 0;
		font-size: 11px;
		letter-spacing: 1.2px;
	}

	.tbt-crumb-sep {
		margin: 0 6px;
	}

	.tb-tour-title .elementor-heading-title {
		max-width: 100%;
		font-size: 34px;
		letter-spacing: -.8px;
	}

	.tb-tour-lead {
		margin-top: 14px;
		font-size: 16px;
	}

	.tbt-tour-meta {
		flex-wrap: wrap;
		gap: 12px;
		margin-top: 18px;
		font-size: 11.5px;
		letter-spacing: 1.1px;
	}

	.tbt-meta-item--duration {
		padding-left: 14px;
	}

	.tb-tour-page .tb-tour-main {
		padding: 52px 22px 78px;
	}

	.tbt-tour-gallery {
		grid-template-columns: 1fr;
	}

	.tbt-tour-gallery .tbt-gallery-image {
		height: 190px;
	}

	.tb-tour-cards .tbt-card {
		flex: 1 1 100%;
		padding: 22px 20px 24px;
	}

	.tb-tour-aside .tb-tour-booking-card {
		padding: 26px 22px 24px;
		border-radius: 16px;
	}

	.tb-tour-booking-card .tbt-booking-title .elementor-heading-title {
		font-size: 23px;
	}
}

/* Where the hero is wide enough for the copy and the quote to sit side by side,
   centre the quote on the hero instead of parking it in the corner. Below this
   the copy's long sub-line runs under it, so the corner placement stands — the
   same gate the tour-type pages use for their own hero quote. */
@media (min-width: 1200px) {
	.tb-tour-hero .tb-kampus-quote {
		top: 50%;
		bottom: auto;
		translate: 0 -50%;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tb-tour-booking-card .tbt-booking-button .elementor-button,
	.tb-tour-booking-card .tbt-booking-button .elementor-button::after {
		transition: none;
	}
}

/* ==========================================================================
   Header logo — the supplied mark (attachment 197) replaces the framed
   compass icon-box and its "Toerbroers / REIS · ONTDEK · ERVAAR" wordmark.
   This Elementor renders the image widget as widget > a > img with no
   .elementor-widget-container, so the <img> is targeted directly; without a
   height it is sized by max-width: 100% against the column. The image is a
   link to the home page, and the old rules for .elementor-icon-box-title
   inside this element are simply inert now.
   ========================================================================== */

.elementor-element-tbtlogo1 a {
	display: block;
	line-height: 0;
}

.elementor-element-tbtlogo1 img {
	display: block;
	width: auto;
	height: 92px;
	max-width: 100%;
}

@media (max-width: 1024px) {
	.elementor-element-tbtlogo1 img {
		height: 74px;
	}
}

@media (max-width: 767px) {
	.elementor-element-tbtlogo1 img {
		height: 60px;
	}
}

/* ==========================================================================
   Header row alignment — the 92px logo makes the row much taller than the
   menu or the button, so centre every column against it: align-items on the
   container lines the columns up, and the widget wraps centre their contents
   within whatever height the column ends up with.
   ========================================================================== */

.elementor-element-tbtsec1 .elementor-container {
	align-items: center;
}

.elementor-element-tbtsec1 .elementor-widget-wrap {
	align-content: center;
	align-items: center;
}

/* ==========================================================================
   Page heroes — one header treatment across the site
   ==========================================================================
   Modelled on the /toere/ hero: a gold kicker with a gold rule on each side,
   the title and sub centred beneath it, and no handwritten quote. Every hero
   keeps its own wording and its own photo — only the treatment is shared. The
   home hero has its own header and is left alone.

   The quotes are switched off rather than deleted: the line is still in the
   Elementor data, so dropping its row from the first rule reads it back.
   ========================================================================== */

/* ---- the handwritten quote retires, with the empty box that reserved the
   corner for it on the container heroes ---- */
:is(
	.page-id-13 .elementor-element-tbshedquote1,
	.page-id-14 .elementor-element-tbquote01,
	.page-id-15 .elementor-element-oorquote,
	.page-id-16 .elementor-element-tbquote01,
	.page-id-17 .elementor-element-tbquote01,
	.page-id-18 .elementor-element-uqquote1,
	.page-id-19 .elementor-element-tbkquote,
	.page-id-96 .elementor-element-trquote1,
	.page-id-224 .elementor-element-tbkquote,
	.tb-tour-hero .elementor-element-t31quote,
	.tb-programme-page .elementor-element-tbpquote,
	.page-id-13 .elementor-element-tbshedherospace,
	.page-id-14 .elementor-element-tbherospace,
	.page-id-16 .elementor-element-tbherospace,
	.page-id-17 .elementor-element-tbherospace
) {
	display: none !important;
}

/* ---- the kicker: gold, a gold rule either side ----
   Built like the sillabus kicker — the widget itself is a centred flex row and
   its ::before/::after draw the rules — so the treatment lands the same way on
   a kicker written as a heading and on the tour detail page's breadcrumb. The
   rule span some of these carry in their markup would double up, so it steps
   aside. Each kicker keeps its own wording. */
:is(
	.tb-contact-hero .tb-eyebrow,
	.tb-schedule-hero .tb-sched-eyebrow,
	.elementor-element-oorhero1 .elementor-element-oorlabel,
	.uq-hero .uq-kicker,
	.tb-kampus-hero .tb-kampus-eyebrow,
	.toere-hero .elementor-element-treyeb01,
	.tb-tour-hero .elementor-element-t31crumb
) {
	display: flex !important;
	align-items: center;
	justify-content: center;
	gap: 14px;
	margin: 0 0 16px;
}

:is(
	.tb-contact-hero .tb-eyebrow,
	.tb-schedule-hero .tb-sched-eyebrow,
	.elementor-element-oorhero1 .elementor-element-oorlabel,
	.uq-hero .uq-kicker,
	.tb-kampus-hero .tb-kampus-eyebrow,
	.toere-hero .elementor-element-treyeb01,
	.tb-tour-hero .elementor-element-t31crumb
)::before,
:is(
	.tb-contact-hero .tb-eyebrow,
	.tb-schedule-hero .tb-sched-eyebrow,
	.elementor-element-oorhero1 .elementor-element-oorlabel,
	.uq-hero .uq-kicker,
	.tb-kampus-hero .tb-kampus-eyebrow,
	.toere-hero .elementor-element-treyeb01,
	.tb-tour-hero .elementor-element-t31crumb
)::after {
	content: "";
	display: block;
	flex: none;
	width: 46px;
	height: 2px;
	margin: 0;
	background: #d29b16;
}

:is(
	.tb-contact-hero .tb-eyebrow,
	.tb-schedule-hero .tb-sched-eyebrow,
	.elementor-element-oorhero1 .elementor-element-oorlabel,
	.uq-hero .uq-kicker,
	.tb-kampus-hero .tb-kampus-eyebrow,
	.toere-hero .elementor-element-treyeb01,
	.tb-tour-hero .elementor-element-t31crumb
) .elementor-heading-title span {
	display: none !important;
}

:is(
	.tb-contact-hero .tb-eyebrow,
	.tb-schedule-hero .tb-sched-eyebrow,
	.elementor-element-oorhero1 .elementor-element-oorlabel,
	.uq-hero .uq-kicker,
	.tb-kampus-hero .tb-kampus-eyebrow,
	.toere-hero .elementor-element-treyeb01,
	.tb-tour-hero .elementor-element-t31crumb
) .elementor-heading-title {
	margin: 0;
	color: #fff !important;
	font-family: Jost, sans-serif !important;
	font-size: 12px !important;
	font-weight: 600 !important;
	line-height: 1 !important;
	letter-spacing: 3px !important;
	text-align: center;
	text-transform: uppercase;
}

:is(
	.tb-contact-hero .tb-eyebrow,
	.tb-schedule-hero .tb-sched-eyebrow,
	.elementor-element-oorhero1 .elementor-element-oorlabel,
	.uq-hero .uq-kicker,
	.tb-kampus-hero .tb-kampus-eyebrow,
	.toere-hero .elementor-element-treyeb01,
	.tb-tour-hero .elementor-element-t31crumb
) .elementor-widget-container {
	text-align: center;
}

/* the Toere hero eyebrow drew its right-hand rule on the heading itself; the
   widget draws both now, so the old one stands down */
.page-id-96 .elementor-element-treyeb01 .elementor-heading-title::after {
	content: none;
}

/* ---- the copy: centred, and centred as a block ----
   These boxes are capped — Kontak's at 600px, the tour heroes' at 1000px — and
   sit at the left edge of the hero's content column, so width plus auto side
   margins are what move the block itself to the middle. text-align alone would
   centre the typing inside a box still pinned to the left. */
:is(
	.tb-contact-hero .tb-hero-copy,
	.tb-schedule-hero .tb-sched-hero-copy,
	.elementor-element-oorhero1 .tb-hero-copy,
	.uq-hero .uq-hero-copy,
	.tb-kampus-hero .tb-kampus-hero-inner,
	.tb-tour-hero .tb-tour-hero-inner
) {
	width: 100% !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

:is(
	.tb-contact-hero .tb-hero-copy,
	.tb-schedule-hero .tb-sched-hero-copy,
	.elementor-element-oorhero1 .tb-hero-copy,
	.uq-hero .uq-hero-copy,
	.tb-kampus-hero .tb-kampus-hero-inner,
	.tb-tour-hero .tb-tour-hero-inner,
	.tb-tour-hero .elementor-shortcode
) .e-con-inner,
:is(
	.tb-contact-hero .tb-hero-copy,
	.tb-schedule-hero .tb-sched-hero-copy,
	.elementor-element-oorhero1 .tb-hero-copy,
	.uq-hero .uq-hero-copy,
	.tb-kampus-hero .tb-kampus-hero-inner,
	.tb-tour-hero .tb-tour-hero-inner,
	.tb-tour-hero .elementor-shortcode
) .elementor-widget-container,
:is(
	.tb-contact-hero .tb-hero-copy,
	.tb-schedule-hero .tb-sched-hero-copy,
	.elementor-element-oorhero1 .tb-hero-copy,
	.uq-hero .uq-hero-copy,
	.tb-kampus-hero .tb-kampus-hero-inner,
	.tb-tour-hero .tb-tour-hero-inner,
	.tb-tour-hero .elementor-shortcode
) .elementor-heading-title,
:is(
	.tb-contact-hero .tb-hero-copy,
	.tb-schedule-hero .tb-sched-hero-copy,
	.elementor-element-oorhero1 .tb-hero-copy,
	.uq-hero .uq-hero-copy,
	.tb-kampus-hero .tb-kampus-hero-inner,
	.tb-tour-hero .tb-tour-hero-inner,
	.tb-tour-hero .elementor-shortcode
) .elementor-text-editor {
	text-align: center;
}

/* the tour detail page's header centres, the same as every other page hero.
   Its kicker slot and its meta rows are shortcode widgets, whose content lives
   in .elementor-shortcode — which is why they need the alignment set through
   both wrappers. */
.tb-tour-page .tb-tour-hero {
	justify-content: center !important;
}

.tb-tour-hero .tb-tour-title .elementor-heading-title {
	margin-left: auto !important;
	margin-right: auto !important;
	text-align: center !important;
}

.tb-tour-hero .elementor-element-t31crumb,
.tb-tour-hero .elementor-element-t31crumb .elementor-shortcode,
.tb-tour-hero .elementor-element-t31crumb .tbt-tour-breadcrumb,
.tb-tour-hero .tb-tour-crumb-wrap {
	text-align: center;
	justify-content: center;
}

.tb-tour-hero .elementor-element-t31lead .elementor-shortcode,
.tb-tour-hero .elementor-element-t31lead .tbt-tour-lead {
	text-align: center;
}

.tb-tour-hero .tbt-tour-lead {
	margin-left: auto;
	margin-right: auto;
}

.tb-tour-hero .elementor-element-t31meta .elementor-shortcode,
.tb-tour-hero .elementor-element-t31meta .tbt-tour-meta {
	text-align: center;
	justify-content: center;
}

/* On a phone the words plus a rule on each side will not sit on one line, so
   the family keeps Toere's own phone look: one shorter rule, tight to the
   words. */
@media (max-width: 767px) {
	:is(
		.tb-contact-hero .tb-eyebrow,
		.tb-schedule-hero .tb-sched-eyebrow,
		.elementor-element-oorhero1 .elementor-element-oorlabel,
		.uq-hero .uq-kicker,
		.tb-kampus-hero .tb-kampus-eyebrow,
		.toere-hero .elementor-element-treyeb01,
		.tb-tour-hero .elementor-element-t31crumb
	) {
		gap: 10px;
	}

	:is(
		.tb-contact-hero .tb-eyebrow,
		.tb-schedule-hero .tb-sched-eyebrow,
		.elementor-element-oorhero1 .elementor-element-oorlabel,
		.uq-hero .uq-kicker,
		.tb-kampus-hero .tb-kampus-eyebrow,
		.toere-hero .elementor-element-treyeb01,
		.tb-tour-hero .elementor-element-t31crumb
	)::after {
		content: none;
	}

	:is(
		.tb-contact-hero .tb-eyebrow,
		.tb-schedule-hero .tb-sched-eyebrow,
		.elementor-element-oorhero1 .elementor-element-oorlabel,
		.uq-hero .uq-kicker,
		.tb-kampus-hero .tb-kampus-eyebrow,
		.toere-hero .elementor-element-treyeb01,
		.tb-tour-hero .elementor-element-t31crumb
	)::before {
		width: 26px;
	}

	:is(
		.tb-contact-hero .tb-eyebrow,
		.tb-schedule-hero .tb-sched-eyebrow,
		.elementor-element-oorhero1 .elementor-element-oorlabel,
		.uq-hero .uq-kicker,
		.tb-kampus-hero .tb-kampus-eyebrow,
		.toere-hero .elementor-element-treyeb01,
		.tb-tour-hero .elementor-element-t31crumb
	) .elementor-heading-title {
		letter-spacing: 2px !important;
	}
}


/* ===== Design CSS moved out of the database =====
   These rules used to live in Elementor's page-level Custom CSS and in
   WordPress's Additional CSS. Both are database stores that a content-only
   transfer (a WXR import, for instance) silently drops — which is why the
   Oor Ons page arrived without its section styling. Keeping them here means
   the look travels with the theme. Order is as it was: page CSS first,
   Additional CSS after. */

/* ---- page 15 (Oor Ons) — Elementor page Custom CSS ---- */
.oor-main,.oor-finance-wrap{background:#f7f5f0}.oor-card,.oor-finance-wrap>.elementor-container{background:#fff;border:1px solid #e4dfd5;border-radius:14px;box-shadow:0 10px 34px rgba(31,34,29,.07)}.oor-main .elementor-container{align-items:stretch;gap:18px}.oor-story{width:calc(54% - 12px)!important}.oor-values{width:calc(29% - 12px)!important}.oor-adventure{width:calc(17% - 12px)!important}.oor-card{overflow:hidden}.oor-card .elementor-heading-title{position:relative}.oor-card h2:before,.oor-fin-copy h2:before{content:"";display:inline-block;width:38px;height:2px;background:#dca717;margin:0 14px 8px 0}.elementor-element-oorquote{position:absolute;right:7%;bottom:110px;width:250px;transform:rotate(-5deg);text-shadow:0 2px 16px rgba(0,0,0,.45)}.oor-finance-wrap>.elementor-container{padding:26px 28px}.oor-fin-side{border-left:1px solid #ded8cd;padding-left:28px}.elementor-element-oorglob1{filter:drop-shadow(0 10px 13px rgba(25,35,28,.22))}.elementor-element-oorglob1 img{width:165px!important;height:180px;object-fit:cover;clip-path:polygon(38% 2%,56% 6%,63% 15%,77% 18%,92% 28%,77% 35%,72% 47%,67% 57%,62% 70%,57% 83%,50% 99%,42% 91%,36% 75%,29% 67%,24% 56%,15% 48%,9% 37%,20% 25%,31% 19%)}@media(max-width:1180px) and (min-width:768px){.oor-main .elementor-container{align-items:flex-start;flex-wrap:wrap!important}.oor-story{flex:0 0 100%;width:100%!important}.oor-values{flex:0 0 calc(66.666% - 9px);width:calc(66.666% - 9px)!important}.oor-adventure{flex:0 0 calc(33.333% - 9px);width:calc(33.333% - 9px)!important}.oor-hero{padding-left:5%!important;padding-right:5%!important}.elementor-element-oorquote{right:5%;bottom:70px}}@media(max-width:1024px){.oor-finance-wrap .elementor-column{width:100%!important}.oor-fin-side{border-left:0;border-top:1px solid #ded8cd;padding:22px 0 0;margin-top:18px}}@media(max-width:767px){.elementor-location-header .elementor-element-tbtcol2,.elementor-location-header .elementor-element-feb2ed6{display:none}.elementor-location-header .elementor-element-tbtcol1{width:100%!important}.elementor-location-header .elementor-element-tbtlogo1{text-align:center}.elementor-location-header{height:118px!important}.oor-hero{min-height:560px!important;padding:130px 5% 70px!important}.oor-hero h1{font-size:42px!important}.elementor-element-oorquote{position:relative;right:auto;bottom:auto;width:auto;margin-top:45px;transform:rotate(-3deg)}.oor-main .elementor-column{flex:0 0 100%;width:100%!important;margin-bottom:0!important}.oor-main,.oor-finance-wrap{padding-left:14px!important;padding-right:14px!important}.oor-card{padding:24px 20px!important}.oor-finance-wrap>.elementor-container{padding:24px 20px}.oor-fin-icon{text-align:left}.oor-main h2,.oor-fin-copy h2{font-size:25px!important}}

/* ---- page 96 (Toere) — Elementor page Custom CSS ---- */
.toere-card-row>.elementor-container{display:flex;gap:28px}.toere-card{min-height:390px;border-radius:18px;overflow:hidden;box-shadow:0 14px 34px rgba(22,28,23,.16);width:calc(50% - 14px)!important;transition:transform .35s ease,box-shadow .35s ease}.toere-card:hover{transform:translateY(-5px);box-shadow:0 20px 46px rgba(22,28,23,.22)}.toere-card .elementor-background-overlay{border-radius:18px}.toere-card .elementor-widget-button{margin:6px 0 18px}.toere-card .elementor-button{min-width:290px}.toere-hero .elementor-widget-wrap{position:relative}.elementor-element-trquote1{transform:rotate(-5deg);text-shadow:0 3px 18px rgba(0,0,0,.45)}@media(max-width:1180px){.toere-card-row>.elementor-container{flex-wrap:wrap}.toere-card{flex:0 0 100%;width:100%!important}.toere-hero{padding-left:5%!important;padding-right:5%!important}.toere-hero h1{font-size:84px!important}}@media(max-width:767px){.elementor-location-header .elementor-element-tbtcol2,.elementor-location-header .elementor-element-feb2ed6{display:none}.elementor-location-header .elementor-element-tbtcol1{width:100%!important}.elementor-location-header .elementor-element-tbtlogo1{text-align:center}.elementor-location-header{height:118px!important}.toere-hero{min-height:600px!important;padding:132px 20px 55px!important}.toere-hero .elementor-column{width:100%!important}.toere-hero h1{font-size:66px!important}.elementor-element-trsub001 h2{font-size:25px!important}.elementor-element-trquote1{margin-top:38px;transform:rotate(-3deg)}.toere-choose{padding:36px 14px 52px!important}.elementor-element-trchooseh h2{font-size:34px!important}.toere-card{min-height:500px;padding:34px 24px!important}.toere-card h3{font-size:29px!important}.toere-card .elementor-button{min-width:0;width:100%}.toere-card-row>.elementor-container{gap:20px}}@media(prefers-reduced-motion:reduce){.toere-card{transition:none}.toere-card:hover{transform:none}}

/* ---- WordPress Additional CSS (surfaces, script fonts, contact form) ---- */
/* Contact form: compact fields.
   The hint is a real placeholder now, so the field has even padding and the
   label sits out of the box (hidden, still the field's accessible name). */
.tb-contact-form input.elementor-field { height: 56px !important; min-height: 56px !important; padding: 15px 14px !important; color: #17202d !important; }
.tb-contact-form textarea.elementor-field { height: 132px !important; min-height: 132px !important; padding: 15px 14px !important; color: #17202d !important; }
.tb-contact-form input.elementor-field::placeholder,
.tb-contact-form textarea.elementor-field::placeholder { color: rgba(23, 32, 45, .55) !important; opacity: 1 !important; }
.tb-contact-form .elementor-field-label { position: absolute !important; width: 1px !important; height: 1px !important; margin: -1px !important; padding: 0 !important; border: 0 !important; overflow: hidden !important; clip-path: inset(50%) !important; white-space: nowrap !important; }

/* Financing icon: true circle */
.tb-fin-icon .elementor-icon { display: inline-flex !important; width: 74px !important; height: 74px !important; aspect-ratio: 1; align-items: center; justify-content: center; padding: 16px !important; border-radius: 50% !important; }
.tb-fin-icon .elementor-icon svg { width: 32px !important; height: 32px !important; }

/* Financing provider note */
.tb-provider p { color: #000000 !important; }

/* Oor Ons: same page surface as the rest of the site */
.page-id-15 .oor-main,
.page-id-15 .oor-finance-wrap,
.page-id-15 .tb-oor-extras {
  background-color: #f8f5ef !important;
  background-image: repeating-radial-gradient(ellipse at 0 22%, transparent 0 38px, rgba(50,83,71,.025) 39px 40px, transparent 41px 59px), repeating-radial-gradient(ellipse at 100% 58%, transparent 0 45px, rgba(50,83,71,.025) 46px 47px, transparent 48px 70px) !important;
}

/* Handwritten-style Fraunces display phrases */
.page-id-15 .elementor-element-oorquote .elementor-heading-title,
.page-id-15 .elementor-element-oorhand1 .elementor-heading-title,
.page-id-17 .elementor-element-tbquote01 .elementor-heading-title {
  font-family: Fraunces, serif !important;
  font-style: italic !important;
  font-weight: 500 !important;
  letter-spacing: .01em;
}

/* Contact hero quote */
.page-id-17 .tb-contact-hero > .elementor-element-tbquote01 {
  position: absolute !important;
  right: 7% !important;
  top: 44% !important;
  width: min(36vw, 360px) !important;
  z-index: 2 !important;
}
@media (max-width: 767px) {
  .page-id-17 .tb-contact-hero { min-height: 560px; }
  .page-id-17 .tb-contact-hero > .elementor-element-tbquote01 {
    top: auto !important;
    right: 24px !important;
    bottom: 32px !important;
    width: 250px !important;
  }
  .page-id-17 .elementor-element-tbquote01 .elementor-heading-title {
    font-size: 28px !important;
    line-height: 1.05 !important;
    text-align: right;
  }
}

/* Oor Ons annotated script display text */
.page-id-15 .elementor-element-oorquote .elementor-heading-title,
.page-id-15 .elementor-element-oorhand1 .elementor-heading-title {
  font-family: Allura, cursive !important;
  font-style: normal !important;
  font-weight: 400 !important;
  letter-spacing: .01em;
}

/* Contact hero handwritten quote */
.page-id-17 .elementor-element-tbquote01 {
  transform: rotate(-3deg);
  transform-origin: center;
}
.page-id-17 .elementor-element-tbquote01 .elementor-heading-title {
  font-family: Allura, cursive !important;
  font-style: normal !important;
  font-weight: 400 !important;
  line-height: .9 !important;
}

/* Kampus annotations: wider programmes and straight hero edge */
.page-id-19 .tb-programme-section {
  width: 100%;
  max-width: 1600px !important;
}
.page-id-19 .tb-kampus-main {
  margin-top: 0 !important;
  border-radius: 0 !important;
}
/* ===== end of moved design CSS ===== */

/* ===== Oor Ons: erkenning + tydskrif band =====
   Two 50/50 cards at the foot of the page. Both carry the same `.oor-card`
   treatment as the cards above them (white, hairline border, 14px radius, soft
   shadow, gold rule before the h2), so they read as part of the same page.
   Inside each card the copy takes the free space and the media a fixed share.

   Elementor writes `flex: 0 1 auto` on every `.e-con.e-flex` (specificity
   0,2,0), so these three rules carry a third class to out-rank it. */

.tb-oor-extras .tb-oor-col.e-con {
	flex: 1 1 0;
	min-width: 0;
}

.tb-oor-extras .tb-oor-copy.e-con {
	flex: 1 1 0;
	min-width: 0;
}

.tb-oor-extras .tb-oor-media.e-con {
	flex: 0 0 30%;
	max-width: 30%;
}

.tb-oor-extras .tb-oor-media img {
	display: block;
	width: 100%;
	height: auto;
}

/* the gold caps label above each heading */
.tb-oor-extras .tb-oor-eyebrow .elementor-heading-title {
	margin: 0 0 12px !important;
	color: #b8860f;
	font-family: Jost, sans-serif !important;
	font-size: 12px !important;
	font-weight: 600 !important;
	letter-spacing: 2.2px !important;
	line-height: 1 !important;
	text-transform: uppercase;
}

/* the heading itself — the page's card heading, a little larger here */
.tb-oor-extras .tb-oor-title .elementor-heading-title {
	margin: 0 0 16px !important;
	color: #087f86;
	font-family: Fraunces, serif !important;
	font-size: 27px !important;
	font-weight: 400 !important;
	line-height: 1.08 !important;
	letter-spacing: .01em !important;
}

/* the award line, set as the page's other display phrases are */
.tb-oor-extras .tb-oor-lede .elementor-heading-title {
	margin: 0 0 14px !important;
	color: #b8860f;
	font-family: Fraunces, serif !important;
	font-style: italic !important;
	font-weight: 500 !important;
	font-size: 21px !important;
	line-height: 1.25 !important;
}

/* card prose runs with the site's long-form copy */
.tb-oor-extras .tb-oor-body,
.tb-oor-extras .tb-oor-body p {
	margin: 0;
	color: #3f4a58 !important;
	font-family: Jost, sans-serif !important;
	font-size: 17px !important;
	font-weight: 400 !important;
	line-height: 1.75 !important;
}

.tb-oor-extras .tb-oor-body + .elementor-widget-button {
	margin-top: 26px;
}

.tb-oor-extras .tb-oor-button .elementor-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 14px 30px !important;
	border: 0 !important;
	border-radius: 4px !important;
	background-color: #087f86 !important;
	color: #fff !important;
	font-family: Jost, sans-serif !important;
	font-size: 12px !important;
	font-weight: 600 !important;
	letter-spacing: 1.6px !important;
	line-height: 1.2 !important;
	text-transform: uppercase;
	transition: background-color .2s ease;
}

.tb-oor-extras .tb-oor-button .elementor-button:hover,
.tb-oor-extras .tb-oor-button .elementor-button:focus-visible {
	background-color: #0a6d73 !important;
	color: #fff !important;
}

/* the magazine cover artwork, sitting in the media column */
.tb-oor-extras .tb-atlas-cover img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 4px;
	box-shadow: 0 10px 34px rgba(31, 34, 29, .10);
}

/* one card per row once the band gets narrow */
@media (max-width: 1180px) {
	.tb-oor-extras .tb-oor-col {
		flex: 1 1 100% !important;
	}
}

@media (max-width: 767px) {
/* the card's inner box takes its direction from this custom property, so the
	   override has to ride on the element the property is set on */
	.tb-oor-extras .tb-oor-col.e-con {
		--flex-direction: column;
	}

	.tb-oor-extras .tb-oor-media {
		flex: 1 1 auto !important;
		max-width: 74% !important;
	}

	.tb-oor-extras .tb-oor-title .elementor-heading-title {
		font-size: 26px !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tb-oor-extras .tb-oor-button .elementor-button {
		transition: none;
	}
}

/* ===== Broadcast popup (uitsending poster) — shown once per session ===== */

.tb-popup {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
	opacity: 0;
	transition: opacity 0.3s ease;
}

/* The [hidden] attribute is only a user-agent default, so the `display: flex`
   above would otherwise override it: a dismissed popup would stay in the DOM
   at opacity 0 with a full-viewport box, swallowing every click on the page. */
.tb-popup[hidden] {
	display: none;
}

/* Belt and braces: while the panel is not open it never traps pointer events,
   so clicks pass straight through even mid fade-out. */
.tb-popup:not(.is-open) {
	pointer-events: none;
}

.tb-popup.is-open {
	opacity: 1;
}

.tb-popup__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(4, 13, 16, 0.72);
	-webkit-backdrop-filter: blur(2px);
	backdrop-filter: blur(2px);
}

.tb-popup__panel {
	position: relative;
	width: 100%;
	max-width: 880px;
	max-height: calc(100vh - 48px);
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 30px 70px rgba(0, 0, 0, 0.45);
	transform: translateY(12px) scale(0.985);
	transition: transform 0.35s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.tb-popup.is-open .tb-popup__panel {
	transform: none;
}

.tb-popup__image {
	display: block;
	width: 100%;
	height: auto;
	max-height: calc(100vh - 48px);
	object-fit: contain;
	background: #f8f5ef;
}

.tb-popup__close {
	position: absolute;
	top: 10px;
	right: 10px;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	padding: 0;
	border: 1px solid rgba(248, 245, 239, 0.55);
	border-radius: 50%;
	background: rgba(4, 13, 16, 0.45);
	color: #f8f5ef;
	cursor: pointer;
	transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.tb-popup__close svg {
	display: block;
	width: 20px;
	height: 20px;
}

.tb-popup__close:hover,
.tb-popup__close:focus-visible {
	background: #f2b91f;
	border-color: #f2b91f;
	color: #17202d;
}

body.tb-popup-open {
	overflow: hidden;
}

@media (max-width: 767px) {
	.tb-popup {
		padding: 12px;
	}

	.tb-popup__panel {
		max-height: calc(100vh - 24px);
		border-radius: 10px;
	}

	.tb-popup__image {
		max-height: calc(100vh - 24px);
	}

	.tb-popup__close {
		top: 8px;
		right: 8px;
		width: 38px;
		height: 38px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tb-popup,
	.tb-popup__panel {
		transition: none;
		transform: none;
	}
}

/* ===== Skedule — month slider (one slide per month) =====
   The plugin renders one slide per month. Its script adds `is-ready`, which is
   what turns the stack of months into a sliding track; until then every month
   simply follows the previous one, so the whole schedule still reads. */

.page-id-13 .tbt-schedule-slide + .tbt-schedule-slide {
	margin-top: 20px !important;
}

/* The heading slot now carries the month of the active slide. */
.page-id-13 .tbt-month-label {
	text-transform: uppercase;
}

/* Download-schedule button at the foot of the teal info panel — white, so it
   reads as the panel's one action, in the site's own button type. Points at
   "#" until there is a real file to fetch. */
.page-id-13 .tb-sched-download {
	margin-top: 22px !important;
}

.page-id-13 .tb-sched-download .elementor-button {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	padding: 12px 24px !important;
	border: 1px solid #fffdfa !important;
	background-color: #fffdfa !important;
	color: #17202d !important;
	letter-spacing: 1.2px !important;
	text-transform: uppercase;
	transition: background-color .2s ease, color .2s ease;
}

.page-id-13 .tb-sched-download .elementor-button:hover,
.page-id-13 .tb-sched-download .elementor-button:focus-visible {
	background-color: transparent !important;
	color: #fffdfa !important;
}

/* Held at the tallest month's height so the year and the month label above stay
   put as you move between months instead of riding up and down with the row
   count. Grows on its own if a month ever runs longer. */
.page-id-13 .tbt-schedule-viewport {
	min-height: 180px !important;
	overflow: hidden !important;
}

.page-id-13 .tbt-schedule-slider.is-ready .tbt-schedule-track {
	display: flex !important;
	transition: transform 0.45s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.page-id-13 .tbt-schedule-slider.is-ready .tbt-schedule-slide {
	flex: 0 0 100% !important;
	min-width: 100% !important;
}

.page-id-13 .tbt-schedule-slider.is-ready .tbt-schedule-slide + .tbt-schedule-slide {
	margin-top: 0 !important;
}

/* Controls sit above the list rather than at the foot of the column, which is
   where the corner artwork lives. */
.page-id-13 .tbt-schedule-nav {
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
	gap: 14px !important;
	margin-bottom: 14px !important;
}

/* Meaningful only once the script is driving the slides. */
.page-id-13 .tbt-schedule-slider:not(.is-ready) .tbt-schedule-nav {
	display: none !important;
}

.page-id-13 .tbt-schedule-dots {
	display: flex !important;
	align-items: center !important;
	gap: 7px !important;
}

.page-id-13 .tbt-schedule-dot {
	width: 9px !important;
	height: 9px !important;
	min-width: 0 !important;
	padding: 0 !important;
	border: 1px solid rgba(210, 155, 22, .55) !important;
	border-radius: 50% !important;
	background: transparent !important;
	cursor: pointer;
	transition: background-color .25s ease, border-color .25s ease;
}

.page-id-13 .tbt-schedule-dot.is-active {
	background: #d29b16 !important;
	border-color: #d29b16 !important;
}

.page-id-13 .tbt-schedule-dot:hover,
.page-id-13 .tbt-schedule-dot:focus-visible {
	border-color: #d29b16 !important;
}

.page-id-13 .tbt-schedule-arrows {
	display: flex !important;
	align-items: center !important;
	gap: 8px !important;
}

/* Same round outlined gold arrows as the tour carousels, a touch smaller to
   suit the column. The chevron is drawn rather than shipped as an icon. */
.page-id-13 .tbt-schedule-arrow {
	position: relative !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 38px !important;
	height: 38px !important;
	min-width: 0 !important;
	padding: 0 !important;
	border: 1px solid rgba(210, 155, 22, .55) !important;
	border-radius: 50% !important;
	background: rgba(255, 253, 250, .92) !important;
	color: #b8860f !important;
	cursor: pointer;
	transition: background-color .3s ease, border-color .3s ease, color .3s ease;
}

.page-id-13 .tbt-schedule-arrow::after {
	content: "";
	width: 8px;
	height: 8px;
	border-right: 1.5px solid currentColor;
	border-bottom: 1.5px solid currentColor;
}

.page-id-13 .tbt-schedule-next::after {
	transform: translateX(-2px) rotate(-45deg);
}

.page-id-13 .tbt-schedule-prev::after {
	transform: translateX(2px) rotate(135deg);
}

.page-id-13 .tbt-schedule-arrow:hover,
.page-id-13 .tbt-schedule-arrow:focus-visible {
	background: #d29b16 !important;
	border-color: #d29b16 !important;
	color: #fffdfa !important;
}

@media (prefers-reduced-motion: reduce) {
	.page-id-13 .tbt-schedule-slider.is-ready .tbt-schedule-track,
	.page-id-13 .tbt-schedule-dot,
	.page-id-13 .tbt-schedule-arrow {
		transition: none;
	}
}

/* The month line keeps the page's own eyebrow: the empty <span> in the heading
   is painted gold by the page's element CSS, and the month label sits beside
   it. That rule is scoped to `span:empty`, so it draws the rule before the
   month without painting the month label as well — one eyebrow, not two. */


/* Broadcast popup: the close button sits outside the poster, above its
   top-right corner, so it never covers the artwork. The panel no longer
   clips (the image carries the rounded corners instead) and the height
   limits leave room for the button row. */
.tb-popup__panel {
	overflow: visible;
	border-radius: 0;
	box-shadow: none;
	max-height: calc(100vh - 48px - 52px);
	margin-top: 52px;
}

.tb-popup__image {
	border-radius: 14px;
	box-shadow: 0 30px 70px rgba(0, 0, 0, 0.45);
	max-height: calc(100vh - 48px - 52px);
}

.tb-popup__close,
.tb-popup__close:hover,
.tb-popup__close:focus-visible {
	top: -52px;
	right: 0;
	width: 42px;
	height: 42px;
}

.tb-popup__close {
	background: rgba(4, 13, 16, 0.6);
}

@media (max-width: 767px) {
	.tb-popup__close,
	.tb-popup__close:hover,
	.tb-popup__close:focus-visible {
		top: -48px;
		right: 0;
		width: 40px;
		height: 40px;
	}
}


/* The poster links to kykNET. */
.tb-popup__link {
	display: block;
	border-radius: 14px;
	cursor: pointer;
}

.tb-popup__link:focus-visible {
	outline: 3px solid #f2b91f;
	outline-offset: 3px;
}


/* Toere page cards: long single words ("INTERNASIONALE") can't wrap, and the
   card column clips overflow, so on narrow screens or with a phone's larger
   text setting the heading and button text were cut off. Scale the card
   heading to the space available and let words break as a last resort. */
@media (max-width: 767px) {
	.page-id-96 .elementor-column h3.elementor-heading-title {
		font-size: clamp(16px, calc((100vw - 120px) / 9.6), 25px) !important;
		overflow-wrap: anywhere;
	}

	.page-id-96 .elementor-column .elementor-heading-title,
	.page-id-96 .elementor-column .elementor-button-text {
		overflow-wrap: anywhere;
	}
}


/* Toere page cards: on very narrow screens the button labels shrink before
   they break, so "INTERNASIONALE" stays one word. */
@media (max-width: 480px) {
	.page-id-96 .elementor-column .elementor-button {
		padding-left: 12px !important;
		padding-right: 12px !important;
	}

	.page-id-96 .elementor-column .elementor-button-text {
		font-size: clamp(10.5px, calc((100vw - 120px) / 14.5), 13px) !important;
		letter-spacing: clamp(0.3px, calc((100vw - 280px) / 80), 1.1px) !important;
	}
}


/* Kampus CTA: three equal buttons in one centred row (Skryf nou in,
   Sien ons sillabusse, Kleredrag), stacked evenly on phones. */
.tb-kampus-buttons > .e-con-inner,
.e-con.tb-kampus-buttons:not(:has(> .e-con-inner)) {
	justify-content: center !important;
	gap: 18px !important;
	flex-wrap: wrap;
}

.tb-kampus-buttons .elementor-widget-button {
	width: 260px !important;
	max-width: 100%;
	flex: 0 0 260px !important;
	margin: 0 !important;
}

.tb-kampus-buttons .elementor-widget-button .elementor-button {
	display: flex;
	width: 100%;
	justify-content: center;
	box-sizing: border-box;
}

.tb-kampus-buttons .elementor-button-content-wrapper {
	align-items: center;
	gap: 10px;
}

.tb-kampus-buttons .elementor-button-icon svg,
.tb-kampus-buttons .elementor-button-icon i {
	width: 14px;
	height: 14px;
	font-size: 14px;
	fill: currentColor;
}

@media (max-width: 767px) {
	.tb-kampus-buttons > .e-con-inner,
	.e-con.tb-kampus-buttons:not(:has(> .e-con-inner)) {
		flex-direction: column !important;
		align-items: stretch !important;
		gap: 12px !important;
	}

	.tb-kampus-buttons .elementor-widget-button {
		width: 100% !important;
		flex: 0 0 auto !important;
	}
}
