/* Vendor libraries are linked directly in each page's <head> rather
   than @import'd here - @import serializes the download (browser must
   fetch and parse this file before it even discovers the imports),
   while separate <link> tags let the browser fetch all of them in
   parallel. This was the single biggest render-blocking cost on the
   site (PageSpeed Insights, Sep 2026). */

@font-face {
    font-family: "EB Garamond";
    src: url('../css/vendor/ebgaramond-var.woff2') format('woff2');
    font-weight: 400 700;
    font-style: normal;
    font-display: swap;
}
@font-face {
    font-family: "Work Sans";
    src: url('../css/vendor/worksans-var.woff2') format('woff2');
    font-weight: 400 700;
    font-style: normal;
    font-display: swap;
}

@property --progress {
    syntax: '<integer>';
    inherits: true;
    initial-value: 0;
}

@keyframes load {
    to {
        --progress: var(var(--value))
    }
}



@keyframes ripple {
    from {
        opacity: 1;
        transform: scale3d(1, 1, 1);
        transform-origin: center;
        border-width: 0px;
    }

    to {
        opacity: 0;
        transform: scale3d(1.7, 1.7, 1.8);
        transform-origin: center;
        border-width: 13px;
    }
}

@keyframes fadeIn{
    from {
        opacity: 0;
        transform: translate(0);
    }
    to{
        opacity: 1;
        transform: translate(0);
    }
}

