@font-face {
  font-family: "Manrope";
  src: url("/assets/fonts/manrope-latin.woff2") format("woff2");
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
}

/* Complete lodging profiles: editorial first, booking second. */
.lodging-detail-page { background: var(--paper); }
.lodging-detail-hero { padding: clamp(1.4rem, 3vw, 2.5rem) 0 1rem; border-bottom: 1px solid var(--line); }
.lodging-detail-heading { display: grid; gap: 1.25rem; align-items: end; margin-bottom: 1.4rem; }
.lodging-detail-heading h1 { max-width: 54rem; font-family: var(--serif); font-size: clamp(2.55rem, 5vw, 4rem); font-weight: 650; letter-spacing: -.045em; line-height: .98; overflow-wrap: normal; word-break: normal; hyphens: none; }
.lodging-detail-heading > div:first-child > p:last-child { max-width: 44rem; margin: 1rem 0 0; color: var(--ink-soft); font-size: clamp(.98rem, 1.7vw, 1.15rem); }
.lodging-score { width: fit-content; display: grid; grid-template-columns: auto auto; align-items: baseline; gap: 0 .4rem; padding: .85rem 1rem; border: 1px solid var(--line); background: var(--surface-soft); }
.lodging-score strong { font-family: var(--serif); font-size: 2.2rem; font-weight: 600; line-height: 1; }
.lodging-score span { color: var(--ink-soft); font-size: .72rem; font-weight: 750; }
.lodging-score small { grid-column: 1 / -1; margin-top: .25rem; color: var(--ink-soft); font-size: .65rem; }
.lodging-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem; overflow: hidden; background: var(--line); }
.lodging-gallery figure { min-width: 0; margin: 0; overflow: hidden; background: var(--surface-soft); }
.lodging-gallery-main { grid-column: 1 / -1; }
.lodging-gallery img { width: 100%; height: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.lodging-gallery-main img { aspect-ratio: 16 / 10; }
.lodging-image-credit { margin: .55rem 0 0; color: var(--ink-soft); font-size: .66rem; }

.lodging-detail-layout { display: grid; gap: 2rem; align-items: start; }
.lodging-detail-main { min-width: 0; }
.lodging-fact-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border: 1px solid var(--line); border-bottom: 0; }
.lodging-fact-grid > div { min-width: 0; padding: .9rem; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.lodging-fact-grid > div:nth-child(2n) { border-right: 0; }
.lodging-fact-grid dt { color: var(--ink-soft); font-size: .65rem; font-weight: 750; text-transform: uppercase; letter-spacing: .06em; overflow-wrap: anywhere; }
.lodging-fact-grid dd { display: grid; gap: .15rem; margin: .35rem 0 0; font-size: .78rem; }
.lodging-fact-grid dd strong { font-size: .9rem; }
.lodging-fact-grid dd small { color: var(--ink-soft); }
.lodging-prose { max-width: 48rem; margin-top: clamp(2.4rem, 5vw, 4.2rem); }
.lodging-prose h2 { font-family: var(--serif); font-size: clamp(2rem, 4vw, 3.25rem); font-weight: 520; }
.lodging-prose p:not(.eyebrow) { margin: 1rem 0 0; color: var(--ink-soft); font-size: clamp(.94rem, 1.3vw, 1.05rem); line-height: 1.75; }
.lodging-prose .lodging-provider-note { padding-top: .8rem; border-top: 1px solid var(--line); font-size: .68rem; }
.lodging-provider-description { margin-top: 1.25rem; border-block: 1px solid var(--line); }
.lodging-provider-description summary { min-height: var(--tap-target); display: flex; align-items: center; justify-content: space-between; gap: 1rem; color: var(--moss); font-size: .82rem; font-weight: 750; cursor: pointer; list-style: none; }
.lodging-provider-description summary::-webkit-details-marker { display: none; }
.lodging-provider-description summary::after { content: "+"; font-family: var(--sans); font-size: 1.2rem; font-weight: 500; }
.lodging-provider-description[open] summary::after { content: "−"; }
.lodging-provider-description > div { padding: 0 0 1.25rem; }
.lodging-booking-panel { display: grid; gap: .9rem; padding: 1.15rem; border: 1px solid var(--line); background: var(--surface-soft); }
.lodging-booking-panel .eyebrow { margin: 0; }
.lodging-booking-panel h2 { font-family: var(--serif); font-size: 1.65rem; font-weight: 520; }
.lodging-booking-panel > p:not(.eyebrow) { margin: 0; color: var(--ink-soft); font-size: .74rem; }
.lodging-booking-panel .button { width: 100%; }
.lodging-booking-panel .text-link { width: fit-content; }
.lodging-booking-panel > small { color: var(--ink-soft); font-size: .62rem; line-height: 1.5; }
.lodging-detail-rate:empty { display: none; }
.lodging-detail-rate.rate-badge { width: fit-content; font-size: .95rem; }

.lodging-facility-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; margin: 0; padding: 0; border-top: 1px solid var(--line); list-style: none; }
.lodging-facility-grid li { min-height: 3.25rem; display: flex; align-items: center; gap: .7rem; padding: .7rem .25rem; border-bottom: 1px solid var(--line); color: var(--ink-soft); font-size: .78rem; }
.lodging-facility-grid li::before { content: "✓"; flex: 0 0 auto; width: 1.35rem; height: 1.35rem; display: grid; place-items: center; border-radius: 50%; background: var(--moss-soft); color: var(--moss-dark); font-size: .65rem; font-weight: 850; }
.lodging-more { margin-top: 1.25rem; border-top: 1px solid var(--line); }
.lodging-more summary { min-height: var(--tap-target); display: flex; align-items: center; justify-content: space-between; padding: .75rem 0; color: var(--moss); font-size: .78rem; font-weight: 750; cursor: pointer; list-style: none; }
.lodging-more summary::-webkit-details-marker { display: none; }
.lodging-more summary::after { content: "+"; width: 1.8rem; height: 1.8rem; display: grid; place-items: center; border: 1px solid var(--line); }
.lodging-more[open] summary::after { content: "−"; }

.lodging-room-grid { display: grid; gap: .7rem; }
.lodging-room-card { display: grid; align-content: start; gap: .85rem; min-width: 0; padding: 1rem; border: 1px solid var(--line); background: var(--white); }
.lodging-room-top { display: grid; grid-template-columns: 1fr auto; gap: 1rem; align-items: start; }
.lodging-room-top h3 { font-family: var(--serif); font-size: 1.25rem; font-weight: 550; overflow-wrap: anywhere; }
.lodging-room-top span { padding: .25rem .45rem; background: var(--surface-soft); color: var(--moss); font-size: .7rem; font-weight: 750; white-space: nowrap; }
.lodging-room-facts { display: flex; flex-wrap: wrap; gap: .45rem 1rem; margin: 0; padding: 0; color: var(--ink); font-size: .72rem; font-weight: 700; list-style: none; }
.lodging-room-card > p { margin: 0; color: var(--ink-soft); font-size: .69rem; line-height: 1.55; }

.lodging-sentiment-section { background: var(--ink); color: var(--white); }
.lodging-sentiment-layout { display: grid; gap: 2rem; }
.lodging-sentiment-layout .eyebrow { color: var(--moss-soft); }
.lodging-sentiment-layout h2 { max-width: 35rem; font-family: var(--serif); font-size: clamp(2rem, 4vw, 3.25rem); font-weight: 520; }
.lodging-sentiment-layout > div > p:last-child { max-width: 34rem; margin: 1rem 0 0; color: var(--moss-soft); font-size: .8rem; }
.lodging-sentiment-list { margin: 0; }
.lodging-sentiment-list > div { display: grid; grid-template-columns: minmax(7rem, .8fr) 1.2fr; gap: 1rem; align-items: center; min-height: 3rem; border-bottom: 1px solid rgb(255 255 255 / .18); }
.lodging-sentiment-list dt { font-size: .74rem; }
.lodging-sentiment-list dd { display: grid; grid-template-columns: 1fr 2rem; gap: .7rem; align-items: center; margin: 0; }
.lodging-sentiment-list meter { width: 100%; height: .45rem; border: 0; background: rgb(255 255 255 / .2); }
.lodging-sentiment-list meter::-webkit-meter-bar { height: .45rem; border: 0; border-radius: 0; background: rgb(255 255 255 / .2); }
.lodging-sentiment-list meter::-webkit-meter-optimum-value { background: var(--gold); }
.lodging-sentiment-list meter::-moz-meter-bar { background: var(--gold); }
.lodging-sentiment-list strong { font-size: .75rem; text-align: right; }

.lodging-practical-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.lodging-practical-grid > div { min-width: 0; padding: .9rem; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.lodging-practical-grid dt { color: var(--ink-soft); font-size: .65rem; font-weight: 750; text-transform: uppercase; letter-spacing: .06em; }
.lodging-practical-grid dd { margin: .3rem 0 0; font-size: .84rem; font-weight: 700; overflow-wrap: anywhere; }
.lodging-important { max-width: 52rem; margin-top: 2rem; padding: 1rem; border-left: 3px solid var(--rust); background: var(--surface-soft); }
.lodging-important h3 { font-family: var(--serif); font-size: 1.2rem; font-weight: 600; }
.lodging-important p { margin: .7rem 0 0; color: var(--ink-soft); font-size: .75rem; }
.lodging-location-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; margin-top: 1.5rem; }
.lodging-source-section { padding-block: 2.25rem; border-top: 1px solid var(--line); background: var(--sky); }
.lodging-source-card { display: grid; gap: 1.5rem; }
.lodging-source-card h2 { font-family: var(--serif); font-size: clamp(1.65rem, 3vw, 2.35rem); font-weight: 520; }
.lodging-source-card dl { display: grid; margin: 0; }
.lodging-source-card dl > div { padding: .7rem 0; border-bottom: 1px solid var(--line); }
.lodging-source-card dt { font-size: .7rem; font-weight: 750; }
.lodging-source-card dd { margin: .2rem 0 0; color: var(--ink-soft); font-size: .67rem; }

@media (min-width: 46rem) {
  .lodging-gallery { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(9rem, 14vw)); }
  .lodging-gallery-main { grid-column: span 2; grid-row: span 2; }
  .lodging-gallery img,
  .lodging-gallery-main img { aspect-ratio: auto; }
  .lodging-fact-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .lodging-fact-grid > div,
  .lodging-fact-grid > div:nth-child(2n) { border-right: 1px solid var(--line); }
  .lodging-fact-grid > div:last-child { border-right: 0; }
  .lodging-facility-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .lodging-room-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .lodging-practical-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .lodging-source-card { grid-template-columns: minmax(12rem, .6fr) minmax(0, 1.4fr); align-items: start; }
}

@media (min-width: 46rem) and (max-width: 63.99rem) {
  .lodging-hero-side { grid-template-columns: auto minmax(0, 1fr); align-items: start; justify-items: start; }
  .lodging-hero-booking { width: 100%; padding-top: 0; border-top: 0; }
}

@media (min-width: 64rem) {
  .lodging-detail-heading { grid-template-columns: minmax(0, 1fr) minmax(18rem, 22rem); }
  .lodging-detail-layout { grid-template-columns: minmax(0, 1.65fr) minmax(17rem, .65fr); gap: clamp(2rem, 5vw, 5rem); }
  .lodging-booking-panel { position: sticky; top: 8.5rem; padding: 1.35rem; }
  .lodging-sentiment-layout { grid-template-columns: minmax(0, .9fr) minmax(26rem, 1.1fr); align-items: start; }
  .lodging-room-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

:root {
  color-scheme: light;
  --ink: #102628;
  --ink-soft: #526467;
  --moss: #16535a;
  --moss-dark: #0a3b41;
  --moss-soft: #c9dcda;
  --sea: #d9e8ec;
  --sky: #f7f9f9;
  --sand: #ffffff;
  --surface-soft: #f6f8f8;
  --paper: #ffffff;
  --white: #ffffff;
  --rust: #17647a;
  --gold: #d9ebe7;
  --line: #d4dddc;
  --footer: #071f22;
  --shadow: 0 18px 50px rgb(8 24 24 / .09);
  --serif: "Manrope", "Avenir Next", sans-serif;
  --sans: "Manrope", "Avenir Next", sans-serif;
  --shell: min(76rem, calc(100vw - 2.5rem));
  --text-xs: .75rem;
  --text-sm: .875rem;
  --tap-target: 48px;
  --ease: cubic-bezier(.22, 1, .36, 1);
}

* { box-sizing: border-box; }
html { overflow-x: clip; scroll-behavior: smooth; }
body { margin: 0; overflow-x: clip; background: var(--paper); color: var(--ink); font-family: var(--sans); font-size: 1rem; line-height: 1.55; }
main [id] { scroll-margin-top: 8rem; }
[data-site-shell="header"] { display: contents; }
body.menu-open { overflow: hidden; }
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button { color: inherit; }
:focus-visible { outline: 3px solid var(--rust); outline-offset: 3px; }
.shell { width: var(--shell); margin-inline: auto; }
.skip-link { position: fixed; z-index: 100; top: .5rem; left: .5rem; padding: .7rem 1rem; background: var(--ink); color: var(--white); transform: translateY(-150%); }
.skip-link:focus { transform: none; }
.eyebrow { margin: 0 0 .8rem; color: var(--moss); font-size: .72rem; font-weight: 750; letter-spacing: .13em; text-transform: uppercase; }
.muted { color: var(--ink-soft); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.section { padding-block: clamp(3rem, 6vw, 5rem); }
.section-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 1.5rem; margin-bottom: 2rem; }
.section-head h2 { max-width: 40rem; }
h1, h2, h3 { text-wrap: balance; }
h1, h2 { margin: 0; font-family: var(--serif); font-weight: 600; letter-spacing: -.035em; line-height: 1.05; }
h1 { font-size: clamp(2.5rem, 5.5vw, 4rem); }
h2 { font-size: clamp(1.9rem, 3.6vw, 3rem); }
h3 { margin: 0; font-size: 1.15rem; line-height: 1.2; }
.text-link { display: inline-flex; align-items: center; gap: .55rem; border-bottom: 1px solid currentColor; font-size: .88rem; font-weight: 700; }
.text-link span { transition: transform 180ms var(--ease); }
.text-link:hover span { transform: translateX(.2rem); }
.button { min-height: 3rem; display: inline-flex; align-items: center; justify-content: center; gap: .55rem; padding: .7rem 1.15rem; border: 1px solid transparent; border-radius: .2rem; background: var(--moss); color: var(--white); font-size: .84rem; font-weight: 750; transition: background 180ms; }
.button:hover { background: var(--moss-dark); }
.button-secondary { border-color: var(--line); background: transparent; color: var(--ink); }
.button-secondary:hover { background: var(--white); }

.utility-bar { min-height: 2.25rem; display: flex; align-items: center; justify-content: center; padding: .35rem 1rem; background: var(--ink); color: var(--white); font-size: .7rem; text-align: center; }
.utility-bar a { margin-left: .5rem; text-decoration: underline; text-underline-offset: .18rem; }
.site-header { position: sticky; z-index: 50; isolation: isolate; top: 0; height: 4.6rem; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 1.5rem; padding-inline: max(1rem, calc((100vw - 78rem) / 2)); background: color-mix(in oklch, var(--paper) 95%, transparent); border-bottom: 1px solid var(--line); backdrop-filter: blur(14px); }
.home-page .utility-bar { display: none; }
.home-page .site-header { position: sticky; inset: auto; color: var(--ink); background: var(--white); border-color: var(--line); backdrop-filter: none; text-shadow: none; }
.home-page .site-header.is-scrolled { color: var(--ink); background: var(--white); border-color: var(--line); box-shadow: none; backdrop-filter: none; }
.home-page .brand-mark, .home-page .site-header.is-scrolled .brand-mark { background: var(--moss); color: var(--white); }
.home-page .header-search, .home-page .site-header.is-scrolled .header-search { border-color: var(--line); background: transparent; }
.home-page .header-cta, .home-page .site-header.is-scrolled .header-cta { background: var(--moss); color: var(--white); }
.home-page .menu-button, .home-page .site-header.is-scrolled .menu-button { background: var(--ink); }
.home-page .menu-button span, .home-page .site-header.is-scrolled .menu-button span { background: var(--white); }
.home-page .mobile-menu { inset: 4.6rem 0 0; }
.brand { min-width: 0; min-height: var(--tap-target); display: inline-flex; align-items: center; gap: .6rem; font-size: .9rem; font-weight: 850; letter-spacing: .08em; }
.brand-mark { width: 2rem; height: 2rem; display: grid; place-items: center; border-radius: 50%; background: var(--moss); color: var(--white); }
.brand-mark svg { width: 1.25rem; fill: none; stroke: currentColor; stroke-width: 1.8; }
.desktop-nav { display: none; justify-content: center; gap: clamp(.9rem, 2vw, 1.6rem); }
.desktop-nav > a, .nav-menu > button { position: relative; display: inline-flex; align-items: center; gap: .3rem; height: 4.6rem; padding: 0; border: 0; background: transparent; font-size: .79rem; font-weight: 700; white-space: nowrap; }
.desktop-nav > a::after, .nav-menu > button::after { content: ""; position: absolute; right: 0; bottom: -.5px; left: 0; height: 2px; background: var(--moss); transform: scaleX(0); transition: transform 180ms var(--ease); }
.desktop-nav > a:hover::after, .desktop-nav > a[aria-current="page"]::after, .nav-menu > button:hover::after, .nav-menu > button[aria-expanded="true"]::after, .nav-menu.is-current > button::after { transform: scaleX(1); }
.nav-menu { position: relative; }
.nav-menu > button svg { width: .75rem; transition: transform 180ms; }
.nav-menu > button[aria-expanded="true"] svg { transform: rotate(180deg); }
.nav-popover { position: absolute; top: calc(100% + .7rem); left: -1.25rem; width: 20rem; padding: .55rem; background: var(--white); color: var(--ink); border: 1px solid var(--line); border-radius: .2rem; box-shadow: var(--shadow); opacity: 0; visibility: hidden; transform: translateY(-.4rem); transition: opacity 160ms, transform 160ms var(--ease), visibility 160ms; }
.nav-popover.is-open { opacity: 1; visibility: visible; transform: none; }
.nav-popover a { display: grid; gap: .16rem; padding: .7rem .75rem; border-radius: .35rem; }
.nav-popover a:hover { background: var(--sky); }
.nav-popover strong { display: block; color: var(--ink); font-size: .8rem; font-weight: 750; }
.nav-popover span { display: block; color: var(--ink-soft); font-size: .7rem; line-height: 1.45; }
.nav-popover-compact { width: 17rem; }
.nav-popover-compact a { min-height: 2.7rem; display: flex; align-items: center; padding-block: .55rem; }
.header-actions { min-width: 0; display: flex; justify-self: end; align-items: center; gap: .6rem; }
.header-search { width: 2.7rem; height: 2.7rem; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: transparent; }
.header-search svg { width: 1rem; fill: none; stroke: currentColor; stroke-width: 2; }
.header-cta { display: none; }
.menu-button { width: 2.7rem; height: 2.7rem; display: grid; place-content: center; gap: .32rem; border: 0; border-radius: 50%; background: var(--ink); }
.menu-button span { width: 1rem; height: 1px; background: var(--white); transition: transform 180ms; }
.menu-button[aria-expanded="true"] span:first-child { transform: translateY(.21rem) rotate(45deg); }
.menu-button[aria-expanded="true"] span:last-child { transform: translateY(-.12rem) rotate(-45deg); }
.mobile-menu { position: fixed; z-index: 45; inset: 6.85rem 0 0; padding: 1.25rem 1rem 3rem; overflow-y: auto; background: var(--paper); opacity: 0; visibility: hidden; transform: translateY(-1rem); transition: opacity 180ms, transform 180ms var(--ease); }
.mobile-menu.is-open { opacity: 1; visibility: visible; transform: none; }
.mobile-menu nav { display: grid; }
.mobile-menu nav > a, .mobile-menu summary { min-height: 3.7rem; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--line); font-family: var(--sans); font-size: 1.2rem; font-weight: 650; letter-spacing: -.02em; list-style: none; cursor: pointer; }
.mobile-menu summary::-webkit-details-marker { display: none; }
.mobile-subnav { display: grid; padding: .35rem 0 1rem 1rem; border-bottom: 1px solid var(--line); }
.mobile-subnav a { min-height: var(--tap-target); display: flex; align-items: center; padding: .55rem 0; color: var(--ink-soft); font-size: .86rem; }
.mobile-menu .button { width: 100%; margin-top: 1.25rem; }

