/* ══════════════════════════════════════════════════════════════
   VILU THEME FOUNDATION — Phase 12B-C
   Dual-theme design tokens (Cinematic Dark / Island Luxury Light),
   typography scale, spacing/layout tokens and the theme switch.

   Loaded LAST in <head> on every public page (after shared-page.css or
   the homepage's inline stylesheet) so its :root tokens win the cascade.
   Theme state lives on <html data-theme="dark|light"> (theme.js).
   First-ever visit = Cinematic Dark; the operating-system colour-scheme
   preference is deliberately NOT consulted (approved 12B-B decision 3).

   Brand reference (constant in both themes):
     --vilu-amber  #C29147  — measured from the golden coconut in the logo
   Interface variants:
     dark  --accent #E0A752  (buttons carry dark ink, never white)
     light --accent #AD701F  / --accent-text #925F1C for readable links

   LEGACY ALIASES: shared-page.css and the homepage inline stylesheet still
   reference the Phase 10 palette (--navy, --gold, --teal-light, --white,
   --card …). Those names are kept below as deliberate aliases onto the new
   semantic tokens so no existing selector breaks. The old "--gold = cyan"
   semantic is retired: --gold now resolves to the Vilu amber accent.
   Later Phase 12 stages migrate components to the semantic names and
   delete the aliases.
   ══════════════════════════════════════════════════════════════ */

:root{
  color-scheme:dark;

  /* ── Brand constant ── */
  --vilu-amber:#c29147;

  /* ── Cinematic Dark (default) ── */
  --bg:#06101c;
  --bg-secondary:#0a1628;
  --surface:#0f2140;
  --surface-secondary:#14294a;
  --text:#f3f7fb;
  --text-muted:#9db4c6;
  --accent:#e0a752;
  --accent-hover:#ecbd7a;
  --accent-text:#e0a752;
  --accent-ink:#1a0f04;
  --accent-soft:rgba(224,167,82,.14);
  --border:rgba(243,247,251,.12);
  --border-strong:rgba(243,247,251,.3);
  --overlay:rgba(6,16,28,.78);
  --nav-scrolled-bg:rgba(6,16,28,.86);
  --on-media:#f3f7fb;           /* text placed over photography/video, both themes */
  --shadow-card:0 20px 50px rgba(0,4,10,.35);
  --toggle-track:rgba(243,247,251,.14);
  --toggle-knob:#ffffff;
  --toggle-knob-on:#1a0f04;

  /* ── Typography ── */
  --font-display:'Cormorant Garamond',Georgia,'Times New Roman',serif;
  --font-body:'DM Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --fs-body:17px;
  --lh-body:1.65;
  --fs-lead:20px;
  --fs-small:14px;
  --fs-label:12px;
  --fs-h1:clamp(40px,6vw,64px);
  --fs-h2:clamp(30px,4.2vw,44px);
  --fs-h3:clamp(22px,2.4vw,28px);
  --fs-display:clamp(52px,7vw,104px);
  --tracking-label:.18em;

  /* ── Spacing / layout (8px rhythm) ── */
  --space-1:8px; --space-2:16px; --space-3:24px; --space-4:32px;
  --space-5:48px; --space-6:64px; --space-7:96px; --space-8:128px;
  --section-gap:96px;
  --container:1280px;
  --container-editorial:1120px;
  --measure:680px;
  --gutter:clamp(20px,5vw,48px);

  /* ── Radius / surface language ── */
  --radius-none:0;
  --radius-btn:2px;
  --radius-field:4px;
  --radius-card:6px;
  --radius-sheet:14px;

  /* ── Legacy aliases (Phase 10 names → semantic tokens) ── */
  --navy:var(--bg-secondary);
  --navy2:var(--surface);
  --abyss:var(--bg);
  --sand:var(--surface);
  --card:var(--surface);
  --card-border:var(--border);
  --white:var(--text);
  --muted:var(--text-muted);
  --gold:var(--accent);
  --gold-light:var(--accent-hover);
  --teal-light:var(--accent);
  --ocean:var(--accent);
  --teal:var(--surface-secondary);
  --glow:var(--accent-soft);
  --surface-glow:var(--bg-secondary);

  /* Legacy type scale, re-based for readability (was 11/12/13/14/16/18) */
  --font-size-xs:12px;
  --font-size-sm:14px;
  --font-size-base:17px;
  --font-size-md:17px;
  --font-size-lg:19px;
  --font-size-xl:21px;
  --font-size-2xl:23px;
  --font-size-3xl:27px;
}

