/* XO TOURS content components: tour flyout, badges, video facades, albums,
   tour pages, blog and forms. Loaded after style.css. */

/* Nav flyout for the four tours */
.nav-item { position: relative; display: flex; align-items: center; }
.nav-item > .nav-link { display: inline-flex; align-items: center; gap: 0.25rem; }
.nav-menu {
    position: absolute; top: calc(100% + 8px); left: 50%; translate: -50% 0; min-width: 250px;
    padding: 0.4rem; border-radius: 14px; background: rgba(255,255,255,0.94); color: #1d1d1f;
    -webkit-backdrop-filter: blur(20px) saturate(180%); backdrop-filter: blur(20px) saturate(180%);
    box-shadow: var(--shadow-md); opacity: 0; scale: 0.96; pointer-events: none; transform-origin: top center;
    transition: opacity 180ms var(--ease-out), scale 180ms var(--ease-out);
}
.nav-item:hover .nav-menu, .nav-item:focus-within .nav-menu { opacity: 1; scale: 1; pointer-events: auto; }
.nav-menu a { display: flex; justify-content: space-between; gap: 1rem; padding: 0.55rem 0.7rem; border-radius: 9px; font-size: 0.8125rem; }
.nav-menu a:hover { background: rgba(0,0,0,0.06); }
.nav-menu a span { color: #86868b; }

/* Badges and accolades */
.badges { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 1.25rem 2rem; }
.badge-forbes { height: 64px; width: auto; }
.badge-ta { height: 64px; width: auto; }
.badge-stars { height: 22px; width: auto; }
.accolade-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.accolade { padding: 1.35rem 1.4rem; display: flex; flex-direction: column; gap: 0.4rem; }
.accolade-src { font-size: var(--fs-xs); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--gold-ink); }
.accolade-claim { font-size: 1.0625rem; font-weight: 600; letter-spacing: -0.014em; line-height: 1.3; }
.accolade .link { margin-top: auto; font-size: var(--fs-sm); position: relative; z-index: 3; }
.recommended { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 0.5rem 1.8rem; margin-top: 1.6rem; }
.recommended span { font-size: var(--fs-sm); font-weight: 600; color: var(--c-ink-3); }
.recommended .press-label { width: 100%; }

/* Hero press strip between the nav and the headline: the proof first,
   centred (Forbes plaque, TripAdvisor badge, the rating), then one row of
   four frosted glass press cards. The same row at every width. */
