/* ==========================================================================
   Voyara – Travel Agency & Hotel HTML Template
   Table of contents (SCSS partials in assets/scss/ follow the same numbers)
   01 Fonts                         13 Journal (blog) cards
   02 Theme tokens & skins          14 Travel experts
   03 Base & typography             15 Packages, plans & deals
   04 Buttons & forms               16 CTA bands & app band
   05 Top bar & header              17 FAQ, tabs, itinerary, timeline
   06 Mega menus & mobile menu      18 Inner pages: page hero, sidebar, filters, toolbar
   07 Hero & trip search            19 Shop, cart, checkout, account
   08 Decorations                   20 Footer
   09 Tour cards                    21 Overlays: search, mini cart, popup, switcher, cookies
   10 Destination cards             22 Utilities, rails, chips, motion
   11 Hotels & rooms                23 Dark mode details
   12 Features, stats, reviews      24 Print
   25 Shared page overrides
   Page styles live in assets/css/pages/ (account, company, homes-2-9, homes-10-17,
   homes-18-24, hotel, journal, tours) and load only on the pages that use them.
   ========================================================================== */

/* 01 Fonts ---------------------------------------------------------------- */
/* Fraunces (display, variable weight + optical size), Manrope (text, variable weight), Caveat (handwritten notes).
   All three: SIL Open Font License 1.1, see assets/fonts/LICENSE-*.txt */
@font-face{
    font-family:"Fraunces";
    src:url("../fonts/Fraunces.woff2") format("woff2");
    font-weight:100 900;
    font-style:normal;
    font-display:swap
}
@font-face{
    font-family:"Fraunces";
    src:url("../fonts/Fraunces-Italic.woff2") format("woff2");
    font-weight:100 900;
    font-style:italic;
    font-display:swap
}
@font-face{
    font-family:"Manrope";
    src:url("../fonts/Manrope.woff2") format("woff2");
    font-weight:200 800;
    font-style:normal;
    font-display:swap
}
@font-face{
    font-family:"Caveat";
    src:url("../fonts/Caveat.woff2") format("woff2");
    font-weight:400 700;
    font-style:normal;
    font-display:swap
}
/* Fallbacks sized close to the web fonts, so text keeps its line breaks while the fonts load (less layout shift) */
@font-face{
    font-family:"Manrope Fallback";
    src:local("Arial"),local("ArialMT"),local("Helvetica"),local("Liberation Sans");
    size-adjust:103%;
    ascent-override:103%;
    descent-override:29%;
    line-gap-override:0%
}
@font-face{
    font-family:"Fraunces Fallback";
    src:local("Georgia"),local("Times New Roman"),local("Liberation Serif");
    size-adjust:104%;
    ascent-override:94%;
    descent-override:24%;
    line-gap-override:0%
}

/* 02 Theme tokens ---------------------------------------------------------
   Skins only set the four *-base colours; everything else is mixed from them,
   so a custom colour (style switcher or your own) recolours the whole site.
   Add your own skin:  [data-skin="name"]{--brand-base:#..;--brand-2-base:#..;--deep-base:#..;--accent-base:#..}
   ------------------------------------------------------------------------- */
