/*
 * Site design system for the page-builder sections (resources/views/sections)
 * and the custom cursor. Brand palette and type only; editorial layout with
 * generous white space. Prefix: ui-
 */
:root {
    --ui-dark: #2B1E12; --ui-brown: #5A3E1B; --ui-muted: #6B4F2A; --ui-gold: #D4A857; --ui-gold-light: #E6C27A;
    --ui-cream: #F7EBD7; --ui-cream-alt: #EFE1C6; --ui-paper: #FBF6EE; --ui-line: rgba(43, 30, 18, .1);
    --ui-ease: cubic-bezier(.22, 1, .36, 1);
}

/* Layout */
.ui-sec { position: relative; padding: 80px 0; font-family: 'Poppins', sans-serif; color: var(--ui-dark); }
@media (min-width: 1024px) { .ui-sec { padding: 128px 0; } }
.ui-wrap { max-width: 1320px; margin: 0 auto; padding: 0 20px; }
@media (min-width: 768px) { .ui-wrap { padding: 0 40px; } }
.ui-paper { background: var(--ui-paper); }
.ui-cream { background: var(--ui-cream); }
.ui-white { background: #fff; }
.ui-darkbg { background: var(--ui-dark); color: #fff; }

/* Section header: copy on the left, a quiet link on the right (stacks on phones) */
.ui-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 24px 48px; margin-bottom: 56px; }
@media (min-width: 1024px) { .ui-head { margin-bottom: 72px; } }
.ui-head > div { max-width: 720px; }
.ui-head-center { justify-content: center; text-align: center; }
.ui-head-center > div { margin: 0 auto; }
.ui-kicker { display: inline-flex; align-items: center; gap: 12px; font-size: 11px; font-weight: 700; letter-spacing: .28em; text-transform: uppercase; color: var(--ui-gold); }
.ui-kicker::before { content: ''; width: 28px; height: 1px; background: currentColor; }
.ui-head-center .ui-kicker::after { content: ''; width: 28px; height: 1px; background: currentColor; }
.ui-title { font-family: 'Playfair Display', Georgia, serif; font-weight: 500; font-size: clamp(2rem, 4.2vw, 3.5rem); line-height: 1.08; letter-spacing: -.015em; margin-top: 18px; color: inherit; }
.ui-title em { font-style: italic; color: var(--ui-brown); }
.ui-darkbg .ui-title em { color: var(--ui-gold-light); }
.ui-lead { font-size: 1.05rem; line-height: 1.85; color: rgba(43, 30, 18, .72); margin-top: 18px; max-width: 620px; }
.ui-darkbg .ui-lead { color: rgba(255, 255, 255, .78); }
.ui-head-center .ui-lead { margin-left: auto; margin-right: auto; }

/* Buttons and links */
.ui-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; height: 54px; padding: 0 30px; border-radius: 2px; border: 1px solid transparent; font-size: 12px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; white-space: nowrap; transition: background .3s, color .3s, border-color .3s; }
.ui-btn-gold { background: var(--ui-gold); color: var(--ui-dark); }
.ui-btn-gold:hover { background: #fff; color: var(--ui-dark); }
.ui-btn-dark { background: var(--ui-dark); color: #fff; }
.ui-btn-dark:hover { background: var(--ui-gold); color: var(--ui-dark); }
.ui-btn-ghost { border-color: rgba(255, 255, 255, .55); color: #fff; }
.ui-btn-ghost:hover { background: #fff; color: var(--ui-dark); }
.ui-link { display: inline-flex; align-items: center; gap: 10px; font-size: 12px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--ui-dark); white-space: nowrap; padding-bottom: 6px; background: linear-gradient(var(--ui-gold), var(--ui-gold)) left bottom / 100% 1px no-repeat; transition: gap .35s var(--ui-ease), background-size .35s var(--ui-ease); }
.ui-link:hover { gap: 16px; }
.ui-link svg { width: 16px; height: 16px; }
.ui-darkbg .ui-link { color: #fff; }

/* Image frames */
.ui-frame { position: relative; overflow: hidden; background: var(--ui-cream-alt); border-radius: 3px; }
.ui-frame img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ui-ease); }
a:hover .ui-frame img, .ui-frame:hover img { transform: scale(1.05); }
.ui-shade::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top, rgba(43, 30, 18, .82) 0%, rgba(43, 30, 18, .18) 55%, rgba(43, 30, 18, 0) 100%); pointer-events: none; }
.ui-ph { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--ui-gold); background: linear-gradient(135deg, var(--ui-cream-alt), var(--ui-cream)); }

