/*
 Theme Name:   GeneratePress Child
 Theme URI:    https://worldbnb.top
 Description:  Tema hijo de GeneratePress para worldbnb.top.
 Author:       worldbnb.top
 Template:     generatepress
 Version:      0.12.41
 Requires PHP: 8.1
 Text Domain:  generatepress-child
*/

/* ---------- Design tokens ---------- */
:root {
	--tc-ink: #1b2430;
	--tc-muted: #5d6673;
	--tc-bg: #faf8f4;
	--tc-surface: #ffffff;
	--tc-sand: #f1ece3;
	--tc-line: #e6e0d6;
	--tc-primary: #0f5e66;
	--tc-primary-dark: #0a434a;
	--tc-accent: #d9643a;
	--tc-accent-dark: #b44c25;
	--tc-star: #e3a21a;
	--tc-radius: 14px;
	--tc-radius-small: 8px;
	--tc-shadow: 0 1px 2px rgba(27, 36, 48, .06), 0 8px 24px rgba(27, 36, 48, .06);
	--tc-serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;
	--tc-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	--tc-width: 1240px;
}

/* ---------- Base ---------- */
html { scroll-behavior: smooth; }
body {
	background: var(--tc-bg);
	color: var(--tc-ink);
	font-family: var(--tc-sans);
	font-size: 17px;
	line-height: 1.65;
	overflow-x: clip;
}
h1, h2, h3, h4, .tc-footer-logo, .main-title {
	font-family: var(--tc-serif);
	color: var(--tc-ink);
	letter-spacing: -.01em;
	line-height: 1.2;
}
h2 { font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); margin: 2.2rem 0 1rem; }
h3 { font-size: 1.25rem; }
a { color: var(--tc-primary); text-underline-offset: 3px; }
a:hover, a:focus { color: var(--tc-accent-dark); }
:focus-visible { outline: 3px solid var(--tc-accent); outline-offset: 2px; }
img { border-radius: inherit; }
[id] { scroll-margin-top: 90px; }

/* GeneratePress containers: one flat column, our templates handle spacing. */
.site.grid-container { max-width: none; }
.one-container .site-content,
.separate-containers .site-main > *,
.separate-containers .inside-article { background: transparent; }
.tc-single .site-content,
.tc-archive .site-content,
.tc-home .site-content,
.author .site-content {
	padding: 0 24px 56px;
	max-width: var(--tc-width);
	margin: 0 auto;
}
.tc-single .site-main,
.tc-home .site-main,
.tc-archive .site-main { margin: 0; }

/* ---------- Header and navigation ---------- */
.site-header {
	background: var(--tc-bg);
	border-bottom: 1px solid var(--tc-line);
	position: sticky;
	top: 0;
	z-index: 100;
}
.admin-bar .site-header { top: 32px; }
.inside-header { max-width: var(--tc-width); padding: 14px 24px; }
.main-title { font-size: 1.6rem; font-weight: 700; margin: 0; }
.main-title a { color: var(--tc-ink); text-decoration: none; display: inline-flex; align-items: center; gap: .5rem; }
.main-title a::before {
	content: "";
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background:
		radial-gradient(circle at 35% 35%, transparent 0 5px, var(--tc-accent) 5.5px 7px, transparent 7.5px),
		conic-gradient(from 45deg, var(--tc-primary) 0 25%, var(--tc-primary-dark) 0 50%, var(--tc-primary) 0 75%, var(--tc-primary-dark) 0);
	box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .5);
}
.site-description { color: var(--tc-muted); font-size: .85rem; margin: 0; }
.main-navigation, .main-navigation ul ul { background: transparent; }
.main-navigation .main-nav ul li a { color: var(--tc-ink); font-weight: 600; font-size: .95rem; line-height: 48px; padding: 0 14px; }
.main-navigation .main-nav ul li:hover > a,
.main-navigation .main-nav ul li.current-menu-item > a,
.main-navigation .main-nav ul li.current-menu-ancestor > a { color: var(--tc-primary); background: transparent; }
.main-navigation ul ul {
	background: var(--tc-surface);
	border: 1px solid var(--tc-line);
	border-radius: var(--tc-radius-small);
	box-shadow: var(--tc-shadow);
	padding: 6px 0;
	width: 230px;
}
.main-navigation .main-nav ul ul li a { line-height: 1.4; padding: 9px 16px; font-weight: 500; }
.main-navigation .main-nav ul ul li:hover > a { background: var(--tc-sand); }
.main-navigation .menu-toggle { color: var(--tc-ink); background: transparent; }
.main-navigation .lang-item img { vertical-align: middle; }
.main-navigation .main-nav ul li.pll-parent-menu-item > a,
.main-navigation .main-nav ul li.lang-item > a { color: var(--tc-primary); }
.main-navigation.toggled .main-nav > ul { background: var(--tc-surface); border-radius: var(--tc-radius-small); box-shadow: var(--tc-shadow); }

/* Destinations mega menu (inc/mega-menu.php): popular cities with photos + one column per country.
   The menu item itself carries the class "tc-mega", so panel rules are scoped to .tc-mega-sub / .tc-mega-panel. */