/* ── Island Luxury Light: an editorial ivory system, not an inversion ── */
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#f6f1e8;
  --bg-secondary:#efe8dc;
  --surface:#fffdf9;
  --surface-secondary:#f1ebe0;
  --text:#1d2430;
  --text-muted:#5c6674;
  --accent:#ad701f;
  --accent-hover:#c07f2b;
  --accent-text:#925f1c;
  --accent-ink:#1a0f04;          /* dark ink on the amber fill: 4.59:1 (ivory #fff8ef only reached 3.90:1) */
  --accent-soft:rgba(173,112,31,.12);
  --border:rgba(29,36,48,.14);
  --border-strong:rgba(29,36,48,.32);
  --overlay:rgba(29,36,48,.55);
  --nav-scrolled-bg:rgba(246,241,232,.9);
  --shadow-card:0 20px 50px rgba(29,36,48,.10);
  --toggle-track:rgba(29,36,48,.18);
  --toggle-knob:#ffffff;
  --toggle-knob-on:#1a0f04;

  /* --teal is a legacy alias (line 98 above) onto --surface-secondary, which
     is correct by coincidence in Dark (a dark navy that reads as an accent)
     but breaks in Light, where --surface-secondary is redefined as a near-
     white neutral surface tone -- every --teal consumer (room prices, Book
     Now/Enquire/Send buttons, contact icons/labels, the floating WhatsApp
     button) would render pale-on-pale. Overriding --teal here, scoped to
     Light only, restores a real legible accent without touching a single
     Dark-theme rule. #0e7490 is not a new invented color -- it is the exact
     brand teal already hardcoded in this file's own rgba(14,116,144,...)
     box-shadows (verified: contrast vs both --surface #fffdf9 and --bg
     #f6f1e8 clears WCAG AA for normal text, ~5.4:1 and ~4.8:1). */
  --teal:#0e7490;
}

@media (max-width:700px){
  :root{--fs-body:16.5px;--fs-lead:18px;--section-gap:64px;--font-size-base:16.5px;--font-size-md:16.5px;--font-size-lg:18px;--font-size-xl:20px}
}

/* ══════════════ BASE ══════════════ */
html{background:var(--bg)}
body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);transition:background-color .4s ease,color .4s ease}
::selection{background:var(--accent);color:var(--accent-ink)}

/* Sitewide focus ring in the accent — visible in both themes */
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* Editorial widths */
.section-inner{max-width:var(--container-editorial)}
section{padding:var(--section-gap) 0}
@media (max-width:600px){section{padding:var(--section-gap) 0}}
.content-block p,.content-list,.hp-section,.page-sub-text{max-width:var(--measure)}

/* Text placed over photography stays light in both themes: re-declare the
   legacy aliases inside those containers so descendants keep light type. */
.page-header,.hero-content,.hero-stats,.hero-scroll,.g-overlay,
nav:not(.scrolled),.mobile-menu{--white:var(--on-media);--text:var(--on-media)}
.page-header,.hero-content{color:var(--on-media)}

/* ══════════════ NAV (shared shell) ══════════════ */
nav.scrolled{background:var(--nav-scrolled-bg);border-bottom:1px solid var(--border);box-shadow:none}
nav.scrolled .nav-links>li>a,nav.scrolled .nav-drop-trigger,nav.scrolled .nav-check-availability{color:var(--text-muted)}
nav.scrolled .nav-links>li>a:hover,nav.scrolled .nav-drop-trigger:hover,nav.scrolled .nav-check-availability:hover{color:var(--text);text-shadow:none}
nav.scrolled .nav-active{color:var(--text) !important}
.nav-links>li>a:hover,.nav-drop-trigger:hover{color:var(--accent-hover);text-shadow:none}
.nav-active::after{background:var(--accent)}
.nav-logo img{border-color:var(--vilu-amber);box-shadow:none}
.nav-logo-sub,.footer-brand-sub,.section-tag,.related-card-tag,.pkg-section-label,.footer-col h4{color:var(--accent)}
:root[data-theme="light"] .section-tag,:root[data-theme="light"] .related-card-tag,:root[data-theme="light"] .pkg-section-label,:root[data-theme="light"] .footer-col h4,:root[data-theme="light"] .footer-brand-sub{color:var(--accent-text)}
.nav-drop-panel{background:var(--surface);border-color:var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-card)}
.nav-drop-panel a{color:var(--text-muted);font-size:15px}
.nav-drop-panel a:hover{background:var(--accent-soft);color:var(--text)}
nav.scrolled .lang-switcher{background:var(--surface-secondary);border-color:var(--border)}
nav.scrolled .lang-switcher select{color:var(--text)}
.lang-switcher i,.lang-switcher::after{color:var(--accent);border-color:var(--accent)}
/* Keep the header's small caps at their measured Phase 10 sizes so the
   1180/1310px crossovers still hold after the body scale increase; the new
   40px theme switch is paid for by tightening the link gap (36→28px) and the
   row padding (5vw→4vw) so "Check Availability" still fits at 1366px. */
