/* =====================================================================
   Apartment Espoir – Room photo slider + full-screen viewer
   Used by apartment1.php … apartment10.php and palm.php
   Loaded once from index.php (works for menu navigation and reloads).
   ===================================================================== */

.room-slider{
    --rs-deep:#07566f;
    --rs-accent:#078f9d;
    --rs-green:#2ba98d;
    --rs-sun:#fff0b7;
    --rs-night:#06323f;
    margin:0 0 30px;
}

/* ---------- Main image ---------- */
.rs-stage{
    position:relative;
    aspect-ratio:16/10;
    border-radius:18px;
    overflow:hidden;
    background:var(--rs-night);
    box-shadow:0 14px 34px rgba(5,91,104,.18);
    cursor:zoom-in;
    touch-action:pan-y;              /* vertical page scroll stays native, horizontal swipe = slider */
    -webkit-user-select:none;
    user-select:none;
    -webkit-tap-highlight-color:transparent;
}
.rs-backdrop{
    position:absolute;
    inset:-40px;
    background-position:center;
    background-size:cover;
    filter:blur(28px) brightness(.5) saturate(1.2);
    transform:scale(1.1);
}
.rs-slide{
    position:absolute;
    inset:0;
    margin:0;
    opacity:0;
    transition:opacity .7s ease;
    pointer-events:none;
}
.rs-slide.is-active{opacity:1}
.rs-slide img{
    display:block;
    width:100%;
    height:100%;
    object-fit:contain;              /* portrait and landscape photos are never cropped */
}

/* Caption over the image */
.rs-caption{
    position:absolute;
    left:0;right:0;bottom:0;
    z-index:2;
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:14px;
    padding:54px 22px 20px;
    background:linear-gradient(to top,rgba(3,30,38,.85),rgba(3,30,38,.35) 55%,rgba(3,30,38,0));
    color:#fff;
    pointer-events:none;
}
.rs-caption-text{
    font-size:19px;
    font-weight:700;
    line-height:1.3;
    text-shadow:0 1px 3px rgba(0,0,0,.45);
}
.rs-counter{
    flex:0 0 auto;
    font-size:13px;
    font-weight:700;
    letter-spacing:.06em;
    color:var(--rs-sun);
    font-variant-numeric:tabular-nums;
}