.search-panel { position: fixed; z-index: 80; inset: 0; display: grid; align-items: start; padding-top: min(15vh, 7rem); background: oklch(20% .035 180 / .56); opacity: 0; visibility: hidden; transition: opacity 160ms, visibility 160ms; }
.search-panel.is-open { opacity: 1; visibility: visible; }
.search-dialog { width: min(42rem, calc(100vw - 2rem)); max-height: calc(100dvh - min(18vh, 8rem)); margin: auto; padding: 1.25rem; overflow-y: auto; overscroll-behavior: contain; border-radius: .2rem; background: var(--white); box-shadow: var(--shadow); transform: translateY(-1rem); transition: transform 180ms var(--ease); }
.search-panel.is-open .search-dialog { transform: none; }
.search-dialog-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; }
.search-dialog-top strong { font-family: var(--serif); font-size: 1.35rem; }
.search-close { width: 2.4rem; height: 2.4rem; border: 0; border-radius: 50%; background: var(--sand); }
.site-search { display: flex; align-items: center; gap: .7rem; min-height: 3.8rem; padding: .35rem .4rem .35rem 1rem; border: 1px solid var(--line); border-radius: .2rem; background: var(--white); }
.site-search svg { flex: 0 0 auto; width: 1.15rem; fill: none; stroke: currentColor; stroke-width: 2; }
.site-search input { min-width: 0; flex: 1; border: 0; outline: 0; background: transparent; color: var(--ink); }
.site-search button { min-height: 3rem; padding-inline: 1rem; border: 0; border-radius: .35rem; background: var(--moss); color: var(--white); font-size: .8rem; font-weight: 750; }
.search-hints { display: flex; flex-wrap: wrap; gap: .45rem; margin: 1rem 0 0; }
.search-hints a { padding: .4rem .7rem; border: 1px solid var(--line); border-radius: .2rem; background: var(--white); font-size: .72rem; }
.search-message { min-height: 1.4rem; margin: .7rem 0 0; color: var(--rust); font-size: .75rem; }
.site-search-results ol, .search-page-results { margin: 0; padding: 0; list-style: none; }
.site-search-results li + li, .search-page-results li + li { border-top: 1px solid var(--line); }
.site-search-results li a { display: grid; gap: .15rem; min-width: 0; padding: .75rem .15rem; }
.site-search-results li a:hover strong, .site-search-results li a:focus-visible strong { text-decoration: underline; text-underline-offset: .18rem; }
.site-search-results span, .search-page-results span { color: var(--rust); font-size: .62rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.site-search-results strong { font-family: var(--serif); font-size: 1.02rem; font-weight: 650; }
.site-search-results p { margin: 0; overflow: hidden; color: var(--ink-soft); font-size: .74rem; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }
.site-search-all { min-height: var(--tap-target); display: inline-flex; align-items: center; margin-top: .3rem; color: var(--moss); font-size: .75rem; font-weight: 800; }
.search-page { max-width: 58rem; }
.search-page > h1 { max-width: 42rem; }
.search-page-form { display: grid; gap: .5rem; margin: 1.5rem 0 2rem; }
.search-page-form > label { color: var(--ink-soft); font-size: .75rem; font-weight: 800; }
.search-page-form > div { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .55rem; }
.search-page-form input { min-width: 0; min-height: 3.3rem; padding: .75rem 1rem; border: 1px solid var(--line); border-radius: .45rem; background: var(--white); color: var(--ink); }
.search-page-count { margin: 0 0 .8rem; color: var(--ink-soft); font-size: .78rem; }
.search-page-error { color: var(--rust); font-weight: 750; }
.search-page-results { border-top: 1px solid var(--line); }
.search-page-results a { display: grid; gap: .35rem; padding: 1.1rem 0; }
.search-page-results strong { font-family: var(--serif); font-size: clamp(1.15rem, 2vw, 1.45rem); }
.search-page-results p { max-width: 48rem; margin: 0; color: var(--ink-soft); font-size: .85rem; }
@media (max-width: 35rem) {
  .search-panel { padding-top: max(.75rem, env(safe-area-inset-top)); }
  .search-dialog { width: calc(100vw - 1rem); max-height: calc(100dvh - 1.5rem); padding: 1rem; }
  .site-search { gap: .35rem; padding-left: .65rem; }
  .site-search button { padding-inline: .7rem; }
  .site-search-results p { white-space: normal; }
  .search-page-form > div { grid-template-columns: 1fr; }
  .search-page-form .button { width: 100%; }
}

.home-hero { position: relative; min-height: 30rem; display: flex; flex-direction: column; justify-content: flex-end; overflow: hidden; padding: 4rem 0; color: var(--white); background: var(--ink); }
.hero-background, .hero-background img { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-background img { object-fit: cover; object-position: 58% center; }
.home-hero.is-image-fallback {
  background:
    radial-gradient(circle at 76% 25%, rgb(184 216 232 / .24), transparent 30%),
    linear-gradient(135deg, var(--footer) 0%, var(--moss-dark) 58%, #193e43 100%);
}
.home-hero.is-image-fallback .hero-background { display: none; }
.hero-overlay { position: absolute; inset: 0; background: linear-gradient(90deg, oklch(14% .035 180 / .78) 0%, oklch(14% .035 180 / .52) 50%, oklch(14% .035 180 / .12) 82%); }
.hero-image-label { position: absolute; z-index: 2; top: 5.6rem; right: 1rem; padding: .3rem .45rem; border: 1px solid rgb(255 255 255 / .26); background: var(--footer); color: var(--white); font-size: .58rem; font-weight: 750; letter-spacing: .05em; text-transform: uppercase; }
.hero-content { position: relative; z-index: 1; margin-block: auto; padding-top: 1rem; }
.hero-content .eyebrow { color: var(--sky); }
.hero-content h1 { max-width: 44rem; font-size: clamp(2.5rem, 5vw, 4.1rem); line-height: 1.03; }
.hero-content > p:not(.eyebrow) { max-width: 38rem; margin: 1rem 0 1.35rem; color: var(--white); font-size: clamp(.98rem, 1.4vw, 1.12rem); text-shadow: 0 1px 12px oklch(12% .03 180 / .35); }
.hero-search { max-width: 38rem; border-color: transparent; box-shadow: none; }
.hero-actions { display: flex; flex-wrap: wrap; gap: .65rem; margin-top: .85rem; color: var(--sky); font-size: .72rem; }
.hero-actions a { color: var(--white); text-decoration: underline; text-underline-offset: .2rem; }
.category-nav { position: relative; z-index: 1; padding-block: 1rem; background: var(--white); }
.category-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; padding: 1px; border: 0; border-radius: 0; overflow: hidden; background: var(--line); box-shadow: none; }
.category-link { min-height: 4.6rem; display: flex; flex-direction: column; justify-content: space-between; padding: .7rem .8rem; border-radius: 0; background: var(--white); color: var(--ink); transition: background 180ms; }
.category-link:hover { background: var(--sky); }
.category-icon { width: 1.8rem; height: 1.8rem; display: grid; place-items: center; color: var(--moss); }
.category-icon svg { width: 1.55rem; fill: none; stroke: currentColor; stroke-width: 1.7; }
.category-link strong { display: flex; justify-content: space-between; gap: .5rem; font-size: .8rem; }

.soft-section { background: var(--sand); }
.feature-grid { display: grid; gap: 1rem; }
.feature-card { position: relative; min-height: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 0; background: var(--white); color: var(--ink); }
.feature-card img { position: relative; inset: auto; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; transition: none; }
.feature-card:hover img { transform: none; }
.feature-card::after { display: none; }
.feature-card-copy { position: static; padding: 1rem; }
.feature-card-copy p { margin: 0 0 .3rem; color: var(--moss); font-size: .65rem; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.feature-card-copy h3 { font-family: var(--serif); font-size: 1.2rem; font-weight: 650; }
.feature-card-copy span { display: block; margin-top: .4rem; color: var(--ink-soft); font-size: .72rem; }
.feature-card-wide { min-height: 0; }

.location-grid { display: grid; border-top: 1px solid var(--line); }
.location-link { display: grid; grid-template-columns: 2.3rem 1fr auto; gap: 1rem; align-items: center; min-height: 5.2rem; border-bottom: 1px solid var(--line); }
.location-link > span:first-child { color: var(--moss); font-size: .68rem; font-weight: 750; }
.location-link h3 { font-family: var(--serif); font-size: clamp(1.2rem, 2.4vw, 1.7rem); font-weight: 650; }
.location-link p { display: none; margin: .25rem 0 0; color: var(--ink-soft); font-size: .75rem; }
.location-link > span:last-child { width: 2.4rem; height: 2.4rem; display: grid; place-items: center; border: 1px solid var(--line); border-radius: .2rem; transition: background 180ms, color 180ms; }
.location-link:hover > span:last-child { background: var(--moss); color: var(--white); }

.plan-band { border-block: 1px solid var(--line); background: var(--sand); color: var(--ink); }
.plan-band-inner { display: grid; gap: 2rem; align-items: center; }
.plan-band h2 { max-width: 35rem; font-size: clamp(1.9rem, 3.2vw, 2.7rem); }
.plan-band p { max-width: 32rem; margin: .8rem 0 0; color: var(--ink-soft); }
.plan-band-button { margin-top: 1.4rem; }
.plan-steps { display: grid; gap: .65rem; }
.plan-step { display: grid; grid-template-columns: 2rem 1fr; gap: .8rem; padding: 1rem 0; border-bottom: 1px solid var(--line); }
.plan-step span { font-size: .7rem; font-weight: 800; }
.plan-step strong { font-size: .85rem; }
.plan-step p { margin: .2rem 0 0; font-size: .72rem; }

.guide-grid { display: grid; gap: .7rem; }
.guide-card { min-height: 8.5rem; display: flex; flex-direction: column; justify-content: space-between; padding: 1rem; border: 1px solid var(--line); border-radius: 0; background: var(--white); }
.guide-card:hover { border-color: var(--moss); }
.guide-card small { color: var(--moss); font-weight: 800; letter-spacing: .1em; }
.guide-card h3 { max-width: 17rem; font-family: var(--serif); font-size: 1.08rem; font-weight: 650; }
.guide-card span { align-self: end; }

.breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; padding-block: 1.1rem; color: var(--ink-soft); font-size: .7rem; }
.breadcrumb a:hover { color: var(--moss); text-decoration: underline; }
.page-hero { padding-block: clamp(2.5rem, 5vw, 4rem); background: var(--white); border-bottom: 1px solid var(--line); }
.page-hero-grid { display: grid; gap: 2rem; align-items: end; }
.page-hero h1 { max-width: 53rem; font-size: clamp(2.35rem, 4.8vw, 3.8rem); }
.page-hero-copy > p:not(.eyebrow) { max-width: 42rem; margin: 1rem 0 0; color: var(--ink-soft); font-size: 1rem; }
.page-hero-aside { padding: 1rem; border: 1px solid var(--line); background: var(--sand); font-size: .78rem; }
.page-hero-aside strong { display: block; margin-bottom: .25rem; }
.hotel-page .page-hero h1, .hotel-page .section-head h2, .hotel-page .article-content h2, .hotel-page .article-content h3, .hotel-page .article-aside h2, .hotel-page .guide-card h3, .hotel-page .listing-copy h2, .hotel-page .listing-copy h3 { font-family: var(--sans); font-weight: 700; letter-spacing: -.035em; }
.hotel-page .page-hero h1 { font-size: clamp(2.6rem, 5vw, 4.25rem); line-height: 1.02; }
.hotel-page .section-head h2 { font-size: clamp(2rem, 3.8vw, 3.25rem); }
.subnav { position: sticky; z-index: 20; top: 4.6rem; overflow-x: auto; background: var(--white); border-bottom: 1px solid var(--line); scrollbar-width: none; }
.subnav::-webkit-scrollbar { display: none; }
.subnav-inner { display: flex; gap: 1.3rem; min-width: max-content; }
.subnav a { padding-block: .9rem; color: var(--ink-soft); font-size: .75rem; font-weight: 700; }
.subnav a[aria-current="page"], .subnav a:hover { color: var(--moss); }

.filter-bar { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 2rem; }
.source-strip { display: grid; gap: .25rem; margin: -1rem 0 1.5rem; padding: .9rem 1rem; border: 1px solid var(--line); border-radius: .4rem; background: var(--sky); font-size: .72rem; }
.source-strip strong { color: var(--moss); }
.source-strip span { color: var(--ink-soft); }
.filter-button { min-height: var(--tap-target); padding: .55rem .9rem; border: 1px solid var(--line); border-radius: .2rem; background: transparent; font-size: .75rem; cursor: pointer; }
.filter-button[aria-pressed="true"], .filter-button:hover { border-color: var(--moss); background: var(--moss); color: var(--white); }
.listing-grid { display: grid; gap: 1rem; }
.listing-card { overflow: hidden; border: 1px solid var(--line); border-radius: 0; background: var(--white); }
.listing-card[hidden] { display: none; }
.listing-image { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--sky); }
.gallery-nav { position: absolute; top: 50%; transform: translateY(-50%); display: grid; place-items: center; width: var(--tap-target); height: var(--tap-target); padding: 0; border: 0; border-radius: 50%; background: oklch(100% 0 0 / .82); color: var(--ink); font-size: 1.15rem; line-height: 1; cursor: pointer; opacity: 0; transition: opacity .15s ease; }
.gallery-prev { left: .5rem; }
.gallery-next { right: .5rem; }
.listing-image:hover .gallery-nav, .gallery-nav:focus-visible { opacity: 1; }
.gallery-nav:focus-visible { outline: 2px solid var(--moss); outline-offset: 2px; }
.gallery-count { position: absolute; right: .6rem; bottom: .6rem; padding: .2rem .45rem; border-radius: .25rem; background: oklch(15% .03 180 / .72); color: var(--white); font-size: .62rem; font-weight: 700; }
@media (hover: none) { .gallery-nav { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .gallery-nav { transition: none; } }
.listing-image img { width: 100%; height: 100%; object-fit: cover; transition: none; }
.listing-card:hover .listing-image img { transform: none; }
.listing-badge { position: absolute; top: .75rem; left: .75rem; padding: .35rem .55rem; border-radius: .25rem; background: var(--white); font-size: .63rem; font-weight: 800; }
.listing-credit { position: absolute; right: .6rem; bottom: .55rem; max-width: calc(100% - 1.2rem); padding: .25rem .4rem; border-radius: .2rem; background: oklch(15% .03 180 / .78); color: var(--white); font-size: var(--text-xs); font-weight: 600; line-height: 1.25; text-align: right; }
.listing-copy { display: grid; gap: .7rem; padding: 1rem; }
.listing-meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem; color: var(--ink-soft); font-size: .66rem; font-weight: 650; text-transform: uppercase; letter-spacing: .06em; }
.listing-meta .rating { color: var(--moss); font-size: .76rem; font-weight: 850; letter-spacing: .02em; }
.listing-copy h2, .listing-copy h3 { font-family: var(--serif); font-size: 1.55rem; font-weight: 500; line-height: 1.08; }
.hotel-page .listing-meta { font-size: .71rem; font-weight: 650; letter-spacing: 0; text-transform: none; }
.hotel-page .listing-meta .rating { font-size: .76rem; font-weight: 800; letter-spacing: 0; }
.hotel-page .listing-copy h2, .hotel-page .listing-copy h3 { font-size: 1.3rem; line-height: 1.17; }
.listing-copy p { margin: 0; color: var(--ink-soft); font-size: .78rem; }
.listing-tags { display: flex; flex-wrap: wrap; gap: .35rem; }
.listing-tags span { padding: .25rem .45rem; border-radius: .2rem; background: var(--sand); color: var(--ink-soft); font-size: .62rem; }
.listing-tags .rate-badge { background: var(--moss); color: var(--white); font-weight: 700; }
.listing-tags .rate-slot:empty { display: none; }
.listing-tags .rate-slot.is-loading { background: var(--sky); color: var(--ink-soft); animation: loading-pulse 1.2s ease-in-out infinite alternate; }

.lodging-rate-section { padding-block: 1rem; border-bottom: 1px solid var(--line); background: var(--surface-soft); }
.lodging-rate-card { display: grid; gap: 1.1rem; padding: 1.15rem; border: 1px solid var(--line); border-radius: .75rem; background: var(--white); box-shadow: 0 7px 24px rgb(8 24 24 / .04); }
.lodging-rate-intro { display: grid; align-content: start; }
.lodging-rate-intro .eyebrow { margin-bottom: .4rem; }
.lodging-rate-intro h2 { font-family: var(--serif); font-size: clamp(1.55rem, 3vw, 2.15rem); font-weight: 520; }
.lodging-rate-intro > p:last-child { max-width: 38rem; margin: .55rem 0 0; color: var(--ink-soft); font-size: .8rem; }
.lodging-rate-form { display: grid; gap: .7rem; }
.rate-field { min-width: 0; display: grid; gap: .32rem; color: var(--ink-soft); font-size: .67rem; font-weight: 700; }
.rate-field > span { padding-left: .05rem; }
.rate-field input,
.rate-field select { width: 100%; min-width: 0; height: 3rem; padding: .65rem .7rem; border: 1px solid var(--line); border-radius: .45rem; background: var(--white); color: var(--ink); font-size: .8rem; }
.rate-field input:hover,
.rate-field select:hover { border-color: var(--moss-soft); }
.rate-child-ages { display: grid; gap: .7rem; }
.rate-child-ages[hidden] { display: none; }
.rate-submit { width: 100%; align-self: end; border: 0; cursor: pointer; }
.rate-submit:disabled { cursor: wait; opacity: .7; }
.lodging-rate-status { min-height: 1.4rem; margin: 0; color: var(--moss); font-size: .72rem; font-weight: 700; }
.lodging-rate-status.is-error { color: var(--rust); }
.lodging-rate-disclosure { margin: -.45rem 0 0; color: var(--ink-soft); font-size: .66rem; }
.gyg-widget { margin-top: 1.75rem; padding: 1.25rem; border: 1px solid var(--line); border-radius: .5rem; background: var(--sand); }
.gyg-widget > p { margin: 0 0 .35rem; }
.gyg-widget > p.muted { margin-bottom: 1rem; }
.gyg-widget iframe { width: 100%; border: 0; }
.listing-action { display: flex; justify-content: space-between; align-items: center; padding-top: .8rem; border-top: 1px solid var(--line); font-size: .75rem; font-weight: 750; }
.listing-action span:first-child { color: var(--ink-soft); font-size: .66rem; }
.listing-action span:last-child { color: var(--moss); white-space: nowrap; }
.listing-title-link,
.listing-detail-link { min-height: var(--tap-target); display: inline-flex; align-items: center; }
.empty-state { display: none; padding: 2rem; border: 1px dashed var(--line); text-align: center; }
.empty-state.is-visible { display: block; }
.content-grid { display: grid; gap: 2.5rem; }
.article-content { max-width: 46rem; }
.article-content h2 { margin: 2.6rem 0 1rem; font-size: 2rem; }
.article-content h3 { margin: 2rem 0 .6rem; font-family: var(--serif); font-size: 1.35rem; }
.article-content p, .article-content li { color: var(--ink-soft); }
.article-content .data-note { margin-top: 2rem; padding-top: 1rem; border-top: 1px solid var(--line); font-size: .7rem; }
.article-content a:not(.button) { color: var(--moss); text-decoration: underline; text-underline-offset: .2rem; }
.anchor-target { display: block; scroll-margin-top: 8rem; }
.article-aside { align-self: start; padding: 1.15rem; border: 1px solid var(--line); border-radius: .55rem; background: var(--white); }
.article-aside h2 { margin-bottom: .8rem; font-family: var(--serif); font-size: 1.35rem; }
.article-aside nav { display: grid; }
.article-aside a { min-height: var(--tap-target); display: flex; align-items: center; padding: .65rem 0; border-bottom: 1px solid var(--line); font-size: .8125rem; }
.callout { margin: 2rem 0; padding: 1.2rem; border-radius: .45rem; background: var(--sky); color: var(--ink); }
.callout strong { display: block; margin-bottom: .25rem; }

.section-intro { max-width: 31rem; margin: 0; color: var(--ink-soft); font-size: .82rem; }
.booking-section { border-top: 1px solid var(--line); }
.provider-disclosure { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .35rem 2rem; margin-bottom: 1.1rem; padding: .85rem 0; border-block: 1px solid var(--line); font-size: .69rem; }
.provider-disclosure strong { color: var(--moss); }
.provider-disclosure span { color: var(--ink-soft); }
.experience-grid { display: grid; gap: 1rem; }
.experience-card { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: .55rem; background: var(--white); }
.experience-media { aspect-ratio: 16 / 10; overflow: hidden; background: var(--sky); }
.experience-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 550ms var(--ease); }
.experience-card:hover .experience-media img { transform: scale(1.025); }
.experience-media-fallback { display: grid; place-items: center; color: var(--moss); font-size: .7rem; font-weight: 850; letter-spacing: .12em; }
.experience-copy { display: grid; gap: .85rem; padding: 1rem; }
.experience-copy h3 { min-height: 2.5em; font-size: 1.15rem; font-weight: 750; letter-spacing: -.025em; }
.experience-meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .45rem; color: var(--ink-soft); font-size: .65rem; }
.experience-meta .rating { color: var(--moss); font-weight: 800; }
.experience-action { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding-top: .8rem; border-top: 1px solid var(--line); }
.experience-action strong { font-size: .75rem; }
.experience-action .text-link { flex: 0 0 auto; font-size: .7rem; }
.api-state { grid-column: 1 / -1; min-height: 12rem; display: grid; place-content: center; justify-items: center; padding: 2rem; border: 1px dashed var(--line); color: var(--ink-soft); text-align: center; }
.api-state strong { color: var(--ink); }
.api-state p { max-width: 28rem; margin: .35rem 0 0; font-size: .76rem; }
.loading-dot { width: .6rem; height: .6rem; margin-bottom: .8rem; border-radius: 50%; background: var(--moss); animation: loading-pulse 1.2s ease-in-out infinite alternate; }
.provider-switch { display: grid; gap: 1.5rem; align-items: center; margin-top: 1.25rem; padding: clamp(1.3rem, 4vw, 2.2rem); background: var(--sand); border: 1px solid var(--line); border-radius: .55rem; }
.provider-switch h3 { font-size: clamp(1.35rem, 3vw, 2rem); letter-spacing: -.035em; }
.provider-switch p:not(.eyebrow) { max-width: 40rem; margin: .5rem 0 0; color: var(--ink-soft); font-size: .76rem; }
.provider-switch .button { justify-self: start; white-space: nowrap; }