.nav-row-top{padding-left:4vw;padding-right:4vw}
.nav-links{gap:28px}
.nav-right{gap:12px}
.nav-links>li>a,.nav-drop-trigger,.btn-plan-holiday{font-size:12px}
.nav-check-availability,.lang-switcher select{font-size:12px}
.mm-group-panel a{font-size:15px;color:var(--text-muted)}
.mm-contact a,.mm-contact-social a{color:var(--text-muted);border-color:var(--border)}
.mm-group,.mm-contact{border-color:var(--border)}
.mobile-menu{background:var(--bg)}
:root[data-theme="light"] .mobile-menu{--white:var(--text);--text:#1d2430}
.mm-packages{background:var(--accent-soft)}
.mm-group-trigger i{color:var(--accent)}
.mm-ctas .mm-check-availability{border-color:var(--border-strong)}

/* ══════════════ BUTTONS ══════════════ */
/* Semantic model: --accent = filled accent background, --accent-ink = the
   foreground placed ON that fill (dark in both themes), --accent-text = the
   accent used as text/links on the page background. Every selector that
   paints the amber fill — including legacy homepage rules that still say
   color:var(--navy) or color:var(--white) — is pinned to --accent-ink here
   so no alias can resolve to ivory/white text on #ad701f. */
/* Prefixed with `html` so the pin outranks same-specificity legacy rules that
   sit in <style> blocks later in the document (the homepage carries some). */
html .btn-primary,html .btn-plan-holiday,html .consent-btn-accept,html .mm-ctas .btn-plan-holiday,html .bb-btn,html .bwf-btn,html .tc-check-btn,html .pkg-badge,html .hp-badge,
html .room-book-btn:hover,html .hp-enquire-btn:hover,html .exp-cta:hover,html .cf-btn:hover,html .bfp-search-btn:hover,html .bfp-book-btn:hover,
html .vilu-cal-day.range-start,html .vilu-cal-day.range-end,html .ti-tab.on,html .gh-tab.on,html .cd-icon,html .floating-whatsapp,html .floating-whatsapp:hover,html .footer-social a:hover{color:var(--accent-ink)}
html .btn-primary,html .btn-plan-holiday,html .consent-btn-accept{background-color:var(--accent);background-image:none}
/* Two homepage booking buttons (booking + about sections) still carry the
   legacy inline style="background:var(--gold);color:var(--navy)". Inline
   styles outrank every sheet, so the ink is pinned with !important here until
   the homepage stage removes those attributes (recorded for 12B-E). */
.btn-primary[style],.btn-plan-holiday[style]{color:var(--accent-ink) !important;background:var(--accent) !important}
.btn-primary,.btn-plan-holiday,.consent-btn-accept,.mm-ctas .btn-plan-holiday{background:var(--accent);background-image:none;color:var(--accent-ink);border-radius:var(--radius-btn)}
.btn-primary:hover,.btn-plan-holiday:hover,.consent-btn-accept:hover{background:var(--accent-hover);background-image:none;color:var(--accent-ink);box-shadow:0 8px 24px var(--accent-soft)}
.btn-outline{background:transparent;color:var(--text);border-color:var(--border-strong);border-radius:var(--radius-btn)}
.btn-outline:hover{border-color:var(--accent);color:var(--accent-text);box-shadow:none}
.page-header .btn-outline,.hero-content .btn-outline{color:var(--on-media);border-color:rgba(243,247,251,.55)}
.page-header .btn-outline:hover,.hero-content .btn-outline:hover{color:var(--on-media);border-color:var(--accent)}
.pkg-badge{background:var(--accent);color:var(--accent-ink);border-radius:var(--radius-btn)}
.floating-whatsapp{background:var(--accent);color:var(--accent-ink)}
.floating-whatsapp:hover{background:var(--accent-hover);color:var(--accent-ink)}
.footer-social a:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}

/* ══════════════ TYPOGRAPHY HOOKS ══════════════ */
.page-h1{text-shadow:none}
.page-h1 em,.section-title em,.hero-title em{color:var(--accent)}
.content-block h3{color:var(--accent-text);font-family:var(--font-display);font-size:var(--fs-h3);font-weight:400;line-height:1.2}
.content-block a,.breadcrumbs a,.hp-soft-link,.toc-block a:hover,.pkg-cta-alt:hover{color:var(--accent-text)}
.content-block p,.content-list li,.hp-section p{line-height:var(--lh-body)}
.toc-block ol li::before{color:var(--accent)}
.tip-box{border-left-color:var(--accent)}
.tip-box i,.info-card i{color:var(--accent)}
.faq-block summary i,.pkg-sticky-cta-link i{color:var(--accent)}