/* --- Trust strip --- */
.ui-trust { background: #fff; border-bottom: 1px solid var(--ui-line); font-family: 'Poppins', sans-serif; color: var(--ui-dark); }
.ui-trust-row { display: grid; grid-template-columns: repeat(2, 1fr); }
@media (min-width: 900px) { .ui-trust-row { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); } }
.ui-trust-item { display: flex; flex-direction: column; justify-content: center; gap: 6px; padding: 28px 20px; border-right: 1px solid var(--ui-line); transition: background .3s; }
.ui-trust-item:last-child { border-right: 0; }
.ui-trust-item:hover { background: var(--ui-paper); }
@media (max-width: 899px) { .ui-trust-item:nth-child(2n) { border-right: 0; } .ui-trust-item:nth-child(n + 3) { border-top: 1px solid var(--ui-line); } }
@media (min-width: 900px) { .ui-trust-item { padding: 40px 36px; } }
.ui-trust-big { display: inline-flex; align-items: center; gap: 10px; font-family: 'Playfair Display', Georgia, serif; font-size: clamp(1.9rem, 3.4vw, 2.8rem); font-weight: 500; line-height: 1; color: var(--ui-dark); }
.ui-trust-big small { font-size: .5em; color: var(--ui-muted); margin-left: 2px; }
.ui-trust-word { font-style: italic; color: var(--ui-brown); font-size: clamp(1.5rem, 2.6vw, 2.1rem); }
.ui-trust-text { font-size: 13px; line-height: 1.55; color: rgba(43, 30, 18, .66); }

/* --- Why travel with us (icon_features) --- */
.ui-why { display: grid; gap: 56px; }
@media (min-width: 1024px) { .ui-why { grid-template-columns: 5fr 7fr; gap: 96px; } .ui-why-intro { position: sticky; top: 140px; align-self: start; } }
.ui-why-list { display: grid; gap: 0; counter-reset: why; }
@media (min-width: 640px) { .ui-why-list { grid-template-columns: 1fr 1fr; column-gap: 48px; } }
.ui-why-item { padding: 32px 0 36px; border-top: 1px solid var(--ui-line); }
.ui-why-num { font-family: 'Playfair Display', Georgia, serif; font-size: 1.05rem; font-style: italic; color: var(--ui-gold); }
.ui-why-item h3 { font-family: 'Playfair Display', Georgia, serif; font-weight: 500; font-size: 1.5rem; line-height: 1.25; margin: 14px 0 12px; }
.ui-why-item p { font-size: 15px; line-height: 1.8; color: rgba(43, 30, 18, .7); }

/* --- Trip cards (safari_grid) --- */
.ui-cards { display: grid; gap: 40px 28px; }
@media (min-width: 640px) { .ui-cards { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .ui-cards-3 { grid-template-columns: repeat(3, 1fr); } .ui-cards-4 { grid-template-columns: repeat(4, 1fr); } }
/* Phones: a swipeable row instead of a long stack */
@media (max-width: 639px) {
    .ui-cards-scroll { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-left: 20px; gap: 16px; margin: 0 -20px; padding: 0 20px 8px; scrollbar-width: none; }
    .ui-cards-scroll::-webkit-scrollbar { display: none; }
    .ui-cards-scroll > * { flex: 0 0 82%; scroll-snap-align: start; }
}
.ui-trip { position: relative; display: flex; flex-direction: column; }
.ui-trip .ui-frame { aspect-ratio: 4 / 5; }
.ui-trip-chip { position: absolute; left: 14px; bottom: 14px; z-index: 2; padding: 7px 12px; border-radius: 2px; background: rgba(255, 255, 255, .92); backdrop-filter: blur(6px); font-size: 11.5px; font-weight: 600; letter-spacing: .06em; color: var(--ui-dark); }
.ui-trip-body { padding-top: 22px; }
.ui-trip-kicker { font-size: 10.5px; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: var(--ui-gold); }
.ui-trip h3 { font-family: 'Playfair Display', Georgia, serif; font-weight: 500; font-size: 1.4rem; line-height: 1.28; margin-top: 8px; transition: color .25s; }
.ui-trip a:hover h3 { color: var(--ui-brown); }
.ui-trip-price { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--ui-line); font-size: 13.5px; color: rgba(43, 30, 18, .65); }
.ui-trip-price b { font-size: 15px; font-weight: 600; color: var(--ui-dark); }