.hero-press { position: relative; z-index: 2; max-width: var(--maxw); margin: 0 auto; padding: 0 var(--gutter); }
.press-proof { gap: 0.6rem 0.9rem; margin-bottom: 0.95rem; }
.press-rating { display: grid; justify-items: start; gap: 0.15rem; margin-left: 0.35rem; text-align: left; }
.press-rating-claim { font-size: 0.9375rem; font-weight: 600; letter-spacing: -0.014em; line-height: 1.2; color: #f5f5f7; }
.press-rating-src { font-size: var(--fs-xs); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: #e3c05a; }
.press-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.75rem; }
.hero-press .accolade {
    --c-ink: #f5f5f7; --c-ink-2: #d3d3d8; --c-ink-3: #a1a1a6; --gold-ink: #e3c05a;
    color: var(--c-ink); padding: 1rem 1.05rem 1.05rem; gap: 0.3rem; border-radius: 18px;
    background: linear-gradient(160deg, rgba(255,255,255,0.15) 0%, rgba(255,255,255,0.06) 60%, rgba(255,255,255,0.09) 100%);
    -webkit-backdrop-filter: blur(20px) saturate(170%); backdrop-filter: blur(20px) saturate(170%);
    box-shadow: 0 0 0 1px rgba(255,255,255,0.14) inset, 0 1px 0 rgba(255,255,255,0.22) inset,
                0 18px 40px -22px rgba(0,0,0,0.85);
}
/* A hair of gold light along the top edge, the one accent on the glass */
.hero-press .accolade::before {
    content: ""; position: absolute; left: 14%; right: 14%; top: 0; height: 1px; border-radius: 1px;
    background: linear-gradient(90deg, transparent, rgba(227,192,90,0.85), transparent); pointer-events: none;
}
.hero-press .accolade-claim { font-size: 0.9375rem; }
.hero-press .accolade .link { font-size: 0.8125rem; color: var(--gold-ink); }
.hero-press .accolade .link svg { width: 14px; height: 14px; }
.hero-press .tile::after { background: radial-gradient(240px circle at var(--gx) var(--gy), rgba(255,255,255,0.16), transparent 62%); }
/* The plaques */
.badge-plaque {
    display: inline-flex; align-items: center; justify-content: center; padding: 0.3rem 0.45rem; border-radius: 10px;
    background: #fff; box-shadow: 0 0 0 1px rgba(255,255,255,0.08), 0 10px 22px -12px rgba(0,0,0,0.8);
    transition: translate var(--t) var(--ease-out);
}
a.badge-plaque:hover { translate: 0 -2px; }
.hero-press .badge-forbes { height: 42px; }
.hero-press .badge-ta { height: 42px; }
.hero-press .badge-stars { height: 14px; }
.hero-recommended { margin-top: 1.3rem; gap: 0.4rem 1.5rem; }
.hero-recommended .press-label, .hero-recommended span { color: #86868b; }
.hero-press + .hero-copy { margin-top: clamp(2.25rem, 5vw, 3.75rem); }

/* Notices */
.notice { padding: 1.1rem 1.3rem; border-radius: var(--r); background: var(--c-bg-2); font-size: var(--fs-sm); color: var(--c-ink-2); }
.notice strong { color: var(--c-ink); }
.notice a { color: var(--gold-ink); text-decoration: underline; text-underline-offset: 3px; }
.notice p + p { margin-top: 0.7rem; }
.notice-gold { background: linear-gradient(160deg, #fbf3d6, #f6e7b4); color: #5b4708; }
.notice-gold strong, .notice-gold a { color: #3f3105; }
.on-dark .notice { background: rgba(255,255,255,0.08); color: var(--c-ink-2); }

/* Video facade (YouTube loads on click) */
.video-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.1rem; }
.video { position: relative; aspect-ratio: 16 / 9; border-radius: var(--r-lg); overflow: hidden; background: var(--dark-2); box-shadow: var(--shadow-md); cursor: pointer; }
.video img { width: 100%; height: 100%; object-fit: cover; transition: scale 900ms var(--ease-out); }
.video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.video-play {
    position: absolute; left: 50%; top: 50%; translate: -50% -50%; width: 64px; height: 64px; border: 0; border-radius: 50%;
    background: rgba(255,255,255,0.92); color: #1d1d1f; display: grid; place-items: center; cursor: pointer;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.6); transition: scale 200ms var(--ease-out), background-color var(--t) ease;
}
.video-play svg { margin-left: 3px; }
.video-title {
    position: absolute; left: 0; right: 0; bottom: 0; padding: 2rem 1rem 0.9rem; color: #f5f5f7; font-size: var(--fs-sm); font-weight: 600;
    background: linear-gradient(180deg, transparent, rgba(0,0,0,0.7)); pointer-events: none;
}
.video.is-playing .video-play, .video.is-playing .video-title, .video.is-playing img { display: none; }
@media (hover: hover) and (pointer: fine) {
    .video:hover img { scale: 1.04; }
    .video:hover .video-play { scale: 1.08; background: #fff; }
}

/* Photo albums */
.album-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.1rem; }
.album { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.album .tile-media { aspect-ratio: auto; min-height: 220px; border-radius: var(--r-lg) 0 0 var(--r-lg); }
.album .tile-body { display: flex; flex-direction: column; justify-content: center; }
.album-count { font-size: var(--fs-xs); color: var(--c-ink-3); }
.photo-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.8rem; }
.photo-grid .gallery-item { aspect-ratio: 4 / 3; }

/* Tour page */
.tour-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.9rem; }
.tour-feature { padding: 1.1rem 1.2rem; }
.tour-feature strong { display: block; color: var(--gold-ink); font-size: var(--fs-xs); letter-spacing: 0.08em; text-transform: uppercase; margin-bottom: 0.3rem; }
.tour-feature p { font-size: var(--fs-sm); color: var(--c-ink-2); }
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; }
.optional-list { display: grid; gap: 0.6rem; }
.optional-list li { display: grid; gap: 0.25rem; padding: 0.75rem 0.9rem; border-radius: 12px; background: var(--c-bg-2); font-size: var(--fs-sm); }
.optional-list li strong { color: var(--c-ink); }
.price-vnd { font-size: var(--fs-sm); color: var(--c-ink-3); margin-bottom: 0.6rem; }
.promo { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.55rem 0.95rem; border-radius: 999px; background: var(--gold-3); color: #5b4708; font-size: var(--fs-xs); font-weight: 600; text-align: left; }
.tour-video { margin-bottom: 2rem; }
.detail-main .prose h2.display { margin-bottom: 0.6rem; }

/* Blog */
.cat-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center; margin-bottom: 2rem; }
.chip { display: inline-block; padding: 0.45rem 0.9rem; border-radius: 999px; background: var(--c-bg-2); font-size: var(--fs-sm); font-weight: 500; color: var(--c-ink-2); transition: background-color var(--t) ease, color var(--t) ease; }
.chip:hover, .chip.is-active { background: var(--c-ink); color: #fff; }
.post-list { display: grid; gap: 0.9rem; }
.post-row { display: grid; grid-template-columns: 160px 1fr; gap: 1.2rem; align-items: center; padding: 0.9rem; }
.post-row .tile-media { aspect-ratio: 4 / 3; border-radius: 14px; }
.post-row h3 { font-size: 1.0625rem; font-weight: 600; letter-spacing: -0.014em; line-height: 1.3; margin-top: 0.4rem; }
.post-row p { margin-top: 0.35rem; font-size: var(--fs-sm); color: var(--c-ink-2); }
.post-hero { max-width: 820px; margin: 0 auto; text-align: center; }
.post-body { max-width: 760px; margin: 0 auto; }
.prose img { border-radius: var(--r); margin: 1.5rem 0; }
.prose h3 { margin-top: 2rem; font-size: 1.125rem; font-weight: 600; letter-spacing: -0.014em; }
.prose h4 { margin-top: 1.4rem; font-size: 1rem; font-weight: 600; }
.prose ul, .prose ol { padding-left: 1.3rem; color: var(--c-ink-2); }
.prose ul { list-style: disc; }
.prose ol { list-style: decimal; }
.prose li + li { margin-top: 0.35rem; }
.prose a { color: var(--gold-ink); text-decoration: underline; text-underline-offset: 3px; }
.prose blockquote { margin: 1.5rem 0; padding: 1rem 1.25rem; border-radius: var(--r); background: var(--c-bg-2); color: var(--c-ink-2); }
.prose hr { border: 0; border-top: 1px solid var(--c-line); margin: 2rem 0; }
.prose .table-wrap { overflow-x: auto; margin: 1.5rem 0; border-radius: var(--r); background: var(--c-surface); box-shadow: var(--shadow-sm); }
.prose table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); margin: 0; }
.prose th, .prose td { padding: 0.65rem 0.85rem; text-align: left; border-bottom: 1px solid var(--c-line); vertical-align: top; }
.prose tr:last-child td { border-bottom: 0; }
.prose th { background: var(--c-bg-2); font-weight: 600; white-space: nowrap; }
.faq-a-inner ul, .faq-a-inner ol { padding-left: 1.3rem; }
.faq-a-inner ul { list-style: disc; }
.faq-a-inner ol { list-style: decimal; }
.faq-a-inner p + p, .faq-a-inner p + ul, .faq-a-inner p + ol, .faq-a-inner ul + p, .faq-a-inner ol + p { margin-top: 0.7rem; }
.faq-a-inner a { color: var(--gold-ink); text-decoration: underline; text-underline-offset: 3px; }
.faq-video { display: inline-flex; align-items: center; gap: 0.35rem; margin-top: 0.8rem; font-size: var(--fs-sm); font-weight: 500; color: var(--gold-ink); }
.faq-group-title { margin: clamp(2rem, 4vw, 3rem) auto 0.5rem; max-width: 820px; font-size: var(--fs-xs); font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--c-ink-3); }