/* ══════════════ SURFACES ══════════════ */
.info-card,.toc-block,.tip-box,.related-card,.pkg-card,.faq-block details,.table-wrap table,.consent-panel,.pkg-sticky-cta,.cta-band{background:var(--surface);border-color:var(--border);border-radius:var(--radius-card);box-shadow:none}
.pkg-card{box-shadow:var(--shadow-card)}
.pkg-card:hover,.related-card:hover,.info-card:hover{box-shadow:var(--shadow-card)}
.pkg-img{border-radius:var(--radius-card) var(--radius-card) 0 0}
.content-img,.hp-accom-img{border-radius:var(--radius-card);border-color:var(--border)}
.table-wrap th{background:var(--accent-soft);color:var(--accent-text)}
.table-wrap th,.table-wrap td{border-color:var(--border)}
.faq-block details:hover,.faq-block details[open]{border-color:var(--accent)}
.cta-band{background:var(--surface);border:1px solid var(--border)}
.content-block{border-color:var(--border)}
.pkg-price{color:var(--accent)}

/* ══════════════ FOOTER ══════════════ */
footer{border-top:1px solid var(--border)}
.footer-desc,.footer-col ul a,.footer-copy,.footer-social a,.footer-privacy-choices,.mm-contact a{color:var(--text-muted)}
.footer-col ul a{font-size:15px}
.footer-col ul a:hover,.footer-privacy-choices:hover{color:var(--accent-text)}
.footer-social a{border-color:var(--border)}
.footer-brand-logo img{border-color:var(--vilu-amber)}
.footer-bottom{border-color:var(--border)}

/* ══════════════ CONSENT (presentation only — ids/behaviour unchanged) ══════════════ */
.consent-bar{background:var(--surface);border-top:1px solid var(--border);box-shadow:var(--shadow-card)}
.consent-panel-overlay{background:var(--overlay)}
.consent-panel{border-radius:var(--radius-sheet)}
.consent-panel-header,.consent-row{border-color:var(--border)}
.consent-btn{border-radius:var(--radius-btn)}
.consent-btn-reject{border-color:var(--border-strong);color:var(--text)}
.consent-btn-reject:hover{border-color:var(--text)}
.consent-btn-customize{border-color:var(--border-strong);color:var(--accent-text)}
.consent-btn-customize:hover{border-color:var(--accent)}
.consent-locked{color:var(--accent-text)}
.consent-toggle{background:var(--toggle-track);border-color:var(--border-strong)}
.consent-toggle-knob{background:var(--toggle-knob)}
.consent-toggle[aria-checked="true"]{background:var(--accent);border-color:var(--accent)}
.consent-toggle[aria-checked="true"] .consent-toggle-knob{background:var(--toggle-knob-on)}

/* ══════════════ THEME SWITCH (rendered by theme.js) ══════════════ */
.theme-switch{appearance:none;-webkit-appearance:none;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;padding:0;margin:0;border:1px solid var(--border-strong);border-radius:999px;background:transparent;color:inherit;cursor:pointer;flex-shrink:0;transition:border-color .25s,background-color .25s,color .25s}
.theme-switch:hover{border-color:var(--accent);color:var(--accent)}
.theme-switch:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.theme-switch svg{width:18px;height:18px;display:block;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.theme-switch .ts-sun{display:none}
:root[data-theme="light"] .theme-switch .ts-sun{display:block}
:root[data-theme="light"] .theme-switch .ts-moon{display:none}
nav:not(.scrolled) .theme-switch{color:var(--on-media);border-color:rgba(243,247,251,.45)}
nav.scrolled .theme-switch{color:var(--text);border-color:var(--border-strong)}
.nav-right>.theme-switch{margin-inline-end:0}
.mm-lang{display:flex;flex-direction:column;gap:12px}
.mm-lang .theme-switch{width:100%;height:48px;border-radius:var(--radius-btn);gap:10px;font-family:var(--font-body);font-size:var(--fs-small);letter-spacing:.06em;text-transform:uppercase}
.nav-mobile-right .theme-switch{width:44px;height:44px;min-width:44px}
.mm-lang .theme-switch .ts-text{display:inline}
.theme-switch .ts-text{display:none}
@media (max-width:1180px){.nav-right>.theme-switch{display:none}}

@media (prefers-reduced-motion:reduce){
  body,.theme-switch{transition:none}
}

/* ══════════════════════════════════════════════════════════════
   GLOBAL CINEMATIC SHELLS — Phase 12B-D
   Header (over-media + scrolled states), disclosure panels, language pill,
   mobile drawer, footer, consent banner + Privacy Choices dialog.
   Presentation only: ids, classes consumed by nav-shell.js / consent.js /
   theme.js / analytics hooks are unchanged.
   ══════════════════════════════════════════════════════════════ */

/* ── Header shell ── */
nav{--nav-ink:var(--on-media);--nav-ink-soft:rgba(243,247,251,.78);--nav-line:rgba(243,247,251,.28);color:var(--nav-ink)}
nav::before{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,16,28,.62) 0%,rgba(6,16,28,.25) 60%,rgba(6,16,28,0) 100%);pointer-events:none;opacity:1;transition:opacity .45s ease}
nav.scrolled::before{opacity:0}
nav.scrolled{--nav-ink:var(--text);--nav-ink-soft:var(--text-muted);--nav-line:var(--border-strong);background:var(--nav-scrolled-bg);backdrop-filter:blur(16px) saturate(125%);-webkit-backdrop-filter:blur(16px) saturate(125%);border-bottom:1px solid var(--border);box-shadow:0 12px 32px rgba(0,0,0,.08)}
.nav-row-top{position:relative;padding:12px var(--gutter);gap:28px;min-height:72px;align-items:center}
.nav-logo{gap:12px}
.nav-logo img{width:42px;height:42px;border:1.5px solid var(--vilu-amber);box-shadow:none}
.nav-logo-name{font-family:var(--font-display);font-size:20px;font-weight:600;letter-spacing:.03em;color:var(--nav-ink)}
.nav-logo-sub{font-size:10px;letter-spacing:.24em;color:var(--accent);margin-top:3px}
nav.scrolled .nav-logo-sub{color:var(--accent-text)}
.nav-links{gap:32px}
.nav-links>li>a,.nav-drop-trigger{font-size:12px;letter-spacing:.16em;color:var(--nav-ink-soft);padding:10px 2px;gap:7px;text-shadow:none}
.nav-links>li>a:hover,.nav-drop-trigger:hover,.nav-links>li>a:focus-visible,.nav-drop-trigger:focus-visible{color:var(--nav-ink);text-shadow:none}
.nav-drop.open .nav-drop-trigger{color:var(--nav-ink)}
.nav-drop-trigger i{font-size:10px;opacity:.7}
.nav-active{color:var(--nav-ink) !important}
.nav-active::after{bottom:-6px;height:1px;background:var(--accent)}
nav.scrolled .nav-links>li>a,nav.scrolled .nav-drop-trigger,nav.scrolled .nav-check-availability{color:var(--nav-ink-soft)}
nav.scrolled .nav-links>li>a:hover,nav.scrolled .nav-drop-trigger:hover,nav.scrolled .nav-check-availability:hover{color:var(--text)}

