/*
Theme Name:  EntoHub
Theme URI:   https://discovery.entodigital.io
Author:      EntoDigital
Description: Theme for the live EntoHub demo. Owns the site chrome and every visual component; the EntoHub plugin owns data and behaviour.
Version:     1.1.0
Requires at least: 6.4
Requires PHP: 7.4
License:     Proprietary
Text Domain: entohub
*/

/* ═══ Tokens ═══════════════════════════════════════════════════════════════ */

:root {
    --ink:    #1F2328;
    --paper:  #FFFCED;
    --mist:   #E0E9EE;
    --mist-2: #EEF3F6;
    --navy:   #1A2E45;
    --navy-2: #223A57;
    --text:   #2A2A2A;
    --body:   #3A4046;
    --sub:    #46515C;
    --muted:  #4A5057;
    --rust:   #9A3B1C;
    --green:  #2F6B3A;
    --line:   rgba(26, 46, 69, .14);
    --ring:   rgba(26, 46, 69, .22);

    --serif: "Petrona", Georgia, "Times New Roman", serif;
    --sans:  "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;

    /* Fluid page gutter: 16px on a phone, 64px on a wide screen. The content
       runs edge to edge up to 2560px so a 4K television is not left with two
       empty bands either side. */
    --gutter:   clamp(16px, 3.4vw, 64px);
    --wrap-max: 2560px;

    --r-sm: 10px;
    --r-md: 16px;
    --r-lg: 20px;
    --pill: 999px;

    --shadow-card: 0 0 0 1px rgba(26, 46, 69, .08), 0 20px 40px -30px rgba(26, 46, 69, .45);
    --shadow-pop:  0 24px 60px -20px rgba(26, 46, 69, .5), 0 0 0 1px rgba(26, 46, 69, .1);

    --header-h: 72px;

    /* Kept for anything still reading the 0.4 names. */
    --color-bg: var(--mist);
    --color-text: var(--text);
    --color-cta: var(--navy);
    --content-max-width: var(--wrap-max);
    --content-padding-x: var(--gutter);
    --card-radius: var(--r-md);
}

/* ═══ Base ═════════════════════════════════════════════════════════════════ */

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-padding-top: 88px; }

/* Big screens scale up rather than box in, the same breakpoints as
   entodigital.io: a 4K television at 100% scaling reads like a 2560px
   desktop instead of showing a narrow column with empty bands either side. */
/* Zoom multiplies vh too, so heights tied to the screen use --vh, which
   divides the zoom back out. */
:root { --vh: 1vh; }
@media (min-width: 2200px) { :root { zoom: 1.1875; --vh: calc(1vh / 1.1875); } }
@media (min-width: 3000px) { :root { zoom: 1.5; --vh: calc(1vh / 1.5); } }
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }

