/* assets/css/home-sections.css */
/* Homepage discovery sections. Loaded only by pages/home; shared result pages retain their layout. */
.home-dmo-spotlight { background: #fff; }
/* Night to day: Spotlight is a night band that continues the hero, then two pale indigo surfaces alternate below it.
   The "of" filter keeps Featured on the lighter surface and the alternation right when optional sections are absent. */
main:has(> .home-discovery-section--sticky) { background: #f4f5fc; }
main > section:nth-child(odd of .home-featured-section, .home-travel-services-section, .home-recommendations-section, .home-categories-section) { --home-tone: #f4f5fc; --home-tone-prev: #e9ebf8; }
main > section:nth-child(even of .home-featured-section, .home-travel-services-section, .home-recommendations-section, .home-categories-section) { --home-tone: #e9ebf8; --home-tone-prev: #f4f5fc; }
/* Featured opens the day surface with no seam: it rises over the night band, or follows the hero veil. */
main > .home-featured-section { --home-tone-prev: var(--home-tone); }
main > section { --home-seam: linear-gradient(180deg, var(--home-tone-prev) 0, #0000 120px); }
.home-dmo-spotlight--textured {
    background-color: #0b1626;
    background-image:
        radial-gradient(ellipse 55% 60% at 88% 0%, #14b8a61c 0, #14b8a600 70%),
        radial-gradient(ellipse 50% 60% at 0% 100%, #fc5b6214 0, #fc5b6200 70%),
        linear-gradient(#ffffff06 1px, #0000 1px),
        linear-gradient(90deg, #ffffff06 1px, #0000 1px);
    background-size: auto, auto, 72px 72px, 72px 72px;
}
.home-featured-section, .home-categories-section { background: var(--home-tone); background-image: var(--home-seam); }
/* Soft daylight on the shared surface, keeping the category photos prominent. */
.home-categories-section--soft-light {
    background-color: var(--home-tone);
    background-image:
        var(--home-seam),
        radial-gradient(ellipse at 92% 8%, #fffdf6e6 0, #fffdf600 58%),
        linear-gradient(122deg, #d9d3c01a 0, #d9d3c000 24%, #ffffffa6 39%, #ffffff00 57%),
        radial-gradient(ellipse at 4% 95%, #c5cec01a 0, #c5cec000 60%);
    /* home.css tiles the third layer onwards; these gradients span the section. */
    background-size: auto;
}
.home-categories-section:before { display: none; }
.home-dmo-spotlight, .home-featured-section, .home-travel-services-section,
.home-recommendations-section, .home-categories-section { padding: 44px 0; }
:is(.home-dmo-spotlight,.home-featured-section,.home-travel-services-section,.home-recommendations-section,.home-categories-section) .section-heading h2 {
    font-size: clamp(24px, 2.6vw, 34px); line-height: 1.2; font-weight: 700; letter-spacing: -.025em;
}
:is(.home-dmo-spotlight,.home-featured-section,.home-travel-services-section,.home-recommendations-section,.home-categories-section) .section-heading > span {
    font-size: 11px; letter-spacing: .1em; font-weight: 700; box-shadow: none;
}
:is(.home-featured-section,.home-recommendations-section) .section-heading-row { align-items: center; margin-bottom: 24px; }
:is(.home-featured-section,.home-recommendations-section) .section-view-all { flex-shrink: 0; font-size: 13px; min-height: 40px; box-shadow: none; background: #fff; }
:is(.home-featured-section,.home-recommendations-section) .home-card-grid { margin-top: 0; gap: 18px; }
.home-featured-section .home-card-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
.home-featured-section .home-listing-card { border-radius: 20px; box-shadow: 0 6px 18px #193b4b0d; }
.home-featured-section .home-listing-card:hover { box-shadow: 0 10px 24px #193b4b1c; transform: translateY(-3px); }
.home-featured-section .home-listing-body { left: 18px; right: 18px; bottom: 18px; }
.home-featured-section .home-listing-body h3 { font-size: 18px; font-weight: 650; line-height: 1.3; }
.home-featured-section .listing-distance { font-size: 12px; box-shadow: none; padding: 6px 10px; }
.home-featured-section .home-listing-image { background: #dce8ed; }
.home-featured-section .home-listing-fallback { display: none; }
.home-featured-section .is-image-missing { background: linear-gradient(135deg,#e2edf1,#c7d9df); }
.home-featured-section .is-image-missing:after { background: linear-gradient(0deg,#294c60de,transparent 85%); }
.home-featured-section .is-image-missing .home-listing-fallback { display: grid; place-items: start center; padding-top: 14%; height: 100%; color: #557987; }
.home-featured-section .home-listing-fallback svg { width: 64px; height: 64px; }

/* A quiet network illustration connects this section to the hero without competing with the cards. */
.home-recommendations-section { background: var(--home-tone); background-image: var(--home-seam); }
.home-recommendations-section:before { display: none; }
.home-recommendations-section:after {
    content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background: url('../media/hero/category-landscape-light.svg') right center / 800px auto no-repeat;
    opacity: .65; mask-image: linear-gradient(90deg,transparent 25%,#000 65%); -webkit-mask-image: linear-gradient(90deg,transparent 25%,#000 65%);
}
.home-recommendations-section > .container { position: relative; z-index: 1; }
.home-recommendations-section .home-recommendation-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
.home-recommendations-section .home-recommendation-grid[data-count="2"] { grid-template-columns: repeat(2,minmax(0,1fr)); }
.home-recommendations-section .home-recommendation-grid[data-count="3"] { grid-template-columns: repeat(3,minmax(0,1fr)); }
.home-recommendations-section .recommendation-card {
    position: relative; min-width: 0; min-height: 0; padding: 22px; gap: 18px; border-radius: 20px;
    border: 1px solid #cedde4; background: #fff; color: #203846;
    backdrop-filter: none; -webkit-backdrop-filter: none; box-shadow: 0 5px 16px #28465408;
}
.home-recommendations-section .recommendation-card:before { display: none; }
.home-recommendations-section .recommendation-card:hover { border-color: var(--recommendation-accent); transform: translateY(-3px); box-shadow: 0 10px 24px #28465414; }
.home-recommendations-section .recommendation-card-top { align-items: center; justify-content: flex-start; gap: 12px; }
.home-recommendations-section .recommendation-icon {
    display: grid; place-items: center; width: 56px; height: 56px; flex-shrink: 0;
    border-radius: 16px; color: var(--recommendation-accent); background: #f4f7f8;
    background: color-mix(in srgb, var(--recommendation-accent) 9%, white);
}
.home-recommendations-section .recommendation-icon :is(img,svg) { width: 32px; height: 32px; }
.home-recommendations-section .recommendation-label {
    padding: 0; border: 0; border-radius: 0; box-shadow: none; background: transparent;
    color: #516874; font-size: 12px; line-height: 1.4; font-weight: 600; white-space: normal;
}
.home-recommendations-section .recommendation-card h3 { font-size: 18px; line-height: 1.4; font-weight: 650; letter-spacing: -.015em; margin: 0 0 10px; overflow-wrap: anywhere; }
.home-recommendations-section .recommendation-card-body p {
    font-size: 14px; line-height: 1.65; color: #617580; display: -webkit-box;
    -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden;
}
.home-recommendations-section .recommendation-card-footer { font-size: 13px; font-weight: 600; padding-top: 14px; border-color: #e7eef1; }
.home-recommendations-section .recommendation-card-footer i { background: #f0f5f6; color: #365f68; }
.home-recommendations-section .home-recommendation-grid[data-count="1"] { grid-template-columns: minmax(0,1fr); }
.home-recommendation-grid[data-count="1"] .recommendation-card { display: grid; grid-template-columns: 160px minmax(0,1fr) 110px; align-items: center; gap: 28px; padding: 26px; }
.home-recommendation-grid[data-count="1"] .recommendation-card-top { flex-direction: column; align-items: flex-start; }
.home-recommendation-grid[data-count="1"] .recommendation-card-footer { border-top: 0; padding-top: 0; margin-top: 0; }

/* Logo-only services should not reserve the height of an absent cover image. */
.home-travel-services-section { background: var(--home-tone); background-image: var(--home-seam); }
.home-travel-services-section:before, .home-travel-services-section:after { display: none; }
.home-travel-services-section .travel-service-grid { margin-top: 0; gap: 18px; }
.home-travel-services-section .travel-service-grid.is-single { grid-template-columns: minmax(0,1fr); }
.home-travel-services-section .travel-service-grid .travel-service-card { min-height: 0; border-radius: 20px; background: #fff; border-color: #e4dfd7; box-shadow: 0 5px 16px #3b302208; backdrop-filter: none; -webkit-backdrop-filter: none; }
.home-travel-services-section .travel-service-card:before, .home-travel-services-section .travel-service-card:after { display: none; }
.home-travel-services-section .is-logo-only { display: flex; flex-direction: row-reverse; align-items: center; justify-content: center; padding: 26px; gap: 24px; }
.home-travel-services-section .is-logo-only .travel-service-body { padding: 0; text-align: start; align-items: flex-start; flex: 1; }
.home-travel-services-section .is-logo-only .travel-service-media { width: 112px; height: 112px; flex-shrink: 0; min-height: 0; padding: 14px; margin: 0; align-items: center; border: 1px solid #eee9e1; border-radius: 18px; background: #fff; }
.home-travel-services-section .is-logo-only .travel-service-media:before { display: none; }
.home-travel-services-section .is-logo-only .travel-service-media img { max-width: 100%; max-height: 100%; width: auto; border-radius: 0; box-shadow: none; }
.home-travel-services-section .travel-service-body h3 { font-size: 22px; line-height: 1.3; font-weight: 650; }
.home-travel-services-section .travel-service-logo-badge { width: 88px; height: 88px; border-radius: 16px; box-shadow: none; }
.home-travel-services-section .travel-service-logo-badge img { max-width: 68px; max-height: 68px; }
.home-travel-services-section .travel-service-grid:is(.is-triple,.is-quad) .is-logo-only { flex-direction: column-reverse; align-items: flex-start; }
.home-categories-section:before { display: none; }
/* Category navigation: tiles of a small photo beside the name. Rows wrap and centre, so any number of categories
   ends on a balanced last row, and the photos (400px sources) are never shown larger than they can carry.
   The whole tile is the link, so it carries no arrow: the name keeps the room. */
.home-categories-section .category-grid { --category-cols: 4; --category-gap: 16px; display: flex; flex-wrap: wrap; justify-content: center; gap: var(--category-gap); }
.home-categories-section .category-card {
    position: relative; display: grid; grid-template-columns: auto minmax(0,1fr); align-items: center; gap: 12px;
    flex: 0 0 calc((100% - (var(--category-cols) - 1) * var(--category-gap)) / var(--category-cols)); min-width: 0; aspect-ratio: auto;
    padding-block: 8px; padding-inline: 8px 14px;
    border-radius: 18px; border: 1px solid #dce5ea; background: #fff;
    backdrop-filter: none; -webkit-backdrop-filter: none; box-shadow: 0 3px 12px #28465408;
}
.home-categories-section .category-card-media { position: relative; width: 72px; }
.home-categories-section .category-card-image {
    position: relative; inset: auto; width: 100%; height: auto; aspect-ratio: 3 / 2; overflow: hidden; border-radius: 12px;
    background: color-mix(in srgb, var(--category-accent) 12%, #fff);
}
.home-categories-section .category-card-image:after { display: none; }
.home-categories-section .category-card-image > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.home-categories-section .category-image-fallback { display: none; }
.home-categories-section .is-image-missing .category-image-fallback { display: grid; place-items: center; width: 100%; height: 100%; color: var(--category-accent); }
.home-categories-section .category-image-fallback :is(img,svg) { width: 28px; height: 28px; object-fit: contain; transform: none; }
/* The category's own icon, in its colour, pinned to the photo's corner; a missing photo already shows it. */
.home-categories-section .category-card-icon {
    position: absolute; inset-inline-end: -6px; bottom: -6px; width: 26px; height: 26px; display: grid; place-items: center;
    border-radius: 50%; background: #fff; color: var(--category-accent); box-shadow: 0 2px 6px #1418381f;
}
.home-categories-section .category-card-icon :is(img,svg) { width: 16px; height: 16px; }
.home-categories-section .is-image-missing + .category-card-icon { display: none; }
.home-categories-section .category-card h3 {
    position: static; padding: 0; margin: 0; color: #253f4d; font-size: 14px; font-weight: 600; line-height: 1.35; text-shadow: none; overflow-wrap: break-word; hyphens: auto;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
@media (hover: hover) {
    .home-categories-section .category-card:hover { transform: translateY(-2px); box-shadow: 0 8px 20px #28465412; }
    .home-categories-section .category-card:hover .category-card-image > img { transform: scale(1.08); }
}
:is(.home-featured-section,.home-recommendations-section,.home-travel-services-section,.home-categories-section) a:focus-visible { outline: 2px solid var(--ui-focus, #357b83); outline-offset: 2px; }
@media (max-width: 991px) {
    .home-categories-section .category-grid { --category-cols: 3; }
    .home-featured-section .home-card-grid,
    .home-recommendations-section .home-recommendation-grid:not([data-count="1"]) { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .home-recommendation-grid[data-count="1"] .recommendation-card { grid-template-columns: 120px minmax(0,1fr); gap: 20px; }
    .home-recommendation-grid[data-count="1"] .recommendation-card-footer { grid-column: 2; }
}
@media (max-width: 767px) {
    .home-categories-section .category-grid { --category-cols: 2; }
}
@media (max-width: 575px) {
    /* Phones keep two tiles a row with a smaller photo; a name too long for its line hyphenates. */
    .home-categories-section .category-grid { --category-gap: 10px; }
    .home-categories-section .category-card { gap: 8px; min-height: 50px; padding-block: 6px; padding-inline: 6px 8px; }
    .home-categories-section .category-card-media { width: 44px; }
    .home-categories-section .category-card-image { border-radius: 9px; }
    .home-categories-section .category-card-icon { width: 22px; height: 22px; inset-inline-end: -5px; bottom: -5px; }
    .home-categories-section .category-card-icon :is(img,svg) { width: 14px; height: 14px; }
    .home-categories-section .category-card h3 { font-size: 13px; -webkit-line-clamp: 3; }

    .home-dmo-spotlight, .home-featured-section, .home-travel-services-section,
    .home-recommendations-section, .home-categories-section { padding: 30px 0; }
    :is(.home-featured-section,.home-recommendations-section) .section-heading-row { gap: 12px; align-items: flex-end; }
    :is(.home-featured-section,.home-recommendations-section) .section-view-all { padding: 8px 12px; }
    .home-featured-section .home-card-grid { gap: 12px; }
    .home-featured-section .home-listing-card { border-radius: 16px; }
    .home-featured-section .home-listing-body { left: 12px; right: 12px; bottom: 12px; }
    .home-featured-section .home-listing-body h3 { font-size: 15px; margin-bottom: 6px; }
    .home-featured-section .listing-distance { font-size: 11px; padding: 4px 8px; }
    .home-featured-section .home-listing-fallback svg { width: 42px; height: 42px; }
    .home-recommendations-section:after { background-position: 130px center; background-size: 580px auto; background-repeat: no-repeat; opacity: .4; }
    .home-recommendations-section .home-recommendation-grid:not([data-count="1"]) { grid-template-columns: minmax(0,1fr); }
    .home-recommendations-section .recommendation-card,
    .home-recommendation-grid[data-count="1"] .recommendation-card { display: flex; flex-direction: column; align-items: stretch; padding: 20px; gap: 16px; }
    .home-recommendation-grid[data-count="1"] .recommendation-card-top { flex-direction: row; align-items: center; }
    .home-recommendation-grid[data-count="1"] .recommendation-card-footer { border-top: 1px solid #e7eef1; padding-top: 14px; }
    .home-travel-services-section .is-logo-only { padding: 20px; gap: 16px; }
    .home-travel-services-section .is-logo-only .travel-service-media { width: 72px; height: 72px; padding: 8px; border-radius: 14px; }
    .home-travel-services-section .travel-service-body h3 { font-size: 19px; }
}
@media (prefers-reduced-motion: reduce) {
    :is(.home-featured-section,.home-recommendations-section,.home-travel-services-section,.home-categories-section) a,
    :is(.home-featured-section,.home-categories-section) img,
    .home-recommendations-section .recommendation-card-footer i { transition: none; }
    :is(.home-featured-section,.home-recommendations-section,.home-travel-services-section,.home-categories-section) a:hover { transform: none; }
    .home-categories-section .category-card:hover .category-card-image > img { transform: none; }
}

/* Location, search and map share one entry point below the hero. */
.home-discovery-section { position: relative; z-index: 5; margin-top: -42px; padding-bottom: 8px; background: linear-gradient(transparent 42px,#fff 42px); }
.home-discovery-card { padding: 24px; border: 1px solid #dce5ea; border-radius: 24px; background: #fff; box-shadow: 0 14px 36px #193b4b16; }
.home-discovery-context { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 18px; }
.home-discovery-location { min-width: 0; }
.home-discovery-label { display: block; font-size: 12px; line-height: 1.5; color: #647783; margin-bottom: 3px; }
.home-discovery-location-btn { display: inline-flex; align-items: center; gap: 12px; max-width: 100%; min-height: 32px; padding: 0; border: 0; background: transparent; color: #223e4c; font-size: 17px; font-weight: 650; text-align: start; }
.home-discovery-location-btn span { overflow-wrap: anywhere; }
.home-discovery-location-btn i { display: grid; place-items: center; flex-shrink: 0; width: 24px; height: 24px; border-radius: 50%; background: #edf4f6; color: #487382; font-size: 10px; }
.home-discovery-card .location-switch { flex: 0 0 auto; width: auto; min-height: 44px; padding: 10px 14px; border-radius: 12px; box-shadow: none; font-size: 13px; font-weight: 600; background: #f6f9fa; color: #476774; }
.home-discovery-search-row { display: flex; align-items: flex-start; gap: 12px; }
.home-discovery-search { min-width: 0; flex: 1; position: relative; }
.home-discovery-card .home-search-input { height: 56px; padding: 0 16px 0 46px; border-radius: 12px; background: #f8fafb; border-color: #ccdce3; font-size: 16px; }
.home-discovery-card.home-search-card--compact .home-search-input { padding-right: 210px; }
.home-discovery-card .home-search-input:focus { background: #fff; border-color: #41868c; box-shadow: 0 0 0 3px #41868c20; }
.home-discovery-card .home-search-input-wrap > i { color: #4d717e; }
.home-discovery-card .home-search-loader { position: static; display: block; margin-top: 8px; font-size: 12px; color: #617681; }
.home-discovery-card .home-search-results { position: relative; margin-top: 8px; max-height: 320px; border-radius: 12px; box-shadow: none; }
.home-discovery-card .location-map-btn { min-height: 56px; padding: 12px 24px; border-radius: 12px; flex: 0 0 auto; width: auto; background: #24767b; border: 1px solid #24767b; color: #fff; box-shadow: none; font-size: 14px; font-weight: 600; }
.home-discovery-card .location-map-btn:hover { background: #1b6166; transform: none; }
.home-discovery-ai-note { display: flex; align-items: center; gap: 8px; margin: 12px 0 0; color: #687d88; font-size: 12px; line-height: 1.5; }
.home-discovery-ai-note > i { color: #598397; }
.home-discovery-card :is(button,a):focus-visible { outline: 2px solid var(--ui-focus, #41868c); outline-offset: 2px; }

/* Spotlight header: chapter title on the left, the visitor's area on the right. The media lives in dmo-stage.css. */
.home-dmo-spotlight .dmo-spotlight-card { padding: 0; background: transparent; border: 0; border-radius: 0; box-shadow: none; overflow: visible; }
.home-dmo-spotlight .section-heading { margin-bottom: 0; }

/* A single service is always an identity / description / action row. */
.home-travel-services-section .travel-service-grid .is-compact-service { display: grid; grid-template-columns: 88px minmax(0,1fr) auto; align-items: center; gap: 24px; padding: 26px; text-align: start; }
.travel-service-compact-logo { position: relative; display: grid; place-items: center; width: 88px; height: 88px; border: 1px solid #e3e9ec; border-radius: 16px; background: #fff; overflow: hidden; color: #527a83; }
.travel-service-compact-logo > i { font-size: 28px; }
.travel-service-compact-logo img { position: absolute; inset: 0; width: 100%; height: 100%; padding: 12px; background: #fff; object-fit: contain; }
.travel-service-compact-logo img[hidden] { display: none; }
.travel-service-compact-copy { min-width: 0; }
.travel-service-compact-copy .travel-service-eyebrow { font-size: 10px; margin-bottom: 8px; }
.travel-service-compact-copy h3 { font-size: 21px; font-weight: 650; line-height: 1.3; margin: 0 0 6px; overflow-wrap: anywhere; }
.travel-service-compact-copy p { max-width: 680px; font-size: 14px; line-height: 1.6; color: #617580; margin: 0; overflow-wrap: anywhere; }
.travel-service-compact-action { display: inline-flex; align-items: center; justify-content: center; gap: 12px; padding: 12px 18px; border-radius: 12px; border: 1px solid #c5d8dc; background: #f3f8f8; color: #286b72; font-size: 14px; font-weight: 600; }
@media (max-width: 767px) {
    .home-dmo-spotlight .dmo-spotlight-grid { grid-template-columns: minmax(0,1fr); gap: 16px; }
    .home-discovery-context { align-items: flex-start; gap: 12px; }
    .home-discovery-card .location-switch { max-width: 45%; white-space: normal; }
    .home-travel-services-section .travel-service-grid .is-compact-service { grid-template-columns: 72px minmax(0,1fr); gap: 18px; padding: 22px; }
    .travel-service-compact-logo { width: 72px; height: 72px; }
    .travel-service-compact-action { grid-column: 2; justify-self: start; }
}
@media (max-width: 575px) {
    .home-discovery-section { margin-top: -24px; padding-bottom: 8px; background: linear-gradient(transparent 24px,#fff 24px); }
    .home-discovery-card { padding: 18px; border-radius: 20px; }
    .home-discovery-context { flex-direction: column; gap: 8px; margin-bottom: 14px; }
    .home-discovery-card .location-switch { max-width: 100%; min-height: 36px; padding: 6px 0; border: 0; background: transparent; }
    .home-discovery-search-row { flex-direction: column; gap: 10px; }
    .home-discovery-search { width: 100%; }
    .home-discovery-card .location-map-btn { width: 100%; min-height: 46px; }
    .home-discovery-card .home-search-input { height: 52px; font-size: 16px; }
    .travel-service-compact-copy h3 { font-size: 18px; }
    .home-travel-services-section .travel-service-grid .is-compact-service { gap: 14px; padding: 18px; }
    .travel-service-compact-action { grid-column: 1 / -1; justify-self: stretch; }
}

@media (max-width: 600px) {
    .home-discovery-card.home-search-card--compact .home-search-input { padding-right: 12px; background: transparent; }
    .home-discovery-card.home-search-card--compact .home-search-input-wrap { background: #f8fafb; border-color: #ccdce3; border-radius: 12px; }
    .home-discovery-card.home-search-card--compact .home-search-input:focus { box-shadow: none; }
}

/* One integrated Ask entry, with the existing location and navigation actions. */
.home-discovery-section--sticky { position: sticky; top: calc(var(--iw-header-height, 65px) + 8px); z-index: 900; background: transparent; pointer-events: none; }
.home-discovery-section--sticky .home-discovery-card { pointer-events: auto; }
.home-discovery-card.home-search-card--compact { display: flex; align-items: center; gap: 12px; padding: 10px; max-width: var(--home-entry-width,820px); margin-inline: auto; }
.home-search-card--compact .home-discovery-context { flex: 0 1 340px; min-width: 0; justify-content: flex-start; gap: 8px; margin: 0; padding-inline-end: 12px; }
.home-search-card--compact .home-discovery-location { flex: 1; min-width: 0; }
.home-search-card--compact .home-discovery-location-btn { display: flex; width: 100%; min-height: 70px; gap: 12px; padding: 10px; border-radius: 16px; transition: background .18s ease; }
.home-search-card--compact .home-discovery-location-btn:hover { background: #f3f7f8; }
.home-search-card--compact .home-discovery-label { margin-bottom: 2px; font-weight: 500; }
.home-search-card--compact .home-near-pin { display: grid; place-items: center; flex: 0 0 40px; width: 40px; height: 40px; border-radius: 50%; background: #e0f4f1; color: #198e85; }
.home-search-card--compact svg { width: 20px; height: 20px; flex-shrink: 0; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.home-search-card--compact .home-near-copy { display: flex; flex-direction: column; min-width: 0; }
.home-search-card--compact .home-near-value { display: flex; align-items: center; gap: 6px; min-width: 0; font-size: 18px; line-height: 1.4; font-weight: 700; }
.home-search-card--compact .home-near-chevron { width: 16px; height: 16px; color: #738998; }
.home-search-card--compact #homeCurrentLocationName { min-width: 0; }
.home-search-card--compact .current-location-primary,
.home-search-card--compact .current-location-secondary { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.home-search-card--compact .location-switch { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; max-width: none; padding: 0; border: 1px solid #dce7ec; border-radius: 50%; background: #fff; color: #5c7a8b; }
.home-search-card--compact .location-switch:hover { color: #198e85; border-color: #97cbc4; }
.home-search-card--compact .location-switch.is-loading { width: auto; height: auto; padding: 10px; gap: 6px; border-radius: 14px; }
.home-search-card--compact .location-switch::after { content: attr(data-tooltip); position: absolute; top: calc(100% + 8px); inset-inline-start: 0; z-index: 10; width: max-content; max-width: 220px; padding: 7px 10px; border-radius: 8px; background: #223e4c; color: #fff; font-size: 12px; line-height: 1.4; white-space: normal; pointer-events: none; opacity: 0; visibility: hidden; }
.home-search-card--compact .location-switch:is(:hover,:focus-visible):not(.is-loading)::after { opacity: 1; visibility: visible; }
.home-search-card--compact .home-discovery-search-row { position: relative; flex: 1; min-width: 0; flex-direction: row; align-items: center; gap: 12px; padding-inline-start: 12px; }
.home-search-card--compact .home-discovery-search-row::before,
.home-search-card--compact .home-discovery-search-row > * + *::before { content: ''; position: absolute; inset-inline-start: 0; top: 16px; bottom: 16px; width: 1px; background: #e1e8ee; }
.home-search-card--compact .home-ask-launch { position: relative; transform: none; align-self: auto; flex: 0 1 auto; margin-inline-start: 0; min-width: 0; min-height: 70px; justify-content: flex-end; gap: 8px; padding: 10px 14px; border: 0; border-radius: 16px; background: transparent; box-shadow: none; color: #536d7d; font-size: 14px; font-weight: 600; }
.home-search-card--compact .home-ask-launch:is(:hover,:focus-visible) { transform: none; background: #f5f3fc; box-shadow: none; }
.home-search-card--compact .location-map-btn { position: relative; gap: 8px; width: auto; min-height: 70px; padding: 12px 18px; background: transparent; border: 0; color: #536d7d; }
.home-search-card--compact .location-map-btn::before { inset-inline-start: -6px; }
.home-search-card--compact .location-map-btn:hover { background: #f3f7f8; color: #286b72; }
.home-search-card--compact .home-near-map { width: 24px; height: 24px; color: #19978c; fill: #def4ee; transform-origin: center; }
.home-search-card--compact .location-map-btn:is(:hover,:focus-visible) .home-near-map { animation: home-near-map-lift .65s ease-in-out; }
/* Tablet widths squeezed the search row until Ask IsWhere's centred orb overflowed onto the search
   icon; keep the row at its content width and let the location side give way instead. */
@media (min-width: 768px) {
    .home-search-card--compact .home-discovery-search-row { min-width: max-content; }
    .home-search-card--compact .home-ask-launch { flex-shrink: 0; }
}
@keyframes home-near-map-lift {
    0%, 100% { transform: translateY(0) rotate(0); }
    40% { transform: translateY(-2px) rotate(-6deg); }
    70% { transform: translateY(-1px) rotate(3deg); }
}
@media (max-width: 767px) {
    .home-discovery-card.home-search-card--compact { flex-direction: column; align-items: stretch; gap: 0; }
    .home-search-card--compact .home-discovery-context { flex: auto; flex-direction: row; align-items: center; justify-content: space-between; margin: 0; padding: 0 6px 6px 0; }
    .home-search-card--compact .location-switch::after { inset-inline-start: auto; inset-inline-end: 0; }
    .home-search-card--compact .home-discovery-search-row { flex: auto; gap: 8px; padding: 6px 0 0; border-top: 1px solid #e1e8ee; }
    .home-search-card--compact .home-discovery-search-row::before { display: none; }
    .home-search-card--compact .home-ask-launch { min-height: 60px; gap: 8px; padding: 8px; font-size: 13px; }
    .home-search-card--compact .home-ask-launch img { width: 30px; height: 30px; flex-basis: 30px; }
    .home-search-card--compact .location-map-btn { min-height: 60px; min-width: 0; max-width: 44%; padding: 8px; font-size: 13px; white-space: normal; }
    .home-search-card--compact .location-map-btn::before { inset-inline-start: -4px; }
}
@media (prefers-reduced-motion: reduce) {
    .home-search-card--compact :is(.home-discovery-location-btn,.home-ask-launch) { transition: none; }
    .home-search-card--compact .location-map-btn:is(:hover,:focus-visible) .home-near-map { animation: none; }
}

/* Reserve the expanded footprint while the sticky card changes size. */
.home-discovery-section--sticky { min-height: var(--home-discovery-height, 0px); }
/* Join the hero and Spotlight surfaces without removing the sticky footprint. */
.home-discovery-section--sticky + .home-dmo-spotlight--textured {
    margin-top: calc(-1 * var(--home-discovery-overlap, 58px));
    padding-top: calc(var(--home-discovery-overlap, 58px) + 24px);
}
main:has(> .home-discovery-section--sticky) + .iswhere-footer { margin-top: 0; }
.home-discovery-section--sticky .home-discovery-card,
.home-discovery-section--sticky :is(.home-discovery-context,.home-discovery-location-btn,.home-discovery-search-row,.home-ask-launch,.location-map-btn,.home-near-pin,.home-near-value,.home-discovery-label,.home-near-map),
.home-discovery-section--sticky .home-ask-launch img {
    transition: max-width .28s ease, min-height .28s ease, padding .28s ease, gap .28s ease, width .28s ease, height .28s ease, flex-basis .28s ease, font-size .28s ease, border-radius .28s ease, box-shadow .28s ease, background .18s ease;
}
.home-discovery-section--sticky.is-compact .home-discovery-card { max-width: var(--home-entry-compact-width,720px); padding: 6px; gap: 8px; border-radius: 18px; box-shadow: 0 8px 24px #193b4b1a; }
.home-discovery-section--sticky.is-compact .home-discovery-context { flex-basis: 320px; gap: 6px; padding-inline-end: 8px; }
.home-discovery-section--sticky.is-compact .home-discovery-location-btn { min-height: 52px; padding: 4px 8px; gap: 8px; }
.home-discovery-section--sticky.is-compact .home-near-pin { width: 34px; height: 34px; flex-basis: 34px; }
.home-discovery-section--sticky.is-compact .home-near-value { font-size: 16px; }
.home-discovery-section--sticky.is-compact .home-discovery-label { font-size: 11px; }
.home-discovery-section--sticky.is-compact .home-discovery-search-row { gap: 8px; padding-inline-start: 8px; }
.home-discovery-section--sticky.is-compact :is(.home-ask-launch,.location-map-btn) { min-height: 52px; padding: 6px 10px; font-size: 13px; gap: 6px; }
.home-discovery-section--sticky.is-compact .home-ask-launch img { width: 32px; height: 32px; flex-basis: 32px; }
.home-discovery-section--sticky.is-compact .home-near-map { width: 22px; height: 22px; }
.home-discovery-section--sticky.is-measuring *,
.home-discovery-section--sticky.is-measuring .home-discovery-card { transition: none !important; }
@media (max-width: 767px) {
    .home-discovery-section--sticky.is-compact .home-discovery-card { gap: 0; }
    .home-discovery-section--sticky.is-compact .home-discovery-context { flex-basis: auto; padding: 0 4px 4px 0; }
    .home-discovery-section--sticky.is-compact .home-discovery-search-row { padding: 4px 0 0; }
    .home-discovery-section--sticky.is-compact :is(.home-ask-launch,.location-map-btn) { min-height: 44px; padding: 4px 8px; }
    .home-discovery-section--sticky.is-compact .home-ask-launch img { width: 28px; height: 28px; flex-basis: 28px; }
}
@media (prefers-reduced-motion: reduce) {
    .home-discovery-section--sticky .home-discovery-card,
    .home-discovery-section--sticky .home-discovery-card * { transition: none; }
}

/* Entry actions and dividers follow the independently enabled controls. */
.home-search-card--compact .home-discovery-search-row > * + *::before { inset-inline-start: -6px; }
.home-search-card--compact .home-direct-search { position: relative; display: grid; place-items: center; align-self: stretch; flex: 1; min-width: 44px; padding: 0; border: 0; border-radius: 12px; background: transparent; color: #486573; }
.home-direct-search { transition: background-color 180ms ease, box-shadow 180ms ease; }
.home-direct-search svg { transition: transform 220ms ease; }
.home-search-card--compact .home-direct-search:is(:hover,:focus-visible) { background: #edf7f7; box-shadow: 0 3px 10px #29495712; }
.home-direct-search:is(:hover,:focus-visible) svg { transform: translateY(-1px) rotate(-12deg) scale(1.12); }
.home-search-card--compact:not(:has(.home-ask-launch)) { --home-entry-width: 660px; --home-entry-compact-width: 580px; }
.home-search-card--compact:not(:has(.home-ask-launch,.home-direct-search)) { --home-entry-width: 540px; --home-entry-compact-width: 480px; }
.home-search-card--compact .home-discovery-context { flex-basis: 340px; }
@media(max-width:767px) {
    .home-search-card--compact .home-discovery-context { flex-basis: auto; }
    .home-search-card--compact .home-discovery-search-row > * + *::before { inset-inline-start: -4px; }
    .home-search-card--compact .location-map-btn:first-child { margin-inline: auto; }
}
@media(prefers-reduced-motion:reduce) { .home-direct-search,.home-direct-search svg { transition: none; } .home-direct-search:is(:hover,:focus-visible) svg { transform: none; } }

/* assets/css/home-hero-demo.css */
/* The app presentation is scoped to the first home slide. */
.home-app-slide .home-hero-grid { grid-template-columns: 1fr 1fr; gap: 40px; }
.home-app-slide .home-hero-content { padding: 62px 0 92px; }
.hero-app-eyebrow { display: block; margin-bottom: 22px; color: #9edcd9; font-size: .8rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }
.home-app-slide h1 { font-size: clamp(3rem, 5.5vw, 5.2rem); line-height: 1.04; letter-spacing: -.045em; }
.home-app-slide h1 span { color: #ff8990; }
.hero-app-how { margin-top: 24px; }
.hero-app-demo { --hero-tilt-x: 0deg; --hero-tilt-y: 0deg; --hero-shift-x: 0px; --hero-shift-y: 0px; position: relative; min-width: 0; padding: 30px 0 68px; }
.hero-app-scene { position: relative; height: 510px; display: grid; place-items: center; perspective: 1200px; isolation: isolate; }
.hero-app-scene::before { content: ''; position: absolute; width: 94%; height: 70%; border-radius: 50%; background: radial-gradient(ellipse, rgba(58, 175, 196, .22), transparent 68%); pointer-events: none; }
.hero-app-phone { appearance: none; cursor: pointer; text-align: start; position: relative; width: 230px; padding: 7px; border-radius: 37px; border: 1px solid #a1b7c9; background: linear-gradient(135deg, #dfebf4, #607a95 18%, #152033 47%, #8da6bc 85%, #e2e9ef); box-shadow: 20px 30px 60px rgba(0, 0, 0, .38), inset 0 0 0 2px #283b50; transform: rotateX(var(--hero-tilt-x)) rotateY(calc(-9deg + var(--hero-tilt-y))) rotateZ(3deg); transition: transform .35s ease-out; z-index: 2; }
.hero-app-screen { display: block; position: relative; overflow: hidden; aspect-ratio: 1170 / 2532; border-radius: 30px; background: #f1fbfb; }
.hero-app-screen img, .hero-app-screen video { display: block; width: 100%; height: 100%; object-fit: cover; }
.hero-app-video { position: absolute; inset: 0; opacity: 0; transition: opacity .35s ease; }
.hero-app-demo.is-playing .hero-app-video, .hero-app-demo.has-played .hero-app-video { opacity: 1; }
.hero-app-demo.has-error .hero-app-video { opacity: 0; }
.hero-app-transition { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; opacity: 0; transition: opacity .32s ease; }
.hero-app-demo.is-switching .hero-app-transition { opacity: 1; transition: none; }
.hero-app-landscape { position: absolute; inset: -65px -145px -48px; pointer-events: none; z-index: 0; }
.hero-app-landscape img { display: block; width: 100%; height: 100%; object-fit: contain; }
.hero-app-float { position: absolute; z-index: 3; display: flex; align-items: center; gap: 12px; max-width: 195px; padding: 14px 17px; border: 1px solid rgba(178, 209, 230, .28); border-radius: 18px; background: linear-gradient(135deg, #233e5e, #142941); box-shadow: 0 16px 32px rgba(0, 0, 0, .22); color: #fff; font-size: .86rem; line-height: 1.35; font-weight: 700; transform: translate(var(--hero-shift-x), var(--hero-shift-y)); transition: transform .4s ease-out; }
.hero-app-float-category { top: 75px; left: -4px; }
.hero-app-float-map { bottom: 78px; right: -4px; }
.hero-app-float-icon { width: 38px; height: 38px; flex: 0 0 38px; display: grid; place-items: center; color: #ffa6ab; border-radius: 12px; background: rgba(252, 91, 98, .12); font-size: 1rem; }
.hero-app-float-map .hero-app-float-icon { color: #93e3dd; background: rgba(20, 184, 166, .12); }
.hero-app-float small { display: block; color: #aec7d9; font-size: .7rem; margin-top: 4px; letter-spacing: .12em; text-transform: uppercase; }
.hero-app-chapters { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; position: relative; z-index: 4; margin-top: 8px; }
.hero-app-chapters[hidden] { display: none; }
.hero-app-chapters button { display: flex; align-items: center; gap: 7px; padding: 10px 11px; min-height: 44px; border: 1px solid rgba(183, 206, 234, .2); border-radius: 12px; background: rgba(12, 27, 47, .65); color: #c5d5e6; font: inherit; font-size: .78rem; line-height: 1.3; transition: background .2s, color .2s, border-color .2s; }
.hero-app-chapters button span { color: #9db7ce; font-size: .7rem; }
.hero-app-chapters button[aria-pressed="true"] { color: #fff; border-color: rgba(255, 137, 144, .65); background: rgba(252, 91, 98, .13); }
.hero-app-chapters button[aria-pressed="true"] span { color: #ffa3a9; }
.hero-app-chapters button:hover { color: #fff; background: #233e5e; }
.hero-app-chapters button:focus-visible, .hero-app-phone:focus-visible { outline: 2px solid var(--ui-focus, #9ee5df); outline-offset: 2px; }
@media (min-width: 1400px) { .hero-app-phone { width: 242px; } .hero-app-float-category { left: 12px; } .hero-app-float-map { right: 12px; } }
@media (max-width: 1199px) and (min-width: 992px) { .home-app-slide .home-hero-grid { gap: 24px; } .hero-app-float { max-width: 165px; padding: 12px; } .hero-app-float-category { left: -6px; top: 52px; } .hero-app-float-map { right: -6px; bottom: 58px; } }
@media (max-width: 991px) {
    .home-app-slide .home-hero-grid { grid-template-columns: 1fr; gap: 10px; padding: 48px 0 82px; }
    .home-app-slide .home-hero-content { padding: 0; }
    .hero-app-eyebrow { margin-bottom: 16px; }
    .home-app-slide h1 { font-size: clamp(2.6rem, 7.5vw, 4.5rem); margin-bottom: 18px; }
    .home-app-slide .hero-store-badges { justify-content: center; }
    .home-app-slide .hero-app-how { align-items: center; justify-content: center; }
    .hero-app-demo { padding: 12px 0 0; max-width: 460px; width: 100%; margin: auto; }
    .hero-app-scene { height: 440px; }
    .hero-app-landscape { inset: -38px -85px; opacity: .8; }
    .hero-app-phone { width: 195px; }
    .hero-app-float { max-width: 160px; padding: 12px; text-align: left; }
    .hero-app-float-category { top: 48px; left: 0; }
    .hero-app-float-map { bottom: 58px; right: 0; }

}
@media (max-width: 575px) {
    .home-app-slide .home-hero-grid { padding-top: 32px; padding-bottom: 80px; }
    .home-app-slide h1 { font-size: clamp(2.5rem, 10vw, 3.7rem); }
    .hero-app-eyebrow { font-size: .73rem; }
    .hero-app-scene { height: 405px; }
    .hero-app-landscape { inset: -24px -62px; opacity: .7; }
    .hero-app-phone { width: 178px; border-radius: 31px; padding: 6px; }
    .hero-app-screen { border-radius: 25px; }
    .hero-app-float { max-width: 140px; gap: 8px; padding: 10px; font-size: .75rem; border-radius: 14px; }
    .hero-app-float-icon { width: 29px; height: 29px; flex-basis: 29px; font-size: .85rem; border-radius: 9px; }
    .hero-app-float-category { top: 28px; }
    .hero-app-float-map { bottom: 30px; }
    .hero-app-chapters { gap: 6px; }
    .hero-app-chapters button { padding: 9px 8px; font-size: .75rem; }
}
@media (prefers-reduced-motion: reduce) {
    #homeHeroCarousel .carousel-item { transition: none; }
    .hero-app-phone { transform: none; transition: none; }
    .hero-app-float { transform: none; transition: none; }
    .hero-app-video, .hero-app-transition, .hero-app-chapters button { transition: none; }
}

/* assets/home-city/component.css */
.iw-city-hero *{box-sizing:border-box}.iw-city-hero a{color:inherit;text-decoration:none}.iw-city-hero button{font:inherit;cursor:pointer;color:inherit}.iw-city-hero button,.iw-city-hero a{-webkit-tap-highlight-color:transparent}.iw-city-hero button{background:none;border:0}.iw-city-hero button:focus-visible,.iw-city-hero a:focus-visible,.iw-city-hero canvas:focus-visible{outline:3px solid #9ee5df;outline-offset:4px}.iw-city-hero [hidden]{display:none!important}.iw-city-hero .sr-only{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap}.iw-city-hero #scene-wrap{position:absolute;inset:0 -80px 0 -30px;isolation:isolate}.iw-city-hero #city{height:100%;width:100%;display:block;touch-action:pan-y;cursor:grab;mask-image:linear-gradient(to bottom,#000 0%,#000 80%,transparent 96%)}.iw-city-hero #city.dragging{cursor:grabbing}.iw-city-hero .hero-app-chapters{position:absolute;bottom:30px;left:0;right:0;display:flex;justify-content:center;flex-wrap:wrap;gap:8px;z-index:7}.iw-city-hero .hero-app-chapters button{display:flex;gap:7px;align-items:center;padding:10px 11px;min-height:44px;border:1px solid #b7ceea33;border-radius:12px;background:#0c1b2fa6;color:#c5d5e6;font-size:.78rem;line-height:1.3}.iw-city-hero .hero-app-chapters button span{font-size:.7rem;color:#9db7ce}.iw-city-hero .hero-app-chapters button[aria-pressed=true]{color:#fff;border-color:#ff8990a6;background:#fc5b6221}.iw-city-hero .hero-app-chapters button:hover{background:#233e5e}.iw-city-hero .view-controls{position:absolute;right:5%;bottom:128px;border:1px solid #a5c3eb30;background:#0c1b2f77;border-radius:10px;overflow:hidden;display:flex;z-index:4}.iw-city-hero .view-controls button{width:32px;height:33px;color:#bbd3ea;font-size:16px}.iw-city-hero .view-controls button+button{border-left:1px solid #a5c3eb22}.iw-city-hero #pins{position:absolute;inset:0;pointer-events:none;z-index:3}.iw-city-hero .pin{position:absolute;left:0;top:0;pointer-events:auto;transform:translate(-50%,-100%);padding:5px;--pin:#ffbb89}.iw-city-hero .pin-dot{display:grid;place-items:center;width:27px;height:29px;border:1px solid var(--pin);background:#10213ce8;border-radius:50% 50% 50% 7%;transform:rotate(-45deg);box-shadow:0 4px 14px #030c2070}.iw-city-hero .pin-dot svg{width:13px;height:14px;stroke:var(--pin);fill:none;stroke-width:1.5;transform:rotate(45deg)}.iw-city-hero .pin:hover .pin-dot,.iw-city-hero .pin:focus-visible .pin-dot,.iw-city-hero .pin.selected .pin-dot{box-shadow:0 0 18px #89caff88;background:#233e5e}.iw-city-hero .pin.offer .pin-dot:after{content:"";position:absolute;right:-3px;top:0;width:5px;height:5px;background:#ff8990;border:1px solid #132c4f;border-radius:50%}.iw-city-hero .pin:after{content:"";height:9px;width:1px;background:linear-gradient(var(--pin),transparent);position:absolute;bottom:-3px;left:50%}.iw-city-hero #hover-card{position:absolute;z-index:8;padding:9px 13px;border:1px solid #afcaff44;border-radius:7px;pointer-events:none;white-space:nowrap;background:#112544ef;color:#deebff;font-size:11px;box-shadow:0 7px 22px #0004}.iw-city-hero #loading{position:absolute;inset:0;display:grid;place-items:center;background:#10213c88;z-index:9;font-size:12px;color:#a8c3e2}.iw-city-hero #detail{position:absolute;top:88px;right:8%;width:240px;background:#152b48ee;border:1px solid #92b2d85c;border-radius:17px;overflow:hidden;z-index:9;box-shadow:0 25px 50px #0006;backdrop-filter:blur(14px)}.iw-city-hero .close{position:absolute;right:9px;top:9px;width:27px;height:27px;border-radius:50%;background:#10213cbb;color:#fff;font-size:22px}.iw-city-hero .detail-body{padding:18px}.iw-city-hero .detail-body>span{font-size:8px;letter-spacing:1.8px;color:#9ab6d4;text-transform:uppercase}.iw-city-hero .detail-body h2{font-family:Space Grotesk,sans-serif;font-size:23px;line-height:1.1;margin:10px 0;color:#fff}.iw-city-hero .detail-body p{font-size:11px;line-height:1.7;color:#aec4da;margin:0 0 18px}.iw-city-hero .detail-body>button{background:#fc5b6230;border:1px solid #ff899077;border-radius:8px;padding:11px 12px;width:100%;font-size:11px;color:#ffd3d6}.iw-city-hero .detail-body small{display:block;text-align:center;margin-top:12px;font-size:8px;color:#738eaf}.iw-city-hero #detail-art{height:134px;background:radial-gradient(ellipse at 50% 65%,#547b9a44,transparent 70%),linear-gradient(135deg,#233e5e,#10213c);display:grid;place-items:center}.iw-city-hero #detail-art svg{width:67px;height:67px;stroke:var(--category,#ff8990);fill:none;stroke-width:.6;filter:drop-shadow(0 0 12px var(--category,#ff8990))}.iw-city-hero #leader{position:absolute;inset:0;width:100%;height:100%;z-index:8;pointer-events:none}.iw-city-hero #leader path{fill:none;stroke:#ffb5bc;stroke-width:1;stroke-dasharray:3 5;opacity:.5}@media(max-width:1399px){.iw-city-hero #scene-wrap{inset:0 -80px 0 -30px}}@media(max-width:1199px)and (min-width:992px){.iw-city-hero #scene-wrap{inset:0 -30px 0 -10px}.iw-city-hero .hero-app-chapters{gap:5px}.iw-city-hero .hero-app-chapters button{font-size:10px;padding:9px 8px}}@media(max-width:991px){.iw-city-hero #scene-wrap{inset:0 -10px}.iw-city-hero .hero-app-chapters{bottom:25px}.iw-city-hero .view-controls{bottom:108px}}@media(max-width:575px){.iw-city-hero #scene-wrap{inset:0 -12px}.iw-city-hero .hero-app-chapters{gap:5px;left:10px;right:10px;bottom:24px}.iw-city-hero .hero-app-chapters button{font-size:9px;min-height:40px;padding:9px 7px;gap:4px}.iw-city-hero .hero-app-chapters button span{font-size:8px}.iw-city-hero .pin-dot{width:23px;height:25px}.iw-city-hero .pin-dot svg{width:11px;height:12px}.iw-city-hero .pin{padding:4px}.iw-city-hero .view-controls{right:6%;bottom:92px}.iw-city-hero .view-controls button{width:27px;height:29px;font-size:14px}.iw-city-hero #detail{width:216px;right:6%;top:80px}.iw-city-hero #detail-art{height:107px}.iw-city-hero .detail-body{padding:15px}.iw-city-hero .detail-body h2{font-size:21px}}@media(prefers-reduced-motion:reduce){.iw-city-hero *,.iw-city-hero *:before,.iw-city-hero *:after{transition:none!important;animation:none!important}}.iw-city-hero .pin{pointer-events:none}.iw-city-hero .pin-dot{pointer-events:auto}@media(min-width:992px){.iw-city-hero #scene-wrap{inset:0;left:calc((100% - 100vw)/2);right:calc((100% - 100vw)/2);isolation:auto}.iw-city-hero #city{mask-image:linear-gradient(to right,transparent,#0004 25%,#000 58%),linear-gradient(to bottom,#000 82%,transparent 100%);mask-composite:intersect}.iw-city-hero .hero-app-chapters{left:48%;right:2.5%}.iw-city-hero .view-controls{right:4%;bottom:114px}.iw-city-hero #detail{right:5%}}.iw-city-hero #city{position:relative;z-index:0}.iw-city-hero .pin-dot{transition:box-shadow .15s,background .15s;box-shadow:0 0 calc(var(--discovery,0)*25px) #9edcd9;background:color-mix(in srgb,#10213c,#9edcd9 calc(var(--discovery,0)*50%))}.iw-city-hero .user-marker{position:absolute;z-index:5;transform:translate(-50%,-100%);padding:6px 10px;background:#ff8990;border:1px solid #ffd2d4;border-radius:20px;font-size:10px;color:#192943;font-weight:700;box-shadow:0 0 24px #ff899033;pointer-events:none;display:flex;gap:5px;align-items:center}.iw-city-hero .user-marker span{width:4px;height:4px;border-radius:50%;background:#192943}.iw-city-hero #video-stories{position:absolute;inset:0;z-index:6;pointer-events:none}.iw-city-hero .story-beams{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.iw-city-hero .story-beams .beam-root{stop-color:var(--story);stop-opacity:.85}.iw-city-hero .story-beams .beam-tip{stop-color:var(--story);stop-opacity:.16}.iw-city-hero .story-beams polygon{animation:story-beam 2.4s ease-in-out infinite;mix-blend-mode:screen}@keyframes story-beam{50%{opacity:.6}}.iw-city-hero .video-marker{position:absolute;inset:0;pointer-events:none}.iw-city-hero .video-trigger{position:absolute;display:flex;flex-direction:column;align-items:center;gap:5px;padding:0;border:0;background:none;color:#e9f1fa;font-size:10px;transform:translate(-50%,-100%);pointer-events:auto;transition:opacity .3s}.iw-city-hero .video-trigger[hidden],.iw-city-hero .video-marker.expanded .video-trigger{display:flex;opacity:0;pointer-events:none}.iw-city-hero .story-ring{position:relative;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;color:#fff;background:radial-gradient(circle,#18304d 0 58%,transparent 60%),conic-gradient(from 210deg,var(--story),#ff8990,#ffd29a,var(--story));box-shadow:0 0 18px color-mix(in srgb,var(--story),transparent 45%);animation:story-ring 2.6s ease-in-out infinite}.iw-city-hero .story-ring svg{width:13px;height:13px;fill:currentColor;margin-left:2px}.iw-city-hero .video-trigger:hover .story-ring,.iw-city-hero .video-trigger:focus-visible .story-ring{transform:scale(1.12)}@keyframes story-ring{50%{box-shadow:0 0 28px color-mix(in srgb,var(--story),transparent 25%)}}.iw-city-hero .story-label{padding:3px 7px;border-radius:999px;background:#0b1829cc;white-space:nowrap;font-size:9px;letter-spacing:.2px}.iw-city-hero .video-peek{position:absolute;display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid color-mix(in srgb,var(--story),transparent 45%);border-radius:16px;background:#0d1d31eb;box-shadow:0 18px 44px #02081888,0 0 0 1px #ffffff0a inset,0 0 30px color-mix(in srgb,var(--story),transparent 75%);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);pointer-events:auto;animation:story-open .45s cubic-bezier(.2,.9,.3,1.15)}@keyframes story-open{0%{opacity:0;transform:translateY(10px) scale(.94)}}.iw-city-hero .story-bars{display:flex;gap:4px}.iw-city-hero .story-bars i{position:relative;flex:1;height:2px;border-radius:2px;background:#ffffff26;overflow:hidden}.iw-city-hero .story-bars i:after{content:"";position:absolute;inset:0;background:#fff;transform-origin:left;transform:scaleX(var(--fill,0))}.iw-city-hero .story-bars i.live:after{transform:scaleX(var(--story-progress,0))}.iw-city-hero .story-head{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:10px;color:#fff}.iw-city-hero .story-place{display:flex;align-items:center;gap:6px;font-weight:600}.iw-city-hero .story-place:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--story);box-shadow:0 0 8px var(--story)}.iw-city-hero .story-badge{font-size:7px;letter-spacing:.9px;color:#c9d7e6;padding:3px 6px;border-radius:999px;background:#ffffff12}.iw-city-hero .story-screen{position:relative;flex:1;border-radius:10px;overflow:hidden;background:#132d46}.iw-city-hero .story-screen video{width:100%;height:100%;object-fit:cover;display:block}.iw-city-hero .story-toggle{position:absolute;right:6px;bottom:6px;display:grid;place-items:center;width:28px;height:28px;border:0;border-radius:50%;color:#fff;background:#0b1829b3;padding:0}.iw-city-hero .story-toggle svg{width:11px;height:11px;fill:currentColor}.iw-city-hero .pin.story-pin .pin-dot{opacity:0!important}.iw-city-hero .pin.story-pin.story-live .pin-dot{opacity:1!important;box-shadow:0 0 20px var(--pin)}@media(max-width:991px){.iw-city-hero .story-ring{width:34px;height:34px}.iw-city-hero .story-label{font-size:8px}.iw-city-hero .video-peek{padding:6px;gap:5px;border-radius:13px}.iw-city-hero .story-head{font-size:9px}}@media(prefers-reduced-motion:reduce){.iw-city-hero .story-ring,.iw-city-hero .story-beams polygon,.iw-city-hero .video-peek{animation:none}}@media(max-width:991px){.iw-city-hero #scene-wrap{isolation:auto}.iw-city-hero #city{mask-image:linear-gradient(to bottom,transparent,#000 12%,#000 82%,transparent)}.iw-city-hero .user-marker,.iw-city-hero .video-peek .story-caption{font-size:9px}}.iw-city-hero .living-map{position:absolute;z-index:2;display:flex;align-items:center;gap:7px;transform:translate(-50%);color:#b1c8ce99;font-size:10px;letter-spacing:.1em;font-weight:400;white-space:nowrap;pointer-events:none;text-shadow:0 1px 5px #10243b}.iw-city-hero .living-map:after{content:"";width:20px;height:1px;background:linear-gradient(90deg,#a1c6cc55,transparent)}.iw-city-hero .living-map>span{width:4px;height:4px;border-radius:50%;background:#9edcd9;opacity:var(--breath,.5);box-shadow:0 0 7px #9edcd944}@media(max-width:575px){.iw-city-hero .living-map{font-size:8px;gap:5px}.iw-city-hero .living-map:after{width:12px}}.iw-city-hero #map-deals{position:absolute;inset:0;z-index:6;pointer-events:none}.iw-city-hero .deal-tethers{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.iw-city-hero .deal-tethers path{fill:none;stroke:#cbb687;stroke-width:1;stroke-dasharray:2 4}.iw-city-hero .map-deal{position:absolute;pointer-events:auto;height:28px;min-height:28px;padding:0 8px;display:flex;align-items:center;justify-content:center;gap:5px;background:#142b40e8;border:1px solid #c9b18485;border-radius:6px;color:#e4d1a8;box-shadow:0 3px 12px #050e2033;backdrop-filter:blur(8px);text-align:left;overflow:visible}.iw-city-hero .map-deal>strong{font-family:Space Grotesk,sans-serif;font-weight:600;font-size:12px;line-height:1;letter-spacing:-.015em;white-space:nowrap}.iw-city-hero .deal-tag-icon{width:11px;height:11px;flex-shrink:0;stroke:#cfb991;stroke-width:1.1;fill:none}.iw-city-hero .map-deal.expanded{z-index:10;background:#243849;border-color:#e4c997;box-shadow:0 3px 14px #d5bd8d22}.iw-city-hero .deal-peek{position:absolute;bottom:calc(100% - 1px);left:calc(50% + var(--peek-shift,0px));transform:translate(-50%);display:block;width:164px;padding:12px;background:#13283cf5;border:1px solid #c9b18480;border-radius:8px 8px 5px 5px;box-shadow:0 8px 25px #050e2070;cursor:pointer;backdrop-filter:blur(12px)}.iw-city-hero .deal-category{display:flex;align-items:center;justify-content:space-between;gap:5px;font-size:10px;color:#e0c99e}.iw-city-hero .deal-category small{font-size:6px;letter-spacing:.6px;color:#b5a888}.iw-city-hero .deal-peek-copy{display:block;font-size:10px;line-height:1.5;color:#b5c4d2;margin:9px 0 12px}.iw-city-hero .deal-discover{display:flex;justify-content:space-between;font-size:9px;color:#d9c598}.iw-city-hero .deal-discover b{font-weight:400}.iw-city-hero .deal-detail-value{color:#dfc79a;font-family:Space Grotesk,sans-serif;font-size:40px;font-weight:500;letter-spacing:-.04em}.iw-city-hero #scene-wrap[data-chapter="3"] .pin.offer .pin-dot{border-color:#d3bd91}.iw-city-hero #scene-wrap[data-chapter="3"] .pin.offer .pin-dot:after{background:#e0c38a}@media(max-width:575px){.iw-city-hero .map-deal{padding:0 6px;gap:4px}.iw-city-hero .map-deal>strong{font-size:11px}.iw-city-hero .deal-tag-icon{width:10px;height:10px}}.iw-city-hero #scene-wrap[data-linked=true] .pin:not(.linked){opacity:.3;transition:opacity .25s}.iw-city-hero #scene-wrap[data-linked=true] .pin.linked .pin-dot{border-color:#ffe0a6;box-shadow:0 0 14px #e8c27d77}.iw-city-hero #scene-wrap[data-linked=true] .map-deal:not(.expanded){filter:brightness(.65)}@media(max-width:991px){.iw-city-hero #city{mask-image:linear-gradient(to bottom,transparent,#000 8%,#000 83%,transparent)}}@media(max-width:575px){.iw-city-hero .hero-app-chapters{bottom:18px}.iw-city-hero .view-controls{bottom:80px}}.iw-city-hero .pin:before{content:"";position:absolute;left:50%;bottom:-3.5px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:radial-gradient(circle,#fff 0 28%,var(--pin) 34%);box-shadow:0 0 calc(6px + var(--discovery,0)*14px) var(--pin);opacity:0;transform:scale(.3);transition:opacity .3s,transform .3s}.iw-city-hero .pin:after{transition:opacity .25s}.iw-city-hero .pin-dot{transition:box-shadow .15s,background .15s,opacity .25s,transform .45s cubic-bezier(.2,.9,.3,1.3)}.iw-city-hero .pin.arrive .pin-dot{animation:pin-arrive .5s cubic-bezier(.2,.9,.3,1.35) var(--tier-delay,0ms) backwards}.iw-city-hero .pin.arrive:after{animation:pin-stem .3s var(--tier-delay,0ms) backwards}@keyframes pin-arrive{0%{opacity:0;transform:translateY(14px) rotate(-45deg) scale(.2)}}@keyframes pin-stem{0%{opacity:0}}.iw-city-hero .pin.ambient:before{opacity:.95;transform:scale(calc(.8 + var(--discovery,0)*.9))}.iw-city-hero .pin.ambient:after{opacity:0}.iw-city-hero .pin.ambient .pin-dot{opacity:0;transform:translateY(12px) rotate(-45deg) scale(.25);pointer-events:none}.iw-city-hero #scene-wrap[data-chapter="3"] .pin.offer:before{background:radial-gradient(circle,#fff 0 28%,#e0c38a 34%);box-shadow:0 0 8px #e0c38a}@media(prefers-reduced-motion:reduce){.iw-city-hero .pin:before,.iw-city-hero .pin:after,.iw-city-hero .pin-dot{transition:none;animation:none}}.iw-city-hero .hero-app-chapters{left:50%;right:auto;transform:translate(-50%);width:max-content;max-width:calc(100% - 20px);flex-wrap:nowrap;gap:2px;padding:4px;border:1px solid #b7ceea2e;border-radius:999px;background:#0b1829b8;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 10px 30px #02081866}.iw-city-hero .hero-app-chapters button{position:relative;min-height:36px;padding:8px 13px;border:0;border-radius:999px;background:transparent;color:#a9bdd2;font-size:.76rem;gap:6px;overflow:hidden;transition:background .25s,color .25s}.iw-city-hero .hero-app-chapters button em{font-style:normal}.iw-city-hero .hero-app-chapters button span{font-size:.66rem;color:#7f99b3;font-variant-numeric:tabular-nums}.iw-city-hero .hero-app-chapters button:hover{background:#ffffff12;color:#fff}.iw-city-hero .hero-app-chapters button[aria-pressed=true]{color:#fff;background:#ffffff17;border:0}.iw-city-hero .hero-app-chapters button[aria-pressed=true] span{color:#ffa3a9}.iw-city-hero .chapter-progress{position:absolute;left:13px;right:13px;bottom:4px;height:2px;border-radius:2px;background:#ffffff1c;opacity:0;transition:opacity .25s}.iw-city-hero .chapter-progress:after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(90deg,#ff8990,#ffc0a8);transform-origin:left;transform:scaleX(var(--progress,0))}.iw-city-hero .hero-app-chapters button[aria-pressed=true] .chapter-progress{opacity:1}.iw-city-hero .hero-app-chapters .chapter-toggle{width:36px;padding:0;justify-content:center;color:#ffd0d3;background:#fc5b6226}.iw-city-hero .hero-app-chapters .chapter-toggle:hover{background:#fc5b6240}.iw-city-hero .chapter-toggle .icon-play{display:none}.iw-city-hero .view-controls{border-radius:999px;background:#0b1829b8;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);transition:opacity .25s,transform .25s}@media(hover:hover){.iw-city-hero .view-controls{opacity:0;transform:translateY(6px)}.iw-city-hero #scene-wrap:hover .view-controls,.iw-city-hero .view-controls:focus-within{opacity:1;transform:none}}@media(min-width:992px){.iw-city-hero .hero-app-chapters{left:72.75%;right:auto}}@media(min-width:992px)and (max-width:1279px){.iw-city-hero .hero-app-chapters{left:auto;right:24px;transform:none}}@media(max-width:575px){.iw-city-hero .hero-app-chapters{left:50%;right:auto;gap:0;padding:3px}.iw-city-hero .hero-app-chapters button{padding:8px 9px;font-size:10px}.iw-city-hero .hero-app-chapters button:not([aria-pressed=true]) em{display:none}.iw-city-hero .hero-app-chapters .chapter-toggle{width:32px}}@media(prefers-reduced-motion:reduce){.iw-city-hero .chapter-progress{display:none}}.iw-city-hero .city-progress{position:absolute;z-index:6;left:72.75%;bottom:128px;transform:translate(-50%,6px);display:flex;align-items:center;gap:10px;padding:8px 14px 10px;border:1px solid #9fd0ff2e;border-radius:999px;background:#0b1829b8;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#cfe6ff;font-size:11px;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;opacity:0;transition:opacity .4s,transform .4s;pointer-events:none}.iw-city-hero .city-progress.is-visible{opacity:1;transform:translate(-50%)}.iw-city-hero .city-progress-value{min-width:3.2ch;color:#fff;font-variant-numeric:tabular-nums;text-align:right}.iw-city-hero .city-progress-bar{position:absolute;left:14px;right:14px;bottom:4px;height:2px;border-radius:2px;background:#ffffff1a;overflow:hidden}.iw-city-hero .city-progress-bar:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#5aa8ff,#9fe3ff);transform-origin:left;transform:scaleX(var(--progress,0));transition:transform .25s}@media(max-width:991px){.iw-city-hero .city-progress{left:50%;bottom:120px}}@media(prefers-reduced-motion:reduce){.iw-city-hero .city-progress,.iw-city-hero .city-progress-bar:after{transition:none}}.iw-city-hero .pin-dot{width:28px;height:30px;border:1.5px solid #fffffff0;background:var(--pin);box-shadow:0 6px 14px #02081899,0 0 0 4px color-mix(in srgb,var(--pin),transparent 78%),0 0 calc(var(--discovery,0)*24px) var(--pin)}.iw-city-hero .pin-dot svg{width:14px;height:15px;stroke:#0b1829;stroke-width:1.7}.iw-city-hero .pin:hover .pin-dot,.iw-city-hero .pin:focus-visible .pin-dot,.iw-city-hero .pin.selected .pin-dot{background:var(--pin);box-shadow:0 6px 16px #020818aa,0 0 0 5px color-mix(in srgb,var(--pin),transparent 65%)}.iw-city-hero .pin.offer .pin-dot:after{right:-4px;top:-1px;width:7px;height:7px;background:#ff8990;border:1.5px solid #fff}.iw-city-hero #scene-wrap[data-chapter="3"] .pin.offer .pin-dot{border-color:#fff3d6}.iw-city-hero .pin:after{height:10px;width:1.5px;background:linear-gradient(#ffffffcc,transparent)}.iw-city-hero .pin:before{width:6px;height:6px;margin-left:-3px;bottom:-3px;background:radial-gradient(circle,#fff 0 30%,#8fb4d8 36%);box-shadow:0 0 calc(4px + var(--discovery,0)*14px) #8fb4d8aa}.iw-city-hero .pin.ambient:before{opacity:.55;transform:scale(calc(.75 + var(--discovery,0)*.9))}.iw-city-hero #scene-wrap[data-chapter="3"] .pin.offer:before{background:radial-gradient(circle,#fff 0 30%,#8fb4d8 36%);box-shadow:0 0 4px #8fb4d8aa}.home-app-slide .home-hero-grid{position:relative}.home-app-slide .home-hero-content{position:relative;z-index:4;pointer-events:none}.home-app-slide .home-hero-content a{pointer-events:auto}.iw-city-slot{height:680px;min-width:0}.iw-city-hero{color:#fff;font-family:inherit;font-synthesis:none}.iw-city-hero #scene-wrap{inset:0;isolation:auto}.iw-city-hero .hero-app-chapters{margin:0}.iw-city-hero .pin,.iw-city-hero .pin-dot{pointer-events:none!important}.iw-city-hero .pin.map-destination .pin-dot{transform:translateY(calc(var(--map-arrival,0) * -6px)) rotate(-45deg) scale(calc(1 + var(--map-arrival,0) * .14));box-shadow:0 0 calc(var(--map-arrival,0) * 22px) #9edcd9;border-color:color-mix(in srgb,var(--pin),#fff calc(var(--map-arrival,0) * 65%))}.iw-city-hero .city-fallback{position:absolute;left:46%;top:0;width:54%;height:100%;object-fit:contain;pointer-events:none;mask-image:linear-gradient(90deg,transparent,#000 18%),linear-gradient(#000 85%,transparent);mask-composite:intersect}.iw-city-hero[data-state=ready] .city-fallback{display:none}.iw-city-hero:not([data-state=ready]) #scene-wrap{visibility:hidden}.iw-city-hero .city-load{position:absolute;z-index:5;left:68%;bottom:45px;padding:12px 20px;border:1px solid #ff899077;border-radius:24px;color:#fff;background:#142b40}.iw-city-hero #loading{inset:auto auto 100px 73%;transform:translate(-50%);width:min(260px,80%);display:flex;flex-direction:column;gap:10px;padding:13px 18px;border:1px solid #a5c3eb30;border-radius:12px;background:#10213ce8;color:#deebff;font-size:12px;text-align:center;pointer-events:none}.iw-city-hero .city-loading-progress{width:100%;height:5px;border:0;border-radius:4px;overflow:hidden;accent-color:#ff8990}.iw-city-hero .city-loading-progress::-webkit-progress-bar{background:#a5c3eb30;border-radius:4px}.iw-city-hero .city-loading-progress::-webkit-progress-value{background:#ff8990;border-radius:4px}.iw-city-hero .city-loading-progress::-moz-progress-bar{background:#ff8990;border-radius:4px}.iw-city-hero[data-rendering=false] *,.iw-city-hero[data-rendering=false] *:before{animation-play-state:paused!important}.iw-city-hero .view-controls button[aria-pressed=true]{color:#ffd0d3;background:#fc5b6230}.iw-city-hero .view-controls button{min-width:34px;min-height:36px}#homeHeroCarousel>.carousel-control-prev,#homeHeroCarousel>.carousel-control-next{z-index:7;top:50%;bottom:auto;transform:translateY(-50%);width:48px;height:48px}#homeHeroCarousel>.carousel-control-prev{left:8px}#homeHeroCarousel>.carousel-control-next{right:8px}@media(min-width:992px){.iw-city-hero{position:absolute;inset:0;left:calc((100% - 100vw)/2);right:calc((100% - 100vw)/2)}}@media(max-width:991px){.home-app-slide .home-hero-grid{grid-template-columns:1fr;gap:0;padding-bottom:0}.iw-city-slot{height:510px;margin-top:-75px;position:relative}.iw-city-hero{position:absolute;inset:0 -12px}.iw-city-hero .city-fallback{left:0;width:100%}.iw-city-hero .city-load{left:50%;transform:translate(-50%)}.iw-city-hero #loading{left:50%;bottom:100px}}@media(max-width:575px){.iw-city-slot{height:470px}}.iw-city-hero .hero-app-chapters{bottom:68px}@media(max-width:991px){.iw-city-hero .hero-app-chapters{bottom:66px}.iw-city-hero .view-controls{bottom:125px}}.iw-city-hero[data-playing=false] .chapter-toggle .icon-pause{display:none}.iw-city-hero[data-playing=false] .chapter-toggle .icon-play{display:block}.iw-city-hero[data-playing=false] .chapter-progress:after{background:#a9bdd2}

/* assets/css/current-location-name.css */
/* Shared location hierarchy for Home, the Explore toolbar and map summary. */
.home-discovery-location-btn .current-location-label,
.explore-map-page .current-location-label {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    min-width: 0;
    max-width: 100%;
    text-align: start;
    line-height: 1.4;
    white-space: normal;
    overflow-wrap: anywhere;
    color: inherit;
    font-size: inherit;
    font-weight: inherit;
}
.current-location-primary { font: inherit; }
.home-discovery-location-btn .current-location-secondary,
.explore-map-page .current-location-secondary {
    display: block;
    color: #617985;
    font-size: 12px;
    line-height: 1.35;
    font-weight: 400;
    letter-spacing: normal;
}
.current-location-label .current-location-secondary[hidden] { display: none; }
.explore-map-page .explore-location-main { flex-wrap: nowrap; min-width: 0; }
.explore-map-page #exploreLocationText {
    display: block;
    min-width: 0;
    white-space: normal;
    -webkit-line-clamp: unset;
}
#exploreFloatingLocationText { color: #214d54; font-size: 14px; font-weight: 600; }
.explore-map-page[data-map-theme="dark"] #exploreFloatingLocationText { color: #f3f7f8; }
.explore-map-page[data-map-theme="dark"] #exploreFloatingLocationText .current-location-secondary { color: #acd9d1; }

/* assets/css/dmo-stage.css */
/* Destination Spotlight on the night band: a cinematic photo stage with story bars and a thumbnail rail, then a video reel. */
@keyframes dmo-stage-bar { to { transform: scaleX(1); } }
@keyframes dmo-stage-drift { from { transform: scale(1); } to { transform: scale(1.07); } }

.dmo-stage { --dmo-stage-interval: 7s; display: grid; grid-template-columns: minmax(0, 1fr) 212px; gap: 16px; }
.dmo-stage.is-single { grid-template-columns: minmax(0, 1fr); }

.dmo-stage-main {
    position: relative; aspect-ratio: 16 / 9; overflow: hidden; isolation: isolate; touch-action: pan-y;
    border-radius: 28px; background: #0f1e33;
    box-shadow: 0 0 0 1px #ffffff14, 0 48px 90px -48px #000000d9;
}
/* Shade the top and bottom edges so bars, caption and controls stay legible on any image. */
.dmo-stage-main::after {
    content: ''; position: absolute; inset: 0; z-index: 2; pointer-events: none;
    background: linear-gradient(180deg, #050b14a6 0, #050b1400 24%, #050b1400 58%, #050b14cc 100%);
}

.dmo-stage-slide { position: absolute; inset: 0; margin: 0; opacity: 0; transform: scale(1.035); transition: opacity .9s ease, transform 1.4s cubic-bezier(.2, .7, .2, 1); }
.dmo-stage-slide.is-active { z-index: 1; opacity: 1; transform: none; }
.dmo-stage-media { position: absolute; inset: 0; }
.dmo-stage-slide.is-active .dmo-stage-media { animation: dmo-stage-drift 14s ease-out both; }
.dmo-stage-media > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
/* Banners often carry their own text, so the original is contained and a blurred copy fills the frame. */
.dmo-stage-media > .dmo-media-backdrop { object-fit: cover; filter: blur(28px) brightness(.5) saturate(1.15); transform: scale(1.18); visibility: hidden; }
.dmo-stage-media.is-media-loaded > .dmo-media-backdrop { visibility: visible; }
.dmo-stage-media.is-media-loaded > .dmo-media-fallback,
.dmo-stage-media.is-image-missing > .dmo-media-backdrop,
.dmo-stage-media > img[hidden] { display: none; }
.dmo-stage .dmo-media-fallback {
    display: flex; position: absolute; inset: 0; flex-direction: column; align-items: center; justify-content: center; gap: 14px;
    background: radial-gradient(ellipse at 30% 20%, #1c3554 0, #0f1e33 70%); color: #6f86a1;
    font-size: 11px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;
}
.dmo-stage .dmo-media-fallback svg { width: 56px; height: 46px; opacity: .7; }

.dmo-stage-link { position: absolute; inset: 0; z-index: 2; }
.dmo-stage-bars { position: absolute; top: 20px; inset-inline: 24px; z-index: 3; display: flex; gap: 6px; pointer-events: none; }
.dmo-stage-bars i { position: relative; flex: 1; height: 3px; overflow: hidden; border-radius: 3px; background: #ffffff38; }
.dmo-stage-bars i::after { content: ''; position: absolute; inset: 0; border-radius: inherit; background: #fff; transform-origin: left; transform: scaleX(0); }
[dir="rtl"] .dmo-stage-bars i::after { transform-origin: right; }
.dmo-stage-bars i.is-done::after { transform: scaleX(1); }
.dmo-stage-bars i.is-active::after { animation: dmo-stage-bar var(--dmo-stage-interval) linear forwards; }
.dmo-stage.is-paused .dmo-stage-bars i.is-active::after { animation-play-state: paused; }

.dmo-stage-caption { position: absolute; bottom: 24px; inset-inline-start: 28px; z-index: 3; display: flex; align-items: baseline; gap: 18px; color: #fff; pointer-events: none; }
.dmo-stage-count { font-family: 'Space Grotesk', 'Inter', sans-serif; font-size: 14px; font-weight: 500; color: #ffffff99; font-variant-numeric: tabular-nums; }
.dmo-stage-count b { font-size: 28px; font-weight: 600; letter-spacing: -.03em; color: #fff; }
.dmo-stage-kind { font-size: 11px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: #ffffffd9; }
.dmo-stage-kind:not(:empty)::before { content: ''; display: inline-block; width: 28px; height: 1px; margin-inline-end: 12px; vertical-align: middle; background: #ffffff80; }

.dmo-stage-controls { position: absolute; bottom: 20px; inset-inline-end: 22px; z-index: 4; display: flex; gap: 8px; }
.dmo-stage-btn {
    display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 1px solid #ffffff3d; border-radius: 50%;
    background: #0b162659; color: #fff; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); transition: background .2s, border-color .2s;
}
.dmo-stage-btn:hover { background: #ffffff2e; border-color: #ffffff73; }
.dmo-stage-btn svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.dmo-stage-btn .icon-play { fill: currentColor; stroke: none; }
[dir="rtl"] .dmo-stage-btn:not(.dmo-stage-toggle) svg { transform: scaleX(-1); }
.dmo-stage-toggle .icon-play, .dmo-stage-toggle[aria-pressed="true"] .icon-pause { display: none; }
.dmo-stage-toggle[aria-pressed="true"] .icon-play { display: block; }

/* The rail matches the stage height and scrolls inside it. */
.dmo-stage-rail { position: relative; min-width: 0; }
.dmo-stage-track {
    position: absolute; inset: 0; display: flex; flex-direction: column; gap: 12px; overflow-y: auto; overscroll-behavior: contain;
    scrollbar-width: none; mask-image: linear-gradient(180deg, #000 82%, #0000);
}
.dmo-stage-track::-webkit-scrollbar { display: none; }
.dmo-stage-thumb {
    position: relative; flex: 0 0 auto; aspect-ratio: 16 / 10; overflow: hidden; padding: 0; border: 0; border-radius: 16px;
    background: #15263d; cursor: pointer; opacity: .5; filter: saturate(.6); transition: opacity .35s, filter .35s, box-shadow .35s;
}
.dmo-stage-thumb img { position: relative; width: 100%; height: 100%; object-fit: cover; transition: transform .6s cubic-bezier(.2, .7, .2, 1); }
/* Shown only when the thumbnail image fails, which then hides itself. */
.dmo-stage-thumb-num {
    position: absolute; inset: 0; display: grid; place-items: center; color: #6f86a1;
    background: radial-gradient(ellipse at 30% 20%, #1c3554 0, #0f1e33 75%); font-family: 'Space Grotesk', 'Inter', sans-serif; font-size: 20px; font-weight: 600;
}
.dmo-stage-thumb:hover { opacity: .85; filter: none; }
.dmo-stage-thumb:hover img { transform: scale(1.06); }
.dmo-stage-thumb[aria-current="true"] { opacity: 1; filter: none; box-shadow: inset 0 0 0 2px #fff, 0 12px 26px -14px #000; }
.dmo-stage :is(a, button):focus-visible { outline: 2px solid var(--ui-focus); outline-offset: 2px; }
.dmo-stage-link:focus-visible { outline-offset: -6px; border-radius: 28px; }

/* Video reel: its own row under the photo stage. YouTube's 4:3 thumbnails are cropped to 16:9, which trims their letterbox. */
.dmo-reel { margin-top: 40px; }
.dmo-reel-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.dmo-reel-title { display: inline-flex; align-items: center; gap: 10px; color: #eef0fb; font-size: 11px; font-weight: 600; letter-spacing: .22em; text-transform: uppercase; }
.dmo-reel-title svg { width: 14px; height: 14px; fill: #ff8990; }
.dmo-reel-title em { padding-inline-start: 12px; border-inline-start: 1px solid #ffffff33; color: #93a3b6; font-family: 'Space Grotesk', 'Inter', sans-serif; font-style: normal; letter-spacing: .04em; }
.dmo-reel-nav { display: flex; gap: 8px; }
.dmo-reel-nav .dmo-stage-btn:disabled { opacity: .3; cursor: default; }
.dmo-reel.is-static .dmo-reel-nav { visibility: hidden; }
.dmo-reel-track {
    display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - 32px) / 3); gap: 16px;
    overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: none;
}
.dmo-reel-track::-webkit-scrollbar { display: none; }
.dmo-reel.is-pair .dmo-reel-track { grid-auto-columns: calc((100% - 16px) / 2); }
.dmo-reel.is-single .dmo-reel-track { grid-auto-columns: min(100%, 560px); }
/* Without photos the reel follows the header directly, and a lone video takes the full stage frame. */
.dmo-spotlight-header + .dmo-reel { margin-top: 0; }
.dmo-spotlight-header + .dmo-reel.is-single .dmo-reel-track { grid-auto-columns: 100%; }
.dmo-spotlight-header + .dmo-reel.is-single .dmo-reel-card { border-radius: 28px; box-shadow: 0 0 0 1px #ffffff14, 0 48px 90px -48px #000000d9; }
.dmo-spotlight-header + .dmo-reel.is-single .dmo-reel-play { width: 84px; height: 84px; margin: -42px 0 0 -42px; box-shadow: 0 0 0 10px #ffffff0f; }
.dmo-spotlight-header + .dmo-reel.is-single .dmo-reel-play svg { width: 30px; height: 30px; }
.dmo-spotlight-header + .dmo-reel.is-single .dmo-reel-index { display: none; }
.dmo-reel-card {
    position: relative; aspect-ratio: 16 / 9; overflow: hidden; padding: 0; border: 0; border-radius: 20px; scroll-snap-align: start;
    background: radial-gradient(ellipse at 30% 20%, #1c3554 0, #0f1e33 75%); cursor: pointer; box-shadow: 0 0 0 1px #ffffff14;
}
.dmo-reel-card img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s cubic-bezier(.2, .7, .2, 1); }
.dmo-reel-card::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, #050b1400 45%, #050b14b3 100%); }
.dmo-reel-play {
    position: absolute; inset: 50% auto auto 50%; z-index: 1; display: grid; place-items: center; width: 56px; height: 56px; margin: -28px 0 0 -28px; border-radius: 50%;
    background: #ffffff26; border: 1px solid #ffffff59; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
    transition: transform .35s cubic-bezier(.2, .9, .3, 1.3), background .25s;
}
.dmo-reel-play svg { width: 20px; height: 20px; margin-inline-start: 3px; fill: #fff; }
.dmo-reel-index { position: absolute; bottom: 14px; inset-inline-start: 16px; z-index: 1; color: #fff; font-family: 'Space Grotesk', 'Inter', sans-serif; font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; }
.dmo-reel-card:is(:hover, :focus-visible) img { transform: scale(1.06); }
.dmo-reel-card:is(:hover, :focus-visible) .dmo-reel-play { transform: scale(1.12); background: #fc5b62; border-color: #fc5b62; }
.dmo-reel-card:focus-visible { outline: 2px solid var(--ui-focus); outline-offset: 2px; }

@media (max-width: 991px) {
    .dmo-stage { grid-template-columns: minmax(0, 1fr); gap: 12px; }
    .dmo-stage-track { position: relative; inset: auto; flex-direction: row; overflow: auto hidden; scroll-snap-type: x mandatory; mask-image: linear-gradient(90deg, #000 85%, #0000); }
    .dmo-stage-thumb { width: 132px; scroll-snap-align: start; border-radius: 14px; }
    .dmo-reel-track { grid-auto-columns: calc((100% - 16px) / 2); }
}
@media (max-width: 575px) {
    .dmo-stage-main { aspect-ratio: 4 / 3; border-radius: 22px; }
    .dmo-stage-bars { top: 14px; inset-inline: 16px; gap: 4px; }
    .dmo-stage-caption { bottom: 18px; inset-inline-start: 18px; gap: 12px; }
    .dmo-stage-count b { font-size: 22px; }
    .dmo-stage-kind:not(:empty)::before { width: 16px; margin-inline-end: 8px; }
    .dmo-stage-controls { bottom: 14px; inset-inline-end: 14px; gap: 6px; }
    .dmo-stage-btn { width: 40px; height: 40px; }
    .dmo-stage-thumb { width: 112px; }
    .dmo-reel { margin-top: 28px; }
    .dmo-reel-track, .dmo-reel.is-pair .dmo-reel-track { grid-auto-columns: 78%; gap: 12px; }
    .dmo-reel.is-single .dmo-reel-track { grid-auto-columns: 100%; }
    .dmo-reel-card { border-radius: 16px; }
}
@media (prefers-reduced-motion: reduce) {
    .dmo-stage-slide, .dmo-stage-thumb, .dmo-stage-thumb img, .dmo-reel-card img, .dmo-reel-play { transition: none; }
    .dmo-stage-slide { transform: none; }
    .dmo-stage-slide.is-active .dmo-stage-media { animation: none; }
}

/* assets/css/home-editorial.css */
/* Homepage "night to day" theme: a night band after the hero, then pale indigo surfaces,
   sharp grotesk chapter titles and quiet, borderless components. Loaded only by pages/home, after home-sections.css. */
main:has(> .home-discovery-section--sticky) {
    --ed-ink: #141838; --ed-muted: #5d6385; --ed-line: #dde0f2; --ed-paper: #fcfcff; --ed-tint: #e9ebf8;
    --ed-accent: #e5484f; --ed-teal: #1f6f73; --ed-shadow: #1c226659;
    --ed-night-ink: #eef0fb; --ed-night-muted: #93a3b6; --ed-night-accent: #ff8990;
    --ed-display: 'Space Grotesk', 'Inter', Arial, sans-serif;
}
/* The Spotlight band continues the hero palette. */
.home-dmo-spotlight { --ed-ink: var(--ed-night-ink); --ed-muted: var(--ed-night-muted); --ed-accent: var(--ed-night-accent); --ed-line: #ffffff26; color: var(--ed-ink); }

/* Chapter eyebrows: a tabular number, a hairline, then a tracked label. No pills. */
main > :is(.home-dmo-spotlight,.home-featured-section,.home-travel-services-section,.home-recommendations-section,.home-categories-section) .section-heading > span {
    display: inline-flex; align-items: center; min-height: 0; padding: 0; border: 0; border-radius: 0; background: none;
    color: var(--ed-muted); font-size: 11px; font-weight: 600; letter-spacing: .22em; line-height: 1; text-transform: uppercase;
}
main > :is(.home-dmo-spotlight,.home-featured-section,.home-travel-services-section,.home-recommendations-section,.home-categories-section) .section-heading > span::before {
    content: counter(home-chapter, decimal-leading-zero);
    margin-inline-end: 14px; padding-inline-end: 46px;
    background: linear-gradient(var(--ed-line), var(--ed-line)) right center / 32px 1px no-repeat;
    color: var(--ed-accent); font-family: var(--ed-display); font-size: 13px; font-weight: 600; letter-spacing: .02em; font-variant-numeric: tabular-nums;
}
[dir="rtl"] main .section-heading > span::before { background-position: left center; }

/* Chapter titles share the hero's sharp grotesk. Tight tracking only for Latin scripts. */
main > :is(.home-dmo-spotlight,.home-featured-section,.home-travel-services-section,.home-recommendations-section,.home-categories-section) .section-heading h2 {
    max-width: 760px; margin: 16px 0 0; color: var(--ed-ink);
    font-family: var(--ed-display); font-size: clamp(30px, 3.4vw, 46px); font-weight: 600; line-height: 1.06;
}
:root:is(:lang(en),:lang(de),:lang(es),:lang(fr),:lang(id),:lang(it),:lang(ms),:lang(pt),:lang(vi)) main > :is(.home-dmo-spotlight,.home-featured-section,.home-travel-services-section,.home-recommendations-section,.home-categories-section) .section-heading h2 {
    letter-spacing: -.035em;
}

main > :is(.home-dmo-spotlight,.home-featured-section,.home-travel-services-section,.home-recommendations-section,.home-categories-section) { padding: 72px 0; }
main > :is(.home-featured-section,.home-travel-services-section,.home-recommendations-section,.home-categories-section) .section-heading-row { align-items: flex-end; margin-bottom: 32px; }
main > :is(.home-travel-services-section,.home-categories-section) .section-heading { margin-bottom: 32px; }

/* "View all" becomes an underlined text link with a travelling arrow. */
main > :is(.home-featured-section,.home-recommendations-section) .section-view-all {
    display: inline-flex; align-items: center; gap: 10px; min-height: 0; padding: 0 0 6px; border: 0; border-bottom: 1px solid currentColor; border-radius: 0;
    background: none; box-shadow: none; color: var(--ed-ink); font-size: 13px; font-weight: 600; letter-spacing: .04em;
}
main > :is(.home-featured-section,.home-recommendations-section) .section-view-all::after { content: '→'; transition: transform .3s cubic-bezier(.2, .7, .2, 1); }
[dir="rtl"] main .section-view-all::after { content: '←'; }
main > :is(.home-featured-section,.home-recommendations-section) .section-view-all:hover { color: var(--ed-accent); background: none; transform: none; }
main > :is(.home-featured-section,.home-recommendations-section) .section-view-all:hover::after { transform: translateX(4px); }
[dir="rtl"] main .section-view-all:hover::after { transform: translateX(-4px); }

/* The hero's lower edge settles into the night band before any scrolling. */
main:has(> .home-dmo-spotlight) > .home-hero { box-shadow: inset 0 -140px 90px -70px #0b1626; }

/* Spotlight: the night band, with the visitor's area as a live location chip. */
.home-dmo-spotlight .dmo-spotlight-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 32px; }
.dmo-spotlight-location {
    display: inline-flex; align-items: center; gap: 12px; flex-shrink: 0; margin: 0; padding: 7px 18px 7px 7px; border: 1px solid #ffffff1f; border-radius: 999px;
    background: #ffffff0d; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); color: var(--ed-night-ink);
}
.dmo-spotlight-pin { position: relative; display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: #fc5b62; color: #fff; }
.dmo-spotlight-pin::after { content: ''; position: absolute; inset: 0; border-radius: inherit; border: 1px solid #fc5b62; animation: ed-ping 2.6s cubic-bezier(.2, .7, .2, 1) infinite; }
.dmo-spotlight-pin svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.dmo-spotlight-place { display: flex; flex-direction: column; font-size: 16px; font-weight: 600; line-height: 1.2; letter-spacing: -.01em; }
.dmo-spotlight-place small { margin-bottom: 3px; color: var(--ed-night-muted); font-size: 10px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
@keyframes ed-ping { 0% { transform: scale(1); opacity: .8; } 80%, 100% { transform: scale(1.9); opacity: 0; } }

/* Featured rises over the night band as a rounded sheet. */
main:has(> .home-dmo-spotlight) > .home-dmo-spotlight { padding-bottom: 112px; }
main:has(> .home-dmo-spotlight) > .home-featured-section { position: relative; z-index: 1; margin-top: -40px; border-radius: 40px 40px 0 0; }

/* Featured: portrait photographs without frames, caption on a soft scrim. */
.home-featured-section .home-card-grid { gap: 20px; }
.home-featured-section .home-listing-card { aspect-ratio: 4 / 5; border: 0; border-radius: 24px; background: var(--ed-tint); box-shadow: none; }
.home-featured-section .home-listing-card:hover { transform: translateY(-4px); box-shadow: 0 34px 50px -30px var(--ed-shadow); }
.home-featured-section .home-listing-image { background: var(--ed-tint); }
.home-featured-section .home-listing-image:after { background: linear-gradient(180deg, #0000 40%, #0d1030bf 100%); }
.home-featured-section .home-listing-body { left: 20px; right: 20px; bottom: 20px; }
.home-featured-section .home-listing-body h3 { margin-bottom: 10px; font-size: 21px; font-weight: 600; letter-spacing: -.015em; text-shadow: 0 2px 18px #0006; }
.home-featured-section .listing-distance {
    display: inline-flex; padding: 5px 11px; border: 1px solid #ffffff4d; border-radius: 999px; background: #ffffff26;
    backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); color: #fff !important; font-size: 12px; font-weight: 600; box-shadow: none;
}
.home-featured-section .is-image-missing { background: linear-gradient(160deg, #e3e6f7 0, #b4bae0 100%); }
.home-featured-section .is-image-missing:after { background: linear-gradient(180deg, #0000 40%, #1d2350b3 100%); }
.home-featured-section .is-image-missing .home-listing-fallback { color: #6a71a6; opacity: .6; }

/* Shared card surface for service, recommendation and category cards. */
.home-travel-services-section .travel-service-grid .travel-service-card,
.home-recommendations-section .recommendation-card,
.home-categories-section .category-card {
    border: 1px solid var(--ed-line); border-radius: 24px; background: var(--ed-paper); box-shadow: none;
}
:is(.home-travel-services-section .travel-service-card, .home-recommendations-section .recommendation-card, .home-categories-section .category-card):hover {
    border-color: #c3c8ea; box-shadow: 0 30px 44px -30px var(--ed-shadow); transform: translateY(-3px);
}

.travel-service-compact-logo { border-color: var(--ed-line); background: #fff; color: var(--ed-muted); }
.travel-service-compact-copy .travel-service-eyebrow { color: var(--ed-teal); background: none; border: 0; padding: 0; letter-spacing: .18em; }
.travel-service-compact-copy h3 { color: var(--ed-ink); }
.travel-service-compact-copy p { color: var(--ed-muted); }
.travel-service-compact-action { border: 1px solid var(--ed-ink); border-radius: 999px; background: none; color: var(--ed-ink); }
.travel-service-compact-action:hover { background: var(--ed-ink); color: var(--ed-paper); }

.home-recommendations-section:after { opacity: .35; filter: hue-rotate(45deg) saturate(.7); }
.home-recommendations-section .recommendation-card h3 { color: var(--ed-ink); }
.home-recommendations-section .recommendation-card-body p { color: var(--ed-muted); }
.home-recommendations-section .recommendation-card-footer { border-color: var(--ed-line); color: var(--ed-ink); }

.home-categories-section .category-card { overflow: hidden; }
/* Replace the warm daylight wash with a cool one that suits the indigo surfaces. A fine grain sits over the section
   (and the glass tiles below), so the soft gradients read as a surface instead of banding. */
.home-categories-section {
    --category-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .08 0 0 0 0 .09 0 0 0 0 .22 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.home-categories-section--soft-light {
    background-image: var(--category-grain), var(--home-seam), radial-gradient(ellipse at 92% 8%, #ffffffb3 0, #fff0 58%), radial-gradient(ellipse at 4% 95%, #c9cdf233 0, #c9cdf200 60%);
}
.home-categories-section .category-card { border-radius: 18px; }
.home-categories-section .category-card h3 { color: var(--ed-ink); }
/* Hover takes the category's colour, as the recommendation cards do. */
.home-categories-section .category-card:hover { border-color: color-mix(in srgb, var(--category-accent) 45%, var(--ed-line)); }

/* Fluid glass: soft colour pools drift behind the grid and the tiles frost over them, so the tiles read as tinted
   glass rather than white. The pools sit on two layers that wander on their own paths and timings, so the colours
   flow through each other; only transforms animate, so the blurred layers are drawn once and moved, not redrawn.
   Without backdrop-filter (or with reduced transparency) the tiles stay opaque. */
.home-categories-section .category-grid { position: relative; isolation: isolate; }
.home-categories-section .category-grid::before,
.home-categories-section .category-grid::after {
    content: ''; position: absolute; inset: -56px -72px; z-index: -1; pointer-events: none;
    background-repeat: no-repeat; filter: blur(26px); will-change: transform;
}
.home-categories-section .category-grid::before {
    background:
        radial-gradient(closest-side, #f0798073, #f0798000) 4% 10% / 48% 95% no-repeat,
        radial-gradient(closest-side, #9b7fd673, #9b7fd600) 52% 100% / 46% 95% no-repeat;
    animation: category-fluid-a 13s ease-in-out infinite alternate;
}
.home-categories-section .category-grid::after {
    background:
        radial-gradient(closest-side, #4fb3be66, #4fb3be00) 84% 0% / 46% 95% no-repeat,
        radial-gradient(closest-side, #6f93e066, #6f93e000) 100% 100% / 44% 95% no-repeat;
    animation: category-fluid-b 17s ease-in-out infinite alternate;
}
@keyframes category-fluid-a {
    0%   { transform: translate(-4%, 6%) rotate(0deg) scale(1); }
    35%  { transform: translate(14%, -8%) rotate(14deg) scale(1.12); }
    70%  { transform: translate(30%, 10%) rotate(-6deg) scale(.94); }
    100% { transform: translate(8%, -4%) rotate(20deg) scale(1.08); }
}
@keyframes category-fluid-b {
    0%   { transform: translate(4%, -6%) rotate(0deg) scale(1.05); }
    30%  { transform: translate(-16%, 10%) rotate(-16deg) scale(.92); }
    65%  { transform: translate(-32%, -6%) rotate(8deg) scale(1.15); }
    100% { transform: translate(-10%, 8%) rotate(-22deg) scale(1); }
}
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    .home-categories-section .category-card {
        background: var(--category-grain), #ffffff59; border-color: #ffffffb3;
        -webkit-backdrop-filter: blur(18px) saturate(1.6); backdrop-filter: blur(18px) saturate(1.6);
        box-shadow: inset 0 1px 0 #ffffffe6, 0 10px 28px -16px #1418384d;
    }
    .home-categories-section .category-card:hover { background: var(--category-grain), #ffffff8c; }
}

/* On the glass, under the photo and name: a light that follows the pointer (placed by the script on the page;
   centred along the top edge otherwise), and a pool of the category's own colour that wells up from behind the
   photo on hover and spills just past the tile's edge. */
.home-categories-section .category-card { isolation: isolate; }
.home-categories-section .category-card::before,
.home-categories-section .category-card::after {
    content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; opacity: 0;
}
.home-categories-section .category-card::before {
    z-index: -1;
    background: radial-gradient(circle 110px at var(--glass-x, 50%) var(--glass-y, 0%), #ffffffd9, #ffffff00 72%);
    transition: opacity .3s;
}
.home-categories-section .category-card::after {
    z-index: -2;
    background: radial-gradient(ellipse 160px 110% at 12% 50%, color-mix(in srgb, var(--category-accent) 34%, transparent), transparent 72%);
    transform: scale(.55); transform-origin: 12% 50%;
    transition: opacity .35s, transform .7s var(--ui-ease, ease);
}
[dir="rtl"] .home-categories-section .category-card::after {
    background: radial-gradient(ellipse 160px 110% at 88% 50%, color-mix(in srgb, var(--category-accent) 34%, transparent), transparent 72%);
    transform-origin: 88% 50%;
}
@media (hover: hover) {
    .home-categories-section .category-card:hover::before,
    .home-categories-section .category-card:hover::after { opacity: 1; }
    .home-categories-section .category-card:hover::after { transform: none; }
    .home-categories-section .category-card:hover { box-shadow: inset 0 1px 0 #ffffffe6, 0 14px 30px -14px color-mix(in srgb, var(--category-accent) 55%, transparent); }
}

@media (prefers-reduced-transparency: reduce) {
    .home-categories-section .category-card { background: var(--ed-paper); -webkit-backdrop-filter: none; backdrop-filter: none; }
}
@media (prefers-reduced-motion: reduce) {
    .home-categories-section .category-grid::before, .home-categories-section .category-grid::after { animation: none; }
    .home-categories-section .category-card::after { transition: opacity .35s; transform: none; }
}

/* The footer closes the page as a rounded night sheet, mirroring Featured. */
main > .home-categories-section { padding-bottom: 112px; }
main:has(> .home-discovery-section--sticky) + .iswhere-footer { position: relative; z-index: 1; margin-top: -40px; border-radius: 40px 40px 0 0; }

@media (max-width: 767px) {
    main > :is(.home-dmo-spotlight,.home-featured-section,.home-travel-services-section,.home-recommendations-section,.home-categories-section) { padding: 52px 0; }
    .home-dmo-spotlight .dmo-spotlight-header { flex-direction: column; align-items: flex-start; gap: 20px; margin-bottom: 24px; }
    main:has(> .home-dmo-spotlight) > .home-dmo-spotlight { padding-bottom: 84px; }
    main:has(> .home-dmo-spotlight) > .home-featured-section,
    main:has(> .home-discovery-section--sticky) + .iswhere-footer { margin-top: -28px; border-radius: 28px 28px 0 0; }
    main > .home-categories-section { padding-bottom: 84px; }
    .home-featured-section .home-listing-card { border-radius: 18px; }
    .home-featured-section .home-listing-body { left: 14px; right: 14px; bottom: 14px; }
    .home-featured-section .home-listing-body h3 { font-size: 16px; }
    :is(.home-travel-services-section .travel-service-card, .home-recommendations-section .recommendation-card, .home-categories-section .category-card) { border-radius: 18px; }
}
@media (prefers-reduced-motion: reduce) {
    .dmo-spotlight-pin::after { animation: none; opacity: 0; }
    main > :is(.home-featured-section,.home-recommendations-section) .section-view-all::after { transition: none; }
}

/* Discovery dock: white over the night surfaces (hero, Spotlight, footer), night glass over the day surfaces.
   home-scroll.js sets .is-over-day from what is behind the dock; registered colours let the palettes cross-fade. */
@property --dock-bg { syntax: '<color>'; inherits: true; initial-value: #fff; }
@property --dock-border { syntax: '<color>'; inherits: true; initial-value: #dce5ea; }
@property --dock-ink { syntax: '<color>'; inherits: true; initial-value: #223e4c; }
@property --dock-muted { syntax: '<color>'; inherits: true; initial-value: #647783; }
@property --dock-line { syntax: '<color>'; inherits: true; initial-value: #e1e8ee; }
@property --dock-hover { syntax: '<color>'; inherits: true; initial-value: #f3f7f8; }
@property --dock-pin { syntax: '<color>'; inherits: true; initial-value: #e0f4f1; }
@property --dock-pin-ink { syntax: '<color>'; inherits: true; initial-value: #198e85; }
@property --dock-pin-ring { syntax: '<color>'; inherits: true; initial-value: #fc5b6200; }
@property --dock-map { syntax: '<color>'; inherits: true; initial-value: #19978c; }
@property --dock-map-fill { syntax: '<color>'; inherits: true; initial-value: #def4ee; }
@property --dock-tip-bg { syntax: '<color>'; inherits: true; initial-value: #223e4c; }
@property --dock-tip-ink { syntax: '<color>'; inherits: true; initial-value: #fff; }
@property --dock-ask-hover { syntax: '<color>'; inherits: true; initial-value: #f5f3fc; }
@property --dock-sheen { syntax: '<color>'; inherits: true; initial-value: #fff0; }
@property --dock-shadow { syntax: '<color>'; inherits: true; initial-value: #193b4b2e; }

.home-discovery-section--sticky {
    --dock-bg: #fff; --dock-border: #dce5ea; --dock-ink: #223e4c; --dock-muted: #647783; --dock-line: #e1e8ee; --dock-hover: #f3f7f8;
    --dock-pin: #e0f4f1; --dock-pin-ink: #198e85; --dock-pin-ring: #fc5b6200; --dock-map: #19978c; --dock-map-fill: #def4ee;
    --dock-tip-bg: #223e4c; --dock-tip-ink: #fff; --dock-ask-hover: #f5f3fc; --dock-sheen: #fff0; --dock-shadow: #193b4b2e;
}
.home-discovery-section--sticky.is-over-day {
    --dock-bg: #0d1830db; --dock-border: #ffffff24; --dock-ink: #eef0fb; --dock-muted: #9aa8c4; --dock-line: #ffffff1f; --dock-hover: #ffffff12;
    --dock-pin: #fc5b62; --dock-pin-ink: #fff; --dock-pin-ring: #fc5b6229; --dock-map: #9ee5df; --dock-map-fill: #9ee5df1f;
    --dock-tip-bg: #eef0fb; --dock-tip-ink: #141838; --dock-ask-hover: #8b7cf621; --dock-sheen: #ffffff14; --dock-shadow: #0b1626a6;
}
/* Transitions start after the first measurement, so the dock never fades in from the wrong palette on load. */
.home-discovery-section--sticky.is-dock-ready {
    transition: --dock-bg .5s ease, --dock-border .5s ease, --dock-ink .5s ease, --dock-muted .5s ease, --dock-line .5s ease, --dock-hover .5s ease,
        --dock-pin .5s ease, --dock-pin-ink .5s ease, --dock-pin-ring .5s ease, --dock-map .5s ease, --dock-map-fill .5s ease,
        --dock-tip-bg .5s ease, --dock-tip-ink .5s ease, --dock-ask-hover .5s ease, --dock-sheen .5s ease, --dock-shadow .5s ease;
}
main:has(> .home-discovery-section--sticky) .home-search-card--compact {
    border: 1px solid var(--dock-border); background: var(--dock-bg); color: var(--dock-ink);
    backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4);
    box-shadow: inset 0 1px 0 var(--dock-sheen), 0 24px 48px -22px var(--dock-shadow);
}
.home-search-card--compact .home-discovery-location-btn { color: var(--dock-ink); }
.home-search-card--compact :is(.home-discovery-location-btn, .location-map-btn, .home-direct-search):hover { background: var(--dock-hover); box-shadow: none; }
.home-search-card--compact .home-discovery-label,
.home-search-card--compact .home-discovery-location-btn .current-location-secondary,
.home-search-card--compact .home-near-chevron { color: var(--dock-muted); }
.home-search-card--compact .home-near-pin { background: var(--dock-pin); color: var(--dock-pin-ink); box-shadow: 0 0 0 4px var(--dock-pin-ring); }
.home-search-card--compact .location-switch { border-color: var(--dock-line); background: transparent; color: var(--dock-muted); }
.home-search-card--compact .location-switch:hover { border-color: var(--dock-muted); color: var(--dock-ink); }
.home-search-card--compact .location-switch::after { background: var(--dock-tip-bg); color: var(--dock-tip-ink); }
.home-search-card--compact .home-discovery-search-row::before,
.home-search-card--compact .home-discovery-search-row > * + *::before { background: var(--dock-line); }
.home-search-card--compact .home-direct-search { color: var(--dock-muted); }
.home-search-card--compact .home-direct-search:is(:hover, :focus-visible) { color: var(--dock-ink); background: var(--dock-hover); box-shadow: none; }
.home-search-card--compact :is(.home-ask-launch, .location-map-btn) { color: var(--dock-ink); }
.home-search-card--compact .home-ask-launch:is(:hover, :focus-visible) { background: var(--dock-ask-hover); }
.home-search-card--compact .home-near-map { color: var(--dock-map); fill: var(--dock-map-fill); }
.home-search-card--compact :is(button, a):focus-visible { outline: 2px solid var(--ui-focus); outline-offset: 2px; }
.home-chapter-progress i { background: var(--dock-line); }
@media (max-width: 991px) {
    .home-search-card--compact .home-discovery-search-row { border-top-color: var(--dock-line); }
}

/* Dialogs opened from the dock: pale indigo sheets over a blurred night scrim. Scoped by id, so the Explore page keeps its own look. */
#recommendedAreasModal .recommended-areas-backdrop { background: #0b1626b8; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
#recommendedAreasModal .recommended-areas-dialog { border: 1px solid #fff; background: #f4f5fc; box-shadow: 0 48px 110px -30px #050b1ae6; }
#recommendedAreasModal :is(.recommended-areas-header, .recommended-areas-body) { background: transparent; }
#recommendedAreasModal .recommended-areas-header h3,
#directSearchDialog h2 { color: #141838; font-family: 'Space Grotesk', 'Inter', Arial, sans-serif; font-weight: 600; letter-spacing: -.03em; }
#recommendedAreasModal :is(.recommended-area-head h4, .recommended-panel-title) { color: #141838; font-family: 'Space Grotesk', 'Inter', Arial, sans-serif; font-weight: 600; letter-spacing: -.02em; }
#recommendedAreasModal .recommended-area-head p { color: #5d6385; }
#recommendedAreasModal .recommended-areas-close,
#directSearchDialog [data-direct-search-close] { border: 1px solid #dde0f2; border-radius: 50%; background: #fff; color: #141838; transition: background .2s, color .2s; }
#recommendedAreasModal .recommended-areas-close:hover,
#directSearchDialog [data-direct-search-close]:hover { background: #141838; color: #fff; }
#recommendedAreasModal .recommended-areas-search i { color: #5d6385; }
#recommendedAreasModal .recommended-areas-search input,
#directSearchDialog input { border: 1px solid #dde0f2; border-radius: 14px; background: #fff; color: #141838; box-shadow: none; }
#recommendedAreasModal .recommended-areas-search input:focus,
#directSearchDialog input:focus { border-color: #5b63d6; outline: 0; box-shadow: 0 0 0 4px #5b63d629; }
#recommendedAreasModal :is(.recommended-country-panel, .recommended-area-panel) { border: 1px solid #e4e6f5; border-radius: 20px; background: #fff; box-shadow: none; }
#recommendedAreasModal :is(.recommended-sort-select, .recommended-country-toggle) { border-color: #dde0f2; background-color: #fff; color: #141838; }
#recommendedAreasModal .recommended-country-item { color: #141838; }
#recommendedAreasModal .recommended-country-item:hover { background: #eef0fb; transform: none; }
#recommendedAreasModal .recommended-country-item.is-active { border-color: #141838; background: #141838; color: #fff; box-shadow: 0 14px 28px -16px #1c2266b3; }
#recommendedAreasModal .recommended-country-icon,
#recommendedAreasModal .rec-search-icon { background: #e9ebf8; color: #3f47b8; }
#recommendedAreasModal .recommended-country-name { color: inherit; }
#recommendedAreasModal .recommended-place-secondary { color: #5d6385; }
#recommendedAreasModal .recommended-country-item.is-active .recommended-place-secondary { color: #b9bfe0; }
#recommendedAreasModal .recommended-country-item.is-active .recommended-country-icon { background: #ffffff1f; color: #ff8990; }
#recommendedAreasModal .recommended-country-count { background: #e9ebf8; color: #3f47b8; }
#recommendedAreasModal .recommended-country-item.is-active .recommended-country-count { background: #ffffff1f; color: #fff; }
#recommendedAreasModal .recommended-area-item { border: 1px solid #e4e6f5; background: #fcfcff; color: #141838; box-shadow: none; }
#recommendedAreasModal .recommended-area-item:hover { border-color: #c3c8ea; background: #fff; color: #141838; box-shadow: 0 16px 28px -18px #1c226680; }
#recommendedAreasModal .recommended-area-item i { color: #e5484f; }
#recommendedAreasModal :is(.recommended-area-item small, .recommended-area-item > small) { color: #5d6385; }
#recommendedAreasModal .recommended-search-result:hover { background: #eef0fb; }

#directSearchDialog { padding: 26px; border: 1px solid #fff; border-radius: 28px; background: #f4f5fc; color: #141838; box-shadow: 0 48px 110px -30px #050b1ae6; }
#directSearchDialog::backdrop { background: #0b1626b8; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
#directSearchDialog h2 { font-size: 24px; }
#directSearchDialog input { padding: 14px 16px; }
#directSearchDialog button[type="submit"] { padding: 0 22px; border: 0; border-radius: 14px; background: #141838; color: #fff; font-weight: 600; transition: background .2s; }
#directSearchDialog button[type="submit"]:hover { background: #2a3170; }
#directSearchDialog .direct-search-status,
#directSearchDialog .direct-search-item small { color: #5d6385; }
#directSearchDialog .direct-search-item { border-bottom-color: #e4e6f5; }
#directSearchDialog .direct-search-item > a { color: #141838; }
#directSearchDialog .direct-search-item > a:hover { background: #fff; }
:is(#recommendedAreasModal, #directSearchDialog) :is(button, a, input, select):focus-visible { outline: 2px solid var(--ui-focus); outline-offset: 2px; }

/* assets/css/featured-flow.css */
/* Featured coverflow. Without JS the cards form a plain horizontal scroll row; featured-flow.js adds .is-ready
   and positions every card around the centre one, which leads and sits on top of its neighbours. */
@keyframes featured-flow-shimmer { from { background-position: 150% 0; } to { background-position: -50% 0; } }

.home-featured-section { overflow: clip; }
.featured-flow-track {
    display: grid; grid-auto-flow: column; grid-auto-columns: min(78%, 300px); gap: 16px;
    overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none;
}
.featured-flow-track::-webkit-scrollbar { display: none; }
.featured-flow-track > .featured-flow-card { scroll-snap-align: start; }

/* Photos fade in over a shimmering placeholder once loaded. */
.featured-flow-card .home-listing-image img { opacity: 0; transition: opacity .5s ease; }
.featured-flow-card .home-listing-image.is-loaded img { opacity: 1; }
.featured-flow-card .home-listing-image:not(.is-loaded, .is-image-missing) {
    background: linear-gradient(100deg, #e4e6f5 30%, #f4f5fc 50%, #e4e6f5 70%) 0 0 / 200% 100%;
    animation: featured-flow-shimmer 1.4s linear infinite;
}

.featured-flow-cta {
    display: inline-flex; align-items: center; gap: 8px; margin-inline-start: 12px; vertical-align: middle; color: #fff; font-size: 13px; font-weight: 600; letter-spacing: .04em;
    opacity: 0; transform: translateY(6px); transition: opacity .35s ease, transform .35s ease;
}
.featured-flow-cta svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
[dir="rtl"] .featured-flow-cta svg { transform: scaleX(-1); }

/* Heading-row navigation replaces "View all": a counter and two arrows. */
.featured-flow-nav { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.featured-flow-count { margin-inline-end: 6px; color: var(--ed-muted, #5d6385); font-family: 'Space Grotesk', 'Inter', sans-serif; font-size: 14px; font-weight: 500; font-variant-numeric: tabular-nums; }
.featured-flow-count b { color: var(--ed-ink, #141838); font-size: 22px; font-weight: 600; letter-spacing: -.03em; }
.featured-flow-progress { position: relative; width: min(240px, 50%); height: 2px; margin: 28px auto 0; overflow: hidden; border-radius: 2px; background: var(--ed-line, #dde0f2); }
.featured-flow-progress i { position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(90deg, #3f47b8, #7f87ee); transform-origin: left; transform: scaleX(var(--flow-progress, 0)); transition: transform .4s ease; }
[dir="rtl"] .featured-flow-progress i { transform-origin: right; }

/* Coverflow. */
.featured-flow.is-ready { --flow-w: clamp(250px, 27vw, 340px); }
.featured-flow.is-ready .featured-flow-track {
    display: block; position: relative; height: calc(var(--flow-w) * 1.25); overflow: visible;
    touch-action: pan-y; cursor: grab; user-select: none; -webkit-user-select: none;
}
.featured-flow.is-dragging .featured-flow-track { cursor: grabbing; }
.featured-flow.is-ready .featured-flow-card {
    position: absolute; top: 0; left: 50%; width: var(--flow-w); margin-inline-start: calc(var(--flow-w) / -2);
    visibility: hidden; transition: box-shadow .4s ease; will-change: transform, opacity;
    -webkit-tap-highlight-color: transparent;
}
[dir="rtl"] .featured-flow.is-ready .featured-flow-card { left: auto; right: 50%; }
.featured-flow.is-ready .featured-flow-card.is-near { visibility: visible; }
/* Cards behind the centre are dimmed by an overlay, which is cheaper to animate than a filter. */
.featured-flow.is-ready .featured-flow-card::before {
    content: ''; position: absolute; inset: 0; z-index: 3; border-radius: inherit; pointer-events: none;
    background: #0b1230; opacity: var(--flow-dim, 0);
}
.featured-flow.is-ready .featured-flow-card.is-center { box-shadow: 0 50px 70px -36px #1c2266b3, 0 0 0 1px #ffffff40; }
.featured-flow.is-ready .featured-flow-card:hover { transform: none; }
.featured-flow-card.is-center .home-listing-body p:not(.listing-distance) {
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
    margin: 0 0 12px; color: #ffffffd9; font-size: 13px; line-height: 1.5;
}
.featured-flow-card.is-center .featured-flow-cta { opacity: 1; transform: none; }
.featured-flow-card.is-center .home-listing-body h3 { font-size: 24px; }

@media (max-width: 767px) {
    .featured-flow.is-ready { --flow-w: min(66vw, 280px); }
    .featured-flow-nav { gap: 6px; }
    .featured-flow-count { display: none; }
    .featured-flow-card.is-center .home-listing-body h3 { font-size: 19px; }
    .featured-flow-progress { margin-top: 20px; }
}
@media (prefers-reduced-motion: reduce) {
    .featured-flow-card .home-listing-image img, .featured-flow-cta, .featured-flow-progress i { transition: none; }
    .featured-flow-card .home-listing-image:not(.is-loaded, .is-image-missing) { animation: none; }
}

/* assets/css/home-scroll.css */
/* Homepage scroll motion: the hero recedes into the page, then sections reveal once. Loaded only by pages/home. */
@keyframes home-hero-copy-exit { to { transform: translateY(var(--home-hero-copy-shift)); opacity: 0; } }
@keyframes home-hero-visual-exit { to { transform: translateY(var(--home-hero-visual-shift)) scale(.92); opacity: .2; } }
@keyframes home-hero-veil { to { opacity: 1; } }
@keyframes home-reveal { from { opacity: 0; transform: translateY(var(--home-reveal-shift)); } }

/* The veil melts the hero into the surface that follows: the Spotlight night band, or pale indigo without it. */
.home-hero { --home-veil: #f4f5fc; }
main:has(> .home-dmo-spotlight) .home-hero { --home-veil: #0b1626; }
.home-hero::after {
    content: ''; position: absolute; inset: auto 0 0; z-index: 3; height: 50%; pointer-events: none; opacity: 0;
    background: linear-gradient(0deg, var(--home-veil) 0, color-mix(in srgb, var(--home-veil) 70%, #0000) 30%, #0000 100%);
}

@media (prefers-reduced-motion: no-preference) {
    .home-hero {
        --home-hero-copy-shift: -88px; --home-hero-visual-shift: 120px;
        view-timeline: --home-hero block;
        /* Measure from under the sticky header, so the effect starts with the first scroll. */
        view-timeline-inset: var(--iw-header-height, 64px) 0;
    }
    .home-hero :is(.home-hero-content, .iw-city-hero, .travel-service-hero-visual),
    .home-hero::after { animation: 1s linear both; }
    .home-hero .home-hero-content { animation-name: home-hero-copy-exit; }
    .home-hero :is(.iw-city-hero, .travel-service-hero-visual) { animation-name: home-hero-visual-exit; transform-origin: 50% 100%; }
    .home-hero::after { animation-name: home-hero-veil; animation-timing-function: cubic-bezier(.45, 0, .7, .6); }

    @supports (animation-timeline: view()) {
        .home-hero :is(.home-hero-content, .iw-city-hero, .travel-service-hero-visual),
        .home-hero::after { animation-timeline: --home-hero; animation-range: exit-crossing 0% exit-crossing 100%; }
    }
    /* Without scroll timelines, home-scroll.js writes the same progress into a paused delay. */
    @supports not (animation-timeline: view()) {
        .home-hero :is(.home-hero-content, .iw-city-hero, .travel-service-hero-visual),
        .home-hero::after { animation-play-state: paused; animation-delay: calc(var(--home-hero-exit, 0) * -1s); }
    }

    main { --home-reveal-shift: 20px; }
    .home-reveal:not(.is-revealed) { opacity: 0; }
    .home-reveal:not(.is-revealed):focus-within { opacity: 1; }
    /* Backwards fill only, so hover transforms on cards work as soon as the reveal ends. */
    .home-reveal.is-revealed { animation: home-reveal .7s cubic-bezier(.2, .7, .2, 1) var(--home-reveal-delay, 0ms) backwards; }

    @media (max-width: 991px) {
        .home-hero { --home-hero-copy-shift: -48px; --home-hero-visual-shift: 64px; }
        main { --home-reveal-shift: 14px; }
    }
}

/* Page chapters: sections are numbered in page order (styled in home-editorial.css), and the compact dock carries
   segmented progress coloured like the hero's chapter bar. */
main { counter-reset: home-chapter; }
main > :is(.home-dmo-spotlight,.home-featured-section,.home-travel-services-section,.home-recommendations-section,.home-categories-section) { counter-increment: home-chapter; }
.home-discovery-section--sticky .home-discovery-card { position: relative; }
.home-chapter-progress { position: absolute; inset-inline: 20px; bottom: 3px; display: flex; gap: 4px; height: 2px; opacity: 0; pointer-events: none; transition: opacity .25s ease; }
.home-discovery-section--sticky.is-compact .home-chapter-progress { opacity: 1; }
.home-chapter-progress i { position: relative; flex: 1; overflow: hidden; border-radius: 2px; }
.home-chapter-progress i::after {
    content: ''; position: absolute; inset: 0; border-radius: inherit; transform-origin: left; transform: scaleX(var(--fill, 0));
    background: linear-gradient(90deg, #ff8990, #ffc0a8);
}
[dir="rtl"] .home-chapter-progress i::after { transform-origin: right; }
/* Recommendations and categories open on the map, so the entry points at it while they are in view. */
.home-discovery-section--sticky.is-compact.is-map-context .location-map-btn { color: var(--dock-map, #19978c); background: color-mix(in srgb, var(--dock-map, #19978c) 12%, #0000); }
@media (prefers-reduced-motion: no-preference) {
    .home-discovery-section--sticky.is-compact.is-map-context .location-map-btn .home-near-map { animation: home-near-map-lift .65s ease-in-out; }
}
@media (prefers-reduced-motion: reduce) {
    .home-chapter-progress { transition: none; }
}

/* Photos drift inside their frames as they cross the viewport. Without scroll timelines they simply stay still. */
@keyframes home-photo-drift { from { translate: 0 -6%; } to { translate: 0 6%; } }
@supports (animation-timeline: view()) {
    @media (prefers-reduced-motion: no-preference) {
        /* Featured photos are left out: the coverflow already moves them. */
        .home-categories-section .category-card-image { view-timeline: --home-photo block; }
        .home-categories-section .category-card-image > img {
            scale: 1.14; animation: home-photo-drift linear both; animation-timeline: --home-photo; animation-range: cover;
        }
    }
}

/* assets/css/home-slider.css */
/* Homepage row slider: a card grid becomes a native horizontal scroller once it holds more than one row's worth.
   Blade marks where that happens (.is-slider-lg desktop, -md tablet, -sm phone); home-slider.js adds arrows, mouse drag
   and progress. Native scrolling keeps touch swipes and momentum smooth, and cards off to the side skip rendering. */
.home-slider-nav { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.home-slider-nav[hidden], .home-slider-progress[hidden] { display: none; }
.home-slider-progress { position: relative; width: min(240px, 50%); height: 2px; margin: 20px auto 0; overflow: hidden; border-radius: 2px; background: var(--ui-line, #dde0f2); }
.home-slider-progress i {
    position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(90deg, #3f47b8, #7f87ee);
    transform-origin: left; transform: translateX(var(--slider-start, 0%)) scaleX(var(--slider-size, 1));
}
[dir="rtl"] .home-slider-progress i { transform-origin: right; transform: translateX(calc(var(--slider-start, 0%) * -1)) scaleX(var(--slider-size, 1)); }

/* The scroller applies only at the breakpoints Blade asked for: one block each, identical apart from the selector and
   column count. Its padding and matching negative margin keep card shadows and hover lifts from being clipped. */
@media (min-width: 992px) {
    .home-recommendations-section .home-recommendation-grid.is-slider-lg {
        --slider-columns: 4; --slider-gap: 18px;
        grid-template-columns: none; grid-auto-flow: column;
        grid-auto-columns: calc((100% - (var(--slider-columns) - 1) * var(--slider-gap)) / var(--slider-columns));
        gap: var(--slider-gap); overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory;
        padding: 6px 4px 28px; margin: -6px -4px -28px; scroll-padding-inline: 4px; scrollbar-width: none;
    }
}
@media (min-width: 768px) and (max-width: 991px) {
    .home-recommendations-section .home-recommendation-grid.is-slider-md {
        --slider-columns: 2.2; --slider-gap: 16px;
        grid-template-columns: none; grid-auto-flow: column;
        grid-auto-columns: calc((100% - 2 * var(--slider-gap)) / var(--slider-columns));
        gap: var(--slider-gap); overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory;
        padding: 6px 4px 28px; margin: -6px -4px -28px; scroll-padding-inline: 4px; scrollbar-width: none;
    }
}
@media (max-width: 767px) {
    .home-recommendations-section .home-recommendation-grid.is-slider-sm {
        --slider-columns: 1.15; --slider-gap: 12px;
        grid-template-columns: none; grid-auto-flow: column;
        grid-auto-columns: calc((100% - var(--slider-gap)) / var(--slider-columns));
        gap: var(--slider-gap); overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory;
        padding: 6px 4px 28px; margin: -6px -4px -28px; scroll-padding-inline: 4px; scrollbar-width: none;
    }
}
.home-recommendation-grid[data-home-slider]::-webkit-scrollbar { display: none; }
.home-recommendation-grid[data-home-slider] > .recommendation-card {
    scroll-snap-align: start;
    /* Cards scrolled out of view are not laid out or painted until they come back. */
    content-visibility: auto; contain-intrinsic-size: auto 260px;
}
/* Touch devices swipe the row natively, sideways or past it vertically; iOS keeps its momentum. */
.home-recommendation-grid.is-scrollable { touch-action: pan-x pan-y; -webkit-overflow-scrolling: touch; }
/* With a mouse the row shows it can be grabbed, cards included, since a drag on a card moves the row. */
@media (hover: hover) and (pointer: fine) {
    .home-recommendation-grid.is-scrollable, .home-recommendation-grid.is-scrollable > * { cursor: grab; }
    .home-recommendation-grid.is-dragging, .home-recommendation-grid.is-dragging > * { cursor: grabbing; }
}
/* While the mouse drags, snapping waits until release so the row follows the pointer exactly. This must outrank the
   per-breakpoint scroller rules above; otherwise every move snaps back to a card and the row only swaps content in place. */
.home-recommendations-section .home-recommendation-grid.is-dragging { scroll-snap-type: none; scroll-behavior: auto; user-select: none; -webkit-user-select: none; }
.home-recommendation-grid.is-dragging > * { pointer-events: none; }

/* assets/css/home-controls.css */
/* Homepage controls: one system for buttons, chips, icons and focus across every small component on the page.
   Loaded only by pages/home, last, so it can harmonise the section and component stylesheets before it.

   Sizes   icon button 44px circle · text button 44px pill, 14px/600 · form controls 48px
   Kinds   primary (indigo ink) · secondary (hairline, fills with ink) · glass (night surfaces, photos) · accent (coral, one conversion CTA)
   Motion  press scales to .96 · arrows nudge 3px on hover · one indigo focus ring, lightened on night surfaces */
:root {
    --ui-ink: #141838; --ui-ink-hover: #2a3170; --ui-line: #dde0f2; --ui-tint: #e9ebf8; --ui-tint-ink: #3f47b8;
    --ui-accent: #e5484f; --ui-accent-hover: #d23a41;
    --ui-focus: #4f57d8;
    --ui-ease: cubic-bezier(.2, .7, .2, 1);
}
.home-hero, .home-dmo-spotlight, .iswhere-footer, .home-discovery-section--sticky.is-over-day { --ui-focus: #a3a9ff; }

/* Focus: the same ring everywhere. */
:is(main, .iswhere-footer) :is(a, button, select, input, [tabindex]):focus-visible,
.iw-city-hero :is(button, a, canvas):focus-visible { outline: 2px solid var(--ui-focus); outline-offset: 2px; }
.dmo-stage .dmo-stage-link:focus-visible { outline-offset: -6px; }

/* Icons drawn inline share one stroke. */
.iw-icon { width: 18px; height: 18px; flex-shrink: 0; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
[dir="rtl"] :is(.travel-service-compact-action, .travel-service-action, .recommendation-card-arrow) .iw-icon { transform: scaleX(-1); }

/* Press feedback for every button-like control. */
:is(.iw-btn, .hero-store-badges a, .hero-carousel-btn, .dmo-stage-btn, .featured-flow-btn, .home-slider-btn:not(:disabled), .travel-service-compact-action,
    .home-search-card--compact .location-switch, .home-search-card--compact .home-direct-search, #directSearchDialog button):active {
    transform: scale(.96);
}

/* Icon buttons. */
:is(.featured-flow-btn, .home-slider-btn) {
    display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 1px solid var(--ui-line); border-radius: 50%;
    background: #fff; color: var(--ui-ink); transition: background .2s, color .2s, border-color .2s, opacity .2s, transform .15s var(--ui-ease);
}
:is(.featured-flow-btn, .home-slider-btn):hover:not(:disabled) { border-color: var(--ui-ink); background: var(--ui-ink); color: #fff; }
:is(.featured-flow-btn, .home-slider-btn) svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
[dir="rtl"] :is(.featured-flow-btn, .home-slider-btn) svg { transform: scaleX(-1); }
.home-slider-btn:disabled { opacity: .35; cursor: default; }
.dmo-stage-btn { transition: background .2s, border-color .2s, transform .15s var(--ui-ease); }
#recommendedAreasModal .recommended-areas-close,
#directSearchDialog [data-direct-search-close] { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; }
/* The dock's search control is an icon button like its neighbours, not a stretched blank tile. */
.home-search-card--compact .home-direct-search { flex: 0 0 44px; width: 44px; height: 44px; min-width: 0; align-self: center; border-radius: 50%; }
.home-search-card--compact .home-direct-search svg { width: 20px; height: 20px; }

/* The dock hugs its contents on wide screens, so no dead space trails after Map View; max-width still caps it. */
@media (min-width: 992px) {
    .home-discovery-card.home-search-card--compact { width: fit-content; }
}

/* Phones: the dock is a size smaller, and its action row shares the full width like a tab bar,
   so nothing trails after Map View. Touch targets stay at 40px or more. */
@media (max-width: 767px) {
    .home-discovery-card.home-search-card--compact { padding: 8px; }
    .home-search-card--compact .home-discovery-location-btn { min-height: 56px; padding: 6px 8px; gap: 10px; }
    .home-search-card--compact .home-near-pin { flex-basis: 36px; width: 36px; height: 36px; }
    .home-search-card--compact .home-near-value { font-size: 16px; }
    .home-search-card--compact .home-discovery-label { font-size: 11px; }
    .home-search-card--compact .location-switch { flex-basis: 40px; width: 40px; height: 40px; }
    .home-search-card--compact .home-discovery-search-row { gap: 6px; }
    .home-search-card--compact .home-direct-search { flex-basis: 40px; width: 40px; height: 40px; }
    .home-search-card--compact :is(.home-ask-launch, .location-map-btn) { flex: 1 1 0; justify-content: center; min-width: 0; max-width: none; min-height: 48px; padding: 6px 8px; }
    .home-search-card--compact .home-ask-launch img { flex-basis: 28px; width: 28px; height: 28px; }

    .home-discovery-section--sticky.is-compact .home-discovery-card { padding: 5px; }
    .home-discovery-section--sticky.is-compact .home-discovery-location-btn { min-height: 44px; padding: 2px 6px; gap: 8px; }
    .home-discovery-section--sticky.is-compact .home-near-pin { flex-basis: 30px; width: 30px; height: 30px; }
    .home-discovery-section--sticky.is-compact .home-near-value { font-size: 15px; }
    .home-discovery-section--sticky.is-compact .home-discovery-label { font-size: 10.5px; }
    .home-discovery-section--sticky.is-compact :is(.home-ask-launch, .location-map-btn) { min-height: 40px; padding: 2px 8px; }
    .home-discovery-section--sticky.is-compact .home-ask-launch img { flex-basis: 24px; width: 24px; height: 24px; }
    .home-discovery-section--sticky.is-compact .home-near-map { width: 20px; height: 20px; }
}

/* Text buttons. */
.home-app-slide .hero-app-how .iw-btn-glass { gap: 8px; min-height: 44px; padding: 0 20px; font-size: 14px; font-weight: 600; letter-spacing: .01em; }
.travel-service-compact-action {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 0 20px;
    font-size: 14px; font-weight: 600; transition: background .2s, color .2s, transform .15s var(--ui-ease);
}
.travel-service-compact-action .iw-icon { transition: transform .3s var(--ui-ease); }
.travel-service-card:hover .travel-service-compact-action { background: var(--ui-ink); color: #fff; }
.travel-service-card:hover .travel-service-compact-action .iw-icon { transform: translateX(3px); }
#directSearchDialog input { min-height: 48px; }
#directSearchDialog button[type="submit"] { min-height: 48px; padding: 0 24px; font-size: 14px; }
#directSearchDialog button[type="submit"]:hover { background: var(--ui-ink-hover); }

/* Primary on night surfaces inverts to white with ink text; coral stays reserved for the footer conversion. */
.home-hero-travel-service .hero-actions .iw-btn-primary {
    min-height: 44px; padding: 0 22px; background: #fff; box-shadow: none; color: var(--ui-ink) !important; font-size: 14px; font-weight: 600;
}
.home-hero-travel-service .hero-actions .iw-btn-primary:hover { background: #e9ebf8; color: var(--ui-ink) !important; }
.home-hero-travel-service .travel-service-hero-kicker { height: 30px; padding: 0 12px; font-size: 11px; font-weight: 600; letter-spacing: .14em; }

/* Hero: store badges share one height and lift together; the carousel controls sit in one cluster under the copy. */
.hero-store-badges { gap: 12px; }
.hero-store-badges a { border-radius: 10px; transition: transform .2s var(--ui-ease), opacity .2s; }
.hero-store-badges img { height: 46px; }
.hero-carousel-nav { position: absolute; inset: auto 0 84px; z-index: 6; pointer-events: none; }
.hero-carousel-nav .container { display: flex; align-items: center; gap: 14px; }
.hero-carousel-nav .container > * { pointer-events: auto; }
.home-hero-slider .hero-carousel-nav .hero-carousel-btn {
    position: static; display: grid; place-items: center; flex: 0 0 44px; width: 44px; height: 44px; padding: 0;
    border: 1px solid #ffffff38; border-radius: 50%; background: #ffffff14; color: #fff; opacity: 1; transform: none;
    backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); transition: background .2s, border-color .2s, transform .15s var(--ui-ease);
}
.home-hero-slider .hero-carousel-nav .hero-carousel-btn:hover { border-color: #ffffff6b; background: #ffffff29; }
.home-hero-slider .hero-carousel-nav .hero-carousel-btn:active { transform: scale(.96); }
.hero-carousel-btn svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
[dir="rtl"] .hero-carousel-btn svg { transform: scaleX(-1); }
/* Slide pills: the active one stretches, echoing the story bars and chapter progress elsewhere. */
.home-hero-slider .hero-carousel-nav .carousel-indicators { position: static; z-index: auto; display: flex; align-items: center; gap: 6px; margin: 0; padding: 0; }
.home-hero-slider .hero-carousel-nav .carousel-indicators [data-bs-target] {
    position: relative; box-sizing: border-box; flex: 0 0 auto; width: 8px; height: 8px; margin: 0; padding: 0; border: 0; border-radius: 999px;
    background: #ffffff59; background-clip: border-box; opacity: 1; text-indent: -999px; transition: width .45s var(--ui-ease), background-color .3s;
}
.home-hero-slider .hero-carousel-nav .carousel-indicators [data-bs-target]::before { content: ''; position: absolute; inset: -18px -4px; }
.home-hero-slider .hero-carousel-nav .carousel-indicators .active { width: 28px; background: #fff; }

/* Chips: tint chips label content; glass chips sit on photographs. */
.travel-service-compact-copy .travel-service-eyebrow,
.home-recommendations-section .recommendation-label {
    display: inline-flex; align-items: center; height: 24px; margin: 0 0 10px; padding: 0 10px; border: 0; border-radius: 999px;
    background: var(--ui-tint); color: var(--ui-tint-ink); font-size: 10.5px; font-weight: 600; letter-spacing: .14em; line-height: 1; text-transform: uppercase; white-space: nowrap;
}
/* Category names can outgrow the space beside the icon ("Entertainment & Nightlife"): the chip wraps to a second line
   instead of clipping, and drops below the icon when even one word will not fit beside it. */
.home-recommendations-section .recommendation-card-top { flex-wrap: wrap; }
.home-recommendations-section .recommendation-label {
    margin: 0; background: color-mix(in srgb, var(--recommendation-accent) 12%, #fff); color: color-mix(in srgb, var(--recommendation-accent) 72%, var(--ui-ink));
    height: auto; min-height: 24px; padding-block: 5px; line-height: 1.3; white-space: normal; text-align: start;
    flex: 1 1 0; min-width: min-content; max-width: max-content;
}
.home-featured-section .listing-distance { height: 26px; align-items: center; padding: 0 10px; font-size: 12px; line-height: 1; }
main:has(> .home-discovery-section--sticky) + .iswhere-footer .footer-chip-link {
    display: inline-flex; align-items: center; height: 28px; min-height: 0; padding: 0 12px; font-size: 12px; font-weight: 600; letter-spacing: .02em; line-height: 1;
}
/* home.css transitions "all" here, which would also animate the focus ring in from the text colour. */
main:has(> .home-discovery-section--sticky) + .iswhere-footer .footer-chip-link { transition: background .2s, color .2s, transform .2s, box-shadow .2s; }
main:has(> .home-discovery-section--sticky) + .iswhere-footer .iw-chip-blue { border-color: #7c83f547; background: #7c83f51f; color: #b9bdff; }
main:has(> .home-discovery-section--sticky) + .iswhere-footer .iw-chip-blue:hover { background: #7c83f533; color: #d4d6ff; }
/* The footer's merchant registration is the page's one accent button. */
main:has(> .home-discovery-section--sticky) + .iswhere-footer .iw-btn-primary {
    min-height: 44px; padding: 0 22px; background: var(--ui-accent); box-shadow: 0 14px 28px -14px #e5484fb3; font-size: 14px; font-weight: 600;
}
main:has(> .home-discovery-section--sticky) + .iswhere-footer .iw-btn-primary:hover { background: var(--ui-accent-hover); transform: translateY(-1px); }

/* Recommendations: the arrow is a small icon button that fills and nudges with the card. */
.home-recommendations-section .recommendation-card-footer { font-size: 13px; font-weight: 600; letter-spacing: .02em; }
.recommendation-card-arrow {
    display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--ui-tint); color: var(--ui-ink);
    transition: background .25s, color .25s, transform .3s var(--ui-ease);
}
.recommendation-card-arrow .iw-icon { width: 16px; height: 16px; }
.home-recommendations-section .recommendation-card:hover .recommendation-card-arrow { background: var(--ui-ink); color: #fff; transform: translateX(3px); }
[dir="rtl"] .home-recommendations-section .recommendation-card:hover .recommendation-card-arrow { transform: translateX(-3px); }
/* Each card takes its category's colour: it rises out of the white from the top corner, behind a watermark of the
   category icon, and spreads further on hover. The card isolates, so the wash sits under its content. */
.home-recommendations-section .recommendation-card { overflow: hidden; }
.home-recommendations-section .recommendation-card:hover { border-color: color-mix(in srgb, var(--recommendation-accent) 45%, var(--ed-line)); }
.recommendation-wash {
    position: absolute; inset: 0; z-index: -1; pointer-events: none;
    background: radial-gradient(circle at 100% 0,
        color-mix(in srgb, var(--recommendation-accent) 26%, transparent) 0,
        color-mix(in srgb, var(--recommendation-accent) 10%, transparent) 130px,
        transparent 260px);
    transform-origin: 100% 0; transition: transform .6s var(--ui-ease);
}
.recommendation-wash img {
    position: absolute; top: -16px; right: -18px; width: 112px; height: 112px;
    opacity: .13; transform: rotate(-12deg); transition: transform .6s var(--ui-ease), opacity .3s;
}
[dir="rtl"] .recommendation-wash {
    transform-origin: 0 0;
    background: radial-gradient(circle at 0 0,
        color-mix(in srgb, var(--recommendation-accent) 26%, transparent) 0,
        color-mix(in srgb, var(--recommendation-accent) 10%, transparent) 130px,
        transparent 260px);
}
[dir="rtl"] .recommendation-wash img { right: auto; left: -18px; }
.home-recommendations-section .recommendation-card:hover .recommendation-wash { transform: scale(1.35); }
.home-recommendations-section .recommendation-card:hover .recommendation-wash img { opacity: .2; transform: rotate(-4deg) scale(.82); }
.home-recommendations-section .recommendation-card:hover .recommendation-card-arrow { background: color-mix(in srgb, var(--recommendation-accent) 82%, var(--ui-ink)); }
/* A single recommendation reads as one row: icon, then label over title and copy, then the action. */
.home-recommendations-section .home-recommendation-grid[data-count="1"] .recommendation-card {
    display: grid; grid-template-columns: 56px minmax(0, 1fr) auto; grid-template-areas: "icon label cta" "icon body cta";
    align-items: center; column-gap: 24px; row-gap: 8px; padding: 24px 28px;
}
.home-recommendations-section .home-recommendation-grid[data-count="1"] .recommendation-card-top { display: contents; }
.home-recommendations-section .home-recommendation-grid[data-count="1"] .recommendation-icon { grid-area: icon; }
.home-recommendations-section .home-recommendation-grid[data-count="1"] .recommendation-label { grid-area: label; align-self: end; justify-self: start; }
.home-recommendations-section .home-recommendation-grid[data-count="1"] .recommendation-card-body { grid-area: body; align-self: start; }
.home-recommendations-section .home-recommendation-grid[data-count="1"] .recommendation-card-body h3 { margin-bottom: 4px; }
.home-recommendations-section .home-recommendation-grid[data-count="1"] .recommendation-card-footer { grid-area: cta; gap: 12px; margin: 0; padding: 0; border: 0; }


@media (max-width: 991px) {
    /* Phones and tablets swipe the hero; only the slide pills remain, centred above the dock. */
    .hero-carousel-nav { bottom: 34px; }
    .hero-carousel-nav .container { justify-content: center; }
    .home-hero-slider .hero-carousel-nav .hero-carousel-btn { display: none; }
}
@media (max-width: 767px) {
    .hero-store-badges img { height: 42px; }
    .home-recommendations-section .home-recommendation-grid[data-count="1"] .recommendation-card {
        grid-template-columns: 48px minmax(0, 1fr); grid-template-areas: "icon label" "icon body" "cta cta"; padding: 20px;
    }
    .home-recommendations-section .home-recommendation-grid[data-count="1"] .recommendation-icon { width: 48px; height: 48px; }
    .home-recommendations-section .home-recommendation-grid[data-count="1"] .recommendation-card-footer { justify-content: space-between; padding-top: 14px; border-top: 1px solid var(--ui-line); }
}
@media (prefers-reduced-motion: reduce) {
    :is(.iw-btn, .hero-store-badges a, .hero-carousel-btn, .dmo-stage-btn, .featured-flow-btn, .travel-service-compact-action,
        .home-search-card--compact .location-switch, .home-search-card--compact .home-direct-search, #directSearchDialog button):active { transform: none; }
    .home-hero-slider .hero-carousel-nav .carousel-indicators [data-bs-target], .recommendation-card-arrow,
    .recommendation-wash, .recommendation-wash img, .travel-service-compact-action .iw-icon { transition: none; }
}