/* Disclosure panels — compact editorial surfaces, never a mega-menu */
.nav-drop-panel{top:calc(100% + 14px);min-width:280px;padding:10px;border-radius:var(--radius-card);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-card);display:flex;flex-direction:row;gap:6px;transform:translateX(-50%) translateY(-4px)}
.nav-drop.open .nav-drop-panel{transform:translateX(-50%) translateY(0)}
.nav-drop-panel-wide{min-width:560px}
.nav-panel-col{display:flex;flex-direction:column;min-width:0;flex:1}
.nav-panel-eyebrow{display:block;font:500 10px/1 var(--font-body);letter-spacing:.24em;text-transform:uppercase;color:var(--accent-text);padding:8px 12px 10px}
.nav-drop-panel a{font-size:15px;line-height:1.35;color:var(--text-muted);padding:11px 12px;border-radius:var(--radius-field);white-space:nowrap}
.nav-drop-panel a:hover,.nav-drop-panel a:focus-visible{background:var(--accent-soft);color:var(--text);outline-offset:-2px}
[dir="rtl"] .nav-drop-panel a{text-align:right}
[dir="rtl"] .nav-panel-eyebrow{text-align:right}

/* Right cluster: language pill · theme switch · dominant CTA · quiet secondary */
.nav-right{gap:12px}
.lang-switcher{height:40px;padding:0 30px 0 12px;border-radius:999px;background:transparent;border:1px solid var(--nav-line);gap:8px;transition:border-color .25s,background-color .25s}
.lang-switcher:hover{border-color:var(--accent)}
.lang-switcher i{font-size:14px;color:var(--accent)}
nav.scrolled .lang-switcher{background:transparent;border-color:var(--border-strong)}
.lang-switcher select{font-size:12px;font-weight:500;letter-spacing:.06em;color:var(--nav-ink);padding:0}
.lang-switcher::after{right:12px;border-color:var(--accent);width:6px;height:6px}
[dir="rtl"] .lang-switcher{padding:0 12px 0 30px}
[dir="rtl"] .lang-switcher::after{left:12px;right:auto}
.theme-switch{width:40px;height:40px;min-width:40px;border-color:var(--nav-line);color:var(--nav-ink)}
nav:not(.scrolled) .theme-switch{color:var(--nav-ink);border-color:var(--nav-line)}
nav.scrolled .theme-switch{color:var(--nav-ink);border-color:var(--border-strong)}
.btn-plan-holiday{padding:12px 20px;font-size:12px;letter-spacing:.14em;border-radius:var(--radius-btn)}
.nav-check-availability{font-size:11px;letter-spacing:.14em;color:var(--nav-ink-soft)}
.nav-check-availability:hover{color:var(--nav-ink)}
.nav-hamburger span{background:var(--nav-ink);width:22px}
.nav-mobile-right{gap:10px}
.nav-mobile-right .theme-switch{width:44px;height:44px;min-width:44px}
@media (max-width:1180px){
  .nav-row-top{min-height:64px;padding:10px var(--gutter)}
  .nav-logo img{width:38px;height:38px}
  .nav-logo-name{font-size:18px}
}
@media (max-width:420px){
  .nav-logo-sub{display:none}
  .nav-logo-name{font-size:17px}
  .nav-row-top{gap:12px}
}