.main-navigation ul ul.tc-mega-sub { width: auto; padding: 0; overflow: hidden; }
.main-navigation .tc-mega-panel ul {
	position: static; left: auto; float: none; width: auto; height: auto; opacity: 1; overflow: visible;
	pointer-events: auto; visibility: visible; margin: 0; padding: 0; list-style: none;
	background: none; border: 0; border-radius: 0; box-shadow: none;
}
.main-navigation .tc-mega-panel li { float: none; display: block; position: static; }
.main-navigation .main-nav ul.tc-mega-sub > li.tc-mega-panel { display: grid; grid-template-columns: 250px 1fr; float: none; width: auto; }
.main-navigation .main-nav .tc-mega-panel li a { line-height: 1.3; padding: 0; font-weight: 500; background: none; }
.tc-mega-label {
	margin: 0 0 12px; color: var(--tc-muted); font-size: .72rem; font-weight: 700;
	letter-spacing: .12em; text-transform: uppercase;
}
.tc-mega-popular { grid-row: span 2; padding: 22px 20px; background: var(--tc-sand); }
.main-navigation .tc-mega-panel .tc-mega-popular ul { display: grid; gap: 4px; }
.main-navigation .main-nav .tc-mega-panel .tc-mega-popular a { display: flex; align-items: center; gap: 12px; padding: 6px 8px; border-radius: var(--tc-radius-small); color: var(--tc-ink); }
.main-navigation .main-nav .tc-mega-panel .tc-mega-popular a:hover { background: var(--tc-surface); color: var(--tc-primary); }
.tc-mega-popular img, .tc-mega-dot { flex: 0 0 auto; width: 44px; height: 44px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 2px var(--tc-surface); }
.tc-mega-dot { background: var(--tc-primary); }
.tc-mega-city { display: flex; flex-direction: column; font-weight: 600; }
.tc-mega-city small { color: var(--tc-muted); font-size: .76rem; font-weight: 500; }
.tc-mega-countries {
	display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 22px 26px;
	padding: 24px 26px 8px; align-content: start;
}
.main-navigation .main-nav .tc-mega-panel a.tc-mega-country-name {
	display: block; margin-bottom: 8px; padding-bottom: 8px; border-bottom: 2px solid var(--tc-accent);
	color: var(--tc-ink); font-family: var(--tc-serif); font-size: 1.08rem; font-weight: 700;
}
.main-navigation .main-nav .tc-mega-panel a.tc-mega-country-name:hover { color: var(--tc-primary); }
.main-navigation .tc-mega-panel .tc-mega-country ul { display: grid; gap: 1px; }
.main-navigation .main-nav .tc-mega-panel .tc-mega-country li a {
	display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 5px 6px; margin: 0 -6px;
	border-radius: 6px; color: var(--tc-ink); font-size: .9rem;
}
.main-navigation .main-nav .tc-mega-panel .tc-mega-country li a:hover { background: var(--tc-sand); color: var(--tc-primary); }
.tc-mega-count {
	min-width: 24px; padding: 1px 7px; border-radius: 99px; background: var(--tc-sand);
	color: var(--tc-muted); font-size: .72rem; font-weight: 700; line-height: 1.6; text-align: center;
}
.main-navigation .main-nav .tc-mega-panel a.tc-mega-all {
	grid-column: 2; justify-self: end; align-self: end; margin: 6px 26px 20px; padding: 8px 16px; border-radius: 99px;
	background: var(--tc-primary); color: #fff; font-weight: 700; font-size: .88rem; line-height: 1.3;
}
.main-navigation .main-nav .tc-mega-panel a.tc-mega-all:hover { background: var(--tc-primary-dark); color: #fff; }
/* GeneratePress colours links in the open mobile menu and the direct link of a hovered item (li:hover > a, --accent blue); the button keeps white text. */
.main-navigation .main-nav .tc-mega-sub li.tc-mega-panel > a.tc-mega-all,
.main-navigation .main-nav .tc-mega-sub li.tc-mega-panel > a.tc-mega-all:hover { color: #fff; }
.main-navigation.toggled .main-nav ul li .tc-mega-panel a.tc-mega-all,
.main-navigation.toggled .main-nav ul li .tc-mega-panel a.tc-mega-all:hover { color: #fff; }

@media (min-width: 769px) {
	/* The panel hangs under the whole header, centred, instead of under the menu item. */
	.site-header .inside-header { position: relative; }
	.main-navigation .main-nav > ul > li.tc-mega-item,
	.main-navigation .inside-navigation { position: static; }
	.main-navigation:not(.toggled) ul li.tc-mega-item:hover > ul.tc-mega-sub,
	.main-navigation:not(.toggled) ul li.tc-mega-item.sfHover > ul.tc-mega-sub,
	.main-navigation:not(.toggled) ul li.tc-mega-item:focus-within > ul.tc-mega-sub {
		left: 50%; right: auto; top: 100%; transform: translateX(-50%);
		width: min(1100px, calc(100vw - 32px)); border-radius: var(--tc-radius);
	}
	/* Invisible bridge so the panel stays open while the pointer moves down to it. */
	.main-navigation ul ul.tc-mega-sub::before { content: ""; position: absolute; left: 0; right: 0; top: -14px; height: 14px; }
}
@media (max-width: 768px) {
	/* GeneratePress hides nested lists in the mobile menu until they are toggled; the panel's own lists always show. */
	.main-navigation.toggled .main-nav .tc-mega-panel ul,
	.main-navigation.toggled .main-nav .tc-mega-panel li { visibility: visible; opacity: 1; height: auto; left: auto; pointer-events: auto; border: 0; }
	.main-navigation .main-nav ul.tc-mega-sub > li.tc-mega-panel { grid-template-columns: 1fr; }
	.main-navigation.toggled .main-nav .tc-mega-panel a.tc-mega-country-name { padding: 0 0 8px; }
	/* The header is sticky, so a menu taller than the screen could never be scrolled to its end: it scrolls by itself. */
	.main-navigation.toggled .main-nav > ul {
		max-height: calc(100vh - 110px); max-height: calc(100dvh - 110px);
		overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
	}
	.tc-mega-popular { padding: 14px 16px; }
	.main-navigation .tc-mega-panel .tc-mega-popular ul { grid-template-columns: 1fr 1fr; }
	.tc-mega-popular img, .tc-mega-dot { width: 34px; height: 34px; }
	.tc-mega-countries { grid-template-columns: 1fr 1fr; gap: 16px 18px; padding: 16px; }
	.main-navigation .main-nav .tc-mega-panel a.tc-mega-all { grid-column: 1; justify-self: stretch; text-align: center; margin: 0 16px 16px; }
}

/* ---------- Buttons and chips ---------- */
.tc-button, .tc-search button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .4rem;
	padding: .8rem 1.4rem;
	border-radius: 999px;
	border: 0;
	background: var(--tc-accent);
	color: #fff !important;
	font-weight: 700;
	text-decoration: none;
	line-height: 1.2;
	transition: background .15s ease, transform .15s ease;
}
.tc-button:hover, .tc-button:focus { background: var(--tc-accent-dark); transform: translateY(-1px); }
.tc-button::after { content: "→"; }
.tc-button-small { padding: .5rem 1rem; font-size: .9rem; }
.tc-button-block { width: 100%; margin: 1rem 0; }
.tc-button-ghost { background: transparent; color: var(--tc-primary) !important; box-shadow: inset 0 0 0 2px var(--tc-primary); }
.tc-button-ghost:hover { background: var(--tc-primary); color: #fff !important; }
.tc-chip {
	display: inline-block;
	padding: .3rem .8rem;
	margin: 0 .4rem .4rem 0;
	border-radius: 999px;
	background: var(--tc-sand);
	color: var(--tc-ink);
	font-size: .85rem;
	font-weight: 600;
	text-decoration: none;
}
.tc-chip:hover, .tc-chip.is-active { background: var(--tc-primary); color: #fff; }
.tc-chip-light { background: rgba(255, 255, 255, .18); color: #fff; backdrop-filter: blur(4px); }
.tc-eyebrow {
	margin: 0 0 .35rem;
	color: var(--tc-accent-dark);
	font-size: .78rem;
	font-weight: 800;
	letter-spacing: .08em;
	text-transform: uppercase;
}
.tc-stars { color: var(--tc-star); letter-spacing: 2px; font-size: .95em; }

/* ---------- Hero ---------- */
.tc-hero, .tc-home-hero {
	position: relative;
	margin: 0 calc(50% - 50vw) 2rem;
	min-height: clamp(320px, 52vh, 560px);
	display: flex;
	align-items: flex-end;
	color: #fff;
	background: #0d1620;
	overflow: hidden;
}
.tc-hero-media picture { display: contents; }
.tc-hero-media, .tc-hero-media img, .tc-hero-media .tc-image-placeholder {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 0;
}
/* Parallax (site.js): the photo is 60 % taller than the hero and slides down while the page scrolls. */
.tc-has-parallax .tc-hero-media img { top: auto; bottom: 0; height: 160%; will-change: transform; }
.tc-hero::after, .tc-home-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(13, 22, 32, .15) 0%, rgba(13, 22, 32, .35) 45%, rgba(13, 22, 32, .85) 100%);
}
.tc-hero-inner {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: var(--tc-width);
	margin: 0 auto;
	padding: 3rem 24px 2.5rem;
}
.tc-hero .tc-eyebrow, .tc-home-hero .tc-eyebrow { color: #ffc9a8; }
.tc-hero-title { color: #fff; font-size: clamp(2rem, 1.4rem + 3vw, 3.6rem); margin: 0 0 .6rem; max-width: 18ch; }
.tc-hero-sub { color: rgba(255, 255, 255, .9); font-size: 1.1rem; max-width: 60ch; }
.tc-hero-sub p { margin: 0; }
.tc-hero-address { display: block; margin-top: .3rem; }
/* Centred variant (hotels): no breadcrumbs, title in the middle of the photo. */
.tc-hero-centered { align-items: center; text-align: center; }
.tc-hero-centered .tc-hero-title, .tc-hero-centered .tc-hero-sub { margin-left: auto; margin-right: auto; }
.tc-credit {
	position: absolute;
	right: 16px;
	top: 10px; /* Top corner: the quick facts card overlaps the bottom of the hero. */
	z-index: 1;
	margin: 0;
	font-size: .72rem;
	color: rgba(255, 255, 255, .75);
}
/* Language menu in the hero of pages without the site header (hotels); the credit goes below it. */
.tc-hero-langs { position: absolute; top: 12px; right: 16px; z-index: 3; font-size: .85rem; }
.tc-hero-langs summary {
	list-style: none;
	cursor: pointer;
	display: flex;
	align-items: center;
	gap: .35rem;
	padding: .35rem .7rem;
	border: 1px solid rgba(255, 255, 255, .45);
	border-radius: 999px;
	background: rgba(13, 22, 32, .45);
	color: #fff;
	font-weight: 700;
	letter-spacing: .04em;
	backdrop-filter: blur(6px);
}
.tc-hero-langs summary::-webkit-details-marker { display: none; }
.tc-hero-langs summary::before { content: "\1F310"; font-size: .95rem; letter-spacing: 0; }
.tc-hero-langs summary::after { content: ""; width: .4em; height: .4em; border: solid currentColor; border-width: 0 2px 2px 0; transform: translateY(-2px) rotate(45deg); }
.tc-hero-langs[open] summary::after { transform: translateY(1px) rotate(-135deg); }
.tc-hero-langs summary:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.tc-hero-langs ul { position: absolute; right: 0; top: calc(100% + 6px); min-width: 9.5rem; margin: 0; padding: .35rem 0; list-style: none; background: #fff; border-radius: var(--tc-radius-small); box-shadow: var(--tc-shadow); }
.tc-hero-langs li { margin: 0; }
.tc-hero-langs a { display: block; padding: .4rem .9rem; color: var(--tc-ink); text-decoration: none; }
.tc-hero-langs a:hover, .tc-hero-langs a:focus-visible { background: var(--tc-line); }
.tc-hero-langs a[aria-current] { color: var(--tc-primary); font-weight: 700; }
.tc-hero:has(.tc-hero-langs) .tc-credit { top: 52px; }
.tc-breadcrumbs ol { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; margin: 0 0 1rem; padding: 0; font-size: .85rem; }
.tc-breadcrumbs li + li::before { content: "›"; margin-right: .4rem; opacity: .7; }
.tc-breadcrumbs a { color: rgba(255, 255, 255, .9); text-decoration: none; }
.tc-breadcrumbs a:hover { text-decoration: underline; color: #fff; }
.tc-breadcrumbs [aria-current] { opacity: .75; }

/* Byline inside the hero */
.tc-byline { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem 1rem; margin-top: .8rem; font-size: .95rem; }
.tc-byline-author { display: inline-flex; align-items: center; gap: .55rem; color: #fff; font-weight: 700; text-decoration: none; }
.tc-byline-author img { border-radius: 50%; border: 2px solid rgba(255, 255, 255, .8); }
.tc-byline-meta { opacity: .85; }

/* Home hero */
.tc-home-hero { min-height: clamp(460px, 72vh, 700px); margin-bottom: 3rem; }
.tc-home-hero .tc-hero-title { max-width: 14ch; font-size: clamp(2.4rem, 1.6rem + 4vw, 4.6rem); }
.tc-search { display: flex; gap: .5rem; max-width: 560px; margin: 1.6rem 0 1.2rem; background: #fff; padding: 6px; border-radius: 999px; box-shadow: var(--tc-shadow); }
.tc-search input { flex: 1; border: 0; background: transparent; padding: .6rem 1rem; font-size: 1rem; color: var(--tc-ink); min-width: 0; }
.tc-search input:focus { outline: none; }
.tc-search button::after { content: none; }

/* ---------- Layout ---------- */
.tc-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 48px; align-items: start; }
.tc-sticky { position: sticky; top: 100px; display: grid; gap: 1.2rem; }
.tc-lead { font-size: 1.2rem; color: var(--tc-ink); font-family: var(--tc-serif); }
.tc-content > *:first-child { margin-top: 0; }
.tc-content p, .tc-content li { max-width: 72ch; }
.tc-content h2 { color: var(--tc-primary); padding-bottom: .55rem; position: relative; scroll-margin-top: 100px; }
.tc-content h2::after { content: ""; position: absolute; left: 0; bottom: 0; width: 56px; height: 3px; border-radius: 3px; background: var(--tc-accent); }
.tc-content h3 { color: var(--tc-accent-dark); margin: 1.8rem 0 .5rem; scroll-margin-top: 100px; }
.tc-content h2 + h3 { margin-top: 1.2rem; }
.tc-content strong { color: var(--tc-primary-dark); }
.tc-section { margin: 3rem 0; }
.tc-section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.tc-section-head h2 { margin-top: 0; }
/* The GetYourGuide script fills the widget after marketing consent (Complianz); until then a short note explains the empty space. */
.tc-gyg-consent { display: none; color: var(--tc-muted); font-size: .9rem; }
.tc-gyg [data-gyg-widget]:empty + .tc-gyg-consent { display: block; }
body.cmplz-marketing .tc-gyg-consent { display: none; }
/* GetYourGuide cards (inside its iframe) have 300px-high images; at 80% they match the size of the site's cards. Not on phones, where cards are full width. */
@media (min-width: 769px) {
	.tc-gyg [data-gyg-widget] { zoom: .8; }
}
.tc-more { font-weight: 700; text-decoration: none; white-space: nowrap; }
.tc-related { margin-top: 3rem; padding-top: 1rem; border-top: 1px solid var(--tc-line); }
.tc-toc-mobile { display: none; }

/* ---------- Cards ---------- */
.tc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 24px; }
/* Hotel pages: nearby hotels / things to do sit in the main column, three small cards per row. */
@media (min-width: 769px) {
	.tc-single-hotel .tc-main .tc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
	.tc-single-hotel .tc-main .tc-card-body { padding: .8rem .9rem 1rem; }
	.tc-single-hotel .tc-main .tc-card-title { font-size: 1rem; }
	.tc-single-hotel .tc-main .tc-card-text { font-size: .85rem; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
	.tc-single-hotel .tc-main .tc-card .tc-button { padding: .45rem .8rem; font-size: .85rem; }
}
.tc-card {
	display: flex;
	flex-direction: column;
	background: var(--tc-surface);
	border-radius: var(--tc-radius);
	box-shadow: var(--tc-shadow);
	overflow: hidden;
	transition: transform .2s ease, box-shadow .2s ease;
}
.tc-card:hover { transform: translateY(-3px); box-shadow: 0 2px 4px rgba(27, 36, 48, .08), 0 16px 36px rgba(27, 36, 48, .12); }
.tc-card-media { position: relative; display: block; aspect-ratio: 16 / 10; background: var(--tc-sand); }
/* While a lazy photo downloads the card shows a light shimmer instead of a dark box (user, 2026-10-26). */
.tc-card-media, .tc-search-top-media {
	background: linear-gradient(100deg, var(--tc-sand) 30%, #f8f4ec 50%, var(--tc-sand) 70%) 0 0 / 300% 100%;
	animation: tc-shimmer 1.4s linear infinite;
}
@keyframes tc-shimmer { from { background-position: 100% 0; } to { background-position: 0 0; } }
@media (prefers-reduced-motion: reduce) { .tc-card-media, .tc-search-top-media { animation: none; } }
.tc-card-media img, .tc-card-media .tc-image-placeholder { width: 100%; height: 100%; object-fit: cover; border-radius: 0; display: block; }
.tc-card-rank {
	position: absolute;
	top: 12px;
	left: 12px;
	width: 38px;
	height: 38px;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: var(--tc-accent);
	color: #fff;
	font-weight: 800;
	font-family: var(--tc-serif);
	font-size: 1.15rem;
}
.tc-card-body { padding: 1rem 1.2rem 1.3rem; display: flex; flex-direction: column; flex: 1; }
.tc-card-title { font-size: 1.2rem; margin: 0 0 .4rem; }
.tc-card-title a { color: var(--tc-ink); text-decoration: none; }
.tc-card-title a:hover { color: var(--tc-primary); }
.tc-card-text { color: var(--tc-muted); font-size: .95rem; margin: 0 0 1rem; }
.tc-card-actions { margin-top: auto; }
.tc-image-placeholder { display: block; background: linear-gradient(135deg, #142231, #0b131c); }

/* ---------- Boxes ---------- */
.tc-booking-box, .tc-toc, .tc-share-compact {
	background: var(--tc-surface);
	border: 1px solid var(--tc-line);
	border-radius: var(--tc-radius);
	padding: 1.2rem 1.3rem;
	box-shadow: var(--tc-shadow);
}
.tc-dates { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; margin: 1rem 0 0; }
.tc-date { min-width: 0; }
.tc-date span { display: block; font-size: .75rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--tc-muted); margin-bottom: .25rem; }
/* Date fields (user, 2026-10-27): their built-in minimum width pushed the booking box off phones of 360px and less
   (now stacked below 380px, where 16px text no longer fits side by side),
   and iOS Safari draws them with its own height and centred text (and zooms in below 16px). Same box everywhere. */
.tc-date input {
	display: block; box-sizing: border-box; width: 100%; min-width: 0; max-width: 100%; height: 46px; margin: 0;
	padding: 0 .55rem; border: 1px solid var(--tc-line); border-radius: var(--tc-radius-small);
	background: var(--tc-surface); color: var(--tc-ink); font: inherit; font-size: 16px; line-height: 44px; text-align: left;
	-webkit-appearance: none; appearance: none;
}
.tc-date input::-webkit-date-and-time-value { margin: 0; text-align: left; }
.tc-date input::-webkit-calendar-picker-indicator { margin-left: 2px; padding: 0; }
@media (max-width: 379px) {
	.tc-dates { grid-template-columns: minmax(0, 1fr); }
}
.tc-date input:focus { outline: 2px solid var(--tc-primary); outline-offset: 1px; }
.tc-dates-hint { grid-column: 1 / -1; margin: 0; font-size: .85rem; color: var(--tc-accent-dark); }
.tc-button.is-locked { opacity: .55; }
.tc-button.is-locked:hover { transform: none; }
.tc-booking-title { font-family: var(--tc-serif); font-size: 1.25rem; font-weight: 700; margin: 0 0 .2rem; }
.tc-facts { margin: 1rem 0 0; display: grid; gap: .7rem; }
.tc-facts > div { display: grid; gap: .1rem; }
.tc-facts dt { font-size: .75rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--tc-muted); }
.tc-facts dd { margin: 0; }
.tc-quick-facts .tc-facts { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); background: var(--tc-surface); border-radius: var(--tc-radius); padding: 1.2rem 1.4rem; box-shadow: var(--tc-shadow); margin: -4.2rem 0 2.5rem; position: relative; z-index: 2; }
.tc-clock { font-family: var(--tc-serif); font-size: 1.4rem; font-weight: 700; }

/* Weather: current conditions in the quick facts and a 5-day strip joined to the same card */
.tc-weather-now { display: inline-flex; align-items: center; gap: .2rem; margin: -.5rem 0 -.5rem -.4rem; }
.tc-weather-temp { font-family: var(--tc-serif); font-size: 1.4rem; font-weight: 700; }
.tc-quick-facts .tc-facts:has(+ .tc-forecast) { margin-bottom: 0; border-radius: var(--tc-radius) var(--tc-radius) 0 0; }
.tc-forecast { background: var(--tc-surface); border-top: 1px solid var(--tc-line); border-radius: 0 0 var(--tc-radius) var(--tc-radius); box-shadow: var(--tc-shadow); padding: .6rem 1.4rem .7rem; margin: 0 0 2.5rem; position: relative; z-index: 2; }
.tc-forecast ol { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .5rem; }
.tc-forecast li { display: flex; flex-direction: column; align-items: center; text-align: center; font-size: .9rem; }
.tc-forecast-day { font-size: .75rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--tc-muted); }
.tc-forecast-temps strong { color: var(--tc-ink); }
.tc-forecast-temps { color: var(--tc-muted); }
.tc-forecast-credit { margin: .4rem 0 0; font-size: .7rem; color: var(--tc-muted); text-align: right; }
.tc-forecast-credit a { color: inherit; }

/* Complianz consent banner: no theme bullets on its document links */
.cmplz-cookiebanner .cmplz-links ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: .3rem 1rem; }
.cmplz-cookiebanner .cmplz-links li:not(:has(a[href]:not([href="#"]))) { display: none; }
.tc-reviewed { display: block; margin-top: 1rem; color: var(--tc-muted); font-size: .85rem; }
.tc-disclosure {
	display: flex;
	gap: .6rem;
	align-items: flex-start;
	margin: 1.2rem 0;
	padding: .8rem 1rem;
	background: var(--tc-sand);
	border-radius: var(--tc-radius-small);
	color: var(--tc-muted);
	font-size: .85rem;
	line-height: 1.5;
}
.tc-hotel-notice { margin: 2.5rem 0 0; }
.tc-pros-cons { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; margin: 1.5rem 0 2rem; }
.tc-list-box { background: var(--tc-surface); border-radius: var(--tc-radius); padding: 1.1rem 1.3rem; box-shadow: var(--tc-shadow); }
.tc-list-box h3 { margin: 0 0 .6rem; font-size: 1.1rem; }
.tc-list-box ul { margin: 0; padding: 0; list-style: none; }
.tc-list-box li { position: relative; padding-left: 1.7rem; margin: .45rem 0; }
.tc-list-box li::before { position: absolute; left: 0; top: 0; font-weight: 800; }
.tc-list-pros li::before { content: "✓"; color: var(--tc-primary); }
.tc-list-cons li::before { content: "!"; color: var(--tc-accent); left: .35rem; }

/* ---------- Table of contents ---------- */
.tc-toc summary { cursor: pointer; font-family: var(--tc-serif); font-weight: 700; font-size: 1.1rem; list-style: none; display: flex; justify-content: space-between; }
.tc-toc summary::-webkit-details-marker { display: none; }
.tc-toc summary::after { content: "–"; color: var(--tc-muted); }
.tc-toc details:not([open]) summary::after { content: "+"; }
.tc-toc ol { list-style: none; margin: .8rem 0 0; padding: 0; counter-reset: toc; font-size: .93rem; }
.tc-toc li { margin: 0; }
.tc-toc .tc-toc-h2 { counter-increment: toc; }
.tc-toc a { display: block; padding: .32rem 0 .32rem .7rem; border-left: 2px solid var(--tc-line); color: var(--tc-ink); text-decoration: none; }
.tc-toc a:hover { border-left-color: var(--tc-accent); color: var(--tc-primary); }
.tc-toc .tc-toc-h3 a { padding-left: 1.6rem; font-size: .88rem; color: var(--tc-muted); }

/* ---------- Share ---------- */
.tc-share { margin: 2.5rem 0; }
.tc-share-title { font-weight: 800; margin: 0 0 .6rem; }
.tc-share-buttons { display: flex; flex-wrap: wrap; gap: .5rem; }
.tc-share-buttons a, .tc-share-buttons button {
	display: inline-grid;
	place-items: center;
	grid-auto-flow: column;
	gap: .4rem;
	min-width: 42px;
	height: 42px;
	padding: 0 .7rem;
	border-radius: 999px;
	border: 0;
	background: var(--tc-sand);
	color: var(--tc-ink);
	cursor: pointer;
	font-weight: 700;
	font-size: .9rem;
	transition: background .15s ease, color .15s ease, transform .15s ease;
}
.tc-share-buttons a:hover, .tc-share-buttons button:hover { transform: translateY(-2px); color: #fff; }
.tc-share-whatsapp:hover { background: #25d366; }
.tc-share-facebook:hover { background: #0866ff; }
.tc-share-x:hover { background: #000; }
.tc-share-pinterest:hover { background: #bd081c; }
.tc-share-telegram:hover { background: #26a5e4; }
.tc-share-reddit:hover { background: #ff4500; }
.tc-share-email:hover, .tc-share-copy:hover, .tc-share-native:hover { background: var(--tc-primary); }
.tc-share-copy.is-done { background: var(--tc-primary); color: #fff; }
.tc-share-compact { margin: 0; padding: .9rem 1rem; }
.tc-share-compact .tc-share-buttons a, .tc-share-compact .tc-share-buttons button { min-width: 38px; height: 38px; padding: 0 .55rem; }

/* ---------- FAQ, sources, author ---------- */
.tc-faq details { background: var(--tc-surface); border-radius: var(--tc-radius-small); box-shadow: var(--tc-shadow); margin: .6rem 0; }
.tc-faq summary { cursor: pointer; padding: 1rem 1.2rem; font-weight: 700; list-style: none; display: flex; justify-content: space-between; gap: 1rem; }
.tc-faq summary::-webkit-details-marker { display: none; }
.tc-faq summary::after { content: "+"; font-size: 1.3rem; line-height: 1; color: var(--tc-accent); }
.tc-faq details[open] summary::after { content: "–"; }
.tc-faq details > div { padding: 0 1.2rem 1rem; color: var(--tc-muted); }
.tc-sources { margin: 3rem 0; font-size: .9rem; color: var(--tc-muted); }
.tc-sources h2 { font-size: 1.2rem; }
.tc-sources ul { padding-left: 1.2rem; }
.tc-author-box { display: flex; gap: 1.2rem; align-items: flex-start; background: var(--tc-surface); border-radius: var(--tc-radius); padding: 1.4rem; box-shadow: var(--tc-shadow); margin: 2rem 0; }
.tc-author-box img { border-radius: 50%; flex: none; }
.tc-author-box p { margin: 0 0 .4rem; }
.tc-author-name { font-family: var(--tc-serif); font-size: 1.3rem; font-weight: 700; }
.tc-author-name a { color: var(--tc-ink); text-decoration: none; }
.tc-authors { display: grid; gap: 1rem; }

/* ---------- Map and video ---------- */
.tc-map, .tc-video { position: relative; border-radius: var(--tc-radius); overflow: hidden; background: #0d1620; aspect-ratio: 16 / 9; }
.tc-map { aspect-ratio: 16 / 8; background: repeating-linear-gradient(45deg, #12202e 0 12px, #0f1b27 12px 24px); isolation: isolate; z-index: 0; } /* Keep Leaflet panes (z-index 400+) under the sticky header. */
.tc-map.is-loaded { background: #ddd; }
.tc-map-popup { display: block; width: 180px; font-weight: 700; text-decoration: none; }
.tc-map-popup img { display: block; width: 180px; height: 112px; object-fit: cover; border-radius: 6px; margin-bottom: .4rem; }
.tc-map-load, .tc-video-load {
	position: absolute;
	inset: 0;
	display: grid;
	place-content: center;
	justify-items: center;
	gap: .4rem;
	width: 100%;
	border: 0;
	background: transparent;
	color: #fff;
	cursor: pointer;
	font-weight: 700;
	font-size: 1.05rem;
}
.tc-map-load small, .tc-video-load small { font-weight: 400; opacity: .7; font-size: .8rem; }
.tc-map-icon { font-size: 2rem; }
.tc-play { width: 72px; height: 72px; border-radius: 50%; background: var(--tc-accent); position: relative; transition: transform .15s ease; }
.tc-play::after { content: ""; position: absolute; left: 29px; top: 22px; border-style: solid; border-width: 14px 0 14px 22px; border-color: transparent transparent transparent #fff; }
.tc-video-load:hover .tc-play { transform: scale(1.08); }
.tc-video iframe { width: 100%; height: 100%; border: 0; }
.tc-video { margin: 2.5rem 0; }

/* ---------- Archives ---------- */
.tc-archive-header { padding: 3rem 0 1.5rem; }
.tc-archive-header h1 { font-size: clamp(2rem, 1.5rem + 2vw, 3rem); margin: 0 0 .5rem; }
.tc-archive-intro { color: var(--tc-muted); font-size: 1.1rem; max-width: 60ch; }
.tc-filters { margin-top: 1.2rem; }
.tc-empty { padding: 3rem 0; color: var(--tc-muted); }
.nav-links { display: flex; gap: .4rem; margin-top: 2.5rem; }
.nav-links .page-numbers { padding: .5rem .9rem; border-radius: var(--tc-radius-small); background: var(--tc-surface); box-shadow: var(--tc-shadow); text-decoration: none; }
.nav-links .current { background: var(--tc-primary); color: #fff; }

/* ---------- Home ---------- */
.tc-hero-chips { margin: 0; }
.tc-home-writers { text-align: center; background: var(--tc-sand); border-radius: var(--tc-radius); padding: 2.5rem 1.5rem; }
.tc-home-writers .tc-section-head { justify-content: center; }
.tc-writers { display: flex; flex-wrap: wrap; justify-content: center; gap: 1.5rem 2.5rem; list-style: none; margin: 1.5rem 0 0; padding: 0; }
.tc-writers a { display: grid; justify-items: center; gap: .5rem; color: var(--tc-ink); font-weight: 700; text-decoration: none; }
.tc-writers img { border-radius: 50%; box-shadow: var(--tc-shadow); }

/* ---------- Footer ---------- */
.tc-footer { background: var(--tc-primary-dark); color: rgba(255, 255, 255, .82); }
.tc-footer-inner { max-width: var(--tc-width); margin: 0 auto; padding: 3.5rem 24px 2.5rem; display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 2.5rem; }
.tc-footer-logo { display: inline-block; margin: 0 0 .75rem; }
.tc-footer-logo img { display: block; width: 190px; height: auto; }
.tc-footer-heading { color: #fff; font-weight: 800; font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; margin: 0 0 .8rem; }
.tc-footer ul { list-style: none; margin: 0; padding: 0; }
.tc-footer li { margin: .35rem 0; }
.tc-footer a { color: rgba(255, 255, 255, .85); text-decoration: none; }
.tc-footer a:hover { color: #fff; text-decoration: underline; }
.tc-footer .tc-disclosure { background: rgba(255, 255, 255, .08); color: rgba(255, 255, 255, .75); }
.site-info { background: #07333a; color: rgba(255, 255, 255, .7); font-size: .85rem; }
.site-info a { color: #fff; }

/* Disclosure icon, mobile booking bar and reading progress */
.tc-info-icon {
	flex: none;
	width: 18px;
	height: 18px;
	margin-top: 1px;
	border-radius: 50%;
	background: var(--tc-muted);
	position: relative;
}
.tc-info-icon::before, .tc-info-icon::after { content: ""; position: absolute; left: 8px; width: 2px; background: #fff; border-radius: 1px; }
.tc-info-icon::before { top: 4px; height: 2px; }
.tc-info-icon::after { top: 7.5px; height: 6.5px; }
.tc-footer .tc-info-icon { background: rgba(255, 255, 255, .5); }
/* Booking bar at the bottom of hotel pages, on every screen size (desktop too since 2026-10-27). */
.tc-mobile-cta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .8rem;
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 150;
	padding: .8rem max(24px, calc((100vw - var(--tc-width)) / 2 + 24px));
	background: rgba(255, 255, 255, .97);
	border-top: 1px solid var(--tc-line);
	box-shadow: 0 -6px 20px rgba(27, 36, 48, .08);
	font-weight: 700;
	font-size: 1rem;
}
.tc-mobile-cta span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.tc-mobile-cta .tc-button { flex: none; white-space: nowrap; }
.tc-single-hotel .site-footer { padding-bottom: 64px; }
/* Desktop: the bar slides in only while the booking box button is off screen (assets/js/site.js). */
.tc-mobile-cta { transition: transform .35s ease, visibility .35s; }
@media (min-width: 1025px) {
	.tc-mobile-cta.tc-cta-auto:not(.is-shown) { transform: translateY(110%); visibility: hidden; }
}
/* Desktop only (user, 2026-10-27): a little car drives along a road with a little house, the hotel, in the middle.
   It stops at the house, the house shakes with joy and lights up, the car drives on to the end, turns and does the
   same back. */
.tc-cta-road { position: relative; flex: 1; align-self: stretch; min-width: 160px; max-width: 520px; margin: 0 1.5rem; }
.tc-cta-road::before { content: ""; position: absolute; left: 0; right: 0; top: calc(50% + 9px); border-top: 2px dashed #cfc6b8; }
.tc-cta-house { position: absolute; left: calc(50% - 15px); top: calc(50% - 16px); transform-origin: 50% 100%; animation: tc-cta-shake 12s linear infinite; }
.tc-cta-car { position: absolute; z-index: 1; left: 0; top: calc(50% - 10px); animation: tc-cta-drive 12s ease-in-out infinite; }
@keyframes tc-cta-drive {
	0% { left: 0; transform: scaleX(1); }
	20%, 30% { left: calc(50% - 49px); transform: scaleX(1); }
	48% { left: calc(100% - 32px); transform: scaleX(1); }
	50% { left: calc(100% - 32px); transform: scaleX(-1); }
	70%, 80% { left: calc(50% + 17px); transform: scaleX(-1); }
	98% { left: 0; transform: scaleX(-1); }
	100% { left: 0; transform: scaleX(1); }
}
@keyframes tc-cta-shake {
	0%, 21%, 29%, 71%, 79%, 100% { transform: none; }
	23%, 73% { transform: rotate(-7deg) translateY(-2px); }
	25%, 75% { transform: rotate(6deg) translateY(-1px); }
	27%, 77% { transform: rotate(-3deg); }
}
/* The windows light up while the car is at the house and go dark when it leaves. */
.tc-cta-window { fill: #06292d; animation: tc-cta-lights 12s linear infinite; }
@keyframes tc-cta-lights {
	0%, 20%, 31%, 70%, 81%, 100% { fill: #06292d; filter: none; }
	21.5%, 29.5%, 71.5%, 79.5% { fill: #ffc94d; filter: drop-shadow(0 0 2px #f2b233); }
}
@media (prefers-reduced-motion: reduce) {
	.tc-cta-car, .tc-cta-house, .tc-cta-window { animation: none; }
	.tc-cta-window { fill: #f2b233; }
	.tc-cta-car { left: calc(50% - 49px); }
}
.tc-progress { position: fixed; top: 0; left: 0; right: 0; height: 3px; z-index: 200; pointer-events: none; }
.tc-progress span { display: block; height: 100%; background: var(--tc-accent); transform: scaleX(0); transform-origin: left; }
.admin-bar .tc-progress { top: 32px; }

/* Regular pages and the writers list */
.page:not(.tc-home) .site-content { max-width: 860px; margin: 0 auto; }
.tc-authors { gap: 1.2rem; }
.tc-authors .tc-author-box { margin: 0; }
.generate-back-to-top {
	width: 46px;
	height: 46px;
	line-height: 46px;
	right: 20px;
	bottom: 20px;
	border-radius: 50%;
	background: var(--tc-primary);
	color: #fff;
	box-shadow: var(--tc-shadow);
}
.generate-back-to-top:hover { background: var(--tc-accent); color: #fff; }
.tc-single-hotel .generate-back-to-top { bottom: 84px; }

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
	.tc-layout { grid-template-columns: minmax(0, 1fr); gap: 0; }
	.tc-aside { order: -1; }
	.tc-aside .tc-toc { display: none; }
	.tc-aside .tc-share-compact { display: none; }
	.tc-sticky { position: static; }
	.tc-toc-mobile { display: block; margin-bottom: 1.5rem; }
	.tc-single-hotel .tc-aside, .tc-single-attraction .tc-aside, .tc-single-tour .tc-aside { margin-bottom: 1.5rem; }
	.tc-footer-inner { grid-template-columns: 1fr 1fr; }
	.tc-mobile-cta { padding: .7rem 16px calc(.7rem + env(safe-area-inset-bottom)); font-size: .9rem; }
	.tc-cta-road { display: none; }
}
/* ---------- Home: murals, trip types and magazine ---------- */
.tc-mural { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 220px; gap: 16px; }
.tc-mural .tc-t-big { grid-column: span 2; grid-row: span 2; }
.tc-mural .tc-t-xl { grid-column: 1 / -1; grid-row: span 2; }
.tc-mural .tc-t-w2 { grid-column: span 2; }
.tc-mural .tc-t-w4 { grid-column: 1 / -1; }
.tc-tile { position: relative; display: block; overflow: hidden; border-radius: var(--tc-radius); background: #0d1620; color: #fff; text-decoration: none; isolation: isolate; box-shadow: var(--tc-shadow); }
.tc-tile img, .tc-tile .tc-image-placeholder { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border-radius: 0; transition: transform .6s ease; }
.tc-tile::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10, 18, 26, 0) 35%, rgba(10, 18, 26, .82) 100%); z-index: 1; }
.tc-tile:hover img, .tc-tile:focus-visible img { transform: scale(1.05); }
.tc-tile-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 1rem 1.2rem 1.1rem; display: grid; gap: .15rem; }
.tc-tile .tc-eyebrow { color: #ffc9a8; margin: 0; }
.tc-tile-title { font-family: var(--tc-serif); font-weight: 700; font-size: 1.3rem; line-height: 1.2; color: #fff; }
.tc-mural .tc-t-big .tc-tile-title, .tc-mural .tc-t-xl .tc-tile-title, .tc-magazine > .tc-tile .tc-tile-title { font-size: clamp(1.6rem, 1.2rem + 1.2vw, 2.3rem); }
.tc-tile-text { color: rgba(255, 255, 255, .88); font-size: .98rem; max-width: 52ch; margin-top: .3rem; }
.tc-mural .tc-tile-text { display: none; }
.tc-mural .tc-t-big .tc-tile-text, .tc-mural .tc-t-xl .tc-tile-text { display: block; }

.tc-types { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 14px; }
.tc-types a { display: flex; flex-direction: column; align-items: center; gap: .6rem; padding: 1.3rem .8rem 1.1rem; height: 100%; background: var(--tc-surface); border: 1px solid var(--tc-line); border-radius: var(--tc-radius); color: var(--tc-ink); font-weight: 700; font-size: .95rem; text-align: center; text-decoration: none; transition: transform .2s ease, border-color .2s ease, color .2s ease; }
.tc-types svg { width: 52px; height: 52px; padding: 12px; border-radius: 50%; background: #fbe7dd; color: var(--tc-accent-dark); }
.tc-types li:nth-child(even) svg { background: #dcecee; color: var(--tc-primary); }
.tc-types a:hover { transform: translateY(-3px); border-color: var(--tc-accent); color: var(--tc-accent-dark); }

.tc-magazine { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 24px; }
.tc-magazine > .tc-tile { min-height: 460px; }
.tc-mag-list { list-style: none; margin: 0; padding: 0; display: grid; align-content: start; }
.tc-mag-list li + li { border-top: 1px solid var(--tc-line); }
.tc-mag-list a { display: grid; grid-template-columns: 128px minmax(0, 1fr); gap: 1rem; align-items: center; padding: .85rem 0; color: var(--tc-ink); text-decoration: none; }
.tc-mag-list li:first-child a { padding-top: 0; }
.tc-mag-thumb { display: block; aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--tc-radius-small); background: #0d1620; }
.tc-mag-thumb img, .tc-mag-thumb .tc-image-placeholder { width: 100%; height: 100%; object-fit: cover; border-radius: 0; display: block; transition: transform .5s ease; }
.tc-mag-list a:hover .tc-mag-thumb img { transform: scale(1.06); }
.tc-mag-body { display: grid; gap: .2rem; }
.tc-mag-body .tc-eyebrow { margin: 0; }
.tc-mag-title { font-family: var(--tc-serif); font-weight: 700; font-size: 1.12rem; line-height: 1.3; }
.tc-mag-list a:hover .tc-mag-title { color: var(--tc-primary); }

@media (max-width: 1024px) {
	.tc-types { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.tc-magazine { grid-template-columns: minmax(0, 1fr); }
	.tc-magazine > .tc-tile { min-height: 380px; }
}
@media (max-width: 768px) {
	.tc-mural { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: 240px; grid-auto-rows: 170px; gap: 12px; }
	.tc-mural .tc-tile { grid-column: span 1; grid-row: span 1; }
	.tc-mural .tc-m-full { grid-column: 1 / -1; grid-row: span 1; }
	.tc-mural .tc-t-big .tc-tile-text, .tc-mural .tc-t-xl .tc-tile-text { display: none; }
	.tc-mural .tc-t-big .tc-tile-title, .tc-mural .tc-t-xl .tc-tile-title { font-size: 1.3rem; }
	.tc-tile-title { font-size: 1.1rem; }
	.tc-tile-body { padding: .8rem .9rem .9rem; }
	.tc-types { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
	.tc-types a { flex-direction: row; justify-content: flex-start; text-align: left; padding: .7rem .8rem; font-size: .9rem; }
	.tc-types svg { width: 40px; height: 40px; padding: 9px; flex: none; }
	.tc-magazine > .tc-tile { min-height: 300px; }
	.tc-mag-list a { grid-template-columns: 96px minmax(0, 1fr); gap: .8rem; }
	.tc-mag-title { font-size: 1.02rem; }
}
@media (prefers-reduced-motion: reduce) {
	.tc-tile img, .tc-mag-thumb img, .tc-types a { transition: none; }
}

@media (max-width: 768px) {
	body { font-size: 16px; }
	.admin-bar .site-header { top: 0; position: relative; }
	.tc-single .site-content, .tc-archive .site-content, .tc-home .site-content, .author .site-content { padding: 0 16px 40px; }
	.tc-hero-inner { padding: 2rem 16px 1.8rem; }
	.tc-quick-facts .tc-facts { margin-top: -2.5rem; }
	.tc-grid { grid-template-columns: minmax(0, 1fr); }
	.tc-section-head { flex-direction: column; gap: .2rem; }
	.tc-footer-inner { grid-template-columns: 1fr; gap: 1.8rem; }
	.tc-author-box { flex-direction: column; }
	.tc-search { border-radius: var(--tc-radius); flex-direction: column; }
	.tc-search button { border-radius: var(--tc-radius-small); }
}
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.tc-card, .tc-button, .tc-share-buttons a, .tc-share-buttons button { transition: none; }
}

/* Hotel ranking guides: [tc_hotel_summary] table and one [tc_hotel] box per hotel */
.tc-hotel-summary { margin: 1.5rem 0 2rem; overflow-x: auto; }
.tc-hotel-summary table { width: 100%; border-collapse: collapse; font-size: .95rem; }
.tc-hotel-summary caption { text-align: left; font-family: var(--tc-serif); font-size: 1.2rem; margin-bottom: .5rem; }
.tc-hotel-summary th { text-align: left; font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; color: var(--tc-muted); border-bottom: 2px solid var(--tc-line); padding: .5rem .6rem; }
.tc-hotel-summary td { border-bottom: 1px solid var(--tc-line); padding: .6rem; vertical-align: top; }
.tc-hotel-summary .tc-rank { font-weight: 800; color: var(--tc-primary); width: 2rem; }
.tc-hotel-summary .tc-stars { color: var(--tc-star); white-space: nowrap; font-size: .8rem; }
.tc-hotel-box { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 1.3rem; margin: 1.2rem 0 2.5rem; padding: 1.2rem; background: var(--tc-surface); border-radius: var(--tc-radius); box-shadow: var(--tc-shadow); scroll-margin-top: 6rem; }
.tc-hotel-media { margin: 0; }
.tc-hotel-media img { width: 100%; height: auto; aspect-ratio: 8 / 5; object-fit: cover; border-radius: var(--tc-radius-small); display: block; }
.tc-hotel-media figcaption { margin-top: .4rem; font-size: .8rem; color: var(--tc-muted); }
.tc-hotel-media .tc-credit { display: block; font-size: .75rem; }
.tc-hotel-body .tc-facts { margin-top: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.tc-hotel-body .tc-list-box { box-shadow: none; padding: .8rem 0 0; background: none; }
.tc-hotel-body .tc-list-title { margin: 0 0 .4rem; font-weight: 700; }
.tc-hotel-book { margin-top: 1rem; }
.tc-hotel-box:not(:has(.tc-hotel-media)) { grid-template-columns: 1fr; }
@media (max-width: 768px) {
	.tc-hotel-box { grid-template-columns: 1fr; padding: 1rem; }
	.tc-hotel-body .tc-facts { grid-template-columns: 1fr; }
	.tc-hotel-summary th:nth-child(4), .tc-hotel-summary td:nth-child(4) { display: none; }
}

/* ---------- 404: broken bed (user, 2026-10-26) ---------- */
.tc-404 { max-width: 640px; margin: 2.5rem auto 4rem; text-align: center; animation: tc-404-rise .5s ease both; }
.tc-404-logo img { display: block; width: 190px; height: auto; margin: 0 auto 1.8rem; }
.tc-404-art svg { width: min(100%, 340px); height: auto; overflow: visible; }
.tc-404-art svg * { transform-box: view-box; }
.tc-404-far { transform-origin: 135px 104px; animation: tc-404-sway 3.4s ease-in-out infinite; }
.tc-404-lamp { animation: tc-404-blink 1.2s steps(1, end) infinite; }
.tc-404-glow { transform-origin: 91.5px 128px; animation: tc-404-glow 1.2s steps(1, end) infinite; }
.tc-404-art .tc-404-glow-2 { transform-origin: 178.5px 128px; }
.tc-404-lamp-2, .tc-404-glow-2 { animation-delay: .6s; }
.tc-404-pebble { animation: tc-404-fall 2.4s ease-in infinite; }
.tc-404-pebble-2 { animation-delay: .8s; }
.tc-404-pebble-3 { animation-delay: 1.6s; }
.tc-404-code { margin: 1.2rem 0 .3rem; font-size: .8rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--tc-accent-dark); }
.tc-404 h1 { margin: 0 0 .7rem; font-family: var(--tc-serif); font-size: clamp(1.7rem, 1.2rem + 2.4vw, 2.6rem); line-height: 1.15; color: var(--tc-ink); }
.tc-404-text { margin: 0 auto; max-width: 48ch; color: var(--tc-muted); font-size: 1.05rem; line-height: 1.55; }
.tc-404-search { margin: 1.8rem auto 1.4rem; }
.tc-404-links { display: flex; flex-wrap: wrap; justify-content: center; gap: .6rem; margin: 0; }
@keyframes tc-404-rise { from { opacity: 0; transform: translateY(8px); } }
@keyframes tc-404-sway { 0%, 100% { transform: rotate(0deg); } 50% { transform: rotate(-1.8deg) translateY(-1px); } }
@keyframes tc-404-blink { 0% { opacity: 1; } 50% { opacity: .25; } }
@keyframes tc-404-glow { 0% { opacity: .35; transform: scale(1); } 50% { opacity: 0; transform: scale(.6); } }
@keyframes tc-404-fall { 0% { opacity: 0; transform: translateY(-3px); } 15% { opacity: 1; } 100% { opacity: 0; transform: translateY(14px); } }
@media (prefers-reduced-motion: reduce) {
	.tc-404, .tc-404-far, .tc-404-lamp, .tc-404-glow, .tc-404-pebble { animation: none; }
}

/* ---------- Language hint (user, 2026-10-27) ---------- */
/* Small card offering the page in the browser's language (inc/lang-hint.php, assets/js/site.js). No redirect. */
.tc-lang-hint {
	position: fixed; left: 16px; bottom: 16px; z-index: 160; display: flex; align-items: center; gap: .7rem;
	max-width: 380px; padding: .75rem 2.3rem .75rem .9rem;
	border-radius: var(--tc-radius); background: var(--tc-primary); color: #fff;
	box-shadow: 0 10px 30px rgba(10, 67, 74, .35), 0 2px 6px rgba(27, 36, 48, .15);
	opacity: 0; transform: translateY(12px); transition: opacity .3s ease, transform .3s ease;
}
.tc-lang-hint.is-open { opacity: 1; transform: none; }
.tc-lang-hint[hidden] { display: none; }
.tc-lang-hint-flag { flex: none; width: 24px; height: auto; border-radius: 3px; box-shadow: 0 0 0 2px rgba(255, 255, 255, .9); }
.tc-lang-hint-text { margin: 0; font-size: .9rem; line-height: 1.45; color: #fff; }
.tc-lang-hint-link {
	display: inline-block; margin-top: .45rem; padding: .3rem .85rem; border-radius: 999px;
	background: #fff; color: var(--tc-primary-dark) !important; font-weight: 700; text-decoration: none !important; white-space: nowrap;
	transition: background .15s ease, color .15s ease;
}
.tc-lang-hint-link:hover, .tc-lang-hint-link:focus-visible { background: var(--tc-accent); color: #fff !important; }
.tc-lang-hint-link::after { content: " →"; }
.tc-lang-hint-close {
	position: absolute; top: 6px; right: 6px; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 50%;
	background: none; color: rgba(255, 255, 255, .7); font-size: 18px; line-height: 24px; cursor: pointer;
}
.tc-lang-hint-close:hover, .tc-lang-hint-close:focus-visible { background: rgba(255, 255, 255, .15); color: #fff; }
.tc-single-hotel .tc-lang-hint { bottom: 84px; }
@media (max-width: 760px) {
	.tc-lang-hint { left: 12px; right: 12px; max-width: none; }
}
@media (prefers-reduced-motion: reduce) {
	.tc-lang-hint { transition: none; }
}

/* ---------- Where to stay banner (user, 2026-10-26) ---------- */
/* City and region pages without a hotel ranking guide (inc/stay-banner.php): a made bed at night and a Booking.com search. */
.tc-stay {
	display: grid; grid-template-columns: minmax(0, 340px) minmax(0, 1fr); align-items: center; gap: 2.4rem;
	margin: 2.8rem 0; padding: 2.2rem 2.6rem; border-radius: calc(var(--tc-radius) * 1.4);
	background:
		radial-gradient(circle at 1px 1px, rgba(15, 94, 102, .13) 1px, transparent 1.5px) 0 0 / 18px 18px,
		linear-gradient(135deg, #f6efe3 0%, var(--tc-sand) 55%, #e8f0ee 100%);
}
.tc-stay-art svg { display: block; width: 100%; height: auto; overflow: visible; }
.tc-stay-art svg * { transform-box: fill-box; transform-origin: center; }
.tc-stay-body h2 { margin: 0 0 .6rem; font-family: var(--tc-serif); font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.2rem); line-height: 1.15; }
.tc-stay-text { margin: 0 0 1.3rem; max-width: 52ch; color: var(--tc-muted); font-size: 1.05rem; line-height: 1.55; }
.tc-stay-note { margin: .9rem 0 0; color: var(--tc-muted); font-size: .82rem; }
.tc-stay-glow { animation: tc-stay-glow 3.2s ease-in-out infinite; }
.tc-stay-star { animation: tc-stay-twinkle 2.6s ease-in-out infinite; }
.tc-stay-star-2 { animation-delay: .9s; }
.tc-stay-star-3 { animation-delay: 1.7s; }
.tc-stay-z { opacity: 0; animation: tc-stay-z 3.6s ease-out infinite; }
.tc-stay-z-2 { animation-delay: 1.2s; }
.tc-stay-z-3 { animation-delay: 2.4s; }
@keyframes tc-stay-glow { 50% { opacity: .12; transform: scale(.85); } }
@keyframes tc-stay-twinkle { 50% { opacity: .25; } }
@keyframes tc-stay-z { 0% { opacity: 0; transform: translate(0, 4px); } 25% { opacity: 1; } 100% { opacity: 0; transform: translate(6px, -10px); } }
@media (max-width: 760px) {
	.tc-stay { grid-template-columns: 1fr; gap: 1.2rem; margin: 2rem 0; padding: 1.6rem 1.2rem; text-align: center; }
	.tc-stay-art { max-width: 260px; margin: 0 auto; }
	.tc-stay-text { margin-left: auto; margin-right: auto; }
}
@media (prefers-reduced-motion: reduce) {
	.tc-stay-glow, .tc-stay-star, .tc-stay-z { animation: none; }
	.tc-stay-z { opacity: 1; }
}

/* ---------- Search results (user, 2026-10-26) ---------- */
/* Search results (search.php): header panel with a route drawing, filter chips, best match, groups by type. */
.tc-search-header {
	position: relative; overflow: hidden; margin: 2rem 0 2rem; padding: 2.4rem 2.6rem 1.8rem;
	border-radius: calc(var(--tc-radius) * 1.4);
	background:
		radial-gradient(circle at 1px 1px, rgba(15, 94, 102, .13) 1px, transparent 1.5px) 0 0 / 18px 18px,
		linear-gradient(135deg, #f6efe3 0%, var(--tc-sand) 55%, #e8f0ee 100%);
}
.tc-search-header h1 { position: relative; max-width: 760px; font-family: var(--tc-serif); }
.tc-search-header .tc-eyebrow { position: relative; }
.tc-search-art { position: absolute; right: 2.2rem; top: 1.4rem; width: 220px; height: 160px; color: var(--tc-primary); opacity: .85; pointer-events: none; }
.tc-search-header .tc-search { position: relative; margin: 1.2rem 0 1.1rem; border: 1px solid var(--tc-line); max-width: 620px; }
.tc-search-filters { position: relative; display: flex; flex-wrap: wrap; gap: .45rem; margin: 0 0 .8rem; }
.tc-search-filters .tc-chip { margin: 0; padding: .45rem .95rem; background: rgba(255, 255, 255, .8); }
.tc-search-filters .tc-chip:hover, .tc-search-filters .tc-chip.is-active { background: var(--tc-primary); }
.tc-chip-count { display: inline-block; min-width: 1.5em; margin-left: .35em; padding: 0 .45em; border-radius: 999px; background: rgba(15, 94, 102, .12); font-size: .75rem; text-align: center; }
.tc-chip:hover .tc-chip-count, .tc-chip.is-active .tc-chip-count { background: rgba(255, 255, 255, .25); }
.tc-search-count { position: relative; margin: 0; color: var(--tc-muted); font-size: .95rem; }

.tc-search-top {
	display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); margin: 0 0 2.6rem; overflow: hidden;
	border-radius: var(--tc-radius); background: var(--tc-surface); box-shadow: var(--tc-shadow);
}
.tc-search-top-media { display: block; min-height: 300px; }
.tc-search-top-media img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 0; }
.tc-search-top-body { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; padding: 2rem 2.2rem; }
.tc-search-badge {
	display: inline-block; margin-right: .5em; padding: .2em .65em; border-radius: 99px;
	background: var(--tc-accent); color: #fff; letter-spacing: .08em;
}
.tc-search-top-title { margin: .2rem 0 .6rem; font-family: var(--tc-serif); font-size: clamp(1.7rem, 1.3rem + 1.4vw, 2.4rem); }
.tc-search-top-title a { color: var(--tc-ink); text-decoration: none; }
.tc-search-top-title a:hover { color: var(--tc-primary); }
.tc-search-top-text { margin: 0 0 1.3rem; color: var(--tc-muted); font-size: 1.02rem; }

.tc-search-group { margin: 0 0 2.6rem; }
.tc-search-group-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: 0 0 1rem; padding-bottom: .6rem; border-bottom: 1px solid var(--tc-line); }
.tc-search-group-title { display: flex; align-items: center; gap: .6rem; margin: 0; font-family: var(--tc-serif); font-size: 1.5rem; }
.tc-search-group-icon { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 50%; background: var(--tc-sand) center / 18px 18px no-repeat; }
.tc-search-icon-destination { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230f5e66' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.2-7-11a7 7 0 0 1 14 0c0 4.8-7 11-7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E"); }
.tc-search-icon-attraction { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230f5e66' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18M5 21V10m14 11V10M9 21v-6h6v6M2 10l10-6 10 6'/%3E%3C/svg%3E"); }
.tc-search-icon-guide { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230f5e66' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5a2 2 0 0 1 2-2h13v16H6a2 2 0 0 0-2 2z'/%3E%3Cpath d='M4 21V5M9 7h6'/%3E%3C/svg%3E"); }
.tc-search-icon-tour { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230f5e66' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9h18v3a2 2 0 0 0 0 4v3H3v-3a2 2 0 0 0 0-4z'/%3E%3Cpath d='M14 9v10' stroke-dasharray='2 2'/%3E%3C/svg%3E"); }
.tc-search-group-more { flex: 0 0 auto; color: var(--tc-primary); font-weight: 700; font-size: .92rem; text-decoration: none; }
.tc-search-group-more:hover { color: var(--tc-accent); }
.tc-search-results { margin-top: 0; }
/* Results as horizontal cards in two columns: denser, and groups of one or two do not leave a gap. */
@media (min-width: 769px) {
	.tc-search-results { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
	.tc-search-results .tc-card { display: grid; grid-template-columns: 210px minmax(0, 1fr); }
	.tc-search-results .tc-card-media { aspect-ratio: auto; height: 100%; min-height: 150px; }
	.tc-search-results .tc-card-body { padding: 1rem 1.2rem; }
	.tc-search-results .tc-card-title { font-size: 1.12rem; }
	.tc-search-results .tc-card-text { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; font-size: .9rem; margin-bottom: .7rem; }
}

@media (max-width: 768px) {
	.tc-search-header { margin: 1rem 0 1.4rem; padding: 1.6rem 1.1rem 1.2rem; }
	.tc-search-art { display: none; }
	/* Chips in one row that scrolls sideways. */
	.tc-search-filters { flex-wrap: nowrap; overflow-x: auto; margin-right: -1.1rem; padding-right: 1.1rem; scrollbar-width: none; }
	.tc-search-filters::-webkit-scrollbar { display: none; }
	.tc-search-filters .tc-chip { flex: 0 0 auto; }
	.tc-search-top { grid-template-columns: 1fr; margin-bottom: 2rem; }
	.tc-search-top-media { min-height: 0; aspect-ratio: 16 / 10; }
	.tc-search-top-body { padding: 1.2rem 1.2rem 1.4rem; }
	.tc-search-group-title { font-size: 1.25rem; }
	/* Compact horizontal cards: photo on the left, text on the right. */
	.tc-search-results { grid-template-columns: 1fr; gap: 12px; }
	.tc-search-results .tc-card { display: grid; grid-template-columns: 112px 1fr; }
	.tc-search-results .tc-card:hover { transform: none; }
	.tc-search-results .tc-card-media { aspect-ratio: auto; height: 100%; min-height: 112px; }
	.tc-search-results .tc-card-body { padding: .75rem .9rem .8rem; }
	.tc-search-results .tc-card-title { font-size: 1.02rem; margin-bottom: .25rem; }
	.tc-search-results .tc-card-text { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: .86rem; margin-bottom: .5rem; }
	.tc-search-results .tc-card-actions .tc-button { padding: .35rem .75rem; font-size: .8rem; }
}
.tc-search-empty { margin: .5rem 0 2.5rem; padding: 1.8rem 2rem; border-radius: var(--tc-radius); background: var(--tc-surface); box-shadow: var(--tc-shadow); }
.tc-search-empty p { margin: 0 0 .8rem; color: var(--tc-muted); }
.tc-search-empty .tc-search-empty-title { margin-bottom: .4rem; font-family: var(--tc-serif); font-size: 1.45rem; color: var(--tc-ink); }
.tc-search-empty-links { margin-bottom: 0 !important; }