.charging-page .page-hero h1 { font-size: clamp(2.8rem, 5vw, 4.5rem); }
/* Dated, server-rendered directories remain usable when scripts or maps fail. */
/* Instant fragment navigation avoids racing a click with the initial anchor scroll. */
html:has(.readable-directory) { scroll-behavior: auto; }
.readable-directory { padding-block: 2rem; min-width: 0; scroll-margin-top: 100px; }
section.readable-directory > h2 { font: 700 clamp(24px, 3vw, 36px)/1.2 var(--sans); margin: 0 0 1rem; }
.readable-directory > p { max-width: 80ch; font-size: 16px; line-height: 1.6; }
.readable-directory-group { margin-block: 12px; border-radius: 8px; background: #f5f8f8; }
.readable-directory-group > summary { padding: 16px; min-height: 48px; cursor: pointer; font: 700 17px/1.5 var(--sans); }
.readable-directory-group > summary span { font-weight: 400; }
.readable-directory .readable-directory-list { list-style: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 0 12px 12px; margin: 0; }
.readable-directory-list > li { min-width: 0; background: #fff; padding: 16px; border-radius: 6px; overflow-wrap: anywhere; }
.readable-directory .readable-directory-list h3 { font: 700 18px/1.35 var(--sans); margin: 0 0 8px; }
.readable-directory-meta { font-size: 14px; line-height: 1.5; color: #4c6265; }
.readable-directory-list dl { display: grid; gap: 6px; margin: 12px 0; font-size: 15px; line-height: 1.5; }
.readable-directory-list dl > div { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; }
.readable-directory-list dt { font-weight: 600; }
.readable-directory-list dd { margin: 0; }
.readable-directory-links { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 8px; }
.readable-directory-links a { display: inline-flex; align-items: center; min-height: 44px; max-width: 100%; font: 600 15px/1.45 var(--sans); text-decoration: underline; text-underline-offset: 3px; color: #174f59; }
.readable-directory :is(summary, a):focus-visible { outline: 3px solid #176d85; outline-offset: 3px; }
@media (max-width: 46rem) {
  .readable-directory .readable-directory-list { grid-template-columns: minmax(0, 1fr); }
  .readable-directory-links { flex-direction: column; align-items: flex-start; }
}
.charger-section { padding-top: clamp(3.5rem, 6vw, 5.5rem); }
.charger-heading { align-items: end; }
.charger-toolbar { display: grid; gap: .75rem; margin-bottom: 1rem; }
.charger-toolbar[hidden] { display: none; }
.charger-search { min-height: 3.1rem; display: flex; align-items: center; gap: .65rem; padding: 0 .85rem; border: 1px solid var(--line); border-radius: .4rem; background: var(--white); }
.charger-search svg { width: 1rem; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 2; }
.charger-search input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--ink); font-size: .78rem; }
.charger-filters { margin: 0; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
.charger-filters::-webkit-scrollbar { display: none; }
.charger-filters .filter-button { white-space: nowrap; }
.charger-locate { min-height: 3.1rem; white-space: nowrap; }
.charger-layout { display: grid; border: 1px solid var(--line); background: var(--white); }
.charger-map-frame { position: relative; min-width: 0; min-height: 31rem; overflow: hidden; background: var(--sky); }
.charger-map, .charger-map-fallback, .charger-map-fallback iframe { width: 100%; height: 100%; min-height: 31rem; border: 0; }
.charger-map { position: relative; z-index: 1; }
.charger-map-fallback { position: relative; }
.charger-fallback-label { position: absolute; z-index: 1; top: 4.3rem; left: .75rem; max-width: min(22rem, calc(100% - 1.5rem)); display: grid; gap: .15rem; padding: .7rem .8rem; border-radius: .35rem; background: oklch(99% 0 0 / .94); box-shadow: 0 8px 26px oklch(22% .03 180 / .12); pointer-events: none; }
.charger-fallback-label strong { font-size: .72rem; }
.charger-fallback-label span { color: var(--ink-soft); font-size: .62rem; }
.charger-results { min-width: 0; display: flex; flex-direction: column; border-top: 1px solid var(--line); background: var(--white); }
.charger-results-head { display: flex; justify-content: space-between; align-items: start; gap: 1rem; padding: 1rem; border-bottom: 1px solid var(--line); }
.charger-results-head > div { display: grid; gap: .1rem; }
.charger-results-head span { color: var(--ink-soft); font-size: .64rem; }
.charger-results-head strong { font-size: .83rem; }
.charger-live { flex: 0 0 auto; padding: .28rem .45rem; border-radius: 2rem; background: var(--sky); color: var(--moss) !important; font-size: .58rem !important; font-weight: 800; }
.charger-list { flex: 1; overflow-y: auto; overscroll-behavior: contain; }
.charger-result { width: 100%; display: grid; gap: .25rem; padding: 1rem; border: 0; border-bottom: 1px solid var(--line); background: var(--white); color: var(--ink); text-align: left; cursor: pointer; transition: background 160ms; }
.charger-result:hover { background: var(--sand); }
.charger-result-top { display: flex; justify-content: space-between; align-items: start; gap: 1rem; }
.charger-result-top strong { font-size: .8rem; line-height: 1.3; }
.charger-result-top b { flex: 0 0 auto; color: var(--moss); font-size: .68rem; }
.charger-result-address, .charger-result-meta, .charger-result-extra, .charger-result-distance { color: var(--ink-soft); font-size: .64rem; }
.charger-result-context { max-width: 25rem; margin-top: .15rem; color: var(--ink); font-size: .68rem; line-height: 1.45; }
.charger-result-extra { line-height: 1.5; }
.charger-result-distance { color: var(--rust); font-weight: 750; }
.charger-result-more { min-height: var(--tap-target); display: flex; align-items: center; margin-bottom: calc(var(--tap-target) * -.15); color: var(--moss); font-size: .66rem; font-weight: 780; }
.charger-list-more {
  width: calc(100% - 2rem);
  min-height: var(--tap-target);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 1rem;
  padding: .7rem 1rem;
  border: 1px solid var(--ink);
  border-radius: .35rem;
  background: var(--white);
  color: var(--ink);
  font: inherit;
  font-size: .72rem;
  font-weight: 780;
  cursor: pointer;
}
.charger-list-more:hover { background: var(--surface-soft); }
[data-map-place].is-active { color: var(--moss); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: .35em; }
.charger-empty { display: grid; gap: .4rem; align-content: center; min-height: 16rem; padding: 1.4rem; color: var(--ink-soft); }
.charger-empty strong { color: var(--ink); font-size: .85rem; }
.charger-empty p { max-width: 20rem; margin: 0; font-size: .72rem; }
.charger-empty .text-link { justify-self: start; margin-top: .35rem; font-size: .7rem; }
.charger-attribution { margin: .7rem 0 0; color: var(--ink-soft); font-size: .6rem; }
.charger-marker-wrap { background: transparent; border: 0; }
.charger-marker { width: 1.85rem; height: 1.85rem; display: grid; place-items: center; border: 3px solid var(--white); border-radius: 50%; background: var(--moss); color: var(--white); box-shadow: 0 4px 14px oklch(20% .03 180 / .24); font-size: 1rem; font-weight: 850; }
.charger-popup { min-width: 12rem; display: grid; gap: .25rem; color: var(--ink); font-family: var(--sans); }
.charger-popup strong { font-size: .78rem; }
.charger-popup span { color: var(--ink-soft); font-size: .65rem; }
.charger-popup .charger-popup-context { max-width: 15rem; margin: .25rem 0 0; color: var(--ink); font-size: .66rem; line-height: 1.45; }
.charger-popup a { margin-top: .3rem; color: var(--moss); font-size: .68rem; font-weight: 800; text-decoration: underline; text-underline-offset: .18rem; }
.charge-stop-section { padding-top: clamp(2.5rem, 5vw, 4.5rem); border-top: 1px solid var(--line); }
.charge-stop-list { border-top: 1px solid var(--line); }
.charge-stop { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr); gap: 1rem; padding-block: clamp(1.6rem, 4vw, 2.5rem); border-bottom: 1px solid var(--line); }
.charge-stop-number { padding-top: .3rem; color: var(--moss); font-size: .67rem; font-weight: 800; letter-spacing: .08em; }
.charge-stop-copy { min-width: 0; }
.charge-stop-region { margin: 0 0 .35rem; color: var(--moss); font-size: .63rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.charge-stop-copy h3 { font-size: clamp(1.65rem, 4vw, 2.4rem); letter-spacing: -.04em; }
.charge-stop-copy > p:last-child { max-width: 39rem; margin: .65rem 0 0; color: var(--ink-soft); font-size: .8rem; }
.charge-stop-facts { grid-column: 2; display: grid; gap: .75rem; margin: .25rem 0 0; }
.charge-stop-facts div { display: grid; grid-template-columns: 5.2rem minmax(0, 1fr); gap: .75rem; }
.charge-stop-facts dt { color: var(--moss); font-size: .62rem; font-weight: 800; text-transform: uppercase; }
.charge-stop-facts dd { margin: 0; color: var(--ink-soft); font-size: .7rem; }
.charge-stop-link { grid-column: 2; justify-self: start; display: inline-flex; align-items: center; gap: .5rem; margin-top: .2rem; border-bottom: 1px solid currentColor; color: var(--moss); font-size: .7rem; font-weight: 750; }
.charge-stop-link span { transition: transform 180ms var(--ease); }
.charge-stop-link:hover span { transform: translateY(-.15rem); }
.leaflet-container { font-family: var(--sans); }
.leaflet-control-attribution { font-size: var(--text-xs); }
.data-note a,
.leaflet-control-attribution a { text-decoration: underline; text-underline-offset: .16em; }
.planner-tool { display: grid; gap: 1.5rem; align-items: center; margin-bottom: clamp(3.5rem, 7vw, 6rem); padding: clamp(1.4rem, 4vw, 2.4rem); border: 1px solid var(--line); background: var(--white); }
.planner-tool h2 { max-width: 36rem; font-size: clamp(1.8rem, 4vw, 3rem); }
.planner-tool p:not(.eyebrow) { max-width: 42rem; margin: .7rem 0 0; color: var(--ink-soft); }
.planner-tool .button { justify-self: start; }

.aurora-section { padding-bottom: 0; }
.aurora-head { margin-bottom: 1.4rem; }
.aurora-head h2 span { color: var(--moss); }
.aurora-place-bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .75rem 1.5rem; padding-block: .8rem; border-block: 1px solid var(--line); }
.aurora-place-buttons { min-width: 0; max-width: 100%; display: flex; gap: .4rem; overflow-x: auto; scrollbar-width: none; }
.aurora-place-buttons::-webkit-scrollbar { display: none; }
.aurora-place-buttons button { min-height: var(--tap-target); padding: .5rem .85rem; border: 1px solid transparent; border-radius: 2rem; background: transparent; color: var(--ink-soft); font-size: .75rem; font-weight: 750; white-space: nowrap; cursor: pointer; }
.aurora-place-buttons button:hover { color: var(--moss); }
.aurora-place-buttons button[aria-pressed="true"] { border-color: var(--moss); background: var(--moss); color: var(--white); }
.aurora-refresh-status { color: var(--ink-soft); font-size: .75rem; }
.aurora-outlook { display: grid; margin-top: 1rem; overflow: hidden; border: 1px solid var(--ink); background: var(--ink); color: var(--white); }
.aurora-verdict { display: flex; flex-direction: column; min-width: 0; padding: clamp(1.5rem, 4vw, 3rem); }
.aurora-verdict .eyebrow,
.aurora-detail .eyebrow { color: var(--moss-soft); }
.aurora-score { display: flex; align-items: baseline; gap: .65rem; margin-top: .4rem; }
.aurora-score strong { font-family: var(--serif); font-size: clamp(5rem, 16vw, 8.5rem); font-weight: 420; letter-spacing: -.08em; line-height: .78; }
.aurora-score span { color: var(--moss-soft); font-size: .74rem; font-weight: 750; }
.aurora-verdict h3 { max-width: 25rem; margin-top: 1.25rem; font-family: var(--serif); font-size: clamp(1.75rem, 4vw, 2.7rem); font-weight: 520; line-height: 1.03; }
.aurora-verdict > p:not(.eyebrow) { max-width: 28rem; margin: .85rem 0 0; color: var(--moss-soft); font-size: .82rem; }
.aurora-window { display: grid; gap: .22rem; margin-top: auto; padding-top: 2rem; }
.aurora-window span { color: var(--moss-soft); font-size: .65rem; text-transform: uppercase; letter-spacing: .08em; }
.aurora-window strong { font-size: 1rem; }
.aurora-outlook[data-score-band="strong"] .aurora-score strong { color: #d9ef8b; }
.aurora-outlook[data-score-band="possible"] .aurora-score strong { color: var(--gold); }
.aurora-outlook[data-score-band="weak"] .aurora-score strong { color: #efb88b; }
.aurora-detail { min-width: 0; padding: clamp(1.5rem, 4vw, 2.5rem); border-top: 1px solid rgb(255 255 255 / .18); background: #12302f; }
.aurora-detail > header { display: flex; justify-content: space-between; align-items: start; gap: 1rem; }
.aurora-detail > header .eyebrow { margin-bottom: .35rem; }
.aurora-detail > header h3 { font-size: clamp(1.25rem, 2.5vw, 1.75rem); }
.aurora-detail .source-state { background: rgb(255 255 255 / .11); color: var(--moss-soft); }
.aurora-detail .source-state.is-live { background: var(--moss-soft); color: var(--moss-dark); }
.aurora-detail .source-state.is-stale { background: #ead8a8; color: #493b18; }
.aurora-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 1.5rem 0 0; border-top: 1px solid rgb(255 255 255 / .18); border-left: 1px solid rgb(255 255 255 / .18); }
.aurora-metrics > div { min-width: 0; display: grid; align-content: start; padding: 1rem; border-right: 1px solid rgb(255 255 255 / .18); border-bottom: 1px solid rgb(255 255 255 / .18); }
.aurora-metrics dt { color: var(--moss-soft); font-size: .64rem; }
.aurora-metrics dd { margin: .25rem 0 0; font-size: clamp(1.15rem, 3vw, 1.55rem); font-weight: 750; letter-spacing: -.035em; }
.aurora-metrics .aurora-note { margin-top: .2rem; color: rgb(255 255 255 / .64); font-size: .75rem; line-height: 1.4; }
.aurora-components { display: grid; gap: .75rem; margin-top: 1.35rem; }
.aurora-components label { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr) 2.25rem; gap: .8rem; align-items: center; font-size: .66rem; }
.aurora-components label span { color: var(--moss-soft); }
.aurora-components label b { font-size: .66rem; text-align: right; }
.aurora-components meter { width: 100%; height: .45rem; border: 0; background: rgb(255 255 255 / .16); }
.aurora-components meter::-webkit-meter-bar { height: .45rem; border: 0; border-radius: 0; background: rgb(255 255 255 / .16); }
.aurora-components meter::-webkit-meter-optimum-value { background: var(--moss-soft); }
.aurora-components meter::-moz-meter-bar { background: var(--moss-soft); }
.aurora-caveat { margin: 1.4rem 0 0; padding-left: .8rem; border-left: 2px solid var(--rust); color: rgb(255 255 255 / .76); font-size: .68rem; }
.aurora-sources { margin: 1.1rem 0 0; color: rgb(255 255 255 / .62); font-size: .62rem; }
.aurora-sources a { min-height: 44px; display: inline-flex; align-items: center; color: var(--moss-soft); text-decoration: underline; text-underline-offset: .16rem; }

.travel-info-page .page-hero h1 { max-width: 45rem; font-size: clamp(2.8rem, 5.4vw, 4.8rem); }
.travel-live-section { padding-top: clamp(3rem, 6vw, 5.5rem); }
.travel-live-head { margin-bottom: 1.4rem; }
.travel-live-head h2 span { color: var(--moss); }
.travel-place-bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .8rem 1.5rem; margin-bottom: 1rem; padding-block: .8rem; border-block: 1px solid var(--line); }
.travel-place-buttons { display: flex; gap: .4rem; overflow-x: auto; scrollbar-width: none; }
.travel-place-buttons::-webkit-scrollbar { display: none; }
.travel-place-buttons button { min-height: 2.5rem; padding: .5rem .85rem; border: 1px solid transparent; border-radius: 2rem; background: transparent; color: var(--ink-soft); font-size: .72rem; font-weight: 750; white-space: nowrap; cursor: pointer; }
.travel-place-buttons button:hover { color: var(--moss); }
.travel-place-buttons button[aria-pressed="true"] { border-color: var(--moss); background: var(--moss); color: var(--white); }
.travel-refresh-status { color: var(--ink-soft); font-size: .64rem; }
.travel-conditions-grid { display: grid; border: 1px solid var(--line); background: var(--white); }
.travel-panel { min-width: 0; padding: clamp(1.2rem, 3vw, 2rem); }
.travel-panel + .travel-panel { border-top: 1px solid var(--line); }
.travel-panel-head { display: flex; justify-content: space-between; align-items: start; gap: 1rem; margin-bottom: 1.4rem; }
.travel-panel-head .eyebrow { margin-bottom: .35rem; }
.travel-panel-head h3 { font-size: clamp(1.35rem, 2.6vw, 1.9rem); letter-spacing: -.035em; }
.source-state { flex: 0 0 auto; padding: .3rem .5rem; border-radius: 2rem; background: var(--sand); color: var(--ink-soft); font-size: .57rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.source-state.is-live { background: var(--sky); color: var(--moss); }
.source-state.is-stale { background: oklch(93% .04 80); color: oklch(42% .08 65); }
.source-state.is-unavailable { background: var(--sand); color: var(--ink-soft); }
.weather-now { display: flex; align-items: end; gap: 1rem; }
.weather-now > strong { font-size: clamp(3.8rem, 10vw, 6.7rem); font-weight: 500; letter-spacing: -.075em; line-height: .82; }
.weather-now > div { display: grid; gap: .2rem; padding-bottom: .25rem; }
.weather-now b { font-size: .83rem; }
.weather-now span { color: var(--ink-soft); font-size: .64rem; }
.weather-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 1.6rem 0 0; border-block: 1px solid var(--line); }
.weather-facts div { min-width: 0; padding: .8rem .55rem .8rem 0; }
.weather-facts div + div { padding-left: .65rem; border-left: 1px solid var(--line); }
.weather-facts dt { color: var(--ink-soft); font-size: .57rem; }
.weather-facts dd { margin: .25rem 0 0; font-size: .72rem; font-weight: 750; }
.weather-periods { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: 1.2rem; }
.weather-period { display: grid; gap: .22rem; padding-right: .45rem; }
.weather-period span { color: var(--ink-soft); font-size: .58rem; }
.weather-period strong { font-size: .82rem; }
.weather-period small { color: var(--ink-soft); font-size: .56rem; }
.daylight-line { display: flex; justify-content: space-between; gap: 1rem; margin-top: 1.3rem; padding-top: .8rem; border-top: 1px solid var(--line); font-size: .66rem; }
.daylight-line span { color: var(--ink-soft); }
.daylight-line strong { text-align: right; }
.travel-source-note { margin: 1.1rem 0 0; color: var(--ink-soft); font-size: .57rem; }
.travel-source-note a { min-height: 44px; display: inline-flex; align-items: center; text-decoration: underline; text-underline-offset: .15rem; }
.sea-now { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-block: 1px solid var(--line); }
.sea-now > div { display: grid; align-content: start; gap: .25rem; padding: 1rem 0; }
.sea-now > div + div { padding-left: 1rem; border-left: 1px solid var(--line); }
.sea-now span { color: var(--ink-soft); font-size: .6rem; }
.sea-now strong { font-size: clamp(2rem, 5vw, 3.1rem); font-weight: 550; letter-spacing: -.06em; line-height: 1; }
.sea-now small { color: var(--ink-soft); font-size: .56rem; }
.sea-peak { min-height: 1.1rem; margin: .65rem 0 1.25rem; color: var(--ink-soft); font-size: .62rem; }
.tide-heading { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .3rem 1rem; margin-bottom: .45rem; }
.tide-heading strong { font-size: .72rem; }
.tide-heading span { color: var(--ink-soft); font-size: .58rem; }
.tide-list { margin: 0; padding: 0; border-top: 1px solid var(--line); list-style: none; }
.tide-list li { display: grid; grid-template-columns: 1.5rem 1fr auto; gap: .55rem; align-items: center; padding: .55rem 0; border-bottom: 1px solid var(--line); font-size: .66rem; }
.tide-list li > b { color: var(--moss); font-size: .78rem; text-align: center; }
.tide-list li > span { color: var(--ink-soft); }
.tide-list li > strong { font-size: var(--text-xs); }
.departures-board { padding: clamp(1.2rem, 3vw, 2rem); border: 1px solid var(--line); border-top: 0; background: var(--white); }
.departure-list { border-top: 1px solid var(--line); }
.departure-row { display: grid; grid-template-columns: 3.6rem minmax(0, 1fr) auto; gap: .8rem; align-items: center; min-height: 4.1rem; border-bottom: 1px solid var(--line); }
.departure-row time { font-size: 1rem; font-weight: 800; }
.departure-route { min-width: 0; display: grid; gap: .12rem; }
.departure-route strong { overflow: hidden; font-size: .75rem; text-overflow: ellipsis; white-space: nowrap; }
.departure-route span { color: var(--ink-soft); font-size: .6rem; }
.departure-live { color: var(--moss); font-size: .58rem; font-weight: 800; }
.departure-empty { padding: 1.6rem 0; color: var(--ink-soft); font-size: .72rem; }
.departure-footer { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .7rem 1.5rem; padding-top: 1rem; color: var(--ink-soft); font-size: .6rem; }
.departure-footer .text-link { color: var(--moss); font-size: .65rem; }
.travel-safety { display: grid; grid-template-columns: 3.5rem minmax(0, 1fr); gap: 1rem; align-items: center; padding: clamp(1.2rem, 3vw, 1.8rem); border: 1px solid var(--line); border-top: 0; background: var(--sand); }
.safety-index { width: 3.2rem; height: 3.2rem; display: grid; place-items: center; border-radius: 50%; background: var(--moss); color: var(--white); font-size: 1.35rem; font-weight: 850; }
.travel-safety .eyebrow { margin-bottom: .25rem; }
.travel-safety h3 { font-size: 1rem; }
.travel-safety p:not(.eyebrow) { max-width: 43rem; margin: .3rem 0 0; color: var(--ink-soft); font-size: .68rem; }
.travel-safety nav { grid-column: 2; display: flex; flex-wrap: wrap; gap: .45rem 1rem; }
.travel-safety nav a { min-height: var(--tap-target); display: inline-flex; align-items: center; color: var(--moss); font-size: .64rem; font-weight: 750; text-decoration: underline; text-underline-offset: .18rem; }
.travel-quicklinks { display: grid; border: 1px solid var(--line); border-top: 0; }
.travel-quicklinks a { display: grid; grid-template-columns: 1fr auto; gap: .15rem 1rem; padding: 1rem 1.2rem; }
.travel-quicklinks a + a { border-top: 1px solid var(--line); }
.travel-quicklinks span { color: var(--moss); font-size: .57rem; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.travel-quicklinks strong { font-size: .76rem; }
.travel-quicklinks b { grid-column: 2; grid-row: 1 / span 2; align-self: center; font-size: 1rem; }
.travel-quicklinks a:hover { background: var(--sky); }
.api-roadmap { border-top: 1px solid var(--line); }
.api-row { display: grid; grid-template-columns: minmax(0, 1fr); gap: .65rem; padding-block: 1.4rem; border-bottom: 1px solid var(--line); }
.api-row h3 { font-size: 1rem; }
.api-row p { max-width: 43rem; margin: .4rem 0 0; color: var(--ink-soft); font-size: .72rem; }
.api-row > strong { grid-column: 1; color: var(--ink-soft); font-size: .62rem; }
.api-status { align-self: start; justify-self: start; padding: .28rem .45rem; border-radius: 2rem; font-size: .56rem; font-weight: 850; text-transform: uppercase; letter-spacing: .05em; }
.api-status.is-live { background: var(--moss); color: var(--white); }
.api-status.is-ready { background: oklch(90% .05 80); color: oklch(39% .07 65); }
.api-status.is-editorial { background: var(--sky); color: var(--moss); }

@keyframes loading-pulse {
  from { opacity: .32; transform: scale(.72); }
  to { opacity: 1; transform: scale(1); }
}

.site-footer { padding-top: 3.5rem; background: var(--ink); color: var(--white); }
.footer-grid { display: grid; gap: 2.5rem; padding-bottom: 3rem; }
.footer-intro p { max-width: 21rem; color: var(--sky); font-size: .78rem; }
.footer-col { display: grid; align-content: start; gap: .55rem; }
.footer-toggle { width: 100%; min-height: var(--tap-target); display: flex; justify-content: space-between; align-items: center; margin: 0 0 .35rem; padding: 0; border: 0; background: transparent; color: var(--sea); font: inherit; font-size: .68rem; font-weight: 750; letter-spacing: .1em; text-align: left; text-transform: uppercase; cursor: pointer; }
.footer-toggle span { display: none; font-size: 1.1rem; font-weight: 500; letter-spacing: 0; }
.footer-links { display: grid; gap: .55rem; }
.footer-col a { font-size: .76rem; }
.footer-col a:hover { color: var(--sea); }
.footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .8rem; padding-block: 1.1rem; border-top: 1px solid oklch(95% .02 190 / .2); color: var(--sky); font-size: .63rem; }

/* Readability, touch targets and reusable editorial components */
.page-hero { padding-block: clamp(2.25rem, 4vw, 3.4rem); }
.page-hero h1 { font-size: clamp(2.3rem, 4.2vw, 3.35rem); }
.hotel-page .page-hero h1, .charging-page .page-hero h1, .travel-info-page .page-hero h1 { font-size: clamp(2.4rem, 4.4vw, 3.6rem); }
.hotel-page .section-head h2 { font-size: clamp(1.9rem, 3.3vw, 2.75rem); }
.eyebrow { font-size: .78rem; letter-spacing: .11em; }
.utility-bar { min-height: 2.5rem; font-size: .78rem; }
.header-search, .menu-button, .search-close { width: 2.75rem; height: 2.75rem; cursor: pointer; }
.nav-popover span, .search-hints a, .hero-actions, .feature-card-copy span, .breadcrumb, .source-strip, .listing-meta, .hotel-page .listing-meta, .listing-tags span, .listing-action span:first-child, .article-content .data-note, .provider-disclosure, .experience-meta, .experience-media-fallback, .experience-action .text-link, .location-link > span:first-child, .plan-step span, .plan-step p, .charger-fallback-label strong, .charger-fallback-label span, .charger-results-head span, .charger-live, .charger-result-top b, .charger-result-address, .charger-result-meta, .charger-result-context, .charger-empty p, .charger-empty .text-link, .charger-attribution, .charger-popup span, .charger-popup .charger-popup-context, .charger-popup a, .charge-stop-number, .charge-stop-region, .charge-stop-facts dt, .charge-stop-facts dd, .charge-stop-link, .travel-place-buttons button, .travel-refresh-status, .source-state, .weather-now span, .weather-facts dt, .weather-facts dd, .weather-period span, .weather-period small, .daylight-line, .travel-source-note, .sea-now span, .sea-now small, .sea-peak, .tide-heading strong, .tide-heading span, .tide-list li, .departure-route strong, .departure-route span, .departure-live, .departure-empty, .departure-footer, .departure-footer .text-link, .travel-safety p:not(.eyebrow), .travel-safety nav a, .travel-quicklinks span, .api-row p, .api-row > strong, .api-status, .footer-col strong, .footer-bottom { font-size: .75rem !important; }
.feature-card-copy p, .listing-badge { font-size: .75rem; }
.search-hints a { min-height: 2.75rem; display: inline-flex; align-items: center; }
.filter-button { min-height: var(--tap-target); display: inline-flex; align-items: center; gap: .45rem; font-size: .78rem; }
.subnav a, .travel-place-buttons button { min-height: 2.75rem; display: inline-flex; align-items: center; }
.filter-button input { width: 1.1rem; height: 1.1rem; margin: 0; accent-color: var(--moss); }
.listing-card { transition: border-color 160ms; }
.listing-card:hover { border-color: var(--moss); }
.listing-card > a { display: block; height: 100%; }
.listing-tags span { padding: .3rem .5rem; }
.provider-grid { display: grid; gap: 1rem; }
.provider-card { min-height: 11rem; display: flex; flex-direction: column; padding: 1.15rem; border: 1px solid var(--line); background: var(--white); transition: border-color 160ms, background 160ms; }
.provider-card:hover { border-color: var(--moss); background: var(--sky); }
.provider-card > span { color: var(--moss); font-size: .75rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.provider-card > strong { margin-top: .55rem; font-size: 1.05rem; }
.provider-card p { margin: .5rem 0 1rem; color: var(--ink-soft); font-size: .8rem; }
.provider-card b { margin-top: auto; color: var(--moss); font-size: .78rem; }
.partner-feed:not([hidden]) { margin-top: 1rem; }
.planner-fields { display: grid; gap: 1.5rem; }
.planner-select { width: 100%; min-height: 3rem; display: block; margin-top: .55rem; padding: .75rem .85rem; border: 1px solid var(--line); border-radius: .2rem; background: var(--white); color: var(--ink); }
.planner-fieldset { margin: 0; padding: 0; border: 0; }
.planner-options { margin-top: .7rem; }
.planner-result-title { display: block; max-width: 48rem; font-family: var(--serif); font-size: clamp(1.55rem, 3.2vw, 2.35rem); font-weight: 520; letter-spacing: -.025em; line-height: 1.05; }
.planner-result-grid { display: grid; gap: 0; margin: 1.4rem 0; border-top: 1px solid var(--ink); }
.planner-result-grid article { padding: 1rem 0; border-bottom: 1px solid var(--line); }
.planner-result-grid small { color: var(--rust); font-size: .62rem; font-weight: 800; letter-spacing: .08em; }
.planner-result-grid h3 { margin-top: .35rem; font-family: var(--serif); font-size: 1.3rem; font-weight: 550; }
.planner-result-grid p { margin: .45rem 0 0; color: var(--ink-soft); font-size: .76rem; line-height: 1.6; }
.planner-result-grid a { display: inline-flex; margin-top: .7rem; color: var(--moss); font-size: .72rem; font-weight: 800; }
.planner-result-actions { display: flex; flex-wrap: wrap; gap: .65rem; align-items: center; }
.planner-result-actions .affiliate-label { width: 100%; margin-bottom: -.35rem; }
.planner-result-note { display: block; margin-top: 1rem; color: var(--ink-soft); font-size: .65rem; line-height: 1.55; }

@media (min-width: 38rem) {
  :root { --shell: min(78rem, calc(100vw - 3rem)); }
  .category-grid { grid-template-columns: repeat(4, 1fr); }
  .feature-grid, .listing-grid { grid-template-columns: repeat(2, 1fr); }
  .experience-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .provider-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .feature-card-wide { grid-column: 1 / -1; }
  .guide-grid { grid-template-columns: repeat(2, 1fr); }
  .footer-grid { grid-template-columns: 1.3fr repeat(2, 1fr); }
  .charger-toolbar { grid-template-columns: minmax(15rem, 1fr) auto; }
  .charger-filters { grid-column: 1 / -1; }
  .travel-quicklinks { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .travel-quicklinks a + a { border-top: 0; border-left: 1px solid var(--line); }
  .api-row { grid-template-columns: 7.5rem minmax(0, 1fr); gap: 1.25rem; }
  .api-row > strong { grid-column: 2; }
  .planner-result-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .planner-result-grid article { padding: 1rem; }
  .planner-result-grid article + article { border-left: 1px solid var(--line); }
}

@media (min-width: 64rem) {
  :root { --shell: min(78rem, calc(100vw - 5rem)); }
  .hero-grid { grid-template-columns: 1.04fr .96fr; }
  .hero-media { min-height: 34rem; }
  .category-grid { grid-template-columns: repeat(8, 1fr); }
  .feature-grid { grid-template-columns: repeat(3, 1fr); }
  .feature-card-wide { grid-column: auto; }
  .location-link { grid-template-columns: 3rem 1fr 1fr auto; }
  .location-link p { display: block; }
  .plan-band-inner { grid-template-columns: 1fr 1fr; }
  .guide-grid { grid-template-columns: repeat(4, 1fr); }
  .guides-page .guide-grid { grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); }
  .home-page .guide-grid { grid-template-columns: repeat(5, 1fr); }
  .page-hero-grid { grid-template-columns: 1fr 19rem; }
  .listing-grid { grid-template-columns: repeat(3, 1fr); }
  .experience-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .provider-switch { grid-template-columns: minmax(0, 1fr) auto; }
  .content-grid { grid-template-columns: minmax(0, 1fr) 18rem; }
  .charger-toolbar { grid-template-columns: minmax(16rem, 1fr) auto auto; align-items: center; }
  .charger-filters { grid-column: auto; }
  .charger-layout { grid-template-columns: minmax(0, 1.55fr) minmax(18rem, .72fr); min-height: 38rem; }
  .charger-map-frame, .charger-map, .charger-map-fallback, .charger-map-fallback iframe { min-height: 38rem; }
  .charger-results { max-height: 38rem; border-top: 0; border-left: 1px solid var(--line); }
  .charge-stop { grid-template-columns: 3rem minmax(0, 1.35fr) minmax(15rem, .72fr) auto; gap: clamp(1.5rem, 3vw, 3rem); align-items: start; }
  .charge-stop-facts { grid-column: 3; margin-top: .35rem; }
  .charge-stop-link { grid-column: 4; align-self: center; margin-top: 0; white-space: nowrap; }
  .aurora-outlook { grid-template-columns: minmax(20rem, .72fr) minmax(0, 1.28fr); }
  .aurora-detail { border-top: 0; border-left: 1px solid rgb(255 255 255 / .18); }
  .travel-conditions-grid { grid-template-columns: minmax(0, 1.08fr) minmax(20rem, .92fr); }
  .travel-panel + .travel-panel { border-top: 0; border-left: 1px solid var(--line); }
  .api-row { grid-template-columns: 6rem minmax(0, 1fr) 15rem; gap: 1.5rem; align-items: start; }
  .api-row > strong { grid-column: 3; text-align: right; }
  .planner-tool { grid-template-columns: minmax(0, 1fr) auto; }
  .article-aside { position: sticky; top: 8rem; }
  .footer-grid { grid-template-columns: 1.5fr repeat(4, 1fr); }
}

@media (min-width: 70rem) {
  .desktop-nav { display: flex; }
  .header-cta { display: inline-flex; }
  .menu-button { display: none; }
  .mobile-menu { display: none; }
}

@media (max-width: 27rem) {
  .site-search button { padding-inline: .7rem; }
  .category-link { min-height: 5rem; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    transition-delay: 0ms !important;
  }
}

/* ViewLofoten Atlas — cohesive homepage and subpage system */

h1, h2 {
  font-family: var(--serif);
  font-weight: 520;
  letter-spacing: -.032em;
}

h3 { letter-spacing: -.018em; }
.section { padding-block: clamp(3.25rem, 6vw, 5.75rem); }
.section-head { margin-bottom: 1.6rem; }
.section-head h2 { font-size: clamp(2rem, 4vw, 3.1rem); }
.eyebrow { color: var(--moss); font-size: var(--text-xs) !important; letter-spacing: .13em; }
.button { border-radius: .5rem; }
.button-secondary { background: var(--white); }
.utility-bar { display: none; }

.site-header,
.home-page .site-header {
  position: absolute;
  z-index: 50;
  inset: .45rem .45rem auto;
  width: auto;
  height: 4.8rem;
  padding-inline: max(1.25rem, calc((100vw - 80rem) / 2 + .35rem));
  color: var(--white);
  background: var(--footer);
  border: 1px solid rgb(255 255 255 / .12);
  box-shadow: none;
  text-shadow: none;
  backdrop-filter: none;
}

.site-header.is-scrolled,
.home-page .site-header.is-scrolled {
  position: fixed;
  inset: 0 0 auto;
  color: var(--ink);
  background: color-mix(in srgb, var(--paper) 96%, transparent);
  border-bottom: 1px solid var(--line);
  box-shadow: 0 6px 20px rgb(8 24 24 / .06);
  text-shadow: none;
  backdrop-filter: blur(16px);
}

.brand { gap: .58rem; font-size: .84rem; letter-spacing: .07em; }
.brand-mark,
.home-page .brand-mark,
.site-header.is-scrolled .brand-mark,
.home-page .site-header.is-scrolled .brand-mark {
  width: 2.35rem;
  height: 2.35rem;
  background: transparent;
  color: currentColor;
  border-radius: 0;
}
.brand-mark { flex-shrink: 0; }
.brand-mark svg { display: block; width: 100%; height: 100%; }
.brand-name { min-width: 0; display: grid; font-size: 1.0625rem; font-weight: 800; letter-spacing: -.025em; line-height: 1; white-space: nowrap; }
.brand-name small { margin-top: .32rem; font-size: .625rem; font-weight: 650; letter-spacing: .12em; }
.desktop-nav { gap: clamp(.72rem, 1.45vw, 1.35rem); }
.desktop-nav > a,
.nav-menu > button { height: 4.8rem; color: inherit; font-size: .8125rem; font-weight: 650; text-shadow: inherit; }
.desktop-nav > a::after,
.nav-menu > button::after { bottom: .55rem; background: var(--moss-soft); }
.nav-popover { top: calc(100% - .25rem); border: 0; border-radius: .75rem; box-shadow: 0 20px 60px rgb(8 24 24 / .2); text-shadow: none; }
.nav-popover a { border-radius: .5rem; }
.header-actions { gap: .42rem; }
.header-search,
.home-page .header-search,
.site-header.is-scrolled .header-search,
.home-page .site-header.is-scrolled .header-search {
  width: var(--tap-target);
  height: var(--tap-target);
  color: inherit;
  background: rgb(255 255 255 / .08);
  border: 1px solid rgb(255 255 255 / .26);
}
.site-header.is-scrolled .header-search { background: var(--white); border-color: var(--line); }
.header-cta,
.home-page .header-cta,
.site-header.is-scrolled .header-cta,
.home-page .site-header.is-scrolled .header-cta {
  min-height: var(--tap-target);
  padding-inline: 1rem;
  background: var(--moss);
  color: var(--white);
  border: 1px solid rgb(255 255 255 / .18);
  font-size: var(--text-xs);
}
.menu-button,
.home-page .menu-button,
.site-header.is-scrolled .menu-button,
.home-page .site-header.is-scrolled .menu-button { background: rgb(8 24 24 / .56); }
.menu-button span,
.home-page .menu-button span,
.site-header.is-scrolled .menu-button span,
.home-page .site-header.is-scrolled .menu-button span { background: var(--white); }
.mobile-menu { inset: 4.8rem 0 0; padding-top: 1.5rem; background: var(--paper); }
.mobile-menu nav > a,
.mobile-menu summary { font-family: var(--serif); font-size: 1.55rem; font-weight: 520; }

.search-panel { background: rgb(8 24 24 / .68); }
.search-dialog { border-radius: .85rem; }
.site-search { border-radius: .55rem; }

.home-hero {
  min-height: 45rem;
  margin: .45rem;
  padding: 8rem 0 0;
  border-radius: .55rem;
  justify-content: flex-end;
  background: var(--ink);
}
.home-hero .hero-background img { object-position: 72% center; }
.home-hero .hero-overlay { background: linear-gradient(90deg, rgb(5 18 20 / .74), rgb(5 18 20 / .6)); }
.hero-content {
  display: flex;
  flex: 1;
  flex-direction: column;
  justify-content: flex-end;
  margin-block: 0;
  padding-top: 6rem;
}
.hero-intro { margin-bottom: clamp(2.25rem, 6vh, 5rem); }
.hero-intro .eyebrow { color: var(--sky); }
.hero-intro h1 {
  max-width: 42rem;
  color: var(--white);
  font-size: clamp(3.25rem, 5.6vw, 5.3rem);
  font-weight: 430;
  line-height: .86;
}
.hero-intro > p:last-child { margin: 1.15rem 0 0; color: var(--white); font-size: 1rem; }

.journey-builder {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  overflow: hidden;
  padding: .55rem;
  border-radius: .75rem;
  background: var(--white);
  color: var(--ink);
  box-shadow: 0 18px 45px rgb(0 0 0 / .2);
}
.journey-builder label {
  min-width: 0;
  display: grid;
  gap: .14rem;
  padding: .72rem .85rem;
  border-bottom: 1px solid var(--line);
}
.journey-builder label:nth-child(odd) { border-right: 1px solid var(--line); }
.journey-builder label span { color: var(--ink-soft); font-size: var(--text-xs); }
.journey-builder label strong { font-size: .8125rem; }
.journey-builder input,
.journey-builder select {
  width: 100%;
  min-width: 0;
  height: var(--tap-target);
  padding: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--ink-soft);
  font-size: var(--text-sm);
}
.journey-builder .button { grid-column: 1 / -1; min-height: 3.3rem; margin-top: .55rem; }
.hero-status {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-top: .55rem;
  background: var(--footer);
}
.hero-status a {
  min-width: 0;
  display: grid;
  grid-template-columns: 1.8rem minmax(0, 1fr);
  grid-template-rows: auto auto auto;
  align-items: center;
  padding: .8rem .65rem;
  border-right: 1px solid rgb(255 255 255 / .12);
}
.hero-status a:hover { background: rgb(255 255 255 / .06); }
.status-icon { grid-row: 1 / 4; color: var(--gold); font-size: 1.15rem; }
.hero-status small { color: var(--moss-soft); font-size: var(--text-xs); text-transform: uppercase; letter-spacing: .04em; }
.hero-status strong { overflow: hidden; color: var(--white); font-size: .8125rem; text-overflow: ellipsis; white-space: nowrap; }
.hero-status em { overflow: hidden; color: var(--moss-soft); font-size: var(--text-xs); font-style: normal; text-overflow: ellipsis; white-space: nowrap; }

.editorial-welcome { padding-block: clamp(4.5rem, 9vw, 8.5rem); }
.editorial-welcome-kicker {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: clamp(2.5rem, 5vw, 4.5rem);
  padding-bottom: .8rem;
  border-bottom: 1px solid var(--ink);
  color: var(--ink-soft);
  font-size: var(--text-xs);
  font-weight: 750;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.editorial-welcome-grid { display: grid; gap: 1.5rem; }
.editorial-welcome-grid h2 { max-width: 44rem; font-size: clamp(3rem, 7.5vw, 6.7rem); font-weight: 430; line-height: .86; }
.editorial-welcome-grid > div { max-width: 35rem; align-self: end; }
.editorial-welcome-grid p { margin: 0 0 1.4rem; color: var(--ink-soft); font-size: clamp(1rem, 1.7vw, 1.2rem); line-height: 1.75; }
.planning-shortcuts { display: grid; gap: 1px; margin-top: clamp(3rem, 7vw, 6rem); padding: 1px; background: var(--ink); }
.planning-shortcuts a { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto auto; gap: .35rem 1rem; padding: 1rem; background: var(--paper); transition: background 160ms ease; }
.planning-shortcut-label { color: var(--ink-soft); font-size: .64rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.planning-shortcut-copy { min-width: 0; display: grid; gap: .25rem; }
.planning-shortcut-copy strong { font-family: var(--sans); font-size: .96rem; font-weight: 760; letter-spacing: -.018em; line-height: 1.25; }
.planning-shortcut-copy small { color: var(--ink-soft); font-size: .76rem; line-height: 1.45; }
.planning-shortcut-arrow { grid-column: 2; grid-row: 1 / 3; align-self: stretch; width: 2.35rem; display: grid; place-items: center; border-left: 1px solid var(--line); color: var(--ink); font-size: 1rem; transition: transform 160ms ease; }
.planning-shortcuts a:hover { background: #f7f7f3; }
.planning-shortcuts a:hover .planning-shortcut-arrow { transform: translateX(.15rem); }

.season-stories { margin-top: clamp(4rem, 8vw, 7rem); padding-block: clamp(4.5rem, 8vw, 7rem); background: var(--ink); color: var(--white); }
.season-stories-head { display: grid; gap: 1.5rem; margin-bottom: 2rem; }
.season-stories-head .eyebrow { color: var(--moss-soft); }
.season-stories-head h2 { max-width: 48rem; color: var(--white); font-size: clamp(2.7rem, 6vw, 5.6rem); font-weight: 430; line-height: .9; }
.season-stories-head > p { max-width: 34rem; margin: 0; align-self: end; color: var(--moss-soft); line-height: 1.7; }
.season-story-grid { display: grid; gap: .65rem; }
.season-story { position: relative; min-height: 20rem; overflow: hidden; isolation: isolate; background: var(--footer); }
.season-story::after { content: ""; position: absolute; z-index: -1; inset: 30% 0 0; background: linear-gradient(transparent, rgb(4 20 22 / .9)); }
.season-story img { position: absolute; z-index: -2; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 700ms var(--ease); }
.season-story:hover img { transform: scale(1.035); }
.season-art-label { position: absolute; top: .8rem; left: .8rem; padding: .3rem .45rem; background: var(--footer); color: var(--white); font-size: .68rem; font-weight: 700; }
.season-story > div { position: absolute; right: 0; bottom: 0; left: 0; display: grid; gap: .3rem; padding: clamp(1rem, 2.5vw, 1.6rem); background: var(--footer); }
.season-story small { color: var(--moss-soft); font-size: .7rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.season-story strong { font-family: var(--serif); font-size: clamp(1.65rem, 3.4vw, 2.55rem); font-weight: 520; line-height: 1; }
.season-story p { max-width: 32rem; margin: .2rem 0 0; color: rgb(255 255 255 / .82); font-size: .78rem; }
.season-story b { margin-top: .55rem; color: var(--white); font-size: .75rem; }

.atlas-section { padding-block: 2.2rem 0; }
.atlas-section-head { display: flex; justify-content: space-between; align-items: end; gap: 1rem; margin-bottom: .85rem; }
.atlas-section-head h2 { font-size: clamp(1.8rem, 3.2vw, 2.45rem); }
.atlas-section-head > a { min-height: var(--tap-target); display: inline-flex; align-items: center; color: var(--ink-soft); font-size: var(--text-xs); font-weight: 700; }
.atlas-section-head > a:hover { color: var(--moss); }
.explore-grid,
.route-grid {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(9.5rem, 42vw);
  gap: .65rem;
  overflow-x: auto;
  padding: .1rem .1rem .75rem;
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
}
.explore-card,
.route-card { scroll-snap-align: start; }
.explore-card {
  position: relative;
  display: grid;
  grid-template-rows: 9.7rem auto auto;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: .7rem;
  background: var(--white);
  transition: transform 180ms var(--ease), box-shadow 180ms var(--ease);
}
.explore-card:hover { transform: translateY(-3px); box-shadow: var(--shadow); }
.explore-card img { width: 100%; height: 9.7rem; object-fit: cover; }
.explore-card .round-icon {
  position: absolute;
  top: 8.55rem;
  left: .65rem;
  width: 2rem;
  height: 2rem;
  display: grid;
  place-items: center;
  border: 2px solid var(--white);
  border-radius: 50%;
  background: var(--white);
  color: var(--ink);
  box-shadow: 0 4px 12px rgb(8 24 24 / .12);
  font-weight: 800;
}
.explore-card strong { padding: 1.2rem .7rem .12rem; font-size: var(--text-sm); }
.explore-card small { padding: 0 .7rem .75rem; color: var(--ink-soft); font-size: var(--text-xs); }

.route-card { overflow: hidden; border: 1px solid var(--line); border-radius: .7rem; background: var(--white); }
.route-card > div { position: relative; height: 9.2rem; overflow: hidden; }
.route-card img { width: 100%; height: 100%; object-fit: cover; transition: transform 220ms var(--ease); }
.route-card:hover img { transform: scale(1.025); }
.route-card > div span { position: absolute; top: .55rem; left: .55rem; padding: .25rem .45rem; border-radius: .28rem; background: var(--moss); color: var(--white); font-size: var(--text-xs); font-weight: 800; text-transform: uppercase; }
.route-card section { display: grid; gap: .24rem; padding: .75rem; }
.route-card section strong { min-height: 2.05rem; font-size: .8125rem; line-height: 1.28; }
.route-card section small { min-height: 1.7rem; color: var(--ink-soft); font-size: var(--text-xs); }
.route-card section p { display: flex; justify-content: space-between; margin: .4rem 0 0; padding-top: .5rem; border-top: 1px solid var(--line); color: var(--ink-soft); font-size: var(--text-xs); }
.route-card section b { color: var(--moss); }

.atlas-tools { display: grid; gap: 1rem; padding-bottom: 2.2rem; }
.map-card,
.suggestions-card { min-width: 0; padding: 1rem; border: 1px solid var(--line); border-radius: .8rem; background: var(--white); }
.map-card .atlas-section-head,
.suggestions-card .atlas-section-head { margin-bottom: .65rem; }
.lofoten-map { position: relative; min-height: 22rem; overflow: hidden; border-radius: .6rem; background: var(--sea); }
.lofoten-map > svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.map-waterline { fill: none; stroke: rgb(255 255 255 / .45); stroke-width: 2; }
.map-islands { fill: var(--surface-soft); stroke: var(--line); stroke-width: 2; }
.map-road { fill: none; stroke: var(--sand); stroke-width: 4; stroke-linecap: round; }
.map-pin { position: absolute; min-width: var(--tap-target); min-height: var(--tap-target); display: grid; place-content: center; justify-items: center; color: var(--ink); font-size: var(--text-xs); transform: translate(-50%, -50%); }
.map-pin span { width: 1.75rem; height: 1.75rem; display: grid; place-items: center; border: 2px solid var(--white); border-radius: 50%; background: var(--moss); color: var(--white); box-shadow: 0 5px 14px rgb(8 24 24 / .22); font-size: .8rem; }
.map-pin strong { margin-top: .2rem; padding: .08rem .25rem; border-radius: .2rem; background: rgb(255 255 255 / .8); }
.pin-svolvaer { top: 31%; left: 20%; }
.pin-henningsvaer { top: 45%; left: 32%; }
.pin-leknes { top: 55%; left: 52%; }
.pin-reine { top: 71%; left: 75%; }
.pin-a { top: 79%; left: 89%; }
.map-button { position: absolute; left: .75rem; bottom: .75rem; min-height: var(--tap-target); font-size: var(--text-xs); }
.suggestion-summary { margin: 0 0 .45rem; color: var(--ink-soft); font-size: var(--text-xs); }
.suggestions-card > a:not(.suggestions-more) { display: grid; grid-template-columns: 4.8rem minmax(0, 1fr) auto; gap: .65rem; align-items: center; padding: .65rem 0; border-bottom: 1px solid var(--line); }
.suggestions-card > a img { width: 4.8rem; height: 3.25rem; border-radius: .35rem; object-fit: cover; }
.suggestions-card > a span { min-width: 0; display: grid; }
.suggestions-card > a strong { font-size: .8125rem; }
.suggestions-card > a small { overflow: hidden; color: var(--ink-soft); font-size: var(--text-xs); text-overflow: ellipsis; white-space: nowrap; }
.suggestions-card > a em { padding: .32rem .45rem; border: 1px solid var(--line); border-radius: .3rem; color: var(--moss); font-size: var(--text-xs); font-style: normal; }
.suggestions-more { display: inline-flex; gap: .45rem; margin-top: .85rem; color: var(--moss); font-size: var(--text-xs); font-weight: 750; }

.trust-strip { display: grid; gap: 1px; margin-bottom: 2.2rem; padding: 1px; overflow: hidden; border: 1px solid var(--line); border-radius: .8rem; background: var(--line); }
.trust-strip > div { display: grid; grid-template-columns: 2.25rem 1fr; align-items: center; padding: .9rem; background: var(--surface-soft); }
.trust-strip > div > span { font-size: 1.25rem; }
.trust-strip p { display: grid; margin: 0; }
.trust-strip strong { font-size: var(--text-xs); }
.trust-strip small { color: var(--ink-soft); font-size: var(--text-xs); }

body:not(.home-page) main { position: relative; }
body:not(.home-page) .breadcrumb {
  position: absolute;
  z-index: 5;
  top: 5.15rem;
  left: 50%;
  width: var(--shell);
  padding: .7rem 0;
  color: rgb(255 255 255 / .76);
  transform: translateX(-50%);
}
body:not(.home-page) .breadcrumb a:hover { color: var(--white); }
.page-hero {
  position: relative;
  min-height: 25rem;
  display: flex;
  align-items: end;
  padding: 8rem 0 3rem;
  overflow: hidden;
  color: var(--white);
  background-image: url("/assets/editorial/licensed/unstad-beach-960.webp");
  background-position: center;
  background-size: cover;
  border: 0;
}
.page-hero::before { content: ""; position: absolute; inset: 0; background: rgb(5 18 20 / .55); }
.page-hero-grid { position: relative; z-index: 1; width: var(--shell); grid-template-columns: minmax(0, 1fr) minmax(15rem, 19rem); }
.page-hero .eyebrow { color: var(--sky); }
.page-hero h1,
.hotel-page .page-hero h1,
.charging-page .page-hero h1,
.travel-info-page .page-hero h1 {
  max-width: 49rem;
  color: var(--white);
  font-family: var(--serif);
  font-size: clamp(2.75rem, 5.2vw, 4rem);
  font-weight: 650;
  letter-spacing: -.045em;
  line-height: .98;
}
.page-hero-copy > p:not(.eyebrow) { max-width: 39rem; color: rgb(255 255 255 / .86); font-size: .91rem; }
.page-hero-aside { padding: 1rem; border: 1px solid rgb(255 255 255 / .22); border-radius: .6rem; background: rgb(6 25 27 / .7); color: rgb(255 255 255 / .84); font-size: .8125rem; backdrop-filter: blur(8px); }
.page-hero-aside strong { color: var(--white); }
.hotel-page .page-hero { background-image: url("/assets/editorial/licensed/reine-village-960.webp"); }
.reine-page .page-hero,
.places-page .page-hero { background-image: url("/assets/editorial/licensed/henningsvaer-harbour-960.webp"); }
.about-page .page-hero { background-image: url("/assets/editorial/licensed/henningsvaer-harbour-1920.webp"); }
.restaurant-page .page-hero { background-image: url("/assets/editorial/licensed/svolvaer-harbour-1920.webp"); background-position: center 58%; }
.tour-page .page-hero { background-image: url("/assets/editorial/licensed/reine-village-1920.webp"); }
.events-page .page-hero { background-image: url("/assets/editorial/licensed/henningsvaer-harbour-1920.webp"); }
.guides-page .page-hero { background-image: url("/assets/lofoten-summer-800.webp"); }
.planner-page .page-hero,
.travel-info-page .page-hero { background-image: url("/assets/editorial/licensed/unstad-beach-1920.webp"); }
.charging-page .charging-hero { background-image: none; }
.charging-hero-media { position: absolute; z-index: 0; inset: 0; display: block; width: 100%; height: 100%; }
.charging-hero-media img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.charging-hero::before { z-index: 1; }
.charging-hero .page-hero-grid { z-index: 2; }
.privacy-page .page-hero { background-image: url("/assets/editorial/licensed/unstad-beach-1920.webp"); }
.itinerary-page .page-hero { background-image: url("/assets/editorial/licensed/ramberg-beach-1920.webp"); background-position: center 58%; }
@media (min-width: 64rem) {
  .page-hero { background-image: url("/assets/editorial/licensed/unstad-beach-1920.webp"); }
}
.subnav { top: 4.8rem; background: color-mix(in srgb, var(--paper) 96%, transparent); box-shadow: 0 5px 18px rgb(8 24 24 / .04); }
.subnav-inner { gap: 1.55rem; }
.subnav a { position: relative; color: var(--ink-soft); font-size: .8125rem !important; }
.subnav a[aria-current="page"]::after { content: ""; position: absolute; right: 0; bottom: 0; left: 0; height: 2px; background: var(--moss); }

.soft-section { background: var(--surface-soft); }
.listing-grid { gap: .9rem; }
.listing-card,
.guide-card,
.provider-card,
.article-aside,
.planner-tool,
.travel-conditions-grid,
.departures-board,
.charger-layout { overflow: hidden; border-radius: .75rem; background: var(--white); }
.listing-card { box-shadow: 0 7px 24px rgb(8 24 24 / .04); }
.listing-card:hover { border-color: var(--moss-soft); box-shadow: var(--shadow); }
.listing-image { aspect-ratio: 16 / 9; }
.listing-copy { padding: 1rem; }
.listing-copy h2,
.listing-copy h3,
.hotel-page .listing-copy h2,
.hotel-page .listing-copy h3 { font-family: var(--serif); font-size: 1.5rem; font-weight: 520; }
.listing-badge { border-radius: .35rem; }
.guide-card { min-height: 10rem; border-radius: .65rem; }
.guide-card h3,
.hotel-page .guide-card h3 { font-family: var(--serif); font-size: 1.3rem; font-weight: 520; }
.location-link h3,
.hotel-page .section-head h2,
.hotel-page .article-content h2,
.hotel-page .article-content h3,
.hotel-page .article-aside h2 { font-family: var(--serif); font-weight: 520; }
.filter-button { border-radius: 2rem; }
.filter-button[aria-pressed="true"] { box-shadow: inset 0 0 0 1px rgb(255 255 255 / .2); }
.source-strip,
.provider-switch,
.callout { border-radius: .65rem; }
.article-content h2 { font-family: var(--serif); font-size: 2.15rem; font-weight: 520; }
.article-content h3 { font-family: var(--sans); font-size: 1.12rem; font-weight: 750; }
.article-aside h2 { font-family: var(--serif); font-weight: 520; }
.travel-panel-head h3,
.charge-stop-copy h3 { font-family: var(--serif); font-weight: 520; }
.charger-map-frame { border-radius: .75rem 0 0 .75rem; }

.site-footer { margin: 0 .45rem .45rem; padding-top: 3rem; border-radius: .6rem; background: var(--footer); }
.site-footer .brand-mark { color: var(--white); }
.footer-intro p { color: var(--sky); }
.footer-plan-link { display: inline-flex; gap: .45rem; margin-top: .75rem; color: var(--moss-soft); font-size: var(--text-xs); font-weight: 700; }
.footer-col strong { color: var(--moss-soft); }
.footer-col a { color: var(--sky); }

@media (min-width: 38rem) {
  :root { --shell: min(76rem, calc(100vw - 3rem)); }
  .journey-builder { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .lodging-rate-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rate-child-ages { grid-column: 1 / -1; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rate-submit { grid-column: 1 / -1; }
  .journey-builder label:nth-child(odd) { border-right: 0; }
  .journey-builder label:not(:nth-child(3n)) { border-right: 1px solid var(--line); }
  .journey-builder .button { grid-column: 3; margin: 0 0 0 .55rem; }
  .hero-status { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .atlas-tools { grid-template-columns: 1fr 1fr; }
  .trust-strip { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

@media (min-width: 64rem) {
  :root { --shell: min(76rem, calc(100vw - 5rem)); }
  .hotel-page .page-hero { background-image: url("/assets/editorial/licensed/reine-village-1920.webp"); }
  .reine-page .page-hero,
  .places-page .page-hero { background-image: url("/assets/editorial/licensed/henningsvaer-harbour-1920.webp"); }
  .guides-page .page-hero { background-image: url("/assets/lofoten-summer.webp"); }
  .desktop-nav { display: flex; }
  .header-cta { display: inline-flex; }
  .menu-button { display: none; }
  .mobile-menu { display: none; }
  .home-hero { min-height: min(41rem, calc(100vh - .9rem)); }
  .hero-intro { margin-bottom: clamp(2.5rem, 8vh, 5.7rem); }
  .journey-builder { grid-template-columns: 1.05fr .75fr .82fr 1.08fr .75fr auto; align-items: stretch; }
  .lodging-rate-card { grid-template-columns: minmax(15rem, .72fr) minmax(0, 1.6fr); gap: 1.5rem 2rem; align-items: end; padding: 1.35rem 1.5rem; }
  .lodging-rate-form { grid-template-columns: repeat(4, minmax(0, 1fr)) minmax(9rem, auto); }
  .rate-child-ages { grid-column: 1 / -1; grid-row: 2; grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .rate-submit { grid-column: 5; grid-row: 1; }
  .lodging-rate-status,
  .lodging-rate-disclosure { grid-column: 2; }
  .journey-builder label { border-bottom: 0; }
  .journey-builder label:not(:nth-child(3n)) { border-right: 1px solid var(--line); }
  .journey-builder label:nth-child(3) { border-right: 1px solid var(--line); }
  .journey-builder .button { grid-column: auto; min-width: 10.4rem; min-height: 0; margin: 0 0 0 .55rem; }
  .explore-grid,
  .route-grid { grid-auto-flow: row; grid-auto-columns: auto; grid-auto-rows: auto; overflow: visible; }
  .explore-card,
  .route-card { grid-area: auto; grid-column: auto; grid-row: auto; min-width: 0; }
  .atlas-tools { grid-template-columns: 1fr 1fr; }
  .page-hero-grid { grid-template-columns: minmax(0, 1fr) minmax(15rem, 19rem); }
  .listing-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 63.99rem) {
  .site-header,
  .home-page .site-header { padding-inline: 1.05rem; }
  .page-hero-grid { grid-template-columns: 1fr; }
  .page-hero-aside { max-width: 34rem; }
}

@media (max-width: 37.99rem) {
  :root { --shell: min(calc(100% - 1.5rem), 76rem); }
  .home-hero { min-height: 35rem; margin: 0; border-radius: 0; }
  .site-header,
  .home-page .site-header { inset: .25rem .25rem auto; height: 4.4rem; }
  .site-header.is-scrolled,
  .home-page .site-header.is-scrolled { inset: 0 0 auto; }
  .brand-name small { display: none; }
  .mobile-menu { inset: 4.4rem 0 0; }
  .hero-content { padding-top: 5rem; }
  .hero-intro { margin-bottom: 2rem; }
  .hero-intro h1 { font-size: clamp(2.75rem, 12vw, 3.65rem); line-height: .96; }
  .hero-intro > p:last-child { max-width: 20rem; font-size: .86rem; }
  .journey-builder label:nth-child(odd) { border-right: 1px solid var(--line); }
  .journey-builder label:nth-child(even) { border-right: 0; }
  .hero-status a { padding: .65rem .45rem; }
  .hero-status a:nth-child(3n) { border-right: 0; }
  .hero-status em { display: none; }
  .atlas-section { padding-top: 1.7rem; }
  .atlas-section-head h2 { font-size: 1.75rem; }
  .atlas-tools { grid-template-columns: 1fr; }
  .suggestions-card > a:not(.suggestions-more) { grid-template-columns: 4.3rem minmax(0, 1fr); }
  .suggestions-card > a em { display: none; }
  .trust-strip { grid-template-columns: 1fr; }
  body:not(.home-page) .breadcrumb { top: 4.55rem; }
  .page-hero { min-height: 25rem; padding: 7.5rem 0 2.5rem; }
  .page-hero h1,
  .hotel-page .page-hero h1,
  .charging-page .page-hero h1,
  .travel-info-page .page-hero h1 { font-size: clamp(2.5rem, 11vw, 3.25rem); }
  .page-hero-grid { gap: 1.15rem; }
  .page-hero-aside {
    display: block;
    max-width: none;
    padding: .72rem .82rem;
    background: rgb(6 25 27 / .9);
    font-size: .75rem;
    line-height: 1.45;
    backdrop-filter: none;
  }
  .subnav { top: 4.4rem; }
  .aurora-place-bar { align-items: start; }
  .aurora-place-buttons { flex-basis: 100%; }
  .aurora-metrics { grid-template-columns: 1fr; }
  .aurora-components label { grid-template-columns: 5.5rem minmax(0, 1fr) 2rem; gap: .55rem; }
  .site-footer { margin: 0 .25rem .25rem; }
}

/* 2026-08 field-journal direction: photography first, quieter controls. */
.eyebrow {
  margin-bottom: .65rem;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .015em;
  text-transform: none;
}

.button {
  border-radius: 0;
  font-weight: 720;
}

.text-link {
  gap: 0;
  padding-bottom: .12rem;
}

.home-hero {
  min-height: clamp(34rem, 72svh, 44rem);
  margin: 0;
  padding: 0;
  border-radius: 0;
  background: var(--ink);
}

.home-hero .hero-background img { object-position: 58% center; }
.home-hero .hero-overlay {
  background:
    linear-gradient(90deg, rgb(6 19 22 / .76) 0%, rgb(6 19 22 / .42) 46%, rgb(6 19 22 / .05) 76%),
    linear-gradient(0deg, rgb(6 19 22 / .5) 0%, transparent 48%);
}

.hero-content {
  justify-content: flex-end;
  padding-top: 6rem;
  padding-bottom: clamp(2.5rem, 6vh, 4.5rem);
}

.hero-intro { max-width: 48rem; margin: 0; }
.hero-intro .eyebrow { color: rgb(255 255 255 / .78); }
.hero-intro h1 {
  max-width: 42rem;
  font-family: var(--serif);
  font-size: clamp(3.1rem, 6vw, 5rem);
  font-weight: 680;
  letter-spacing: -.052em;
  line-height: .94;
}
.hero-intro > p:last-of-type {
  max-width: 39rem;
  margin-top: 1.35rem;
  color: rgb(255 255 255 / .88);
  font-size: clamp(1rem, 1.5vw, 1.18rem);
  line-height: 1.65;
}
.hero-primary-actions { margin-top: 1.6rem; }
.hero-primary-actions .button { min-width: 10.5rem; }
.hero-primary-actions .button-secondary {
  border-color: rgb(255 255 255 / .62);
  color: var(--white);
}
.hero-primary-actions .button-secondary:hover { background: rgb(255 255 255 / .12); }
.hero-image-label {
  right: 1rem;
  bottom: 1rem;
  left: auto;
  padding: .25rem .4rem;
  background: rgb(6 19 22 / .58);
  color: rgb(255 255 255 / .8);
  font-size: .62rem;
}

.home-live-strip {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(10.5rem, 1fr);
  overflow-x: auto;
  border-bottom: 1px solid var(--line);
  scrollbar-width: thin;
}
.home-live-strip a {
  min-width: 0;
  display: grid;
  align-content: center;
  gap: .12rem;
  min-height: 6.6rem;
  padding: 1rem clamp(.85rem, 2vw, 1.5rem);
  border-right: 1px solid var(--line);
  background: var(--paper);
}
.home-live-strip a:last-child { border-right: 0; }
.home-live-strip a:hover { background: var(--sky); }
.home-live-strip small { color: var(--ink-soft); font-size: .67rem; }
.home-live-strip strong { overflow: hidden; font-size: .84rem; text-overflow: ellipsis; white-space: nowrap; }
.home-live-strip span { overflow: hidden; color: var(--ink-soft); font-size: .68rem; text-overflow: ellipsis; white-space: nowrap; }

@media (min-width: 44rem) {
  .home-live-strip {
    grid-template-columns: repeat(5, minmax(0, 1fr));
    grid-auto-flow: row;
    grid-auto-columns: auto;
    overflow-x: visible;
  }
}

.editorial-welcome { padding-block: clamp(3.75rem, 7vw, 6rem); }
.editorial-welcome-grid { grid-template-columns: minmax(0, 1.45fr) minmax(18rem, .55fr); gap: clamp(2rem, 7vw, 7rem); }
.editorial-welcome-grid h2 {
  max-width: 58rem;
  font-size: clamp(2.35rem, 4.3vw, 3.7rem);
  font-weight: 650;
  letter-spacing: -.046em;
  line-height: .98;
}

.home-planner-section {
  padding-block: clamp(3rem, 6vw, 5rem);
  border-block: 1px solid var(--line);
  background: var(--white);
}
.home-planner-layout { display: grid; gap: clamp(2rem, 6vw, 5rem); align-items: start; }
.home-planner-intro h2 {
  max-width: 39rem;
  font-size: clamp(2.1rem, 3.8vw, 3.2rem);
  font-weight: 640;
  letter-spacing: -.04em;
  line-height: 1;
}
.home-planner-intro > p:last-child { max-width: 32rem; margin: 1rem 0 0; color: var(--ink-soft); }
.home-planner-section .journey-builder {
  margin: 0;
  padding: 0;
  overflow: visible;
  border: 1px solid var(--line);
  border-radius: 0;
  background: var(--paper);
  box-shadow: none;
}
.home-planner-section .journey-builder label { padding: .85rem 1rem; }
.home-planner-section .journey-builder .button { margin: .75rem; }

.home-page .atlas-section { padding-top: clamp(3.5rem, 7vw, 5.75rem); }
.atlas-section-head { margin-bottom: 1.35rem; }
.atlas-section-head > div { display: grid; gap: .1rem; }
.atlas-section-head .eyebrow { margin: 0; }
.home-page .atlas-section-head h2 {
  font-size: clamp(2.15rem, 4vw, 3.4rem);
  font-weight: 650;
  letter-spacing: -.045em;
}
.home-page .atlas-section-head > a {
  border-bottom: 1px solid currentColor;
  color: var(--ink);
  font-size: .8rem;
}

.home-page .explore-grid {
  display: grid;
  grid-auto-flow: row;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.25rem;
  overflow: visible;
  padding: 0;
}
.home-page .explore-card {
  position: relative;
  display: grid;
  grid-template-rows: auto auto auto;
  overflow: hidden;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  grid-area: auto;
  grid-column: auto;
  grid-row: auto;
  min-width: 0;
}
.home-page .explore-card:hover { transform: none; box-shadow: none; }
.home-page .explore-card img {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: transform 500ms var(--ease);
}
.home-page .explore-card:hover img { transform: scale(1.018); }
.home-page .explore-card strong {
  padding: .85rem 0 0;
  color: var(--ink);
  font-family: var(--serif);
  font-size: clamp(1.3rem, 2vw, 1.8rem);
  font-weight: 650;
  letter-spacing: -.035em;
}
.home-page .explore-card small { padding: .18rem 0 0; color: var(--ink-soft); font-size: .78rem; }
.editorial-media-label {
  position: absolute;
  z-index: 1;
  top: .65rem;
  left: .65rem;
  padding: .24rem .38rem;
  background: rgb(7 24 27 / .7);
  color: rgb(255 255 255 / .86);
  font-size: .58rem;
}

.home-page .season-stories {
  margin-top: clamp(3.75rem, 7vw, 6rem);
  padding-block: clamp(3.5rem, 6vw, 5rem);
  border-block: 1px solid var(--line);
  background: var(--paper);
  color: var(--ink);
}
.home-page .season-stories-head .eyebrow { color: var(--moss); }
.home-page .season-stories-head h2 {
  color: var(--ink);
  font-size: clamp(2.25rem, 4.2vw, 3.6rem);
  font-weight: 650;
  letter-spacing: -.045em;
  line-height: 1;
}
.home-page .season-stories-head > p { color: var(--ink-soft); }
.home-page .season-story-grid { gap: 0; grid-auto-rows: auto; grid-template-rows: none; border-top: 1px solid var(--ink); }
.home-page .season-story {
  min-height: 0;
  display: grid;
  gap: .55rem;
  padding: 1.35rem .2rem 1.5rem;
  border-bottom: 1px solid var(--line);
  background: transparent;
  color: var(--ink);
}
.home-page .season-story::after { display: none; }
.home-page .season-story small { color: var(--ink-soft); font-size: .68rem; letter-spacing: 0; text-transform: none; }
.home-page .season-story strong { font-family: var(--serif); font-size: 1.35rem; font-weight: 650; letter-spacing: -.03em; }
.home-page .season-story p { max-width: 24rem; margin: 0; color: var(--ink-soft); font-size: .78rem; }

.home-page .route-grid {
  grid-auto-flow: row;
  grid-auto-columns: auto;
  grid-auto-rows: auto;
  gap: 1rem;
}
.home-page .route-card { grid-area: auto; grid-column: auto; grid-row: auto; min-width: 0; border: 0; border-radius: 0; background: transparent; }
.home-page .route-card > div { height: auto; }
.home-page .route-card img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
.home-page .route-card > div span { border-radius: 0; background: rgb(7 24 27 / .78); }
.home-page .route-card section { padding: .8rem 0 0; }
.home-page .route-card section strong { min-height: 0; font-family: var(--serif); font-size: 1.2rem; font-weight: 650; }
.home-page .route-card section small { min-height: 0; }
.home-page .route-card section p { justify-content: flex-start; }

.home-news-list { border-top: 0; }
.home-news-item {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 0 0 1.5rem;
  border-bottom: 1px solid var(--line);
}
.home-news-image { order: -1; margin: 0 0 1rem; overflow: hidden; background: var(--surface-soft); }
.home-news-image img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; transition: transform 500ms var(--ease); }
.home-news-item:hover .home-news-image img { transform: scale(1.018); }
.home-news-copy { display: grid; gap: .62rem; }
.home-news-meta strong { color: var(--moss); letter-spacing: 0; text-transform: none; }
.home-news-item h3 { max-width: none; font-family: var(--serif); font-weight: 650; letter-spacing: -.035em; }
.home-news-item b { width: fit-content; border-bottom: 1px solid currentColor; color: var(--ink); font-size: .68rem; }
.home-news-sources { grid-template-columns: minmax(0, 1fr) auto; align-items: start; }
.home-news-sources a { color: var(--ink); border-bottom: 1px solid currentColor; }

@media (min-width: 42rem) {
  .home-page .explore-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-page .explore-card-wide { grid-column: auto; }
  .home-page .explore-card-wide img { aspect-ratio: 3 / 2; }
  .home-page .route-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-page .season-story-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-page .season-story:nth-child(odd) { padding-right: 1.5rem; border-right: 1px solid var(--line); }
  .home-page .season-story:nth-child(even) { padding-left: 1.5rem; }
}

@media (min-width: 64rem) {
  .home-planner-layout { grid-template-columns: minmax(18rem, .72fr) minmax(0, 1.28fr); }
  .home-planner-section .journey-builder { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .home-planner-section .journey-builder label { border-right: 1px solid var(--line); }
  .home-planner-section .journey-builder .button { grid-column: span 1; align-self: center; min-height: 3.5rem; }
  .home-page .explore-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-columns: auto; grid-auto-rows: auto; }
  .home-page .explore-card-wide { grid-column: auto; }
  .home-page .season-story-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .home-page .season-story,
  .home-page .season-story:nth-child(even),
  .home-page .season-story:nth-child(odd) { padding: 1.4rem 1.5rem 1.6rem; border-right: 1px solid var(--line); }
  .home-page .season-story:first-child { padding-left: .2rem; }
  .home-page .season-story:last-child { border-right: 0; }
  .home-page .route-grid { grid-auto-flow: row; grid-auto-columns: auto; grid-auto-rows: auto; grid-template-columns: repeat(3, minmax(0, 1fr)); overflow: visible; }
}

@media (max-width: 41.99rem) {
  .home-hero { min-height: 38rem; }
  .hero-intro h1 { font-size: clamp(2.65rem, 12vw, 3rem); }
  .hero-primary-actions { display: grid; grid-template-columns: minmax(0, 1fr); }
  .hero-primary-actions .button { width: 100%; }
  .editorial-welcome-grid { grid-template-columns: minmax(0, 1fr); }
  .editorial-welcome-kicker { align-items: flex-start; flex-direction: column; }
  .home-news-sources { grid-template-columns: minmax(0, 1fr); }
}

/* Kartside */
.map-controls { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; justify-content: space-between; margin-bottom: 1rem; }

/* Compact, white editorial introductions for the two hero-less activity pages. */
.experience-index-page main > .breadcrumb,
.tour-widget-first-page main > .breadcrumb {
  position: static;
  inset: auto;
  width: var(--shell);
  padding: 1rem 0 0;
  color: var(--ink-soft);
  transform: none;
}
.experience-index-page main > .breadcrumb a:hover,
.tour-widget-first-page main > .breadcrumb a:hover { color: var(--moss); }
.experience-editorial-intro { padding-block: clamp(2.25rem, 5vw, 4rem); }
.experience-editorial-intro h1 {
  max-width: 52rem;
  font-size: clamp(2.65rem, 5vw, 4rem);
  font-weight: 650;
  letter-spacing: -.045em;
  line-height: .98;
}
.experience-editorial-intro .section-intro { max-width: 44rem; margin: 1rem 0 0; }
.experience-category-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
.experience-category-card {
  position: relative;
  display: grid;
  align-content: start;
  border: 0;
  background: transparent;
}
.experience-category-card img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
.experience-category-card .feature-card-copy { padding: .85rem 0 0; }
.experience-category-card .feature-card-copy p { color: var(--ink-soft); font-size: .68rem; letter-spacing: 0; text-transform: none; }
.experience-category-card .feature-card-copy h3 { font-size: clamp(1.4rem, 2.7vw, 2rem); font-weight: 650; letter-spacing: -.04em; }
.experience-category-card .feature-card-copy span { max-width: 31rem; font-size: .78rem; line-height: 1.6; }
.experience-category-card .feature-card-copy b { width: fit-content; margin-top: .7rem; padding-bottom: .1rem; border-bottom: 1px solid currentColor; font-size: .72rem; }
.editorial-image-label {
  position: absolute;
  z-index: 1;
  top: .65rem;
  left: .65rem;
  padding: .22rem .38rem;
  background: rgb(7 24 27 / .72);
  color: rgb(255 255 255 / .86);
  font-size: .58rem;
}
.experience-trail-grid { display: grid; gap: 1rem; }
.experience-trail-card { display: grid; gap: .9rem; padding: 1.25rem; border-top: 1px solid var(--ink); background: var(--surface-soft); }
.experience-trail-card h3 { font-family: var(--serif); font-size: clamp(1.45rem, 2.7vw, 2rem); font-weight: 650; letter-spacing: -.04em; }
.experience-trail-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; margin: 0; }
.experience-trail-facts div { padding-top: .65rem; border-top: 1px solid var(--line); }
.experience-trail-facts dt { color: var(--ink-soft); font-size: .63rem; }
.experience-trail-facts dd { margin: .16rem 0 0; font-size: .76rem; font-weight: 720; }
.experience-trail-actions { display: flex; flex-wrap: wrap; gap: .75rem 1rem; align-items: center; }
.experience-trail-actions .text-link { min-height: var(--tap-target); }
.experience-trail-more,
.experience-bookable-more { margin: 1.25rem 0 0; }
.gyg-widget-description { max-width: 48rem; margin: 0; color: var(--ink-soft); font-size: .76rem; line-height: 1.6; }
.activity-text-fallback { margin-top: 1.25rem; border-block: 1px solid var(--line); }
.activity-text-fallback > summary {
  min-height: 3.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  cursor: pointer;
  font-size: .76rem;
  font-weight: 720;
  list-style: none;
}
.activity-text-fallback > summary::-webkit-details-marker { display: none; }
.activity-text-fallback > summary::after { content: "+"; font-size: 1.2rem; font-weight: 450; }
.activity-text-fallback[open] > summary::after { content: "−"; }
.activity-text-fallback:not([open]) > :not(summary) { display: none; }
.activity-fallback-groups { display: grid; gap: 1.5rem; padding: .5rem 0 1.5rem; }
.activity-fallback-group h3 { margin-bottom: .65rem; font-family: var(--serif); font-size: 1.15rem; font-weight: 650; }
.activity-fallback-group ul { display: grid; gap: 0; margin: 0; padding: 0; border-top: 1px solid var(--line); list-style: none; }
.activity-fallback-group li { display: grid; gap: .15rem; padding: .75rem 0; border-bottom: 1px solid var(--line); }
.activity-fallback-group a { width: 100%; min-height: var(--tap-target); display: flex; align-items: center; font-size: .78rem; font-weight: 720; }
.activity-fallback-group span { color: var(--ink-soft); font-size: .67rem; }
.tour-widget-first-page .gyg-live-panel,
.experience-hub-page .gyg-live-panel { border-radius: 0; box-shadow: none; }
.tour-widget-first-page .gyg-live-panel:not(.is-loaded) .gyg-widget-groups,
.experience-hub-page .gyg-live-panel:not(.is-loaded) .gyg-widget-groups { display: none; }

@media (min-width: 44rem) {
  .experience-category-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .experience-trail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .activity-fallback-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 68rem) {
  .experience-category-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .experience-category-card:first-child { grid-column: auto; }
  .experience-category-card:first-child img { aspect-ratio: 3 / 2; }
  .experience-trail-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .activity-fallback-groups { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

.home-page .hero-primary-actions .button-secondary {
  background: transparent;
  color: var(--white);
}
.home-page .hero-primary-actions .button-secondary:hover { background: rgb(255 255 255 / .12); }
.home-page .hero-image-label {
  top: auto;
  right: 1rem;
  bottom: 1rem;
  left: auto;
  border: 0;
  letter-spacing: .01em;
  text-transform: none;
}
.map-layers { display: flex; flex-wrap: wrap; gap: .4rem; }
.map-tools { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.map-frame { position: relative; border: 1px solid var(--line); border-radius: .5rem; overflow: hidden; }
.map-canvas { height: min(70vh, 620px); width: 100%; background: var(--sky); }
.map-loading { position: absolute; inset: 0; display: grid; place-items: center; margin: 0; background: var(--sky); color: var(--ink-soft); font-size: .8rem; }
.map-pin span { display: block; width: 14px; height: 14px; border: 2px solid var(--white); border-radius: 50%; box-shadow: 0 1px 4px rgb(8 24 24 / .35); }
.leaflet-marker-icon.map-cluster-pin { display: grid; place-items: center; transform: none; }
.leaflet-marker-icon.map-cluster-pin span { width: 2.25rem; height: 2.25rem; display: grid; place-items: center; background: var(--ink); color: var(--white); font-weight: 800; }
.map-cluster-popup ul { margin: .5rem 0 0; padding-left: 1.1rem; }
.map-legend { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; margin-top: .75rem; font-size: .7rem; color: var(--ink-soft); }
.map-legend-item { display: inline-flex; gap: .35rem; align-items: center; }
.map-legend-item i { width: 10px; height: 10px; border-radius: 50%; }
.map-legend-count { margin-left: auto; font-weight: 700; color: var(--ink); }
.map-page .leaflet-popup-content { font-size: .78rem; line-height: 1.45; }
.map-point-popup { display: grid; gap: .4rem; min-width: min(15rem, 62vw); }
.map-point-popup > strong { font-family: var(--font-display); font-size: 1rem; line-height: 1.15; }
.map-point-popup > span { color: var(--rust); font-size: .62rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.map-point-popup p { margin: 0; color: var(--ink-soft); }
.map-point-popup > a { width: fit-content; color: var(--moss); font-weight: 750; text-decoration: underline; text-underline-offset: .18em; }
.map-point-popup small { padding-top: .4rem; border-top: 1px solid var(--line); color: var(--ink-soft); font-size: .62rem; }
.map-point-popup small a { color: inherit; text-decoration: underline; text-underline-offset: .14em; }
.map-trail-facts { display: grid; gap: .3rem; margin: .2rem 0; }
.map-trail-facts div { display: grid; grid-template-columns: 3.8rem minmax(0, 1fr); gap: .5rem; }
.map-trail-facts dt { color: var(--ink-soft); font-size: .6rem; font-weight: 800; text-transform: uppercase; }
.map-trail-facts dd { margin: 0; font-size: .68rem; }
.map-trail-warning { padding-left: .55rem; border-left: 2px solid var(--rust); }
.hike-map-explorer { margin-top: clamp(3rem, 6vw, 5rem); padding-top: clamp(2rem, 4vw, 3rem); border-top: 1px solid var(--ink); }
.hike-map-layout { display: grid; overflow: hidden; border: 1px solid var(--line); border-radius: .75rem; background: var(--white); }
.hike-map-list { max-height: 38rem; overflow-y: auto; }
.hike-map-list > p { padding: 1rem; color: var(--ink-soft); }
.hike-map-item { width: 100%; min-height: var(--tap-target); display: grid; gap: .3rem; padding: .9rem 1rem; border: 0; border-bottom: 1px solid var(--line); background: var(--white); color: var(--ink); text-align: left; cursor: pointer; }
.hike-map-item:hover, .hike-map-item.is-active { background: var(--sand); }
.hike-map-item.is-active { box-shadow: inset 3px 0 var(--rust); }
.hike-map-item strong { font-size: .78rem; }
.hike-map-item span { color: var(--ink-soft); font-size: .66rem; line-height: 1.45; }
.hike-map-detail { display: grid; align-content: start; gap: .75rem; padding: 1.15rem; border-top: 1px solid var(--line); background: var(--surface-soft); }
.hike-map-detail h3 { font-family: var(--serif); font-size: clamp(1.5rem, 3vw, 2.25rem); font-weight: 530; line-height: 1; }
.hike-map-detail > p:not(.eyebrow) { margin: 0; color: var(--ink-soft); font-size: .74rem; line-height: 1.6; }
.hike-map-detail > a { min-height: var(--tap-target); display: flex; align-items: center; border-top: 1px solid var(--line); color: var(--moss); font-size: .72rem; font-weight: 750; }
.hike-detail-facts { display: grid; gap: .55rem; margin: 0; }
.hike-detail-facts div { display: grid; gap: .15rem; }
.hike-detail-facts dt { color: var(--ink-soft); font-size: .59rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.hike-detail-facts dd { margin: 0; font-size: .72rem; line-height: 1.45; }
.hike-map-detail { scroll-margin-top: 8rem; }
@media (min-width: 48rem) {
  .hike-map-layout { grid-template-columns: minmax(0, .95fr) minmax(18rem, .55fr); }
  .hike-map-detail { border-top: 0; border-left: 1px solid var(--line); }
}
@media (max-width: 640px) {
  .map-page .page-hero { min-height: 23rem; padding: 7.25rem 0 1.65rem; }
  .map-page .page-hero h1 { font-size: clamp(2.25rem, 9.8vw, 2.625rem); }
  .map-page .page-hero-copy > p:not(.eyebrow) { margin-top: .7rem; font-size: .82rem; }
  .map-page #kart.section { padding-top: 1.25rem; }
  .map-canvas { height: 60vh; }
  .map-legend-count { margin-left: 0; }
}

/* Detail pages start on paper, so the transparent hero navigation needs ink. */
.lodging-detail-page main { padding-top: 5.5rem; }
.lodging-detail-page .site-header {
  color: var(--ink);
  background: color-mix(in srgb, var(--paper) 96%, transparent);
  border-bottom: 1px solid var(--line);
  text-shadow: none;
  backdrop-filter: blur(16px);
}
.lodging-detail-page .header-search { background: var(--white); border-color: var(--line); }
.lodging-detail-page .menu-button { background: var(--ink); }
body.lodging-detail-page main > .breadcrumb {
  position: relative;
  inset: auto;
  left: auto;
  top: auto;
  color: var(--ink-soft);
  transform: none;
}
body.lodging-detail-page main > .breadcrumb a:hover { color: var(--moss); }

@media (max-width: 37.99rem) {
  .lodging-detail-heading h1 {
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
    font-size: clamp(2rem, 8.8vw, 2.85rem);
  }
  body.lodging-detail-page main > .breadcrumb,
  .lodging-detail-page .subnav a,
  .lodging-image-credit,
  .lodging-score small,
  .lodging-fact-grid dt,
  .lodging-booking-panel > p:not(.eyebrow),
  .lodging-booking-panel > small,
  .lodging-room-facts,
  .lodging-room-card > p,
  .lodging-provider-description summary,
  .lodging-sentiment-list dt,
  .lodging-practical-grid dt,
  .lodging-important p,
  .lodging-source-card dt,
  .lodging-source-card dd { font-size: .8125rem !important; }
  .lodging-fact-grid dd,
  .lodging-facility-grid li { font-size: .875rem; }
  .lodging-score span,
  .lodging-room-top span { font-size: .75rem; }
  .lodging-booking-panel { padding: 1rem; }
}

/* Alle overnattingssteder */
.stays-toolbar { display: grid; gap: 1rem; margin-bottom: 1.2rem; padding: clamp(1rem, 2.5vw, 1.5rem); border: 1px solid var(--line); border-radius: 0; background: var(--surface-soft); }
.stays-rate-unavailable { display: grid; gap: .35rem; padding: .9rem 1rem; border-left: 3px solid var(--moss); background: var(--white); }
.stays-rate-unavailable strong { font-size: .88rem; }
.stays-rate-unavailable p { max-width: 58rem; margin: 0; color: var(--ink-soft); font-size: .75rem; line-height: 1.55; }
.stays-controls { display: grid; gap: .75rem; align-items: end; }
.stays-search { width: 100%; min-width: 0; background: var(--white); }
.stays-sort-label { display: grid; gap: .35rem; color: var(--ink-soft); font-size: .68rem; font-weight: 750; }
.stays-sort-label select,
.stays-rate-tool input,
.stays-rate-tool select { width: 100%; min-width: 0; height: 3.1rem; padding: .65rem .75rem; border: 1px solid var(--line); border-radius: .45rem; background: var(--white); color: var(--ink); font: inherit; font-size: .78rem; }
.stays-sort-label select:focus-visible,
.stays-rate-tool input:focus-visible,
.stays-rate-tool select:focus-visible { outline: 2px solid var(--moss); outline-offset: 2px; }
.stays-sort-label option:disabled { color: var(--ink-soft); }
.stays-toolbar .filter-bar { display: flex; flex-wrap: nowrap; gap: .45rem; padding-bottom: .25rem; overflow-x: auto; scrollbar-width: thin; }
.stays-toolbar .filter-button { flex: 0 0 auto; background: var(--white); }
.stays-toolbar .filter-button[aria-pressed="true"] { background: var(--moss); }
.stays-rate-tool { display: grid; gap: .75rem; align-items: end; padding-top: 1rem; border-top: 1px solid var(--line); }
.stays-rate-tool label { display: grid; gap: .35rem; color: var(--ink-soft); font-size: .68rem; font-weight: 750; }
.stays-rate-intro { display: grid; gap: .2rem; }
.stays-rate-intro strong { font-family: var(--serif); font-size: 1.15rem; font-weight: 520; }
.stays-rate-intro span { color: var(--ink-soft); font-size: .7rem; }
.stays-rate-tool .button { width: 100%; border: 0; cursor: pointer; }
.stays-rate-tool .button:disabled { cursor: wait; opacity: .65; }
.stays-rate-status { min-height: 1.25rem; margin: -.35rem 0 0; color: var(--ink-soft); font-size: .68rem; }
.stays-status { margin: 0 0 1rem; color: var(--ink-soft); font-size: .75rem; }
.stays-grid { display: grid; gap: 1.25rem; align-items: start; }
.stay-card { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-top: 2px solid var(--ink); border-radius: 0; background: var(--paper); box-shadow: none; }
.stay-gallery { position: relative; min-width: 0; overflow: hidden; background: var(--sky); }
.stay-gallery-track { display: flex; overflow-x: auto; overscroll-behavior-inline: contain; scroll-snap-type: x mandatory; scrollbar-width: none; }
.stay-gallery-track::-webkit-scrollbar { display: none; }
.stay-gallery-slide { flex: 0 0 100%; aspect-ratio: 16 / 10; display: block; padding: 0; border: 0; background: var(--sky); scroll-snap-align: start; }
.stay-gallery-slide img { width: 100%; height: 100%; display: block; object-fit: cover; }
.stay-gallery-nav { position: absolute; z-index: 3; top: 50%; width: var(--tap-target); height: var(--tap-target); display: grid; place-items: center; padding: 0 0 .15rem; transform: translateY(-50%); border: 1px solid rgb(255 255 255 / .7); border-radius: 50%; background: rgb(255 255 255 / .9); color: var(--ink); box-shadow: 0 5px 16px rgb(8 24 24 / .18); font-size: 1.45rem; cursor: pointer; }
.stay-gallery-nav:disabled { opacity: .38; cursor: default; }
.stay-gallery-nav:focus-visible { outline: 2px solid var(--moss); outline-offset: 2px; }
.stay-gallery-prev { left: .7rem; }
.stay-gallery-next { right: .7rem; }
.stay-gallery-count { position: absolute; z-index: 3; right: .7rem; bottom: .7rem; padding: .3rem .5rem; border-radius: 2rem; background: rgb(8 24 24 / .76); color: var(--white); font-size: .63rem; font-weight: 750; }
.stay-copy { min-width: 0; display: flex; flex-direction: column; gap: .72rem; padding: 1rem; }
.stay-copy h2 { margin: 0; font-family: var(--serif); font-size: clamp(1.45rem, 3vw, 1.75rem); font-weight: 520; line-height: 1.08; }
.stays-page .listing-meta .rating {
  display: inline-flex;
  align-items: baseline;
  gap: .12rem;
  padding: .28rem .42rem;
  background: var(--ink);
  color: var(--white);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0;
}
.stays-page .listing-meta .rating strong { color: inherit; font-size: .82rem; font-weight: 780; }
.stays-page .listing-meta .rating small { color: rgb(255 255 255 / .72); font-size: .59rem; font-weight: 620; }
.stay-review-count { margin: -.45rem 0 0; color: var(--ink-soft); font-size: .68rem; }
.stay-summary { margin: 0; color: var(--ink-soft); font-size: .78rem; line-height: 1.6; }
.stay-status-note { margin: 0; padding: .7rem .8rem; border-left: 3px solid var(--rust); background: color-mix(in srgb, var(--rust) 8%, var(--paper)); color: var(--ink); font-size: .7rem; line-height: 1.5; }
.stay-facilities { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem .75rem; margin: .05rem 0 0; padding: 0; list-style: none; }
.stay-facilities li { min-width: 0; display: flex; gap: .4rem; align-items: baseline; color: var(--ink-soft); font-size: .68rem; }
.stay-facilities li::before { content: "✓"; flex: 0 0 auto; color: var(--moss); font-weight: 850; }
.stay-facility-note { margin: 0; color: var(--ink-soft); font-size: .68rem; }
.stay-price { display: grid; gap: .18rem; padding: .8rem; border-left: 3px solid var(--moss); background: var(--surface-soft); }
.stay-price > span { color: var(--moss); font-size: .62rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
.stay-price strong { font-family: var(--serif); font-size: 1.35rem; font-weight: 550; }
.stay-price strong small { color: var(--ink-soft); font-family: var(--sans); font-size: .66rem; font-weight: 650; }
.stay-price > small { color: var(--ink-soft); font-size: .62rem; }
.stay-details { display: grid; gap: 1rem; padding: 1rem 0 .3rem; border-top: 1px solid var(--line); }
.stay-details[hidden] { display: none; }
.stay-details-label { display: block; margin-bottom: .3rem; color: var(--moss); font-size: .62rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.stay-details p { margin: 0; color: var(--ink-soft); font-size: .73rem; }
.stay-details ul { columns: 2; margin: 0; padding-left: 1rem; color: var(--ink-soft); font-size: .68rem; }
.stay-details li { margin-bottom: .25rem; break-inside: avoid; }
.stay-details .stay-details-source { color: var(--ink-soft); font-size: .62rem; }
.stay-actions { display: grid; gap: .75rem; align-items: end; margin-top: auto; padding-top: .9rem; border-top: 1px solid var(--line); }
.stay-detail-actions { display: grid; gap: .35rem; }
.stay-expand-button { min-height: var(--tap-target); padding: .6rem .8rem; border: 1px solid var(--line); border-radius: 0; background: var(--white); color: var(--ink); font-size: .72rem; font-weight: 750; cursor: pointer; }
.stay-expand-button:hover { border-color: var(--moss); color: var(--moss); }
.stay-expand-button:focus-visible { outline: 2px solid var(--moss); outline-offset: 2px; }
.stay-detail-link { min-height: var(--tap-target); display: inline-flex; align-items: center; justify-content: center; color: var(--moss); font-size: .68rem; font-weight: 800; }
.stay-detail-link:hover { text-decoration: underline; text-underline-offset: .18rem; }
.stay-affiliate-action { display: grid; gap: .35rem; }
.stay-affiliate-action .affiliate-label { justify-self: start; }
.stay-affiliate-action .button { width: 100%; min-height: var(--tap-target); padding: .6rem .8rem; text-align: center; }
.stays-more { display: flex; justify-content: center; margin-top: 1.5rem; }
.filter-button small { color: currentColor; font-size: .68rem; font-weight: 750; font-variant-numeric: tabular-nums; }

.lodging-affiliate-disclosure {
  margin-block: 1rem 0;
  color: var(--ink-soft);
  font-size: .66rem;
  line-height: 1.55;
}

@media (min-width: 38rem) {
  .stays-controls { grid-template-columns: minmax(0, 1fr) minmax(14rem, .45fr); }
  .stays-rate-tool { grid-template-columns: minmax(12rem, 1.25fr) repeat(3, minmax(7rem, .6fr)) minmax(8rem, .55fr); }
  .stays-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stay-actions { grid-template-columns: minmax(8rem, .8fr) minmax(11rem, 1.2fr); }
}

@media (max-width: 37.99rem) {
  .stays-page .section.shell { padding-top: 2rem; }
  .stays-toolbar { margin-inline: -.15rem; padding: .9rem; }
  .stays-toolbar .filter-bar { scrollbar-width: none; }
  .stays-toolbar .filter-bar::-webkit-scrollbar { display: none; }
  .stays-rate-tool { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stays-rate-intro,
  .stays-rate-tool .button { grid-column: 1 / -1; }
  .stays-rate-tool label:nth-of-type(3) { grid-column: 1 / -1; }
  .stay-copy { padding: .9rem; }
  .stays-page .listing-meta,
  .stays-page .stay-review-count,
  .stays-page .stay-facilities li,
  .stays-page .stay-facility-note,
  .stays-page .stay-price > span,
  .stays-page .stay-price > small,
  .stays-page .stay-details-label,
  .stays-page .stay-details ul,
  .stays-page .stay-details .stay-details-source,
  .stays-page .affiliate-label,
  .stays-page .filter-button small { font-size: .75rem; }
  .stays-page .stay-summary,
  .stays-page .stay-status-note,
  .stays-page .stay-details p { font-size: .875rem; }
  .stays-page .stay-expand-button,
  .stays-page .stay-detail-link,
  .stays-page .stay-affiliate-action .button { font-size: .875rem; }
  .stay-actions { grid-template-columns: 1fr; }
}

/* Matguide: faktabasert katalog med kildebelagt kart. */
.food-intro { padding-top: clamp(3.5rem, 7vw, 6rem); }
.food-map-section { padding-bottom: 0; }
.food-map-layout { display: grid; overflow: hidden; border: 1px solid var(--line); border-radius: .85rem; background: var(--white); }
.food-map-canvas { min-height: clamp(24rem, 58vh, 39rem); background: var(--sand); }
.food-map-guide { display: grid; align-content: start; gap: .55rem; padding: 1rem; border-top: 1px solid var(--line); }
.food-map-guide strong { color: var(--moss); font-size: .78rem; }
.food-map-guide p, .food-map-guide span { margin: 0; color: var(--ink-soft); font-size: .7rem; line-height: 1.55; }
.food-map-pin-wrap { display: grid; place-items: center; background: transparent; border: 0; }
.food-map-pin { width: 1.8rem; height: 1.8rem; display: grid; place-items: center; border: 2px solid var(--white); border-radius: 50%; background: var(--rust); color: var(--white); font-size: .6rem; box-shadow: 0 3px 12px rgb(11 36 36 / .28); }
.food-map-popup { display: grid; gap: .45rem; max-width: 16rem; }
.food-map-popup strong { font-size: .78rem; }
.food-map-popup p { margin: 0; color: var(--ink-soft); font-size: .68rem; line-height: 1.5; }
.food-map-popup a { min-height: 2.4rem; display: flex; align-items: center; color: var(--moss); font-size: .68rem; font-weight: 750; }
.food-trust-strip {
  display: grid;
  margin: 0 0 1.5rem;
  border-block: 1px solid var(--line);
}
.food-trust-strip div { display: grid; gap: .2rem; padding: 1rem 0; }
.food-trust-strip div + div { border-top: 1px solid var(--line); }
.food-trust-strip strong { color: var(--moss); font-size: .73rem; }
.food-trust-strip span { color: var(--ink-soft); font-size: .72rem; }
.food-toolbar {
  display: grid;
  gap: 1rem;
  align-items: end;
  margin: 2rem 0 .75rem;
  padding: 1rem;
  border: 1px solid var(--line);
  background: var(--surface-soft);
}
.food-filter-group { display: flex; flex-wrap: wrap; gap: .45rem; }
.food-area-label { display: grid; gap: .35rem; color: var(--ink-soft); font-size: .68rem; font-weight: 750; }
.food-area-label select {
  width: 100%;
  min-height: 2.75rem;
  padding: .55rem 2.25rem .55rem .7rem;
  border: 1px solid var(--line);
  border-radius: .2rem;
  background: var(--white);
  color: var(--ink);
  font: inherit;
}
.food-result-status { margin: 0 0 .75rem; color: var(--ink-soft); font-size: .72rem; }
.food-directory-list { border-top: 1px solid var(--ink); }
.food-place,
.restaurant-page .food-place {
  min-width: 0;
  display: grid;
  grid-template-columns: 2.15rem minmax(0, 1fr);
  gap: 1rem;
  padding: 1.25rem .15rem;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: inherit;
}
.food-place[hidden] { display: none; }
.food-place.is-map-target { background: var(--sand); outline: 3px solid color-mix(in srgb, var(--rust) 60%, transparent); outline-offset: 3px; }
.restaurant-page .food-place:hover {
  border-color: var(--moss);
  background: color-mix(in srgb, var(--sky) 48%, transparent);
  box-shadow: none;
}
.food-place-index { padding-top: .15rem; color: var(--rust); font-size: .68rem; font-weight: 800; letter-spacing: .08em; }
.food-place-copy { min-width: 0; }
.food-place-copy .listing-meta { justify-content: flex-start; gap: .45rem 1rem; }
.food-place-copy h3 {
  margin-top: .4rem;
  font-family: var(--serif);
  font-size: clamp(1.55rem, 3vw, 2.25rem);
  font-weight: 520;
  letter-spacing: -.025em;
  line-height: 1;
}
.food-place-copy > p { max-width: 42rem; margin: .65rem 0 0; color: var(--ink-soft); font-size: .8rem; line-height: 1.65; }
.food-best-for { min-height: var(--tap-target); display: inline-flex; align-items: center; margin-top: .75rem; color: var(--moss); font-size: .7rem; line-height: 1.45; }
.food-place-facts { grid-column: 2; display: grid; gap: .55rem; margin: 0; }
.food-place-facts div { display: grid; grid-template-columns: 3.5rem minmax(0, 1fr); gap: .65rem; }
.food-place-facts dt { color: var(--ink-soft); font-size: .62rem; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
.food-place-facts dd { margin: 0; font-size: .7rem; line-height: 1.5; }
.food-place.is-price-documented { background: color-mix(in srgb, var(--sand) 58%, transparent); }
.food-source { grid-column: 2; display: flex; flex-wrap: wrap; justify-content: space-between; gap: .3rem 1rem; align-items: center; }
.food-source small { color: var(--ink-soft); font-size: .62rem; }
.food-source b { color: var(--moss); font-size: .72rem; }
.food-place-facts dd a,
.food-source b a { min-height: var(--tap-target); display: inline-flex; align-items: center; }
.food-empty { margin-top: 1rem; }
.food-planning-grid { display: grid; gap: 2rem; }
.food-planning-lead h2 { max-width: 35rem; font-family: var(--serif); font-size: clamp(2.2rem, 5vw, 4rem); font-weight: 520; letter-spacing: -.035em; line-height: .98; }
.food-planning-lead > p:last-child { max-width: 33rem; margin: 1rem 0 0; color: var(--ink-soft); font-size: .84rem; line-height: 1.7; }
.food-planning-notes { border-top: 1px solid var(--ink); }
.food-planning-notes article { display: grid; grid-template-columns: 2rem minmax(0, 1fr); gap: 1rem; padding: 1.2rem 0; border-bottom: 1px solid var(--line); }
.food-planning-notes article > span { color: var(--rust); font-size: .65rem; font-weight: 800; }
.food-planning-notes h3 { font-family: var(--serif); font-size: 1.35rem; font-weight: 550; }
.food-planning-notes p { margin: .35rem 0 0; color: var(--ink-soft); font-size: .74rem; line-height: 1.6; }
.food-next-step { display: grid; align-content: start; border-top: 1px solid var(--ink); }
.food-next-step > span { padding: .75rem 0; color: var(--ink-soft); font-size: .62rem; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.food-next-step a { min-height: 2.75rem; display: flex; align-items: center; padding: .65rem 0; border-top: 1px solid var(--line); color: var(--moss); font-size: .76rem; font-weight: 750; }

.home-news { padding-block: clamp(4rem, 8vw, 7rem); }
.home-news-head { align-items: end; }
.home-news-head > div { display: grid; gap: .35rem; }
.home-news-head h2 { margin: 0; }
.home-news-head > p { margin: 0; color: var(--ink-soft); font-size: .7rem; }
.home-news-list { display: grid; border-top: 1px solid var(--ink); }
.home-news-item { min-width: 0; display: grid; gap: .6rem; padding: 1.25rem 0; border-bottom: 1px solid var(--line); color: var(--ink); }
.home-news-item:hover h3 { color: var(--moss); }
.home-news-meta { display: flex; flex-wrap: wrap; gap: .45rem .8rem; align-items: center; color: var(--ink-soft); font-size: .62rem; }
.home-news-meta strong { color: var(--rust); text-transform: uppercase; letter-spacing: .07em; }
.home-news-meta em { padding: .15rem .4rem; border: 1px solid var(--line); border-radius: 999px; font-style: normal; }
.home-news-item h3 { max-width: 30rem; margin: 0; font-family: var(--serif); font-size: clamp(1.25rem, 2.1vw, 1.7rem); font-weight: 530; line-height: 1.08; transition: color 160ms; }
.home-news-item p { max-width: 38rem; margin: 0; color: var(--ink-soft); font-size: .76rem; line-height: 1.6; }
.home-news-item b { color: var(--moss); font-size: .68rem; }
.home-news-loading { margin: 0; padding: 1.25rem 0; color: var(--ink-soft); }
.home-news-sources { display: grid; gap: .75rem; padding-top: 1rem; }
.home-news-sources p { max-width: 48rem; margin: 0; color: var(--ink-soft); font-size: .68rem; line-height: 1.6; }
.home-news-sources nav { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; }
.home-news-sources a { min-height: var(--tap-target); display: inline-flex; align-items: center; color: var(--moss); font-size: .72rem; font-weight: 750; }

@media (min-width: 48rem) {
  .home-news-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem 1.5rem; }
  .home-news-item:nth-child(2n) { padding-left: 0; border-left: 0; }
}

@media (min-width: 64rem) {
  .home-news-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (min-width: 44rem) {
  .food-map-layout { grid-template-columns: minmax(0, 1fr) minmax(12rem, .3fr); }
  .food-map-guide { border-top: 0; border-left: 1px solid var(--line); }
  .food-trust-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .food-trust-strip div { padding: 1rem; }
  .food-trust-strip div:first-child { padding-left: 0; }
  .food-trust-strip div + div { border-top: 0; border-left: 1px solid var(--line); }
  .food-toolbar { grid-template-columns: minmax(0, 1fr) minmax(11rem, 14rem); }
  .food-place { grid-template-columns: 2.5rem minmax(0, 1.2fr) minmax(13rem, .75fr); gap: 1rem 1.5rem; padding-block: 1.55rem; }
  .food-place-facts { grid-column: 3; align-content: start; }
  .food-source { grid-column: 2 / -1; }
  .food-planning-grid { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); }
  .food-next-step { grid-column: 2; }
}

@media (min-width: 68rem) {
  .food-place { grid-template-columns: 3rem minmax(0, 1.25fr) minmax(15rem, .75fr) minmax(11rem, .45fr); align-items: start; }
  .food-source { grid-column: 4; display: grid; justify-content: stretch; }
  .food-source b { margin-top: .3rem; }
  .food-planning-grid { grid-template-columns: minmax(0, 1fr) minmax(0, .9fr) minmax(13rem, .5fr); }
  .food-next-step { grid-column: auto; }
}

@media (max-width: 37.99rem) {
  .food-toolbar { margin-inline: -.25rem; padding: .8rem; }
  .food-filter-group { flex-wrap: nowrap; overflow-x: auto; padding-bottom: .2rem; scrollbar-width: none; }
  .food-filter-group::-webkit-scrollbar { display: none; }
  .food-filter-group .filter-button { flex: 0 0 auto; }
  .food-place-copy > p,
  .food-best-for,
  .food-place-facts dd,
  .food-source small,
  .food-source b,
  .food-result-status,
  .food-planning-notes p { font-size: .8125rem; }
}

/* Visible answers are the source of truth for FAQ structured data. */
.faq-section { max-width: 72rem; }
.faq-list { border-top: 1px solid var(--ink); }
.faq-item { border-bottom: 1px solid var(--line); }
.faq-item summary {
  min-height: 4rem;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1rem;
  align-items: center;
  padding: 1rem .15rem;
  color: var(--ink);
  cursor: pointer;
  font-size: clamp(.88rem, 1.5vw, 1.05rem);
  font-weight: 750;
  line-height: 1.35;
  list-style: none;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: "+";
  color: var(--rust);
  font-family: var(--serif);
  font-size: 1.75rem;
  font-weight: 400;
  line-height: 1;
}
.faq-item[open] summary::after { content: "−"; }
.faq-item summary:hover { color: var(--moss); }
.faq-item summary:focus-visible { outline: 3px solid var(--rust); outline-offset: 3px; }
.faq-item > div { max-width: 48rem; padding: 0 2.5rem 1.25rem .15rem; }
.faq-item p { margin: 0; color: var(--ink-soft); font-size: .82rem; line-height: 1.7; }

/* Long-form editorial guides: direct answer first, sources and SSR-visible copy. */
.editorial-guide-lead { display: grid; gap: clamp(1.5rem, 4vw, 2.7rem); }
.editorial-meta { display: flex; flex-wrap: wrap; gap: .45rem 1.15rem; padding-bottom: 1rem; border-bottom: 1px solid var(--line); color: var(--ink-soft); font-size: .68rem; }
.editorial-meta a { min-height: 44px; display: inline-flex; align-items: center; color: var(--moss); text-decoration: underline; text-underline-offset: .18rem; }
.editorial-answer { max-width: 58rem; }
.editorial-answer h2 { max-width: 54rem; margin: .35rem 0 .85rem; font-family: var(--serif); font-size: clamp(2rem, 4.8vw, 4rem); font-weight: 520; letter-spacing: -.035em; line-height: .98; }
.editorial-answer > p:last-child { max-width: 50rem; color: var(--ink-soft); font-size: clamp(.9rem, 1.5vw, 1.05rem); line-height: 1.75; }
.editorial-lead-sources { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem 1rem; margin: -.8rem 0 0; color: var(--ink-soft); font-size: .7rem; }
.editorial-lead-sources strong { color: var(--ink); }
.editorial-lead-sources a { min-height: 44px; display: inline-flex; align-items: center; color: var(--moss); text-decoration: underline; text-underline-offset: .18rem; }
.editorial-fact-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.editorial-fact-grid > div { min-width: 0; padding: 1rem; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.editorial-fact-grid dt { color: var(--moss); font-size: .62rem; font-weight: 850; text-transform: uppercase; letter-spacing: .08em; }
.editorial-fact-grid dd { margin: .3rem 0 0; color: var(--ink); font-size: .78rem; font-weight: 700; line-height: 1.45; }
.editorial-article > section:first-child h2 { margin-top: 0; }
.editorial-article ol, .editorial-article ul { display: grid; gap: .65rem; padding-left: 1.25rem; }
.editorial-article li::marker { color: var(--rust); font-weight: 800; }
.editorial-article strong { color: var(--ink); }
.editorial-source-list { display: grid; gap: .75rem; padding-left: 1.1rem; }
.editorial-source-list li { color: var(--ink-soft); }
.editorial-source-list a { min-height: 44px; display: inline-flex; align-items: center; }
.editorial-detail-page .article-aside > p { color: var(--ink-soft); font-size: .78rem; line-height: 1.65; }
.editorial-content-photo { margin: clamp(2rem, 5vw, 3.75rem) 0; }
.editorial-content-photo picture { display: block; overflow: hidden; background: var(--surface-soft); }
.editorial-content-photo img { width: 100%; height: auto; display: block; aspect-ratio: 16 / 9; object-fit: cover; }
.editorial-content-photo figcaption { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .3rem 1rem; padding-top: .55rem; color: var(--ink-soft); font-size: .62rem; }
.editorial-content-photo figcaption a { min-height: 44px; display: inline-flex; align-items: flex-start; text-decoration: underline; text-underline-offset: .18em; }

@media (min-width: 52rem) {
  .editorial-fact-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.affiliate-label {
  width: fit-content;
  display: inline-flex;
  margin: .8rem 0 .35rem;
  padding: .28rem .48rem;
  border: 1px solid color-mix(in srgb, var(--rust) 45%, var(--line));
  border-radius: 999px;
  color: var(--rust);
  font-size: .58rem;
  font-weight: 850;
  letter-spacing: .08em;
  line-height: 1;
  text-transform: uppercase;
}
.lodging-booking-panel .affiliate-label + .button,
.article-aside .affiliate-label + .button { margin-top: 0; }

/* Activity guide: editorial comparison stays crawlable; GYG owns live commerce data. */
.tour-page .page-hero h1 { max-width: 48rem; font-size: clamp(2.6rem, 5vw, 4rem); overflow-wrap: anywhere; }
.activity-intro { padding-bottom: 2rem; }
.gyg-live-panel {
  margin-top: 1rem;
  padding: 0;
  border: 0;
  border-top: 1px solid var(--ink);
  border-radius: 0;
  background: var(--white);
  box-shadow: none;
}
.gyg-live-heading { display: flex; justify-content: space-between; gap: 1rem; align-items: end; margin-bottom: 1rem; padding-bottom: .9rem; border-bottom: 1px solid var(--line); }
.gyg-live-heading > div { display: grid; gap: .18rem; }
.gyg-live-heading span { color: var(--moss); font-size: .65rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.gyg-live-heading strong { font-family: var(--serif); font-size: clamp(1.4rem, 3vw, 2rem); font-weight: 520; }
.gyg-live-heading p { max-width: 19rem; margin: 0; color: var(--ink-soft); font-size: .72rem; text-align: right; }
.gyg-widget-groups { display: grid; gap: 1.25rem; }
.gyg-widget-group { min-width: 0; display: grid; gap: .65rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.gyg-widget-group > div:first-child { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .4rem 1rem; align-items: baseline; }
.gyg-widget-group > div:first-child strong { color: var(--moss); font-size: .76rem; }
.gyg-widget-group > div:first-child span { color: var(--ink-soft); font-size: .64rem; }
.gyg-consent-gate { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 1rem 2rem; align-items: center; padding: 1rem 0; background: var(--white); border: 0; border-bottom: 1px solid var(--line); }
.gyg-consent-gate > div { display: grid; gap: .25rem; }
.gyg-consent-gate strong { font-family: var(--serif); font-size: 1.1rem; font-weight: 650; }
.gyg-consent-gate p { max-width: 36rem; margin: 0; color: var(--ink-soft); font-size: .78rem; }
.gyg-consent-gate > a { width: fit-content; min-height: var(--tap-target); display: inline-flex; align-items: center; color: var(--moss); border-bottom: 1px solid currentColor; font-size: .72rem; font-weight: 750; }
.activity-filters {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: .8rem;
  margin-bottom: clamp(2rem, 5vw, 3.5rem);
  padding: 1rem;
  border: 1px solid var(--line);
  border-top-color: var(--ink);
  background: var(--white);
}
.activity-filters > div { min-width: 0; display: grid; gap: .35rem; align-content: end; }
.activity-filters label { color: var(--ink-soft); font-size: .58rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.activity-filters input,
.activity-filters select { width: 100%; min-height: var(--tap-target); padding: .65rem .7rem; border: 1px solid var(--line); border-radius: .25rem; background: var(--surface-soft); color: var(--ink); font: inherit; font-size: .76rem; }
.activity-filters input:focus-visible,
.activity-filters select:focus-visible { border-color: var(--moss); outline: 3px solid color-mix(in srgb, var(--moss) 22%, transparent); outline-offset: 1px; }
.activity-filter-status { grid-template-columns: minmax(0, 1fr) auto; gap: .6rem; align-items: center; }
.activity-filter-status p { margin: 0; color: var(--ink-soft); font-size: .68rem; }
.activity-filter-status button { min-height: var(--tap-target); padding: .55rem .75rem; border: 0; border-bottom: 1px solid currentColor; background: transparent; color: var(--moss); font-size: .67rem; font-weight: 800; cursor: pointer; }
.activity-filter-status button:disabled { color: var(--ink-soft); cursor: default; opacity: .45; }
.activity-filter-empty { margin: 0 0 2rem; padding: 1rem; border-left: 3px solid var(--rust); background: var(--sand); color: var(--ink-soft); font-size: .78rem; }
.event-calendar-source { display: grid; gap: 1rem; align-items: center; margin-bottom: 1.25rem; padding: 1rem; border: 1px solid var(--line); border-left: 3px solid var(--moss); background: var(--surface-soft); }
.event-calendar-source strong { font-family: var(--serif); font-size: 1.2rem; font-weight: 550; }
.event-calendar-source p { max-width: 52rem; margin: .25rem 0 0; color: var(--ink-soft); font-size: .76rem; }
.event-calendar-source .button { width: fit-content; }
.activity-groups { display: grid; gap: clamp(2.4rem, 6vw, 4.5rem); }
.activity-group { scroll-margin-top: 8rem; }
.activity-group-heading { display: grid; gap: .7rem; margin-bottom: 1rem; padding-bottom: 1rem; border-bottom: 1px solid var(--line); }
.activity-group-heading h3 { margin-top: .15rem; font-family: var(--serif); font-size: clamp(1.55rem, 3vw, 2.25rem); font-weight: 520; line-height: 1.05; }
.activity-group-heading > p { max-width: 40rem; margin: 0; color: var(--ink-soft); font-size: .78rem; line-height: 1.6; }
.activity-directory { display: grid; gap: 1rem; }
.activity-pick { min-width: 0; display: grid; grid-template-rows: auto 1fr; scroll-margin-top: 8rem; }
.activity-pick .affiliate-label { position: relative; z-index: 1; margin: 0 0 -.45rem .85rem; background: var(--surface-soft); }
.activity-card {
  min-height: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(12rem, .8fr);
  gap: 1rem;
  align-items: start;
  padding: 1.2rem;
  border-radius: .75rem;
}
.activity-card:hover { border-color: var(--moss); transform: translateY(-2px); }
.activity-card-copy { display: grid; gap: .6rem; }
.activity-card-copy h3 { font-family: var(--sans); font-size: clamp(1rem, 1.6vw, 1.2rem); font-weight: 780; line-height: 1.18; }
.activity-card-copy p { margin: 0; color: var(--ink-soft); font-size: .78rem; }
.activity-card-copy > strong { color: var(--moss); font-size: .7rem; line-height: 1.45; }
.activity-card-facts { display: grid; gap: .75rem; margin: 0; padding-left: 1rem; border-left: 1px solid var(--line); }
.activity-card-facts div { display: grid; gap: .2rem; }
.activity-card-facts dt { color: var(--ink-soft); font-size: .58rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.activity-card-facts dd { margin: 0; font-size: .72rem; line-height: 1.5; }
.activity-card-action { grid-column: 1 / -1; display: flex; justify-content: space-between; gap: .8rem; align-items: center; padding-top: .8rem; border-top: 1px solid var(--line); }
.activity-card-action small { color: var(--ink-soft); font-size: .62rem; }
.activity-card-action b { color: var(--moss); font-size: .7rem; }
.activity-table-wrap { margin-top: 2rem; overflow-x: auto; border: 1px solid var(--line); border-radius: .75rem; background: var(--white); }
.activity-table-wrap:focus-visible { outline: 3px solid var(--rust); outline-offset: 3px; }
.activity-table { width: 100%; min-width: 58rem; border-collapse: collapse; font-size: .72rem; }
.activity-table caption { padding: 1rem; color: var(--ink-soft); font-size: .65rem; text-align: left; }
.activity-table th,
.activity-table td { padding: .8rem 1rem; border-top: 1px solid var(--line); text-align: left; vertical-align: top; }
.activity-table thead th { color: var(--moss); font-size: .6rem; letter-spacing: .07em; text-transform: uppercase; }
.activity-table tbody th { max-width: 15rem; font-weight: 750; }
.activity-family-note { display: grid; gap: .35rem; margin-top: 1rem; padding: 1rem 1.15rem; border-left: 3px solid var(--rust); background: var(--sand); scroll-margin-top: 8rem; }
.activity-family-note strong { font-size: .78rem; }
.activity-family-note p { max-width: 56rem; margin: 0; color: var(--ink-soft); font-size: .74rem; }
.activity-planning-grid { display: grid; gap: 1.5rem; }
.activity-planning-lead h2 { max-width: 34rem; font-family: var(--serif); font-size: clamp(2rem, 4.5vw, 3.4rem); font-weight: 520; line-height: .98; }
.activity-planning-lead > p:last-child { max-width: 34rem; color: var(--ink-soft); font-size: .82rem; }
.activity-planning-steps article { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr); gap: .8rem; padding: 1rem 0; border-bottom: 1px solid var(--line); }
.activity-planning-steps article > span { color: var(--moss); font-family: var(--sans); font-size: .58rem; font-weight: 850; letter-spacing: .08em; }
.activity-planning-steps h3 { font-size: .86rem; }
.activity-planning-steps p { margin: .25rem 0 0; color: var(--ink-soft); font-size: .74rem; }
.activity-next-step { display: grid; gap: .65rem; align-content: start; padding: 1rem; border: 1px solid var(--line); border-radius: .75rem; background: var(--surface-soft); }
.activity-next-step > span { color: var(--moss); font-size: .62rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.activity-next-step a { min-height: var(--tap-target); display: flex; align-items: center; padding-block: .65rem; border-top: 1px solid var(--line); font-size: .75rem; font-weight: 750; }

@media (min-width: 48rem) {
  .gyg-consent-gate { grid-template-columns: minmax(0, 1fr) auto; }
  .gyg-consent-gate > a { grid-column: 1 / -1; }
  .activity-filters { grid-template-columns: minmax(13rem, 1.4fr) repeat(3, minmax(9rem, 1fr)); }
  .activity-filter-status { grid-column: 1 / -1; }
  .event-calendar-source { grid-template-columns: minmax(0, 1fr) auto; }
  .activity-directory { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .activity-group-heading { grid-template-columns: minmax(0, 1fr) minmax(18rem, .75fr); align-items: end; }
  .activity-card { grid-template-columns: minmax(0, 1fr); }
  .activity-card-facts { grid-column: 1; padding: .8rem 0 0; border-top: 1px solid var(--line); border-left: 0; }
  .activity-card-action { grid-column: 1; }
  .activity-planning-grid { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) minmax(13rem, .65fr); align-items: start; }
}

@media (max-width: 47.99rem) {
  .gyg-live-heading { align-items: start; flex-direction: column; }
  .gyg-live-heading p { text-align: left; }
  .activity-card { grid-template-columns: minmax(0, 1fr); }
  .activity-card-facts { grid-column: 1; padding: .8rem 0 0; border-top: 1px solid var(--line); border-left: 0; }
  .activity-card-action { grid-column: 1; align-items: start; flex-direction: column; }
}

@media (max-width: 37.99rem) {
  .faq-item p { font-size: .875rem; }
}

/* Editorial itinerary hub */
.itinerary-page .page-hero h1 { max-width: 58rem; font-size: clamp(2.75rem, 5vw, 4rem); overflow-wrap: anywhere; }
.itinerary-intro { padding-top: clamp(4rem, 8vw, 7rem); }
.itinerary-intro-grid { display: grid; gap: 2rem; align-items: end; }
.itinerary-intro-grid h2 { max-width: 45rem; font-size: clamp(2.6rem, 5.5vw, 5rem); font-weight: 430; line-height: .94; }
.itinerary-intro-grid > div:last-child { max-width: 38rem; }
.itinerary-intro-grid p { margin: 0 0 1rem; color: var(--ink-soft); font-size: .95rem; line-height: 1.75; }
.itinerary-intro-grid p strong { color: var(--ink); }
.route-decision-grid { display: grid; margin-top: clamp(2.5rem, 5vw, 4.5rem); border-top: 1px solid var(--ink); }
.route-decision-grid a { display: grid; gap: .4rem; padding: 1.2rem .15rem; border-bottom: 1px solid var(--line); }
.route-decision-grid span { color: var(--rust); font-size: .68rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.route-decision-grid strong { font-family: var(--serif); font-size: clamp(1.45rem, 2.7vw, 2rem); font-weight: 520; }
.route-decision-grid p { margin: 0; color: var(--ink-soft); font-size: .78rem; }
.route-decision-grid b { margin-top: .7rem; color: var(--moss); font-size: .75rem; }
.itinerary-live-note { display: grid; grid-template-columns: 2.8rem minmax(0, 1fr); gap: .9rem; align-items: start; margin-top: 2rem; padding: 1rem; background: var(--sky); }
.itinerary-live-note > span { width: 2.4rem; height: 2.4rem; display: grid; place-items: center; border-radius: 50%; background: var(--moss); color: var(--white); }
.itinerary-live-note strong { font-size: .86rem; }
.itinerary-live-note p { margin: .25rem 0 0; color: var(--ink-soft); font-size: .78rem; }
.itinerary-live-note a { color: var(--moss); text-decoration: underline; text-underline-offset: .18rem; }

.itinerary-route { scroll-margin-top: 7.4rem; border-top: 1px solid var(--line); }
.itinerary-route-soft { background: var(--surface-soft); }
.itinerary-route-grid { display: grid; gap: 2.5rem; }
.itinerary-route header { align-self: start; }
.itinerary-route header h2 { max-width: 39rem; font-size: clamp(2.5rem, 5.1vw, 4.6rem); font-weight: 430; line-height: .93; }
.itinerary-route header > p:not(.eyebrow) { max-width: 34rem; margin: 1rem 0 1.4rem; color: var(--ink-soft); }
.itinerary-route header dl { margin: 0; border-top: 1px solid var(--ink); }
.itinerary-route header dl > div { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr); gap: .8rem; padding: .75rem 0; border-bottom: 1px solid var(--line); }
.itinerary-route header dt { color: var(--ink-soft); font-size: .67rem; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.itinerary-route header dd { margin: 0; font-size: .76rem; line-height: 1.5; }
.itinerary-days { counter-reset: itinerary-day; border-top: 1px solid var(--ink); }
.itinerary-days article { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr); gap: 1rem; padding: 1.25rem 0; border-bottom: 1px solid var(--line); }
.itinerary-days article > span { color: var(--rust); font-family: var(--serif); font-size: 1.05rem; }
.itinerary-days h3 { font-family: var(--serif); font-size: clamp(1.3rem, 2.3vw, 1.7rem); font-weight: 550; }
.itinerary-days p { margin: .45rem 0 0; color: var(--ink-soft); font-size: .8rem; line-height: 1.65; }
.itinerary-days .itinerary-plan-b { color: var(--ink); font-size: .74rem; }

.itinerary-variants { background: var(--ink); color: var(--white); }
.itinerary-variants .eyebrow { color: var(--moss-soft); }
.itinerary-variants .section-head h2 { color: var(--white); }
.itinerary-variants .section-intro { color: var(--moss-soft); }
.itinerary-variant-grid { display: grid; gap: 1px; background: rgb(255 255 255 / .15); }
.itinerary-variant-grid article { min-width: 0; display: grid; align-content: start; background: var(--footer); }
.itinerary-variant-grid article > span { padding: .7rem 1rem; color: var(--moss-soft); font-size: .65rem; font-weight: 850; letter-spacing: .09em; text-transform: uppercase; }
.itinerary-variant-grid article > img { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; }
.itinerary-variant-grid article > div { display: grid; gap: .8rem; padding: 1.15rem; }
.itinerary-variant-grid h3 { font-family: var(--serif); font-size: 1.65rem; font-weight: 520; }
.itinerary-variant-grid p { margin: 0; color: var(--moss-soft); font-size: .78rem; line-height: 1.65; }
.itinerary-variant-grid ul { display: grid; gap: .45rem; margin: .2rem 0; padding-left: 1.1rem; color: rgb(255 255 255 / .82); font-size: .75rem; }
.itinerary-variant-grid a { width: fit-content; margin-top: .4rem; color: var(--white); border-bottom: 1px solid currentColor; font-size: .75rem; font-weight: 750; }

.itinerary-booking { display: grid; gap: 2rem; align-items: start; }
.itinerary-booking h2 { max-width: 38rem; font-size: clamp(2.5rem, 5vw, 4.5rem); font-weight: 430; line-height: .94; }
.itinerary-booking ol { margin: 2rem 0 0; padding: 0; border-top: 1px solid var(--ink); list-style: none; counter-reset: booking-step; }
.itinerary-booking li { counter-increment: booking-step; display: grid; grid-template-columns: 2rem minmax(0, 1fr); gap: .15rem 1rem; padding: .85rem 0; border-bottom: 1px solid var(--line); }
.itinerary-booking li::before { content: "0" counter(booking-step); grid-row: 1 / 3; color: var(--rust); font-size: .68rem; font-weight: 850; }
.itinerary-booking li strong { font-family: var(--serif); font-size: 1.15rem; font-weight: 550; }
.itinerary-booking li span { color: var(--ink-soft); font-size: .76rem; }
.itinerary-booking aside { display: grid; gap: .75rem; padding: 1rem; background: var(--surface-soft); border: 1px solid var(--line); }
.itinerary-booking aside .button { width: 100%; }
.itinerary-booking aside .affiliate-label { margin-bottom: -.5rem; }
.itinerary-booking aside .text-link { width: fit-content; margin-top: .4rem; }
.itinerary-booking aside small { color: var(--ink-soft); font-size: .7rem; line-height: 1.55; }

@media (min-width: 44rem) {
  .planning-shortcuts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .itinerary-page .season-stories-head { grid-template-columns: minmax(0, 1.35fr) minmax(16rem, .65fr); }
  .itinerary-page .season-story-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .itinerary-page .season-story-summer { grid-column: 1 / -1; min-height: 30rem; }
  .route-decision-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .route-decision-grid a { padding-inline: 1rem; border-right: 1px solid var(--line); }
  .route-decision-grid a:first-child { padding-left: 0; }
  .route-decision-grid a:last-child { padding-right: 0; border-right: 0; }
  .itinerary-variant-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (min-width: 64rem) {
  .editorial-welcome-grid { grid-template-columns: minmax(0, 1.3fr) minmax(20rem, .7fr); }
  .planning-shortcuts { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .itinerary-page .season-story-grid { grid-template-columns: minmax(0, 1.35fr) minmax(17rem, .65fr); grid-template-rows: repeat(2, 19rem) 15rem; }
  .itinerary-page .season-story-summer { grid-column: 1; grid-row: 1 / 3; min-height: 0; }
  .itinerary-page .season-story-spring { grid-column: 2; grid-row: 1; }
  .itinerary-page .season-story-autumn { grid-column: 2; grid-row: 2; }
  .itinerary-page .season-story-winter { grid-column: 1 / -1; grid-row: 3; }
  .itinerary-page .season-story-winter img { object-position: center 62%; }
  .itinerary-intro-grid { grid-template-columns: minmax(0, 1.1fr) minmax(20rem, .7fr); }
  .itinerary-route-grid { grid-template-columns: minmax(19rem, .7fr) minmax(0, 1.3fr); gap: clamp(3rem, 7vw, 7rem); }
  .itinerary-route header { position: sticky; top: 8.5rem; }
  .itinerary-days-compact { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .itinerary-days-compact article { grid-template-columns: 4rem minmax(0, 1fr); padding-right: 1.2rem; }
  .itinerary-days-compact article:nth-child(odd) { border-right: 1px solid var(--line); }
  .itinerary-days-compact article:nth-child(even) { padding-left: 1.2rem; }
  .itinerary-booking { grid-template-columns: minmax(0, 1.25fr) minmax(17rem, .55fr); gap: clamp(3rem, 8vw, 8rem); }
}

@media (max-width: 37.99rem) {
  .hero-intro h1 { max-width: 100%; font-size: clamp(2.5rem, 10vw, 2.75rem); line-height: .94; overflow-wrap: anywhere; }
  .hero-intro > p:last-child { max-width: 22rem; font-size: .9rem; }
  .editorial-welcome-kicker span:last-child { display: none; }
  .editorial-welcome-grid h2 { font-size: clamp(2.35rem, 11vw, 3.2rem); overflow-wrap: anywhere; }
  .itinerary-page .season-story { min-height: 23rem; }
  .itinerary-page .season-stories-head h2 { font-size: clamp(2.65rem, 13vw, 4rem); }
  .page-hero h1,
  .hotel-page .page-hero h1,
  .charging-page .page-hero h1,
  .travel-info-page .page-hero h1,
  .itinerary-page .page-hero h1 {
    font-size: clamp(2.25rem, 9.8vw, 2.625rem);
    overflow-wrap: break-word;
    word-break: normal;
    hyphens: auto;
  }
  .subnav { -webkit-mask-image: linear-gradient(90deg, #000 0, #000 calc(100% - 2.2rem), transparent 100%); mask-image: linear-gradient(90deg, #000 0, #000 calc(100% - 2.2rem), transparent 100%); }
  .itinerary-route header dl > div { grid-template-columns: 5.5rem minmax(0, 1fr); }
  .itinerary-days article { grid-template-columns: 3.7rem minmax(0, 1fr); gap: .7rem; }
  .itinerary-days p,
  .itinerary-variant-grid p,
  .itinerary-variant-grid ul,
  .itinerary-live-note p { font-size: .875rem; }
}

/* Flagship mobile ergonomics: safe areas, stable form focus and thumb-sized controls. */
@media (max-width: 63.99rem) {
  .site-header,
  .home-page .site-header {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
    height: 77px;
    padding-right: max(16px, env(safe-area-inset-right));
    padding-left: max(16px, env(safe-area-inset-left));
  }

  .brand { gap: 8px; overflow: hidden; }
  .brand-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .header-actions { gap: 8px; }

  .mobile-menu,
  .search-panel { inline-size: 100%; max-inline-size: 100%; }

  .site-header.is-scrolled,
  .home-page .site-header.is-scrolled {
    height: calc(77px + env(safe-area-inset-top));
    padding-top: env(safe-area-inset-top);
  }

  .mobile-menu {
    padding-right: max(16px, env(safe-area-inset-right));
    padding-bottom: max(48px, calc(24px + env(safe-area-inset-bottom)));
    padding-left: max(16px, env(safe-area-inset-left));
  }

  .brand-mark,
  .home-page .brand-mark,
  .site-header.is-scrolled .brand-mark,
  .home-page .site-header.is-scrolled .brand-mark { width: 38px; height: 38px; }
  .brand-mark svg { width: 100%; height: 100%; }

  .header-search,
  .menu-button,
  .search-close {
    width: var(--tap-target);
    height: var(--tap-target);
    flex: 0 0 var(--tap-target);
  }

  .footer-bottom { padding-bottom: max(1.1rem, env(safe-area-inset-bottom)); }
}

@media (max-width: 63.99rem) {
  input:not([type="checkbox"]):not([type="radio"]),
  select,
  textarea { font-size: 1rem !important; }

  .site-search input { min-height: var(--tap-target); }
  .gallery-nav { width: var(--tap-target); height: var(--tap-target); }
  .leaflet-touch .leaflet-bar a {
    width: var(--tap-target);
    height: var(--tap-target);
    line-height: var(--tap-target);
  }

  .breadcrumb { padding-block: .35rem; }
  .breadcrumb a { min-width: 44px; min-height: var(--tap-target); display: inline-flex; align-items: center; justify-content: center; }
  .subnav-inner { gap: .15rem; }
  .subnav a { min-width: var(--tap-target); justify-content: center; padding-inline: .65rem; }

  .text-link,
  .footer-plan-link,
  .suggestions-more,
  .charge-stop-link { min-height: var(--tap-target); align-items: center; }

  .footer-col { gap: 0; border-top: 1px solid rgb(255 255 255 / .14); }
  .footer-toggle { margin: 0; color: var(--moss-soft); }
  .footer-toggle span { display: inline; }
  .footer-toggle[aria-expanded="false"] + .footer-links { display: none; }
  .footer-links { gap: 0; padding-bottom: .5rem; }
  .footer-col a { min-height: var(--tap-target); display: flex; align-items: center; }
}

@media (max-width: 37.99rem) {
  .travel-safety nav { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; }
  .travel-safety nav a { min-width: 0; padding-inline: 8px; border: 1px solid var(--line); text-decoration: none; }
}

@media (orientation: landscape) and (max-height: 32rem) and (max-width: 63.99rem) {
  .hero-status { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .hero-status strong,
  .hero-status em { overflow: visible; text-overflow: clip; white-space: normal; }
}

@media (max-width: 37.99rem) {
  .site-header,
  .home-page .site-header {
    top: calc(.25rem + env(safe-area-inset-top));
    height: 70px;
  }

  .site-header.is-scrolled,
  .home-page .site-header.is-scrolled {
    top: 0;
    height: calc(70px + env(safe-area-inset-top));
  }

  .mobile-menu { inset-block-start: calc(70px + env(safe-area-inset-top)); }
  .subnav { top: calc(70px + env(safe-area-inset-top)); }
}

/* Launch polish: clear primary actions and flat, editorial content surfaces. */
.hero-intro > p:not(.eyebrow) {
  max-width: 38rem;
  margin: 1.15rem 0 0;
  color: var(--white);
  font-size: 1rem;
}

.hero-primary-actions,
.page-hero-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .65rem 1rem;
  margin-top: 1.25rem;
}

.hero-primary-actions > a:not(.button),
.page-hero .page-hero-actions > a:not(.button) {
  min-height: var(--tap-target);
  display: inline-flex;
  align-items: center;
  color: var(--white);
  border-bottom: 1px solid rgb(255 255 255 / .62);
  font-size: .82rem;
  font-weight: 750;
}

.hero-primary-actions > a:not(.button):hover,
.page-hero .page-hero-actions > a:not(.button):hover { border-bottom-color: var(--white); }
.page-hero .page-hero-actions .button { background: var(--white); color: var(--ink); }
.page-hero .page-hero-actions .button:hover { background: var(--sky); }

.lodging-hero-side {
  min-width: 0;
  display: grid;
  gap: .85rem;
  justify-items: start;
}

.lodging-detail-page .lodging-score {
  padding: 1rem 1.1rem;
  border-color: var(--ink);
  background: var(--ink);
  color: var(--white);
}

.lodging-detail-page .lodging-score strong { font-family: var(--sans); font-weight: 760; }
.lodging-detail-page .lodging-score span,
.lodging-detail-page .lodging-score small { color: rgb(255 255 255 / .76); }

.lodging-hero-booking {
  width: min(100%, 22rem);
  display: grid;
  gap: .45rem;
  padding-top: .85rem;
  border-top: 1px solid var(--line);
}

.lodging-hero-booking .affiliate-label { margin: 0 0 .1rem; }
.lodging-hero-booking .button { width: 100%; min-height: var(--tap-target); }
.lodging-hero-booking small { color: var(--ink-soft); font-size: .68rem; line-height: 1.5; }

.stay-static-image {
  position: relative;
  display: block;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--sky);
}

.stay-static-image picture,
.stay-static-image img {
  width: 100%;
  height: 100%;
  display: block;
}

.stay-static-image img {
  object-fit: cover;
}

.stay-static-image:focus-visible {
  outline-offset: -4px;
}

.stay-static-placeholder {
  position: relative;
  aspect-ratio: 16 / 10;
  display: grid;
  align-content: end;
  gap: .2rem;
  overflow: hidden;
  padding: clamp(1rem, 3vw, 1.4rem);
  border-bottom: 1px solid var(--line);
  background: color-mix(in oklch, var(--sky) 72%, var(--sand));
}

.stay-static-placeholder::before {
  content: "";
  position: absolute;
  top: 1.2rem;
  right: 1.2rem;
  width: 3.6rem;
  border-top: 1px solid color-mix(in oklch, var(--moss) 48%, transparent);
}

.stay-static-placeholder span {
  color: var(--moss);
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.stay-static-placeholder strong {
  font-family: var(--serif);
  font-size: clamp(1.65rem, 4vw, 2.2rem);
  font-weight: 520;
  letter-spacing: -.025em;
}

.stay-static-title { display: block; width: fit-content; }
.stay-static-title:hover h2 { color: var(--moss); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .16em; }
.stay-static-actions .stay-expand-button,
.stay-static-actions .button { min-height: var(--tap-target); }
.stay-static-actions .affiliate-label { margin: 0 0 .1rem; }
.stay-static-note {
  min-height: var(--tap-target);
  display: inline-flex;
  align-items: center;
  color: var(--ink-soft);
  font-size: .7rem;
  font-weight: 700;
}

.activity-independent-grid {
  display: grid;
  border-top: 1px solid var(--line);
}

.activity-independent-grid article {
  min-width: 0;
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: .65rem;
  padding: 1.35rem 0;
  border-bottom: 1px solid var(--line);
}

.activity-independent-grid h3 {
  max-width: 19rem;
  font-family: var(--serif);
  font-size: clamp(1.3rem, 2.5vw, 1.7rem);
  font-weight: 540;
  letter-spacing: -.02em;
}

.activity-independent-grid p {
  max-width: 31rem;
  margin: 0;
  color: var(--ink-soft);
  font-size: .8rem;
  line-height: 1.65;
}

.activity-independent-grid a {
  width: fit-content;
  min-height: var(--tap-target);
  display: inline-flex;
  align-items: center;
  color: var(--moss);
  border-bottom: 1px solid currentColor;
  font-size: .75rem;
  font-weight: 780;
}

@media (min-width: 42rem) {
  .activity-independent-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    border-left: 1px solid var(--line);
  }
  .activity-independent-grid article {
    padding: 1.5rem;
    border-right: 1px solid var(--line);
  }
}

@media (min-width: 46rem) {
  .lodging-hero-side { justify-items: end; }
}

@media (min-width: 68rem) {
  .activity-independent-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 37.99rem) {
  .hero-intro > p:not(.eyebrow) { max-width: 22rem; font-size: .9rem; }
  .hero-primary-actions,
  .page-hero-actions { align-items: stretch; }
  .hero-primary-actions .button,
  .page-hero .page-hero-actions .button { flex: 1 1 12rem; }
  .hero-primary-actions > a:not(.button),
  .page-hero .page-hero-actions > a:not(.button) { flex: 1 1 auto; justify-content: center; }
  .lodging-hero-booking { width: 100%; }
  .stay-static-actions { grid-template-columns: 1fr; }
}

/* Reflow at narrow widths and high text zoom; no fact or action may be clipped. */
.page-hero-grid > *,
.section-head > *,
.charger-results-head > *,
.charger-result-top > *,
.food-source > *,
.food-place-facts > *,
.gyg-live-heading > *,
.map-point-popup,
.food-map-popup { min-width: 0; }

h1,
h2,
h3,
.page-hero-aside,
.charger-live,
.charger-result-address,
.charger-result-meta,
.charger-result-extra,
.charger-result-distance,
.food-place-copy,
.food-place-copy .listing-meta > *,
.food-source > *,
.map-point-popup,
.food-map-popup { overflow-wrap: anywhere; }

.gyg-live-heading > div,
.gyg-consent-gate,
.gyg-consent-gate > div,
.activity-groups,
.activity-group,
.activity-directory,
.activity-card,
.activity-card-copy,
.activity-card-facts,
.source-strip,
.source-strip > * { min-width: 0; }

.gyg-live-heading > div,
.gyg-consent-gate,
.activity-groups { grid-template-columns: minmax(0, 1fr); }

.gyg-live-heading span,
.gyg-live-heading strong,
.gyg-consent-gate *,
.activity-card *,
.source-strip *,
.data-note strong,
.season-story > div > * { overflow-wrap: anywhere; }

.season-story > div { grid-template-columns: minmax(0, 1fr); }
.season-story > div > * { min-width: 0; }
.map-button { max-width: calc(100% - 1.5rem); white-space: normal; overflow-wrap: anywhere; }

.charger-popup a,
.map-point-popup > a,
.map-point-popup small a,
.food-map-popup a {
  min-height: var(--tap-target);
  display: flex;
  align-items: center;
}

@media (max-width: 37.99rem) {
  .charger-results-head,
  .charger-result-top,
  .gyg-live-heading,
  .food-source { grid-template-columns: minmax(0, 1fr); }

  .charger-results-head,
  .charger-result-top,
  .gyg-live-heading,
  .food-source { display: grid; }

  .charger-live { max-width: 100%; justify-self: start; white-space: normal; }
  .charger-locate,
  .provider-switch .button { white-space: normal; }
  .gyg-live-heading { align-items: start; }
  .gyg-live-heading p { max-width: none; text-align: left; }
  .food-place-facts div,
  .map-trail-facts div { grid-template-columns: minmax(0, 1fr); }

  .charge-stop { grid-template-columns: minmax(0, 1fr); }
  .charge-stop-number,
  .charge-stop-copy,
  .charge-stop-facts,
  .charge-stop-link { grid-column: 1; }
  .charge-stop-facts div { grid-template-columns: minmax(0, 1fr); }
  .trust-strip { grid-template-columns: minmax(0, 1fr); }
  .trust-strip > div { min-width: 0; grid-template-columns: 2.25rem minmax(0, 1fr); }
  .trust-strip > div > * { min-width: 0; overflow-wrap: anywhere; }
}

/* Mat og drikke: redaksjonell forside, presise faktakort og rolige handlinger. */
.food-page-hero {
  position: relative;
  min-height: clamp(27rem, 58svh, 36rem);
  display: grid;
  align-items: end;
  overflow: hidden;
  padding-block: clamp(5rem, 8vw, 6.5rem) clamp(2.5rem, 5vw, 4rem);
  background: #08191c;
  color: var(--white);
}
.restaurant-page .food-page-hero { background: #08191c; }
.food-page-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgb(3 15 18 / .82) 0%, rgb(3 15 18 / .46) 54%, rgb(3 15 18 / .13) 100%),
              linear-gradient(0deg, rgb(3 15 18 / .56), transparent 45%);
}
.food-page-hero-media,
.food-page-hero-media img { position: absolute; inset: 0; width: 100%; height: 100%; }
.food-page-hero-media img { object-fit: cover; }
.food-page-hero .page-hero-grid { position: relative; z-index: 2; }
.food-page-hero .page-hero-copy { max-width: 47rem; }
.food-page-hero .page-hero-copy h1 {
  max-width: 44rem;
  color: var(--white);
  font-family: var(--serif);
  font-size: clamp(2.75rem, 5.2vw, 4rem);
  font-weight: 680;
  letter-spacing: -.05em;
  line-height: .96;
}
.food-page-hero .page-hero-copy > p:last-child { max-width: 38rem; color: rgb(255 255 255 / .88); }
.food-page-hero .eyebrow { color: rgb(255 255 255 / .78); }
.food-page-hero .page-hero-aside {
  align-self: end;
  border: 0;
  border-left: 1px solid rgb(255 255 255 / .45);
  border-radius: 0;
  background: transparent;
  color: rgb(255 255 255 / .82);
  box-shadow: none;
}
.food-page-hero .page-hero-aside strong { color: var(--white); }
.food-page-hero-label {
  position: absolute;
  z-index: 3;
  right: 1rem;
  bottom: 1rem;
  min-height: 2rem;
  display: inline-flex;
  align-items: center;
  padding: .3rem .48rem;
  background: rgb(3 15 18 / .62);
  color: rgb(255 255 255 / .8);
  font-size: .58rem;
}

.food-directory-list {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.25rem;
  border: 0;
}
.food-more { display: flex; justify-content: center; margin: 1.5rem 0 0; }
.food-more[hidden], .food-more [hidden] { display: none !important; }
.food-more .button { min-width: min(100%, 16rem); }
.food-page .food-place[hidden] { display: none !important; }
.food-directory-list > .anchor-target { position: absolute; }
.food-place-card,
.restaurant-page .food-place-card {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-content: start;
  gap: 0;
  padding: 0;
  border: 1px solid var(--line);
  border-top: 2px solid var(--ink);
  border-radius: 0;
  background: var(--paper);
  box-shadow: none;
}
.restaurant-page .food-place-card:hover { border-color: var(--ink); background: var(--paper); }
.food-place-card.is-map-target {
  background: color-mix(in srgb, var(--sky) 50%, var(--paper));
  outline: 2px solid var(--rust);
  outline-offset: 2px;
}
.food-place-media {
  position: relative;
  min-width: 0;
  margin: 0;
  overflow: hidden;
  border-bottom: 1px solid var(--line);
  background: var(--surface-soft);
}
.food-place-media img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
.food-place-media figcaption {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: .25rem .75rem;
  padding: .45rem .85rem;
  color: var(--ink-soft);
  font-size: .56rem;
  line-height: 1.35;
}
.food-place-media figcaption a {
  min-height: 2rem;
  display: inline-flex;
  align-items: center;
  margin-block: -.3rem;
  padding-block: .3rem;
  text-decoration: underline;
  text-underline-offset: .14em;
}
.food-place-header { display: grid; gap: .55rem; padding: 1.1rem 1.15rem .6rem; }
.food-place-header .listing-meta { justify-content: flex-start; }
.food-place-header h3 {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(1.3rem, 2vw, 1.7rem);
  font-weight: 680;
  letter-spacing: -.038em;
  line-height: 1.03;
}
.food-place-copy { display: grid; gap: .85rem; padding: 0 1.15rem; }
.food-place-copy > p { margin: 0; color: var(--ink-soft); font-size: .84rem; line-height: 1.65; }
.food-place-card .food-best-for { min-height: 0; display: block; margin: 0; padding-top: .75rem; border-top: 1px solid var(--line); color: var(--ink-soft); }
.food-best-for > span {
  display: block;
  margin-bottom: .22rem;
  color: var(--ink);
  font-size: .65rem;
  font-weight: 760;
}
.food-place-card .food-place-facts { grid-column: auto; display: grid; gap: 0; margin: 1rem 1.15rem 0; border-top: 1px solid var(--line); }
.food-place-card .food-place-fact {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(5.5rem, .42fr) minmax(0, 1fr);
  gap: .75rem;
  padding: .62rem 0;
  border-bottom: 1px solid var(--line);
}
.food-place-fact dt { color: var(--ink-soft); font-size: .66rem; }
.food-place-fact dd { margin: 0; font-size: .7rem; line-height: 1.5; overflow-wrap: anywhere; }
.food-place-card > .food-place-header,
.food-place-card > .food-place-copy,
.food-place-card > .food-place-facts,
.food-place-card > .food-place-actions { grid-column: auto; }
.food-place-actions { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: auto; padding: 1rem 1.15rem 1.2rem; }
.food-action {
  min-height: var(--tap-target);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .7rem .9rem;
  border: 1px solid var(--ink);
  border-radius: 0;
  color: var(--ink);
  font-size: .7rem;
  font-weight: 720;
  text-align: center;
}
.food-action-source { background: var(--ink); color: var(--white); }
.food-action-source:hover { background: var(--moss); color: var(--white); }
.food-action-map:hover { background: var(--sky); }
.food-method-note { max-width: 54rem; color: var(--ink-soft); font-size: .72rem; line-height: 1.6; }
.food-map-popup-actions { display: grid; gap: .2rem; border-top: 1px solid var(--line); padding-top: .3rem; }
.food-map-popup-actions a { color: var(--ink); text-decoration: underline; text-underline-offset: .18em; }

@media (min-width: 44rem) {
  .food-directory-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 72rem) {
  .food-directory-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 43.99rem) {
  .food-page-hero { min-height: 29rem; }
  .food-page-hero::after { background: linear-gradient(0deg, rgb(3 15 18 / .86) 0%, rgb(3 15 18 / .36) 72%, rgb(3 15 18 / .15)); }
  .food-page-hero .page-hero-aside { display: none; }
  .food-page-hero-label { right: .75rem; bottom: .65rem; }
  .food-page-hero .page-hero-copy h1 { font-size: clamp(2.25rem, 9.8vw, 2.625rem); }
  .food-place-actions { display: grid; grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 43.99rem) {
  .gyg-consent-gate { grid-template-columns: minmax(0, 1fr); }
}

/* Edge-to-edge site chrome: the initial and sticky headers share one safe-area-aware frame. */
.site-header,
.home-page .site-header {
  inset: 0 0 auto;
  height: calc(4.8rem + env(safe-area-inset-top));
  padding-top: env(safe-area-inset-top);
  padding-right: max(1.25rem, env(safe-area-inset-right), calc((100vw - 80rem) / 2 + .35rem));
  padding-left: max(1.25rem, env(safe-area-inset-left), calc((100vw - 80rem) / 2 + .35rem));
}

.site-header.is-scrolled,
.home-page .site-header.is-scrolled {
  position: fixed;
  inset: 0 0 auto;
  height: calc(4.8rem + env(safe-area-inset-top));
  padding-top: env(safe-area-inset-top);
}

@media (max-width: 63.99rem) {
  .site-header,
  .home-page .site-header,
  .site-header.is-scrolled,
  .home-page .site-header.is-scrolled {
    height: calc(77px + env(safe-area-inset-top));
    padding-top: env(safe-area-inset-top);
    padding-right: max(16px, env(safe-area-inset-right));
    padding-left: max(16px, env(safe-area-inset-left));
  }

  .mobile-menu { inset-block-start: calc(77px + env(safe-area-inset-top)); }
}

@media (max-width: 37.99rem) {
  /* Edge-to-edge mobile chrome */
  .site-header,
  .home-page .site-header,
  .site-header.is-scrolled,
  .home-page .site-header.is-scrolled {
    inset: 0 0 auto;
    top: 0;
    height: calc(70px + env(safe-area-inset-top));
  }

  .mobile-menu { inset-block-start: calc(70px + env(safe-area-inset-top)); }
}

/* Page-by-page audit fixes. */
.editorial-detail-page .page-hero { background-image: none; }
.editorial-hero-media { position: absolute; z-index: 0; inset: 0; display: block; }
.editorial-hero-media img { width: 100%; height: 100%; display: block; object-fit: cover; }
.editorial-detail-page .page-hero::before { z-index: 1; }
.editorial-detail-page .page-hero-grid { z-index: 2; }
.search-results-page main > .breadcrumb {
  position: static;
  inset: auto;
  width: var(--shell);
  padding: 1rem 0 0;
  color: var(--ink-soft);
  transform: none;
}
.search-results-page main > .breadcrumb a:hover { color: var(--moss); }
.search-results-page .search-page { padding-top: clamp(2.25rem, 5vw, 4rem); }
.leaflet-control-zoom a {
  width: 44px !important;
  height: 44px !important;
  line-height: 44px !important;
}