/* ── Mobile drawer — a Vilu experience, not a utility dropdown ── */
.mobile-menu{display:flex;visibility:hidden;opacity:0;transform:translateY(10px);pointer-events:none;background:radial-gradient(70% 45% at 100% 0%,var(--accent-soft) 0%,transparent 70%),var(--bg);backdrop-filter:none;-webkit-backdrop-filter:none;transition:opacity .32s ease,transform .32s ease,visibility 0s linear .32s;padding-bottom:env(safe-area-inset-bottom)}
.mobile-menu.open{visibility:visible;opacity:1;transform:none;pointer-events:auto;transition:opacity .32s ease,transform .32s ease,visibility 0s}
.mobile-menu{--white:var(--text);color:var(--text)}
.mm-header{padding:calc(12px + env(safe-area-inset-top)) var(--gutter) 12px;border-bottom:1px solid var(--border)}
.mm-header .nav-logo img{width:38px;height:38px}
.mm-header .nav-logo-name{font-size:18px;color:var(--text)}
.mm-header .nav-logo-sub{color:var(--accent-text)}
.mm-close{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-strong);border-radius:999px;color:var(--text);font-size:24px;padding:0}
.mm-body{padding:12px var(--gutter) calc(40px + env(safe-area-inset-bottom));gap:0}
.mm-packages{display:flex;flex-direction:column;gap:6px;margin:12px 0 8px;padding:22px 22px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);color:var(--text);font-family:var(--font-display);font-size:clamp(28px,7.5vw,36px);font-weight:300;line-height:1.05}
.mm-packages-eyebrow{font:500 10px/1 var(--font-body);letter-spacing:.24em;text-transform:uppercase;color:var(--accent-text)}
.mm-packages-title{font-family:var(--font-display)}
.mm-group{border-color:var(--border)}
.mm-group-trigger{font-family:var(--font-display);font-size:clamp(24px,6.5vw,30px);font-weight:300;letter-spacing:0;text-transform:none;color:var(--text);padding:16px 4px;min-height:60px}
.mm-group-trigger i{font-size:14px;color:var(--accent);flex-shrink:0}
.mm-group.open .mm-group-panel{max-height:640px}
.mm-group-panel{display:flex;flex-direction:column;padding-bottom:6px}
.mm-group-panel a{font-size:17px;line-height:1.3;color:var(--text-muted);padding:12px 4px 12px 10px;min-height:44px;display:flex;align-items:center;border-radius:var(--radius-field)}
.mm-group-panel a:hover,.mm-group-panel a:focus-visible{color:var(--text);background:var(--accent-soft)}
.mm-eyebrow{display:block;font:500 10px/1 var(--font-body);letter-spacing:.24em;text-transform:uppercase;color:var(--accent-text);padding:14px 10px 6px}
.mm-ctas{margin-top:24px;gap:10px}
.mm-ctas .btn-plan-holiday{padding:16px;font-size:13px;min-height:52px;display:flex;align-items:center;justify-content:center}
.mm-ctas .mm-check-availability{min-height:52px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-strong);color:var(--text);font-size:13px;letter-spacing:.12em}
.mm-lang{margin-top:16px;gap:10px}
.mm-lang .lang-switcher{height:48px;border-radius:var(--radius-btn);border:1px solid var(--border-strong);justify-content:center;padding:0 30px 0 14px}
.mm-lang .lang-switcher select{color:var(--text);font-size:14px}
.mm-lang .theme-switch{height:48px;border-color:var(--border-strong);color:var(--text)}
.mm-contact{margin-top:20px;padding-top:18px;border-top:1px solid var(--border);font-size:15px;gap:10px}
.mm-contact a{color:var(--text-muted);min-height:32px;display:inline-flex;align-items:center}
.mm-contact-social{gap:10px;margin-top:6px}
.mm-contact-social a{width:44px;height:44px;border-color:var(--border-strong);color:var(--text-muted);font-size:18px}
[dir="rtl"] .mm-group-panel a{padding:12px 10px 12px 4px}
[dir="rtl"] .mm-eyebrow{text-align:right}
[dir="rtl"] .mm-lang .lang-switcher{padding:0 14px 0 30px}