/* Contact form and legal */
.contact-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(2rem, 5vw, 4rem); align-items: start; }
.legal-section + .legal-section { margin-top: clamp(2.5rem, 5vw, 3.5rem); }
.footer-badges { display: flex; gap: 1rem; align-items: center; margin-top: 1.2rem; }
.footer-badges img { height: 56px; width: auto; }
.footer-legal-line { max-width: 62ch; }
.company-list a { color: var(--c-ink); }

@media (max-width: 1100px) {
    .accolade-grid { grid-template-columns: repeat(2, 1fr); }
    .photo-grid { grid-template-columns: repeat(3, 1fr); }
    .hero-press .accolade { padding: 0.85rem 0.9rem 0.9rem; gap: 0.25rem; border-radius: 16px; }
    .hero-press .accolade-src { font-size: 0.6875rem; letter-spacing: 0.06em; }
    .hero-press .accolade-claim { font-size: 0.875rem; }
    .hero-press .accolade .link { font-size: 0.75rem; }
}
@media (max-width: 960px) {
    .video-grid { grid-template-columns: repeat(2, 1fr); }
    /* The same five-card row as desktop, only smaller */
    .press-row { gap: 0.5rem; }
    .hero-press .accolade { padding: 0.7rem 0.7rem 0.75rem; gap: 0.2rem; border-radius: 14px; }
    .hero-press .accolade-src { font-size: 0.625rem; letter-spacing: 0.05em; }
    .hero-press .accolade-claim { font-size: 0.8125rem; line-height: 1.25; }
    .hero-press .accolade .link { font-size: 0.75rem; }
    .hero-press .badge-forbes, .hero-press .badge-ta { height: 34px; }
    .hero-press .badge-stars { height: 12px; }
    .press-rating-claim { font-size: 0.875rem; }
    .album-grid, .tour-features, .two-col, .contact-layout { grid-template-columns: 1fr; }
    .album { grid-template-columns: 1fr; }
    .album .tile-media { border-radius: var(--r-lg) var(--r-lg) 0 0; aspect-ratio: 16 / 9; min-height: 0; }
}
@media (max-width: 640px) {
    .video-grid, .accolade-grid { grid-template-columns: 1fr; }
    .photo-grid { grid-template-columns: repeat(2, 1fr); }
    .post-row { grid-template-columns: 1fr; }
    .post-row .tile-media { aspect-ratio: 16 / 9; }
    .badge-forbes, .badge-ta { height: 52px; }
    /* Five cards across a phone: the desktop row, scaled down */
    .hero-press { padding: 0 0.75rem; }
    .press-row { gap: 0.3rem; }
    .hero-press .accolade { padding: 0.45rem 0.4rem 0.45rem; gap: 0.15rem; border-radius: 10px; }
    .hero-press .accolade::before { left: 20%; right: 20%; }
    .hero-press .accolade-src { font-size: 0.5rem; letter-spacing: 0.03em; line-height: 1.25; }
    .hero-press .accolade-claim { font-size: 0.5625rem; line-height: 1.2; letter-spacing: 0; }
    .hero-press .accolade .link { font-size: 0.5625rem; gap: 0.05rem; margin-top: 0.25rem; }
    .hero-press .accolade .link svg { width: 9px; height: 9px; }
    .hero-press .link-more { display: none; }
    .press-proof { gap: 0.4rem 0.55rem; margin-bottom: 0.6rem; }
    .press-rating { gap: 0.1rem; margin-left: 0.15rem; }
    .press-rating-claim { font-size: 0.75rem; }
    .press-rating-src { font-size: 0.5625rem; letter-spacing: 0.05em; }
    .badge-plaque { padding: 0.2rem 0.3rem; border-radius: 7px; }
    .hero-press .badge-forbes, .hero-press .badge-ta { height: 28px; }
    .hero-press .badge-stars { height: 10px; }
    .hero-recommended { margin-top: 1rem; gap: 0.3rem 0.9rem; }
    .hero-recommended span { font-size: 0.75rem; }
    .hero-recommended .press-label { font-size: 0.625rem; }
    .optional-list li strong { text-align: left; }
}