/* Arrows */
.rs-arrow{
    position:absolute;
    top:50%;
    z-index:3;
    width:48px;height:48px;
    display:grid;place-items:center;
    padding:0;
    border:0;
    border-radius:50%;
    background:rgba(255,255,255,.9);
    color:var(--rs-deep);
    box-shadow:0 6px 18px rgba(0,0,0,.25);
    cursor:pointer;
    transform:translateY(-50%);
    transition:background .2s ease,transform .2s ease;
}
.rs-arrow:hover{background:#fff;transform:translateY(-50%) scale(1.07)}
.rs-arrow:focus-visible,.rs-zoom:focus-visible,.rs-thumb:focus-visible,.rs-thumbs-nav:focus-visible{outline:3px solid var(--rs-sun);outline-offset:2px}
.rs-prev{left:14px}
.rs-next{right:14px}
.rs-arrow svg{width:22px;height:22px}

/* Enlarge button (top right of the main image) */
.rs-zoom{
    position:absolute;
    top:12px;right:12px;
    z-index:3;
    width:40px;height:40px;
    display:grid;place-items:center;
    padding:0;
    border:0;
    border-radius:50%;
    background:rgba(3,30,38,.55);
    color:#fff;
    cursor:pointer;
    transition:background .2s ease;
}
.rs-zoom:hover{background:rgba(3,30,38,.8)}
.rs-zoom svg{width:19px;height:19px}

/* 5-second progress line */
.rs-progress{
    position:absolute;
    left:0;right:0;bottom:0;
    z-index:3;
    height:3px;
    background:rgba(255,255,255,.16);
}
.rs-progress span{
    display:block;
    width:100%;height:100%;
    background:var(--rs-sun);
    transform:scaleX(0);
    transform-origin:left center;
}
.rs-progress span.is-running{animation:rs-progress var(--rs-interval,5000ms) linear forwards}
@keyframes rs-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* ---------- Thumbnail strip ---------- */
.rs-thumbs-wrap{
    display:flex;
    align-items:center;
    gap:8px;
    margin-top:12px;
}
.rs-thumbs{
    position:relative;
    flex:1;
    min-width:0;
    display:flex;
    gap:10px;
    padding:5px 3px 9px;
    overflow-x:auto;
    scroll-behavior:smooth;
    scroll-snap-type:x proximity;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:thin;
    scrollbar-color:#b9dcd6 transparent;
}
.rs-thumbs::-webkit-scrollbar{height:6px}
.rs-thumbs::-webkit-scrollbar-thumb{background:#b9dcd6;border-radius:6px}
.rs-thumb{
    flex:0 0 auto;
    width:116px;height:78px;
    padding:0;
    border:0;
    border-radius:10px;
    overflow:hidden;
    background:#dcefeb;
    opacity:.58;
    cursor:pointer;
    scroll-snap-align:center;
    transition:opacity .2s ease,box-shadow .2s ease,transform .2s ease;
}
.rs-thumb:hover{opacity:.9}
.rs-thumb.is-active{
    opacity:1;
    box-shadow:0 0 0 3px var(--rs-accent);
}
.rs-thumb img{
    display:block;
    width:100%;height:100%;
    object-fit:cover;
    pointer-events:none;
}
.rs-thumbs-nav{
    flex:0 0 auto;
    width:34px;height:34px;
    display:grid;place-items:center;
    padding:0;
    border:1px solid #cfe6e1;
    border-radius:50%;
    background:#fff;
    color:var(--rs-deep);
    cursor:pointer;
    transition:background .2s ease;
}
.rs-thumbs-nav:hover{background:#eef8f6}
.rs-thumbs-nav svg{width:16px;height:16px}
@media (hover:none){ .rs-thumbs-nav{display:none} }   /* phones: swipe the strip instead */

/* ---------- Full-screen viewer ---------- */
.rs-lightbox{
    position:fixed;
    inset:0;
    z-index:1000000;
    display:none;
    align-items:center;
    justify-content:center;
    padding:64px 16px 24px;
    background:rgba(2,20,26,.95);
    touch-action:pan-y pinch-zoom;
    -webkit-user-select:none;
    user-select:none;
}
.rs-lightbox.is-open{display:flex}
.rs-lb-figure{
    margin:0;
    max-width:100%;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:14px;
}
.rs-lb-img{
    display:block;
    max-width:min(1500px,94vw);
    max-height:calc(100vh - 150px);
    max-height:calc(100dvh - 150px);
    object-fit:contain;
    border-radius:8px;
    box-shadow:0 30px 80px rgba(0,0,0,.5);
}
.rs-lightbox.is-open .rs-lb-img{animation:rs-zoom-in .28s ease-out}
.rs-lb-img.is-swapping{animation:rs-fade .3s ease-out}
@keyframes rs-zoom-in{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}
@keyframes rs-fade{from{opacity:.25}to{opacity:1}}
.rs-lb-caption{
    display:flex;
    align-items:baseline;
    justify-content:center;
    flex-wrap:wrap;
    gap:6px 16px;
    color:#fff;
    font-size:17px;
    font-weight:700;
    text-align:center;
}
.rs-lb-counter{font-size:13px;letter-spacing:.06em;color:#fff0b7;font-variant-numeric:tabular-nums}
.rs-lb-close,
.rs-lb-arrow{
    position:fixed;
    display:grid;place-items:center;
    padding:0;
    border:0;
    border-radius:50%;
    background:rgba(255,255,255,.14);
    color:#fff;
    cursor:pointer;
    transition:background .2s ease;
}
.rs-lb-close:hover,.rs-lb-arrow:hover{background:rgba(255,255,255,.28)}
.rs-lb-close:focus-visible,.rs-lb-arrow:focus-visible{outline:3px solid #fff0b7;outline-offset:2px}
.rs-lb-close{top:14px;right:14px;width:48px;height:48px}
.rs-lb-close svg{width:24px;height:24px}
.rs-lb-arrow{top:50%;width:52px;height:52px;transform:translateY(-50%)}
.rs-lb-prev{left:16px}
.rs-lb-next{right:16px}
.rs-lb-arrow svg{width:26px;height:26px}

/* ---------- Phones ---------- */
@media (max-width:600px){
    .rs-stage{aspect-ratio:4/3;border-radius:14px}
    .rs-caption{padding:44px 14px 14px}
    .rs-caption-text{font-size:15px}
    .rs-counter{font-size:12px}
    .rs-arrow{width:38px;height:38px;background:rgba(255,255,255,.82)}
    .rs-arrow svg{width:18px;height:18px}
    .rs-prev{left:8px}
    .rs-next{right:8px}
    .rs-zoom{width:36px;height:36px;top:9px;right:9px}
    .rs-thumb{width:86px;height:60px;border-radius:8px}
    .rs-thumbs{gap:8px}
    .rs-lightbox{padding:62px 8px 18px}
    .rs-lb-img{max-width:100%;max-height:calc(100vh - 140px);max-height:calc(100dvh - 140px);border-radius:4px}
    .rs-lb-arrow{width:42px;height:42px;top:auto;bottom:18px;transform:none}
    .rs-lb-prev{left:12px}
    .rs-lb-next{right:12px}
    .rs-lb-caption{font-size:15px;padding:0 54px}
    .rs-lb-close{top:10px;right:10px}
}

@media (prefers-reduced-motion:reduce){
    .rs-slide,.rs-thumb,.rs-arrow{transition:none}
    .rs-lightbox.is-open .rs-lb-img,.rs-lb-img.is-swapping{animation:none}
    .rs-thumbs{scroll-behavior:auto}
}

/* =====================================================================
   Click-to-enlarge images (Things-to-do map, footer resort map, …)
   Any <img data-zoomable> flies smoothly from its place to the centre;
   a click on the big image (or anywhere / ✕ / Esc) glides it back.
   ===================================================================== */
img[data-zoomable]{cursor:zoom-in}
.ez-view{
    position:fixed;
    inset:0;
    z-index:1000001;
    display:none;
    background:rgba(0,25,35,0);
    -webkit-backdrop-filter:blur(0);
    backdrop-filter:blur(0);
    transition:background .42s ease,backdrop-filter .42s ease,-webkit-backdrop-filter .42s ease;
    cursor:zoom-out;
    -webkit-tap-highlight-color:transparent;
}
.ez-view.is-visible{display:block}
.ez-view.is-open{
    background:rgba(0,25,35,.9);
    -webkit-backdrop-filter:blur(5px);
    backdrop-filter:blur(5px);
}
.ez-img{
    position:fixed;
    max-width:none!important;
    margin:0;
    border-radius:0;
    transform-origin:0 0;
    filter:drop-shadow(0 18px 45px rgba(0,0,0,.45));   /* follows the shape of transparent PNG maps */
    will-change:transform,opacity;
    cursor:zoom-out;
    -webkit-user-select:none;
    user-select:none;
}
.ez-close{
    position:fixed;
    top:14px;right:14px;
    width:48px;height:48px;
    display:grid;place-items:center;
    padding:0;
    border:0;
    border-radius:50%;
    background:rgba(255,255,255,.16);
    color:#fff;
    cursor:pointer;
    opacity:0;
    transition:opacity .3s ease,background .2s ease;
}
.ez-close svg{width:24px;height:24px}
.ez-close:hover{background:rgba(255,255,255,.3)}
.ez-close:focus-visible{outline:3px solid #fff0b7;outline-offset:2px}
.ez-hint{
    position:fixed;
    left:50%;bottom:14px;
    transform:translateX(-50%);
    padding:6px 14px;
    border-radius:999px;
    background:rgba(255,255,255,.12);
    color:#fff0b7;
    font:600 12px/1.3 'Segoe UI',system-ui,sans-serif;
    letter-spacing:.04em;
    white-space:nowrap;
    opacity:0;
    transition:opacity .3s ease;
    pointer-events:none;
}
.ez-view.is-open .ez-close{opacity:1}
.ez-view.is-open .ez-hint{opacity:.9}

/* Things-to-do map: subtle hover + "tap to enlarge" badge */
.ttd-island-map{position:relative}
.ttd-island-map img[data-zoomable]{transition:transform .3s ease}
.ttd-island-map img[data-zoomable]:hover{transform:scale(1.015)}
.ttd-zoom-badge{
    position:absolute;
    right:14px;bottom:14px;
    z-index:2;
    display:inline-flex;align-items:center;gap:7px;
    padding:7px 13px;
    border-radius:999px;
    background:rgba(7,86,111,.86);
    color:#fff;
    font-size:12px;font-weight:700;letter-spacing:.03em;
    box-shadow:0 6px 16px rgba(5,60,75,.25);
    pointer-events:none;
}
.ttd-island-map .ttd-zoom-badge svg{display:block;width:14px!important;height:14px!important;min-height:0!important;flex:0 0 14px}
@media (max-width:600px){
    .ez-close{top:10px;right:10px}
    .ttd-zoom-badge{right:9px;bottom:9px;padding:6px 10px;font-size:11px}
}
@media (prefers-reduced-motion:reduce){
    .ez-view,.ez-close,.ez-hint{transition:none}
}

/* =====================================================================
   Gallery pages (beach, pool, resort, vicinity) – Caribbean header
   ===================================================================== */
.ae-gallery-page{
    width:min(1100px,100%);
    margin:0 auto;
    padding:28px 0 48px;
    box-sizing:border-box;
}
.ae-gallery-header{
    position:relative;
    overflow:hidden;
    margin:0 0 22px;
    padding:30px 26px 28px;
    border-radius:22px;
    text-align:center;
    color:#fff;
    background:linear-gradient(120deg,#07566f,#078f9d 58%,#2ba98d);
    box-shadow:0 14px 34px rgba(5,91,104,.16);
}
.ae-gallery-header::before,
.ae-gallery-header::after{
    content:"";
    position:absolute;
    border-radius:50%;
    pointer-events:none;
}
.ae-gallery-header::before{   /* sun */
    width:150px;height:150px;
    right:-36px;top:-46px;
    background:radial-gradient(circle,#ffe08a 0 34%,rgba(255,224,138,.28) 35% 58%,transparent 60%);
    opacity:.75;
}
.ae-gallery-header::after{    /* gentle wave */
    width:140%;height:70px;
    left:-20%;bottom:-48px;
    background:rgba(255,255,255,.10);
}
.ae-gallery-icons{
    display:block;
    margin-bottom:6px;
    font-size:24px;
    letter-spacing:.2em;
}
.ae-gallery-kicker{
    display:inline-block;
    margin-bottom:10px;
    padding:4px 12px;
    border:1px solid rgba(255,255,255,.35);
    border-radius:999px;
    background:rgba(255,255,255,.10);
    color:#fff0b7;
    font-size:11px;
    font-weight:800;
    letter-spacing:.14em;
    text-transform:uppercase;
}
.ae-gallery-header h1{
    position:relative;
    margin:0 0 8px;
    color:#fff;
    font-size:clamp(26px,4vw,40px);
    font-weight:800;
    line-height:1.1;
    letter-spacing:-.01em;
}
.ae-gallery-header p{
    position:relative;
    max-width:640px;
    margin:0 auto;
    color:rgba(255,255,255,.9);
    font-size:15px;
    line-height:1.6;
}
.ae-gallery-note{
    margin:4px auto 0;
    max-width:640px;
    text-align:center;
    color:#567068;
    font-size:14px;
    line-height:1.65;
}
.gallery-empty{
    margin:0 0 30px;
    padding:34px 22px;
    border:1px dashed #9fd3cb;
    border-radius:18px;
    background:linear-gradient(160deg,#ffffff,#effaf7);
    color:#3f6b66;
    font-size:15px;
    font-weight:600;
    text-align:center;
}
.gallery-empty::before{content:"🌴";display:block;margin-bottom:8px;font-size:30px}
@media (max-width:600px){
    .ae-gallery-page{padding:16px 0 34px}
    .ae-gallery-header{padding:22px 16px 20px;border-radius:16px;margin-bottom:16px}
    .ae-gallery-header p{font-size:13.5px}
    .ae-gallery-icons{font-size:20px}
}

/* =====================================================================
   Language switch (top right): 🇺🇸 English  ·  🇩🇪 Deutsch
   ===================================================================== */
.lang-switch{
    position:absolute;
    top:14px;
    right:16px;
    z-index:400;
    display:flex;
    gap:8px;
    padding:6px;
    border-radius:999px;
    background:rgba(3,40,50,.38);
    -webkit-backdrop-filter:blur(6px);
    backdrop-filter:blur(6px);
    box-shadow:0 6px 18px rgba(0,30,40,.25);
}
.lang-btn{
    position:relative;
    display:grid;
    place-items:center;
    width:40px;
    height:28px;
    padding:0;
    border:2px solid transparent;
    border-radius:7px;
    background:none;
    cursor:pointer;
    opacity:.72;
    transition:opacity .2s ease,transform .2s ease,border-color .2s ease;
}
.lang-btn svg{display:block;width:34px;height:22px;border-radius:4px;box-shadow:0 2px 6px rgba(0,0,0,.3)}
.lang-btn:hover,.lang-btn:focus-visible{opacity:1;transform:translateY(-1px)}
.lang-btn.is-active{opacity:1;border-color:#fff0b7}
.lang-btn:focus-visible{outline:2px solid #fff;outline-offset:2px}
.lang-tip{
    position:absolute;
    top:calc(100% + 10px);
    right:-4px;
    padding:7px 12px;
    border-radius:10px;
    background:#07566f;
    color:#fff;
    font:700 12px/1.2 'Segoe UI',system-ui,sans-serif;
    letter-spacing:.02em;
    white-space:nowrap;
    box-shadow:0 8px 20px rgba(0,30,40,.3);
    opacity:0;
    transform:translateY(-4px);
    transition:opacity .2s ease,transform .2s ease;
    pointer-events:none;
}
.lang-tip::before{
    content:"";
    position:absolute;
    top:-5px;right:18px;
    width:10px;height:10px;
    background:#07566f;
    transform:rotate(45deg);
}
.lang-btn:hover .lang-tip,.lang-btn:focus-visible .lang-tip{opacity:1;transform:none}
html.i18n-switching #content,html.i18n-switching header,html.i18n-switching footer{animation:i18nFade .26s ease}
@keyframes i18nFade{from{opacity:.55}to{opacity:1}}
@media (max-width:600px){
    .lang-switch{top:10px;right:10px;gap:6px;padding:5px}
    .lang-btn{width:36px;height:26px}
    .lang-btn svg{width:30px;height:20px}
}
@media (hover:none){ .lang-tip{display:none} }
@media (prefers-reduced-motion:reduce){ html.i18n-switching #content,html.i18n-switching header,html.i18n-switching footer{animation:none} }

/* =====================================================================
   Friendly notice (database / page temporarily unavailable)
   ===================================================================== */
.ae-notice{
    display:flex;
    gap:16px;
    align-items:flex-start;
    margin:0 auto 26px;
    max-width:860px;
    padding:20px 22px;
    border:1px solid #f3d88f;
    border-left:5px solid #f0b429;
    border-radius:16px;
    background:linear-gradient(160deg,#fffdf4,#fff6dc);
    color:#5b4a1e;
    box-shadow:0 10px 26px rgba(120,90,10,.08);
    text-align:left;
}
.ae-notice-icon{flex:0 0 auto;font-size:30px;line-height:1}
.ae-notice-title{display:block;margin-bottom:4px;color:#07566f;font-size:17px}
.ae-notice p{margin:4px 0 0;font-size:14.5px;line-height:1.6}
.ae-notice a{color:#07566f;font-weight:700;text-decoration:none;border-bottom:1px solid rgba(7,86,111,.35)}
.ae-notice a:hover{border-bottom-color:#07566f}
.ae-notice-page{max-width:900px;margin:0 auto;padding:40px 0 60px}
@media (max-width:600px){
    .ae-notice{padding:16px;gap:12px;border-radius:13px}
    .ae-notice-icon{font-size:24px}
    .ae-notice-title{font-size:15.5px}
    .ae-notice p{font-size:13.5px}
    .ae-notice-page{padding:20px 0 40px}
}

/* =====================================================================
   About page – parchment "Family-owned since 1994"
   ===================================================================== */
.ae-about-scroll{
    margin:26px auto 6px;
    max-width:430px;
    text-align:center;
}
.ae-about-scroll img{
    display:block;
    width:100%;
    height:auto;
    filter:drop-shadow(0 18px 26px rgba(70,45,10,.28));
    transform:rotate(-1.2deg);
    transition:transform .35s ease;
}
.ae-about-scroll img:hover{transform:rotate(0deg) scale(1.02)}
.ae-about-scroll figcaption{
    margin-top:12px;
    color:#567068;
    font-size:14px;
    font-weight:600;
}
@media (max-width:600px){ .ae-about-scroll{max-width:300px;margin-top:18px} }

/* =====================================================================
   Website intro – parchment slides in like a sheet of paper,
   stays ~5 s, slides out to the left. Click / tap / key = skip.
   ===================================================================== */
.ae-intro{
    position:fixed;
    inset:0;
    z-index:1000005;
    display:flex;
    align-items:center;
    justify-content:center;
    overflow:hidden;
    background:rgba(3,40,50,0);
    -webkit-backdrop-filter:blur(0);
    backdrop-filter:blur(0);
    cursor:pointer;
    transition:background .7s ease,backdrop-filter .7s ease,-webkit-backdrop-filter .7s ease;
    -webkit-tap-highlight-color:transparent;
}
.ae-intro.is-shown{
    background:rgba(3,40,50,.62);
    -webkit-backdrop-filter:blur(4px);
    backdrop-filter:blur(4px);
}
.ae-intro.is-leaving{
    background:rgba(3,40,50,0);
    -webkit-backdrop-filter:blur(0);
    backdrop-filter:blur(0);
    transition-delay:.35s;
}
.ae-intro-paper{
    display:block;
    width:auto;
    height:auto;
    max-width:min(88vw,560px);
    max-height:84vh;
    max-height:84dvh;
    filter:drop-shadow(0 30px 40px rgba(0,0,0,.45));
    will-change:transform;
    transform:translate(120vw,-6vh) rotate(16deg);
    pointer-events:none;
}
.ae-intro.is-shown .ae-intro-paper{animation:aeIntroIn 1.45s cubic-bezier(.22,.9,.28,1) forwards}
.ae-intro.is-leaving .ae-intro-paper{animation:aeIntroOut 1.05s cubic-bezier(.55,0,.75,.25) forwards}
@keyframes aeIntroIn{
    0%  {transform:translate(120vw,-6vh) rotate(16deg) scale(.96)}
    55% {transform:translate(-3vw,1vh) rotate(-4deg) scale(1.01)}
    72% {transform:translate(1.2vw,-.4vh) rotate(1.8deg) scale(1)}
    86% {transform:translate(-.4vw,0) rotate(-1.4deg)}
    100%{transform:translate(0,0) rotate(-1deg)}
}
@keyframes aeIntroOut{
    0%  {transform:translate(0,0) rotate(-1deg)}
    25% {transform:translate(3vw,-1vh) rotate(2deg)}
    100%{transform:translate(-125vw,7vh) rotate(-18deg) scale(.96)}
}
.ae-intro-hint{
    position:absolute;
    left:50%;
    bottom:18px;
    transform:translateX(-50%);
    padding:7px 15px;
    border-radius:999px;
    background:rgba(255,255,255,.14);
    color:#fff0b7;
    font:700 12px/1.3 'Segoe UI',system-ui,sans-serif;
    letter-spacing:.05em;
    white-space:nowrap;
    opacity:0;
    transition:opacity .5s ease .9s;
    pointer-events:none;
}
.ae-intro.is-shown .ae-intro-hint{opacity:.9}
.ae-intro.is-leaving .ae-intro-hint{opacity:0;transition-delay:0s}
@media (prefers-reduced-motion:reduce){
    .ae-intro.is-shown .ae-intro-paper{animation:aeIntroFade .6s ease forwards}
    .ae-intro.is-leaving .ae-intro-paper{animation:aeIntroFade .5s ease reverse forwards}
    @keyframes aeIntroFade{from{opacity:0;transform:none}to{opacity:1;transform:none}}
}

/* =====================================================================
   Legal pages (Terms, Privacy, Legal notice) – bilingual, Caribbean look
   The page contains both languages; the one matching the flag is shown.
   Selectors are deliberately specific so global menu styles cannot interfere.
   ===================================================================== */
html[lang^="de"] .legal-page .legal-lang.lang-en{display:none!important}
html:not([lang^="de"]) .legal-page .legal-lang.lang-de{display:none!important}
.legal-page{max-width:920px;margin:0 auto;padding:28px 0 56px;color:#22322d;font-size:16px;line-height:1.75}
.legal-page .legal-head{
    position:relative;overflow:hidden;
    margin:0 0 18px;padding:30px 28px 28px;border-radius:24px;
    color:#fff;text-align:left;
    background:linear-gradient(120deg,#07566f,#078f9d 58%,#2ba98d);
    box-shadow:0 14px 34px rgba(5,91,104,.18);
}
.legal-page .legal-head::before{content:"";position:absolute;right:-40px;top:-50px;width:170px;height:170px;border-radius:50%;
    background:radial-gradient(circle,#ffe08a 0 34%,rgba(255,224,138,.28) 35% 58%,transparent 60%);opacity:.75;pointer-events:none}
.legal-page .legal-head::after{content:"🌴";position:absolute;right:22px;bottom:8px;font-size:54px;opacity:.28;pointer-events:none}
.legal-page .legal-kicker{display:inline-block;margin:0 0 10px;padding:4px 12px;border:1px solid rgba(255,255,255,.35);border-radius:999px;
    background:rgba(255,255,255,.12);color:#fff0b7;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
.legal-page .legal-head h1{position:relative;margin:0 0 6px;color:#fff;font-size:clamp(27px,4.4vw,40px);line-height:1.12;font-weight:800}
.legal-page .legal-head p{position:relative;margin:0;max-width:620px;color:rgba(255,255,255,.9);font-size:15px;line-height:1.6}

.legal-page .legal-toc{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px;padding:0}
.legal-page .legal-toc a{
    display:inline-flex;align-items:center;
    padding:7px 13px;border:1px solid #cfe6e1;border-radius:999px;
    background:#fff!important;color:#07566f!important;
    font-size:13px;font-weight:700;line-height:1.3;text-decoration:none!important;text-shadow:none!important;
    box-shadow:0 3px 10px rgba(5,91,104,.06);transition:background .2s ease,transform .2s ease;
}
.legal-page .legal-toc a:hover{background:#eef8f6!important;transform:translateY(-1px)}

.legal-page .legal-body{
    padding:26px 30px 30px;border:1px solid #e1efea;border-radius:22px;
    background:rgba(255,255,255,.97);box-shadow:0 12px 30px rgba(5,91,104,.08);
}
.legal-page .legal-highlight{
    margin:0 0 26px;padding:18px 20px 16px;border:1px solid #f3d88f;border-left:6px solid #f0b429;border-radius:16px;
    background:linear-gradient(160deg,#fffdf4,#fff3d2);color:#4a3d18;
}
.legal-page .legal-highlight > strong{display:block;margin-bottom:6px;color:#07566f;font-size:17px}
.legal-page .legal-highlight ul{margin:0;padding:0;list-style:none}
.legal-page .legal-highlight li{position:relative;margin:6px 0;padding-left:26px}
.legal-page .legal-highlight li::before{content:"🌺";position:absolute;left:0;top:0;font-size:15px}
.legal-page h2{
    display:flex;align-items:center;gap:12px;
    margin:30px 0 10px;padding:0 0 9px;border-bottom:2px solid #e3f1ec;
    color:#07566f;font-size:20px;line-height:1.3;font-weight:800;scroll-margin-top:16px;
}
.legal-page .legal-body > h2:first-child,.legal-page .legal-highlight + h2{margin-top:6px}
.legal-page .legal-ico{flex:0 0 auto;display:grid;place-items:center;width:40px;height:40px;border-radius:12px;
    background:linear-gradient(145deg,#e6f6f2,#fff4d6);font-size:20px;box-shadow:inset 0 0 0 1px #d6ece6}
.legal-page h3{margin:18px 0 4px;color:#164f57;font-size:16.5px;font-weight:800}
.legal-page p{margin:8px 0;color:#2c3d38}
.legal-page ul{margin:8px 0;padding-left:22px}
.legal-page li{margin:5px 0}
.legal-page strong{color:#183c37}
.legal-page a{color:#078f9d!important;font-weight:700;text-decoration:none;border-bottom:1px solid rgba(7,143,157,.35)}
.legal-page a:hover{border-bottom-color:#078f9d}
.legal-page code{padding:1px 6px;border-radius:6px;background:#e7f3ed;color:#245f50;font-size:.86em}
.legal-page .legal-table-wrap{overflow-x:auto;margin:12px 0;border:1px solid #e1efea;border-radius:14px}
.legal-page .legal-table{width:100%;border-collapse:collapse;font-size:14.5px;background:#fff}
.legal-page .legal-table th,.legal-page .legal-table td{padding:11px 13px;border-bottom:1px solid #e9f3ef;text-align:left;vertical-align:top}
.legal-page .legal-table tr:last-child td{border-bottom:0}
.legal-page .legal-table th{background:#eef8f6;color:#07566f;font-size:13px;text-transform:uppercase;letter-spacing:.05em}
@media (max-width:600px){
    .legal-page{padding:16px 0 38px;font-size:15.5px;line-height:1.7}
    .legal-page .legal-head{padding:22px 18px 22px;border-radius:18px}
    .legal-page .legal-head::after{font-size:40px}
    .legal-page .legal-toc{gap:6px}
    .legal-page .legal-toc a{padding:6px 11px;font-size:12.5px}
    .legal-page .legal-body{padding:18px 16px 22px;border-radius:18px}
    .legal-page h2{font-size:18px;gap:10px}
    .legal-page .legal-ico{width:34px;height:34px;font-size:17px;border-radius:10px}
    /* cookie table as stacked cards on phones */
    .legal-page .legal-table-wrap{overflow:visible;border:0}
    .legal-page .legal-table thead{display:none}
    .legal-page .legal-table,.legal-page .legal-table tbody{display:block;background:none}
    .legal-page .legal-table tr{display:block;margin:0 0 10px;border:1px solid #e1efea;border-radius:14px;background:#fff;overflow:hidden}
    .legal-page .legal-table td{display:block;padding:4px 14px;border:0}
    .legal-page .legal-table td:first-child{padding-top:12px;background:#f3faf8}
    .legal-page .legal-table td:last-child{padding-bottom:12px;color:#5f746e;font-weight:600}
    .legal-page .legal-table td:last-child::before{content:"⏳ "}
}

/* Footer legal links – pill buttons, no underline */
.site-footer .footer-legal,.footer-legal{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:4px 0 14px;padding:0}
.site-footer .footer-legal a,.footer-legal a{
    display:inline-flex;align-items:center;gap:8px;
    padding:8px 16px;border-radius:999px;
    border:1px solid rgba(255,255,255,.28);
    background:rgba(255,255,255,.10);
    color:#fff!important;
    font-size:13px;font-weight:700;letter-spacing:.02em;
    text-decoration:none!important;border-bottom-width:1px;
    box-shadow:0 4px 12px rgba(0,30,40,.12);
    transition:background .2s ease,transform .2s ease,border-color .2s ease;
}
.site-footer .footer-legal a:hover,.footer-legal a:hover,.footer-legal a:focus-visible{
    background:rgba(255,255,255,.2);border-color:rgba(255,240,183,.7);transform:translateY(-1px);text-decoration:none!important;
}
.footer-legal a *{text-decoration:none!important}
.footer-legal .fl-ico{font-size:15px;line-height:1}
@media (max-width:600px){ .site-footer .footer-legal a,.footer-legal a{padding:7px 13px;font-size:12.5px} }

/* Booking notes */
.booking-legal-note{margin:12px 0;padding:10px 13px;border-radius:10px;background:#f2faf8;border:1px solid #d6ece6;color:#3f5f58;font-size:13px;line-height:1.5}
.booking-legal-note a{color:#078f9d;font-weight:700}
.booking-accept{display:flex;gap:10px;align-items:flex-start;margin:10px 0 14px;font-size:13.5px;line-height:1.5;color:#2d3f3a;cursor:pointer}
.booking-accept input{flex:0 0 auto;width:20px;height:20px;margin-top:2px;accent-color:#078f9d}
.booking-accept a{color:#078f9d;font-weight:700}

/* =====================================================================
   Rate card below the apartment gallery
   ===================================================================== */
.rate-card{
    display:grid;
    grid-template-columns:minmax(230px,.9fr) 1.6fr;
    gap:18px;
    margin:0 0 30px;
    padding:20px;
    border:1px solid #d9ece6;
    border-radius:20px;
    background:linear-gradient(160deg,#ffffff 0%,#f3fbf8 60%,#fff8e6 100%);
    box-shadow:0 12px 30px rgba(5,91,104,.09);
}
.rate-main{
    position:relative;
    overflow:hidden;
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:8px;
    padding:20px;
    border-radius:16px;
    color:#fff;
    background:linear-gradient(135deg,#07566f,#078f9d 60%,#2ba98d);
}
.rate-main::after{content:"🌺";position:absolute;right:12px;bottom:6px;font-size:44px;opacity:.22;pointer-events:none}
.rate-kicker{color:#fff0b7;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}
.rate-price{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.rate-amount{font-size:clamp(38px,5vw,50px);font-weight:800;line-height:1;letter-spacing:-.02em}
.rate-unit{font-size:15px;font-weight:600;color:rgba(255,255,255,.9)}
.rate-price-na .rate-unit{font-size:14px}
.rate-vat{display:inline-block;padding:4px 11px;border-radius:999px;background:rgba(255,255,255,.16);font-size:12.5px;font-weight:700}
.rate-cta{
    margin-top:6px;
    display:inline-block;
    padding:10px 16px;
    border-radius:12px;
    background:#fff0b7;
    color:#07566f!important;
    font-weight:800;
    font-size:14px;
    text-decoration:none;
    box-shadow:0 6px 14px rgba(0,0,0,.15);
    transition:transform .2s ease,background .2s ease;
}
.rate-cta:hover{background:#fff;transform:translateY(-1px)}
.rate-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-content:center}
.rate-fact{display:flex;gap:12px;align-items:flex-start;padding:13px 14px;border:1px solid #e1efea;border-radius:14px;background:#fff}
.rate-icon{flex:0 0 auto;display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:#eef8f6;font-size:19px}
.rate-fact strong{display:block;color:#07566f;font-size:14px}
.rate-fact span{display:block;color:#4f665f;font-size:13px;line-height:1.4}
.rate-note{grid-column:1/-1;margin:0;color:#5f746e;font-size:12.5px;line-height:1.5}
.rate-note a{color:#078f9d;font-weight:700}
@media (max-width:760px){
    .rate-card{grid-template-columns:1fr;padding:14px;gap:14px;border-radius:16px}
    .rate-facts{grid-template-columns:1fr 1fr;gap:9px}
    .rate-fact{padding:11px;gap:9px}
    .rate-icon{width:32px;height:32px;font-size:16px}
}
@media (max-width:420px){ .rate-facts{grid-template-columns:1fr} }

/* Tourism levy line on price cards (overview + search results) */
.levy-line{display:block;margin-top:3px;color:#5f746e;font-size:11.5px;font-weight:600;line-height:1.35}

/* =====================================================================
   FOOTER TIDY-UP – uniform spacing, compact weather
   (overrides only; the footer content itself is unchanged)
   ===================================================================== */
.site-footer .footer-container{gap:20px!important;align-items:stretch!important;grid-template-columns:1.15fr .95fr 1.25fr .95fr!important}
.site-footer .footer-column{padding:20px 18px!important;border-radius:18px!important;display:flex!important;flex-direction:column!important}
.site-footer .footer-column h3{margin:0 0 14px!important;padding-bottom:8px!important;font-size:15px!important;line-height:1.3!important;letter-spacing:.12em!important}

/* Map column: map sits in the middle of the free space */
.site-footer .footer-resort-map-column{align-self:start!important}
.site-footer .footer-resort-map-column .footer-resort-map{margin:0 0 10px!important}
.site-footer .footer-map-disclaimer{margin:0 0 4px!important}
.site-footer .footer-map-enlarge{margin:0!important}

/* Security column: no big gap between text and points */
.site-footer .footer-security-image-only img{max-height:170px!important;width:auto!important;max-width:100%!important;margin:0 auto!important;display:block!important}
.site-footer .footer-security-copy{margin:12px 0 0!important;line-height:1.55!important}
.site-footer .footer-security-points{margin-top:14px!important;gap:8px!important}

/* ---- Weather: compact but complete ---- */
.site-footer .footer-weather-column .weather-live-row{display:flex!important;flex-wrap:wrap!important;align-items:center!important;justify-content:space-between!important;gap:6px 10px!important;margin:0 0 10px!important}
.site-footer .footer-weather-column .weather-live-updated{min-width:0!important;padding:0!important;text-align:right!important;font-size:10.5px!important}
.site-footer .footer-weather-column .weather-live-current{padding:10px!important;margin:0 0 12px!important;border-radius:14px!important}
.site-footer .footer-weather-column .weather-live-current-label,
.site-footer .footer-weather-column .weather-place{display:none!important}
.site-footer .footer-weather-column .weather-now{display:flex!important;align-items:center!important;gap:12px!important;padding:10px 12px!important;margin:0 0 8px!important;border-radius:12px!important}
.site-footer .footer-weather-column .weather-main-icon{font-size:36px!important;line-height:1!important;width:auto!important;height:auto!important}
.site-footer .footer-weather-column .weather-now-copy{display:flex!important;flex-wrap:wrap!important;align-items:baseline!important;gap:2px 10px!important}
.site-footer .footer-weather-column .weather-temp{font-size:32px!important;line-height:1.05!important}
.site-footer .footer-weather-column .weather-temp .weather-secondary-unit{font-size:14px!important}
.site-footer .footer-weather-column .weather-condition{font-size:13.5px!important;line-height:1.3!important}

.site-footer .footer-weather-column .weather-facts{display:grid!important;grid-template-columns:1fr 1fr!important;gap:7px!important;margin:0!important}
.site-footer .footer-weather-column .weather-facts > span.weather-fact{
    display:grid!important;grid-template-columns:26px minmax(0,1fr)!important;grid-template-rows:auto auto!important;
    column-gap:8px!important;align-items:center!important;
    min-height:0!important;height:auto!important;padding:8px 10px!important;border-radius:11px!important;text-align:left!important}
.site-footer .footer-weather-column .weather-facts > span.weather-fact .weather-fact-icon{grid-row:1 / 3!important;grid-column:1!important;width:24px!important;height:24px!important;margin:0!important;font-size:19px!important;line-height:1!important;display:grid!important;place-items:center!important}
.site-footer .footer-weather-column .weather-facts > span.weather-fact .weather-fact-icon svg{width:22px!important;height:22px!important}
.site-footer .footer-weather-column .weather-facts > span.weather-fact small{grid-column:2!important;margin:0!important;font-size:9.5px!important;line-height:1.2!important;letter-spacing:.05em!important;white-space:normal!important;overflow-wrap:normal!important;hyphens:auto!important}
.site-footer .footer-weather-column .weather-facts > span.weather-fact strong{grid-column:2!important;margin:0!important;font-size:15px!important;line-height:1.25!important;white-space:nowrap!important}
.site-footer .footer-weather-column .weather-facts > span.weather-fact em{display:none!important}

.site-footer .footer-weather-column .weather-facts > span.weather-fact.weather-fact-temperature{display:none!important}   /* same value as the big temperature above */
.site-footer .footer-weather-column .weather-facts > span.weather-fact:last-child:nth-child(odd),
.site-footer .footer-weather-column .weather-facts > span.weather-fact{grid-column:auto!important}
.site-footer .footer-security-image-only{margin:0!important;padding:0!important;min-height:0!important;height:auto!important;display:flex!important;justify-content:center!important}
.site-footer .footer-weather-column .weather-forecast-heading{display:flex!important;flex-direction:row!important;align-items:baseline!important;justify-content:space-between!important;gap:8px!important;margin:0 0 7px!important}
.site-footer .footer-weather-column .weather-forecast-heading strong{font-size:12px!important;letter-spacing:.1em!important;white-space:nowrap!important}
.site-footer .footer-weather-column .weather-forecast-heading span{display:none!important}
.site-footer .footer-weather-column .weather-forecast{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:7px!important;margin:0!important}
.site-footer .footer-weather-column .weather-forecast > .weather-day{
    display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;
    gap:2px!important;min-height:0!important;padding:9px 6px!important;border-radius:11px!important;text-align:center!important}
.site-footer .footer-weather-column .weather-day-name{font-size:12.5px!important;font-weight:800!important}
.site-footer .footer-weather-column .weather-day-icon{font-size:22px!important;line-height:1.1!important;margin:0!important}
.site-footer .footer-weather-column .weather-day-condition{font-size:10.5px!important;line-height:1.25!important;min-height:2.5em!important;display:flex!important;align-items:center!important}
.site-footer .footer-weather-column .weather-day-temp{display:block!important;margin:2px 0 0!important}
.site-footer .footer-weather-column .weather-day-temp small,
.site-footer .footer-weather-column .weather-day-temp .weather-secondary-unit{display:none!important}
.site-footer .footer-weather-column .weather-day-temp strong{font-size:14px!important;white-space:nowrap!important}
.site-footer .footer-weather-column .weather-day-rain{font-size:10px!important;line-height:1.2!important;opacity:.85!important}
.site-footer .footer-weather-column .weather-source-note{margin:10px 0 0!important;text-align:center!important}

/* Footer bottom */
.site-footer .footer-bottom{margin-top:22px!important;padding-top:18px!important}

@media (max-width:1020px){
    .site-footer .footer-container{grid-template-columns:1fr 1fr!important}
}
@media (max-width:768px){
    .site-footer .footer-container{grid-template-columns:1fr!important;gap:14px!important}
    .site-footer .footer-column{padding:16px 15px!important}
    .site-footer .footer-resort-map-column .footer-resort-map{margin:0 0 10px!important}
    .site-footer .footer-security-image-only img{max-height:150px!important}
    .site-footer .footer-weather-column .weather-temp{font-size:30px!important}
    .site-footer .footer-weather-column .weather-live-updated{text-align:left!important}
}

/* =====================================================================
   FOOTER CONTACT ICONS – unified SVG line icons on white tiles
   ===================================================================== */
html body .site-footer .footer-contact .contact-icon,
html body .site-footer .footer-contact .contact-icon-pin,
html body .site-footer .footer-contact .contact-icon-phone,
html body .site-footer .footer-contact .contact-icon-mail,
html body .site-footer .saint-lucia-call-time__icon{
    background:linear-gradient(150deg,#ffffff 0%,#e8faf7 100%)!important;
    color:#0a7f8c!important;
    border:1px solid rgba(255,255,255,.65)!important;
    box-shadow:0 8px 18px rgba(0,30,40,.22), inset 0 -2px 0 rgba(10,127,140,.10)!important;
    font-size:0!important;
}
.site-footer .footer-contact .contact-icon svg,
.site-footer .saint-lucia-call-time__icon svg{
    width:20px;height:20px;display:block;
    transition:transform .25s ease;
}
html body .site-footer .footer-contact .contact-icon-pin{ color:#e2574c!important; }   /* hibiscus red pin */
.site-footer .footer-contact .contact-icon-phone{ color:#0a7f8c!important; }
.site-footer .footer-contact .contact-icon-mail{ color:#0a7f8c!important; }
.site-footer .saint-lucia-call-time__icon{ color:#0a7f8c!important; }
.site-footer .footer-contact .contact-icon::before{ display:none!important; }
.site-footer .footer-contact .contact-line:hover .contact-icon svg{ transform:scale(1.1); }

/* =====================================================================
   BACK TO TOP button (bottom right)
   ===================================================================== */
.ae-totop{
    position:fixed; right:22px; bottom:22px; z-index:9000;
    width:50px; height:50px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    padding:0; cursor:pointer; color:#fff;
    background:linear-gradient(145deg,#12b5b0,#07708a);
    border:2px solid rgba(255,255,255,.85);
    box-shadow:0 10px 24px rgba(0,45,60,.30);
    opacity:0; visibility:hidden; transform:translateY(16px) scale(.9);
    transition:opacity .3s ease, transform .3s ease, visibility 0s linear .3s, box-shadow .2s ease;
    -webkit-tap-highlight-color:transparent;
}
.ae-totop.is-visible{
    opacity:1; visibility:visible; transform:none;
    transition:opacity .3s ease, transform .3s ease, visibility 0s, box-shadow .2s ease;
}
.ae-totop svg{ width:22px; height:22px; transition:transform .2s ease; }
.ae-totop:hover{ box-shadow:0 14px 30px rgba(0,45,60,.38); }
.ae-totop:hover svg{ transform:translateY(-2px); }
.ae-totop:focus-visible{ outline:3px solid #ffd166; outline-offset:3px; }
@media (max-width:600px){ .ae-totop{ right:14px; bottom:16px; width:46px; height:46px; } }