@keyframes fadeInLeft {
    from {
        opacity: 0;
        transform: translateX(-500px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes fadeInRight {
    from {
        opacity: 0;
        transform: translateX(500px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(100px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeInDown {
    from {
        opacity: 0;
        transform: translateY(-100px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

:root {
    /* Bootstrap sets scroll-behavior: smooth on :root (specificity of a
       class, so a plain `html` selector here can't win). Same-page nav
       anchors (#story, #cabin, etc.) depend on this actually landing —
       an animation that stalls leaves the click looking like it did
       nothing, with no fallback. Same reasoning as the fade-in safety
       net in script.js: a critical interaction shouldn't depend on an
       animation completing. */
    scroll-behavior: auto;
}

:root{
    /* Red Beech Cabin palette — pulled from the new mark and the cabin's
       own photography, not the Amity demo. See docs in project root. */
    --paper: #F7F1E4;
    --ink: #241F18;
    --pine: #24392C;
    --pine-deep: #152219;
    --ember: #9A4B33;
    --stone: #E7DFCC;
    --water: #4C6B6C;

    /* Pale storybook-page backgrounds - light tints of Pine and Ember,
       not new hues. Verified: --ink and --pine both clear 9.8:1+ on
       either, so body copy and inline links stay readable unchanged. */
    --moss-pale: #E6EAE0;
    --terracotta-pale: #F2E2D6;

    --primary: #FFFDF8;
    --text-color: #3A342A;
    --text-color-2: #FBF6EA;
    --background-color: var(--paper);
    --accent-color: var(--pine);
    --accent-color-2: var(--text-color-2);
    --accent-color-3: var(--ink);
    --font-1: "EB Garamond", "Iowan Old Style", Georgia, serif;
    --font-2: "Work Sans", -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
}

/* Eyebrow/kicker labels ("About Us", "Booking"...) get the sparing second
   accent instead of the workhorse Pine used everywhere else.
   These are <p class="eyebrow ...">, not real headings - they were
   <h6> purely for the small styling, which broke the page's heading
   hierarchy (h1 -> h6 -> h2 -> h3 -> h6 ..., flagged by Lighthouse).
   The actual section heading is always the adjacent <h2>. */
.eyebrow.accent-color {
    color: var(--ember);
}
.eyebrow {
    font-size: 18px;
    margin-bottom: 0;
}

body{
    font-family: var(--font-2);
    color: var(--text-color);
    background-color: var(--paper);
}

h1 {
    font-size: 48px;
    font-weight: 600;
}

h2{
    font-size: 40px;
    font-weight: 600;
}

h3 {
    font-size: 24px;
    font-weight: 500;
}

h4 {
    font-size: 22px;
}

h5 {
    font-size: 20px;
}

h1, h2, h3, h4, h5 {
    margin-bottom: 0;
}

button, a{
    font-size: 14px;
    color: var(--accent-color-2);
    text-decoration: none;
}

p{
    font-size: 16px;
    font-family: var(--font-2);
}

ul {
    list-style: none;
}

.list-circle {
    list-style: disc;
}

.list-striped {
    list-style-type: none;
    padding: 0;
    margin: 0;
}

.list-striped a {
    font-weight: normal;
    font-size: 16px;
}

.list-striped li {
    display: flex;
    align-items: center;
}

.list-striped li::before {
    content: "";
    display: inline-block;
    width: 8px;
    height: 1px;
    margin-right: 15px;
    left: 0;
    border-radius: 5px;
}

.list-accent-1 li::before{
    background-color: var(--accent-color);
}

.list-accent-2 li::before{
    background-color: var(--accent-color-2);
}

.custom-row{
    padding-left: 2em; padding-right: 2em;
}

li {
    font-size: 16px;
    font-family: var(--font-2);
}

img {
    object-fit: cover;
}

button {
    padding-inline: 1rem;
    padding-block: 0.5rem;
    text-decoration: none;
    transition: all 0.5s;
}

.text-color {
    color: var(--text-color);
}

.text-color-2 {
    color: var(--text-color-2);
}

.hover-transform:hover {
    transform: translateY(-10px);
}

button:hover {
    color: var(--text-color);
}

.w-max-content {
    width: max-content;
}

.w-40{
    width: 40%;
}

.banner-heading {
    font-size: 64px;
}

.small-h2{
    font-size: 32px;
}

.font-1 {
    font-family: var(--font-1);
}

.font-2 {
    font-family: var(--font-2);
}

.font-3 {
    font-family: var(--font-3);
}

.ls-2 {
    letter-spacing: 2px;
}

.fs-7 {
    font-size: 0.8rem !important;
}

.fs-22 {
    font-size: 22px !important;
}

.fw-black {
    font-weight: 900 !important;
}

.video-e119 {
    width: 60%;
    margin-bottom: -3rem;
    margin-left: -3rem;
}

.form input,
.form textarea,
.form select {
    background-color: transparent;
    border: none;
    border-bottom: 1px solid white;
    color: white;
    border-radius: 0;
    padding: 20px 0px;
    
}

.form input::placeholder,
.form textarea::placeholder {
    color: gray;
    font-weight: 600;
    font-family: var(--font-2);
    text-align: left;
    opacity: 1;
    font-size: 16px;
    text-indent: 0px;
}

.form2 input,
.form2 textarea,
.form2 select {
    outline: none;
    font-family: var(--font-2);
    text-align: left;
    padding: 10px 0px;
}

.form2 input:autofill,
.form2 input:autofill:focus {
    color: var(--text-color);
    transition: background-color 5000s ease-in-out;
    -webkit-text-fill-color: var(--text-color);
    font-family: var(--font-2);
}

.form2 input::placeholder,
.form2 textarea::placeholder {
    color: var(--text-color-2);
    font-family: var(--font-2);
    text-align: left;
    opacity: 1;
    font-size: 16px;
    text-indent: -1px;
}

.form1:hover
.date-input {
    width: 100%;
    padding: 10px;
    font-size: 16px;
    border: 1px solid #ccc;
    border-radius: 5px;
    text-align: center;
    cursor: pointer;
}

.form-control:focus {
    background-color: transparent;
    box-shadow: none !important;
    color: white;
    border-bottom: 1px solid var(--accent-color);
}
.form-control:active{
    background-color: transparent;
    color: white;
    box-shadow: none;
    border-bottom: 1px solid var(--accent-color);
}

.form-control .form-select {
    color: var(--text-color-2);
}

.form-control-2 {
    background-color: transparent;
    border: none;
    border-bottom: 1px solid gray;
    color: var(var(--accent-color-2));
    border-radius: 0;
    
}

.form-control-2:focus {
    background-color: transparent;
    box-shadow: none;
    color: gray;
    border-bottom: 1px solid var(--accent-color);
}
.form-control-2:active{
    background-color: transparent;
    color: white;
    box-shadow: none;
    border-bottom: 1px solid var(--accent-color);
}

.form-control-2 .form-select {
    color: var(--text-color-2);
}

.form-check-input:checked[type=checkbox] {
    --bs-form-check-bg-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="blue" class="bi bi-check-xl" viewBox="0 0 16 16"><path d="M12.736 3.97a.733.733 0 0 1 1.047 0c.286.289.29.756.01 1.05L7.88 12.01a.733.733 0 0 1-1.065.02L3.217 8.384a.757.757 0 0 1 0-1.06.733.733 0 0 1 1.047 0l3.052 3.093 5.4-6.425a.247.247 0 0 1 .02-.022Z"/></svg>');
}

.form input.form-check-input {
    background-color: transparent;
    border: 1px solid gray;
}

.form input.form-check-input:checked {
    border: 1px solid blue;
    color: blue;
}

.form .submit_form {
    padding-inline: 2rem;
    padding-block: 0.7rem;
    text-decoration: none;
    transition: all 0.5s;
    background-color: var(--accent-color-2);
    color: white;
    border-radius: 5px;
    border: solid 1px var(--accent-color-2);
}

.formMessage{
    font-weight: bold;
    margin-top: 10px;
    padding: 5px;
    border-radius: 5px;
}
.success i{
    color: green;
}
.error i{
    color: red;
}

.submit_form:hover {
    background-color: transparent;
}

.submit_form-subscribe {
    padding-inline: 2rem;
    padding-block: 0.7rem;
    text-decoration: none;
    transition: all 0.5s;
    color: white;
    background-color: transparent;
    border-radius: 5px;
}

.submit_form-subscribe:hover {
    background-color: transparent;
    color: white;
    filter: none;
}

.map-container {
    width: 100%;
    height: 100%;
}

.maps {
    width: 100%;
    height: 320px;
    border: 0;

}

.maps-large{
    width: 100%;
    height: 100%;
}

#header {
    transition: all 0.5s ease;
}


.navbar {
    position: absolute;
    /* Matches .hero-stage's own padding (clamp(10px, 2vw, 26px)) so the
       header sits flush with .hero-frame's actual corners. The old
       width:100%/max-width:1440px/centered approach was a leftover
       from before the hero-frame redesign: it centers the navbar in a
       separate 1440px column that has nothing to do with the frame's
       own edge, and the two drift apart past ~1440px wide - on a large
       display the whole header (logo and the buttons on the right)
       ends up floating well inside the frame instead of anchored to
       its corners. Anchoring directly to the same inset keeps them
       aligned at every width. */
    top: clamp(10px, 2vw, 26px);
    left: clamp(10px, 2vw, 26px);
    right: clamp(10px, 2vw, 26px);
    z-index: 3;
    display: flex;
    justify-content: center;
    align-items: center;
}

.navbar .logo{
    width: 85%;
}

.navbar-nav .nav-link:focus, 
.navbar-nav .nav-link.active,
.navbar-nav .nav-link.show {
    color: var(--accent-color);
}

.nav-link {
    padding: 16px 0px;
    font-family: var(--font-2);
    padding-block: 1.2rem;
    color: var(--accent-color-2);
    text-align: start;
    align-items: center;
    justify-content: space-between;
    display: flex;
    font-size: 14px;
    font-weight: bold;
}

.nav-link:hover {
    color: var(--accent-color);
    text-align: start;
}

.nav-link.active {
    color: var(--accent-color);
    text-align: start;
}

.nav-link.show {
    color: var(--accent-color);
    text-align: start;
}

.navbar-toggler {
    color: var(--accent-color-2);
    background-color: var(--accent-color);
}

.navbar-toggler:hover,
.navbar-toggler.active,
.navbar-toggler.show {
    border: none;
    background-color: var(--accent-color-2);
    color: var(--accent-color);
}


.dropdown-menu {
    display: block;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-10px);
    transition: opacity 0.3s ease, transform 0.3s ease, visibility 0.3s;
    background-color: var(--accent-color-3);
    border-radius: 4px;
    padding: 0.5rem 0;
    min-width: 180px; 
}

.dropdown-item {
    padding: 10px 15px; 
    color: white;
    font-family: Arial, sans-serif;
    font-weight: bold;
    display: block;
    width: 100%;
    text-align: left;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.dropdown:hover .dropdown-menu{
    display: block;
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.dropdown-menu .dropdown-item:hover {
    color: var(--accent-color);
    background-color: var(--accent-color-3);
}

.dropdown-menu .dropdown-item:focus {
    color: var(--accent-color);
}

.dropdown-toggle::after {
    display: none !important;
}

.dropdown-toggle i {
    margin-left: 5px;
    transition: transform 0.3s ease-in-out;
}

.section {
    padding:   6em 1em 6em 1em;
    overflow: hidden;
    background-size: cover;
    background-position: center;
}

.r-container {
    max-width: 1440px;
    width: 100%;
    margin: 0 auto;
}

.bg-accent-color {
    background-color: var(--accent-color);
}

.bg-accent-color-2 {
    background-color: var(--accent-color-2);
}

.bg-accent-color-3 {
    background-color: var(--accent-color-3);
}

.read-more {
    color: var(--accent-color-2);
    transition: all 0.5s;
}

.read-more:hover {
    color: var(--accent-color);
}


.bg-accent {
    background-color: var(--background-color);

}

.bg-text-color {
    background-color: var(--text-color);
}

.bg-text-color-2 {
    background-color: var(--text-color-2);
}

.accent-color {
    color: var(--accent-color);
}

.accent-color-2 {
    color: var(--accent-color-2);
}

.accent-color-3 {
    color: var(--accent-color-3);
}

.accent {
    color: var(--background-color);
}

.team-detail {
    background-color: var(--background-color);
    color: var(--accent-color);
    transition: all 0.5s;
}

.team-detail:hover {
    background-color: var(--accent-color);
    color: var(--primary);
}

.border-accent-color {
    border-color: var(--accent-color) !important;
}

.swiperImage {
    overflow: visible;
}

.border-accent-2 {
    border-color: var(--accent-color-2);
}

.border-md-end {
    border-right: 1px solid #ddd;
}


.outline {
    color: transparent;
    -webkit-text-stroke-width: 1px;
    -webkit-text-stroke-color: var(--accent-color);
}

.text-gray {
    color: grey !important;
}

.bg-accent-color-hover:hover {
    background-color: var(--accent-color);
    color: white;
}

.bg-dark-transparent {
    background-color: #232323b7;
}

.btn {
    display: inline-block;
    font-weight: 400;
    font-size: 14px;
    text-align: center;
    vertical-align: middle;
    padding: 10px 30px;
    border-radius: 0.375rem;
    transition: all 0.15s ease-in-out;
    font-weight: bold;
    border-radius: 0;
}

.btn-accent {
    background-color: var(--accent-color);
    color: white;
    transition: all 0.5s;
}

.btn-accent:hover {
    background-color: var(--pine-deep);
    border-color: var(--accent-color-2);
    color: var(--accent-color-2);
}

.btn-accent-outline {
    background-color: transparent;
    border: 1px solid var(--accent-color-2);
    color: var(--accent-color-2);
}
.btn-accent-outline:hover {
    background-color: var(--accent-color-2);
    color: black;
}

.btn-accent-2{
    background-color: var(--accent-color-2);
    color: var(--accent-color);
    transition: all 0.5s;
}

.btn-accent-2:hover{
    background-color: var(--accent-color);
    color: var(--accent-color-2);
    border: 1px solid var(--accent-color-2);
}

.btn-white-accent {
    background-color: white;
    color: var(--accent-color-3);
    border: 1px solid transparent;
}

.btn-accent-outline-2:hover {
    background-color: transparent;
    color: white;
    border: 2px solid white;
}


.btn-white-accent:hover {
    background-color: transparent;
    border-color: white;
    color: white;
    border:1px solid white;
}

.btn-white-outline {
    background-color: transparent;
    border-color: white;
    color: white;
    border-width: 3px;
    
}

.btn-white-outline-hover:hover {
    background-color: transparent;
    border-color: white;
    color: white;
}

.btn-white-outline:hover {
    background-color: white;
    color: var(--accent-color);
}

.about-us-container{
    max-width: 850px;
}

.blog-overlay {
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    background: linear-gradient(179.87deg, rgba(21, 12, 28, 0) 0.12%, rgba(65, 66, 96, 0.86) 107.53%);
    transition: background 0.3s, border-radius 0.3s, opacity 0.3s;
}

.blog-container{
    max-width: 1024px;
    margin-left: auto;
    margin-right: auto;
}

.blog-container ul{
    list-style: none;
}

.blog-container li{
    font-size: 16px;
    font-weight: normal;
    
}

.small-description{
    font-size: 0.8rem;
}

.small-image
{
    height: 285px;
    width: 95%;
}

.cottage-photo-tall {
    width: 100%;
    height: 100%;
    max-height: 520px;
    object-fit: cover;
    border-radius: 5px;
}

.gallery-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}
@media (max-width: 992px) { .gallery-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 600px) { .gallery-grid { grid-template-columns: repeat(2, 1fr); } }
.gallery-item {
    display: block;
    overflow: hidden;
    border-radius: 6px;
    aspect-ratio: 1 / 1;
}
.gallery-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.3s ease;
}
.gallery-item:hover img { transform: scale(1.05); }
@media (prefers-reduced-motion: reduce) {
    .gallery-item img { transition: none; }
    .gallery-item:hover img { transform: none; }
}

.image-container {
    position: relative;
    width: 100%;
    height: 400px;
    overflow: hidden;
  }
  
  .image-container img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    background-size: cover;
    transition: filter 0.3s ease;
  }
  
  .image-container.hover-gray img:hover {
    filter: grayscale(100%);
}

  .overlay-text {
    position: absolute;
    bottom: 0;
    width: 100%;
    color: white;
    padding: 48px 15px 15px;
    text-align: center;
    box-sizing: border-box;
    background: linear-gradient(to top, rgba(21,25,17,0.85) 0%, rgba(21,25,17,0.55) 60%, rgba(21,25,17,0) 100%);
  }

  .image-container-2 {
    position: relative;
    width: 100%;
    height: 300px;
    overflow: hidden;
}

.image-container-2 img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    background-size: cover;
    transition: filter 0.3s ease;
}

.image-container-2.hover-gray img:hover {
    filter: grayscale(100%);
}

.image-container-2.large{
    height: 370px;
}

.cottage-list {
    background-color: var(--accent-color-3);
    padding:40px 35px;
    width: 100%;
    color: white;
    font-family: var(--font-1)
}

.cottage-list ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

.cottage-list li {
    border-bottom: 1px solid #FFFFFF;
    padding: 10px 5px;
}

.cottage-list a {
    text-decoration: none;
    color: white;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: color 0.3s ease-in-out;
    font-size: 16px;
    font-weight: normal;
}

.cottage-list a:hover {
    color: var(--accent-color);
}

.reply-container{
    display: flex;
    padding: 2em 4em 2em 4em;
}

.nav-btn {
    display: none;
    position: relative;
    left: 20px;
    right: auto;
    background-color: var(--accent-color);
    padding: 5px 10px;
    border-radius: 2px;
    border: none;
}

.sidebar {
    position: fixed;
    top: 0;
    left: -300px;
    width: 300px;
    height: 100%;
    background: var(--pine-deep);
    color: white;
    transition: transform 0.4s ease-in-out;
    z-index: 5;
    overflow-y: auto;
    max-height: 100vh;
}

.sidebar.active{
    transform: translateX(300px);
}

.sidebar-header {
    display: flex;
    justify-content: space-between;
    align-items: start;
    padding: 20px;
}

.sidebar-header .logo {
    width: 75%;
}

.close-btn {
    position: relative;
    font-size: 20px;
    cursor: pointer;
    padding: 6px 12px;
}

.menu {
    list-style: none;
    padding: 0;
    margin-top: 20px;
}

.menu li {
    margin-bottom: 10px;
}

.menu a {
    color: white;
    text-decoration: none;
    padding: 10px;
    display: block;
    border-radius: 5px;
    transition: 0.3s;
}

.menu a:hover,
.menu a.active {
    color: var(--accent-color);
}

.sidebar-dropdown .dropdown-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.sidebar-dropdown-btn {
    background: none;
    border: 1px solid var(--accent-color-2);
    color: var(--accent-color-2);
    font-size: 1rem;
    cursor: pointer;
    padding: 1px 18px;
    border-radius: 24px;
    transition: transform 0.3s ease;
    font-size: 12px;

}
.sidebar-dropdown-btn:hover {
    color: var(--accent-color);
    border: 1px solid var(--accent-color)
}

.sidebar-dropdown-menu {
    list-style: none;
    padding-left: 20px;
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease-in-out, padding 0.3s ease-in-out;
    padding-top: 0;
    padding-bottom: 0;
}

.sidebar-dropdown-menu.active {
    max-height: 210px;
    padding-top: 10px;
    padding-bottom: 10px;
}

.below-dropdown {
    transition: margin-top 0.1s ease-in-out;
    margin-top: 0px;
}

.sidebar::-webkit-scrollbar {
    width: 5px;
}

.sidebar::-webkit-scrollbar-thumb {
    background: gray;
    border-radius: 5px;
}

.banner-image-1{
    background-image: url("../image/background_first.jpg");
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    position: relative;
    padding: 19em 1em 6em 1em;
    min-height: 900px;
}

.banner-image-2{
    background-image: url("../image/bg-exterior-day.webp");
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    position: relative;
    padding: 12em 1em 6em 1em;
}

.banner-interior{
    background-image: url("../image/bg-interior.jpg");
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    position: relative;
    padding: 12em 1em 6em 1em;
}

.banner-nature{
    background-image: url("../image/bg-lake.webp");
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    position: relative;
    padding: 12em 1em 6em 1em;
}

.tranquility-background-img{
    background-image: url("../image/bg-winter.jpg");
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    position: relative;
}

.testimonial-background-img{
    background-image: url("../image/bg-entrance.webp");
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    position: relative;
    padding: 6em 1em 3em 1em;
}

.footer-background-img{
    background-image: url("../image/bg-garden.webp");
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    position: relative;
}


.logo{
    position: relative;
    max-width: 100%;
}

.overlay {
    position: fixed;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100vh;
    background: rgba(0, 0, 0, 0.5);
    transition: left 0.4s ease-in-out;
    z-index: 4;
}

.overlay.active {
   left: 0;
} 

.bg-overlay {
    background: linear-gradient(135deg, #1f1f1fba 28%, #ffffff00 60%);
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}

.bg-overlay-2 {
    background-color: #1f1f1f6e ;
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}
.footer-overlay {
    background-color: #1f1f1fa8 ;
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}

.testimonial-overlay {
    background: linear-gradient(0deg, rgba(15, 15, 15, 0.534), rgba(0, 0, 0, 0.4));
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    right: 0;
}

.bg-accent-opacity {
    background: linear-gradient(0deg, rgba(43, 43, 43, 0.86), rgba(43, 43, 43, 0.86));
}

.linear-gradient {
    padding: 20px;
    background: linear-gradient(270deg, #FFD6D6 0%, #9B72B5 100%);
    border-radius: 50px;
    width: max-content;
}

.cta-overlay {
    background: linear-gradient(90deg, #0B0C0E 0%, rgba(97, 59, 255, 0.3) 100%);
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;

}

.video-overlay {
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    position: absolute;
    background: linear-gradient(180deg, rgba(4, 56, 63, 0.144) 0%, rgba(4, 56, 63, 0.72) 100%);
    opacity: 0.5;
    transition: background 0.3s, border-radius 0.3s, opacity 0.3s;
}

.logo-container {
    max-width: 160px;
}

/* The header's own .navbar .logo{width:85%} rule already controls that
   instance - this only scopes down the footer's, which at the shared
   160px cap rendered oversized next to the small 0.9rem text beside it. */
footer .logo-container {
    max-width: 96px;
}


.divider {
    display: flex;
    margin: 20px 0;
    justify-content: center;
    align-items: center;
}

.line {
    width: 1px;
    height: 100%;
    background: #ccc;
    margin: 0;
}

.lines{
    flex-grow: 0.15;
    height: 3px;
    background: white;
    margin: 10px;
}

.tree-container {
    position: relative;
    min-height: 350px;
    display: flex;
    align-items: flex-end;
}

.tree-img {
    width: 100%;
    max-width: 300px;
    bottom: -5px;
    position: relative;
    overflow: hidden;
}

.bg-image{
    background-size: cover;
    height: 65vh;
}


.animation-bg {
    animation: background_animation 10s forwards;
}

.bg-attach-fixed {
    background-attachment: fixed;
}

.bg-attach-cover {
    background-size: cover;
    background-position: center;
    width: 100%;
    height: 100%;
}

.social-container {
    display: flex;
    flex-direction: row;
    gap: 10px;
}

.social-container-2 {
    position: absolute;
    top: 10px;
    right: 10px;
    display: flex;
    flex-direction: column;
    gap: 10px;
  
  }

.w-70 {
    width: 70%;
}

.stock-img {
    position: relative;
    z-index: 20;
}

.customer-item {
    font-size: 19px;
    transition: all 0.5s;
    display: flex;
    justify-content: center;
    align-items: center;
    color: var(--text-color-2);
    overflow: hidden;
}

.bg-box {
    bottom: 0;
    right: 0;
    height: 60%;
    width: 50%;
    border: solid 3px var(--accent-color-2);
}

.customer-container {
    display: flex;
    flex-direction: row-reverse;
}

.subscribe-container {
    box-sizing: border-box;
    margin-bottom: -8em;
}

.contact-item {
    border-radius: 50%;
    aspect-ratio: 1/1;
    height: 1.5rem;
    transition: all 0.5s;
    display: flex;
    justify-content: center;
    align-items: center;
    color: white;
    background-color: transparent;
}


.social-item {
    border-radius: 100%;
    aspect-ratio: 1/1;
    font-size: 16px;
    width: 30px;
    height: 30px;
    transition: all 0.5s;
    display: flex;
    justify-content: center;
    align-items: center;
    color: white;
    border-radius: 0px;
    background-color: var(--accent-color);
    text-decoration: none;
}

.social-container.accent .social-item {
    background-color: var(--accent-color);
    color: white;
    border-color: var(--accent-color);
}

.social-container.accent .social-item:hover {
    background-color: var(--accent-color);
    color: white;

}

.social-container.share .social-item {
    background-color: var(--accent-color);
    color: white;
}

.social-container.share .social-item:hover {
    background-color: var(--accent-color);
    color: white;
    border: 1px solid var(--accent-color);
}


.social-container.team .social-item {
    width: 1.8rem;
    height: 1.8rem;
    font-size: 16px;
}


.social-item:hover {
    background-color: var(--accent-color-3);
    color: var(--accent-color-2);
    border: solid 1px var(--accent-color-2);
}

.social-container .share-button {
    background-color: var(--accent-color-1);
    aspect-ratio: 1/1;
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
}

.share-button:hover {
    background-color: var(--accent-color-2);
}

.nav-tabs {
    border-bottom: none;
}

.nav-tabs .nav-link {
    background-color: transparent;
    color: var(--accent-color-2);
    border: none;
    position: relative;
}

.nav-tabs .nav-link:hover {
    border: none;
    color: white;
}

.nav-tabs .nav-link.active {
    background-color: transparent;
    border: none;
    color: var(--accent-color);
}

.nav-tabs .nav-link.active::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 2px;
    background-color: var(--accent-color);
}


.breadcrumb {
    display: flex;
    align-items: center;
    font-size: 16px;
    margin-top: 100px;
}

.breadcrumb a {
    font-weight: normal;
    color: var(--accent-color-2);
    font-size: 16px;
    transition: color 0.3s ease-in-out;
}

.breadcrumb a:hover {
    color: var(--accent-color);
}

.breadcrumb .separator {
    margin: 0 8px;
    color: var(--primary);
}

.breadcrumb .current {
    color: var(--accent-color-2);
    font-weight: normal;
}

.swiperCottages {
    width: 100%;
    height: 180px;
    margin: 0 auto;
    padding: 10px 0;
    display: flex;
    justify-content: center;
    align-items: center;
    overflow: hidden;
}


.swiperCottages .swiper-slide img {
    display: block;
    width: 100%;
    max-width: 100%;
    height: 100%;
    object-fit: cover;
    aspect-ratio: 1 / 1;
    border-radius: 0px;
    transition: transform 0.3s ease-in-out;
    margin: auto;
}

.swiper-pagination {
    position: relative;
}
.swiper-pagination-bullet {
    width: 6px; 
    height: 6px;
    background-color: #000; 
    opacity: 0.3; 
}

.swiper-pagination-bullet:nth-child(n+6) {
    display: none;
  }  

.swiper-pagination-bullet-active {
    background-color: #000000;
    opacity: 1;
}

.swiper-image{
    width: 50%;
    height: 150px;
    border-radius: 10px;
    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2);
    object-fit: cover;
}


.video-container {
    aspect-ratio: 3/2;
    background-size: cover;
    background-position: center;
    position: relative;
    border: 5px solid white;
    border-radius: 10px;
}

.video-iframe {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}

.video-btn {
    border-radius: 50%;
    aspect-ratio: 1/1;
    width: 4rem;
    background-color: var(--accent-color);
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 0;
    font-size: 2rem;
    color: white;
    border: none;
    opacity: 0.7;
}

.video-btn:hover {
    opacity: 1;
    color: white;
}

.border-testimonial {
    border-right: 5px solid var(--accent-color-2);
}



.card {
    border: none;
    border-radius: 0px;
    transition: all 0.5s;
    background-color: var(--primary);
}

.card-service {
    color: var(--accent-color-2);
    position: relative;
    background-size: cover;
    background-position: center;
    border: 1px solid #ccc;
    width: 100%;
    height: 100%;
}

.card-service:hover {
    border: 1px solid var(--accent-color);
}

.blog-date-post{
    font-family: var(--font-2);
    font-size: 12px;
    color: #ccc;
}

.background-hover {
    position: absolute;
    background-size: cover;
    background-position: center;
}

.card-service:hover .background-hover {
    
    opacity: 1;
    width: 100%;
    height: 300px;
}

.card-service.img-hover:hover {
    background-image: var(--url-image);
    opacity: 100%;
    filter: grayscale(100%);
    width: 100%;
    height: 300px; 
}

.image-hover {
    opacity: 100%;
    position: absolute;
}

.card-service:hover .image-hover {
    filter: grayscale(100%);
}

.testimonial-person{
    width: 70px; 
    height: 70px; 
    object-fit: cover;
    border: 2px solid white;
}

.quote-icon {
    right: 5px;
    bottom: 10px;
}

.card-testimonial {
    border: none;
    border-radius: 20px;
    transition: all 0.5s;
    background-color: var(--accent-color-3);
}

.service-box {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0px;

}

.icon-box {
    background-color: var(--paper);
    color: var(--pine);
    border: 1.5px solid var(--pine);
    border-radius: 50%;
    width: 45px;
    height: 45px;
    aspect-ratio: 1/1;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.icon-box-2 {
    background-color: var(--accent-color-2);
    color: var(--accent-color);
    width: 50px;
    height: 50px;
    aspect-ratio: 1/1;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--accent-color);
}

.author-box {
    border-radius: 50%;
    width: 6rem;
    height: 6rem;
    transition: all 0.5s;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-left: -6px;
    overflow: hidden;
}

.list .icon-box {
    width: 4.3rem;
    height: 4.3rem;
}

.card .icon-box.bg-accent-color {
    background-color: var(--accent-color);
    color: var(--accent-color);
}

.card .icon-box.accent-color-2 {
    color: var(--accent-color-2);
    font-size: 4rem;
}

.card:hover .icon-box.accent-color-2 {
    color: var(--accent-color-2);
}

.card:hover {
    transform: translateY(0px);
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}

.card-testimonial:hover {
    transform: translateY(-20px);
    box-shadow: 0px 0px 0px 2px var(--accent-color-2);
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
}

.card.card-pricing {
    background-color: transparent;
    font-family: var(--font-2);
    color: var(--text-color);
    border: 0.5px solid #ccc;
}


.card-pricing-middle {
    flex: 1.00;
    background-color: var(--accent-color);
    border: 1px solid var(--text-color);
    color: white;
}

.card:hover .icon-box.bg-accent-color {
    background-color: var(--accent-color);
    color: var(--accent-color-2);

}

.card.card-outline-hover {
    box-shadow: 0 7px 15px 0 rgba(0, 0, 0, .13), 0 1px 4px 0 rgba(0, 0, 0, .11);
    color: var(--accent-color);


}

.card.card-outline-hover:hover {
    box-shadow: 0px 0px 0px 2px var(--accent-color);
    background-color: var(--accent-color);
    color: var(--primary);

}

.card.card-outline-hover:hover .btn-accent {
    background-color: transparent;
    color: var(--accent-color-2);
    transition: all 0.5s;
    border: 2px solid var(--accent-color-2);
    text-transform: uppercase;

}

.card-overlay .card-body {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    filter: grayscale(100%);
    opacity: 0;
    transform-origin: bottom;
    transition: all 0.5s;
}

.card-overlay:hover .card-body {
    opacity: 1;
    transform: scaleY(1);
}

.card:hover .icon-box.bg-accent-color {
    background-color: white;
    color: var(--accent-color);
}

.card:hover p {
    transition: all 0.5s;
}

.card .link {
    color: var(--accent-color);
}

.card:hover .link {
    color: white;
}

.request-loader {
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 2rem;
    background-color: var(--accent-color);
    color: var(--accent-color-2);
    border: none;
    border-radius: 50%;
    width: 60px;
    height: 60px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.request-loader:hover {
    border: solid 2px var(--accent-color);
    color: var(--accent-color);
    background-color: transparent;
}


.request-loader::after,
.request-loader::before {
    opacity: 0.2;
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    position: absolute;
    content: '';
    height: 100%;
    width: 100%;
    color: var(--accent-color);
    border: 4px solid currentColor;
    border-radius: 50%;
    animation-name: ripple;
    animation-iteration-count: infinite;
    animation-timing-function: cubic-bezier(.65, 0, .34, 1);
    z-index: 0;
}

.request-loader::after {
    animation-delay: 0.5s;
    animation-duration: 3s;
}

.request-loader::before {
    animation-delay: 0.2s;
    animation-duration: 3s;
}


.r-progress {
    --value: 17;
    --progress-color: var(--accent-color);
    --secondary-progress-color: var(--accent-color-3);
    --animation-duration: 2000;
}

.r-progress-bar {
    position: relative;
    height: 12px;
    background-color: var(--secondary-progress-color);
    display: flex;
    border-radius: 10px;
    /* overflow: hidden; */
}

.r-progress-bar .progress-value {
    height: 100%;
    width: calc(var(--progress) * 1%);
    background-color: var(--progress-color);
    position: relative;
    border-radius: 10px;
    animation: load;
    animation-fill-mode: forwards;
    animation-duration: calc(var(--animation-duration) * 1ms);
    animation-timing-function: linear;
    animation-delay: 500ms;
    color: black;
}

.r-progress-bar.percentage-label::after {
    counter-reset: percentage var(--progress);
    content: counter(percentage) '%';
    display: block;
    position: absolute;
    left: calc((var(--progress) * 1%));
    animation: load;
    animation-fill-mode: forwards;
    animation-duration: calc(var(--animation-duration) * 1ms);
    animation-timing-function: linear;
    animation-delay: 500ms;
    font-size: 18px;
    line-height: 1.2;
    /* font-weight: 700; */
    font-family: var(--font-1);
    bottom: calc(100% + 0.5rem);
}

.ifr-video {
    aspect-ratio: 16/9;
    width: 100%; 
    height: 80vh;
}

.post-button {
    background-color: transparent;
    color: var(--accent-color) !important;
    border: none !important;
}

.post-button:hover {
    background-color: transparent !important;
    color: var(--accent-color) !important;
    transform: scale(1.15);
}

.card.with-border-bottom {
    border-bottom: 5px solid var(--accent-color) !important;
}


.list-flush-horizontal {
    display: flex;
    flex-direction: row;
    list-style: none;
    margin: 0;
    padding: 1rem;
}

.list-flush-horizontal .list-item:first-child,
.list-flush-horizontal .list-item {
    border-right: 1px solid white;
}

.list-flush-horizontal .list-item:last-child {
    border-left: 1px solid white;
    border-right: none;
}

.list-flush-horizontal .list-item:nth-last-child(2) {
    border: none;
}

.list-group .list-group-item .link {
    background-color: transparent;
    border: 1px solid var(--accent-color);
    color: var(--accent-color);
    transition: all 0.5s;
}

.list-group .list-group-item .link:hover {
    border-color: var(--accent-color) !important;
    color: white !important;
    background-color: var(--accent-color);
}

.list-group .list-group-item.active {
    background-color: var(--accent-color-2);
    color: var(--accent-color);
}

.list-group .list-group-item.list-group-item-action:hover {
    background-color: var(--accent-color-2);
    color: white;
}

.list {
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    padding-inline: 0.5rem;
}

.list .link {
    font-weight: 400;
    text-wrap: nowrap;
}

.list li {
    padding: 0;
    font-size: 16px;
    font-weight: normal;
    font-family: var(--font-2);
}
.list li i {
    transition: all 0.5s;
    color: var(--accent-color-2);
}

.list.text-black i {
    color: #131313;
}

.list li .link:hover,
.list li .link:hover i {
    color: var(--accent-color-2);
}

.card .link {
    color: var(--accent-color);
    transition: color 0.5s;
}

.card .link:hover {
    color: var(--primary);
}

.link.accent-color {
    color: var(--accent-color);
    transition: color 0.5s;
}

.link.accent-color:hover {
    color: var(--dark-bg);
}

.link {
    color: var(--accent-color);
}

.link:hover {
    color: var(--primary);
}

.link-white {
    color: white;
}

.link-white:hover {
    color: var(--accent-color);
}

.glass-effect {
    background: rgba(21, 34, 25, 0.88);
    backdrop-filter: blur(11px);
    -webkit-backdrop-filter: blur(11px);
}

.fs-very-large {
    font-size: 4.125rem;
}

.border-bottom-hover:hover {
    border-bottom: 2px solid var(--accent-color);
}

.testimonial-container {
    background-color: transparent;
    display: flex;
    flex-direction: column;
    height: 100%;
    max-width: 800px;
}

.services-container {
    background-color: transparent;
    padding: 30px;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    height: 100%;
    box-shadow: 0px 0px 18px 0px rgba(0, 0, 0, 0.1);
}

.rating {
    list-style: none;
    display: flex;
    flex-direction: row;
    gap: 0.75rem;
    padding: 0;
    margin: 0;
}

.rating li {
    color: #f1c644;
}

.rating li.inactive {
    color: #d9d9d9;
}

.logo-partner {
    filter: brightness(200%) contrast(0%) saturate(0%) blur(0px) hue-rotate(0deg);
    transition-duration: 0.5s;
}

.logo-partner:hover {
    filter: none;
}


.accordion .accordion-item {
    background-color: transparent;
    border: none;
    color: var(--accent-color-3);
    outline: none;
    border-radius: 4px;
}

.accordion .accordion-item .accordion-body {
    color: var(--accent-color-3);
    font-family: var(--font-1);
}

.accordion-button:focus {
    box-shadow: none;
}

.accordion .accordion-button {
    background-color: var(--primary);
    border: none;
    outline: none;
    border-radius: 0px !important;
    font-weight: 400;
    font-family: var(--font-1);
    font-size: 20px;
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: row;
    justify-content: start;
    padding-block: 1rem;
    color: var(--accent-color-3);
    font-weight: bold;
}

.accordion-button::after {
    background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="%23414260" class="bi bi-chevron-down" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/></svg>');
}

.accordion-button:not(.collapsed)::after {
    background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="white" class="bi bi-arrow-up" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8 2a.5.5 0 0 1 .5.5v10.793l3.146-3.147a.5.5 0 1 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 1 1 .708-.708L7.5 13.293V2.5A.5.5 0 0 1 8 2z"/></svg>');
}

.accordion .accordion-button:not(.collapsed) {
    color: var(--text-color);
    font-weight: 400;
    background-color: var(--accent-color);
    border: none;
    font-weight: bold;
    box-shadow: none;
    border: none;
    color: var(--accent-color-2);
    outline: none;
    border-radius: 0px !important;
}

.custom-border {
    border-width: 5px;
    border-style: solid;
    border-color: white;
    border-radius: 20px;
}

.position-xl-absolute {
    position: absolute;
}

.w-60 {
    width: 60% !important;
}

.shadow-double {
    box-shadow: 40px -40px 0px -4px var(--accent-color), -54px 44px 0px -3px var(--text-color-2);
}

.shadow-single-left {
    box-shadow: -54px 44px 0px -3px var(--accent-color);
}

.shadow-single-right {
    box-shadow: 40px -40px 0px -4px var(--accent-color);
}

.shadow-accent-2 {
    -webkit-box-shadow: -90px -23px 0px 0px var(--accent-color);
    -moz-box-shadow: -90px -23px 0px 0px var(--accent-color);
    box-shadow: -90px -23px 0px 0px var(--accent-color);
}

.text-404 {
    font-size: 8rem;
    font-family: var(--font-1);
    font-weight: 600;
    
}

.floating-image {
    position: absolute;
    width: 45%;
}


.floating-banner {
    position: absolute;
    width: 50%;
    padding-right: 5rem;
}

.floating-top {
    margin-top: 16rem;
    top: 0;
    width: 15rem;
    position: absolute;
}

.floating-top-1 {
    margin-top: 4rem;
    width: 11rem;
    position: absolute;
}

.floating-top-2 {
    top: -4rem;
    left: 8rem;
}

.floating-bottom {
    bottom: -10%;
    left: 5%;
    position: absolute;
}


.d-inline-block {
    display: inline-block;
}

.position-responsive {
    position: absolute;
}

.fade-in.active{
    animation: fadeIn 1.5s ease-out forwards;
}

.fade-in-left.active {
    animation: fadeInLeft 1s ease-out forwards;
}

.fade-in-right.active {
    animation: fadeInRight 1s ease-out forwards;
}

.fade-in-up.active {
    animation: fadeInUp 1s ease-out forwards;
}

.fade-in-down.active {
    animation: fadeInDown 1s ease-out forwards;
}

@media (prefers-reduced-motion: reduce) {
    .fade-in, .fade-in-left, .fade-in-right, .fade-in-up, .fade-in-down,
    .fade-in.active, .fade-in-left.active, .fade-in-right.active, .fade-in-up.active, .fade-in-down.active {
        opacity: 1;
        transform: none;
        animation: none;
        transition: none;
    }
}

@media screen and (max-width: 1025px) {
    h1 {
        font-size: 36px;
    }

    h2{
        font-size: 32px;
    }

    h3 {
        font-size: 24px;
    }

    h4 {
        font-size: 22px;
    }

    h5 {
        font-size: 18px;
    }


    p,
    button,
    a {
        font-size: 16px;
        font-family: var(--font-2);
    }

    .image-fade{
        display: none;
    }

    .nav-btn{
        display: block;
        left: 100px;
        top: 4px;
        right: auto;
        padding: 4px 16px;
        border: none;
    }

    .bg-overlay {
        background: linear-gradient(0deg, rgba(15, 15, 15, 0.534), rgba(0, 0, 0, 0.226));
        position: absolute;
        width: 100%;
        height: 100%;
        top: 0;
        left: 0;
    }

    #service-col {
        width: 100%;
        margin-bottom: 20px;
    }

    .service-box {
        flex-direction: row;
        text-align: start;
    }

    .icon-box {
        margin-bottom: 10px;
        align-self: flex-start;
    }

    .fs-very-large {
        font-size: 3.125rem;
    }

    .text-404 {
        font-size: 8rem;
        font-weight: 700;
    }
    .blog-container{   
        max-width: 100%;
        padding: 0;
    }

    .image-absolute-1 {
        left: 45%;
        top: 35%;
    }

    .image-bg {
        padding-bottom: 24rem;
    }

    .border-custom {
        border-width: 0px 0px 1px 0px;
    }

    .outer-margin {
        margin-right: 0;
    }

    .activities-container {
        width: 100%;
            display: flex;
            justify-content: center;

    }

    .activities-container img{
        width: 100%;
            max-width: 100vw;
    }
    .nav-link {
        padding-block: 0.5rem;
        text-align: center;
    }

    .dropdown-menu {
        width: 100%;
        box-shadow: none;
    }

    .video-e119 {
        width: 85%;
        margin-left: -1.5rem;
    }

    .dropdown-item {
        padding-block: 0.35rem;
    }

    .floating-image {
        position: inherit;
        width: 100%;
    }

    .floating-price {
        top: -2rem;
        right: -4.8rem;
    }

    .floating-banner {
        position: inherit;
        padding-right: 0;
        margin-bottom: 2rem;
        width: 100%;
    }

    .floating-top {
        margin-top: 0rem;
        width: 100%;
        position: relative;
    }

    .floating-top-1 {
        margin-top: 0rem;
        width: 100%;
        position: relative;
    }

    .floating-top-2 {
        top: -4rem;
        left: 5rem;
    }

    .floating-bottom {
        margin-top: 1rem;
        width: 100%;
        position: inherit;
        left: 0;
    }

    .border-testimonial {
        border-right: none;
    }

    .service-container {
        background-color: transparent;
        padding: 30px;
        display: flex;
        flex-direction: column;
        gap: 1.75rem;
        box-shadow: 0px 0px 18px 0px rgba(0, 0, 0, 0.1);
        height: 100%;
    }

    .appointment-box {
        top: -2rem;
        bottom: 0;
        left: 0;
        right: 0;
        height: 8rem;
    }

    .w-md-70 {
        width: 70%;
    }

    .w-md-60 {
        width: 60%;
    }

    .position-responsive {
        position: relative;
    }

    .form-appointment-container {
        position: relative;
        transform: translateY(0);
    }

    .list-flush-horizontal {
        flex-direction: column;
    }

    .list-flush-horizontal .list-item:first-child,
    .list-flush-horizontal .list-item {
        border-right: none;
        border-bottom: 1px solid white;
    }

    .list-flush-horizontal .list-item:last-child {
        border-left: none;
        border-bottom: none;
        border-top: 1px solid white;
    }

    .position-xl-absolute {
        position: static;
    }

    .banner-heading {
        font-size: 44px;
    }

    .small-h2{
        font-size: 28px;
    }
    
    .card-service {
        color: var(--accent-color-2);
        position: relative;
        background-size: cover;
        background-position: center;
        width: 100%;
        height: 100%;
    }

    .lines{
        flex-grow: 0.150;
    }

    .maps-large{
        height: 100vh;
    }
}

@media screen and (max-width: 768px) {
    .image-bg {
        background-size: cover !important;
        padding-bottom: 19rem;
    }

    .line {
        height: 100%;
    }

    .nav-btn {
        position: absolute !important;
        justify-content: center;
        top: 28px;
        right: 200px;
        left: auto;
    }

    .small-image{
        height: 200px;
    }

    .section {
        padding: 4em 1em 4em 1em;
    }

    .banner-image-1 {
        padding: 10em 1em 4em 1em;
    }

    .banner-image-2,
    .banner-interior,
    .banner-nature {
        padding: 9.75em 1em 4em 1em;
    }

    .testimonial-background-img {
        padding: 4em 1em 3em 1em;
    }

}

@media screen and (max-width: 425px) {

    h1 {
        font-size: 32px;
    }

    h2{
        font-size: 28px;
    }

    h3 {
        font-size: 24px;
    }

    h4 {
        font-size: 22px;
    }

    h5 {
        font-size: 18px;
    }


    span,
    p,
    button {
        font-size: 16px;
        font-family: var(--font-2);
    }

    a {
        text-decoration: none;
        font-weight: 500;
        font-size: 14px;
    }

    .nav-btn {
        position: absolute !important;
        justify-content: center;
        top: 28px;
        right: 20px;
        left: auto;
    }
    
    .breadcrumb{
        margin-top: 50px;
    }
    
    .navbar .social-container {
        display: none;
    }
    .button-container {
        flex-direction: row !important; 
    }

    .banner-heading {
        font-size: 36px;
    }

    .small-h2{
        font-size: 25.6px;
    }
}
/* ============================================================
   "The Lantern Hour" — editorial redesign layer.
   Same palette and type families as above; this layer overrides
   the specific shapes and scale that made every section look
   like a stock Bootstrap component (icon-circles, boxed cards,
   square buttons, chevron-in-a-box accordions). Appended rather
   than edited in place so the original component rules above
   stay intact and this stays a reviewable, single diff.
   ============================================================ */

:root {
    /* --ember lightened for text set on dark photo grounds - plain
       --ember only clears 2.69:1 on --pine-deep (fails even the 3:1
       large-text floor); this clears 3.97:1. Keep --ember for text on
       --paper/--stone, where it already passes at 5.44:1 / 4.62:1. */
    --ember-bright: #AD6C56;
}

/* ---- Buttons: pill shape, two tones, everywhere .btn-* is used ---- */
.btn {
    border-radius: 999px !important;
    padding: 14px 28px;
    font-family: var(--font-2);
    font-weight: 600;
    font-size: 15px;
    letter-spacing: 0.01em;
    border: none;
}

.btn-accent {
    background-color: var(--pine);
    color: var(--paper);
}
.btn-accent:hover {
    background-color: var(--pine-deep);
    color: var(--paper);
}

.btn-white-accent {
    background-color: var(--paper);
    color: var(--ink);
    border: 1px solid transparent;
}
.btn-white-accent:hover {
    background-color: #fff;
    color: var(--ink);
    border-color: transparent;
}

.btn-accent-outline {
    background-color: transparent;
    border: 1.5px solid var(--paper);
    color: var(--paper);
}
.btn-accent-outline:hover {
    background-color: var(--paper);
    color: var(--ink);
}

/* ---- Editorial type scale for headings that carry the page ---- */
.banner-heading {
    font-size: clamp(2.75rem, 4vw + 1.5rem, 5rem);
    line-height: 1.05;
    letter-spacing: -0.01em;
}

h2.font-1 {
    font-size: clamp(1.9rem, 1.1vw + 1.5rem, 2.75rem);
    line-height: 1.15;
    letter-spacing: -0.005em;
}

h2.font-1 em, h1 em, .banner-heading em {
    font-style: italic;
}

/* Section kicker - was a plain small heading, now a tracked eyebrow */
.eyebrow.accent-color {
    font-family: var(--font-2);
    font-size: 0.78rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    font-weight: 600;
}

/* ---- Softer, larger corners on every photo container ---- */
.image-container,
.image-container-2,
.cottage-photo-tall,
.gallery-item,
.small-image {
    border-radius: 18px;
}

/* ---- Fact rows: a thin accent rule + label, replacing icon-circles ---- */
.fact-row {
    position: relative;
    padding-left: 22px;
}
.fact-row::before {
    content: "";
    position: absolute;
    left: 0;
    top: 3px;
    bottom: 3px;
    width: 3px;
    border-radius: 2px;
    background: var(--ember);
}
.fact-row h3,
.fact-row h4 {
    font-family: var(--font-1);
    font-weight: 400;
    font-size: 1.15rem;
}

/* ---- Accordion: rounded, no more chevron-in-a-grey-box ---- */
.accordion .accordion-item {
    border-radius: 14px;
    overflow: hidden;
    margin-bottom: 10px;
}
.accordion .accordion-button {
    border-radius: 0 !important;
    font-family: var(--font-1);
    font-weight: 500;
    font-size: 1.1rem;
    background: var(--paper);
    padding: 1.1rem 1.35rem;
}
.accordion .accordion-button:not(.collapsed) {
    background: var(--pine);
    color: var(--paper);
}
.accordion-button::after {
    background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="%2324392C" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z"/></svg>');
}
.accordion .accordion-item .accordion-body {
    padding: 1.1rem 1.35rem 1.4rem;
}

/* ---- Form focus state: ember instead of the old accent-color ---- */
.form-control:focus,
.form-control:active,
.form input:focus,
.form textarea:focus {
    border-bottom: 1px solid var(--ember) !important;
}

/* ---- Nav & footer type ---- */
.navbar-nav .nav-link {
    font-family: var(--font-2);
    font-size: 0.85rem;
    letter-spacing: 0.03em;
    font-weight: 500;
}
footer h3 {
    font-family: var(--font-1);
    font-weight: 400;
    font-size: 1.35rem;
}

/* Copyright line: was spanning the full r-container width (up to
   1440px), stretching to 2-3 near-edge-to-edge lines on a wide
   screen. Narrowed to a centered column and dropped a size, matching
   the fine-print treatment used elsewhere (.small-description). */
footer .text-center.py-5 {
    max-width: 640px;
    margin-left: auto;
    margin-right: auto;
}
footer .text-center.py-5 span {
    font-size: 0.8rem;
    opacity: 0.85;
}

/* I Feel Slovenia badge: the mark's own guidelines forbid placing it
   directly on a photo with similar (green/earthy) tones - which the
   footer background is - so it gets its own solid paper-colour chip,
   same treatment as .btn-white-accent elsewhere on dark photo sections. */
.partner-badges {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.6rem;
}
.tourism-badge {
    display: inline-flex;
    align-items: center;
    background-color: var(--paper);
    padding: 0.55rem 0.85rem;
    border-radius: 6px;
    margin-top: 0.25rem;
}
.tourism-badge img {
    display: block;
    width: 110px;
    height: auto;
}
/* bazilo badge: stacked below I Feel Slovenia, same overall chip size
   (width from the shared padding, height forced to match exactly) -
   the logo is shrunk from the standard 110px so a tagline still fits
   inside that same footprint instead of growing the chip taller. */
.tourism-badge.bazilo-badge {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 72.29px;
    gap: 2px;
}
.tourism-badge.bazilo-badge img {
    width: 36px;
}
.bazilo-tagline {
    font-size: 9px;
    line-height: 1.1;
    color: var(--ink);
    text-align: center;
    max-width: 110px;
}

/* ---- Breadcrumb: quieter, tracked-out like the hero eyebrow ---- */
.breadcrumb {
    font-family: var(--font-2);
    font-size: 0.78rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

/* ============================================================
   Hero ("The Lantern Hour" frame) - index.html only
   ============================================================ */

.hero-stage {
    padding: clamp(10px, 2vw, 26px);
}

.hero-frame {
    position: relative;
    width: 100%;
    min-height: calc(100vh - clamp(20px, 4vw, 52px));
    border-radius: clamp(18px, 2.4vw, 40px);
    overflow: hidden;
    background: var(--pine-deep);
    box-shadow: 0 40px 90px -30px rgba(0, 0, 0, 0.55);
}

.hero-frame img.hero-photo {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 22% 42%;
}

.hero-scrim {
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        linear-gradient(to top, rgba(15, 24, 18, 0.95) 0%, rgba(15, 24, 18, 0.6) 40%, rgba(15, 24, 18, 0.02) 68%),
        linear-gradient(to right, rgba(15, 24, 18, 0.4) 0%, rgba(15, 24, 18, 0) 38%);
}

.hero-topbar {
    position: absolute;
    top: clamp(20px, 3vw, 40px);
    left: clamp(20px, 3vw, 44px);
    right: clamp(20px, 3vw, 44px);
    display: flex;
    align-items: center;
    justify-content: space-between;
    z-index: 3;
}

.hero-topbar .logo {
    width: clamp(42px, 4.5vw, 56px) !important;
    height: auto;
}

.hero-menu-hint {
    font-family: var(--font-2);
    font-size: 0.72rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--stone);
    opacity: 0.85;
    font-weight: 600;
    cursor: pointer;
    background: none;
    border: none;
}

.hero-content {
    position: relative;
    z-index: 3;
    min-height: calc(100vh - clamp(20px, 4vw, 52px));
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: clamp(28px, 5vw, 72px);
    padding-top: clamp(120px, 16vw, 190px);
}

.hero-copy {
    max-width: 760px;
    position: relative;
}

.hero-accent-rule {
    position: absolute;
    left: -26px;
    top: 6px;
    bottom: 8px;
    width: 3px;
    background: var(--ember-bright);
    border-radius: 2px;
}

.hero-eyebrow {
    font-family: var(--font-2);
    font-size: clamp(0.72rem, 0.9vw, 0.84rem);
    letter-spacing: 0.24em;
    text-transform: uppercase;
    font-weight: 600;
    color: var(--stone);
    margin: 0 0 clamp(14px, 2vw, 20px) 0;
}

.hero-content h1 {
    font-family: var(--font-1);
    font-weight: 400;
    font-size: clamp(2.6rem, 3.1vw + 1.6rem, 5.2rem);
    line-height: 1.06;
    letter-spacing: -0.01em;
    margin: 0 0 clamp(18px, 2.6vw, 30px) 0;
    color: var(--paper);
    text-wrap: balance;
}

.hero-content h1 em {
    font-style: italic;
    color: var(--ember-bright);
}

.hero-sub {
    font-family: var(--font-2);
    font-size: clamp(1rem, 1vw + 0.7rem, 1.15rem);
    line-height: 1.65;
    color: var(--stone);
    max-width: 46ch;
    margin: 0 0 clamp(28px, 4vw, 40px) 0;
}

.hero-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: clamp(18px, 3vw, 30px);
}

.hero-actions .btn-accent-outline {
    border-color: rgba(231, 223, 204, 0.4);
    color: var(--stone);
    padding: 0;
    background: none;
    border: none;
    font-weight: 500;
    border-bottom: 1px solid rgba(231, 223, 204, 0.4);
    border-radius: 0 !important;
    padding-bottom: 2px;
}
.hero-actions .btn-accent-outline:hover {
    color: var(--paper);
    background: none;
    border-bottom-color: var(--paper);
}

.hero-fact {
    position: absolute;
    right: clamp(28px, 5vw, 72px);
    bottom: clamp(28px, 5vw, 72px);
    z-index: 3;
    text-align: right;
    font-family: var(--font-1);
    color: var(--stone);
}
.hero-fact .hero-fact-num {
    font-size: clamp(1.6rem, 1.6vw + 1rem, 2.4rem);
    color: var(--paper);
    display: block;
    line-height: 1;
}
.hero-fact .hero-fact-label {
    font-family: var(--font-2);
    font-size: 0.68rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--stone);
    opacity: 0.8;
}

.hero-scrollcue {
    position: absolute;
    left: 50%;
    bottom: clamp(18px, 2.6vw, 28px);
    transform: translateX(-50%);
    z-index: 3;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    opacity: 0.75;
}
.hero-scrollcue .hero-scrollcue-word {
    font-family: var(--font-2);
    font-size: 0.65rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--stone);
}
.hero-scrollcue .hero-scrollcue-line {
    width: 1px;
    height: 28px;
    background: linear-gradient(to bottom, var(--stone), transparent);
    animation: hero-drip 2.4s ease-in-out infinite;
}
@keyframes hero-drip {
    0% { transform: scaleY(0.3); transform-origin: top; opacity: 0.4; }
    50% { transform: scaleY(1); transform-origin: top; opacity: 1; }
    100% { transform: scaleY(0.3); transform-origin: top; opacity: 0.4; }
}
@media (prefers-reduced-motion: reduce) {
    .hero-scrollcue .hero-scrollcue-line { animation: none; }
}

@media (max-width: 720px) {
    .hero-frame { border-radius: 20px; }
    .hero-content { padding: 22px; padding-top: 108px; }
    .hero-fact { position: static; margin-top: 32px; text-align: left; right: auto; bottom: auto; }
    .hero-accent-rule { left: -16px; }
    .hero-copy { padding-left: 8px; }
    .hero-topbar { top: 18px; left: 18px; right: 18px; }
    .hero-menu-hint { display: none; }
}

.list-ember li::before {
    background-color: var(--ember);
    width: 22px;
}
.list-ember li {
    font-size: 1.05rem;
}

/* .nav-btn: always visible, normal flex flow — the old positioning
   hacks above were built for the previous full-link-list header and
   only worked because they were paired with navbar-expand-xl's own
   show/hide; that pairing is gone now that the header is just
   logo + CTA + this one menu trigger. */
.nav-btn {
    display: flex !important;
    position: static !important;
    top: auto;
    right: auto;
    left: auto;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
}

/* ---- Closing CTA: the hero's frame language, shorter, one bookend ---- */
.cta-frame {
    position: relative;
    border-radius: clamp(18px, 2.4vw, 40px);
    overflow: hidden;
    min-height: 420px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.cta-frame img.cta-photo {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.cta-frame .cta-scrim {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(to top, rgba(15, 24, 18, 0.82) 0%, rgba(15, 24, 18, 0.45) 55%, rgba(15, 24, 18, 0.25) 100%);
}
.cta-frame .cta-copy {
    position: relative;
    z-index: 2;
    text-align: center;
    padding: 48px 24px;
    max-width: 620px;
}
.cta-frame .eyebrow { color: var(--stone) !important; }
.cta-frame h2 { color: var(--paper); }
.cta-frame p { color: var(--stone); }

/* Scroll cue is decorative only (aria-hidden) - on shorter viewports
   the headline+sub-copy block runs close enough to the bottom that it
   collides with the CTA row (confirmed at 768x1024). Only show it
   where there's real slack underneath the content. */
@media (max-height: 1050px) {
    .hero-scrollcue { display: none; }
}

/* Chrome around third-party embeds (Bentral calendar/booking) and the
   contact form panel - the embedded widgets themselves can't be
   restyled, but the frame around them can match the rest of the site. */
.card.card-pricing {
    background-color: var(--paper);
    border: 1px solid var(--stone);
    border-radius: 18px;
}

.bg-accent-color-3.p-5 {
    border-radius: 18px;
}

/* Inline links in body copy (legal pages, contact details, payment info)
   were inheriting the base `a` rule's --accent-color-2, a near-white
   cream meant for text on dark sections (hero, footer, nav). On the
   light page background that's ~1:1 contrast - functionally invisible.
   Scoped to <p> so hero/footer/nav links (already explicitly classed
   accent-color-2, and correctly light-on-dark) are untouched.
   Same bug, same fix, for the other light-background contexts that
   put a link directly inside their own element rather than inside a
   <p>: FAQ accordion answers (.accordion-body), the pricing/story
   fact lists (.list-ember li), and the About page's <dl> of business/
   contact details (dd) - all were still falling through to the
   near-invisible default. */
p a:not(.btn),
.accordion-body a:not(.btn),
.list-ember a:not(.btn),
dd a:not(.btn) {
    color: var(--pine);
    text-decoration: underline;
    text-underline-offset: 2px;
}
p a:not(.btn):hover,
.accordion-body a:not(.btn):hover,
.list-ember a:not(.btn):hover,
dd a:not(.btn):hover {
    color: var(--ember-bright);
}

/* ============================================================
   Book page-turn scroll - #story, #cabin, #around-you, #gallery
   are physical "sheets": as you scroll down through one, it lifts
   at the bottom-right and rotates open toward the top-left (hinged
   there, like a book's spine), revealing the next sheet
   underneath. Same paper/moss/terracotta rounded-frame look as the
   hero (.hero-frame), same clamp() values, on purpose.

   .page-sheet is `min-height`, not a fixed `height` - it was fixed
   with an inner `overflow-y: auto` at first, so the Bentral price
   table and the photo mosaic couldn't stretch it or get clipped by
   it. In practice that read as a bug: a photo sitting right at the
   box's edge just looked sliced off, because nobody expects or
   finds a scrollbar nested inside a page. min-height lets the
   sheet grow to fit its own content instead, same as a normal
   page - which is also why #pricing isn't one of these anymore.
   Its content is Bentral's price-list table, rendered by their own
   script with a height we don't control at all; a page that's tall
   or short depending on what a third party's JS does on a given
   day is a bad fit for a "turning page" that's meant to feel like
   a fixed object. Pricing is a normal page now, its price list
   lives on book.html - the same pattern #faq already uses: a
   teaser here, the full thing on faq.html.

   .page-spacer is the outer, tall (200vh) element that gives the
   turn scroll distance to play out in; .page-sheet is the visual
   page, pinned inside it. The rotation itself is driven by
   js/script.js (rAF-throttled scroll handler, respects
   prefers-reduced-motion) rather than CSS alone, since the amount
   of turn has to track how far scrolled through THIS section's
   own range - a plain CSS transition has no notion of that.

   z-index starts at 10, comfortably clear of the header/sidebar
   chrome (navbar:3, overlay:4, sidebar:5), so the open mobile menu
   is never at risk of being painted over. Below 780px, or with
   reduced motion, the whole mechanic drops to plain stacked
   sections - no pin, no turn - both because a page that's forced
   to be one screen tall is a worse fit for a small screen than
   just letting it flow normally, and because iOS Safari's
   address-bar resize makes 100vh pinning visibly janky.
   ============================================================ */
main { perspective: 2200px; }

.page-spacer {
    position: relative;
    /* Height is set by js/script.js: this section's own .page-sheet
       height, plus a fixed amount of extra scroll room (TURN_ROOM_PX).
       A flat 200vh here, decoupled from how tall the content actually
       is, was the original bug - it left a huge, content-dependent
       gap before the next section arrived. Sizing to content height
       plus a small constant keeps that gap small and predictable
       instead of eliminating it outright: the next section can only
       start entering the viewport once this ENTIRE spacer (not just
       the sheet's own CSS-sticky "stuck" span, which ends earlier -
       see js/script.js) has scrolled past, since the sheet, being
       taller than one viewport for most sections, keeps scrolling
       normally for a while after it un-sticks before it's fully
       gone. js/script.js ties the rotation to the spacer's own full
       scrollable range for exactly this reason, so the turn is still
       actively happening for that whole stretch rather than sitting
       motionless and fully turned while nothing else happens.
       min-height is only the pre-JS fallback, for the instant before
       that measurement runs. */
    min-height: 100vh;
    overflow-x: hidden;
}

.page-sheet {
    position: sticky;
    top: clamp(10px, 2vw, 26px);
    min-height: calc(100vh - clamp(20px, 4vw, 52px));
    margin-inline: clamp(10px, 2vw, 26px);
    border-radius: clamp(18px, 2.4vw, 40px);
    /* Deliberately NOT a fixed height + inner overflow-y:auto. That
       looked like a bug in practice: a photo sitting right at the box's
       lower edge just gets sliced, with no visible cue that there's
       more below in a SECOND, nested scroll area - nobody expects or
       finds a scrollbar inside a page. min-height lets the sheet grow
       to fit whatever it holds instead, exactly like a normal page;
       nothing is ever cropped. */
    box-shadow: 0 40px 90px -30px rgba(0, 0, 0, 0.55);
    transform-origin: top left;
    transform-style: preserve-3d;
    backface-visibility: hidden;
    display: flex;
    align-items: center;
    padding: clamp(2.5rem, 5vw, 5rem) clamp(1.5rem, 4vw, 4rem);
    will-change: transform;
    --turn: 0;
}

/* A flat rectangle rotating in 3D reads as stiff cardboard, not
   paper - real paper isn't flat while it turns, it bends. A cheap
   but genuine cue for that: a soft shadow gathering along the loose
   (right) edge as the turn progresses, as if the sheet is curling
   rather than swinging on a hinge. --turn (0-1) is set by
   js/script.js in lockstep with the rotation itself. */
.page-sheet::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    background: linear-gradient(to right, transparent 45%, rgba(20, 15, 10, 0.4) 100%);
    opacity: var(--turn);
    z-index: 5;
}

#story .page-sheet       { z-index: 10; background-color: var(--paper); }
#cabin .page-sheet       { z-index: 11; background-color: var(--moss-pale); }
#around-you .page-sheet  { z-index: 12; background-color: var(--terracotta-pale); }
#gallery .page-sheet     { z-index: 13; background-color: var(--paper); }

@media (max-width: 780px), (prefers-reduced-motion: reduce) {
    .page-spacer { height: auto; }
    .page-sheet {
        position: relative;
        top: auto;
        min-height: auto;
        margin-inline: 0.5em;
        transform: none !important;
        box-shadow: none;
    }
}

/* ============================================================
   PAGE-TURN: OFF (backlog item, not a removal). Repeats the mobile
   fallback above with no media condition, so it wins at every
   viewport - #story/#cabin/#around-you/#gallery render as plain
   stacked sections again, matching js/script.js's own kill switch
   (PAGE_TURN_ENABLED). Delete this block and flip that flag back to
   re-enable; everything the effect needs is still intact above.
   ============================================================ */
.page-spacer { height: auto; }
.page-sheet {
    position: relative;
    top: auto;
    min-height: auto;
    margin-inline: 0.5em;
    transform: none !important;
    box-shadow: none;
}

/* ---- Story: tall photo + a small accent photo tucked at its
   corner, with the copy card overlapping the main photo's edge ---- */
.story-collage {
    position: relative;
    display: grid;
    grid-template-columns: 0.85fr 1.15fr;
    align-items: center;
    gap: 0;
}
.story-collage > * { min-width: 0; }
.story-photo-main {
    grid-column: 1;
    grid-row: 1;
    border-radius: 20px;
    overflow: hidden;
    aspect-ratio: 3 / 4;
}
.story-photo-main img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.story-photo-accent {
    position: absolute;
    left: 0;
    bottom: -8%;
    width: 42%;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 24px 48px -16px rgba(36, 25, 16, 0.35);
    border: 6px solid var(--paper);
    z-index: 1;
}
.story-photo-accent img {
    width: 100%;
    display: block;
}
.story-copy {
    grid-column: 2;
    grid-row: 1;
    margin-left: -14%;
    background: var(--paper);
    border-radius: 20px;
    padding: clamp(1.75rem, 3vw, 3rem);
    box-shadow: 0 20px 60px -24px rgba(36, 25, 16, 0.3);
    display: flex;
    flex-direction: column;
    gap: 1rem;
    position: relative;
    z-index: 2;
}
.story-facts {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.25rem;
    margin-top: 0.5rem;
}
@media (max-width: 900px) {
    .story-collage { grid-template-columns: 1fr; }
    .story-photo-main { grid-row: 1; aspect-ratio: 4 / 3; }
    .story-photo-accent { display: none; }
    .story-copy { grid-row: 2; margin-left: 0; margin-top: -10%; margin-inline: 1rem; }
    .story-facts { grid-template-columns: 1fr; }
}

/* ---- Cabin: same overlap move on the Living Room photo, then
   the remaining three rooms as an even, ungapped mosaic row ---- */
.cabin-intro-collage {
    position: relative;
    display: grid;
    grid-template-columns: 1.1fr 0.9fr;
    align-items: center;
}
.cabin-intro-collage > * { min-width: 0; }
.cabin-intro-collage .image-container { grid-column: 1; grid-row: 1; aspect-ratio: 4 / 3; height: auto; }
.cabin-intro-copy {
    grid-column: 2;
    grid-row: 1;
    margin-left: -10%;
    background: var(--paper);
    border-radius: 20px;
    padding: clamp(1.5rem, 2.5vw, 2.5rem);
    box-shadow: 0 20px 50px -22px rgba(36, 25, 16, 0.3);
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
}
@media (max-width: 900px) {
    .cabin-intro-collage { grid-template-columns: 1fr; }
    .cabin-intro-collage .image-container { grid-row: 1; }
    .cabin-intro-copy { grid-row: 2; margin-left: 0; margin-top: -8%; margin-inline: 1rem; }
}
.cabin-mosaic {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 1.25rem;
}
.cabin-mosaic > * { grid-column: span 4; min-width: 0; }
.cabin-mosaic .image-container { height: auto; aspect-ratio: 1 / 1; }
@media (max-width: 780px) {
    .cabin-mosaic { grid-template-columns: 1fr; }
    .cabin-mosaic > * { grid-column: span 1; }
}

/* ---- Around You: text and the tree accent as an asymmetric
   pair instead of two equal centred columns, activities in a
   plain even grid (three genuinely parallel items - no need to
   force artificial overlap where nothing is actually behind) ---- */
.around-intro {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 2rem;
    flex-wrap: wrap;
}
.around-intro .around-copy { max-width: 480px; }
@media (max-width: 780px) {
    .around-intro { flex-direction: column; align-items: center; text-align: center; }
}
.around-activities {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.75rem;
}
.around-activities > * { min-width: 0; }
@media (max-width: 900px) { .around-activities { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .around-activities { grid-template-columns: 1fr; } }

/* ---- Gallery: two tiles promoted to a 2x2 span so the grid
   reads as a curated mosaic instead of eight identical squares ---- */
.gallery-mosaic {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-auto-rows: 15vw;
    grid-auto-flow: dense;
    gap: 1rem;
}
.gallery-mosaic .gallery-item { aspect-ratio: auto; min-width: 0; }
.gallery-mosaic .gallery-item:nth-child(1),
.gallery-mosaic .gallery-item:nth-child(4) {
    grid-column: span 2;
    grid-row: span 2;
}
@media (max-width: 780px) {
    .gallery-mosaic { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 28vw; }
}

/* ---- Reviews: real guest quotes, on-site - the point is to give
   people enough here that they book direct instead of clicking
   through to Airbnb/Booking.com to read more. Same number-plus-label
   treatment as .hero-fact (1885 / Foundation Stone Laid), reused here
   for the stay count so the two "trust" numbers on the page read as
   one consistent device. ---- */
.review-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    font-family: var(--font-1);
    margin-top: 0.25rem;
}
.review-stat .review-stat-num {
    font-size: clamp(1.8rem, 1.6vw + 1.2rem, 2.6rem);
    color: var(--paper);
    line-height: 1;
}
.review-stat .review-stat-label {
    font-family: var(--font-2);
    font-size: 0.7rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--stone);
    opacity: 0.85;
    margin-top: 0.35rem;
}
.review-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.25rem;
    width: 100%;
    text-align: left;
}
.review-card {
    background: rgba(247, 241, 228, 0.07);
    border: 1px solid rgba(247, 241, 228, 0.16);
    border-radius: 16px;
    padding: 1.6rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.review-card p {
    color: var(--stone);
    font-size: 0.95rem;
    line-height: 1.65;
    margin: 0;
}
.review-card .review-meta {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.75rem;
    font-family: var(--font-1);
}
.review-card .review-name {
    color: var(--paper);
    font-weight: 600;
}
.review-card .review-source {
    font-family: var(--font-2);
    font-size: 0.68rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--stone);
    opacity: 0.7;
    white-space: nowrap;
}
/* One honestly mixed review sits in the mix on purpose - an
   all-perfect wall of quotes reads as curated, not real. This border
   just marks it as a slightly different register, not a warning. */
.review-card.review-mixed {
    border-color: rgba(154, 75, 51, 0.4);
}
@media (max-width: 900px) {
    .review-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
    .review-grid { grid-template-columns: 1fr; }
}

/* ---- Language switcher: sits in the header next to Check
   Availability, on the transparent-over-photo bar every page shares,
   so --paper/--stone match whatever's already used there. The current
   language is shown but not a link (pointer-events:none) - clicking
   your own language shouldn't be a dead reload. ---- */
.lang-switch {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    font-family: var(--font-2);
    font-size: 0.78rem;
    letter-spacing: 0.04em;
    /* Every other piece of header chrome (Check Availability, the
       hamburger) sits on a solid pine fill, which is exactly what
       keeps it readable no matter what part of the hero photo is
       behind it. This was bare text with no backing of its own, so
       wherever it happened to land over a bright patch of sky it
       nearly disappeared. Same fix: a solid chip underneath it. */
    background-color: var(--pine-deep);
    padding: 0.3rem 0.65rem;
    border-radius: 999px;
}
.lang-switch .lang-link {
    color: var(--paper);
    opacity: 0.55;
    text-decoration: none;
}
.lang-switch .lang-link:hover {
    opacity: 0.85;
}
.lang-switch .lang-link.is-active {
    opacity: 1;
    font-weight: 600;
    pointer-events: none;
}
.lang-switch .lang-sep {
    color: var(--paper);
    opacity: 0.35;
}