/* --- Destination mosaic (destination_showcase) --- */
.ui-mosaic { display: grid; gap: 14px; grid-template-columns: 1fr 1fr; grid-auto-rows: 220px; }
@media (min-width: 900px) { .ui-mosaic { grid-template-columns: repeat(4, 1fr); grid-auto-rows: 260px; gap: 18px; } }
.ui-mosaic > a:first-child { grid-column: span 2; grid-row: span 2; }
.ui-tile { position: relative; display: block; height: 100%; }
.ui-tile .ui-frame { position: absolute; inset: 0; }
.ui-tile-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 22px; color: #fff; }
.ui-tile-body h3 { font-family: 'Playfair Display', Georgia, serif; font-weight: 500; font-size: 1.45rem; line-height: 1.2; color: #fff; }
.ui-mosaic > a:first-child .ui-tile-body h3 { font-size: clamp(1.8rem, 3vw, 2.6rem); }
.ui-tile-body p { font-size: 12.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--ui-gold-light); margin-top: 6px; }
.ui-tile-more { display: inline-flex; align-items: center; gap: 8px; margin-top: 12px; font-size: 11.5px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; opacity: 0; transform: translateY(8px); transition: opacity .4s var(--ui-ease), transform .4s var(--ui-ease); }
.ui-tile:hover .ui-tile-more, .ui-tile:focus-visible .ui-tile-more { opacity: 1; transform: none; }
@media (hover: none) { .ui-tile-more { opacity: 1; transform: none; } }

