/* NCB Travel Agency Core — frontend. Deliberately quiet: the theme owns the page. */

.ncb-excursion, .ncb-cards, .ncb-archive, .ncb-eform, .ncb-list { --ncb-primary: #0f766e; --ncb-primary-ink: #ffffff; --ncb-accent: #f6bd32; --ncb-accent-ink: #111418; --ncb-cta-bg: #111418; --ncb-cta-ink: #ffffff; --ncb-form-ink: #2b2100; --ncb-brand: #0f766e; --ncb-yellow: #f6bd32; --ncb-ink: #10233b; --ncb-muted: #5b6b7f; --ncb-line: #e4e9ef; }

.ncb-section { margin: 0 auto 42px; max-width: 900px; }
.ncb-section__title { margin: 0 0 16px; font-size: 1.45rem; line-height: 1.25; }

/* Hero */
.ncb-hero { position: relative; margin-bottom: 36px; }
.ncb-hero__picture { display: block; }
.ncb-hero__image { width: 100%; height: clamp(260px, 42vh, 520px); object-fit: cover; display: block; border-radius: 12px; }
.ncb-hero.has-image .ncb-hero__inner { margin: -70px auto 0; max-width: 900px; padding: 24px 28px; border-radius: 12px; background: #fff; box-shadow: 0 12px 40px rgba(16, 35, 59, .12); position: relative; }
.ncb-hero__title { margin: 0 0 6px; font-size: clamp(1.7rem, 3.5vw, 2.4rem); line-height: 1.15; }
.ncb-hero__subtitle { margin: 0 0 10px; color: var(--ncb-muted); font-size: 1.05rem; }
.ncb-hero__meta { margin: 0 0 16px; color: var(--ncb-muted); font-size: .9rem; }
.ncb-badge { display: inline-block; margin-bottom: 8px; padding: 3px 10px; border-radius: 999px; background: var(--ncb-badge-bg, #fef3c7); color: var(--ncb-badge-ink, #92400e); font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }

.ncb-btn { display: inline-block; padding: 11px 20px; border-radius: 8px; font-weight: 600; text-decoration: none; }
.ncb-btn--primary { background: var(--ncb-primary, #0f766e); color: var(--ncb-primary-ink, #fff); }
.ncb-btn--primary:hover { background: #0b5f59; color: #fff; }
.ncb-link { color: var(--ncb-primary, #0f766e); font-weight: 600; }

/* Facts */
.ncb-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 0 24px; margin: 22px 0 0; }
.ncb-facts__row { display: flex; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--ncb-line); }
.ncb-facts dt { margin: 0; color: var(--ncb-muted); font-size: .85rem; }
.ncb-facts dd { margin: 0; font-weight: 600; font-size: .9rem; text-align: right; }

/* Price */
.ncb-price,
.ncb-transport { padding: 24px; border: 1px solid var(--ncb-line); border-radius: 12px; background: #fbfdfd; }
.ncb-price__main { display: flex; align-items: baseline; flex-wrap: wrap; gap: 10px; }
.ncb-price__label { color: var(--ncb-muted); font-size: .9rem; }
.ncb-price__value { font-size: 2rem; font-weight: 700; color: var(--ncb-primary, #0f766e); }
.ncb-price__early { width: 100%; color: #92400e; font-size: .9rem; font-weight: 600; }
.ncb-price__rows { margin: 16px 0; padding: 0; list-style: none; }
.ncb-price__rows li { display: flex; justify-content: space-between; padding: 7px 0; border-bottom: 1px solid var(--ncb-line); font-size: .92rem; }
.ncb-price__notes { color: var(--ncb-muted); font-size: .88rem; }

/* Program */
.ncb-program__list { margin: 0; padding: 0; list-style: none; }
.ncb-program__day { display: grid; grid-template-columns: 120px 1fr; gap: 20px; padding: 22px 0; border-top: 1px solid var(--ncb-line); }
.ncb-program__num { display: block; font-weight: 700; color: var(--ncb-primary, #0f766e); }
.ncb-program__date { display: block; margin-top: 2px; color: var(--ncb-muted); font-size: .82rem; }
.ncb-program__title { margin: 0 0 10px; font-size: 1.1rem; }
.ncb-program__image { width: 100%; max-width: 420px; height: auto; border-radius: 10px; margin-bottom: 12px; }
.ncb-program__meals { margin: 10px 0 0; color: var(--ncb-muted); font-size: .85rem; }

/* Lists */
.ncb-list__items { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }
.ncb-list__item { display: flex; gap: 10px; align-items: flex-start; }
.ncb-list__icon { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; }
.ncb-ta-icon { display: inline-block; vertical-align: middle; object-fit: contain; }
.ncb-list__icon svg, .ncb-list__icon .ncb-ta-icon { width: 26px; height: 26px; }
.ncb-list--yes .ncb-list__icon { background: #d1fae5; color: #065f46; }
.ncb-list--no .ncb-list__icon { background: #fee2e2; color: #991b1b; }
.ncb-list__body { display: flex; flex-direction: column; gap: 2px; font-size: .93rem; }
.ncb-list__body span { color: var(--ncb-muted); font-size: .85rem; }

/* Hotels */
.ncb-hotels__list { display: grid; gap: 16px; }
.ncb-hotel { display: grid; grid-template-columns: 220px 1fr; gap: 18px; border: 1px solid var(--ncb-line); border-radius: 12px; overflow: hidden; }
.ncb-hotel > .ncb-hotel__body:only-child { grid-column: 1 / -1; }
.ncb-hotel__image { width: 100%; height: 100%; object-fit: cover; }
.ncb-hotel__body { padding: 16px 18px 16px 0; }
.ncb-hotel__gallery {
	display: grid;
	grid-template-columns: repeat(var(--ncb-hotel-shots, 3), 1fr);
	gap: 8px;
	margin-top: 14px;
}
.ncb-hotel__shot { display: block; overflow: hidden; border-radius: 8px; line-height: 0; }
.ncb-hotel__shot img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform .25s ease; }
.ncb-hotel__shot:hover img { transform: scale(1.05); }
.ncb-hotel__name { margin: 0 0 6px; font-size: 1.05rem; }
.ncb-hotel__stars { color: #f59e0b; }
.ncb-hotel__meta, .ncb-hotel__notes { margin: 0 0 8px; color: var(--ncb-muted); font-size: .88rem; }

/* Gallery */
.ncb-gallery-fe__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; }
.ncb-gallery-fe__item img { width: 100%; height: 170px; object-fit: cover; border-radius: 8px; display: block; }

/* Videos + map */
.ncb-videos__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 18px; }
.ncb-video { margin: 0; }
.ncb-video__frame, .ncb-map__frame { position: relative; padding-top: 56.25%; border-radius: 10px; overflow: hidden; }
.ncb-map__frame { padding-top: 45%; }
.ncb-video__frame iframe, .ncb-map__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.ncb-video figcaption { margin-top: 8px; color: var(--ncb-muted); font-size: .88rem; }

/* Documents */
.ncb-docs__list { margin: 0; padding: 0; list-style: none; }
.ncb-docs__item { padding: 10px 0; border-bottom: 1px solid var(--ncb-line); }

/* Cards */
.ncb-cards { display: grid; gap: 24px; width: 100%; margin: 0 0 3rem; clear: both; }
.ncb-cards--1 { grid-template-columns: 1fr; }
.ncb-cards--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ncb-cards--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ncb-cards--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* One column: a full-width card, image beside the text (stacks on small screens). */
.ncb-cards--1 .ncb-card__link { display: grid; grid-template-columns: minmax(0, 44%) 1fr; align-items: stretch; }
.ncb-cards--1 .ncb-card__media { height: 100%; }
.ncb-cards--1 .ncb-card__media img { height: 100%; min-height: 320px; }
.ncb-cards--1 .ncb-card__body { align-self: center; padding: 32px 36px; }
.ncb-cards--1 .ncb-card__title { font-size: 1.6rem; }

@media (max-width: 1024px) {
	.ncb-cards--3, .ncb-cards--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 680px) {
	.ncb-cards--2, .ncb-cards--3, .ncb-cards--4 { grid-template-columns: 1fr; }
	.ncb-card__media img { height: 240px; }
	.ncb-cards--1 .ncb-card__link { grid-template-columns: 1fr; }
	.ncb-cards--1 .ncb-card__media img { min-height: 0; height: 240px; }
	.ncb-cards--1 .ncb-card__body { padding: 24px 26px; }
}
.ncb-card { display: flex; flex-direction: column; height: 100%; border: 1px solid #e4e9ef; border-radius: 12px; overflow: hidden; background: #fff; transition: transform .15s ease, box-shadow .15s ease; }
.ncb-card:hover { transform: translateY(-2px); box-shadow: 0 10px 30px rgba(16, 35, 59, .1); }
.ncb-card__link { display: flex; flex-direction: column; flex: 1 1 auto; color: inherit; text-decoration: none; }
.ncb-card__media { position: relative; display: block; }
.ncb-card__media img { width: 100%; height: 340px; object-fit: cover; display: block; }
.ncb-card__badge { position: absolute; top: 14px; left: 14px; padding: 5px 13px; border-radius: 999px; background: var(--ncb-badge-bg, #fef3c7); color: var(--ncb-badge-ink, #92400e); font-size: .82rem; font-weight: 700; }
.ncb-card__body { display: flex; flex-direction: column; flex: 1 1 auto; padding: 24px 26px; }
.ncb-card__title { color: inherit; text-decoration: none; }
.ncb-card__title:hover { color: var(--ncb-primary, #0f766e); }
.ncb-card__title { display: block; font-size: 1.4rem; font-weight: 700; line-height: 1.3; }
.ncb-card__note { display: block; margin: .2rem 0 0; font-size: .8rem; line-height: 1.35; color: var(--ncb-muted, #6b7280); }
.ncb-card__installments { margin: .5rem 0 0; }
.ncb-card__installments .ncb-badge { margin-bottom: 0; }
.ncb-card__toprow { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 14px; }
.ncb-card__when { display: flex; flex-direction: column; align-items: flex-end; text-align: right; margin-left: auto; }
.ncb-card__dates { display: block; color: var(--ncb-ink, #10233b); font-size: 1.1rem; font-weight: 800; letter-spacing: .01em; white-space: nowrap; }
.ncb-card__when .ncb-card__duration { margin-top: 2px; font-size: .9rem; }
.ncb-card__excerpt { display: block; margin-top: 12px; color: #5b6b7f; font-size: 1rem; line-height: 1.6; }
.ncb-card__foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: auto; padding-top: 20px; }
.ncb-card__pricewrap { display: flex; flex-direction: column; }
.ncb-card__price-label { font-size: .8rem; font-weight: 600; color: #5b6b7f; letter-spacing: .01em; margin-bottom: 2px; }
.ncb-card__price {
	font-weight: 800;
	color: var(--ncb-primary, #0f766e);
	font-size: 2.4rem;
	line-height: 1;
	/* The amount and its currency symbol are one thing to read: a wide number
	   like 690 would otherwise push the euro sign onto a line of its own. */
	white-space: nowrap;
}
.ncb-card__cta { display: inline-block; margin-left: auto; padding: 13px 20px; text-align: center; background: var(--ncb-card-cta-bg, var(--ncb-cta-bg, var(--ncb-primary, #0f766e))); color: var(--ncb-card-cta-ink, var(--ncb-cta-ink, #fff)); border: var(--ncb-card-cta-border, 0); border-radius: 8px; font-weight: 700; font-size: .82rem; text-transform: uppercase; letter-spacing: .04em; text-decoration: none; white-space: nowrap; transition: filter .15s ease; }
/* Dimming works on a filled button; on an outlined one there is nothing to
   dim, so the hover state fills it with its own border colour instead. */
.ncb-card__cta:hover { filter: brightness(1.12); color: var(--ncb-card-cta-ink, var(--ncb-cta-ink, #fff)); }
.ncb-card__cta { transition: filter .15s ease, background .15s ease, color .15s ease; }
.ncb-card__duration { color: #5b6b7f; font-size: .95rem; white-space: nowrap; }

.ncb-archive { max-width: 1120px; margin: 0 auto; padding: 0 20px 40px; }
.ncb-archive__spacer { width: 100%; flex: 0 0 auto; }
/* The ribbon runs edge to edge by escaping this column, and 100vw is a hair
   wider than the page when a scrollbar is present. Clip at body level, not on
   the archive itself — clipping there is what would cut the ribbon short. */
body:has(.ncb-archive__ribbon) { overflow-x: clip; }
/* Category ribbon — the same accent band as the excursion fact bar, so a
   category page and an excursion page clearly belong to the same site. It
   breaks out of the theme's content column to run edge to edge. */
.ncb-archive__ribbon {
	background: var(--ncb-accent, #f6bd32);
	/* Negative margins on both sides rather than width:100vw — 100vw includes
	   the scrollbar and would push a horizontal scrollbar onto the page. */
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
	margin-top: 0;
	margin-bottom: 0;
}
.ncb-archive__ribbon-inner {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 16px;
	max-width: 1560px;
	margin: 0 auto;
	padding: 14px 24px;
}
.ncb-archive__ribbon-icon {
	flex: 0 0 auto;
	width: 30px;
	height: 30px;
	background-color: var(--ncb-primary, #0f766e);
	-webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
	-webkit-mask-position: center; mask-position: center;
	-webkit-mask-size: contain; mask-size: contain;
}
.ncb-archive__title {
	margin: 0;
	color: var(--ncb-primary, #0f766e);
	font-size: 2rem;
	font-weight: 800;
	line-height: 1.15;
	text-align: center;
}
.ncb-archive__intro { max-width: 70ch; margin: 0 auto 32px; color: var(--ncb-muted, #5b6b7f); line-height: 1.6; text-align: center; }
.ncb-archive__intro p:last-child { margin-bottom: 0; }

@media (max-width: 640px) {
	/* On a narrow card the price and the booking button fight for the same
	   row. The price keeps its own line, the button takes the next one. */
	.ncb-card__foot { flex-direction: column; align-items: stretch; gap: 12px; }
	.ncb-card__cta { margin-left: 0; }
	.ncb-card__price { font-size: 2rem; }

	.ncb-archive__ribbon-inner { padding: 12px 16px; gap: 10px; }
	.ncb-archive__ribbon-icon { width: 24px; height: 24px; }
	.ncb-archive__title { font-size: 1.5rem; }
}
.ncb-elementor-placeholder { padding: 20px; border: 1px dashed #c9d2dd; border-radius: 8px; color: #5b6b7f; text-align: center; }

@media (max-width: 720px) {
	.ncb-program__day, .ncb-hotel { grid-template-columns: 1fr; }
	.ncb-hotel__body { padding: 0 16px 16px; }
	.ncb-hotel__gallery { grid-template-columns: repeat(2, 1fr); }
	.ncb-hotel__image { height: 200px; }
	.ncb-hero.has-image .ncb-hero__inner { margin-top: -30px; }
}

@media (prefers-reduced-motion: reduce) {
	.ncb-card { transition: none; }
	.ncb-card:hover { transform: none; }
}

/* ============================================================
   v1.1 — full-height hero, fact bar, bands, accordions, map,
   facilities, payment, media grid, enquiry panel.
   ============================================================ */


/* Bands + wrapper */
.ncb-band { width: 100%; }
.ncb-band--light { background: #fff; }
.ncb-band--muted { background: #eceff1; }
.ncb-wrap { max-width: 1080px; margin: 0 auto; padding: 48px 20px; }
.ncb-band--muted .ncb-wrap { padding: 56px 20px; }

/* Hero — full height, title over the image */
.ncb-hero { position: relative; display: flex; align-items: center; justify-content: center; overflow: hidden; margin: 0; }
.ncb-hero--full { min-height: 100vh; min-height: 100svh; }
.ncb-hero--tall { min-height: 70vh; }
.ncb-hero--compact { min-height: 420px; }
/* <picture> is a plain inline box, so it needs the same absolute placement the
   image had, or the hero collapses and the overlay text loses its backdrop. */
.ncb-hero__picture { position: absolute; inset: 0; display: block; }
.ncb-hero__picture .ncb-hero__image { position: static; }
.ncb-hero__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border-radius: 0; }
.ncb-hero__scrim { position: absolute; inset: 0; background: rgba(16, 35, 59, .34); }
.ncb-hero.has-image .ncb-hero__inner { position: relative; margin: 0; padding: 0 24px; max-width: 900px; background: none; box-shadow: none; text-align: center; color: #fff; }
.ncb-hero__inner { text-align: center; }
.ncb-hero__title { margin: 0; color: #fff; font-size: clamp(1.9rem, 4vw, 3rem); line-height: 1.15; text-shadow: 0 2px 24px rgba(0, 0, 0, .35); }
.ncb-hero__subtitle { display: block; margin-top: 8px; color: #fff; font-size: clamp(1rem, 1.6vw, 1.35rem); font-weight: 400; opacity: .95; }

/* Fact bar — the ribbon under the hero. One line on desktop: facts centred,
   the booking button and the printer inline at the end. */
.ncb-factbar { background: var(--ncb-accent, #f6bd32); width: 100%; }
.ncb-factbar__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 10px 22px;
	max-width: 1560px;
	margin: 0 auto;
	padding: 14px 24px;
}
.ncb-factbar__item {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	color: var(--ncb-accent-ink, #2b2100);
	font-size: 1rem;
	line-height: 1.35;
	white-space: nowrap;
}
.ncb-factbar__icon { display: inline-flex; flex: 0 0 auto; color: var(--ncb-accent-ink, #2b2100); }
.ncb-factbar__icon svg, .ncb-factbar__icon .ncb-ta-icon { width: 18px; height: 18px; }
.ncb-factbar__label { font-weight: 400; }
.ncb-factbar__value { font-weight: 700; }

/* Booking button + printer, kept together on the same line as the facts. */
.ncb-factbar__actions { display: inline-flex; align-items: center; flex-wrap: nowrap; gap: 10px; }
.ncb-factbar__cta {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	padding: 11px 22px;
	border-radius: 6px;
	background: var(--ncb-cta-bg, #111418);
	color: var(--ncb-cta-ink, #fff);
	font-size: .92rem;
	font-weight: 700;
	letter-spacing: .04em;
	line-height: 1.2;
	text-decoration: none;
	text-transform: uppercase;
	white-space: nowrap;
	transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
}
.ncb-factbar__cta:hover,
.ncb-factbar__cta:focus-visible { filter: brightness(.92); box-shadow: 0 4px 16px rgba(0, 0, 0, .28); transform: translateY(-1px); }
.ncb-factbar__print {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	flex: 0 0 auto;
	border-radius: 6px;
	color: var(--ncb-accent-ink, #2b2100);
	text-decoration: none;
	transition: color .12s ease, background .12s ease, transform .12s ease;
}
.ncb-factbar__print:hover { color: #000; background: rgba(43, 33, 0, .1); transform: translateY(-1px); }
.ncb-factbar__print svg { display: block; }

@media (max-width: 1180px) {
	.ncb-factbar__item, .ncb-factbar__cta { font-size: .9rem; }
	.ncb-factbar__inner { gap: 8px 16px; padding: 13px 18px; }
}

@media (max-width: 820px) {
	.ncb-factbar__inner { flex-direction: column; align-items: center; gap: 12px; padding: 18px 20px; text-align: center; }
	.ncb-factbar__actions { justify-content: center; }
}

/* Section heading with icon */
.ncb-heading { display: flex; align-items: center; gap: 12px; margin: 0 0 18px; font-size: 1.5rem; line-height: 1.2; }
.ncb-heading__icon { display: inline-flex; color: #10233b; }
.ncb-heading__icon .ncb-ta-icon { width: 30px; height: 30px; }

/* Intro: map + description */
.ncb-intro { display: grid; grid-template-columns: 300px 1fr; gap: 40px; align-items: start; }
.ncb-intro__map { padding: 8px; }
.ncb-map-svg { width: 100%; height: auto; display: block; }
.ncb-map-svg__pin { animation: ncb-pin-in .5s ease-out both; }
@keyframes ncb-pin-in { from { transform: translateY(-8px) scale(.8); opacity: 0; } }
.ncb-installments { margin: 12px 0 0; text-align: center; }
/* Informational marks under the map — scheme logos and the like. They sit in
   one centred row, wrapping onto a second only when the space runs out. */
.ncb-map-banners { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 18px; margin: 22px 0 0; }
.ncb-map-banners__item { display: block; width: auto; height: 64px; max-width: 100%; object-fit: contain; }
.ncb-installments__badge { display: inline-block; padding: 6px 16px; border-radius: 999px; background: var(--ncb-badge-bg, #f0b400); color: var(--ncb-badge-ink, #3a2c00); font-size: .85rem; font-weight: 700; }
.ncb-intro__title { margin: 0 0 12px; font-size: 1.35rem; }
.ncb-intro__subtitle { margin: 24px 0 10px; font-size: 1.1rem; }

/* Accordion */
.ncb-accordion__item { margin-bottom: 6px; }
/* Themes routinely shout at every <button>. A day reads "1st day · 28/11/2026
   — Patra, Ioannina", written the way the office wrote it, so the capitals and
   the letter-spacing have to be turned back off here. */
.ncb-accordion__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; padding: 11px 16px; border: 0; border-radius: 4px; background: var(--ncb-accent, #f0b400); color: var(--ncb-accent-ink, #3a2c00); font-size: .92rem; font-weight: 600; text-align: left; text-transform: none; letter-spacing: normal; cursor: pointer; }
.ncb-accordion__head:hover { filter: brightness(.96); }
.ncb-accordion__sign { flex: 0 0 auto; width: 12px; height: 12px; position: relative; }
.ncb-accordion__sign::before, .ncb-accordion__sign::after { content: ""; position: absolute; background: currentColor; transition: transform .18s ease; }
.ncb-accordion__sign::before { top: 5px; left: 0; width: 12px; height: 2px; }
.ncb-accordion__sign::after { top: 0; left: 5px; width: 2px; height: 12px; }
.ncb-accordion__head[aria-expanded="true"] .ncb-accordion__sign::after { transform: scaleY(0); }
.ncb-accordion__panel { padding: 14px 16px; border: 1px solid var(--ncb-line); border-top: 0; border-radius: 0 0 4px 4px; background: #fff; }
.ncb-accordion__meta { margin: 8px 0 0; color: var(--ncb-muted); font-size: .85rem; }
.ncb-accordion--boxed .ncb-accordion__head { background: #f6f7f9; color: #10233b; border: 1px solid var(--ncb-line); font-weight: 600; }
.ncb-accordion--boxed .ncb-accordion__sign::before, .ncb-accordion--boxed .ncb-accordion__sign::after { background: #10233b; }

/* Facilities + payment */
.ncb-amenities { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: start; }
.ncb-amenities__list { margin: 0; padding: 0; list-style: none; }
.ncb-amenities__item { display: flex; align-items: center; gap: 10px; padding: 7px 0; font-size: .93rem; color: #10233b; }
.ncb-amenities__item svg, .ncb-amenities__item .ncb-ta-icon { color: var(--ncb-yellow, #d99f00); flex: 0 0 auto; width: 30px; height: 30px; }
.ncb-payment__title { margin: 0 0 8px; font-size: 1rem; }
.ncb-payment__banks { margin: 0 0 16px; padding-left: 18px; color: var(--ncb-muted); font-size: .85rem; }
.ncb-payment__banks li { margin-bottom: 4px; }
.ncb-richtext--sm { font-size: .88rem; color: var(--ncb-muted); }

/* Gallery + media + form */
.ncb-band--split { background: #eceff1; }
.ncb-split { display: grid; grid-template-columns: 1fr 1fr; }
.ncb-split__left { padding: 48px 32px; }
.ncb-split__right { background: var(--ncb-accent, #f0b400); color: var(--ncb-accent-ink, #3a2c00); padding: 48px 32px; }
.ncb-split__left .ncb-section { margin-bottom: 32px; max-width: none; }
.ncb-media__title, .ncb-split__left .ncb-section__title { font-size: 1.5rem; margin-bottom: 16px; }
.ncb-media__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 16px; }
.ncb-media__item { margin: 0; }
.ncb-media__frame { position: relative; padding-top: 160%; border-radius: 8px; overflow: hidden; background: #d7dce1; }
.ncb-media__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.ncb-media__item--youtube .ncb-media__frame, .ncb-media__item--vimeo .ncb-media__frame { padding-top: 56.25%; }
.ncb-media__item figcaption { margin-top: 6px; color: #5b6b7f; font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; text-align: center; }
.ncb-form__title { margin: 0 0 20px; font-size: 1.7rem; color: var(--ncb-accent-ink, #3a2c00); }
.ncb-form__body label { color: var(--ncb-accent-ink, #3a2c00); font-size: .82rem; font-weight: 600; }
.ncb-form__body input[type="text"], .ncb-form__body input[type="email"], .ncb-form__body input[type="tel"], .ncb-form__body input[type="number"], .ncb-form__body textarea, .ncb-form__body select { width: 100%; border: 1px solid rgba(58, 44, 0, .25); border-radius: 4px; background: #fff; }
.ncb-form__body button, .ncb-form__body input[type="submit"] { background: #1f6fd0; color: #fff; border: 0; border-radius: 4px; padding: 9px 20px; font-weight: 600; cursor: pointer; }

@media (max-width: 900px) {
	.ncb-intro, .ncb-amenities, .ncb-split { grid-template-columns: 1fr; }
	.ncb-intro__map { max-width: 320px; margin: 0 auto; }
	.ncb-split__left, .ncb-split__right { padding: 36px 20px; }
	.ncb-hero--full { min-height: 78vh; }
}

/* ============================================================
   v2.0 — wider, calmer, premium. True 50/50 columns, a map that
   earns its space, amenities you actually notice, the Media Kit,
   the native enquiry form, and category features.
   ============================================================ */

/* Wider everywhere. The old 1080px felt like a blog, not an operator. */
.ncb-wrap { max-width: 1360px; padding: 64px 32px; }
.ncb-band--muted .ncb-wrap { padding: 72px 32px; }
.ncb-excursion .ncb-section { max-width: none; }
.ncb-richtext { font-size: 1.05rem; line-height: 1.75; }
.ncb-richtext--lg { font-size: 1.12rem; line-height: 1.8; }

/* Hero: categories as pills under the title. */
.ncb-hero__cats { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 18px 0 0; padding: 0; list-style: none; }
.ncb-hero__cats a { display: inline-block; padding: 5px 15px; border: 1px solid rgba(255, 255, 255, .65); border-radius: 999px; color: #fff; font-size: .84rem; font-weight: 600; letter-spacing: .03em; text-decoration: none; text-transform: uppercase; backdrop-filter: blur(2px); }
.ncb-hero__cats a:hover { background: #fff; color: #111418; }



/* Intro: a true 50/50 split, and a map big enough to read. */
.ncb-intro { grid-template-columns: 1fr 1fr; gap: 56px; }
.ncb-intro__gmap { position: relative; padding-top: 68%; border-radius: 14px; overflow: hidden; border: 1px solid var(--ncb-line); margin-bottom: 18px; }
.ncb-intro__gmap iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.ncb-intro__map { padding: 0; }
.ncb-intro__title { font-size: 1.75rem; margin-bottom: 16px; }
.ncb-installments__badge { font-size: .95rem; padding: 8px 20px; }

/* Accommodation deserves room: nearly full width, generous cards. */
.ncb-hotels__grid { grid-template-columns: 1fr; gap: 20px; }
.ncb-hotel { display: grid; grid-template-columns: 320px 1fr; gap: 0; align-items: stretch; }
.ncb-hotel__image { min-height: 220px; object-fit: cover; }
.ncb-hotel__body { padding: 24px 28px; }
.ncb-hotel__body:only-child { grid-column: 1 / -1; }
.ncb-hotel__name { font-size: 1.3rem; }
.ncb-hotel__notes { white-space: pre-line; }

/* Price no longer squats next to the hotels. */
.ncb-price, .ncb-transport { display: block; margin-bottom: 40px; }
.ncb-price__main { display: flex; flex-wrap: wrap; align-items: center; gap: 32px; }

/* Included / not included: wide, readable, two roomy columns. */
.ncb-section--split { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; }
.ncb-list__item { font-size: 1.02rem; padding: 10px 0; }
.ncb-notes .ncb-richtext, .ncb-guidelines .ncb-richtext { max-width: 105ch; }

/* Amenities: the point is that people notice them. */
.ncb-amenities { grid-template-columns: 1fr 1fr; gap: 56px; }
.ncb-amenities__list { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 24px; }
.ncb-amenities__item { gap: 16px; padding: 14px 0; font-size: 1.1rem; font-weight: 600; }
.ncb-amenities__item svg, .ncb-amenities__item .ncb-ta-icon { width: 40px; height: 40px; stroke-width: 1.5; }
.ncb-payment__title { font-size: 1.15rem; }
.ncb-payment__banks { font-size: .95rem; }

/* Departure point. */
.ncb-departure { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px; margin-top: 40px; padding: 24px 28px; border: 1px solid var(--ncb-line); border-radius: 14px; background: #fafbfc; }
.ncb-departure__label { display: block; color: var(--ncb-muted); font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; margin-bottom: 4px; }
.ncb-departure__point { font-size: 1.08rem; font-weight: 600; color: var(--ncb-ink); }
.ncb-btn { display: inline-flex; align-items: center; gap: 9px; padding: 12px 22px; border-radius: 6px; font-weight: 600; text-decoration: none; }
.ncb-btn--dark { background: #111418; color: #fff; }
.ncb-btn--dark:hover { background: #000; color: #fff; }

/* Category features. */
.ncb-feature__stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; margin-bottom: 28px; }
.ncb-feature__stat { padding: 18px 20px; border-radius: 12px; background: #fff; border: 1px solid var(--ncb-line); }
.ncb-feature__stat-label { display: block; color: var(--ncb-muted); font-size: .76rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; margin-bottom: 6px; }
.ncb-feature__stat-value { font-size: 1.22rem; font-weight: 700; color: var(--ncb-ink); }
.ncb-feature__blocks { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; }
.ncb-feature__block-title { margin: 0 0 8px; font-size: 1.1rem; }

/* Media Kit — nothing to do with the gallery. */
.ncb-media__intro { margin: -6px 0 22px; color: var(--ncb-muted); }
.ncb-media__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 22px; align-items: start; }
.ncb-mediacard { margin: 0; border: 1px solid var(--ncb-line); border-radius: 14px; overflow: hidden; background: #fff; }
.ncb-mediacard__frame { position: relative; background: #eef1f4; }
.ncb-mediacard__frame img { display: block; width: 100%; height: auto; border: 0; }
.ncb-mediacard__frame a { display: block; line-height: 0; }
.ncb-mediacard__frame video { display: block; width: 100%; height: auto; border: 0; }
.ncb-mediacard__frame iframe { display: block; width: 100%; aspect-ratio: 16 / 9; height: auto; border: 0; }
.ncb-mediacard--tall .ncb-mediacard__frame iframe { aspect-ratio: 9 / 16; }
@media (max-width: 700px) { .ncb-media__grid { grid-template-columns: 1fr; } }
.ncb-mediacard__link { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-weight: 600; }
.ncb-mediacard__foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; }
.ncb-mediacard__kind { display: block; color: var(--ncb-muted); font-size: .68rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
.ncb-mediacard__title { display: block; font-size: .92rem; font-weight: 600; color: var(--ncb-ink); }
.ncb-mediacard__dl { display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; padding: 7px 12px; border-radius: 6px; background: #111418; color: #fff; font-size: .78rem; font-weight: 600; text-decoration: none; }
.ncb-mediacard__dl:hover { background: #000; color: #fff; }

/* The native enquiry form. */
.ncb-eform__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.ncb-eform__field--full { grid-column: 1 / -1; }
.ncb-eform__label { display: block; margin-bottom: 6px; color: var(--ncb-form-ink, #2b2100); font-size: .84rem; font-weight: 700; }
.ncb-eform__req { color: #b23b3b; }
.ncb-eform input[type="text"], .ncb-eform input[type="email"], .ncb-eform input[type="tel"], .ncb-eform input[type="number"], .ncb-eform input[type="date"], .ncb-eform input[type="file"], .ncb-eform textarea, .ncb-eform select { width: 100%; padding: 11px 13px; border: 1px solid rgba(43, 33, 0, .22); border-radius: 6px; background: #fff; color: #1c1c1c; font: inherit; font-size: .96rem; }
.ncb-eform textarea { resize: vertical; }
.ncb-eform input:focus, .ncb-eform textarea:focus, .ncb-eform select:focus { outline: 2px solid #111418; outline-offset: 1px; }
.ncb-eform__gdpr { display: flex; align-items: flex-start; gap: 10px; margin: 18px 0; color: var(--ncb-form-ink, #2b2100); font-size: .88rem; line-height: 1.5; }
.ncb-eform__gdpr input { margin-top: 3px; }
.ncb-eform__radios { display: flex; flex-wrap: wrap; gap: 14px; }
.ncb-eform__radio, .ncb-eform__check { display: inline-flex; align-items: center; gap: 7px; color: var(--ncb-form-ink, #2b2100); font-size: .92rem; }
.ncb-eform__submit { padding: 13px 30px; border: 0; border-radius: 6px; background: #111418; color: #fff; font-size: 1rem; font-weight: 700; cursor: pointer; }
.ncb-eform__submit:hover { filter: brightness(.92); }
.ncb-eform__notice { padding: 12px 16px; margin-bottom: 18px; border-radius: 6px; font-size: .94rem; font-weight: 600; }
.ncb-eform__notice--ok { background: #10603f; color: #fff; }
.ncb-eform__notice--error { background: #8f2323; color: #fff; }
.ncb-captcha { margin: 16px 0; }
.ncb-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.ncb-split__left { padding: 64px 44px; }
.ncb-split__right { padding: 64px 44px; }

@media (max-width: 1024px) {
	.ncb-intro, .ncb-amenities, .ncb-section--split, .ncb-feature__blocks { grid-template-columns: 1fr; gap: 32px; }
	.ncb-hotel { grid-template-columns: 1fr; }
	.ncb-wrap { padding: 48px 20px; }
}

@media (max-width: 700px) {
	.ncb-eform__grid, .ncb-amenities__list { grid-template-columns: 1fr; }
	.ncb-split__left, .ncb-split__right { padding: 40px 20px; }
}

/* Hotels living inside the Prices & accommodation box. */
.ncb-price__hotels { margin-top: 16px; }
.ncb-price__hotels .ncb-hotels__list { gap: 16px; }

/* Excursions list (table) + print button */
.ncb-list { --ncb-primary: #0f766e; --ncb-primary-ink: #fff; width: 100%; margin: 0 0 2rem; }
.ncb-list__bar { display: flex; justify-content: flex-end; margin-bottom: 12px; }
.ncb-list__print { display: inline-flex; align-items: center; gap: 8px; padding: 9px 16px; border-radius: 7px; background: var(--ncb-primary, #0f766e); color: var(--ncb-primary-ink, #fff); font-size: .9rem; font-weight: 600; text-decoration: none; transition: filter .12s ease; }
.ncb-list__print:hover { filter: brightness(.92); color: var(--ncb-primary-ink, #fff); }
.ncb-list__table { width: 100%; border-collapse: collapse; }
.ncb-list__table thead th { text-align: left; padding: 12px 14px; font-size: .78rem; text-transform: uppercase; letter-spacing: .05em; color: #5b6b7f; border-bottom: 2px solid var(--ncb-primary, #0f766e); }
.ncb-list__table th.ncb-list__price, .ncb-list__table td.ncb-list__price { text-align: right; white-space: nowrap; }
.ncb-list__table tbody td { padding: 13px 14px; border-bottom: 1px solid var(--ncb-line, #e4e9ef); vertical-align: middle; }
.ncb-list__table td.ncb-list__date { white-space: nowrap; font-weight: 700; color: var(--ncb-ink, #10233b); }
.ncb-list__table td.ncb-list__title a { color: var(--ncb-ink, #10233b); text-decoration: none; font-weight: 600; }
.ncb-list__table td.ncb-list__title a:hover { color: var(--ncb-primary, #0f766e); }
.ncb-list__table td.ncb-list__price { font-weight: 700; color: var(--ncb-primary, #0f766e); }
.ncb-list__table tbody tr:hover { background: rgba(0,0,0,.02); }
.ncb-list__empty { padding: 24px; text-align: center; color: #5b6b7f; }
@media (max-width: 520px) {
	.ncb-list__table thead { display: none; }
	.ncb-list__table tbody td { display: block; border: 0; padding: 4px 0; }
	.ncb-list__table tbody tr { display: block; padding: 14px 0; border-bottom: 1px solid var(--ncb-line, #e4e9ef); }
	.ncb-list__table td.ncb-list__price { text-align: left; }
}

/* Trip icons on the excursion card */
.ncb-card__icons { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.ncb-card__icon { display: inline-block; width: 40px; height: 40px; background-color: var(--ncb-primary, #0f766e); -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: center; mask-position: center; -webkit-mask-size: contain; mask-size: contain; }
.ncb-cards--1 .ncb-card__icons { margin-bottom: 16px; }

/* The text sits in its own rounded card inside the box, exactly as a hotel
   does, so the two sections read as the same kind of thing. */
.ncb-transport__body {
	padding: 18px 20px;
	border: 1px solid var(--ncb-line, #e4e9ef);
	border-radius: 12px;
	background: #fff;
}
.ncb-transport__body p:last-child { margin-bottom: 0; }

/* The single-room supplement belongs with the rooms, not with the ticket. */
.ncb-hotels__supplement { margin: 14px 0 0; padding-top: 14px; border-top: 1px solid var(--ncb-line, #e4e9ef); font-weight: 700; color: var(--ncb-ink, #10233b); }

/* Excursion search. The results float over the page so nothing below them
   jumps as the visitor types. */
.ncb-search { position: relative; max-width: 560px; margin: 0 auto; }
.ncb-search__field { position: relative; display: flex; align-items: center; }
/* Written against .ncb-search so it outweighs a theme's own input rules —
   several reset the padding, which drops the text straight onto the icon. */
.ncb-search .ncb-search__icon { position: absolute; left: 18px; top: 50%; transform: translateY(-50%); display: flex; color: var(--ncb-muted, #5b6b7f); pointer-events: none; }
.ncb-search .ncb-search__input {
	width: 100%;
	padding: 15px 48px 15px 52px;
	margin: 0;
	line-height: 1.4;
	box-sizing: border-box;
	border: 1px solid var(--ncb-line, #e4e9ef);
	border-radius: 999px;
	background: #fff;
	color: var(--ncb-ink, #10233b);
	font: inherit;
	font-size: 1rem;
	box-shadow: 0 1px 2px rgba(16, 35, 59, .05);
}
.ncb-search .ncb-search__input:focus { outline: none; border-color: var(--ncb-primary, #0f766e); box-shadow: 0 0 0 3px rgba(15, 118, 110, .12); }
.ncb-search__input::-webkit-search-cancel-button { cursor: pointer; }
.ncb-search__spinner {
	position: absolute; right: 20px; width: 16px; height: 16px;
	border: 2px solid var(--ncb-line, #e4e9ef);
	border-top-color: var(--ncb-primary, #0f766e);
	border-radius: 50%;
	animation: ncb-spin .7s linear infinite;
}
@keyframes ncb-spin { to { transform: rotate(360deg); } }

.ncb-search__results,
.ncb-search__empty {
	position: absolute; z-index: 20; left: 0; right: 0; top: calc(100% + 8px);
	padding: 8px;
	border: 1px solid var(--ncb-line, #e4e9ef);
	border-radius: 14px;
	background: #fff;
	box-shadow: 0 12px 30px rgba(16, 35, 59, .12);
}
.ncb-search__empty { margin: 0; padding: 16px 20px; color: var(--ncb-muted, #5b6b7f); }
.ncb-search__item { display: flex; align-items: center; gap: 14px; padding: 10px 12px; border-radius: 10px; color: inherit; text-decoration: none; }
.ncb-search__item:hover { background: #f4f7fa; }
.ncb-search__thumb { flex: 0 0 auto; width: 56px; height: 44px; border-radius: 8px; background: #eef2f6; object-fit: cover; }
.ncb-search__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ncb-search__name { font-weight: 700; line-height: 1.3; }
.ncb-search__meta { color: var(--ncb-muted, #5b6b7f); font-size: .85rem; }

@media (max-width: 640px) {
	.ncb-search__input { padding: 13px 42px 13px 44px; }
	.ncb-search__thumb { width: 46px; height: 38px; }
}

/* ============================================================
   Phone layout for the excursion header. Written last on purpose:
   the base hero rules further up would otherwise override it.
   ============================================================ */
@media (max-width: 767px) {
	/* The picture decides the height, not the screen, so the portrait image is
	   shown whole instead of being cropped to fill a fixed box. The padding
	   clears whatever the site floats over the top of the page. */
	.ncb-hero.has-image {
		display: block;
		min-height: 0;
		height: auto;
		margin-bottom: 0;
		padding-top: var(--ncb-hero-mobile-offset, 100px);
	}
	.ncb-hero.has-image .ncb-hero__picture { position: static; display: block; }
	.ncb-hero.has-image .ncb-hero__image {
		position: static;
		width: 100%;
		height: auto;
		object-fit: fill;
		border-radius: 0;
	}

	/* Title, subtitle and categories sit centred on the picture rather than
	   in a block underneath, which is what left an empty strip above the fact
	   bar. The scrim darkens the whole picture evenly so the text reads
	   wherever it falls, instead of only along the bottom edge. */
	.ncb-hero.has-image .ncb-hero__scrim {
		top: var(--ncb-hero-mobile-offset, 100px);
		bottom: 0;
		height: auto;
		background: rgba(16, 35, 59, .42);
	}
	.ncb-hero.has-image .ncb-hero__inner {
		position: absolute;
		left: 0;
		right: 0;
		/* Centred within the picture, ignoring the clearance above it. */
		top: var(--ncb-hero-mobile-offset, 100px);
		bottom: 0;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		margin: 0;
		padding: 0 20px;
		background: none;
		box-shadow: none;
	}
	.ncb-hero.has-image .ncb-hero__cats { margin-top: 12px; }
}

/* Destinations map: one marker per upcoming excursion, pulsing in turn. */
.ncb-dmap { display: block; }
.ncb-dmap--link { cursor: pointer; }
.ncb-dmap__svg { display: block; width: 100%; height: auto; }
.ncb-dmap--link:hover .ncb-dmap__svg path { fill: #dbe1e8; }
.ncb-dmap__dot { transform-origin: center; }
.ncb-dmap__halo { transform-origin: center; opacity: 0; }

/* The halo swells and fades, one marker after another — the delay is set per
   marker so the map breathes across its points instead of blinking as one. */
@keyframes ncb-dmap-pulse {
	0%   { opacity: .55; transform: scale(.35); }
	70%  { opacity: 0;   transform: scale(1.6); }
	100% { opacity: 0;   transform: scale(1.6); }
}
@keyframes ncb-dmap-beat {
	0%, 100% { transform: scale(1); }
	12%      { transform: scale(1.35); }
}
.ncb-dmap__halo { animation: ncb-dmap-pulse 3.6s ease-out infinite; animation-delay: var(--ncb-dmap-delay, 0s); }
.ncb-dmap__dot  { animation: ncb-dmap-beat  3.6s ease-in-out infinite; animation-delay: var(--ncb-dmap-delay, 0s); }

@media (prefers-reduced-motion: reduce) {
	.ncb-dmap__halo, .ncb-dmap__dot { animation: none; }
	.ncb-dmap__halo { opacity: .3; }
}

/* ============================================================
   Promotional maps: Greece and the world, side by side.
   ============================================================ */
.ncb-promomaps {
	display: grid;
	/* Column weights taken from the agency's own reference layout: the world
	   ends up a little over half again as wide as Greece and about a tenth
	   taller, both centred on the same line. Equal halves would leave Greece
	   filling its side while the world shrank to a strip near the top. */
	grid-template-columns: 1fr 1.61fr;
	align-items: center;
	gap: 32px;
	max-width: 1400px;
	margin: 0 auto;
	padding: 20px;
}
.ncb-promomaps__panel {
	display: block;
	padding: 12px;
	background: none;
	color: inherit;
	text-decoration: none;
	transition: transform .2s ease;
}
/* Only the land reacts to the pointer. Tinting the panel as well drew a grey
   rectangle around the map, which is the one shape the design does not have. */
a.ncb-promomaps__panel:hover { background: none; transform: translateY(-2px); }
.ncb-promomaps__svg { overflow: visible; }
.ncb-promomaps__svg { display: block; width: 100%; height: auto; }
.ncb-promomaps__land { fill: #c8ccd2; transition: fill .2s ease; }
a.ncb-promomaps__panel:hover .ncb-promomaps__land { fill: var(--ncb-primary, #0f766e); }
.ncb-promomaps__label {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	margin-top: 14px;
	color: var(--ncb-ink, #10233b);
	font-size: 1.15rem;
	font-weight: 700;
	text-align: center;
}
.ncb-promomaps__count { color: var(--ncb-muted, #5b6b7f); font-size: .9rem; font-weight: 500; }

/* Each pin fades in and out on its own clock — a different start time and a
   slightly different length per marker — so the map keeps flickering quietly
   the whole time rather than blinking in unison once. */
.ncb-promomaps__pin { fill: var(--ncb-accent, #f0b400); stroke: #fff; stroke-width: 1.6; }
.ncb-promomaps__eye { fill: #fff; }
.ncb-promomaps__marker {
	animation: ncb-blink var(--ncb-pulse-time, 2.6s) ease-in-out infinite;
	animation-delay: var(--ncb-pulse-delay, 0s);
}
.ncb-promomaps__halo {
	fill: var(--ncb-accent, #f0b400);
	transform-origin: center;
	transform-box: fill-box;
	animation: ncb-pulse calc(var(--ncb-pulse-time, 2.6s) * 1.6) ease-out infinite;
	animation-delay: var(--ncb-pulse-delay, 0s);
}
@keyframes ncb-blink {
	0%, 100% { opacity: 1; }
	50%      { opacity: .28; }
}
@keyframes ncb-pulse {
	0%   { opacity: .5; transform: scale(.4); }
	70%  { opacity: 0;  transform: scale(1.8); }
	100% { opacity: 0;  transform: scale(1.8); }
}

@media (prefers-reduced-motion: reduce) {
	.ncb-promomaps__marker { animation: none; }
	.ncb-promomaps__halo { animation: none; opacity: .3; }
}

@media (max-width: 820px) {
	/* Stacked on a phone: Greece first, the world underneath. */
	.ncb-promomaps { grid-template-columns: 1fr; gap: 28px; }
}

/* A map placed on its own. Its height is what is fixed, not its width, so two
   of them dropped into columns of different widths still come out matched. */
.ncb-promomaps--single { display: block; max-width: none; padding: 0; }
.ncb-promomaps--single .ncb-promomaps__panel { display: flex; justify-content: center; padding: 0; }
.ncb-promomaps--single .ncb-promomaps__svg {
	width: auto;
	max-width: 100%;
	height: var(--ncb-map-height, 420px);
}

@media (max-width: 820px) {
	/* On a narrow screen the height gives way: filling the width matters more
	   than holding the pair to the same scale. */
	.ncb-promomaps--single .ncb-promomaps__svg { width: 100%; height: auto; }
}

/* One map per continent. Each is sized by height so continents of very
   different shapes still read as the same weight on the page, and the row
   wraps on its own as the programme grows. */
.ncb-promomaps--continents {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 24px;
	max-width: none;
}
.ncb-promomaps--continents .ncb-promomaps__panel { padding: 0; }
.ncb-promomaps--continents .ncb-promomaps__svg {
	width: auto;
	max-width: 100%;
	height: var(--ncb-map-height, 300px);
}

@media (max-width: 820px) {
	/* Greece takes the full width on its own line, the continents wrap in
	   underneath it — the home map should not be one of several on a row. */
	.ncb-promomaps--continents { gap: 18px; }
	.ncb-promomaps--continents .ncb-promomaps__panel--greece { flex: 0 0 100%; }
	.ncb-promomaps--continents .ncb-promomaps__svg { height: calc(var(--ncb-map-height, 300px) * .72); }
	.ncb-promomaps--continents .ncb-promomaps__panel--greece .ncb-promomaps__svg { height: calc(var(--ncb-map-height, 300px) * 1.05); }
}

/* Themes often swap the typeface, weight or spacing of a link on hover. Inside
   the plugin nothing about the lettering changes when the pointer arrives —
   only colour and background do, which is what a hover state is for.

   Marked important because a theme's stylesheet frequently loads after this
   one, and without it the theme simply wins and the lettering jumps anyway.

   Plain links inherit their lettering from the page, so "inherit" restores
   exactly what they had. The buttons carry their own weight and spacing, so
   those are repeated rather than inherited, which would flatten them. */
.ncb-excursion a:hover, .ncb-excursion a:focus,
.ncb-cards a:hover, .ncb-cards a:focus,
.ncb-archive a:hover, .ncb-archive a:focus,
.ncb-list a:hover, .ncb-list a:focus,
.ncb-eform a:hover, .ncb-eform a:focus,
.ncb-search a:hover, .ncb-search a:focus,
.ncb-promomaps a:hover, .ncb-promomaps a:focus,
.ncb-price a:hover, .ncb-price a:focus,
.ncb-transport a:hover, .ncb-transport a:focus,
.ncb-section a:hover, .ncb-section a:focus {
	font-family: inherit !important;
	font-size: inherit !important;
	font-weight: inherit !important;
	font-style: inherit !important;
	letter-spacing: inherit !important;
	text-transform: inherit !important;
}

.ncb-card__cta:hover, .ncb-card__cta:focus {
	font-family: inherit !important;
	font-size: .82rem !important;
	font-weight: 700 !important;
	font-style: normal !important;
	letter-spacing: .04em !important;
	text-transform: uppercase !important;
}

.ncb-factbar__cta:hover, .ncb-factbar__cta:focus {
	font-family: inherit !important;
	font-size: .92rem !important;
	font-weight: 700 !important;
	font-style: normal !important;
	letter-spacing: .04em !important;
	text-transform: uppercase !important;
}

.ncb-accordion__head:hover, .ncb-accordion__head:focus {
	font-family: inherit !important;
	font-size: .92rem !important;
	font-weight: 600 !important;
	font-style: normal !important;
	letter-spacing: normal !important;
	text-transform: none !important;
}

/* Two photos per card. The second sits exactly over the first and fades in,
   which is why both are absolutely placed once there is an alternate — a card
   with only one photo is left completely alone. */
.ncb-card__media.has-alt { overflow: hidden; }
.ncb-card__media.has-alt .ncb-card__img--alt {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity .45s ease;
}
.ncb-card__media.has-alt:hover .ncb-card__img--alt,
.ncb-card__media.has-alt.is-alt .ncb-card__img--alt { opacity: 1; }

/* Arrows are for touch, where there is no pointer to hover with. They are
   hidden wherever hovering actually works, so a desktop card stays clean. */
.ncb-card__nav {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	display: none;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, .82);
	color: #10233b;
	cursor: pointer;
}
.ncb-card__nav--prev { left: 10px; }
.ncb-card__nav--next { right: 10px; }

@media (hover: none) {
	.ncb-card__media.has-alt .ncb-card__nav { display: flex; }
	/* Without a pointer there is no hover state to fade back out of. */
	.ncb-card__media.has-alt:hover .ncb-card__img--alt { opacity: 0; }
	.ncb-card__media.has-alt.is-alt .ncb-card__img--alt { opacity: 1; }
}

/* Some themes float their header over the page, which then sits on top of the
   first thing below it. Moving the section down with a margin keeps the header
   image exactly the height it was — padding, which was the obvious first try,
   makes the section taller instead of moving it. */
@media (min-width: 768px) {
	.ncb-hero { margin-top: var(--ncb-hero-top-gap, 0); }
}