/* ── Footer — a premium closing destination ── */
footer{padding:calc(var(--space-7) - 8px) 0 var(--space-4);background:var(--bg-secondary);border-top:1px solid var(--border)}
.footer-inner{max-width:var(--container-editorial);padding:0 var(--gutter)}
.footer-hero{display:grid;grid-template-columns:1.15fr 1fr;gap:48px;align-items:end;padding-bottom:48px;margin-bottom:48px;border-bottom:1px solid var(--border)}
.footer-hero-brand{display:flex;flex-direction:column;gap:22px}
.footer-brand-logo{margin-bottom:0}
.footer-brand-logo img{width:46px;height:46px;border:1.5px solid var(--vilu-amber)}
.footer-brand-name{font-size:22px;color:var(--text)}
.footer-brand-sub{font-size:10px;letter-spacing:.24em;color:var(--accent-text)}
.footer-brandline{font-family:var(--font-display);font-weight:300;font-size:clamp(40px,5.2vw,68px);line-height:.98;letter-spacing:-.01em;color:var(--text);max-width:none;text-wrap:balance}
.footer-brandline em{font-style:italic;color:var(--accent)}
.footer-hero-text{display:flex;flex-direction:column;gap:22px}
.footer-desc{font-size:16px;line-height:1.65;color:var(--text-muted);margin:0;max-width:48ch}
.footer-ctas{display:flex;flex-wrap:wrap;align-items:center;gap:18px}
.footer-ctas .btn-plan-holiday{padding:14px 22px}
.footer-availability{font:500 11px/1 var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);text-decoration:none;border-bottom:1px solid var(--border-strong);padding-bottom:6px}
.footer-availability:hover{color:var(--accent-text);border-color:var(--accent)}
.footer-top{grid-template-columns:repeat(4,minmax(0,1fr));gap:32px;margin-bottom:0}
.footer-col h4{font-size:11px;letter-spacing:.24em;color:var(--accent-text);margin-bottom:14px}
.footer-col ul{gap:9px}
.footer-col ul a{font-size:15px;line-height:1.4;color:var(--text-muted)}
.footer-col ul a:hover{color:var(--text)}
.footer-contact{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 32px;margin-top:48px;padding:26px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.footer-contact-links{display:flex;flex-wrap:wrap;align-items:center;gap:10px 28px;font-size:15px}
.footer-contact-links a{color:var(--text);text-decoration:none;min-height:32px;display:inline-flex;align-items:center;border-bottom:1px solid transparent}
.footer-contact-links a:hover{border-color:var(--accent);color:var(--accent-text)}
.footer-address{color:var(--text-muted)}
.footer-social{margin-top:0;gap:10px}
.footer-social a{width:40px;height:40px;border-color:var(--border-strong);color:var(--text-muted);font-size:17px}
.footer-bottom{border-top:none;padding-top:22px;font-size:13px;gap:10px 24px}
.footer-copy{font-size:13px;color:var(--text-muted)}
.footer-privacy-choices{font-size:13px;color:var(--text-muted)}
@media (max-width:1024px){
  .footer-hero{grid-template-columns:1fr;gap:28px;align-items:start}
  .footer-top{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
}
@media (max-width:480px){
  .footer-top{grid-template-columns:1fr}
  .footer-contact{flex-direction:column;align-items:flex-start}
  .footer-bottom{flex-direction:column;align-items:flex-start}
}
[dir="rtl"] .footer-contact,[dir="rtl"] .footer-bottom,[dir="rtl"] .footer-ctas{flex-direction:row-reverse}
[dir="rtl"] .footer-contact-links{flex-direction:row-reverse}

/* ── Consent banner — compact Vilu card, equal-weight choices ── */
.consent-bar{left:auto;right:24px;bottom:24px;max-width:460px;width:calc(100% - 48px);padding:22px 24px 20px;border:1px solid var(--border);border-radius:var(--radius-sheet);background:var(--surface);box-shadow:var(--shadow-card);backdrop-filter:none;-webkit-backdrop-filter:none}
[dir="rtl"] .consent-bar{right:auto;left:24px}
.consent-bar-inner{flex-direction:column;align-items:stretch;gap:16px}
.consent-bar-text strong{font-family:var(--font-display);font-size:24px;font-weight:400;color:var(--text);margin-bottom:6px}
.consent-bar-text p{font-size:14px;line-height:1.6;color:var(--text-muted);max-width:none}
.consent-bar-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%}
.consent-btn{font-size:13px;letter-spacing:.04em;padding:0 14px;min-height:46px;border-radius:var(--radius-btn);display:inline-flex;align-items:center;justify-content:center;text-align:center}
.consent-btn-reject{grid-column:1;grid-row:1;border:1px solid var(--border-strong);color:var(--text);background:transparent}
.consent-btn-accept{grid-column:2;grid-row:1}
.consent-btn-customize{grid-column:1 / -1;grid-row:2;border:none;background:transparent;color:var(--accent-text);text-decoration:underline;text-underline-offset:4px;min-height:40px}
.consent-btn-customize:hover{border:none;color:var(--text)}
@media (max-width:700px){
  /* Phase 12F: measured at 34-43% of the viewport height on real phone
     sizes (320-430px) before this fix, obscuring page content beneath it.
     Disclosure copy is untouched -- no text shortened or hidden -- only
     spacing/type-scale tightened; button min-height stays at 44px (WCAG
     2.5.5 touch-target minimum), and Reject/Accept keep identical size
     and grid position -- no new bias toward either choice. */
  .consent-bar{left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));width:auto;max-width:none;padding:16px 16px 14px}
  [dir="rtl"] .consent-bar{left:12px;right:12px}
  .consent-bar-inner{gap:10px}
  .consent-bar-text strong{font-size:18px;margin-bottom:3px}
  .consent-bar-text p{font-size:13px;line-height:1.45}
  .consent-bar-actions{grid-template-columns:1fr 1fr;gap:8px}
  .consent-btn{min-height:44px;font-size:12px;padding:0 10px}
  .consent-btn-customize{min-height:32px}
}
@media (max-width:360px){
  .consent-bar-actions{grid-template-columns:1fr}
  .consent-btn-reject{grid-column:1;grid-row:1}
  .consent-btn-accept{grid-column:1;grid-row:2}
  .consent-btn-customize{grid-column:1;grid-row:3}
}