/* --- Editorial split (split_hero) --- */
.ui-split { display: grid; background: var(--ui-dark); color: #fff; overflow: hidden; }
@media (min-width: 1024px) { .ui-split { grid-template-columns: 11fr 9fr; min-height: 640px; } .ui-split-flip .ui-split-media { order: 2; } }
.ui-split-media { position: relative; min-height: 360px; }
.ui-split-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ui-split-copy { display: flex; flex-direction: column; justify-content: center; padding: 64px 24px; }
@media (min-width: 768px) { .ui-split-copy { padding: 80px 56px; } }
@media (min-width: 1280px) { .ui-split-copy { padding: 96px 96px; } }
.ui-split-sub { font-family: 'Playfair Display', Georgia, serif; font-style: italic; font-size: 1.35rem; line-height: 1.5; color: var(--ui-gold-light); margin-top: 18px; }
.ui-split-body { margin-top: 20px; font-size: 1.02rem; line-height: 1.9; color: rgba(255, 255, 255, .8); }
.ui-split-body p + p { margin-top: 1rem; }
.ui-split-body strong { color: var(--ui-gold-light); font-weight: 600; }
.ui-split .ui-btn { align-self: flex-start; margin-top: 36px; }

/* --- Testimonials --- */
.ui-quote-wrap { max-width: 920px; margin: 0 auto; text-align: center; }
.ui-quote-mark { font-family: 'Playfair Display', Georgia, serif; font-size: 6rem; line-height: .6; color: var(--ui-gold); height: 48px; }
.ui-quote { font-family: 'Playfair Display', Georgia, serif; font-style: italic; font-weight: 400; font-size: clamp(1.35rem, 2.6vw, 2.05rem); line-height: 1.5; color: var(--ui-dark); }
.ui-quote-by { margin-top: 32px; font-size: 12px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
.ui-quote-trip { margin-top: 6px; font-size: 14px; color: var(--ui-muted); }
.ui-stars { display: inline-flex; gap: 4px; margin-bottom: 28px; color: var(--ui-gold); }
.ui-slider-nav { display: flex; align-items: center; justify-content: center; gap: 22px; margin-top: 44px; }
.ui-arrow { display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 50%; border: 1px solid var(--ui-line); color: var(--ui-dark); transition: background .25s, color .25s, border-color .25s; }
.ui-arrow:hover { background: var(--ui-dark); color: #fff; border-color: var(--ui-dark); }
.ui-count { font-size: 13px; letter-spacing: .12em; color: var(--ui-muted); min-width: 64px; }

/* --- Gallery --- */
.ui-gallery { display: grid; gap: 12px; grid-template-columns: repeat(2, 1fr); grid-auto-rows: 180px; grid-auto-flow: dense; }
@media (min-width: 900px) { .ui-gallery { grid-template-columns: repeat(4, 1fr); grid-auto-rows: 230px; gap: 16px; } }
.ui-gallery > button { position: relative; display: block; padding: 0; border: 0; cursor: zoom-in; }
.ui-gallery > button .ui-frame { position: absolute; inset: 0; }
.ui-gallery > button:nth-child(6n + 1) { grid-column: span 2; grid-row: span 2; }
.ui-gallery > button:nth-child(6n + 4) { grid-row: span 2; }

/* Masonry gallery: photos keep their own proportions */
.ui-masonry { columns: 2; column-gap: 12px; }
@media (min-width: 900px) { .ui-masonry { columns: 3; column-gap: 18px; } }
@media (min-width: 1280px) { .ui-masonry { columns: 4; } }
.ui-masonry > button { display: block; width: 100%; margin: 0 0 12px; padding: 0; border: 0; background: none; cursor: zoom-in; break-inside: avoid; }
@media (min-width: 900px) { .ui-masonry > button { margin-bottom: 18px; } }
.ui-masonry .ui-frame img { display: block; height: auto; }

/* --- Rails (experiences, reviews) --- */
.ui-rail-nav { display: flex; gap: 10px; }
@media (max-width: 767px) { .ui-head .ui-rail-nav { display: none; } }
.ui-rail { display: flex; gap: 18px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-left: max(20px, calc((100vw - 1320px) / 2 + 40px)); padding: 0 max(20px, calc((100vw - 1320px) / 2 + 40px)) 8px; scrollbar-width: none; }
.ui-rail::-webkit-scrollbar { display: none; }
@media (hover: hover) and (pointer: fine) { .ui-rail--drag { cursor: grab; } }
.ui-rail--drag.is-dragging { cursor: grabbing; scroll-snap-type: none; user-select: none; }
.ui-rail--drag.is-dragging * { pointer-events: none; }
.ui-rail--drag img { -webkit-user-drag: none; user-select: none; }
.ui-rail-dots { display: flex; justify-content: center; gap: 8px; margin-top: 26px; }
.ui-rail-dots button { width: 8px; height: 8px; padding: 0; border-radius: 999px; background: rgba(43, 30, 18, .2); transition: width .3s, background .3s; }
.ui-rail-dots button.is-on { width: 26px; background: #D4A857; }
.ui-exp { position: relative; flex: 0 0 78%; max-width: 380px; aspect-ratio: 3 / 4; scroll-snap-align: start; color: #fff; display: block; }
@media (min-width: 640px) { .ui-exp { flex-basis: 44%; } }
@media (min-width: 1024px) { .ui-exp { flex-basis: 28%; } }
.ui-exp .ui-frame { position: absolute; inset: 0; }
.ui-exp-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: 26px; }
.ui-exp-count { font-size: 11px; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: var(--ui-gold-light); }
.ui-exp h3 { font-family: 'Playfair Display', Georgia, serif; font-weight: 500; font-size: 1.65rem; line-height: 1.15; margin-top: 8px; color: #fff; }
.ui-exp-desc { font-size: 14px; line-height: 1.65; color: rgba(255, 255, 255, .85); margin-top: 10px; max-height: 0; opacity: 0; overflow: hidden; transition: max-height .6s var(--ui-ease), opacity .4s; }
.ui-exp:hover .ui-exp-desc, .ui-exp:focus-visible .ui-exp-desc { max-height: 140px; opacity: 1; }
@media (hover: none) { .ui-exp-desc { max-height: 140px; opacity: 1; } }

/* --- Reviews slider --- */
.ui-score { display: flex; align-items: center; gap: 16px; }
.ui-score-num { font-family: 'Playfair Display', Georgia, serif; font-size: 3.6rem; line-height: 1; color: var(--ui-dark); }
.ui-score p { font-size: 13.5px; color: var(--ui-muted); margin: 6px 0 0; }
.ui-stars-row { display: inline-flex; gap: 3px; color: var(--ui-gold); vertical-align: middle; }
.ui-platforms { display: flex; flex-wrap: wrap; gap: 14px; margin: -24px 0 40px; }
.ui-platform { display: inline-flex; align-items: center; gap: 14px; padding: 14px 20px 14px 14px; border-radius: 3px; background: #fff; box-shadow: 0 1px 0 var(--ui-line); transition: box-shadow .3s; }
a.ui-platform:hover { box-shadow: 0 14px 30px -18px rgba(43, 30, 18, .45); }
.ui-platform b { display: block; font-size: 14px; font-weight: 600; color: var(--ui-dark); }
.ui-platform-line { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--ui-muted); margin-top: 2px; }
.ui-review-track { --gap: 20px; display: flex; align-items: stretch; gap: var(--gap); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 4px 2px 12px; }
.ui-review-track::-webkit-scrollbar { display: none; }
@media (max-width: 767px) { .ui-review-track { margin: 0 -20px; padding: 4px 20px 12px; scroll-padding-left: 20px; } }
.ui-review { flex: 0 0 86%; scroll-snap-align: start; display: flex; flex-direction: column; min-height: 360px; padding: 32px; border-radius: 4px; background: #fff; box-shadow: 0 1px 0 var(--ui-line), 0 18px 40px -32px rgba(43, 30, 18, .45); }
@media (min-width: 768px) { .ui-review { flex-basis: calc((100% - var(--gap)) / 2); } }
@media (min-width: 1100px) { .ui-review { flex-basis: calc((100% - 2 * var(--gap)) / 3); } }
.ui-review-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ui-review-source { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--ui-dark); }
.ui-review h3 { font-family: 'Playfair Display', Georgia, serif; font-weight: 500; font-size: 1.25rem; line-height: 1.35; margin-top: 20px; color: var(--ui-dark); }
.ui-review-text { flex: 1; margin-top: 12px; font-size: 15.5px; line-height: 1.75; color: rgba(43, 30, 18, .78); display: -webkit-box; -webkit-line-clamp: 7; -webkit-box-orient: vertical; overflow: hidden; }
.ui-review-by { display: flex; align-items: center; gap: 12px; margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--ui-line); }
.ui-review-by p { margin: 0; }
.ui-review-avatar { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; object-fit: cover; background: var(--ui-cream); font-family: 'Playfair Display', Georgia, serif; font-size: 1.15rem; color: var(--ui-brown); flex-shrink: 0; }
.ui-review-name { font-size: 14.5px; font-weight: 600; line-height: 1.3; color: var(--ui-dark); }
.ui-review-meta { font-size: 12.5px; color: var(--ui-muted); margin-top: 2px; }
.ui-dots { display: flex; gap: 8px; }
.ui-dot { width: 8px; height: 8px; padding: 0; border: 0; border-radius: 4px; background: rgba(43, 30, 18, .2); cursor: pointer; transition: width .35s var(--ui-ease), background .35s; }
.ui-dot.is-on { width: 26px; background: var(--ui-gold); }

/* --- Full-bleed call to action (cta_banner) --- */
.ui-cta { position: relative; isolation: isolate; overflow: hidden; display: flex; align-items: center; min-height: 560px; padding: 96px 0; color: #fff; text-align: center; }
.ui-cta > img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.ui-cta::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(43, 30, 18, .55), rgba(43, 30, 18, .78)); }
.ui-cta-plain::before { background: radial-gradient(circle at 18% 20%, rgba(212, 168, 87, .22), transparent 55%), radial-gradient(circle at 85% 85%, rgba(212, 168, 87, .14), transparent 50%); }
.ui-cta .ui-title { color: #fff; max-width: 900px; margin-left: auto; margin-right: auto; }
.ui-cta .ui-lead { color: rgba(255, 255, 255, .85); margin-left: auto; margin-right: auto; }
.ui-cta-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 40px; }

/* --- Journal (blog) --- */
.ui-journal { display: grid; gap: 40px; }
@media (min-width: 1024px) { .ui-journal { grid-template-columns: 7fr 5fr; gap: 56px; } }
.ui-journal-side { display: grid; gap: 32px; align-content: start; }
.ui-post { display: grid; gap: 18px; }
.ui-post .ui-frame { aspect-ratio: 3 / 2; }
.ui-post-side { grid-template-columns: 160px 1fr; align-items: center; gap: 20px; }
.ui-post-side .ui-frame { aspect-ratio: 1; }
@media (min-width: 1024px) { .ui-post-side { grid-template-columns: 200px 1fr; } }
.ui-sec .ui-post-meta, .ui-sec .ui-trip-kicker { color: var(--ui-gold); }
.ui-post-meta { font-size: 11px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--ui-gold); }
.ui-post h3 { font-family: 'Playfair Display', Georgia, serif; font-weight: 500; font-size: 1.35rem; line-height: 1.3; margin-top: 8px; transition: color .25s; }
.ui-post-lead h3 { font-size: clamp(1.6rem, 2.6vw, 2.2rem); }
.ui-post p { margin-top: 10px; font-size: 15px; line-height: 1.8; color: rgba(43, 30, 18, .7); }
.ui-post:hover h3 { color: var(--ui-brown); }

/* Scroll reveal: only once JS is running, so content is never hidden without it */
.ui-js .ui-reveal { opacity: 0; transform: translateY(32px); transition: opacity 1s var(--ui-ease), transform 1s var(--ui-ease); transition-delay: var(--ui-delay, 0ms); }
.ui-js .ui-reveal.is-in { opacity: 1; transform: none; }
.ui-js .ui-reveal-img .ui-frame img { transform: scale(1.12); transition: transform 1.6s var(--ui-ease); }
.ui-js .ui-reveal-img.is-in .ui-frame img { transform: scale(1); }

/* Custom cursor (fine pointers only; added by site.js) */
.ui-cursor, .ui-cursor-dot { position: fixed; top: 0; left: 0; z-index: 10010; pointer-events: none; border-radius: 50%; transform: translate3d(-100px, -100px, 0); }
.ui-cursor-dot { width: 6px; height: 6px; margin: -3px 0 0 -3px; background: var(--ui-dark); transition: opacity .2s, background .2s; }
.ui-cursor { width: 38px; height: 38px; margin: -19px 0 0 -19px; border: 1px solid rgba(212, 168, 87, .9); display: flex; align-items: center; justify-content: center; transition: width .35s var(--ui-ease), height .35s var(--ui-ease), margin .35s var(--ui-ease), background .35s, border-color .35s, opacity .2s; }
.ui-cursor span { font-family: 'Poppins', sans-serif; font-size: 10px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--ui-dark); opacity: 0; transition: opacity .25s; }
.ui-cursor.is-link { width: 56px; height: 56px; margin: -28px 0 0 -28px; background: rgba(212, 168, 87, .16); }
.ui-cursor.is-view { width: 88px; height: 88px; margin: -44px 0 0 -44px; background: var(--ui-gold); border-color: var(--ui-gold); }
.ui-cursor.is-view span { opacity: 1; }
.ui-cursor.is-down { transform-origin: center; }
.ui-cursor-on-dark .ui-cursor-dot { background: #fff; }
.ui-cursor.is-hidden, .ui-cursor-dot.is-hidden { opacity: 0; }
.ui-cursor.is-view + .ui-cursor-dot, .ui-cursor.is-link + .ui-cursor-dot { opacity: 0; }

@media (prefers-reduced-motion: reduce) {
    .ui-js .ui-reveal, .ui-js .ui-reveal-img .ui-frame img { opacity: 1; transform: none; transition: none; }
    .ui-frame img, .ui-link, .ui-tile-more { transition: none; }
}

/* Trip page: photos of the places on the route. */
.ui-trip-photos { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.ui-trip-photos .ui-frame { aspect-ratio: 4 / 3; }
@media (min-width: 900px) {
    .ui-trip-photos { grid-template-columns: 2fr 1fr 1fr; gap: 16px; }
    .ui-trip-photos .ui-frame:first-child { grid-row: span 2; aspect-ratio: auto; }
}
@media (max-width: 899px) { .ui-trip-photos .ui-frame:first-child { grid-column: span 2; aspect-ratio: 16 / 9; } }

/* ── Trip card (components/trip-card) — used everywhere a tour is listed ── */
.tc { position: relative; display: flex; flex-direction: column; min-width: 0; height: 100%; background: #fff; border: 1px solid var(--ui-line); border-radius: 4px; overflow: hidden; font-family: 'Poppins', sans-serif; color: var(--ui-dark); transition: transform .45s var(--ui-ease), box-shadow .45s var(--ui-ease), border-color .3s; }
.tc:hover { transform: translateY(-4px); border-color: rgba(212, 168, 87, .5); box-shadow: 0 26px 44px -28px rgba(43, 30, 18, .5); }
.tc-media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--ui-cream-alt); }
.tc-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ui-ease); }
.tc:hover .tc-media img { transform: scale(1.06); }
.tc-media::after { content: ''; position: absolute; inset: auto 0 0; height: 40%; background: linear-gradient(to top, rgba(43, 30, 18, .35), transparent); pointer-events: none; }
.tc-tag, .tc-badge { position: absolute; z-index: 2; padding: 6px 10px; border-radius: 2px; font-size: 10px; font-weight: 600; letter-spacing: .14em; line-height: 1.2; text-transform: uppercase; }
.tc-tag { left: 12px; bottom: 12px; background: rgba(251, 246, 238, .95); color: var(--ui-dark); }
.tc-badge { left: 12px; top: 12px; background: var(--ui-gold); color: var(--ui-dark); }
.tc-body { display: flex; flex: 1; flex-direction: column; padding: 20px 20px 0; }
.tc-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 10.5px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--ui-brown); }
.tc-meta span { color: var(--ui-gold); }
.tc-title { margin: 8px 0 0; font-family: 'Playfair Display', Georgia, serif; font-size: 1.24rem; font-weight: 500; line-height: 1.28; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.tc-title a { color: inherit; text-decoration: none; transition: color .25s; }
.tc-title a::after { content: ''; position: absolute; inset: 0; z-index: 1; }
.tc:hover .tc-title a { color: var(--ui-brown); }
.tc-title a:focus-visible { outline: none; }
.tc:focus-within { box-shadow: 0 0 0 2px var(--ui-gold); }
.tc-route { display: flex; gap: 8px; margin: 12px 0 18px; font-size: .82rem; line-height: 1.55; color: var(--ui-muted); }
.tc-route svg { flex: none; width: 15px; height: 15px; margin-top: 3px; color: var(--ui-gold); }
.tc-route span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.tc-route i { font-style: normal; color: var(--ui-gold); margin: 0 1px; }
.tc-route small { font-size: .76rem; color: var(--ui-muted); }
.tc-foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-top: auto; padding: 16px 0 18px; border-top: 1px solid var(--ui-line); }
.tc-price { margin: 0; font-size: .76rem; line-height: 1.35; color: var(--ui-muted); }
.tc-price b { display: block; font-family: 'Playfair Display', Georgia, serif; font-size: 1.32rem; font-weight: 500; color: var(--ui-dark); }
.tc-btn { flex: none; padding: 10px 14px; border: 1px solid var(--ui-dark); border-radius: 2px; font-size: 10.5px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--ui-dark); transition: background .25s, color .25s; }
.tc:hover .tc-btn { background: var(--ui-dark); color: #fff; }
.tc-grid { display: grid; gap: 24px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 290px), 1fr)); }
@media (min-width: 1024px) { .tc-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .tc-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .tc-grid-4 .tc-title { font-size: 1.12rem; } }
.safari-slider .tc, .ui-cards-scroll .tc { height: auto; }