:root{
    --brand-base:#c4512f;     /* main colour: buttons, links, icons (terracotta) */
    --brand-2-base:#f2b544;   /* warm partner colour: highlights, stars, accents on dark (saffron) */
    --deep-base:#173a35;      /* dark sections, footer, headings (pine) */
    --accent-base:#2e9c8f;    /* second accent: chips, map pins, "available" (lagoon) */
    --on-brand:#fff;          /* text on brand buttons */

    --brand:var(--brand-base);
    --brand-2:var(--brand-2-base);
    --deep:var(--deep-base);
    --accent:var(--accent-base);
    --brand-600:color-mix(in srgb,var(--brand) 82%,#000);
    --brand-text:color-mix(in srgb,var(--brand) 84%,#000);      /* brand colour for text on light tints (WCAG AA) */
    --brand-2-text:color-mix(in srgb,var(--brand-2) 48%,#000);  /* saffron as text on light backgrounds */
    --accent-text:color-mix(in srgb,var(--accent) 66%,#000);
    --brand-soft:color-mix(in srgb,var(--brand) 10%,#fff);
    --brand-2-soft:color-mix(in srgb,var(--brand-2) 22%,#fff);
    --accent-soft:color-mix(in srgb,var(--accent) 13%,#fff);
    --ink:var(--deep);
    --text:color-mix(in srgb,var(--deep) 80%,#fff);
    --muted:color-mix(in srgb,var(--deep) 76%,#fff);
    --bg:color-mix(in srgb,var(--brand-2) 6%,#fdfaf6);
    --surface:#fff;
    --sand:color-mix(in srgb,var(--brand-2) 17%,#fbf4ea);     /* warm tinted sections */
    --blush:color-mix(in srgb,var(--brand) 7%,#fdf6f1);       /* rose tinted sections */
    --tint:color-mix(in srgb,var(--deep) 4%,#f6f2ec);
    --line:color-mix(in srgb,var(--deep) 12%,#fff);
    --shadow-sm:0 2px 10px color-mix(in srgb,var(--deep) 8%,transparent);
    --shadow:0 22px 44px -22px color-mix(in srgb,var(--deep) 32%,transparent);
    --shadow-lg:0 40px 80px -30px color-mix(in srgb,var(--deep) 40%,transparent);
    --radius:22px;
    --radius-sm:14px;
    --radius-xs:10px;
    --font:"Manrope","Manrope Fallback",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
    --font-display:"Fraunces","Fraunces Fallback",Georgia,serif;
    --font-hand:"Caveat","Comic Sans MS",cursive;
    --header-h:78px;
    --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
[data-radius="soft"]{
    --radius:12px;
    --radius-sm:9px;
    --radius-xs:7px
}
[data-radius="sharp"]{
    --radius:3px;
    --radius-sm:2px;
    --radius-xs:2px
}
[data-bs-theme="dark"]{
    --on-brand:#1a0d08;
    --brand:color-mix(in srgb,var(--brand-base) 70%,#fff);
    --brand-600:color-mix(in srgb,var(--brand) 84%,#fff);
    --brand-text:color-mix(in srgb,var(--brand-base) 55%,#fff);
    --brand-2-text:var(--brand-2);
    --accent-text:color-mix(in srgb,var(--accent) 65%,#fff);
    --brand-soft:color-mix(in srgb,var(--brand-base) 22%,transparent);
    --brand-2-soft:color-mix(in srgb,var(--brand-2) 16%,transparent);
    --accent-soft:color-mix(in srgb,var(--accent) 18%,transparent);
    --deep:color-mix(in srgb,var(--deep-base) 62%,#000);
    --ink:#f4ede4;
    --text:#cdc4b8;
    --muted:#a59d92;
    --bg:color-mix(in srgb,var(--deep-base) 32%,#0d0f0e);
    --surface:color-mix(in srgb,var(--deep-base) 40%,#161918);
    --sand:color-mix(in srgb,var(--deep-base) 36%,#131514);
    --blush:color-mix(in srgb,var(--brand-base) 9%,#141413);
    --tint:color-mix(in srgb,var(--deep-base) 46%,#121413);
    --line:color-mix(in srgb,var(--deep-base) 40%,#3a3d3b);
    --shadow-sm:0 2px 10px rgba(0,0,0,.35);
    --shadow:0 22px 44px -22px rgba(0,0,0,.7);
    --shadow-lg:0 40px 80px -30px rgba(0,0,0,.8);
    --bs-body-bg:var(--bg);
    --bs-body-color:var(--text);
    --bs-border-color:var(--line);
}
/* Colour skins (style switcher). Default = terracotta. */
[data-skin="lagoon"]  {
    --brand-base:#0e7c78;
    --brand-2-base:#f4c36a;
    --deep-base:#10302f;
    --accent-base:#e0704b
}
[data-skin="olive"]   {
    --brand-base:#5e7426;
    --brand-2-base:#e9c46a;
    --deep-base:#262b18;
    --accent-base:#c2603a
}
[data-skin="plum"]    {
    --brand-base:#7a3b69;
    --brand-2-base:#f0b36b;
    --deep-base:#2a1726;
    --accent-base:#2f9c8c
}
[data-skin="navy"]    {
    --brand-base:#1e3a66;
    --brand-2-base:#f2a541;
    --deep-base:#111b2e;
    --accent-base:#d9614c
}
[data-skin="ochre"]   {
    --brand-base:#a8661b;
    --brand-2-base:#f3cf7a;
    --deep-base:#2c2114;
    --accent-base:#3a8b7e
}
[data-skin="forest"]  {
    --brand-base:#2e6a4e;
    --brand-2-base:#e8b94e;
    --deep-base:#14261d;
    --accent-base:#c75b39
}
[data-skin="rose"]    {
    --brand-base:#be4466;
    --brand-2-base:#f5bf7a;
    --deep-base:#2d1820;
    --accent-base:#3a8f86
}
[data-skin="berry"]   {
    --brand-base:#9c2e7e;
    --brand-2-base:#f6b26b;
    --deep-base:#2a1225;
    --accent-base:#2c8d84
}
[data-skin="slate"]   {
    --brand-base:#3f5468;
    --brand-2-base:#e7b45a;
    --deep-base:#18212b;
    --accent-base:#c8603f
}
[data-skin="mahogany"]{
    --brand-base:#8b3a2b;
    --brand-2-base:#eab676;
    --deep-base:#24160f;
    --accent-base:#3d8a7a
}
[data-skin="aqua"]    {
    --brand-base:#0b7a8f;
    --brand-2-base:#f6bd60;
    --deep-base:#0f2a33;
    --accent-base:#e76f51
}
[data-bs-theme="dark"][data-skin="navy"],[data-bs-theme="dark"][data-skin="slate"]{
    --brand:color-mix(in srgb,var(--brand-base) 50%,#fff)
}

/* 03 Base & typography ---------------------------------------------------- */
html{
    scroll-behavior:smooth;
    scroll-padding-top:calc(var(--header-h) + 16px)
}
body{
    font-family:var(--font);
    background:var(--bg);
    color:var(--text);
    font-size:1rem;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    --bs-heading-color:var(--ink)
}
h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{
    font-family:var(--font-display);
    color:var(--ink);
    font-weight:600;
    letter-spacing:-.015em;
    line-height:1.12;
    font-variation-settings:"opsz" 72
}
h1 em,h2 em,h3 em,.display em{
    font-style:italic;
    font-weight:400;
    color:var(--brand-text)
}
a{
    color:var(--brand-text);
    text-decoration:none;
    transition:color .2s
}
:is(p,label,small,.small,.text-muted-2,.info-box,.accordion-body,.content-body,td) a:not([class]){
    text-decoration:underline;
    text-decoration-thickness:1px;
    text-underline-offset:.18em
}
:is(p,label,small,.small,.accordion-body,.content-body,td) a:not([class]):hover{
    text-decoration-thickness:2px
}
code{
    color:var(--brand-text)
}
a:hover{
    color:var(--brand-600)
}
img{
    max-width:100%;
    height:auto
}
img.is-broken{
    visibility:hidden
}
::selection{
    background:color-mix(in srgb,var(--brand-2) 45%,transparent);
    color:var(--ink)
}
:focus-visible{
    outline:3px solid color-mix(in srgb,var(--brand) 55%,transparent);
    outline-offset:2px
}
.skip-link{
    position:absolute;
    top:8px;
    left:8px;
    z-index:2000
}
.display{
    font-family:var(--font-display);
    font-size:clamp(2.6rem,1.4rem + 4.6vw,5.4rem);
    font-weight:500;
    line-height:1.02;
    letter-spacing:-.03em;
    font-variation-settings:"opsz" 144
}
.section{
    padding:clamp(4.5rem,9vw,7.5rem) 0;
    position:relative
}
.section-sm{
    padding:clamp(3rem,6vw,4.5rem) 0
}
.section-sand{
    background:var(--sand)
}
.section-blush{
    background:var(--blush)
}
.section-tint{
    background:var(--tint)
}
.section-deep{
    background:var(--deep);
    color:color-mix(in srgb,#fff 72%,var(--deep))
}
.section-deep h1,.section-deep h2,.section-deep h3,.section-deep h4{
    color:#fff
}
.section-deep h1 em,.section-deep h2 em,.section-deep h3 em{
    color:var(--brand-2)
}
.section-deep .section-lead,.section-deep .text-muted-2{
    color:color-mix(in srgb,#fff 65%,var(--deep))
}
.section-head{
    margin-bottom:clamp(2.25rem,4vw,3.5rem)
}
.section-head-center{
    max-width:760px;
    margin:0 auto clamp(2.25rem,4vw,3.5rem);
    text-align:center
}
.section-head-center .section-lead{
    margin-inline:auto
}
.section-head-split{
    display:flex;
    flex-wrap:wrap;
    align-items:flex-end;
    justify-content:space-between;
    gap:1rem 2rem;
    margin-bottom:clamp(2rem,4vw,3rem)
}
.section-head-split .section-title{
    margin-bottom:0
}
.section-title{
    font-size:clamp(2.1rem,1.3rem + 2.6vw,3.4rem);
    margin:.7rem 0 1rem;
    font-weight:500;
    letter-spacing:-.025em
}
.section-lead{
    font-size:1.08rem;
    max-width:560px;
    color:var(--muted)
}
.eyebrow{
    display:inline-flex;
    align-items:center;
    gap:.6rem;
    font-size:.78rem;
    font-weight:700;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--brand-text)
}
.eyebrow::before{
    content:"";
    width:28px;
    height:2px;
    border-radius:2px;
    background:currentColor;
    opacity:.7
}
.eyebrow-center::after{
    content:"";
    width:28px;
    height:2px;
    border-radius:2px;
    background:currentColor;
    opacity:.7
}
.eyebrow-light{
    color:var(--brand-2)
}
.eyebrow-sm{
    font-size:.74rem;
    font-weight:700;
    letter-spacing:.12em;
    text-transform:uppercase;
    color:var(--brand-text);
    margin:0 0 .3rem
}
.hand{
    font-family:var(--font-hand);
    font-weight:600;
    font-size:1.6rem;
    line-height:1;
    color:var(--brand-text);
    letter-spacing:0
}
.text-muted-2{
    color:var(--muted)
}
.lead-lg{
    font-size:clamp(1.1rem,1rem + .4vw,1.3rem);
    line-height:1.6
}
.link-arrow{
    display:inline-flex;
    align-items:center;
    gap:.4rem;
    font-weight:700;
    font-size:.94rem
}
.link-arrow i{
    transition:transform .25s
}
.link-arrow:hover i{
    transform:translateX(4px)
}
.check-list li{
    display:flex;
    gap:.65rem;
    padding:.35rem 0;
    color:var(--ink);
    font-weight:500
}
.check-list i{
    color:var(--accent-text);
    font-size:1.15rem;
    line-height:1.5
}
.x-list li{
    display:flex;
    gap:.65rem;
    padding:.35rem 0;
    color:var(--muted)
}
.x-list i{
    color:var(--muted);
    font-size:1.15rem;
    line-height:1.5
}
hr.dashed{
    border:0;
    border-top:2px dashed var(--line);
    opacity:1
}

/* 04 Buttons & forms -------------------------------------------------------- */
.btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:.55rem;
    font-weight:700;
    border-radius:99px;
    padding:.68rem 1.35rem;
    font-size:.95rem;
    transition:transform .2s,box-shadow .2s,background-color .2s,color .2s,border-color .2s
}
[data-radius="sharp"] .btn{
    border-radius:var(--radius-xs)
}
.btn-lg{
    padding:.95rem 1.75rem;
    font-size:1.02rem
}
.btn-sm{
    padding:.45rem .95rem;
    font-size:.85rem
}
.btn-brand{
    background:var(--brand);
    color:var(--on-brand);
    border:0;
    box-shadow:0 12px 26px -12px color-mix(in srgb,var(--brand) 80%,transparent)
}
.btn-brand:hover,.btn-brand:focus-visible,.btn-brand:active{
    background:var(--brand-600);
    color:var(--on-brand);
    transform:translateY(-2px)
}
.btn-sun{
    background:var(--brand-2);
    color:#1d1408;
    border:0
}
.btn-sun:hover,.btn-sun:focus-visible{
    background:color-mix(in srgb,var(--brand-2) 85%,#000);
    color:#1d1408;
    transform:translateY(-2px)
}
.btn-ink{
    background:var(--deep);
    color:#fff;
    border:0
}
.btn-ink:hover,.btn-ink:focus-visible{
    background:color-mix(in srgb,var(--deep) 80%,#000);
    color:#fff;
    transform:translateY(-2px)
}
[data-bs-theme="dark"] .btn-ink{
    background:var(--ink);
    color:var(--deep)
}
.btn-outline-ink{
    border:1.5px solid var(--line);
    color:var(--ink);
    background:var(--surface)
}
.btn-outline-ink:hover,.btn-outline-ink:focus-visible{
    border-color:var(--ink);
    color:var(--ink);
    background:var(--surface);
    transform:translateY(-2px)
}
.btn-soft{
    background:var(--brand-soft);
    color:var(--brand-text);
    border:0
}
.btn-soft:hover{
    background:var(--brand);
    color:var(--on-brand)
}
.btn-light{
    background:#fff;
    color:#1b1b1b;
    border:0
}
.btn-light:hover{
    background:var(--brand-2);
    color:#1d1408;
    transform:translateY(-2px)
}
.btn-outline-light{
    border:1.5px solid rgba(255,255,255,.5);
    color:#fff;
    background:transparent
}
.btn-outline-light:hover{
    background:#fff;
    color:#1b1b1b;
    border-color:#fff
}
.btn-glass{
    background:rgba(255,255,255,.14);
    color:#fff;
    border:1px solid rgba(255,255,255,.3);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px)
}
.btn-glass:hover{
    background:#fff;
    color:#1b1b1b
}
.btn-link{
    color:var(--ink);
    text-decoration:none;
    padding-inline:0;
    font-weight:700
}
.btn-link:hover{
    color:var(--brand-text)
}
.btn-play{
    width:62px;
    height:62px;
    padding:0;
    border-radius:50%;
    background:#fff;
    color:var(--brand-text);
    font-size:1.6rem;
    box-shadow:0 0 0 10px rgba(255,255,255,.2)
}
.btn-play:hover{
    transform:scale(1.06);
    color:var(--brand-text)
}
.icon-btn{
    width:44px;
    height:44px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:none;
    border-radius:50%;
    border:1.5px solid var(--line);
    background:var(--surface);
    color:var(--ink);
    font-size:1.12rem;
    position:relative;
    transition:border-color .2s,background .2s,color .2s
}
.icon-btn:hover{
    border-color:var(--brand);
    color:var(--brand-text)
}
.form-control,.form-select{
    border-color:var(--line);
    border-radius:var(--radius-sm);
    background-color:var(--surface);
    color:var(--ink);
    padding:.7rem 1rem
}
.form-control::placeholder{
    color:color-mix(in srgb,var(--muted) 85%,var(--surface))
}
.form-control:focus,.form-select:focus{
    border-color:var(--brand);
    box-shadow:0 0 0 .22rem color-mix(in srgb,var(--brand) 18%,transparent);
    background-color:var(--surface);
    color:var(--ink)
}
.form-label{
    font-weight:700;
    color:var(--ink);
    font-size:.88rem
}
.form-check-input{
    border-color:color-mix(in srgb,var(--deep) 30%,#fff)
}
.form-check-input:checked{
    background-color:var(--brand);
    border-color:var(--brand)
}
.form-check-input:focus{
    box-shadow:0 0 0 .22rem color-mix(in srgb,var(--brand) 18%,transparent);
    border-color:var(--brand)
}
.form-range::-webkit-slider-thumb{
    background:var(--brand)
}
.form-range::-moz-range-thumb{
    background:var(--brand)
}
.form-range::-webkit-slider-runnable-track{
    background:var(--line)
}
.input-icon{
    position:relative
}
.input-icon>i{
    position:absolute;
    left:1rem;
    top:50%;
    transform:translateY(-50%);
    color:var(--muted);
    pointer-events:none
}
.input-icon>.form-control,.input-icon>.form-select{
    padding-left:2.6rem
}
.was-validated .form-control:invalid,.form-control.is-invalid,.form-select.is-invalid{
    border-color:#c0392b
}
.form-error{
    color:#b42318;
    font-size:.88rem;
    font-weight:600;
    min-height:1.2em;
    margin:.5rem 0 0
}
[data-bs-theme="dark"] .form-error{
    color:#ff9d8f
}
.qty{
    display:inline-flex;
    align-items:center;
    border:1.5px solid var(--line);
    border-radius:99px;
    background:var(--surface);
    overflow:hidden
}
.qty button{
    width:40px;
    height:44px;
    border:0;
    background:transparent;
    color:var(--ink);
    font-size:1.05rem
}
.qty button:hover{
    color:var(--brand-text)
}
.qty input{
    width:44px;
    border:0;
    text-align:center;
    font-weight:700;
    background:transparent;
    color:var(--ink);
    -moz-appearance:textfield;
    appearance:textfield
}
.qty input::-webkit-outer-spin-button,.qty input::-webkit-inner-spin-button{
    -webkit-appearance:none;
    margin:0
}
.qty-sm button{
    width:32px;
    height:36px
}
.qty-sm input{
    width:34px
}

/* 05 Top bar & header ------------------------------------------------------ */
.topbar{
    background:var(--deep);
    color:color-mix(in srgb,#fff 70%,var(--deep));
    font-size:.84rem;
    padding:.5rem 0;
    position:relative;
    z-index:1031
}
.topbar-list li{
    display:flex;
    align-items:center;
    gap:.45rem
}
.topbar-list i{
    color:var(--brand-2)
}
.topbar a{
    color:#fff
}
.topbar a:hover{
    color:var(--brand-2)
}
.topbar-note span{
    opacity:.85
}
.topbar-note a{
    text-decoration:underline;
    text-underline-offset:3px
}
.topbar .dropdown-toggle{
    display:inline-flex;
    align-items:center;
    gap:.4rem;
    border:0;
    background:none;
    color:#fff;
    font-size:.84rem;
    font-weight:600;
    padding:0
}
.topbar .dropdown-menu{
    font-size:.88rem;
    min-width:200px;
    padding:.4rem;
    border-radius:var(--radius-sm);
    box-shadow:var(--shadow)
}
.topbar .dropdown-item{
    display:flex;
    gap:.75rem;
    border-radius:8px;
    padding:.45rem .7rem
}
.topbar .dropdown-item b{
    width:2.2rem;
    color:var(--brand-text)
}
.topbar-social a{
    width:28px;
    height:28px;
    display:grid;
    place-items:center;
    border-radius:50%
}
.topbar-social a:hover{
    background:rgba(255,255,255,.1)
}

.site-header{
    position:sticky;
    top:0;
    z-index:1030;
    background:color-mix(in srgb,var(--bg) 86%,transparent);
    backdrop-filter:saturate(1.4) blur(14px);
    -webkit-backdrop-filter:saturate(1.4) blur(14px);
    border-bottom:1px solid transparent;
    transition:background .3s,border-color .3s,box-shadow .3s
}
.site-header>.container{
    min-height:var(--header-h)
}
.site-header.is-scrolled{
    border-bottom-color:var(--line);
    box-shadow:0 10px 30px -24px color-mix(in srgb,var(--deep) 60%,transparent)
}
.brand{
    display:inline-flex;
    align-items:center;
    gap:.6rem;
    color:var(--ink);
    flex:none
}
.brand:hover{
    color:var(--ink)
}
.brand-mark{
    width:40px;
    height:40px;
    flex:none
}
.bm-bg{
    fill:var(--brand)
}
.bm-ring{
    stroke:var(--brand-2);
    stroke-width:1.6;
    stroke-dasharray:2.2 2.6;
    stroke-linecap:round
}
.bm-v{
    stroke:#fff;
    stroke-width:3.4;
    stroke-linecap:round;
    stroke-linejoin:round
}
.bm-dot{
    fill:var(--brand-2)
}
.brand-name{
    font-family:var(--font-display);
    font-size:1.62rem;
    font-weight:600;
    letter-spacing:-.03em;
    line-height:1;
    font-variation-settings:"opsz" 144
}
.brand-light,.brand-light:hover{
    color:#fff
}
.main-nav{
    align-items:center;
    gap:.15rem
}
.main-nav .nav-link{
    position:relative;
    padding:.55rem .85rem;
    border-radius:99px;
    font-weight:700;
    font-size:.95rem;
    color:var(--ink);
    transition:background .2s,color .2s
}
.main-nav .nav-link:hover,.main-nav .nav-link.active,.main-nav .show>.nav-link{
    color:var(--brand-text);
    background:var(--brand-soft)
}
.main-nav .dropdown-toggle::after{
    content:"\F282";
    font-family:bootstrap-icons;
    border:0;
    vertical-align:-.12em;
    margin-left:.3rem;
    font-size:.7rem;
    transition:transform .25s
}
.main-nav .show>.dropdown-toggle::after{
    transform:rotate(180deg)
}
.header-actions .btn{
    white-space:nowrap
}
/* 1200-1399px: the container is 1140px wide, so the full menu and the "Plan my trip" label do not both fit; the button shows its icon only (the label stays for screen readers) */
@media (min-width:1200px) and (max-width:1399.98px){
    .main-nav .nav-link{
        padding:.55rem .62rem
    }
    .main-nav~.header-actions .btn{
        font-size:0;
        gap:0;
        padding:.68rem .9rem
    }
    .main-nav~.header-actions .btn .bi{
        font-size:1.05rem
    }
}
.cart-count{
    position:absolute;
    top:-4px;
    right:-4px;
    min-width:20px;
    height:20px;
    padding:0 5px;
    border-radius:99px;
    background:var(--brand);
    color:var(--on-brand);
    font-size:.7rem;
    font-weight:800;
    display:grid;
    place-items:center;
    border:2px solid var(--bg)
}
.cart-count[hidden]{
    display:none
}
.cart-btn.is-bump{
    animation:bump .5s
}
@keyframes bump{
    30%{
        transform:scale(1.18)
    }
    60%{
        transform:scale(.94)
    }
}
.theme-toggle .bi-sun{
    display:none
}
[data-bs-theme="dark"] .theme-toggle .bi-sun{
    display:inline
}
[data-bs-theme="dark"] .theme-toggle .bi-moon-stars{
    display:none
}
/* Transparent header over a dark hero */
.site-header.is-over:not(.is-scrolled){
    background:transparent;
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
    position:fixed;
    left:0;
    right:0;
    top:auto
}
.has-topbar .site-header.is-over:not(.is-scrolled){
    top:auto
}
.site-header.is-over:not(.is-scrolled) .brand,.site-header.is-over:not(.is-scrolled) .main-nav>.nav-link,.site-header.is-over:not(.is-scrolled) .main-nav>.dropdown>.nav-link{
    color:#fff
}
.site-header.is-over:not(.is-scrolled) .main-nav .nav-link:hover,.site-header.is-over:not(.is-scrolled) .main-nav .nav-link.active,.site-header.is-over:not(.is-scrolled) .main-nav .show>.nav-link{
    background:rgba(255,255,255,.16);
    color:#fff
}
.site-header.is-over:not(.is-scrolled) .icon-btn{
    background:rgba(255,255,255,.1);
    border-color:rgba(255,255,255,.35);
    color:#fff
}
.site-header.is-over:not(.is-scrolled) .cart-count{
    border-color:transparent
}
.site-header.is-over.is-scrolled{
    position:fixed;
    left:0;
    right:0;
    top:0
}
.lp-trust{
    align-items:center;
    gap:.4rem;
    margin:0;
    font-size:.9rem;
    color:var(--muted)
}
.lp-trust i{
    color:var(--brand-2)
}
.lp-trust b{
    color:var(--ink)
}
.lp-phone{
    align-items:center;
    gap:.4rem;
    font-weight:700;
    color:var(--ink)
}
.site-header.is-over:not(.is-scrolled) .lp-trust,.site-header.is-over:not(.is-scrolled) .lp-trust b,.site-header.is-over:not(.is-scrolled) .lp-phone{
    color:#fff
}
.bare-header{
    padding:1.1rem 0;
    border-bottom:1px solid var(--line);
    background:var(--surface)
}
.bare-main{
    min-height:calc(100vh - 170px)
}
.bare-footer{
    padding:1.5rem 0;
    border-top:1px solid var(--line);
    font-size:.88rem;
    color:var(--muted)
}
.bare-footer p{
    margin:0
}

/* 06 Mega menus & mobile menu ------------------------------------------------ */
.dropdown-menu{
    --bs-dropdown-bg:var(--surface);
    --bs-dropdown-border-color:var(--line);
    --bs-dropdown-color:var(--text);
    --bs-dropdown-link-color:var(--ink);
    --bs-dropdown-link-hover-bg:var(--tint);
    --bs-dropdown-link-hover-color:var(--ink);
    --bs-dropdown-link-active-bg:var(--brand-soft);
    --bs-dropdown-link-active-color:var(--brand-text)
}
.main-nav .dropdown-menu{
    margin-top:.85rem!important;
    border-radius:var(--radius);
    box-shadow:var(--shadow-lg);
    max-height:calc(100vh - 8.5rem);
    max-height:calc(100dvh - 8.5rem);
    overflow-y:auto;
    overscroll-behavior:contain;
    animation:ddIn .25s ease
}
@keyframes ddIn{
    from{
        opacity:0;
        transform:translateY(8px)
    }
    to{
        opacity:1;
        transform:none
    }
}
.dropdown-simple{
    padding:.5rem;
    min-width:240px
}
.dropdown-simple .dropdown-item{
    border-radius:var(--radius-xs);
    padding:.5rem .8rem;
    font-weight:600;
    font-size:.92rem
}
.dropdown-2col{
    display:none;
    grid-template-columns:1fr 1fr;
    gap:0 .25rem;
    min-width:420px
}
.dropdown-2col.show{
    display:grid
}
.dd-title{
    grid-column:1/-1;
    display:block;
    padding:.45rem .8rem .55rem;
    font-family:var(--font-display);
    font-size:1.05rem;
    color:var(--ink);
    font-weight:600
}
.mega-menu{
    padding:1.25rem
}
.mega-menu h6{
    font-family:var(--font);
    font-size:.72rem;
    text-transform:uppercase;
    letter-spacing:.12em;
    color:var(--muted);
    margin:0 0 .6rem .6rem;
    font-weight:800
}
.mega-menu .dropdown-item{
    border-radius:var(--radius-xs);
    padding:.42rem .6rem;
    font-size:.9rem;
    font-weight:600;
    white-space:normal
}
.mm-count{
    display:inline-block;
    margin-left:.3rem;
    padding:.05rem .45rem;
    border-radius:99px;
    background:var(--brand);
    color:var(--on-brand);
    letter-spacing:0
}
.mega-homes{
    display:none;
    grid-template-columns:1fr 220px;
    gap:1.5rem;
    width:min(1100px,96vw)
}
.mega-homes.show{
    display:grid
}
.homes-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:.1rem .4rem
}
.homes-grid .dropdown-item{
    display:flex;
    align-items:center;
    gap:.6rem;
    padding:.4rem .5rem
}
.home-no{
    flex:none;
    width:30px;
    height:30px;
    display:grid;
    place-items:center;
    border-radius:50%;
    border:1.5px dashed color-mix(in srgb,var(--brand) 45%,transparent);
    font-size:.72rem;
    font-weight:800;
    color:var(--brand-text)
}
.homes-grid .dropdown-item:hover .home-no,.homes-grid .dropdown-item.active .home-no{
    background:var(--brand);
    border-color:var(--brand);
    border-style:solid;
    color:var(--on-brand)
}
.mm-side{
    border-left:1px solid var(--line);
    padding-left:1.25rem
}
.mm-side h6:not(:first-child){
    margin-top:1rem
}
.mega-tours{
    display:none;
    grid-template-columns:1.35fr 1fr 1fr;
    gap:1.25rem;
    width:min(980px,96vw)
}
.mega-tours.show{
    display:grid
}
.types-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:.2rem
}
.mega-type{
    display:flex;
    align-items:center;
    gap:.6rem;
    padding:.45rem .6rem;
    border-radius:var(--radius-xs);
    color:var(--ink);
    font-weight:600;
    font-size:.9rem
}
.mega-type i{
    width:32px;
    height:32px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:var(--sand);
    color:var(--brand-text);
    font-size:.95rem;
    flex:none
}
.mega-type:hover{
    background:var(--tint);
    color:var(--ink)
}
.mm-feat{
    background:var(--sand);
    border-radius:var(--radius-sm);
    padding:1rem
}
.mm-feat h6{
    margin-left:0
}
.mini-list{
    display:grid;
    gap:.6rem;
    margin-bottom:1rem
}
.mini-item{
    display:flex;
    align-items:center;
    gap:.75rem;
    color:var(--ink)
}
.mini-item img{
    width:58px;
    height:58px;
    border-radius:var(--radius-xs);
    object-fit:cover;
    flex:none
}
.mini-item strong{
    display:block;
    font-size:.9rem;
    line-height:1.25;
    font-weight:700
}
.mini-item small{
    color:var(--muted);
    font-size:.8rem
}
.mini-item:hover strong{
    color:var(--brand-text)
}
.mega-dest{
    display:none;
    grid-template-columns:2.4fr 1fr;
    gap:1.25rem;
    width:min(940px,96vw)
}
.mega-dest.show{
    display:grid
}
.dest-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:.35rem
}
.dest-chip{
    display:flex;
    align-items:center;
    gap:.6rem;
    padding:.4rem;
    border-radius:99px;
    color:var(--ink)
}
.dest-chip img{
    width:40px;
    height:40px;
    border-radius:50%;
    object-fit:cover;
    flex:none
}
.dest-chip strong{
    display:block;
    font-size:.9rem;
    line-height:1.2
}
.dest-chip small{
    font-size:.75rem;
    color:var(--muted)
}
.dest-chip:hover{
    background:var(--tint);
    color:var(--ink)
}
.mega-pages{
    width:min(1120px,96vw)
}
.mm-grid{
    display:grid;
    grid-template-columns:repeat(5,1fr);
    gap:.75rem
}
.mm-col h6:not(:first-child){
    margin-top:1rem
}
.mobile-menu{
    --bs-offcanvas-width:min(380px,92vw);
    background:var(--bg)
}
.mobile-nav{
    display:flex;
    flex-direction:column
}
.mobile-nav a{
    padding:.8rem 0;
    border-bottom:1px dashed var(--line);
    font-family:var(--font-display);
    font-size:1.35rem;
    color:var(--ink)
}
.mobile-more{
    margin-top:1rem;
    border:1px solid var(--line);
    border-radius:var(--radius-sm);
    padding:.6rem .9rem;
    background:var(--surface)
}
.mobile-more summary{
    font-weight:700;
    color:var(--ink);
    cursor:pointer
}
.mobile-more div{
    display:flex;
    flex-direction:column;
    max-height:40vh;
    overflow:auto;
    margin-top:.5rem
}
.mobile-more a{
    padding:.35rem 0;
    color:var(--text);
    font-size:.94rem
}

/* 07 Hero & trip search -------------------------------------------------- */
.hero{
    position:relative;
    overflow:hidden;
    isolation:isolate
}
.hero-photo{
    min-height:min(920px,100svh);
    display:flex;
    align-items:center;
    color:#fff;
    padding:calc(var(--header-h) + 3rem) 0 clamp(8rem,14vw,11rem)
}
.hero-bg{
    position:absolute;
    inset:0;
    z-index:-2
}
.hero-bg img,.hero-bg video{
    width:100%;
    height:100%;
    object-fit:cover
}
.hero-photo::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:-1;
    background:linear-gradient(180deg,rgba(10,16,15,.55) 0%,rgba(10,16,15,.15) 40%,rgba(10,16,15,.6) 100%)
}
@media (max-width:767.98px){
    .hero-photo::before{
        background:linear-gradient(180deg,rgba(10,16,15,.6),rgba(10,16,15,.5) 45%,rgba(10,16,15,.72))
    }
}
.hero-photo h1,.hero-photo .display{
    color:#fff;
    text-shadow:0 2px 30px rgba(0,0,0,.25)
}
.hero-photo h1 em,.hero-photo .display em{
    color:var(--brand-2)
}
.hero-photo .lead-lg{
    color:rgba(255,255,255,.88);
    max-width:560px
}
.hero-kicker{
    display:inline-flex;
    align-items:center;
    gap:.6rem;
    padding:.4rem .9rem .4rem .45rem;
    border-radius:99px;
    background:rgba(255,255,255,.14);
    border:1px solid rgba(255,255,255,.25);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
    font-size:.88rem;
    font-weight:600;
    color:#fff
}
.hero-kicker b{
    padding:.15rem .6rem;
    border-radius:99px;
    background:var(--brand-2);
    color:#1d1408;
    font-size:.75rem;
    letter-spacing:.04em
}
.hero-avatars{
    display:flex;
    align-items:center;
    gap:.75rem;
    font-size:.9rem
}
.hero-avatars span:first-child{
    display:flex
}
.hero-avatars img{
    width:38px;
    height:38px;
    border-radius:50%;
    border:2px solid #fff;
    object-fit:cover;
    margin-left:-10px
}
.hero-avatars img:first-child{
    margin-left:0
}
.hero-avatars b{
    display:block;
    color:inherit
}
/* Trip search: [data-trip-search] (tabs + fields + guests popover). Submits to tours.html / hotels.html with GET params. */
.trip-search{
    position:relative;
    z-index:5;
    background:var(--surface);
    color:var(--text);
    border-radius:calc(var(--radius) + 6px);
    box-shadow:var(--shadow-lg);
    padding:.6rem
}
.ts-tabs{
    display:flex;
    gap:.25rem;
    padding:.2rem .2rem .6rem;
    flex-wrap:wrap
}
.ts-tabs button{
    display:inline-flex;
    align-items:center;
    gap:.45rem;
    border:0;
    background:transparent;
    color:var(--muted);
    font-weight:700;
    font-size:.9rem;
    padding:.5rem .9rem;
    border-radius:99px
}
.ts-tabs button[aria-selected="true"]{
    background:var(--deep);
    color:#fff
}
[data-bs-theme="dark"] .ts-tabs button[aria-selected="true"]{
    background:var(--ink);
    color:var(--deep)
}
.ts-row{
    display:grid;
    grid-template-columns:1.35fr 1fr 1fr 1fr auto;
    align-items:stretch;
    border:1px solid var(--line);
    border-radius:var(--radius);
    background:var(--surface)
}
.ts-field{
    position:relative;
    display:flex;
    flex-direction:column;
    justify-content:center;
    padding:.75rem 1.1rem;
    min-width:0
}
.ts-field+.ts-field{
    border-left:1px solid var(--line)
}
.ts-field label,.ts-field .ts-label{
    display:flex;
    align-items:center;
    gap:.4rem;
    font-size:.72rem;
    font-weight:800;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--muted);
    margin:0 0 .15rem;
    cursor:pointer
}
.ts-field label i,.ts-field .ts-label i{
    color:var(--brand-text);
    font-size:.95rem
}
.ts-field input,.ts-field select,.ts-guests-btn{
    width:100%;
    border:0;
    background:transparent;
    padding:0;
    font-weight:700;
    font-size:1rem;
    color:var(--ink);
    text-align:left;
    min-height:28px
}
.ts-field input:focus,.ts-field select:focus{
    outline:0
}
.ts-field:focus-within{
    background:var(--tint);
    border-radius:var(--radius)
}
.ts-submit{
    display:flex;
    align-items:center;
    padding:.4rem
}
.ts-submit .btn{
    height:100%;
    min-height:58px;
    padding-inline:1.6rem;
    border-radius:calc(var(--radius) - 4px)
}
.ts-guests{
    position:absolute;
    top:calc(100% + .6rem);
    left:0;
    z-index:20;
    width:300px;
    padding:1rem 1.1rem;
    border-radius:var(--radius-sm);
    background:var(--surface);
    border:1px solid var(--line);
    box-shadow:var(--shadow-lg)
}
.ts-guests[hidden]{
    display:none
}
.tg-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    padding:.55rem 0
}
.tg-row+.tg-row{
    border-top:1px dashed var(--line)
}
.tg-row strong{
    display:block;
    color:var(--ink);
    font-size:.95rem
}
.tg-row small{
    color:var(--muted);
    font-size:.8rem
}
.ts-note{
    display:flex;
    flex-wrap:wrap;
    gap:.4rem 1.25rem;
    padding:.65rem .75rem .25rem;
    font-size:.84rem;
    color:var(--muted)
}
.ts-note i{
    color:var(--accent-text);
    margin-right:.25rem
}
.trip-search.is-compact .ts-tabs{
    display:none
}
.trip-search.is-flat{
    box-shadow:var(--shadow)
}
.hero-search-dock{
    position:relative;
    z-index:6;
    margin-top:calc(-1 * clamp(5rem,9vw,6.5rem))
}
@media (max-width:991.98px){
    .ts-row{
        grid-template-columns:1fr 1fr
    }
    .ts-field:nth-child(3){
        border-left:0
    }
    .ts-field:nth-child(n+3){
        border-top:1px solid var(--line)
    }
    .ts-submit{
        grid-column:1/-1
    }
    .ts-submit .btn{
        width:100%
    }
}
@media (max-width:575.98px){
    .ts-row{
        grid-template-columns:1fr
    }
    .ts-field+.ts-field{
        border-left:0;
        border-top:1px solid var(--line)
    }
    .ts-guests{
        width:100%
    }
}

/* 08 Decorations ---------------------------------------------------------- */
/* Postmark stamp (build.py stamp() / {{stamp:Text}}). Spins slowly; still for reduced motion. */
.stamp{
    width:120px;
    height:120px;
    color:var(--brand-text);
    animation:spin 28s linear infinite;
    flex:none
}
.stamp .st-ring{
    fill:none;
    stroke:currentColor;
    stroke-width:1.5;
    stroke-dasharray:3 4
}
.stamp .st-inner{
    stroke-dasharray:none;
    stroke-width:1
}
.stamp text{
    font-family:var(--font);
    font-size:10.5px;
    font-weight:800;
    letter-spacing:.18em;
    text-transform:uppercase;
    fill:currentColor
}
.stamp .st-plane{
    fill:currentColor
}
.stamp-light{
    color:var(--brand-2)
}
.stamp-white{
    color:#fff
}
@keyframes spin{
    to{
        transform:rotate(360deg)
    }
}
/* Dashed travel route with a plane following it: <svg class="route"><path pathLength="1000"/></svg> */
.route{
    position:absolute;
    pointer-events:none;
    overflow:visible
}
.route path{
    fill:none;
    stroke:currentColor;
    stroke-width:2;
    stroke-dasharray:6 9;
    stroke-linecap:round
}
.route .rt-dot{
    fill:currentColor
}
.route-plane{
    position:absolute;
    width:28px;
    height:28px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:#fff;
    color:var(--brand-text);
    font-size:.85rem;
    box-shadow:var(--shadow-sm)
}
/* Handwritten note with an arrow */
.hand-note{
    display:inline-flex;
    align-items:flex-start;
    gap:.35rem;
    font-family:var(--font-hand);
    font-size:1.45rem;
    line-height:1;
    color:var(--brand-text);
    transform:rotate(-4deg)
}
.hand-note svg{
    width:46px;
    height:34px;
    flex:none;
    stroke:currentColor;
    fill:none;
    stroke-width:2;
    stroke-linecap:round
}
/* Photo with a white frame and a piece of tape */
.polaroid{
    position:relative;
    display:inline-block;
    padding:.65rem .65rem 2.6rem;
    background:#fff;
    border-radius:6px;
    box-shadow:var(--shadow);
    transform:rotate(var(--rot,-3deg))
}
.polaroid img{
    display:block;
    border-radius:2px;
    width:100%;
    object-fit:cover
}
.polaroid figcaption,.polaroid .pol-cap{
    position:absolute;
    left:0;
    right:0;
    bottom:.55rem;
    text-align:center;
    font-family:var(--font-hand);
    font-size:1.35rem;
    color:#3a2f27;
    line-height:1.2
}
.polaroid::before{
    content:"";
    position:absolute;
    top:-12px;
    left:50%;
    width:90px;
    height:26px;
    margin-left:-45px;
    background:color-mix(in srgb,var(--brand-2) 55%,rgba(255,255,255,.4));
    opacity:.85;
    transform:rotate(-4deg);
    box-shadow:0 2px 4px rgba(0,0,0,.08)
}
/* Arch photo (hotel feel) */
.arch{
    border-radius:999px 999px var(--radius) var(--radius);
    overflow:hidden
}
.arch img{
    width:100%;
    height:100%;
    object-fit:cover
}
/* Paper grain on any section: add .has-grain */
.has-grain{
    position:relative
}
.has-grain::after{
    content:"";
    position:absolute;
    inset:0;
    background:var(--grain);
    pointer-events:none;
    mix-blend-mode:multiply;
    opacity:.9
}
[data-bs-theme="dark"] .has-grain::after{
    mix-blend-mode:screen;
    opacity:.35
}
/* Torn-paper / wave edges: .edge-top or .edge-bottom on a section (uses the section background) */
.edge-bottom::before,.edge-top::before{
    content:"";
    position:absolute;
    left:0;
    right:0;
    height:28px;
    background:inherit;
    z-index:1;
    -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 28' preserveAspectRatio='none'%3E%3Cpath d='M0 28V12q10-9 20-1t20 0 20 0 20 0 20 0 20-1V28z'/%3E%3C/svg%3E") 0 0/120px 28px repeat-x;
    mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 28' preserveAspectRatio='none'%3E%3Cpath d='M0 28V12q10-9 20-1t20 0 20 0 20 0 20 0 20-1V28z'/%3E%3C/svg%3E") 0 0/120px 28px repeat-x
}
.edge-top::before{
    top:-27px
}
.edge-bottom::before{
    bottom:-27px;
    transform:scaleY(-1)
}
/* Ticket shape: notches on both sides of a dashed tear line. Put .ticket on any card and .ticket-tear on the line. */
.ticket{
    --notch:12px;
    position:relative;
    -webkit-mask:radial-gradient(circle var(--notch) at 0 var(--tear,70%),#0000 98%,#000) 0 0/51% 100% no-repeat,radial-gradient(circle var(--notch) at 100% var(--tear,70%),#0000 98%,#000) 100% 0/51% 100% no-repeat;
    mask:radial-gradient(circle var(--notch) at 0 var(--tear,70%),#0000 98%,#000) 0 0/51% 100% no-repeat,radial-gradient(circle var(--notch) at 100% var(--tear,70%),#0000 98%,#000) 100% 0/51% 100% no-repeat
}
.ticket-tear{
    border:0;
    border-top:2px dashed var(--line);
    margin:0;
    opacity:1
}
/* Big outlined word behind a section title */
.ghost-word{
    position:absolute;
    left:0;
    right:0;
    top:0;
    text-align:center;
    font-family:var(--font-display);
    font-style:italic;
    font-size:clamp(5rem,16vw,15rem);
    line-height:.8;
    color:transparent;
    -webkit-text-stroke:1px color-mix(in srgb,var(--deep) 14%,transparent);
    pointer-events:none;
    user-select:none;
    white-space:nowrap;
    overflow:hidden
}
[data-bs-theme="dark"] .ghost-word{
    -webkit-text-stroke-color:rgba(255,255,255,.08)
}
.dot-grid{
    position:absolute;
    width:150px;
    height:110px;
    background:radial-gradient(color-mix(in srgb,var(--brand) 45%,transparent) 1.6px,transparent 1.7px) 0 0/16px 16px;
    pointer-events:none
}
.sun-blob{
    position:absolute;
    width:420px;
    aspect-ratio:1;
    border-radius:50%;
    background:radial-gradient(circle,color-mix(in srgb,var(--brand-2) 55%,transparent),transparent 65%);
    filter:blur(10px);
    opacity:.6;
    pointer-events:none;
    z-index:-1
}

/* Photo collage: arch photo + polaroid + stamp + route (Home 1 story) */
.story-collage{
    position:relative;
    max-width:520px;
    margin:0 auto;
    padding:2rem 0 3rem
}
.story-collage .sc-main{
    width:78%;
    aspect-ratio:38/45;
    margin-left:auto
}
.story-collage .sc-pol{
    position:absolute;
    left:0;
    bottom:0;
    width:46%;
    z-index:2
}
.story-collage .sc-stamp{
    position:absolute;
    left:4%;
    top:0;
    width:118px;
    height:118px
}
.story-collage .sc-route{
    position:absolute;
    right:-8%;
    bottom:-.5rem;
    color:var(--brand)
}
@media (max-width:575.98px){
    .story-collage .sc-route{
        right:0;
        width:160px
    }
}
.hero-polaroid{
    width:260px;
    margin:0
}
.hero-polaroid img{
    aspect-ratio:22/26
}
.section-deep .room-card h3 a,.section-deep .room-card .room-facts{
    color:#fff
}
.section-deep .room-card .room-facts i,.section-deep .room-card .eyebrow-sm,.section-deep .room-card .link-arrow{
    color:var(--brand-2)
}

/* 09 Tour cards -------------------------------------------------------------- */
.tc-place{
    display:flex;
    align-items:center;
    gap:.35rem;
    margin:0 0 .3rem;
    font-size:.78rem;
    font-weight:800;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--brand-text)
}
.tc-meta{
    display:flex;
    flex-wrap:wrap;
    gap:.35rem 1rem;
    margin:0;
    font-size:.86rem;
    color:var(--muted)
}
.tc-meta li{
    display:flex;
    align-items:center;
    gap:.35rem
}
.tc-meta i{
    color:var(--ink);
    opacity:.7
}
.rating{
    display:inline-flex;
    align-items:center;
    gap:.3rem;
    font-size:.9rem;
    color:var(--ink)
}
.rating i{
    color:var(--brand-2)
}
.rating small{
    color:var(--muted);
    font-size:.8rem
}
.stars{
    display:inline-flex;
    gap:.12rem;
    color:var(--brand-2);
    font-size:.85rem
}
.tc-price{
    margin:0;
    display:flex;
    flex-direction:column;
    align-items:flex-end;
    line-height:1.1
}
.tc-price small{
    font-size:.72rem;
    color:var(--muted);
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.08em
}
.tc-price .money{
    font-family:var(--font-display);
    font-size:1.45rem;
    font-weight:600;
    color:var(--ink)
}
.tc-price .per{
    color:var(--muted);
    font-size:.78rem;
    font-family:var(--font)
}
.tc-price del{
    color:var(--muted);
    font-size:.85rem;
    margin-right:.25rem
}
.tc-badge{
    position:absolute;
    top:1rem;
    left:1rem;
    z-index:2;
    padding:.3rem .75rem;
    border-radius:99px;
    background:var(--brand-2);
    color:#1d1408;
    font-size:.75rem;
    font-weight:800;
    letter-spacing:.03em
}
.tc-badge.is-sale{
    background:var(--brand);
    color:var(--on-brand)
}
.wish-btn{
    position:absolute;
    top:.85rem;
    right:.85rem;
    z-index:2;
    width:40px;
    height:40px;
    display:grid;
    place-items:center;
    border:0;
    border-radius:50%;
    background:rgba(255,255,255,.92);
    color:#2b2420;
    font-size:1.05rem;
    box-shadow:var(--shadow-sm);
    transition:transform .2s,color .2s
}
.wish-btn:hover{
    transform:scale(1.1);
    color:var(--brand)
}
.wish-btn[aria-pressed="true"]{
    color:#e0393e
}
.wish-btn[aria-pressed="true"] i::before{
    content:"\F415"
}
.tour-card{
    height:100%;
    display:flex;
    flex-direction:column;
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line);
    overflow:hidden;
    transition:transform .35s,box-shadow .35s
}
.tour-card:hover{
    transform:translateY(-6px);
    box-shadow:var(--shadow)
}
.tc-img{
    position:relative;
    aspect-ratio:4/3;
    overflow:hidden;
    background:var(--sand)
}
.tc-img img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .8s cubic-bezier(.2,.7,.2,1)
}
.tour-card:hover .tc-img img{
    transform:scale(1.06)
}
.tc-days{
    position:absolute;
    left:1rem;
    bottom:-1px;
    z-index:2;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    width:64px;
    height:58px;
    padding-top:.2rem;
    border-radius:16px 16px 0 0;
    background:var(--surface);
    font-size:.68rem;
    font-weight:800;
    letter-spacing:.08em;
    text-transform:uppercase;
    color:var(--muted);
    line-height:1
}
.tc-days b{
    font-family:var(--font-display);
    font-size:1.45rem;
    color:var(--ink);
    font-weight:600;
    letter-spacing:0;
    margin-bottom:.1rem
}
.tc-body{
    padding:1.15rem 1.35rem .5rem;
    flex:1
}
.tc-body h3{
    font-size:1.28rem;
    margin:0 0 .65rem;
    line-height:1.22
}
.tc-body h3 a,.tr-body h3 a,.tk-main h3 a{
    color:var(--ink)
}
.tc-body h3 a:hover,.tr-body h3 a:hover,.tk-main h3 a:hover{
    color:var(--brand-text)
}
.tc-foot{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:1rem;
    margin:0 1.35rem;
    padding:.9rem 0 1.2rem;
    border-top:1px dashed var(--line)
}
/* list row */
.tour-row{
    display:grid;
    grid-template-columns:300px 1fr 210px;
    gap:1.5rem;
    padding:.9rem;
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line);
    transition:box-shadow .3s
}
.tour-row+.tour-row{
    margin-top:1rem
}
.tour-row:hover{
    box-shadow:var(--shadow)
}
.tr-img{
    position:relative;
    border-radius:calc(var(--radius) - 6px);
    overflow:hidden;
    aspect-ratio:4/3
}
.tr-img img{
    width:100%;
    height:100%;
    object-fit:cover
}
.tr-body{
    padding:.6rem 0;
    min-width:0
}
.tr-body h3{
    font-size:1.35rem;
    margin:.1rem 0 .5rem
}
.tr-text{
    color:var(--muted);
    font-size:.95rem;
    margin-bottom:.8rem
}
.tr-side{
    position:relative;
    display:flex;
    flex-direction:column;
    align-items:flex-end;
    justify-content:space-between;
    gap:.75rem;
    padding:.6rem .5rem .6rem 1.5rem;
    border-left:1px dashed var(--line)
}
.tr-side .wish-btn{
    position:static;
    box-shadow:none;
    background:var(--tint)
}
@media (max-width:991.98px){
    .tour-row{
        grid-template-columns:220px 1fr
    }
    .tr-side{
        grid-column:1/-1;
        flex-direction:row;
        align-items:center;
        border-left:0;
        border-top:1px dashed var(--line);
        padding:.9rem .25rem 0
    }
}
@media (max-width:575.98px){
    .tour-row{
        grid-template-columns:1fr
    }
    .tr-side{
        flex-wrap:wrap
    }
}
/* ticket card */
.ticket-card{
    position:relative;
    height:100%;
    display:flex;
    flex-direction:column;
    border-radius:var(--radius);
    background:var(--surface);
    box-shadow:var(--shadow-sm);
    overflow:hidden;
    --notch:13px;
    -webkit-mask:radial-gradient(circle var(--notch) at 0 calc(100% - 74px),#0000 98%,#000) 0 0/51% 100% no-repeat,radial-gradient(circle var(--notch) at 100% calc(100% - 74px),#0000 98%,#000) 100% 0/51% 100% no-repeat;
    mask:radial-gradient(circle var(--notch) at 0 calc(100% - 74px),#0000 98%,#000) 0 0/51% 100% no-repeat,radial-gradient(circle var(--notch) at 100% calc(100% - 74px),#0000 98%,#000) 100% 0/51% 100% no-repeat
}
.tk-img{
    display:block;
    aspect-ratio:36/22;
    overflow:hidden;
    margin:.6rem .6rem 0;
    border-radius:calc(var(--radius) - 6px)
}
.tk-img img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .8s
}
.ticket-card:hover .tk-img img{
    transform:scale(1.05)
}
.ticket-card .wish-btn{
    top:1.4rem;
    right:1.4rem
}
.tk-main{
    padding:1.1rem 1.35rem 1.2rem;
    flex:1
}
.tk-main h3{
    font-size:1.25rem;
    margin:0 0 .9rem
}
.tk-row{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:.5rem
}
.tk-row span{
    display:flex;
    flex-direction:column;
    font-size:.92rem
}
.tk-row small{
    font-size:.66rem;
    letter-spacing:.12em;
    text-transform:uppercase;
    color:var(--muted);
    font-weight:800
}
.tk-row b{
    color:var(--ink)
}
.tk-stub{
    display:flex;
    align-items:center;
    justify-content:space-between;
    height:74px;
    padding:0 1.35rem;
    border-top:2px dashed var(--line);
    background:var(--sand)
}
.tk-price{
    display:flex;
    flex-direction:column;
    line-height:1.1
}
.tk-price small{
    font-size:.7rem;
    text-transform:uppercase;
    letter-spacing:.1em;
    color:var(--muted);
    font-weight:800
}
.tk-price .money{
    font-family:var(--font-display);
    font-size:1.45rem;
    color:var(--ink);
    font-weight:600
}
.tk-price .per{
    font-size:.78rem;
    color:var(--muted)
}
/* tall photo slide (rails, hero carousels) */
.slide-card{
    position:relative;
    border-radius:var(--radius);
    overflow:hidden;
    aspect-ratio:4/5;
    background:var(--sand)
}
.sc-link{
    display:block;
    height:100%;
    color:#fff
}
.sc-link img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .8s cubic-bezier(.2,.7,.2,1)
}
.slide-card:hover img{
    transform:scale(1.06)
}
.sc-over{
    position:absolute;
    inset:auto 0 0;
    display:flex;
    flex-direction:column;
    gap:.3rem;
    padding:4rem 1.35rem 1.35rem;
    background:linear-gradient(transparent,rgba(8,12,11,.82))
}
.sc-over .tc-place{
    color:var(--brand-2);
    margin:0
}
.sc-over strong{
    font-family:var(--font-display);
    font-size:1.4rem;
    font-weight:500;
    line-height:1.15
}
.sc-price{
    font-size:.9rem;
    color:rgba(255,255,255,.85)
}
.sc-price .money{
    font-weight:800;
    color:#fff
}
.sc-price .per{
    color:rgba(255,255,255,.7)
}

/* 10 Destination cards --------------------------------------------------------- */
.dest-card{
    display:flex;
    flex-direction:column;
    height:100%;
    color:var(--text)
}
.dc-img{
    display:block;
    aspect-ratio:32/38;
    overflow:hidden;
    border-radius:999px 999px var(--radius) var(--radius);
    background:var(--sand)
}
.dc-img img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .8s cubic-bezier(.2,.7,.2,1)
}
.dest-card:hover .dc-img img{
    transform:scale(1.06)
}
.dc-body{
    display:flex;
    flex-direction:column;
    padding:1rem .25rem 0
}
.dc-body small{
    font-size:.72rem;
    font-weight:800;
    letter-spacing:.12em;
    text-transform:uppercase;
    color:var(--brand-text)
}
.dc-body strong{
    font-family:var(--font-display);
    font-size:1.6rem;
    font-weight:500;
    color:var(--ink);
    line-height:1.15;
    margin:.1rem 0 .25rem
}
.dc-body>span{
    font-size:.92rem;
    color:var(--muted)
}
.dc-foot{
    display:flex !important;
    justify-content:space-between;
    gap:.5rem;
    margin-top:.7rem;
    padding-top:.7rem;
    border-top:1px dashed var(--line);
    font-size:.86rem;
    color:var(--ink)
}
.dc-foot i{
    color:var(--brand-text);
    margin-right:.3rem
}
.dc-foot .money{
    font-weight:800
}
.dest-card:hover strong{
    color:var(--brand-text)
}
.dest-tile{
    position:relative;
    display:block;
    border-radius:var(--radius);
    overflow:hidden;
    aspect-ratio:3/4;
    color:#fff;
    background:var(--sand)
}
.dest-tile img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .8s cubic-bezier(.2,.7,.2,1)
}
.dest-tile:hover img{
    transform:scale(1.07)
}
.dt-over{
    position:absolute;
    inset:auto 0 0;
    display:flex;
    flex-direction:column;
    padding:4rem 1.25rem 1.2rem;
    background:linear-gradient(transparent,rgba(8,12,11,.78))
}
.dt-over small{
    font-size:.72rem;
    letter-spacing:.14em;
    text-transform:uppercase;
    font-weight:800;
    color:var(--brand-2)
}
.dt-over strong{
    font-family:var(--font-display);
    font-size:1.7rem;
    font-weight:500;
    line-height:1.1
}
.dt-more{
    font-size:.86rem;
    color:rgba(255,255,255,.85);
    max-height:0;
    opacity:0;
    overflow:hidden;
    transition:max-height .4s,opacity .4s,margin .4s
}
.dest-tile:hover .dt-more,.dest-tile:focus-visible .dt-more{
    max-height:2rem;
    opacity:1;
    margin-top:.2rem
}
.dt-more .per{
    display:none
}
@media (hover:none){
    .dt-more{
        max-height:2rem;
        opacity:1
    }
}

/* 11 Hotels & rooms ----------------------------------------------------------- */
.hotel-card{
    height:100%;
    display:flex;
    flex-direction:column;
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line);
    overflow:hidden;
    transition:transform .35s,box-shadow .35s
}
.hotel-card:hover{
    transform:translateY(-6px);
    box-shadow:var(--shadow)
}
.hc-img{
    display:block;
    aspect-ratio:36/26;
    overflow:hidden
}
.hc-img img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .8s
}
.hotel-card:hover .hc-img img{
    transform:scale(1.05)
}
.hc-body{
    display:flex;
    flex-direction:column;
    flex:1;
    padding:1.1rem 1.35rem 1.25rem
}
.hc-body h3{
    font-size:1.22rem;
    margin:.3rem 0 .35rem
}
.hc-body h3 a,.hr-body h3 a{
    color:var(--ink)
}
.hc-stars{
    margin:0
}
.hc-foot{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:.75rem;
    margin-top:auto;
    padding-top:.9rem;
    border-top:1px dashed var(--line)
}
.score{
    display:flex;
    align-items:center;
    gap:.55rem
}
.score b{
    display:grid;
    place-items:center;
    min-width:42px;
    height:36px;
    padding:0 .35rem;
    border-radius:10px 10px 10px 2px;
    background:var(--deep);
    color:#fff;
    font-size:.95rem
}
[data-bs-theme="dark"] .score b{
    background:var(--accent);
    color:#06100f
}
.score small{
    font-size:.78rem;
    color:var(--muted);
    line-height:1.25;
    max-width:110px
}
.hotel-row{
    display:grid;
    grid-template-columns:280px 1fr 200px;
    gap:1.5rem;
    padding:.9rem;
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line)
}
.hotel-row+.hotel-row{
    margin-top:1rem
}
.hr-img{
    border-radius:calc(var(--radius) - 6px);
    overflow:hidden;
    aspect-ratio:4/3
}
.hr-img img{
    width:100%;
    height:100%;
    object-fit:cover
}
.hr-body{
    padding:.4rem 0
}
.hr-body h3{
    font-size:1.3rem;
    margin:.25rem 0 .3rem
}
.hc-perks{
    font-size:.9rem;
    color:var(--muted);
    margin:.4rem 0 .6rem
}
.hr-side{
    display:flex;
    flex-direction:column;
    align-items:flex-end;
    justify-content:space-between;
    gap:.75rem;
    padding:.5rem .5rem .5rem 1.5rem;
    border-left:1px dashed var(--line)
}
@media (max-width:991.98px){
    .hotel-row{
        grid-template-columns:220px 1fr
    }
    .hr-side{
        grid-column:1/-1;
        flex-direction:row;
        align-items:center;
        border-left:0;
        border-top:1px dashed var(--line);
        padding:.9rem .25rem 0
    }
}
@media (max-width:575.98px){
    .hotel-row{
        grid-template-columns:1fr
    }
    .hr-side{
        flex-wrap:wrap
    }
}
.room-card{
    height:100%;
    display:flex;
    flex-direction:column
}
.rc-img{
    position:relative;
    display:block;
    aspect-ratio:36/43;
    overflow:hidden;
    border-radius:var(--radius);
    background:var(--sand)
}
.rc-img img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .9s cubic-bezier(.2,.7,.2,1)
}
.room-card:hover .rc-img img{
    transform:scale(1.05)
}
.rc-price{
    position:absolute;
    right:1rem;
    bottom:1rem;
    display:flex;
    align-items:baseline;
    gap:.3rem;
    padding:.5rem .9rem;
    border-radius:99px;
    background:var(--surface);
    color:var(--ink);
    font-weight:800;
    box-shadow:var(--shadow-sm)
}
.rc-price small{
    color:var(--muted);
    font-weight:600;
    font-size:.78rem
}
.rc-body{
    padding:1.15rem .25rem 0
}
.rc-body h3{
    font-size:1.45rem;
    font-weight:500;
    margin:0 0 .7rem
}
.rc-body h3 a,.rr-body h3 a{
    color:var(--ink)
}
.room-facts{
    display:flex;
    flex-wrap:wrap;
    gap:.4rem .9rem;
    margin:0 0 .9rem;
    font-size:.88rem;
    color:var(--muted)
}
.room-facts li{
    display:flex;
    align-items:center;
    gap:.35rem
}
.room-facts i{
    color:var(--brand-text)
}
.room-row{
    display:grid;
    grid-template-columns:1.1fr 1fr;
    gap:clamp(1.5rem,4vw,3.5rem);
    align-items:center
}
.room-row+.room-row{
    margin-top:clamp(3rem,6vw,5rem)
}
.room-row:nth-child(even) .rr-img{
    order:2
}
.rr-img{
    border-radius:var(--radius);
    overflow:hidden;
    aspect-ratio:45/32;
    display:block
}
.rr-img img{
    width:100%;
    height:100%;
    object-fit:cover
}
.rr-body h3{
    font-size:clamp(1.7rem,1.3rem + 1.2vw,2.3rem);
    font-weight:500;
    margin:.2rem 0 .7rem
}
.rr-feats{
    font-size:.9rem;
    color:var(--muted)
}
.rr-foot{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:.6rem 1rem;
    margin-top:1.2rem;
    padding-top:1.2rem;
    border-top:1px dashed var(--line)
}
.rr-foot .tc-price{
    align-items:flex-start;
    margin-right:auto
}
@media (max-width:767.98px){
    .room-row{
        grid-template-columns:1fr
    }
    .room-row:nth-child(even) .rr-img{
        order:0
    }
}

/* 12 Features, stats, reviews ------------------------------------------------- */
.feature{
    display:flex;
    gap:1rem
}
.feature-ico{
    flex:none;
    width:54px;
    height:54px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:var(--surface);
    border:1.5px dashed color-mix(in srgb,var(--brand) 50%,transparent);
    color:var(--brand-text);
    font-size:1.35rem
}
.feature h3{
    font-size:1.18rem;
    margin:.2rem 0 .3rem
}
.feature p{
    margin:0;
    color:var(--muted);
    font-size:.95rem
}
.feature-card{
    height:100%;
    padding:1.75rem 1.6rem;
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line);
    transition:transform .3s,box-shadow .3s
}
.feature-card:hover{
    transform:translateY(-4px);
    box-shadow:var(--shadow)
}
.feature-card .feature-ico{
    margin-bottom:1.1rem
}
.feature-card h3{
    font-size:1.2rem;
    margin-bottom:.4rem
}
.feature-card p{
    margin:0;
    color:var(--muted);
    font-size:.95rem
}
.stat-strip{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:1rem
}
.stat{
    padding:1.25rem 1rem;
    text-align:center
}
.stat+.stat{
    border-left:1px dashed var(--line)
}
.stat b{
    display:block;
    font-family:var(--font-display);
    font-size:clamp(2.3rem,1.6rem + 2vw,3.4rem);
    font-weight:500;
    color:var(--ink);
    line-height:1;
    letter-spacing:-.03em
}
.stat span{
    display:block;
    margin-top:.5rem;
    font-size:.9rem;
    color:var(--muted)
}
.section-deep .stat b{
    color:#fff
}
.section-deep .stat+.stat{
    border-color:rgba(255,255,255,.15)
}
@media (max-width:767.98px){
    .stat-strip{
        grid-template-columns:1fr 1fr
    }
    .stat:nth-child(3){
        border-left:0
    }
}
.steps{
    counter-reset:step;
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:1.5rem;
    position:relative
}
.step{
    position:relative;
    text-align:center;
    padding:0 .5rem
}
.step-num{
    position:relative;
    z-index:1;
    width:76px;
    height:76px;
    margin:0 auto 1.1rem;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:var(--surface);
    border:2px dashed var(--brand);
    color:var(--brand-text);
    font-size:1.6rem
}
.step-num::after{
    counter-increment:step;
    content:counter(step);
    position:absolute;
    top:-4px;
    right:-4px;
    width:26px;
    height:26px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:var(--brand-2);
    color:#1d1408;
    font-size:.78rem;
    font-weight:800;
    font-family:var(--font)
}
.step h3{
    font-size:1.15rem;
    margin-bottom:.35rem
}
.step p{
    color:var(--muted);
    font-size:.94rem;
    margin:0
}
.steps::before{
    content:"";
    position:absolute;
    top:38px;
    left:12%;
    right:12%;
    border-top:2px dashed var(--line)
}
@media (max-width:767.98px){
    .steps{
        grid-template-columns:1fr 1fr;
        row-gap:2rem
    }
    .steps::before{
        display:none
    }
}
.review-card{
    height:100%;
    margin:0;
    padding:1.75rem;
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line);
    display:flex;
    flex-direction:column
}
.review-card blockquote{
    margin:1rem 0 1.25rem;
    flex:1
}
.review-card blockquote p{
    margin:0;
    color:var(--ink);
    font-size:1.02rem;
    line-height:1.65
}
.review-card figcaption,.review-quote figcaption{
    display:flex;
    align-items:center;
    gap:.8rem
}
.review-card figcaption img,.review-quote figcaption img{
    border-radius:50%;
    object-fit:cover;
    flex:none
}
.review-card strong,.review-quote strong{
    display:block;
    color:var(--ink);
    font-size:.95rem
}
.review-card small,.review-quote small{
    color:var(--muted);
    font-size:.82rem
}
.review-quote{
    position:relative;
    margin:0;
    padding:2.5rem 0 0
}
.rq-mark{
    position:absolute;
    top:-1.5rem;
    left:-.4rem;
    font-family:var(--font-display);
    font-size:7rem;
    line-height:1;
    color:var(--brand-2);
    opacity:.9
}
.review-quote blockquote p{
    font-family:var(--font-display);
    font-size:clamp(1.35rem,1.1rem + 1vw,1.9rem);
    font-weight:400;
    line-height:1.35;
    color:var(--ink);
    font-style:italic
}
.review-quote .stars{
    margin-left:auto
}
.trust-row{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:1rem 2.5rem
}
.trust-badge{
    display:flex;
    align-items:center;
    gap:.6rem;
    font-size:.9rem;
    color:var(--muted)
}
.trust-badge b{
    font-family:var(--font-display);
    font-size:1.5rem;
    color:var(--ink);
    font-weight:600
}
.trust-badge i{
    font-size:1.4rem;
    color:var(--accent-text)
}
.logo-row{
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    align-items:center;
    gap:1.25rem 3rem
}
.logo-word{
    display:inline-flex;
    align-items:center;
    gap:.45rem;
    font-family:var(--font-display);
    font-size:1.35rem;
    font-weight:600;
    color:var(--muted);
    transition:opacity .2s,color .2s;
    white-space:nowrap
}
.logo-word i{
    font-size:1.2rem
}
.logo-word:hover{
    opacity:1;
    color:var(--ink)
}

/* Travel style tiles (Home 1) */
.style-grid{
    display:grid;
    grid-template-columns:repeat(6,1fr);
    gap:1rem
}
.style-tile{
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:.25rem;
    padding:1.4rem .75rem;
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line);
    text-align:center;
    color:var(--ink);
    transition:transform .3s,box-shadow .3s,border-color .3s
}
.style-tile i{
    width:58px;
    height:58px;
    display:grid;
    place-items:center;
    margin-bottom:.5rem;
    border-radius:50%;
    background:var(--sand);
    color:var(--brand-text);
    font-size:1.5rem;
    transition:background .3s,color .3s
}
.style-tile span{
    font-weight:800;
    font-size:.98rem
}
.style-tile small{
    color:var(--muted);
    font-size:.8rem
}
.style-tile:hover{
    transform:translateY(-4px);
    box-shadow:var(--shadow);
    border-color:transparent;
    color:var(--ink)
}
.style-tile:hover i{
    background:var(--brand);
    color:var(--on-brand)
}
@media (max-width:991.98px){
    .style-grid{
        grid-template-columns:repeat(3,1fr)
    }
}
@media (max-width:575.98px){
    .style-grid{
        grid-template-columns:repeat(2,1fr)
    }
}

/* 13 Journal (blog) cards --------------------------------------------------------- */
.post-card{
    height:100%;
    display:flex;
    flex-direction:column
}
.pc-img{
    position:relative;
    display:block;
    aspect-ratio:40/28;
    overflow:hidden;
    border-radius:var(--radius);
    background:var(--sand)
}
.pc-img img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .8s
}
.post-card:hover .pc-img img{
    transform:scale(1.05)
}
.pc-cat{
    display:inline-block;
    padding:.28rem .75rem;
    border-radius:99px;
    background:var(--brand-2-soft);
    color:var(--ink);
    font-size:.74rem;
    font-weight:800;
    letter-spacing:.06em;
    text-transform:uppercase
}
.pc-img .pc-cat{
    position:absolute;
    left:1rem;
    top:1rem;
    background:var(--surface)
}
.pc-body{
    padding:1rem .2rem 0
}
.pc-body h3{
    font-size:1.3rem;
    font-weight:500;
    margin:.35rem 0 .7rem;
    line-height:1.25
}
.pc-body h3 a,.post-row h2 a{
    color:var(--ink)
}
.pc-body h3 a:hover,.post-row h2 a:hover{
    color:var(--brand-text)
}
.pc-meta{
    font-size:.82rem;
    color:var(--muted);
    margin:0;
    display:flex;
    align-items:center;
    gap:.5rem
}
.pc-meta img,.pc-author img{
    border-radius:50%;
    object-fit:cover
}
.pc-author{
    display:flex;
    align-items:center;
    gap:.5rem;
    font-size:.88rem;
    font-weight:700;
    color:var(--ink);
    margin:0
}
.post-row{
    display:grid;
    grid-template-columns:minmax(0,380px) 1fr;
    gap:1.75rem;
    align-items:center
}
.post-row+.post-row{
    margin-top:2rem;
    padding-top:2rem;
    border-top:1px dashed var(--line)
}
.pr-thumb{
    border-radius:var(--radius);
    overflow:hidden;
    aspect-ratio:38/26;
    display:block
}
.pr-thumb img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .8s
}
.post-row:hover .pr-thumb img{
    transform:scale(1.05)
}
.post-row h2{
    font-size:clamp(1.35rem,1.1rem + .8vw,1.75rem);
    font-weight:500;
    margin:.6rem 0 .5rem
}
.post-row p{
    color:var(--muted)
}
@media (max-width:767.98px){
    .post-row{
        grid-template-columns:1fr
    }
}

/* 14 Travel experts ------------------------------------------------------------------ */
.expert-card{
    height:100%;
    text-align:center
}
.ec-img{
    position:relative;
    display:block;
    aspect-ratio:30/36;
    border-radius:var(--radius);
    overflow:hidden;
    background:var(--sand)
}
.ec-img img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .8s
}
.expert-card:hover .ec-img img{
    transform:scale(1.05)
}
.ec-count{
    position:absolute;
    right:.9rem;
    top:.9rem;
    width:70px;
    height:70px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    border-radius:50%;
    background:var(--brand-2);
    color:#1d1408;
    font-size:.62rem;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.06em;
    line-height:1.1;
    transform:rotate(8deg)
}
.ec-count b{
    font-family:var(--font-display);
    font-size:1.45rem;
    letter-spacing:0
}
.ec-body{
    padding-top:1rem
}
.ec-body h3{
    font-size:1.25rem;
    margin:0 0 .2rem
}
.ec-body h3 a{
    color:var(--ink)
}
.ec-body p{
    margin:0;
    color:var(--muted);
    font-size:.9rem
}
.ec-langs{
    margin-top:.35rem!important;
    font-size:.82rem!important
}
.ec-langs i{
    color:var(--brand-text);
    margin-right:.3rem
}
.expert-mini{
    display:flex;
    align-items:center;
    gap:.7rem;
    color:var(--ink)
}
.expert-mini img{
    border-radius:50%;
    object-fit:cover;
    flex:none
}
.expert-mini strong{
    display:block;
    font-size:.95rem
}
.expert-mini small{
    color:var(--muted);
    font-size:.82rem
}

/* 15 Packages, plans & deals ----------------------------------------------------------- */
.price-card{
    position:relative;
    height:100%;
    display:flex;
    flex-direction:column;
    padding:2rem 1.75rem;
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line)
}
.price-card h3{
    font-size:1.35rem;
    margin-bottom:.3rem
}
.price-card>p{
    color:var(--muted);
    font-size:.94rem
}
.pcard-price{
    display:flex;
    align-items:baseline;
    gap:.4rem;
    margin:.5rem 0 1.25rem
}
.pcard-price b,.pcard-price .money{
    font-family:var(--font-display);
    font-size:2.8rem;
    color:var(--ink);
    letter-spacing:-.03em;
    line-height:1;
    font-weight:500
}
.pcard-price span{
    color:var(--muted);
    font-size:.9rem
}
.price-card ul{
    margin:0 0 1.75rem;
    flex:1
}
.price-card li{
    display:flex;
    gap:.55rem;
    padding:.35rem 0;
    color:var(--ink);
    font-size:.95rem
}
.price-card li i{
    color:var(--accent-text);
    font-size:1.1rem
}
.price-card.is-featured{
    background:var(--deep);
    border-color:var(--deep);
    color:color-mix(in srgb,#fff 72%,var(--deep));
    box-shadow:var(--shadow-lg)
}
.price-card.is-featured h3,.price-card.is-featured li,.price-card.is-featured .pcard-price b,.price-card.is-featured .pcard-price .money{
    color:#fff
}
.price-card.is-featured li i{
    color:var(--brand-2)
}
.price-card.is-featured>p,.price-card.is-featured .pcard-price span{
    color:color-mix(in srgb,#fff 65%,var(--deep))
}
.plan-tag{
    position:absolute;
    top:-.85rem;
    left:1.75rem;
    padding:.3rem .8rem;
    border-radius:99px;
    background:var(--brand-2);
    color:#1d1408;
    font-size:.75rem;
    font-weight:800
}
/* Deal card with countdown: data-countdown="2026-12-31T23:59:59" on .countdown */
.deal-card{
    position:relative;
    display:grid;
    grid-template-columns:1fr 1fr;
    border-radius:var(--radius);
    overflow:hidden;
    background:var(--surface);
    border:1px solid var(--line)
}
.deal-card>img{
    width:100%;
    height:100%;
    object-fit:cover;
    min-height:280px
}
.deal-body{
    padding:clamp(1.5rem,3vw,2.5rem);
    display:flex;
    flex-direction:column;
    justify-content:center
}
.deal-off{
    display:inline-flex;
    align-items:baseline;
    gap:.25rem;
    font-family:var(--font-display);
    font-size:3.2rem;
    line-height:1;
    color:var(--brand-text);
    font-weight:500
}
.deal-off small{
    font-family:var(--font);
    font-size:1rem;
    font-weight:700;
    color:var(--muted)
}
.countdown{
    display:flex;
    gap:.5rem
}
.countdown span{
    display:flex;
    flex-direction:column;
    align-items:center;
    min-width:62px;
    padding:.55rem .4rem;
    border-radius:var(--radius-xs);
    background:var(--deep);
    color:#fff;
    font-size:.66rem;
    text-transform:uppercase;
    letter-spacing:.1em;
    font-weight:700
}
.countdown b{
    font-family:var(--font-display);
    font-size:1.6rem;
    font-weight:500;
    letter-spacing:0;
    line-height:1.1
}
[data-bs-theme="dark"] .countdown span{
    background:var(--tint)
}
@media (max-width:767.98px){
    .deal-card{
        grid-template-columns:1fr
    }
}

/* 16 CTA bands & app band --------------------------------------------------------- */
.cta-band{
    position:relative;
    overflow:hidden;
    border-radius:calc(var(--radius) + 10px);
    padding:clamp(2.5rem,6vw,4.5rem);
    color:#fff;
    isolation:isolate
}
.cta-band>img.cta-bg{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    object-fit:cover;
    z-index:-2
}
.cta-band::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:-1;
    background:linear-gradient(100deg,color-mix(in srgb,var(--deep) 90%,transparent) 20%,color-mix(in srgb,var(--deep) 30%,transparent))
}
.cta-band h2{
    color:#fff;
    font-size:clamp(2rem,1.4rem + 2.4vw,3.3rem);
    font-weight:500
}
.cta-band h2 em{
    color:var(--brand-2)
}
.cta-band p{
    color:rgba(255,255,255,.85);
    max-width:540px
}
.cta-band .stamp{
    position:absolute;
    right:clamp(1rem,4vw,3rem);
    top:clamp(1rem,4vw,2.5rem);
    width:140px;
    height:140px
}
.app-band{
    display:grid;
    grid-template-columns:1.1fr .9fr;
    gap:2rem;
    align-items:center;
    padding:clamp(2rem,5vw,3.5rem);
    border-radius:calc(var(--radius) + 10px);
    background:var(--brand);
    color:var(--on-brand);
    overflow:hidden;
    position:relative
}
.app-band h2{
    color:var(--on-brand)
}
.store-btn{
    display:inline-flex;
    align-items:center;
    gap:.7rem;
    padding:.6rem 1.1rem;
    border-radius:14px;
    background:#111;
    color:#fff;
    line-height:1.1
}
.store-btn i{
    font-size:1.6rem
}
.store-btn small{
    display:block;
    font-size:.68rem;
    opacity:.75
}
.store-btn b{
    font-size:1rem
}
.store-btn:hover{
    color:#fff;
    background:#000;
    transform:translateY(-2px)
}
@media (max-width:767.98px){
    .app-band{
        grid-template-columns:1fr
    }
}

/* 17 FAQ, tabs, itinerary, timeline --------------------------------------------------- */
.faq .accordion-item{
    border:0;
    border-bottom:1px dashed var(--line);
    background:transparent
}
.faq .accordion-button{
    padding:1.2rem 0;
    background:transparent;
    box-shadow:none;
    font-family:var(--font-display);
    font-size:1.18rem;
    font-weight:500;
    color:var(--ink)
}
.faq .accordion-button::after{
    background-image:none;
    content:"\F64D";
    font-family:bootstrap-icons;
    width:34px;
    height:34px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:var(--sand);
    color:var(--brand-text);
    font-size:1rem;
    transform:none;
    transition:transform .3s,background .3s
}
.faq .accordion-button:not(.collapsed)::after{
    transform:rotate(45deg);
    background:var(--brand);
    color:var(--on-brand)
}
.faq .accordion-body{
    padding:0 3rem 1.3rem 0;
    color:var(--muted)
}
.pill-tabs{
    display:inline-flex;
    flex-wrap:wrap;
    gap:.3rem;
    padding:.3rem;
    border-radius:99px;
    background:var(--surface);
    border:1px solid var(--line)
}
.pill-tabs button,.pill-tabs a{
    border:0;
    background:transparent;
    padding:.5rem 1.05rem;
    border-radius:99px;
    font-weight:700;
    font-size:.9rem;
    color:var(--muted)
}
.pill-tabs .active,.pill-tabs [aria-selected="true"]{
    background:var(--deep);
    color:#fff
}
[data-bs-theme="dark"] .pill-tabs .active,[data-bs-theme="dark"] .pill-tabs [aria-selected="true"]{
    background:var(--ink);
    color:var(--deep)
}
.filter-chips{
    display:flex;
    flex-wrap:wrap;
    gap:.45rem
}
.filter-chips button{
    border:1.5px solid var(--line);
    background:var(--surface);
    color:var(--ink);
    border-radius:99px;
    padding:.45rem 1rem;
    font-weight:700;
    font-size:.88rem;
    transition:all .2s
}
.filter-chips button:hover{
    border-color:var(--brand)
}
.filter-chips button.active{
    background:var(--brand);
    border-color:var(--brand);
    color:var(--on-brand)
}
.is-filtered-out{
    display:none!important
}
/* Day-by-day itinerary: <ol class="itinerary"><li><details>... */
.itinerary{
    list-style:none;
    margin:0;
    padding:0;
    position:relative
}
.itinerary::before{
    content:"";
    position:absolute;
    left:23px;
    top:14px;
    bottom:14px;
    border-left:2px dashed var(--line)
}
.itinerary>li{
    position:relative;
    padding-left:4rem;
    padding-bottom:1rem
}
.it-day{
    position:absolute;
    left:0;
    top:0;
    width:48px;
    height:48px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    border-radius:50%;
    background:var(--surface);
    border:2px solid var(--brand);
    color:var(--brand-text);
    font-size:.58rem;
    font-weight:800;
    letter-spacing:.08em;
    text-transform:uppercase;
    line-height:1
}
.it-day b{
    font-family:var(--font-display);
    font-size:1.2rem;
    letter-spacing:0;
    color:var(--ink)
}
.itinerary details{
    border-radius:var(--radius-sm);
    background:var(--surface);
    border:1px solid var(--line)
}
.itinerary summary{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    padding:.85rem 1.1rem;
    list-style:none;
    cursor:pointer;
    font-family:var(--font-display);
    font-size:1.12rem;
    color:var(--ink)
}
.itinerary summary::-webkit-details-marker{
    display:none
}
.itinerary summary::after{
    content:"\F282";
    font-family:bootstrap-icons;
    font-size:.85rem;
    color:var(--muted);
    transition:transform .25s
}
.itinerary details[open] summary::after{
    transform:rotate(180deg)
}
.itinerary details>div{
    padding:0 1.1rem 1.1rem;
    color:var(--muted)
}
.it-tags{
    display:flex;
    flex-wrap:wrap;
    gap:.4rem;
    margin-top:.6rem
}
.it-tags span{
    display:inline-flex;
    align-items:center;
    gap:.3rem;
    padding:.2rem .6rem;
    border-radius:99px;
    background:var(--tint);
    font-size:.78rem;
    font-weight:700;
    color:var(--ink)
}
.timeline{
    list-style:none;
    position:relative;
    margin:0;
    padding:0
}
.timeline::before{
    content:"";
    position:absolute;
    left:23px;
    top:10px;
    bottom:10px;
    border-left:2px dashed var(--line)
}
.timeline li{
    position:relative;
    display:flex;
    gap:1.25rem;
    padding:0 0 1.75rem
}
.tl-dot{
    flex:none;
    position:relative;
    z-index:1;
    width:48px;
    height:48px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:var(--brand);
    color:var(--on-brand);
    font-weight:800;
    font-size:.95rem;
    box-shadow:0 0 0 6px var(--bg)
}
.timeline h3{
    font-size:1.15rem;
    margin:.6rem 0 .3rem
}
.timeline p{
    margin:0;
    color:var(--muted)
}

/* 18 Inner pages: page hero, sidebar, filters, toolbar --------------------------------- */
.page-hero{
    position:relative;
    isolation:isolate;
    overflow:hidden;
    padding:clamp(4rem,9vw,7rem) 0 clamp(3.5rem,7vw,5.5rem);
    color:#fff;
    text-align:center
}
.page-hero>img{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    object-fit:cover;
    z-index:-2
}
.page-hero::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:-1;
    background:linear-gradient(180deg,rgba(10,16,15,.55),rgba(10,16,15,.62))
}
.page-hero h1{
    color:#fff;
    font-size:clamp(2.4rem,1.6rem + 3vw,4.2rem);
    font-weight:500;
    margin:.6rem 0 .7rem
}
.page-hero h1 em{
    color:var(--brand-2)
}
.page-hero p{
    color:rgba(255,255,255,.88);
    max-width:620px;
    margin:0 auto;
    font-size:1.06rem
}
.page-hero.is-plain{
    background:var(--sand);
    color:var(--text)
}
.page-hero.is-plain::before{
    display:none
}
.page-hero.is-plain h1{
    color:var(--ink)
}
.page-hero.is-plain h1 em{
    color:var(--brand-text)
}
.page-hero.is-plain p{
    color:var(--muted)
}
.crumbs{
    display:inline-flex;
    flex-wrap:wrap;
    justify-content:center;
    gap:.4rem;
    margin:0;
    padding:.4rem 1rem;
    list-style:none;
    border-radius:99px;
    background:rgba(255,255,255,.14);
    border:1px solid rgba(255,255,255,.22);
    backdrop-filter:blur(6px);
    -webkit-backdrop-filter:blur(6px);
    font-size:.85rem;
    font-weight:600
}
.crumbs li+li::before{
    content:"/";
    margin-right:.4rem;
    opacity:.6
}
.crumbs a{
    color:#fff
}
.crumbs [aria-current]{
    color:var(--brand-2)
}
.page-hero.is-plain .crumbs{
    background:var(--surface);
    border-color:var(--line)
}
.page-hero.is-plain .crumbs a{
    color:var(--ink)
}
.page-hero.is-plain .crumbs [aria-current]{
    color:var(--brand-text)
}
.widget{
    padding:1.4rem;
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line)
}
.widget+.widget{
    margin-top:1.25rem
}
.widget-title{
    font-size:1.12rem;
    margin:0 0 1rem;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:.5rem
}
.filter-group+.filter-group{
    margin-top:1.1rem;
    padding-top:1.1rem;
    border-top:1px dashed var(--line)
}
.filter-group h3,.filter-title{
    font-family:var(--font);
    font-size:.76rem;
    font-weight:800;
    letter-spacing:.12em;
    text-transform:uppercase;
    color:var(--muted);
    margin:0 0 .65rem
}
.filter-group .form-check{
    margin-bottom:.35rem
}
.filter-group .form-check-label{
    display:flex;
    justify-content:space-between;
    gap:.5rem;
    width:100%;
    font-size:.92rem;
    color:var(--ink);
    font-weight:600
}
.filter-group .form-check-label small{
    color:var(--muted);
    font-weight:600
}
.range-out{
    display:flex;
    justify-content:space-between;
    font-size:.85rem;
    font-weight:700;
    color:var(--ink)
}
.toolbar{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    justify-content:space-between;
    gap:.75rem;
    margin-bottom:1.5rem;
    padding:.6rem .6rem .6rem 1.1rem;
    border-radius:99px;
    background:var(--surface);
    border:1px solid var(--line)
}
.toolbar p{
    margin:0;
    font-size:.92rem
}
.toolbar p b{
    color:var(--ink)
}
.toolbar .form-select{
    width:auto;
    border-radius:99px;
    padding-block:.45rem;
    font-size:.9rem;
    font-weight:600
}
.view-btns{
    display:inline-flex;
    gap:.25rem
}
.view-btns button{
    width:40px;
    height:40px;
    border-radius:50%;
    border:1.5px solid var(--line);
    background:var(--surface);
    color:var(--muted)
}
.view-btns button.active{
    border-color:var(--brand);
    color:var(--brand-text);
    background:var(--brand-soft)
}
.filter-empty,.list-empty{
    padding:2.5rem 1rem;
    text-align:center;
    border-radius:var(--radius);
    border:2px dashed var(--line);
    color:var(--muted)
}
.filter-empty i,.list-empty i{
    display:block;
    font-size:2.2rem;
    color:var(--brand-text);
    margin-bottom:.5rem
}
.pager{
    display:flex;
    justify-content:center;
    gap:.4rem;
    margin-top:2.5rem
}
.pager a,.pager span{
    min-width:44px;
    height:44px;
    display:grid;
    place-items:center;
    padding:0 .5rem;
    border-radius:50%;
    border:1.5px solid var(--line);
    color:var(--ink);
    font-weight:700;
    background:var(--surface)
}
.pager .active{
    background:var(--brand);
    border-color:var(--brand);
    color:var(--on-brand)
}
.pager a:hover{
    border-color:var(--brand)
}
.filters-toggle{
    display:none
}
@media (max-width:991.98px){
    .filters-toggle{
        display:inline-flex
    }
    .filters-panel{
        display:none
    }
    .filters-panel.is-open{
        display:block
    }
}
.content-body{
    font-size:1.04rem
}
.content-body h2{
    font-size:clamp(1.6rem,1.3rem + 1vw,2.1rem);
    margin:2.2rem 0 .9rem;
    font-weight:500
}
.content-body h3{
    font-size:1.35rem;
    margin:1.8rem 0 .7rem
}
.content-body p,.content-body li{
    color:var(--text)
}
.content-body img{
    border-radius:var(--radius)
}
.content-body blockquote{
    margin:2rem 0;
    padding:1.5rem 1.75rem;
    border-left:4px solid var(--brand-2);
    border-radius:0 var(--radius) var(--radius) 0;
    background:var(--sand);
    font-family:var(--font-display);
    font-size:1.3rem;
    font-style:italic;
    color:var(--ink)
}
.info-box{
    display:flex;
    gap:.9rem;
    padding:1rem 1.2rem;
    border-radius:var(--radius-sm);
    background:var(--accent-soft);
    color:var(--ink);
    font-size:.94rem
}
.info-box>i{
    color:var(--accent-text);
    font-size:1.3rem;
    line-height:1.4
}
.info-box.is-warm{
    background:var(--brand-2-soft)
}
.info-box.is-warm>i{
    color:var(--brand-2-text)
}
/* Booking box (tour details, room details): [data-trip-calc] / [data-stay-calc] in main.js */
.book-box{
    position:sticky;
    top:calc(var(--header-h) + 1.25rem);
    padding:1.5rem;
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line);
    box-shadow:var(--shadow)
}
.bb-price{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:.5rem;
    padding-bottom:1rem;
    margin-bottom:1rem;
    border-bottom:1px dashed var(--line)
}
.bb-price .money{
    font-family:var(--font-display);
    font-size:2rem;
    color:var(--ink);
    font-weight:500
}
.bb-lines{
    list-style:none;
    margin:1rem 0;
    padding:1rem 0 0;
    border-top:1px dashed var(--line);
    font-size:.92rem
}
.bb-lines li{
    display:flex;
    justify-content:space-between;
    gap:1rem;
    padding:.25rem 0
}
.bb-lines li.is-total{
    margin-top:.5rem;
    padding-top:.75rem;
    border-top:1px solid var(--line);
    font-weight:800;
    color:var(--ink);
    font-size:1.05rem
}
.bb-lines li.is-discount{
    color:var(--accent-text)
}
.travellers{
    display:grid;
    gap:.5rem
}
.travellers .tg-row{
    padding:.35rem 0
}
.extras-list label{
    display:flex;
    align-items:center;
    gap:.6rem;
    padding:.55rem .75rem;
    border:1px solid var(--line);
    border-radius:var(--radius-xs);
    font-size:.9rem;
    color:var(--ink);
    cursor:pointer
}
.extras-list label+label{
    margin-top:.4rem
}
.extras-list label span{
    margin-left:auto;
    color:var(--muted);
    font-weight:700;
    font-size:.85rem
}
.extras-list input:checked~span{
    color:var(--brand-text)
}
.dates-table{
    width:100%;
    border-collapse:separate;
    border-spacing:0 .5rem
}
.dates-table td,.dates-table th{
    padding:.85rem 1rem;
    background:var(--surface);
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line)
}
.dates-table th{
    background:transparent;
    border:0;
    padding-block:.2rem;
    font-size:.74rem;
    text-transform:uppercase;
    letter-spacing:.12em;
    color:var(--muted)
}
.dates-table td:first-child{
    border-left:1px solid var(--line);
    border-radius:var(--radius-sm) 0 0 var(--radius-sm)
}
.dates-table td:last-child{
    border-right:1px solid var(--line);
    border-radius:0 var(--radius-sm) var(--radius-sm) 0;
    text-align:right
}
.seats{
    display:inline-flex;
    align-items:center;
    gap:.35rem;
    font-weight:700;
    font-size:.85rem
}
.seats::before{
    content:"";
    width:8px;
    height:8px;
    border-radius:50%;
    background:var(--accent)
}
.seats.is-low::before{
    background:var(--brand-2)
}
.seats.is-full{
    color:var(--muted)
}
.seats.is-full::before{
    background:var(--muted)
}
.gallery-mosaic{
    display:grid;
    grid-template-columns:2fr 1fr 1fr;
    grid-template-rows:repeat(2,minmax(0,1fr));
    gap:.6rem;
    height:clamp(320px,46vw,520px)
}
.gallery-mosaic a{
    position:relative;
    display:block;
    border-radius:var(--radius-sm);
    overflow:hidden
}
.gallery-mosaic a:first-child{
    grid-row:1/3;
    border-radius:var(--radius) var(--radius-sm) var(--radius-sm) var(--radius)
}
.gallery-mosaic img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .7s
}
.gallery-mosaic a:hover img{
    transform:scale(1.05)
}
.gm-more{
    position:absolute;
    inset:0;
    display:grid;
    place-items:center;
    background:rgba(10,16,15,.5);
    color:#fff;
    font-weight:800
}
@media (max-width:767.98px){
    .gallery-mosaic{
        grid-template-columns:1fr 1fr;
        height:auto
    }
    .gallery-mosaic a{
        aspect-ratio:1
    }
    .gallery-mosaic a:first-child{
        grid-column:1/-1;
        grid-row:auto;
        aspect-ratio:16/10
    }
}
.facts-bar{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
    gap:.75rem
}
.fact{
    display:flex;
    align-items:center;
    gap:.75rem;
    padding:.9rem 1rem;
    border-radius:var(--radius-sm);
    background:var(--surface);
    border:1px solid var(--line)
}
.fact i{
    width:42px;
    height:42px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:var(--sand);
    color:var(--brand-text);
    font-size:1.1rem;
    flex:none
}
.fact small{
    display:block;
    font-size:.7rem;
    text-transform:uppercase;
    letter-spacing:.1em;
    font-weight:800;
    color:var(--muted)
}
.fact b{
    color:var(--ink);
    font-size:.98rem
}
.map-card{
    position:relative;
    border-radius:var(--radius);
    overflow:hidden;
    border:1px solid var(--line);
    background:var(--tint);
    min-height:380px
}
.map-card iframe{
    display:block;
    width:100%;
    height:100%;
    min-height:380px;
    border:0;
    filter:saturate(.8) sepia(.12)
}
[data-bs-theme="dark"] .map-card iframe{
    filter:invert(.9) hue-rotate(180deg) saturate(.5)
}
.map-pin{
    position:absolute;
    left:1rem;
    bottom:1rem;
    display:flex;
    flex-direction:column;
    padding:1rem 1.25rem;
    border-radius:16px;
    background:var(--surface);
    box-shadow:var(--shadow);
    max-width:300px
}
.map-pin strong{
    color:var(--ink)
}
.map-pin span{
    font-size:.9rem;
    color:var(--muted)
}

/* 19 Shop, cart, checkout, account ---------------------------------------------- */
.product-card{
    height:100%;
    display:flex;
    flex-direction:column;
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line);
    overflow:hidden;
    transition:transform .3s,box-shadow .3s
}
.product-card:hover{
    transform:translateY(-5px);
    box-shadow:var(--shadow)
}
.pr-img{
    position:relative;
    aspect-ratio:1;
    overflow:hidden;
    background:var(--sand)
}
.pr-img img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .7s
}
.product-card:hover .pr-img img{
    transform:scale(1.05)
}
.pr-quick{
    position:absolute;
    left:50%;
    bottom:1rem;
    z-index:2;
    display:inline-flex;
    align-items:center;
    gap:.4rem;
    padding:.45rem .9rem;
    border:0;
    border-radius:99px;
    background:var(--surface);
    color:var(--ink);
    font-size:.82rem;
    font-weight:700;
    box-shadow:var(--shadow-sm);
    opacity:0;
    transform:translate(-50%,8px);
    transition:opacity .25s,transform .25s
}
.product-card:hover .pr-quick,.pr-quick:focus-visible{
    opacity:1;
    transform:translate(-50%,0)
}
@media (hover:none){
    .pr-quick{
        opacity:1;
        transform:translate(-50%,0)
    }
}
.pr-body{
    padding:1.1rem 1.25rem .4rem;
    flex:1
}
.pr-cat{
    font-size:.72rem;
    font-weight:800;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--brand-text)
}
.pr-body h3{
    font-size:1.12rem;
    margin:.3rem 0 .4rem
}
.pr-body h3 a{
    color:var(--ink)
}
.pr-text{
    font-size:.88rem;
    color:var(--muted);
    margin-bottom:.5rem
}
.pr-foot{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:.5rem;
    padding:.9rem 1.25rem 1.2rem
}
.pr-price{
    display:flex;
    align-items:baseline;
    gap:.4rem
}
.pr-price b{
    color:var(--ink);
    font-size:1.12rem
}
.pr-price del{
    color:var(--muted);
    font-size:.85rem
}
.shop-grid.is-list>div{
    flex:0 0 100%;
    max-width:100%
}
.shop-grid.is-list .product-card{
    flex-direction:row
}
.shop-grid.is-list .pr-img{
    width:220px;
    flex:none
}
.shop-grid.is-list .pr-foot{
    flex-direction:column;
    justify-content:center;
    align-items:flex-end;
    border-left:1px dashed var(--line)
}
@media (max-width:575.98px){
    .shop-grid.is-list .product-card{
        flex-direction:column
    }
    .shop-grid.is-list .pr-img{
        width:100%
    }
}
.ct-table{
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line);
    overflow:hidden
}
.ct-head,.ct-row{
    display:grid;
    grid-template-columns:2.4fr 1fr 1.2fr 1fr 48px;
    gap:1rem;
    align-items:center;
    padding:1rem 1.25rem
}
.ct-head{
    background:var(--tint);
    font-size:.74rem;
    text-transform:uppercase;
    letter-spacing:.1em;
    font-weight:800;
    color:var(--muted)
}
.ct-row+.ct-row{
    border-top:1px dashed var(--line)
}
.ct-prod{
    display:flex;
    align-items:center;
    gap:.9rem;
    min-width:0
}
.ct-prod img{
    border-radius:var(--radius-xs);
    object-fit:cover;
    flex:none
}
.ct-prod strong{
    display:block;
    color:var(--ink);
    line-height:1.3
}
.ct-prod small{
    color:var(--muted);
    font-size:.82rem
}
.ct-total{
    font-weight:800;
    color:var(--ink)
}
.ct-wish{
    grid-template-columns:2.4fr 1fr 1fr 1.6fr
}
.ct-actions{
    display:flex;
    gap:.4rem;
    justify-content:flex-end
}
@media (max-width:767.98px){
    .ct-head{
        display:none
    }
    .ct-row,.ct-wish{
        grid-template-columns:1fr auto;
        gap:.5rem 1rem
    }
    .ct-prod{
        grid-column:1/-1
    }
    .ct-row [data-label]::before{
        content:attr(data-label) ": ";
        color:var(--muted);
        font-weight:600;
        font-size:.82rem
    }
}
.mc-remove{
    width:36px;
    height:36px;
    display:grid;
    place-items:center;
    border:0;
    border-radius:50%;
    background:var(--tint);
    color:var(--muted)
}
.mc-remove:hover{
    background:#fde8e6;
    color:#b42318
}
.totals{
    list-style:none;
    margin:0;
    padding:0
}
.totals li{
    display:flex;
    justify-content:space-between;
    gap:1rem;
    padding:.5rem 0;
    font-size:.95rem
}
.totals li+li{
    border-top:1px dashed var(--line)
}
.totals li.is-total{
    font-size:1.15rem;
    font-weight:800;
    color:var(--ink)
}
.totals li.is-discount{
    color:var(--accent-text)
}
.coupon-msg{
    font-size:.86rem;
    margin:.5rem 0 0;
    font-weight:600
}
.coupon-msg.is-ok{
    color:var(--accent-text)
}
.coupon-msg.is-err{
    color:#b42318
}
.pay-option{
    display:flex;
    align-items:center;
    gap:.75rem;
    padding:.9rem 1rem;
    border:1.5px solid var(--line);
    border-radius:var(--radius-sm);
    cursor:pointer;
    background:var(--surface)
}
.pay-option+.pay-option{
    margin-top:.5rem
}
.pay-option:has(input:checked){
    border-color:var(--brand);
    background:var(--brand-soft)
}
.pay-option b{
    color:var(--ink)
}
.pay-option small{
    display:block;
    color:var(--muted);
    font-size:.82rem
}
.pay-option i{
    margin-left:auto;
    font-size:1.3rem;
    color:var(--muted)
}
.co-items{
    list-style:none;
    margin:0;
    padding:0
}
.co-items li{
    display:flex;
    align-items:center;
    gap:.8rem;
    padding:.6rem 0
}
.co-items li+li{
    border-top:1px dashed var(--line)
}
.co-items img{
    border-radius:var(--radius-xs);
    object-fit:cover
}
.co-items strong{
    display:block;
    color:var(--ink);
    font-size:.92rem;
    line-height:1.3
}
.co-items small{
    color:var(--muted)
}
.co-items b{
    margin-left:auto;
    color:var(--ink)
}
.acc-nav{
    display:flex;
    flex-direction:column;
    gap:.2rem
}
.acc-nav a{
    display:flex;
    align-items:center;
    gap:.7rem;
    padding:.7rem .9rem;
    border-radius:var(--radius-xs);
    color:var(--ink);
    font-weight:600
}
.acc-nav a:hover{
    background:var(--tint)
}
.acc-nav a.active{
    background:var(--brand-soft);
    color:var(--brand-text)
}
[data-acc-pane]{
    display:none
}
[data-acc-pane].is-active{
    display:block
}
.qv-modal .modal-content{
    border:0;
    border-radius:var(--radius);
    overflow:hidden;
    background:var(--surface)
}
.qv-modal .btn-close{
    position:absolute;
    top:1rem;
    right:1rem;
    z-index:2;
    background-color:var(--surface);
    border-radius:50%;
    padding:.6rem
}
.qv-img img{
    width:100%;
    height:100%;
    object-fit:cover;
    aspect-ratio:1
}
.qv-body{
    padding:2rem
}
.qv-body h2{
    font-size:1.6rem;
    margin:.4rem 0
}
.qv-price{
    font-size:1.4rem;
    margin:.6rem 0
}
.qv-price b{
    color:var(--ink)
}
.qv-buy{
    display:flex;
    gap:.6rem;
    margin:1rem 0
}
.qv-perks{
    display:grid;
    gap:.35rem;
    font-size:.88rem;
    color:var(--muted)
}
.qv-perks i{
    color:var(--accent-text);
    margin-right:.4rem
}
.qv-more{
    display:inline-block;
    margin-top:1rem;
    font-weight:700
}
.sticky-atc{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:1024;
    padding:.7rem 0;
    background:var(--surface);
    border-top:1px solid var(--line);
    box-shadow:0 -12px 30px -18px color-mix(in srgb,var(--deep) 45%,transparent);
    transform:translateY(110%);
    transition:transform .35s
}
.sticky-atc.is-on{
    transform:none
}
.sticky-atc img{
    border-radius:var(--radius-xs);
    object-fit:cover
}
.satc-name{
    flex:1;
    min-width:0
}
.satc-name strong{
    display:block;
    color:var(--ink);
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis
}
.satc-name small{
    color:var(--muted)
}
.satc-price{
    color:var(--ink);
    font-size:1.1rem
}

/* 20 Footer ---------------------------------------------------------------------- */
.site-footer{
    position:relative;
    background:var(--deep);
    color:color-mix(in srgb,#fff 66%,var(--deep));
    font-size:.95rem;
    margin-top:clamp(5rem,9vw,7rem)
}
.footer-news{
    position:relative;
    top:calc(-1 * clamp(3rem,6vw,4.5rem));
    margin-bottom:calc(-1 * clamp(3rem,6vw,4.5rem) + 1rem)
}
.fn-box{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:1.5rem 2.5rem;
    align-items:center;
    padding:clamp(1.75rem,4vw,2.75rem);
    border-radius:calc(var(--radius) + 8px);
    background:var(--brand-2);
    color:#2a1d0a;
    box-shadow:var(--shadow-lg);
    background-image:var(--grain)
}
.fn-copy .hand{
    color:#7a3d14
}
.fn-box h2{
    color:#1d1408;
    font-size:clamp(1.6rem,1.2rem + 1.4vw,2.3rem);
    font-weight:500;
    margin:.2rem 0 .4rem
}
.fn-box p{
    margin:0;
    color:#4b3818
}
.fn-form{
    display:flex;
    gap:.5rem;
    padding:.4rem;
    border-radius:99px;
    background:#fff
}
.fn-form .form-control{
    border:0;
    background:transparent;
    color:#1d1408;
    border-radius:99px;
    padding-left:1.1rem
}
.fn-form .form-control::placeholder{
    color:#8a7a62
}
.fn-form .form-control:focus{
    box-shadow:none
}
.fn-form .btn{
    flex:none
}
.fn-box .form-done{
    background:#fff;
    color:#1d1408
}
@media (max-width:767.98px){
    .fn-box{
        grid-template-columns:1fr
    }
    .fn-form{
        flex-wrap:wrap;
        border-radius:var(--radius)
    }
    .fn-form .btn{
        width:100%
    }
}
.footer-main{
    padding-top:2rem
}
.footer-title{
    font-family:var(--font);
    font-size:.78rem;
    font-weight:800;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:#fff;
    margin-bottom:1.1rem
}
.footer-links li{
    padding:.28rem 0
}
.footer-links a,.footer-contact a{
    color:color-mix(in srgb,#fff 80%,var(--deep))
}
.footer-links a:hover,.footer-contact a:hover{
    color:var(--brand-2)
}
.footer-contact li{
    display:flex;
    gap:.65rem;
    padding:.3rem 0
}
.footer-contact i{
    color:var(--brand-2)
}
.footer-social{
    display:flex;
    gap:.5rem;
    margin-top:1.25rem
}
.footer-social a{
    width:42px;
    height:42px;
    display:grid;
    place-items:center;
    border-radius:50%;
    border:1px solid rgba(255,255,255,.18);
    color:#fff;
    transition:background .2s,border-color .2s,color .2s
}
.footer-social a:hover{
    background:var(--brand-2);
    border-color:var(--brand-2);
    color:#1d1408
}
.footer-pay{
    display:flex;
    align-items:center;
    gap:.6rem;
    margin-top:1rem;
    color:#fff;
    font-size:1.3rem
}
.footer-pay span{
    font-size:.82rem;
    color:color-mix(in srgb,#fff 60%,var(--deep));
    margin-left:.25rem
}
.footer-bottom{
    display:flex;
    flex-wrap:wrap;
    justify-content:space-between;
    gap:.5rem 2rem;
    margin-top:3rem;
    padding:1.5rem 0;
    border-top:1px solid rgba(255,255,255,.1);
    font-size:.86rem
}
.footer-bottom p{
    margin:0
}
.footer-bottom a{
    color:color-mix(in srgb,#fff 80%,var(--deep))
}
.lp-footer{
    padding:2rem 0;
    background:var(--deep);
    color:color-mix(in srgb,#fff 66%,var(--deep));
    font-size:.9rem
}
.lp-footer p{
    margin:0
}
.lp-footer a{
    color:#fff
}

/* 21 Overlays: search, mini cart, popup, switcher, cookies -------------------------- */
.preloader{
    position:fixed;
    inset:0;
    z-index:2000;
    display:grid;
    place-items:center;
    background:var(--bg);
    transition:opacity .45s,visibility .45s
}
.preloader.is-done{
    opacity:0;
    visibility:hidden
}
.pl-mark .brand-mark{
    width:62px;
    height:62px;
    animation:plSpin 1.4s ease-in-out infinite
}
@keyframes plSpin{
    50%{
        transform:rotate(-12deg) scale(.9)
    }
}
.no-js .preloader{
    display:none
}
.search-modal .modal-content{
    border:0;
    border-radius:var(--radius);
    background:var(--surface);
    padding:1rem 1.25rem;
    box-shadow:var(--shadow-lg)
}
.search-modal form{
    display:flex;
    align-items:center;
    gap:.75rem
}
.search-modal form>i{
    font-size:1.4rem;
    color:var(--brand-text)
}
.search-modal .form-control{
    border:0;
    font-size:1.3rem;
    padding:.6rem 0;
    box-shadow:none;
    background:transparent
}
.search-hints{
    display:flex;
    flex-wrap:wrap;
    gap:.5rem;
    align-items:center;
    padding-top:.9rem;
    margin-top:.5rem;
    border-top:1px dashed var(--line);
    font-size:.88rem;
    color:var(--muted)
}
.search-hints a{
    padding:.25rem .75rem;
    border-radius:99px;
    background:var(--tint);
    color:var(--ink);
    font-weight:600
}
.search-hints a:hover{
    background:var(--brand-soft);
    color:var(--brand-text)
}
.search-live{
    margin-top:.75rem;
    border-top:1px dashed var(--line);
    padding-top:.5rem
}
.search-live ul{
    margin:0
}
.search-live li a{
    display:flex;
    align-items:center;
    gap:.75rem;
    padding:.55rem .5rem;
    border-radius:var(--radius-xs);
    color:var(--ink)
}
.search-live li a:hover{
    background:var(--tint)
}
.search-live li i{
    width:36px;
    height:36px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:var(--sand);
    color:var(--brand-text);
    flex:none
}
.search-live strong{
    display:block;
    font-size:.95rem
}
.search-live small{
    color:var(--muted);
    font-size:.8rem
}
.sl-empty{
    color:var(--muted);
    padding:.5rem
}
.sl-all{
    display:inline-flex;
    align-items:center;
    gap:.35rem;
    margin:.5rem;
    font-weight:700;
    font-size:.9rem
}
.news-popup .modal-content{
    border:0;
    border-radius:calc(var(--radius) + 4px);
    overflow:hidden;
    background:var(--surface)
}
.news-popup .btn-close{
    position:absolute;
    top:1rem;
    right:1rem;
    z-index:2;
    background-color:var(--surface);
    border-radius:50%;
    padding:.6rem;
    opacity:.9
}
.np-img{
    position:relative
}
.np-img img{
    width:100%;
    height:100%;
    object-fit:cover;
    min-height:240px
}
.np-stamp{
    position:absolute;
    right:-30px;
    bottom:1.5rem;
    color:#fff;
    width:110px;
    height:110px
}
.np-body{
    padding:clamp(1.75rem,4vw,2.75rem)
}
.np-body h2{
    font-size:1.9rem;
    margin:.7rem 0 .6rem;
    font-weight:500
}
.np-body p{
    color:var(--muted)
}
.np-body small{
    display:block;
    margin-top:.75rem;
    color:var(--muted)
}
.form-done{
    display:flex;
    align-items:center;
    gap:.6rem;
    padding:.85rem 1.1rem;
    border-radius:var(--radius-sm);
    background:var(--accent-soft);
    color:var(--ink);
    font-weight:600
}
.form-done i{
    color:var(--accent-text);
    font-size:1.25rem
}
/* "Sample data" tag on simulated widgets (availability, prices, weather). Remove it once real data is connected. */
.demo-tag{
    display:inline-block;
    margin-inline-start:.35rem;
    padding:.05rem .5rem;
    border:1px dashed currentColor;
    border-radius:99px;
    font-family:var(--font);
    font-size:.66rem;
    font-weight:700;
    letter-spacing:.06em;
    line-height:1.5;
    text-transform:uppercase;
    vertical-align:middle;
    white-space:nowrap
}
.mini-cart{
    --bs-offcanvas-width:min(400px,94vw);
    background:var(--bg)
}
.mc-ship{
    padding:.8rem 1rem;
    border-radius:var(--radius-sm);
    background:var(--sand);
    font-size:.86rem;
    margin-bottom:1rem
}
.mc-ship[hidden]{
    display:none
}
.mc-bar{
    height:6px;
    border-radius:9px;
    background:var(--surface);
    margin-top:.5rem;
    overflow:hidden
}
.mc-bar i{
    display:block;
    height:100%;
    width:0;
    background:var(--brand);
    border-radius:9px;
    transition:width .4s
}
.mc-items li{
    display:flex;
    align-items:center;
    gap:.8rem;
    padding:.75rem 0;
    border-bottom:1px dashed var(--line)
}
.mc-items img{
    border-radius:var(--radius-xs);
    object-fit:cover
}
.mc-items span{
    flex:1;
    min-width:0
}
.mc-items strong{
    display:block;
    color:var(--ink);
    font-size:.92rem;
    line-height:1.3
}
.mc-items small{
    color:var(--muted);
    font-size:.8rem
}
.mc-empty{
    text-align:center;
    padding:2.5rem 0;
    color:var(--muted)
}
.mc-empty i{
    font-size:2.6rem;
    color:var(--brand-text)
}
.mc-empty[hidden]{
    display:none
}
.mc-foot{
    padding:1.25rem;
    border-top:1px solid var(--line);
    background:var(--surface)
}
.mc-foot b{
    color:var(--ink)
}
.toast-c{
    position:fixed;
    left:50%;
    bottom:1.5rem;
    z-index:1090;
    display:flex;
    align-items:center;
    gap:.7rem;
    padding:.75rem 1rem .75rem 1.1rem;
    border-radius:99px;
    background:var(--deep);
    color:#fff;
    font-size:.92rem;
    font-weight:600;
    box-shadow:var(--shadow-lg);
    transform:translate(-50%,150%);
    transition:transform .35s cubic-bezier(.2,.7,.2,1);
    max-width:calc(100% - 2rem)
}
.toast-c.is-on{
    transform:translate(-50%,0)
}
.toast-c i{
    color:var(--brand-2);
    font-size:1.15rem
}
.toast-c a{
    color:var(--brand-2);
    text-decoration:underline;
    text-underline-offset:3px;
    margin-left:.25rem;
    white-space:nowrap
}
@media (max-width:575.98px){
    .toast-c{
        bottom:5.5rem
    }
}
.lightbox{
    position:fixed;
    inset:0;
    z-index:2100;
    display:none;
    align-items:center;
    justify-content:center;
    padding:4rem 1rem;
    background:rgba(8,10,10,.92)
}
.lightbox.is-open{
    display:flex
}
.lb-body{
    width:min(1100px,100%)
}
.lb-body figure{
    margin:0;
    text-align:center
}
.lb-body img{
    max-height:78vh;
    border-radius:var(--radius-sm)
}
.lb-body figcaption{
    color:#ddd;
    margin-top:.75rem;
    font-size:.92rem
}
.lb-btn{
    position:absolute;
    width:48px;
    height:48px;
    display:grid;
    place-items:center;
    border:0;
    border-radius:50%;
    background:rgba(255,255,255,.12);
    color:#fff;
    font-size:1.2rem
}
.lb-btn:hover{
    background:#fff;
    color:#111
}
.lb-close{
    top:1rem;
    right:1rem
}
.lb-prev{
    left:1rem;
    top:50%;
    margin-top:-24px
}
.lb-next{
    right:1rem;
    top:50%;
    margin-top:-24px
}
.to-top{
    position:fixed;
    right:1.25rem;
    bottom:1.25rem;
    z-index:1020;
    width:50px;
    height:50px;
    display:grid;
    place-items:center;
    border:0;
    border-radius:50%;
    background:var(--surface);
    color:var(--ink);
    font-size:1.1rem;
    box-shadow:var(--shadow);
    opacity:0;
    visibility:hidden;
    transform:translateY(10px);
    transition:opacity .3s,transform .3s,visibility .3s
}
.to-top svg{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    transform:rotate(-90deg)
}
.to-top circle{
    fill:none;
    stroke:var(--brand);
    stroke-width:2.5;
    stroke-dasharray:100;
    stroke-dashoffset:calc(100 - var(--progress,0));
    stroke-linecap:round
}
.to-top.is-visible{
    opacity:1;
    visibility:visible;
    transform:none
}
.mobile-cta{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:1025;
    display:grid;
    grid-template-columns:1fr 2fr;
    gap:.5rem;
    padding:.6rem .75rem calc(.6rem + env(safe-area-inset-bottom));
    background:var(--surface);
    border-top:1px solid var(--line);
    box-shadow:0 -8px 24px -12px color-mix(in srgb,var(--deep) 25%,transparent)
}
.mobile-cta a{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:.4rem;
    padding:.75rem;
    border-radius:99px;
    font-weight:700;
    color:var(--ink);
    border:1.5px solid var(--line)
}
.mobile-cta a.is-main{
    background:var(--brand);
    border-color:var(--brand);
    color:var(--on-brand)
}
@media (max-width:575.98px){
    body:not(.is-bare):not(.is-print-doc){
        padding-bottom:72px
    }
    .to-top{
        bottom:5.25rem
    }
}
.chat-float{
    position:fixed;
    left:1.25rem;
    bottom:1.25rem;
    z-index:1020;
    display:flex;
    align-items:center;
    gap:.5rem;
    height:50px;
    padding:0 1.1rem 0 .9rem;
    border-radius:99px;
    background:#1f9d55;
    color:#fff;
    font-weight:700;
    font-size:.9rem;
    box-shadow:0 12px 26px -10px rgba(31,157,85,.7);
    opacity:0;
    visibility:hidden;
    transform:translateY(10px);
    transition:opacity .3s,transform .3s,visibility .3s
}
.chat-float i{
    font-size:1.4rem
}
.chat-float:hover{
    color:#fff;
    background:#178a48
}
.chat-float.is-visible{
    opacity:1;
    visibility:visible;
    transform:none
}
@media (max-width:575.98px){
    .chat-float{
        bottom:5.25rem;
        left:.9rem;
        padding:0;
        width:50px;
        justify-content:center
    }
    .chat-float span{
        display:none
    }
}
.cookie-bar{
    position:fixed;
    left:50%;
    bottom:1.25rem;
    z-index:1040;
    transform:translateX(-50%);
    width:min(780px,calc(100% - 2rem));
    display:flex;
    align-items:center;
    gap:1rem;
    padding:1rem 1.25rem;
    border-radius:var(--radius);
    background:var(--surface);
    border:1px solid var(--line);
    box-shadow:var(--shadow-lg);
    font-size:.9rem
}
.cookie-bar[hidden]{
    display:none
}
.cookie-ico{
    width:48px;
    height:48px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:var(--brand-2-soft);
    color:var(--brand-2-text);
    font-size:1.4rem;
    flex:none
}
.cookie-bar p{
    margin:0;
    flex:1
}
.cookie-bar strong{
    color:var(--ink)
}
.cookie-actions{
    display:flex;
    flex-wrap:wrap;
    gap:.5rem;
    align-items:center
}
.cookie-set{
    color:var(--ink);
    text-decoration:underline;
    text-underline-offset:3px
}
.cookie-bar.is-open{
    flex-wrap:wrap
}
.cookie-bar.is-open>p{
    flex-basis:calc(100% - 4rem)
}
.cookie-prefs{
    flex-basis:100%;
    display:grid;
    gap:.5rem;
    grid-template-columns:repeat(3,1fr)
}
.cookie-prefs[hidden]{
    display:none
}
.cookie-cat{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:.75rem;
    padding:.7rem .85rem;
    border:1px solid var(--line);
    border-radius:var(--radius-sm);
    cursor:pointer;
    background:var(--tint)
}
.cookie-cat strong{
    display:block;
    color:var(--ink);
    font-size:.9rem
}
.cookie-cat small{
    display:block;
    color:var(--muted);
    font-size:.8rem;
    line-height:1.4
}
.cookie-cat .form-check-input{
    margin:0;
    cursor:pointer;
    flex:none
}
@media (max-width:767.98px){
    .cookie-prefs{
        grid-template-columns:1fr;
        max-height:40vh;
        overflow-y:auto
    }
    .cookie-bar{
        flex-wrap:wrap;
        bottom:5.25rem
    }
    .cookie-ico{
        display:none
    }
}
.switcher-toggle{
    position:fixed;
    right:0;
    top:40%;
    z-index:1045;
    width:48px;
    height:48px;
    border:0;
    border-radius:16px 0 0 16px;
    background:var(--deep);
    color:var(--brand-2);
    font-size:1.25rem;
    box-shadow:var(--shadow);
    display:grid;
    place-items:center;
    transition:right .35s cubic-bezier(.2,.7,.2,1)
}
.switcher-toggle[aria-expanded="true"]{
    right:290px
}
.switcher-toggle i{
    animation:spin 6s linear infinite
}
.switcher{
    position:fixed;
    right:0;
    top:50%;
    z-index:1046;
    width:290px;
    max-height:92vh;
    overflow:auto;
    padding:1.25rem;
    background:var(--surface);
    border:1px solid var(--line);
    border-right:0;
    border-radius:var(--radius) 0 0 var(--radius);
    box-shadow:var(--shadow-lg);
    transform:translate(105%,-50%);
    transition:transform .35s cubic-bezier(.2,.7,.2,1)
}
.switcher.is-open{
    transform:translate(0,-50%)
}
.switcher-title{
    font-family:var(--font-display);
    font-weight:600;
    font-size:1.25rem;
    color:var(--ink);
    margin:0
}
.switcher .lbl{
    font-size:.7rem;
    text-transform:uppercase;
    letter-spacing:.12em;
    font-weight:800;
    color:var(--muted);
    margin:1.1rem 0 .5rem
}
.swatches{
    display:grid;
    grid-template-columns:repeat(6,1fr);
    gap:.45rem
}
.swatches button{
    aspect-ratio:1;
    border-radius:50%;
    border:3px solid var(--surface);
    background:var(--sw);
    box-shadow:0 0 0 1px var(--line);
    transition:transform .2s
}
.swatches button:hover{
    transform:scale(1.1)
}
.swatches button.active{
    box-shadow:0 0 0 2px var(--ink)
}
.custom-color{
    display:flex;
    align-items:center;
    gap:.6rem;
    font-size:.9rem;
    font-weight:600;
    color:var(--ink);
    cursor:pointer
}
.custom-color input{
    width:38px;
    height:38px;
    border:1px solid var(--line);
    border-radius:10px;
    padding:2px;
    background:var(--surface);
    cursor:pointer
}
.mode-btns{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(70px,1fr));
    gap:.4rem
}
.mode-btns>*{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:.4rem;
    padding:.5rem;
    border:1.5px solid var(--line);
    border-radius:10px;
    background:var(--surface);
    color:var(--ink);
    font-size:.86rem;
    font-weight:700
}
.mode-btns>.active,.mode-btns>*:hover{
    border-color:var(--brand);
    color:var(--brand-text)
}
[data-bs-theme="light"] .mode-btns [data-mode="light"],[data-bs-theme="dark"] .mode-btns [data-mode="dark"],.mode-btns [data-radius].active{
    border-color:var(--brand);
    background:var(--brand-soft);
    color:var(--brand-text)
}

/* 22 Utilities, rails, chips, motion ------------------------------------------------- */
/* Horizontal rail (carousel): <div class="rail" data-rail> items </div> + buttons [data-rail-prev]/[data-rail-next] with data-target="#id" */
.rail{
    display:grid;
    grid-auto-flow:column;
    grid-auto-columns:var(--rail-w,minmax(280px,1fr));
    gap:var(--rail-gap,1.25rem);
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    scroll-padding-inline:2px;
    padding:4px 2px 1rem;
    scrollbar-width:thin;
    scrollbar-color:var(--line) transparent;
    overscroll-behavior-x:contain
}
.rail>*{
    scroll-snap-align:start
}
.rail::-webkit-scrollbar{
    height:6px
}
.rail::-webkit-scrollbar-thumb{
    background:var(--line);
    border-radius:9px
}
/* Rails with arrow buttons hide their scrollbar; overflow-y:hidden stops a second, vertical bar (the cards' shadows are taller than the rail). A rail without buttons keeps a slim bar so a mouse can scroll it. */
.rail{
    overflow-y:hidden;
    scrollbar-width:none
}
.rail::-webkit-scrollbar{
    display:none
}
.section:not(:has([data-rail-next])) .rail{
    scrollbar-width:thin
}
.section:not(:has([data-rail-next])) .rail::-webkit-scrollbar{
    display:block;
    height:6px
}
.table-responsive{
    overflow-y:hidden
}
.rail-4{
    --rail-w:calc((100% - 3 * 1.25rem) / 4)
}
.rail-3{
    --rail-w:calc((100% - 2 * 1.25rem) / 3)
}
@media (max-width:991.98px){
    .rail-4,.rail-3{
        --rail-w:calc((100% - 1.25rem) / 2.2)
    }
}
@media (max-width:575.98px){
    .rail-4,.rail-3{
        --rail-w:82%
    }
}
.rail-nav{
    display:flex;
    gap:.5rem
}
.rail-nav button{
    width:48px;
    height:48px;
    display:grid;
    place-items:center;
    border-radius:50%;
    border:1.5px solid var(--line);
    background:var(--surface);
    color:var(--ink);
    font-size:1.1rem;
    transition:all .2s
}
.rail-nav button:hover:not(:disabled){
    background:var(--deep);
    border-color:var(--deep);
    color:#fff
}
.rail-nav button:disabled{
    opacity:.4
}
.section-deep .rail-nav button{
    background:transparent;
    border-color:rgba(255,255,255,.25);
    color:#fff
}
.chip{
    display:inline-flex;
    align-items:center;
    gap:.35rem;
    padding:.25rem .7rem;
    border-radius:99px;
    font-size:.78rem;
    font-weight:700;
    background:var(--tint);
    color:var(--ink)
}
.chip-ok{
    background:var(--accent-soft);
    color:var(--accent-text)
}
.chip-warn{
    background:var(--brand-2-soft);
    color:var(--brand-2-text)
}
.chip-brand{
    background:var(--brand-soft);
    color:var(--brand-text)
}
.badge-soft{
    display:inline-block;
    padding:.3rem .75rem;
    border-radius:99px;
    background:var(--brand-soft);
    color:var(--brand-text);
    font-size:.78rem;
    font-weight:800
}
.img-cover{
    width:100%;
    height:100%;
    object-fit:cover
}
.rounded-xl{
    border-radius:var(--radius)!important
}
.shadow-soft{
    box-shadow:var(--shadow)
}
.bg-surface{
    background:var(--surface)
}
.border-dashed{
    border:1.5px dashed var(--line)!important
}
.ratio-photo{
    position:relative;
    border-radius:var(--radius);
    overflow:hidden;
    background:var(--sand)
}
.ratio-photo img{
    width:100%;
    height:100%;
    object-fit:cover
}
.video-btn{
    position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%,-50%);
    z-index:2
}
.reveal{
    opacity:0;
    transform:translateY(26px);
    transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)
}
.reveal.is-in{
    opacity:1;
    transform:none
}
.no-js .reveal{
    opacity:1;
    transform:none
}
.float-y{
    animation:floatY 6s ease-in-out infinite
}
@keyframes floatY{
    50%{
        transform:translateY(-12px)
    }
}
.marquee{
    overflow:hidden;
    white-space:nowrap;
    -webkit-mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
    mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)
}
.marquee-track{
    display:inline-flex;
    gap:3rem;
    animation:marquee 40s linear infinite;
    padding-right:3rem
}
.marquee:hover .marquee-track{
    animation-play-state:paused
}
@keyframes marquee{
    to{
        transform:translateX(-50%)
    }
}
@media (prefers-reduced-motion:reduce){
    html{
        scroll-behavior:auto
    }
    *,*::before,*::after{
        animation-duration:.01ms!important;
        animation-iteration-count:1!important;
        transition-duration:.01ms!important
    }
    .reveal{
        opacity:1;
        transform:none
    }
}
/* Bootstrap's g-5 gutter is wider than the container padding on phones; keep it inside */
@media (max-width:575.98px){
    .row.g-5,.row.gx-5{
        --bs-gutter-x:1.5rem
    }
    :root{
        --header-h:68px
    }
    .brand-name{
        font-size:1.4rem
    }
    .brand-mark{
        width:36px;
        height:36px
    }
}

/* 23 Dark mode details --------------------------------------------------------------- */
[data-bs-theme="dark"] .wish-btn{
    background:rgba(20,22,21,.85);
    color:#f4ede4
}
[data-bs-theme="dark"] .polaroid{
    background:#f4ede4
}
[data-bs-theme="dark"] .site-footer,[data-bs-theme="dark"] .topbar,[data-bs-theme="dark"] .lp-footer{
    background:color-mix(in srgb,var(--deep-base) 40%,#080a09)
}
[data-bs-theme="dark"] .section-deep{
    background:color-mix(in srgb,var(--deep-base) 45%,#090b0a)
}
[data-bs-theme="dark"] .tc-badge{
    color:#1d1408
}
[data-bs-theme="dark"] .mc-remove:hover{
    background:rgba(255,120,100,.15);
    color:#ff9d8f
}
[data-bs-theme="dark"] .btn-light{
    background:#f4ede4
}
[data-bs-theme="dark"] .form-select{
    --bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23cdc4b8' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")
}
[data-bs-theme="dark"] .stamp{
    color:var(--brand-2)
}

/* 24 Print ------------------------------------------------------------------------- */
@media print{
    .switcher,.switcher-toggle,.chat-float,.to-top,.cookie-bar,.mobile-cta,.preloader,.topbar,.site-header,.site-footer,.no-print{
        display:none!important
    }
    body{
        background:#fff;
        padding:0!important
    }
    .reveal{
        opacity:1!important;
        transform:none!important
    }
}

/* 25 Shared page overrides ---------------------------------------------------- */
/* Small adjustments of shared components that several page styles rely on. */
/* from account.css */
.it-tags{
    display:flex;
    flex-wrap:wrap;
    gap:.35rem
}
.it-tags a{
    color:inherit;
    text-decoration:underline;
    text-underline-offset:2px
}
@media (max-width:767.98px){
    .ct-head.ct-wish{
        display:none
    }
}
.hc-stars{
    display:flex;
    align-items:center;
    gap:.5rem;
    font-size:.85rem;
    color:var(--muted)
}
.hc-stars .stars{
    color:var(--brand-2-base)
}
@media print{
    html,body{
        background:#fff!important
    }
    .sticky-atc{
        display:none!important
    }
}
.shop-grid .product-card .pr-text{
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden
}
.shop-grid.is-list .pr-text{
    -webkit-line-clamp:unset
}
@media (max-width:575.98px){
    .toolbar{
        border-radius:var(--radius)
    }
}
@media (max-width:575.98px){
    body:has(.sticky-atc.is-on) .mobile-cta{
        display:none
    }
}
.sticky-atc .satc-name small{
    display:block
}
.ct-table .ct-row{
    min-height:96px
}
.co-items{
    max-height:340px;
    overflow:auto
}
.timeline h3{
    font-size:1.08rem
}
@media print{
    [data-order-page] .btn,[data-order-page] .d-grid{
        display:none!important
    }
}
@media (max-width:575.98px){
    .ct-row .ct-actions{
        grid-column:1/-1;
        justify-content:flex-start
    }
}
/* from company.css */
.section-deep .stat span{
    color:color-mix(in srgb,#fff 70%,var(--deep))
}
@media (max-width:575.98px){
    #expertGrid{
        --bs-gutter-x:.9rem
    }
}
@media (max-width:575.98px){
    .map-pin{
        right:1rem
    }
}
.feature-card h3 .chip{
    vertical-align:middle;
    font-family:var(--font);
    font-size:.7rem
}
/* from homes-18-24.css */
.section-deep .price-card:not(.is-featured) h3{
    color:var(--ink)
}
.hero-kicker b{
    white-space:nowrap
}
/* from homes-2-9.css */
@media (max-width:575.98px){
    [data-isl-grid]{
        --bs-gutter-x:.75rem;
        --bs-gutter-y:.75rem
    }
}
/* from hotel.css */
@media (max-width:991.98px){
    .book-box{
        position:static
    }
}
[data-cap-note]{
    white-space:nowrap
}
.section-deep .form-done{
    color:var(--ink)
}
.hero-photo .demo-tag{
    color:rgba(255,255,255,.8)
}
/* from tours.css */
.filter-group .form-check-label span{
    display:inline-flex;
    align-items:center;
    gap:.35rem
}
.filter-group .form-check-label i{
    color:var(--brand-text)
}
.range-out output{
    font-weight:800
}
.view-btns a{
    width:40px;
    height:40px;
    display:grid;
    place-items:center;
    border-radius:50%;
    border:1.5px solid var(--line);
    background:var(--surface);
    color:var(--muted)
}
.view-btns a:hover{
    border-color:var(--brand);
    color:var(--brand-text)
}
.view-btns a.active{
    border-color:var(--brand);
    color:var(--brand-text);
    background:var(--brand-soft)
}
@media (max-width:575.98px){
    .toolbar{
        border-radius:var(--radius-sm);
        padding:.6rem
    }
    .toolbar>div{
        width:100%
    }
    .toolbar .form-select{
        width:100%
    }
}
.dates-table td small{
    font-size:.8rem
}
.dates-table b{
    color:var(--ink)
}
.table-responsive .dates-table{
    min-width:560px
}
.book-box .form-label{
    margin-bottom:.35rem
}
@media (max-width:991.98px){
    .book-box{
        position:static
    }
}
.filter-chips button small{
    opacity:.65;
    font-weight:700;
    margin-left:.15rem
}
.dd-title{
    display:flex;
    flex-wrap:wrap;
    align-items:flex-end;
    gap:.25rem 1.25rem;
    color:#fff;
    font-size:clamp(4rem,2rem + 9vw,9.5rem);
    font-weight:500;
    line-height:.9;
    letter-spacing:-.04em;
    margin:0 0 1rem
}
.dd-title .hand{
    font-size:clamp(1.6rem,1.2rem + 1.5vw,2.4rem);
    color:var(--brand-2);
    transform:rotate(-4deg);
    margin-bottom:.8rem;
    letter-spacing:0
}
#hotelList,#tourList{
    display:grid;
    gap:1rem
}
#hotelList>.hotel-row,#tourList>.tour-row{
    margin:0
}
.review-card .score{
    margin-bottom:.75rem
}
#book,#stayBox{
    scroll-margin-top:calc(var(--header-h) + 1rem)
}
[data-video][hidden]{
    display:none!important
}