/* ── Privacy Choices dialog — editorial sheet ── */
.consent-panel-overlay{padding:24px}
.consent-panel{max-width:540px;border-radius:var(--radius-sheet);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-card)}
.consent-panel-header{padding:26px 28px 18px;border-color:var(--border)}
.consent-panel-header h2{font-family:var(--font-display);font-size:28px;font-weight:400;color:var(--text)}
.consent-panel-close{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-strong);border-radius:999px;color:var(--text);font-size:22px;padding:0}
.consent-panel-body{padding:6px 28px}
.consent-row{padding:18px 0;border-color:var(--border)}
.consent-row-header{margin-bottom:8px}
.consent-row-header>span:first-child{font-size:17px;font-weight:500;color:var(--text)}
.consent-row p{font-size:14px;line-height:1.6;color:var(--text-muted)}
.consent-locked{font-size:11px;letter-spacing:.14em;color:var(--accent-text);opacity:1}
.consent-toggle{width:52px;height:30px;background:var(--toggle-track);border:1px solid var(--border-strong)}
.consent-toggle-knob{top:3px;left:3px;width:22px;height:22px;background:var(--toggle-knob)}
.consent-toggle[aria-checked="true"]{background:var(--accent);border-color:var(--accent)}
.consent-toggle[aria-checked="true"] .consent-toggle-knob{transform:translateX(22px);background:var(--toggle-knob-on)}
[dir="rtl"] .consent-toggle-knob{left:auto;right:3px}
[dir="rtl"] .consent-toggle[aria-checked="true"] .consent-toggle-knob{transform:translateX(-22px)}
.consent-panel-footer{padding:18px 28px 28px}
.consent-panel-footer .consent-btn{min-height:50px;font-size:14px}
@media (max-width:700px){
  .consent-panel-overlay{padding:0;align-items:flex-end}
  .consent-panel{max-width:none;max-height:88vh;border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;border-bottom:none;padding-bottom:env(safe-area-inset-bottom)}
  .consent-panel-header{padding:22px 20px 14px}
  .consent-panel-body{padding:4px 20px}
  .consent-panel-footer{padding:16px 20px 24px}
}

/* Visible focus for every shell control, in both themes and over media */
.nav-logo:focus-visible,.nav-links>li>a:focus-visible,.nav-drop-trigger:focus-visible,.nav-drop-panel a:focus-visible,.lang-switcher select:focus-visible,.btn-plan-holiday:focus-visible,.nav-check-availability:focus-visible,.nav-hamburger:focus-visible,.theme-switch:focus-visible,
.mm-close:focus-visible,.mm-group-trigger:focus-visible,.mm-group-panel a:focus-visible,.mm-packages:focus-visible,.mm-check-availability:focus-visible,.mm-contact a:focus-visible,.mm-contact-social a:focus-visible,
footer a:focus-visible,.footer-privacy-choices:focus-visible,.consent-btn:focus-visible,.consent-panel-close:focus-visible,.consent-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.btn-plan-holiday:focus-visible,.consent-btn-accept:focus-visible{outline-color:var(--text)}

@media (prefers-reduced-motion:reduce){
  nav,nav::before,.mobile-menu,.mobile-menu.open,.nav-drop-panel,.lang-switcher{transition:none}
  .mobile-menu{transform:none}
}