/* Language suggestion bar (partials/language-suggest) */
.lang-suggest { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 16px; padding: 10px 48px 10px 16px; position: relative; background: #F7EBD7; border-bottom: 1px solid rgba(43, 30, 18, .12); font-family: 'Poppins', sans-serif; font-size: .88rem; color: #2B1E12; }
.lang-suggest a { font-weight: 600; color: #5A3E1B; text-decoration: underline; text-underline-offset: 3px; }
.lang-suggest button { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); width: 32px; height: 32px; border: 0; background: none; font-size: 1.3rem; line-height: 1; color: #5A3E1B; cursor: pointer; }

/* Keyword text block on listing pages */
.seo-text a { color: #5A3E1B; text-decoration: underline; text-underline-offset: 2px; }
.seo-text a:hover { color: #D4A857; }

/* Travel style sections */
.type-description p { margin-bottom: 1.1rem; }
.type-description h3 { font-family: "Playfair Display", Georgia, serif; font-size: 1.375rem; font-weight: 700; color: #2B1E12; margin: 2rem 0 .75rem; }
.type-description a { color: #5A3E1B; text-decoration: underline; text-underline-offset: 2px; }
.type-description a:hover { color: #D4A857; }

/* Trip card without a price: the button sits on the right. */
.tc-foot-noprice { justify-content: flex-end; }

/* No sideways scrolling on any screen: footer columns may shrink and long e-mail addresses wrap. */
footer .grid > div { min-width: 0; }
footer a[href^="mailto:"] { overflow-wrap: anywhere; }
/* Safety net: clip (unlike hidden) keeps the sticky header working. */
html, body { overflow-x: clip; }