body {
    margin: 0;
    background: var(--mist);
    color: var(--text);
    font-family: var(--sans);
    font-size: 16px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

img, svg, video { max-width: 100%; }
img { height: auto; display: block; }
a { color: inherit; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
h1, h2, h3, h4, p, ul, ol, dl, dd, figure { margin: 0; }
ul, ol { padding: 0; }
[hidden] { display: none !important; }

:focus-visible { outline: 3px solid var(--navy); outline-offset: 2px; border-radius: 4px; }

.ento-sr,
.ento-visually-hidden,
.screen-reader-text {
    position: absolute !important;
    width: 1px; height: 1px;
    margin: -1px; padding: 0; border: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}

.ento-skip {
    position: absolute; left: 12px; top: -60px; z-index: 3000;
    background: var(--navy); color: var(--paper);
    padding: 10px 16px; border-radius: var(--r-sm);
    font-weight: 700; text-decoration: none;
}
.ento-skip:focus { top: 12px; }

.ento-wrap {
    width: 100%;
    max-width: var(--wrap-max);
    margin-inline: auto;
    padding-inline: var(--gutter);
}

.site { min-height: 100vh; display: flex; flex-direction: column; }
.site-main { flex: 1; width: 100%; }

/* Generic WordPress pages that are not one of the demo's own views. */
.site-main > article .entry-content {
    max-width: 760px; margin: 0 auto; padding: 48px var(--gutter) 80px;
    font-size: 17px; line-height: 1.7; color: var(--body);
}
.site-main > article .entry-content > * + * { margin-top: 1em; }

/* ═══ Shared type + controls ═══════════════════════════════════════════════ */

.ento-eyebrow {
    display: flex; align-items: center; gap: 10px;
    font-size: 12px; font-weight: 800; letter-spacing: .2em; text-transform: uppercase;
    color: var(--sub);
}
.ento-eyebrow::before { content: ""; width: 24px; height: 1.5px; background: currentColor; opacity: .6; }

.ento-h1 {
    font-family: var(--serif); font-weight: 800;
    font-size: clamp(36px, 4.2vw, 64px); line-height: 1; letter-spacing: -.025em;
    color: var(--ink);
}
.ento-h2 {
    font-family: var(--serif); font-weight: 700;
    font-size: clamp(24px, 2.2vw, 32px); line-height: 1.15; letter-spacing: -.01em;
    color: var(--ink);
}

.ento-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    min-height: 48px; padding: 0 22px;
    border: 0; border-radius: var(--pill);
    font-size: 14.5px; font-weight: 700; line-height: 1.1; white-space: nowrap;
    text-decoration: none; cursor: pointer;
    transition: background-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.ento-btn--navy { background: var(--navy); color: var(--paper); }
.ento-btn--navy:hover { background: var(--navy-2); }
.ento-btn--paper { background: var(--paper); color: var(--ink); }
.ento-btn--line { background: #fff; color: var(--navy); box-shadow: inset 0 0 0 1.5px rgba(26, 46, 69, .35); }
.ento-btn--line:hover { box-shadow: inset 0 0 0 1.5px var(--navy); }
.ento-btn--ghost-light {
    background: rgba(255, 252, 237, .14); color: var(--paper);
    box-shadow: inset 0 0 0 1.5px rgba(255, 252, 237, .55);
    -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
.ento-btn--ghost-light:hover { background: rgba(255, 252, 237, .24); }
.ento-btn--ghost-light:focus-visible { outline-color: var(--paper); }
.ento-btn--text { background: none; min-height: 40px; padding: 0 6px; color: var(--navy); text-decoration: underline; text-underline-offset: 3px; }
.ento-btn--block { display: flex; width: 100%; }
.ento-btn--sm { min-height: 40px; padding: 0 16px; font-size: 13.5px; }
.ento-btn[disabled], .ento-btn[aria-disabled="true"] { opacity: .5; cursor: not-allowed; }

/* Season chips, used on cards, the map panel, the place page and the trip. */
.ento-badge {
    display: inline-flex; align-items: center;
    min-height: 26px; padding: 0 10px; border-radius: var(--pill);
    font-size: 12px; font-weight: 700; line-height: 1; white-space: nowrap;
    background: var(--mist-2); color: var(--navy); border: 0; text-decoration: none;
}
.ento-badge--spring  { background: #E4F1E3; color: #2F5B2B; }
.ento-badge--summer  { background: #FBEFC9; color: #6B4E0B; }
.ento-badge--autumn  { background: #F8DECF; color: #7A3417; }
.ento-badge--winter  { background: #DCE8F4; color: #23476B; }
.ento-badge--neutral { background: #EDEFF1; color: #3F4750; }
.ento-badge--content { background: var(--navy); color: var(--paper); }
a.ento-badge--content:hover { background: var(--navy-2); }

/* ═══ Demo ribbon ══════════════════════════════════════════════════════════ */

.ento-ribbon { background: var(--ink); color: rgba(255, 252, 237, .82); font-size: 13px; font-weight: 600; }
.ento-ribbon-inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 38px; }
.ento-ribbon-text { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 8px 0; line-height: 1.35; }
.ento-ribbon-text strong { color: var(--paper); margin-right: 2px; }
.ento-ribbon-dot {
    width: 8px; height: 8px; border-radius: 50%; background: #3FB27F; flex: none; margin-right: 4px;
    box-shadow: 0 0 0 4px rgba(63, 178, 127, .2);
}
.ento-ribbon-link { color: var(--paper); text-decoration: none; white-space: nowrap; padding: 8px 0; }
.ento-ribbon-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.ento-ribbon-link:focus-visible { outline-color: var(--paper); }

/* ═══ Header ═══════════════════════════════════════════════════════════════ */

.site-header {
    position: sticky; top: 0; z-index: 1000;
    background: var(--paper);
    border-bottom: 1px solid var(--line);
}
.site-header-inner { display: flex; align-items: center; gap: 28px; min-height: var(--header-h); }

.site-brand {
    display: inline-flex; align-items: center; gap: 10px;
    font-family: var(--serif); font-weight: 700; font-size: 23px; line-height: 1;
    color: var(--ink); text-decoration: none;
}
.site-brand img { height: 24px; width: auto; }

.primary-nav { display: flex; gap: 4px; margin-left: 12px; }
.primary-nav a {
    display: inline-flex; align-items: center; min-height: 44px; padding: 0 15px;
    border-radius: var(--pill);
    font-size: 14.5px; font-weight: 600; color: var(--ink); text-decoration: none;
}
.primary-nav a:hover { background: rgba(26, 46, 69, .06); }
.primary-nav a[aria-current="page"] { background: rgba(26, 46, 69, .09); }

.ento-trip-link {
    margin-left: auto;
    display: inline-flex; align-items: center; gap: 10px;
    min-height: 44px; padding: 0 8px 0 18px; border-radius: var(--pill);
    background: var(--navy); color: var(--paper);
    font-weight: 700; font-size: 14.5px; text-decoration: none;
}
.ento-trip-link:hover { background: var(--navy-2); }
.ento-trip-count {
    display: grid; place-items: center; min-width: 28px; height: 28px; padding: 0 6px;
    border-radius: var(--pill); background: var(--paper); color: var(--navy); font-size: 13px;
}
.ento-trip-link.is-bumped .ento-trip-count { animation: ento-bump .4s ease; }
@keyframes ento-bump { 40% { transform: scale(1.3); } }

.site-menu-btn { display: none; }

@media (max-width: 860px) {
    :root { --header-h: 58px; }
    .site-header-inner { gap: 8px; }
    .site-brand { font-size: 19px; }
    .site-brand img { height: 20px; }
    .ento-trip-link { min-height: 40px; font-size: 13.5px; padding: 0 6px 0 14px; }
    .ento-trip-count { min-width: 24px; height: 24px; font-size: 12px; }
    .site-menu-btn {
        display: grid; place-items: center; order: 3;
        width: 44px; height: 44px; border: 0; border-radius: 12px; background: transparent;
    }
    .site-menu-btn::before {
        content: ""; width: 20px; height: 14px;
        background: linear-gradient(var(--ink), var(--ink)) top / 100% 2px no-repeat,
                    linear-gradient(var(--ink), var(--ink)) center / 100% 2px no-repeat,
                    linear-gradient(var(--ink), var(--ink)) bottom / 100% 2px no-repeat;
    }
    .menu-open .site-menu-btn::before {
        height: 20px;
        background: linear-gradient(45deg, transparent 45%, var(--ink) 45%, var(--ink) 55%, transparent 55%),
                    linear-gradient(-45deg, transparent 45%, var(--ink) 45%, var(--ink) 55%, transparent 55%);
    }
    .primary-nav {
        display: none; position: absolute; left: 0; right: 0; top: 100%;
        margin: 0; padding: 8px var(--gutter) 16px;
        flex-direction: column; background: var(--paper);
        border-bottom: 1px solid var(--line); box-shadow: 0 20px 30px -20px rgba(26, 46, 69, .4);
    }
    .menu-open .primary-nav { display: flex; }
    .primary-nav a { min-height: 48px; font-size: 16px; }
    .ento-ribbon { font-size: 11.5px; }
    .ento-ribbon-note, .ento-ribbon-link span[aria-hidden] { display: none; }
}
@media (max-width: 480px) {
    .ento-ribbon-stats { display: none; }
}

/* ═══ Footer ═══════════════════════════════════════════════════════════════ */

.site-footer { background: var(--ink); color: rgba(255, 252, 237, .78); font-size: 14px; }
.site-footer-inner { padding-block: 36px 40px; display: flex; flex-direction: column; gap: 8px; }
.site-footer p { max-width: 900px; line-height: 1.6; }
.site-footer a { color: var(--paper); text-underline-offset: 3px; }
.site-footer a:focus-visible { outline-color: var(--paper); }
.site-footer-small { font-size: 12.5px; opacity: .8; }

/* ═══ Discover: head ═══════════════════════════════════════════════════════ */

.ento-discover-head {
    display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 520px);
    gap: 24px 40px; align-items: end;
    padding-top: clamp(24px, 3vw, 40px); padding-bottom: 24px;
}
.ento-h1-row { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 16px; margin-top: 14px; }
.ento-discover-intro { font-size: 17px; color: var(--body); margin-top: 12px; max-width: 70ch; }

/* The country select, drawn as the pill beside the H1. */
.ento-country-form { display: inline-flex; align-items: center; gap: 8px; }
.ento-country-select {
    appearance: none; -webkit-appearance: none;
    min-height: 44px; padding: 0 40px 0 16px;
    border: 0; border-radius: var(--pill);
    background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%231A2E45' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 15px center;
    box-shadow: inset 0 0 0 1.5px rgba(26, 46, 69, .3);
    font-family: var(--sans); font-size: 14px; font-weight: 700; color: var(--navy);
    cursor: pointer;
}
.ento-country-select:hover { box-shadow: inset 0 0 0 1.5px var(--navy); }
.ento-country-go { min-height: 44px; padding: 0 16px; border: 0; border-radius: var(--pill); background: var(--navy); color: var(--paper); font-weight: 700; }
.ento-country-bar { display: none; } /* The standalone bar: the page heads carry the selector now. */

.ento-search-row {
    position: relative; display: flex; align-items: center;
    min-height: 56px; border-radius: var(--r-md); background: #fff;
    box-shadow: inset 0 0 0 1.5px rgba(26, 46, 69, .22), 0 10px 30px -18px rgba(26, 46, 69, .4);
}
.ento-search-row:focus-within { box-shadow: inset 0 0 0 2px var(--navy), 0 10px 30px -18px rgba(26, 46, 69, .4); }
.ento-search-icon { position: absolute; left: 18px; top: 50%; transform: translateY(-50%); color: var(--sub); display: flex; pointer-events: none; }
.ento-search-input {
    width: 100%; min-height: 56px; padding: 0 52px 0 48px;
    border: 0; background: transparent; border-radius: var(--r-md);
    font-size: 16px; color: var(--ink);
}
.ento-search-input::placeholder { color: #6B737C; }
.ento-search-input:focus { outline: none; }
.ento-search-input::-webkit-search-cancel-button { display: none; }
.ento-search-clear {
    position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
    width: 40px; height: 40px; border: 0; border-radius: 50%;
    background: var(--mist-2); color: var(--navy); font-size: 20px; line-height: 1;
}

/* ═══ Discover: filter bar ═════════════════════════════════════════════════ */

.ento-fbar {
    position: sticky; top: var(--header-h); z-index: 900;
    background: rgba(224, 233, 238, .94);
    -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
    border-block: 1px solid var(--line);
}
.ento-fbar-inner { display: flex; align-items: center; gap: 8px 12px; flex-wrap: wrap; min-height: 68px; padding-block: 12px; }
.ento-fbar-groups { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

.ento-fgroup { position: relative; }
.ento-fbtn {
    display: inline-flex; align-items: center; gap: 8px;
    min-height: 44px; padding: 0 16px; border: 0; border-radius: var(--pill);
    background: #fff; box-shadow: inset 0 0 0 1px rgba(26, 46, 69, .22);
    font-size: 14px; font-weight: 600; color: var(--ink); white-space: nowrap;
}
.ento-fbtn:hover { box-shadow: inset 0 0 0 1.5px var(--navy); }
.ento-fbtn[aria-expanded="true"] { box-shadow: inset 0 0 0 2px var(--navy); }
.ento-fbtn.is-active,
.ento-fgroup.has-value > .ento-fbtn { background: var(--navy); color: var(--paper); box-shadow: none; }
.ento-fbtn-count {
    display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px;
    border-radius: var(--pill); background: var(--paper); color: var(--navy); font-size: 12px; font-weight: 800;
}
.ento-fbtn-caret { transition: transform .15s ease; }
.ento-fbtn[aria-expanded="true"] .ento-fbtn-caret { transform: rotate(180deg); }

.ento-pop {
    position: absolute; left: 0; top: calc(100% + 8px); z-index: 20;
    width: max-content; min-width: 240px; max-width: min(360px, calc(100vw - 32px));
    margin: 0; padding: 14px; border: 0; border-radius: var(--r-md);
    background: var(--paper); box-shadow: var(--shadow-pop);
}
.ento-pop-options { display: flex; flex-direction: column; gap: 2px; max-height: min(360px, 55vh); overflow-y: auto; overscroll-behavior: contain; }
.ento-filter-option {
    display: flex; align-items: center; gap: 12px;
    min-height: 44px; padding: 0 10px; border-radius: var(--r-sm);
    font-size: 14.5px; font-weight: 600; color: var(--ink); cursor: pointer;
}
.ento-filter-option:hover { background: rgba(26, 46, 69, .06); }
.ento-filter-option input { width: 20px; height: 20px; accent-color: var(--navy); flex: none; margin: 0; }
.ento-region-search {
    width: 100%; min-height: 44px; margin-bottom: 8px; padding: 0 12px;
    border: 0; border-radius: var(--r-sm); background: #fff;
    box-shadow: inset 0 0 0 1.5px rgba(26, 46, 69, .22); font-size: 14.5px;
}
.ento-pop-foot { display: flex; justify-content: flex-end; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); }
.ento-pop-done { min-height: 40px; padding: 0 18px; border: 0; border-radius: var(--pill); background: var(--navy); color: var(--paper); font-weight: 700; font-size: 13.5px; }

/* The travel dates control (filled by ento-trip.js). */
.ento-dates-pop { display: grid; gap: 10px; min-width: 280px; }
.ento-dates-pop p { font-size: 13.5px; color: var(--sub); line-height: 1.45; }
.ento-dates-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ento-field-label { display: block; font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--sub); margin-bottom: 6px; }
.ento-date-input,
.ento-input,
.ento-select,
.ento-textarea {
    width: 100%; min-height: 48px; padding: 0 14px;
    border: 0; border-radius: 12px; background: #fff;
    box-shadow: inset 0 0 0 1.5px rgba(26, 46, 69, .24);
    font-size: 15px; color: var(--ink);
}
.ento-textarea { min-height: 96px; padding: 12px 14px; resize: vertical; line-height: 1.5; }
.ento-select { appearance: none; -webkit-appearance: none; padding-right: 36px; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%231A2E45' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 13px center; }
.ento-date-input:focus, .ento-input:focus, .ento-select:focus, .ento-textarea:focus { outline: none; box-shadow: inset 0 0 0 2px var(--navy); }

/* Active filter chips. */
.ento-chips-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ento-chips-row:empty { display: none; }
.ento-fbar-groups + .ento-chips-row::before { content: ""; width: 1px; height: 26px; background: var(--line); margin-right: 6px; }
.ento-active-chip {
    display: inline-flex; align-items: center; gap: 4px;
    min-height: 34px; padding: 0 4px 0 12px; border-radius: var(--pill);
    background: rgba(26, 46, 69, .1); color: var(--navy); font-size: 13px; font-weight: 700;
}
.ento-chip-remove {
    display: grid; place-items: center; width: 28px; height: 28px; padding: 0;
    border: 0; border-radius: 50%; background: rgba(26, 46, 69, .12); color: var(--navy); font-size: 16px; line-height: 1;
}
.ento-chip-remove:hover { background: var(--navy); color: var(--paper); }
.ento-clear-all { min-height: 34px; padding: 0 8px; border: 0; background: none; color: var(--navy); font-size: 13px; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }

/* ═══ Discover: list + map ═════════════════════════════════════════════════ */

.ento-split {
    display: grid;
    grid-template-columns: minmax(0, 1fr) clamp(380px, 38vw, 1100px);
    gap: 28px; align-items: start;
    padding-top: 24px; padding-bottom: 56px;
}
.ento-split-map { position: sticky; top: calc(var(--header-h) + 84px); }

.ento-result-count { font-size: 14px; font-weight: 600; color: var(--sub); margin-bottom: 14px; }
#ento-results-container { transition: opacity .15s ease; }
#ento-results-container.ento-loading { opacity: .45; pointer-events: none; }

.ento-cards {
    display: grid; gap: 20px;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
}

.ento-card {
    position: relative; display: flex; flex-direction: column;
    background: #fff; border-radius: 18px; overflow: hidden;
    box-shadow: var(--shadow-card);
    transition: box-shadow .15s ease, transform .15s ease;
}
.ento-card:hover { box-shadow: 0 0 0 1px rgba(26, 46, 69, .16), 0 26px 48px -28px rgba(26, 46, 69, .55); }
.ento-card.is-highlighted,
.ento-card--highlighted { box-shadow: 0 0 0 2px var(--navy), 0 20px 40px -20px rgba(26, 46, 69, .45); }
.ento-card-media-wrap { position: relative; aspect-ratio: 16 / 10; background: var(--mist-2); overflow: hidden; }
.ento-card-img-link { display: block; height: 100%; }
.ento-card-img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.ento-card:hover .ento-card-img { transform: scale(1.03); }
.ento-card-seasons { position: absolute; left: 12px; bottom: 12px; display: flex; flex-wrap: wrap; gap: 5px; pointer-events: none; }
.ento-card-seasons .ento-badge { min-height: 26px; box-shadow: 0 4px 10px -6px rgba(0, 0, 0, .5); }

.ento-card-body { flex: 1; display: flex; flex-direction: column; gap: 6px; padding: 16px 18px 18px; }
.ento-card-region { font-size: 11.5px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--sub); }
.ento-card-title { font-family: var(--serif); font-size: 22px; font-weight: 700; line-height: 1.15; color: var(--ink); }
.ento-card-title a { text-decoration: none; }
/* The whole card is the link target; the title link is stretched over it. */
.ento-card-title a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.ento-card-title a:focus-visible { outline: none; }
.ento-card:has(.ento-card-title a:focus-visible) { outline: 3px solid var(--navy); outline-offset: 3px; }
.ento-card-subtitle { font-size: 14px; line-height: 1.5; color: var(--muted); }
.ento-card-foot {
    margin-top: auto; padding-top: 12px; border-top: 1px solid var(--line);
    display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px;
    font-size: 12.5px; font-weight: 700; color: var(--sub);
}
.ento-card-diff { color: var(--ink); }
.ento-card-diff + .ento-card-cat::before { content: "·"; margin-right: 8px; }
.ento-card-medias { margin-left: auto; display: flex; gap: 6px; position: relative; z-index: 2; }
.ento-card-media {
    display: inline-flex; align-items: center; min-height: 28px; padding: 0 8px;
    border-radius: 6px; background: var(--mist); color: var(--navy); text-decoration: none;
}
.ento-card-media:hover { background: var(--navy); color: var(--paper); }

/* Save to trip: one component, three placements. */
.ento-trip-save {
    display: inline-flex; align-items: center; gap: 6px;
    min-height: 40px; padding: 0 14px 0 12px;
    border: 0; border-radius: var(--pill);
    background: rgba(255, 252, 237, .96); color: var(--ink);
    font-size: 13px; font-weight: 700; white-space: nowrap;
    box-shadow: 0 6px 14px -6px rgba(0, 0, 0, .45);
}
.ento-trip-save-icon { width: 16px; height: 16px; flex: none; background: currentColor; -webkit-mask: var(--ento-icon-plus) center / contain no-repeat; mask: var(--ento-icon-plus) center / contain no-repeat; }
.ento-trip-save.is-saved { background: var(--navy); color: var(--paper); }
.ento-trip-save.is-saved .ento-trip-save-icon { -webkit-mask-image: var(--ento-icon-check); mask-image: var(--ento-icon-check); }
.ento-card .ento-trip-save { position: absolute; right: 12px; top: 12px; z-index: 3; }
:root {
    --ento-icon-plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E");
    --ento-icon-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
}

/* "Suits your dates" note, top-left of a card image. */
.ento-datefit {
    position: absolute; left: 12px; top: 12px; z-index: 2;
    display: inline-flex; align-items: center; gap: 6px;
    min-height: 28px; padding: 0 10px; border-radius: var(--pill);
    font-size: 12px; font-weight: 800; pointer-events: none;
    box-shadow: 0 6px 14px -6px rgba(0, 0, 0, .45);
}
.ento-datefit.is-good { background: #E4F1E3; color: #245024; }
.ento-datefit.is-off  { background: #FBEFC9; color: #5E440A; }

.ento-no-results { padding: 48px 24px; border-radius: var(--r-lg); background: #fff; text-align: center; box-shadow: var(--shadow-card); }
.ento-no-results p { font-size: 17px; color: var(--body); margin-bottom: 16px; }
.ento-clear-all-empty { min-height: 48px; padding: 0 22px; border: 0; border-radius: var(--pill); background: var(--navy); color: var(--paper); font-weight: 700; }

.ento-load-more-wrap { display: flex; flex-direction: column; align-items: center; gap: 10px; padding-top: 28px; }
.ento-showing-count { font-size: 13.5px; color: var(--sub); }
.ento-load-more { min-height: 48px; padding: 0 24px; border: 0; border-radius: var(--pill); background: #fff; color: var(--navy); font-weight: 700; box-shadow: inset 0 0 0 1.5px rgba(26, 46, 69, .35); }

/* ── The map ── */
.ento-map-wrap {
    position: relative; isolation: isolate; overflow: hidden;
    border-radius: var(--r-lg); background: #DDE5E1;
    box-shadow: 0 0 0 1px rgba(26, 46, 69, .12), 0 30px 60px -40px rgba(26, 46, 69, .5);
}
#ento-map { position: relative; z-index: 0; height: calc(100 * var(--vh) - var(--header-h) - 112px); min-height: 460px; }
.leaflet-container { font-family: var(--sans); background: #DDE5E1; }
.leaflet-tile-pane { filter: grayscale(.8) contrast(.94) brightness(1.05); }
.leaflet-bar { border: 0 !important; border-radius: 12px !important; overflow: hidden; box-shadow: 0 8px 20px -8px rgba(26, 46, 69, .45) !important; }
.leaflet-bar a { width: 40px !important; height: 40px !important; line-height: 40px !important; background: var(--paper) !important; color: var(--ink) !important; border-bottom-color: var(--line) !important; font-size: 20px !important; }
.leaflet-control-attribution { font-size: 10.5px; background: rgba(255, 252, 237, .85) !important; border-radius: 4px 0 0 0; }

.ento-marker { display: flex; align-items: center; justify-content: center; background: none; border: 0; }
.ento-marker-dot {
    width: 18px; height: 18px; border-radius: 50%; background: var(--navy);
    box-shadow: 0 0 0 3px var(--paper), 0 6px 12px rgba(26, 46, 69, .4);
    transition: transform .15s ease, background-color .15s ease;
}
.ento-marker:hover .ento-marker-dot,
.ento-marker.is-hovered .ento-marker-dot { transform: scale(1.35); background: #C7552E; }
.ento-marker.is-active { z-index: 1000 !important; }
.ento-marker.is-active .ento-marker-dot { width: 24px; height: 24px; background: #C7552E; box-shadow: 0 0 0 4px var(--paper), 0 0 0 9px rgba(199, 85, 46, .25); }
.ento-marker-num {
    display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%;
    background: var(--navy); color: var(--paper); font-size: 13px; font-weight: 800;
    box-shadow: 0 0 0 3px var(--paper), 0 6px 12px rgba(26, 46, 69, .4);
}
.ento-marker-num[data-day="1"] { background: #7A3417; }
.ento-marker-num[data-day="2"] { background: #2F5B2B; }
.ento-marker-num[data-day="3"] { background: #23476B; }
.ento-marker-num[data-day="4"] { background: #6B4E0B; }
.ento-marker-num[data-day="5"] { background: #5B2E6B; }
.ento-marker-pin { width: 22px; height: 22px; border-radius: 50%; background: var(--navy); box-shadow: 0 0 0 4px var(--paper), 0 8px 14px rgba(26, 46, 69, .45); }

.marker-cluster-small, .marker-cluster-medium, .marker-cluster-large { background: rgba(26, 46, 69, .2) !important; }
.marker-cluster-small div, .marker-cluster-medium div, .marker-cluster-large div { background: var(--navy) !important; color: var(--paper) !important; box-shadow: inset 0 0 0 2px var(--paper); }
.marker-cluster div { font-family: var(--sans); font-weight: 800; }

.leaflet-tooltip.ento-maptip {
    padding: 6px 10px; border: 0; border-radius: 8px;
    background: var(--ink); color: var(--paper);
    font-family: var(--sans); line-height: 1.25; white-space: nowrap;
    box-shadow: 0 6px 16px rgba(0, 0, 0, .3);
}
.leaflet-tooltip.ento-maptip::before { border-top-color: var(--ink); }
.ento-maptip-title { display: block; font-weight: 700; font-size: 13px; }
.ento-maptip-region { display: block; font-size: 11px; opacity: .8; text-transform: uppercase; letter-spacing: .06em; }

.ento-map-reset-btn {
    min-height: 40px; padding: 0 14px; border: 0; border-radius: var(--pill);
    background: var(--paper); color: var(--ink); font-size: 13px; font-weight: 700;
    box-shadow: 0 8px 20px -8px rgba(26, 46, 69, .45);
}

/* The selected place: a card docked to the bottom of the map, so the map stays
   visible above it. */
.ento-map-panel {
    position: absolute; left: 14px; right: 14px; bottom: 14px; z-index: 1200;
    max-height: calc(100% - 28px); overflow-y: auto; overscroll-behavior: contain;
    display: grid; grid-template-columns: minmax(120px, 34%) minmax(0, 1fr);
    border-radius: var(--r-md); background: var(--paper); box-shadow: 0 30px 60px -20px rgba(26, 46, 69, .6);
    transform: translateY(calc(100% + 30px)); visibility: hidden;
    transition: transform .22s ease, visibility 0s linear .22s;
}
.ento-map-panel.is-open { transform: none; visibility: visible; transition: transform .22s ease; }
.ento-map-panel--noimage { grid-template-columns: 1fr; }
.ento-map-panel-closewrap { position: absolute; right: 8px; top: 8px; z-index: 3; }
.ento-map-panel-close {
    display: grid; place-items: center; width: 40px; height: 40px; padding: 0; border: 0; border-radius: 50%;
    background: #fff; color: var(--navy); box-shadow: 0 2px 8px rgba(0, 0, 0, .2);
}
.ento-map-panel-figure { position: relative; min-height: 100%; }
.ento-map-panel-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ento-map-panel-body { display: flex; flex-direction: column; gap: 8px; padding: 16px 56px 16px 18px; min-width: 0; }
.ento-map-panel-eyebrow { font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--sub); }
.ento-map-panel-title { font-family: var(--serif); font-size: 21px; font-weight: 700; line-height: 1.15; color: var(--ink); }
.ento-map-panel-title a { text-decoration: none; }
.ento-map-panel-title a:hover { text-decoration: underline; text-underline-offset: 3px; }
.ento-map-panel-subtitle { font-size: 13.5px; line-height: 1.45; color: var(--muted); }
.ento-map-panel-seasons { display: flex; flex-wrap: wrap; gap: 5px; }
.ento-map-panel-prose { display: none; }
.ento-map-panel-divider { display: none; }
.ento-map-panel-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
.ento-map-panel .ento-trip-save { box-shadow: inset 0 0 0 1.5px rgba(26, 46, 69, .35); background: #fff; min-height: 40px; }
.ento-map-panel .ento-trip-save.is-saved { background: var(--navy); box-shadow: none; }
.ento-map-panel-open { min-height: 40px; padding: 0 16px; font-size: 13px; }
.ento-map-panel-media { display: flex; flex-wrap: wrap; gap: 6px; }
.ento-map-panel-media .ento-badge--content { min-height: 32px; border-radius: 8px; background: var(--mist); color: var(--navy); font-weight: 700; }
.ento-map-panel-media .ento-badge--content:hover { background: var(--navy); color: var(--paper); }
.ento-popover-wrap { position: relative; display: inline-flex; }
.ento-popover { position: absolute; left: 0; bottom: calc(100% + 4px); z-index: 10; min-width: 150px; padding: 6px; border-radius: 12px; background: #fff; box-shadow: var(--shadow-pop); }
.ento-popover a { display: block; padding: 8px 10px; border-radius: 8px; font-size: 13px; color: var(--navy); text-decoration: none; white-space: nowrap; }
.ento-popover a:hover { background: var(--mist-2); }
.ento-map-panel-operators { border-top: 1px solid var(--line); padding-top: 8px; }
.ento-map-panel-ops-toggle {
    display: flex; align-items: center; justify-content: space-between; width: 100%;
    min-height: 40px; padding: 0; border: 0; background: none;
    font-size: 13.5px; font-weight: 700; color: var(--navy);
}
.ento-ops-chevron { display: inline-flex; transition: transform .2s ease; }
.ento-map-panel-ops-toggle[aria-expanded="true"] .ento-ops-chevron { transform: rotate(180deg); }
.ento-map-panel-ops-list { display: flex; flex-direction: column; gap: 8px; padding-top: 4px; }
.ento-op-row { display: flex; align-items: center; gap: 8px; }
.ento-op-logo { width: 28px; height: 28px; border-radius: 6px; object-fit: contain; background: #fff; flex: none; }
.ento-op-logo--ph { display: grid; place-items: center; background: var(--navy); color: var(--paper); font-family: var(--serif); font-weight: 700; font-size: 13px; }
.ento-op-name { font-size: 13px; font-weight: 600; }
.ento-op-name a { color: var(--navy); }

/* List / Map switch, phones only. */
.ento-mapview-toggle {
    position: fixed; left: 50%; bottom: max(20px, env(safe-area-inset-bottom)); z-index: 950;
    transform: translateX(-50%);
    display: none; padding: 5px; border-radius: var(--pill);
    background: var(--ink); box-shadow: 0 18px 40px -12px rgba(0, 0, 0, .55);
}
.ento-mapview-toggle button {
    min-height: 44px; padding: 0 20px; border: 0; border-radius: var(--pill);
    background: transparent; color: var(--paper); font-weight: 700; font-size: 14px;
}
.ento-mapview-toggle button[aria-pressed="true"] { background: var(--paper); color: var(--ink); }
.ento-mapview-toggle button:focus-visible { outline-color: var(--paper); }

@media (max-width: 1100px) {
    .ento-discover-head { grid-template-columns: 1fr; }
    .ento-split { grid-template-columns: minmax(0, 1fr) minmax(320px, 40%); }
}
@media (max-width: 860px) {
    .ento-fbar { position: sticky; }
    .ento-fbar-inner { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; min-height: 60px; padding-block: 8px; margin-right: 0; }
    .ento-fbar-inner::-webkit-scrollbar { display: none; }
    .ento-fbar-groups { flex-wrap: nowrap; }
    .ento-chips-row { flex-wrap: nowrap; }
    .ento-fgroup { position: static; }
    .ento-pop { position: fixed; left: 12px; right: 12px; top: auto; bottom: 12px; width: auto; max-width: none; z-index: 1100; padding: 16px; }
    .ento-pop-options { max-height: 50vh; }
    .ento-split { grid-template-columns: 1fr; padding-bottom: 96px; }
    .ento-split-map { display: none; position: static; }
    .ento-mapview-toggle:not([hidden]) { display: flex; }
    .ento-discover.is-mapview .ento-split-list { display: none; }
    .ento-discover.is-mapview .ento-split-map { display: block; }
    .ento-discover.is-mapview #ento-map { height: calc(100 * var(--vh) - var(--header-h) - 170px); min-height: 380px; }
    .ento-map-panel { grid-template-columns: 110px minmax(0, 1fr); left: 8px; right: 8px; bottom: 76px; }
    .ento-h1 { font-size: 34px; }
    .ento-discover-intro { font-size: 15.5px; }
}

/* ═══ Place page ═══════════════════════════════════════════════════════════ */

.ento-crumbs { font-size: 13.5px; font-weight: 600; color: var(--sub); }
.ento-crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; min-height: 48px; padding-block: 8px; list-style: none; }
.ento-crumbs li { display: inline-flex; align-items: center; gap: 8px; }
.ento-crumbs li + li::before { content: "/"; opacity: .5; }
.ento-crumbs a { color: var(--navy); text-underline-offset: 3px; }

.ento-place-hero { position: relative; height: clamp(360px, calc(62 * var(--vh)), 900px); overflow: hidden; background: var(--ink); }
.ento-place-hero-img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 55%; }
.ento-place-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(24, 27, 31, 0) 35%, rgba(24, 27, 31, .84) 100%); pointer-events: none; }
.ento-place-hero-in { position: absolute; left: 0; right: 0; bottom: clamp(24px, 4vw, 48px); z-index: 2; }
.ento-place-hero-row { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px 40px; flex-wrap: wrap; }
.ento-place-badges { display: flex; gap: 8px; flex-wrap: wrap; }
.ento-place-badges span {
    display: inline-flex; align-items: center; min-height: 30px; padding: 0 12px; border-radius: var(--pill);
    font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
    background: rgba(255, 252, 237, .16); color: var(--paper); box-shadow: inset 0 0 0 1px rgba(255, 252, 237, .38);
    -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
.ento-place-badges span.is-region { background: var(--paper); color: var(--ink); box-shadow: none; }
.ento-place-title {
    margin-top: 16px; max-width: 18ch;
    font-family: var(--serif); font-weight: 800; font-size: clamp(44px, 6.4vw, 104px); line-height: .95; letter-spacing: -.025em;
    color: var(--paper); text-wrap: balance;
}
.ento-place-subtitle { margin-top: 12px; max-width: 52ch; font-size: clamp(17px, 1.5vw, 22px); line-height: 1.4; color: rgba(255, 252, 237, .92); }
.ento-place-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.ento-place-actions .ento-btn, .ento-place-actions .ento-trip-save { min-height: 54px; padding: 0 24px; font-size: 15px; }
.ento-place-actions .ento-trip-save { background: var(--paper); color: var(--ink); box-shadow: none; }
.ento-place-actions .ento-trip-save.is-saved { background: var(--navy); color: var(--paper); box-shadow: inset 0 0 0 1.5px rgba(255, 252, 237, .5); }
.ento-place-actions .ento-trip-save:focus-visible { outline-color: var(--paper); }
.ento-place-credit { padding-top: 10px; font-size: 12.5px; color: var(--sub); }
.ento-place-credit a { color: var(--navy); }

.ento-place-body {
    display: grid; grid-template-columns: minmax(0, 7fr) minmax(320px, 5fr);
    gap: clamp(32px, 4vw, 72px); align-items: start;
    padding-top: clamp(28px, 3.5vw, 48px); padding-bottom: 56px;
}
.ento-place-main { min-width: 0; max-width: 980px; }
.ento-place-sec + .ento-place-sec { margin-top: 44px; }
.ento-prose { margin-top: 14px; font-size: 18px; line-height: 1.75; color: var(--body); max-width: 70ch; }
.ento-prose > * + * { margin-top: 1em; }
.ento-prose > p:first-child::first-letter {
    float: left; margin: 8px 10px 0 0;
    font-family: var(--serif); font-size: 3.4em; font-weight: 700; line-height: .8; color: var(--navy);
}
.ento-prose a { color: var(--navy); text-underline-offset: 3px; }

.ento-video {
    position: relative; margin-top: 16px; aspect-ratio: 16 / 9; overflow: hidden;
    border-radius: 18px; background: var(--ink); box-shadow: 0 30px 60px -40px rgba(26, 46, 69, .6);
}
.ento-video img { width: 100%; height: 100%; object-fit: cover; }
.ento-video::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 45%, rgba(24, 27, 31, .85)); pointer-events: none; }
.ento-video.is-playing::after { display: none; }
.ento-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.ento-video-play { position: absolute; inset: 0; z-index: 2; width: 100%; padding: 0; border: 0; background: none; color: var(--paper); text-align: left; }
.ento-video-play:focus-visible { outline: 3px solid var(--paper); outline-offset: -6px; border-radius: 18px; }
.ento-video-icon {
    position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
    display: grid; place-items: center; width: 76px; height: 76px; border-radius: 50%;
    background: rgba(255, 252, 237, .95); transition: transform .15s ease;
}
.ento-video-icon::after { content: ""; margin-left: 6px; border-left: 22px solid var(--navy); border-top: 14px solid transparent; border-bottom: 14px solid transparent; }
.ento-video-play:hover .ento-video-icon { transform: translate(-50%, -50%) scale(1.07); }
.ento-video-cap { position: absolute; left: 22px; right: 22px; bottom: 18px; }
.ento-video-cap strong { display: block; font-family: var(--serif); font-size: 22px; }
.ento-video-cap small { font-size: 13px; opacity: .85; }

.ento-linkcards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); gap: 14px; margin-top: 16px; list-style: none; }
.ento-linkcard {
    display: flex; align-items: center; gap: 14px; height: 100%; padding: 18px;
    border-radius: var(--r-md); background: #fff; box-shadow: 0 0 0 1px rgba(26, 46, 69, .1);
    text-decoration: none; transition: box-shadow .15s ease;
}
.ento-linkcard:hover { box-shadow: 0 0 0 1.5px var(--navy); }
.ento-linkcard-type { display: grid; place-items: center; width: 46px; height: 46px; flex: none; border-radius: 12px; background: var(--mist); }
.ento-linkcard-type::after { content: ""; width: 22px; height: 22px; background: var(--navy); -webkit-mask: var(--ico) center / contain no-repeat; mask: var(--ico) center / contain no-repeat; }
.ento-linkcard-type--article { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h12l4 4v12H4z'/%3E%3Cpath d='M8 10h8M8 14h8M8 18h5'/%3E%3C/svg%3E"); }
.ento-linkcard-type--map { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 4-6 2v14l6-2 6 2 6-2V4l-6 2z'/%3E%3Cpath d='M9 4v14M15 6v14'/%3E%3C/svg%3E"); }
.ento-linkcard-type--video { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M7 5v14l12-7z'/%3E%3C/svg%3E"); }
.ento-linkcard-text { min-width: 0; }
.ento-linkcard-text strong { display: block; font-size: 15px; color: var(--ink); }
.ento-linkcard-text small { display: block; margin-top: 2px; font-size: 13px; color: var(--sub); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ento-linkcard-go { margin-left: auto; font-weight: 800; color: var(--navy); }

.ento-place-side { position: sticky; top: calc(var(--header-h) + 20px); display: flex; flex-direction: column; gap: 16px; }
.ento-box { padding: 22px; border-radius: 18px; background: #fff; box-shadow: 0 0 0 1px rgba(26, 46, 69, .1); }
.ento-box-h { margin-bottom: 14px; font-size: 12px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--sub); }
.ento-box-note { margin-top: 12px; font-size: 13.5px; line-height: 1.5; color: var(--sub); }
.ento-box-note a { color: var(--navy); font-weight: 700; text-underline-offset: 3px; }
.ento-facts > div { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 12px; align-items: center; padding: 12px 0; border-top: 1px solid var(--line); font-size: 14.5px; }
.ento-facts > div:first-child { border-top: 0; padding-top: 0; }
.ento-facts dt { color: var(--sub); font-weight: 600; }
.ento-facts dd { display: flex; flex-wrap: wrap; gap: 6px; color: var(--ink); font-weight: 700; }
.ento-facts-fit dd.is-good { color: var(--green); }
.ento-facts-fit dd.is-off { color: #6B4E0B; }
.ento-sun { display: flex; flex-wrap: wrap; gap: 4px 14px; }
.ento-sun small { width: 100%; font-weight: 600; color: var(--sub); font-size: 12.5px; }
.ento-place-map { margin: 6px 0 14px; border-radius: 14px; overflow: hidden; }
.ento-single-map { height: 220px; }

.ento-ops { list-style: none; }
.ento-op { display: flex; align-items: flex-start; gap: 12px; padding: 12px 0; border-top: 1px solid var(--line); }
.ento-op:first-child { border-top: 0; padding-top: 0; }
.ento-op-av { display: grid; place-items: center; width: 40px; height: 40px; flex: none; border-radius: 10px; background: var(--navy); color: var(--paper); font-family: var(--serif); font-weight: 700; }
.ento-op-text { min-width: 0; flex: 1; }
.ento-op-text strong { display: block; font-size: 14.5px; color: var(--ink); }
.ento-op-text small { display: block; margin-top: 2px; font-size: 13px; line-height: 1.45; color: var(--sub); }
.ento-op-site { flex: none; min-height: 40px; display: inline-flex; align-items: center; font-size: 13px; font-weight: 700; color: var(--navy); text-decoration: none; white-space: nowrap; }
.ento-op-site:hover { text-decoration: underline; text-underline-offset: 3px; }

.ento-nearby { padding-bottom: 72px; }
.ento-nearby-head { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 6px 24px; }
.ento-nearby-head p { font-size: 14.5px; color: var(--sub); }
.ento-nearby-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); gap: 18px; margin-top: 16px; list-style: none; }
.ento-ncard { display: flex; flex-direction: column; height: 100%; border-radius: var(--r-md); overflow: hidden; background: #fff; box-shadow: 0 0 0 1px rgba(26, 46, 69, .1); text-decoration: none; transition: box-shadow .15s ease; }
.ento-ncard:hover { box-shadow: 0 0 0 1.5px var(--navy); }
.ento-ncard-img { display: block; aspect-ratio: 16 / 9; background: var(--mist-2); overflow: hidden; }
.ento-ncard-img img { width: 100%; height: 100%; object-fit: cover; }
.ento-ncard-body { display: flex; flex-direction: column; gap: 4px; padding: 14px 16px 16px; }
.ento-ncard-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--sub); }
.ento-ncard-flag { padding: 3px 8px; border-radius: var(--pill); background: #F8DECF; color: #7A3417; letter-spacing: .06em; }
.ento-ncard-body strong { font-family: var(--serif); font-size: 19px; line-height: 1.2; color: var(--ink); }

/* Sticky action dock on phones: the two things a visitor came to do. */
@media (max-width: 860px) {
    .ento-place-hero { height: min(72vh, 520px); }
    .ento-place-hero-row { flex-direction: column; align-items: stretch; }
    .ento-place-actions {
        position: fixed; left: 12px; right: 12px; bottom: max(14px, env(safe-area-inset-bottom)); z-index: 950;
        display: grid; grid-template-columns: 1fr auto; gap: 8px; padding: 8px;
        border-radius: var(--pill); background: rgba(255, 252, 237, .95);
        -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
        box-shadow: 0 18px 40px -12px rgba(26, 46, 69, .55), 0 0 0 1px rgba(26, 46, 69, .1);
    }
    .ento-place-actions .ento-btn, .ento-place-actions .ento-trip-save { min-height: 50px; justify-content: center; }
    .ento-place-actions .ento-trip-save { background: var(--navy); color: var(--paper); }
    .ento-place-actions .ento-btn--ghost-light { background: #fff; color: var(--navy); box-shadow: inset 0 0 0 1.5px rgba(26, 46, 69, .35); -webkit-backdrop-filter: none; backdrop-filter: none; }
    .ento-place-actions .ento-btn--ghost-light:focus-visible,
    .ento-place-actions .ento-trip-save:focus-visible { outline-color: var(--navy); }
    .ento-place { padding-bottom: 88px; }
    .ento-place-body { grid-template-columns: 1fr; }
    .ento-place-side { position: static; }
    .ento-prose { font-size: 16.5px; }
}

/* ═══ My trip ══════════════════════════════════════════════════════════════ */

.ento-trip-app { padding-bottom: 72px; }
.ento-trip-head {
    display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 20px 32px;
    padding-top: clamp(24px, 3vw, 40px); padding-bottom: 24px;
}
.ento-trip-title { margin-top: 14px; }
.ento-trip-sub { margin-top: 10px; font-size: 17px; color: var(--body); }
.ento-trip-tools { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.ento-trip-tools .ento-btn { min-height: 44px; font-size: 14px; }
.ento-trip-toast { width: 100%; min-height: 20px; font-size: 13.5px; font-weight: 700; color: var(--green); text-align: right; }
.ento-trip-toast label { display: block; color: var(--sub); margin-bottom: 6px; }
.ento-trip-toast .ento-input { min-height: 40px; font-size: 13px; font-weight: 600; color: var(--navy); min-width: min(100%, 460px); }

.ento-trip-import {
    display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px 20px;
    margin-bottom: 20px; padding: 16px 20px; border-radius: var(--r-md);
    background: var(--navy); color: var(--paper);
}
.ento-trip-import p { font-size: 15px; font-weight: 600; }
.ento-trip-import-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ento-trip-import .ento-btn { min-height: 42px; font-size: 13.5px; }
.ento-trip-import .ento-btn--text { color: var(--paper); }
.ento-trip-import .ento-btn:focus-visible { outline-color: var(--paper); }

.ento-trip-empty-box {
    display: flex; flex-direction: column; align-items: flex-start; gap: 16px;
    padding: clamp(28px, 4vw, 56px); border-radius: var(--r-lg); background: #fff; box-shadow: var(--shadow-card);
}
.ento-trip-empty-box p { max-width: 60ch; font-size: 17px; line-height: 1.6; color: var(--body); }

.ento-trip-when {
    display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: end; gap: 16px 24px;
    padding: 20px 22px; border-radius: 18px; background: #fff; box-shadow: 0 0 0 1px rgba(26, 46, 69, .1);
}
.ento-trip-when-h { font-family: var(--serif); font-size: 22px; font-weight: 700; color: var(--ink); align-self: center; }
.ento-trip-when-fields { display: flex; flex-wrap: wrap; gap: 12px; }
.ento-trip-when-fields > div { min-width: 150px; flex: 1; }
.ento-trip-when-fields > .ento-trip-daycount { flex: 0 0 120px; min-width: 110px; }
.ento-trip-fit { grid-column: 1 / -1; font-size: 14.5px; font-weight: 600; color: var(--sub); }
.ento-trip-fit:empty { display: none; }
.ento-trip-fit.is-good { color: var(--green); }
.ento-trip-fit.is-off { color: #6B4E0B; }

.ento-trip-split { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 28px; align-items: start; margin-top: 24px; }
.ento-trip-mapcol { position: sticky; top: calc(var(--header-h) + 20px); }
.ento-trip-map { height: min(calc(78 * var(--vh)), 900px); min-height: 380px; border-radius: var(--r-lg); overflow: hidden; box-shadow: 0 0 0 1px rgba(26, 46, 69, .12), 0 30px 60px -40px rgba(26, 46, 69, .5); }

.ento-day + .ento-day { margin-top: 22px; }
.ento-day-head { display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 6px 16px; margin-bottom: 10px; }
.ento-day-title { display: flex; align-items: baseline; gap: 10px; font-family: var(--serif); font-size: 24px; font-weight: 700; color: var(--ink); }
.ento-day-title small { font-family: var(--sans); font-size: 14px; font-weight: 700; color: var(--sub); }
.ento-day-meta { width: 100%; order: 3; font-size: 13.5px; color: var(--sub); }
.ento-day-links { display: flex; flex-wrap: wrap; gap: 4px 14px; }
.ento-day-links a { display: inline-flex; align-items: center; min-height: 36px; font-size: 13.5px; font-weight: 700; color: var(--navy); text-underline-offset: 3px; }
.ento-day-list { display: flex; flex-direction: column; gap: 10px; min-height: 64px; list-style: none; border-radius: var(--r-md); }
.ento-day-list.is-dropzone { outline: 2px dashed rgba(26, 46, 69, .35); outline-offset: 4px; }
.ento-day-empty { display: grid; place-items: center; min-height: 64px; padding: 12px; border-radius: var(--r-md); border: 1.5px dashed rgba(26, 46, 69, .3); font-size: 13.5px; color: var(--sub); text-align: center; }

.ento-trip-item {
    display: grid; grid-template-columns: 32px 104px minmax(0, 1fr) auto; align-items: center; gap: 14px;
    padding: 12px; border-radius: var(--r-md); background: #fff; box-shadow: 0 0 0 1px rgba(26, 46, 69, .1);
}
.ento-trip-item[draggable="true"] { cursor: grab; }
.ento-trip-item.is-dragging { opacity: .45; }
.ento-trip-n[data-day="1"] { background: #7A3417; }
.ento-trip-n[data-day="2"] { background: #2F5B2B; }
.ento-trip-n[data-day="3"] { background: #23476B; }
.ento-trip-n[data-day="4"] { background: #6B4E0B; }
.ento-trip-n[data-day="5"] { background: #5B2E6B; }
.ento-trip-n { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--navy); color: var(--paper); font-size: 13px; font-weight: 800; justify-self: center; }
.ento-trip-thumb { width: 104px; height: 76px; border-radius: 10px; object-fit: cover; background: var(--mist-2); }
.ento-trip-item-body { min-width: 0; }
.ento-trip-item-region { font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--sub); }
.ento-trip-item-title { margin-top: 2px; font-family: var(--serif); font-size: 20px; font-weight: 700; line-height: 1.2; color: var(--ink); }
.ento-trip-item-title a { text-decoration: none; }
.ento-trip-item-title a:hover { text-decoration: underline; text-underline-offset: 3px; }
.ento-trip-item-sub { margin-top: 2px; font-size: 13px; line-height: 1.45; color: var(--muted); }
.ento-trip-item-fit { display: inline-block; margin-top: 6px; font-size: 12.5px; font-weight: 700; }
.ento-trip-item-fit.is-good { color: var(--green); }
.ento-trip-item-fit.is-off { color: #6B4E0B; }
.ento-trip-item-actions { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
.ento-trip-order { display: flex; gap: 4px; }
.ento-icon-btn { display: grid; place-items: center; width: 36px; height: 36px; padding: 0; border: 0; border-radius: 50%; background: var(--mist-2); color: var(--navy); font-size: 15px; font-weight: 800; line-height: 1; }
.ento-icon-btn:hover:not([disabled]) { background: var(--navy); color: var(--paper); }
.ento-icon-btn[disabled] { opacity: .35; cursor: default; }
.ento-trip-move { min-height: 36px; padding: 0 30px 0 10px; font-size: 13px; font-weight: 700; border-radius: 10px; background-position: right 10px center; width: auto; }
.ento-trip-remove { min-height: 32px; padding: 0 4px; border: 0; background: none; font-size: 13px; font-weight: 700; color: var(--rust); text-decoration: underline; text-underline-offset: 3px; }

.ento-trip-add {
    display: flex; align-items: center; justify-content: center; min-height: 56px; margin-top: 16px;
    border-radius: var(--r-md); border: 1.5px dashed rgba(26, 46, 69, .3);
    font-weight: 700; font-size: 14.5px; color: var(--navy); text-decoration: none;
}
.ento-trip-add:hover { border-color: var(--navy); background: rgba(255, 255, 255, .5); }

.ento-trip-exports { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin-top: 18px; padding: 16px 18px; border-radius: var(--r-md); background: rgba(255, 255, 255, .55); box-shadow: inset 0 0 0 1px var(--line); }
.ento-trip-exports-h { font-size: 12px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--sub); margin-right: 4px; }
.ento-trip-exports .ento-btn { min-height: 42px; font-size: 13.5px; padding: 0 16px; }
.ento-trip-exports small { flex-basis: 100%; font-size: 12.5px; color: var(--sub); }

.ento-trip-next { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 32px; }
.ento-panel { padding: clamp(22px, 2.4vw, 32px); border-radius: var(--r-lg); background: #fff; box-shadow: 0 0 0 1px rgba(26, 46, 69, .1); }
.ento-panel h2 { font-family: var(--serif); font-size: 26px; font-weight: 700; color: var(--ink); }
.ento-panel > p { margin-top: 8px; font-size: 15px; line-height: 1.55; color: var(--muted); }
.ento-panel--dark { background: var(--navy); color: var(--paper); box-shadow: none; }
.ento-panel--dark h2 { color: var(--paper); }
.ento-panel--dark > p { color: rgba(255, 252, 237, .84); }
.ento-panel--dark :focus-visible { outline-color: var(--paper); }
.ento-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 18px; }
.ento-form-grid .is-full { grid-column: 1 / -1; }
.ento-panel--dark .ento-field-label { color: rgba(255, 252, 237, .8); }
.ento-panel--dark .ento-input, .ento-panel--dark .ento-textarea { background: rgba(24, 27, 31, .35); color: var(--paper); box-shadow: inset 0 0 0 1.5px rgba(255, 252, 237, .3); }
.ento-panel--dark .ento-input:focus, .ento-panel--dark .ento-textarea:focus { box-shadow: inset 0 0 0 2px var(--paper); }
.ento-panel .ento-btn--block { margin-top: 14px; }
.ento-panel--dark .ento-btn--paper:hover { background: #fff; }
.ento-fine { margin-top: 10px; font-size: 12.5px; line-height: 1.5; opacity: .8; }
.ento-op-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; list-style: none; }
.ento-op-chips li { display: inline-flex; }
.ento-op-chips a, .ento-op-chips span {
    display: inline-flex; align-items: center; min-height: 34px; padding: 0 12px; border-radius: var(--pill);
    background: rgba(255, 252, 237, .12); box-shadow: inset 0 0 0 1px rgba(255, 252, 237, .25);
    color: var(--paper); font-size: 13px; font-weight: 700; text-decoration: none;
}
.ento-op-chips a:hover { background: rgba(255, 252, 237, .22); }
.ento-trip-status { min-height: 1.4em; margin-top: 10px; font-size: 14px; font-weight: 700; }
.ento-trip-status.is-success { color: var(--green); }
.ento-trip-status.is-error { color: #A12B2B; }
.ento-panel--dark .ento-trip-status.is-success { color: #A8E0B4; }
.ento-panel--dark .ento-trip-status.is-error { color: #FFB4A8; }
.ento-trip-send-again { margin-top: 8px; min-height: 36px; padding: 0 6px; border: 0; background: none; color: inherit; font-size: 13px; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }

@media (max-width: 1100px) {
    .ento-trip-when { grid-template-columns: 1fr; }
    .ento-trip-split { grid-template-columns: 1fr; }
    .ento-trip-mapcol { position: static; order: -1; }
    .ento-trip-map { height: 340px; min-height: 0; }
    .ento-trip-next { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
    .ento-trip-item { grid-template-columns: 28px 72px minmax(0, 1fr); gap: 10px; }
    .ento-trip-thumb { width: 72px; height: 56px; }
    .ento-trip-item-actions { grid-column: 1 / -1; flex-direction: row; align-items: center; justify-content: flex-end; flex-wrap: wrap; }
    .ento-trip-item-title { font-size: 17px; }
    .ento-form-grid { grid-template-columns: 1fr; }
    .ento-trip-toast { text-align: left; }
}

/* ═══ Operators ════════════════════════════════════════════════════════════ */

.ento-agencies-head { display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 20px 40px; padding-top: clamp(24px, 3vw, 40px); padding-bottom: 24px; }
.ento-agencies-intro { margin-top: 12px; max-width: 70ch; font-size: 17px; color: var(--body); }
.ento-agencies-filter { display: flex; align-items: center; gap: 12px; }
.ento-agencies-filter .ento-select { min-width: 220px; }
.ento-agencies-clear { font-size: 14px; font-weight: 700; color: var(--navy); text-underline-offset: 3px; }
.ento-agencies-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 20px; padding-bottom: 32px; }
.ento-agency-card { display: flex; flex-direction: column; gap: 12px; padding: 22px; border-radius: 18px; background: #fff; box-shadow: var(--shadow-card); }
.ento-agency-card-header { display: flex; align-items: center; gap: 12px; }
.ento-agency-logo { height: 48px; width: auto; max-width: 120px; object-fit: contain; }
.ento-agency-logo-placeholder { display: grid; place-items: center; width: 48px; height: 48px; flex: none; border-radius: 12px; background: var(--navy); color: var(--paper); font-family: var(--serif); font-size: 20px; font-weight: 700; }
.ento-agency-name { font-family: var(--serif); font-size: 20px; font-weight: 700; line-height: 1.2; color: var(--ink); }
.ento-agency-regions { display: flex; flex-wrap: wrap; gap: 6px; }
.ento-agency-description { flex: 1; font-size: 14.5px; line-height: 1.6; color: var(--muted); }
.ento-agency-website-btn { align-self: flex-start; }
.ento-agencies-none, .ento-agency-empty-note { font-size: 15px; color: var(--sub); }
.ento-agencies-demo { margin-bottom: 72px; padding: 18px 20px; border-radius: var(--r-md); background: rgba(255, 255, 255, .55); box-shadow: inset 0 0 0 1px var(--line); font-size: 14px; line-height: 1.55; color: var(--body); }

/* ═══ Print: My trip as a one-page plan ════════════════════════════════════ */

@media print {
    @page { margin: 14mm; }
    body { background: #fff; color: #000; font-size: 11pt; }
    .ento-ribbon, .site-header, .site-footer, .ento-skip,
    .ento-trip-tools, .ento-trip-import, .ento-trip-when-fields, .ento-trip-mapcol,
    .ento-trip-add, .ento-trip-exports, .ento-trip-next, .ento-trip-item-actions,
    .ento-day-links, .ento-mapview-toggle, .ento-place-actions { display: none !important; }
    .ento-trip-when { box-shadow: none; padding: 0; grid-template-columns: 1fr; }
    .ento-trip-when-h { display: none; }
    .ento-trip-split { display: block; margin-top: 12px; }
    .ento-day { break-inside: avoid; }
    .ento-trip-item { box-shadow: none; border-bottom: 1px solid #ccc; border-radius: 0; grid-template-columns: 28px 80px 1fr; padding: 8px 0; break-inside: avoid; }
    .ento-trip-thumb { width: 80px; height: 56px; }
    .ento-trip-item-title a::after { content: " (" attr(href) ")"; font-family: var(--sans); font-size: 8pt; font-weight: 400; color: #555; word-break: break-all; }
    .ento-trip-n { background: #000 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    .ento-h1 { font-size: 26pt; }
}
