:root{--burgundy:#761c35;--burgundy-dark:#4e1024;--navy:#16224b;--navy-deep:#0f1632;--gold:#d4af37;--cream:#f8f5ef;--ink:#1c2030;--muted:#667085;--white:#fff;--radius:18px;--shadow:0 18px 45px rgba(15,22,50,.13)}
*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:'Nunito Sans',Arial,sans-serif;color:var(--ink);line-height:1.65;background:var(--cream)}a{text-decoration:none;color:inherit;transition:all .3s ease}img{display:block;max-width:100%}.container{width:min(1160px,calc(100% - 40px));margin:auto}.narrow{max-width:900px}.hero{min-height:100vh;position:relative;background:var(--navy-deep);color:#fff;overflow:hidden}.hero__overlay{position:absolute;inset:0;background:linear-gradient(110deg,rgba(15,22,50,.78),rgba(22,34,75,.48) 55%,rgba(78,16,36,.52));z-index:1;pointer-events:none}.hero:before{content:'';position:absolute;inset:-10%;background:url('../images/assets/home-bg.jpg') center/cover no-repeat;animation:cinematic 20s ease-in-out infinite alternate;z-index:0;opacity:.95;will-change:transform}.hero__content{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column}.topbar{position:fixed;top:0;left:0;right:0;width:100%;max-width:none;z-index:20;padding-top:10px;background:rgba(15,22,50,.9);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 8px 24px rgba(0,0,0,.18)}.topbar__row{width:min(1160px,calc(100% - 40px));margin:0 auto;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;padding:10px 0}.rating-badge{justify-self:start}.rating-badge iframe{border-radius:8px;background:#fff}.brand img{width:250px;height:66px;max-width:100%;object-fit:contain}.contact-mini{justify-self:end;display:flex;flex-direction:column;align-items:flex-end;font-size:13px;gap:3px}.contact-mini a:hover,.footer a:hover{color:var(--gold)}.contact-mini span{color:var(--gold);margin-right:5px}.nav{width:min(1160px,calc(100% - 40px));margin:0 auto;display:flex;align-items:center;justify-content:center;gap:25px;padding:14px 0;border-top:1px solid rgba(255,255,255,.2);border-bottom:1px solid rgba(255,255,255,.2);font-size:16px;font-weight:700}.nav>a:not(.btn):hover,.nav__dropdown>a:hover{color:var(--gold)}.nav__dropdown{position:relative}.nav__dropdown>a span{color:var(--gold);font-size:18px}.dropdown-menu{display:none;position:absolute;left:50%;transform:translateX(-50%);top:100%;min-width:225px;background:var(--navy-deep);padding:10px;border-radius:10px;box-shadow:var(--shadow)}.nav__dropdown::after{content:"";position:absolute;left:0;right:0;top:100%;height:12px}.dropdown-menu a{display:block;padding:8px 10px;font-size:15px;font-weight:600;line-height:1.4}.dropdown-menu a:hover{background:var(--burgundy);border-radius:6px}.nav__dropdown:hover .dropdown-menu{display:block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:13px 26px;border-radius:999px;font-weight:800;letter-spacing:.02em;border:1px solid transparent;transition:all .3s ease}.btn--gold{background:var(--gold);color:var(--navy-deep);box-shadow:0 8px 20px rgba(212,175,55,.25)}.btn--gold:hover{background:#ffe477;transform:translateY(-3px)}.btn--burgundy{background:var(--burgundy);color:#fff}.btn--burgundy:hover{background:var(--burgundy-dark);transform:translateY(-3px)}.btn--outline{border-color:var(--gold);color:var(--gold)}.btn--outline:hover{background:var(--gold);color:var(--navy-deep)}.hero__main{margin:auto;padding:190px 0 100px}.eyebrow{text-transform:uppercase;letter-spacing:.2em;font-size:12px;font-weight:800;color:var(--gold);margin-bottom:14px}.hero h1{font:600 clamp(2.5rem,6vw,5.3rem)/1.08 'Comfortaa',sans-serif;max-width:900px;margin-bottom:25px}.hero h1 strong{color:var(--gold);font-weight:600}.hero__lead{font-size:clamp(1rem,1.5vw,1.18rem);max-width:730px;margin-bottom:34px;color:rgba(255,255,255,.88)}.scroll-hint{position:absolute;bottom:25px;left:50%;font-size:28px;color:var(--gold);animation:bounce 2s infinite}.menu-toggle{display:none;background:none;border:0}.section{padding:100px 0}.section--dark{background:var(--navy-deep);color:rgba(255,255,255,.82)}.section--light{background:var(--cream);color:var(--ink)}h2{font:600 clamp(1.5rem,3vw,2rem)/1.2 'Comfortaa',sans-serif;margin-bottom:8px;color:var(--gold)}.section--light h2{color:var(--burgundy)}h3{font:600 clamp(1.15rem,2vw,1.65rem)/1.3 'Comfortaa',sans-serif;margin-bottom:24px}.section p{max-width:900px;font-size:1.05rem}.section-intro{margin-bottom:35px}.cards{display:grid;gap:22px;margin:35px 0}.cards--rooms{grid-template-columns:repeat(3,1fr)}.room-card,.service-card{display:flex;flex-direction:column;background:var(--white);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transition:all .3s ease}.room-card:hover,.service-card:hover{transform:translateY(-8px);box-shadow:0 24px 45px rgba(15,22,50,.2)}.card-image{height:220px;flex:0 0 auto;overflow:hidden}.card-image img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}.room-card:hover .card-image img{transform:scale(1.08)}.card-body{padding:24px;flex:1 1 auto}.card-kicker{color:var(--burgundy);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.14em}.card-body h4,.service-card h4{font:700 1.3rem 'Comfortaa',sans-serif;margin:7px 0 12px;color:var(--navy-deep)}.card-body p,.service-card p{font-size:.94rem!important;color:var(--muted)}.included{border-left:3px solid var(--gold);padding:20px 25px;margin:35px 0;background:rgba(212,175,55,.1)}.included h4{font:700 1.1rem 'Comfortaa',sans-serif;margin-bottom:10px}.included ul{padding-left:20px}.cards--services{grid-template-columns:repeat(4,1fr)}.service-card{padding:27px 22px;background:rgba(255,255,255,.07);color:#fff;border:1px solid rgba(212,175,55,.18)}.service-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:15px;background:rgba(255, 255, 255, 1);color:var(--burgundy);font-size:28px;margin-bottom:17px}.service-card h4{color:#fff}.service-card h5{font-size:1rem;line-height:1.4;margin-bottom:12px;color:var(--gold)}.service-card p{color:rgba(255,255,255,.7)}.gallery-grid{display:grid;grid-template-columns:2fr 1fr 1fr;grid-auto-rows:170px;gap:14px;margin-top:30px}.gallery-item{overflow:hidden;border-radius:14px}.gallery-item--large{grid-row:span 2}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}.gallery-item:hover img{transform:scale(1.08)}.contact-layout{display:grid;grid-template-columns:.8fr 1.2fr;gap:45px;align-items:start;margin-top:35px}.contact-details>div{display:flex;gap:18px;margin-bottom:24px}.contact-icon{color:var(--burgundy);font-size:28px;line-height:1}.contact-details a{color:var(--burgundy);font-weight:700}.map{min-height:405px;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.map script{display:block}.footer{background:#090e24;color:rgba(255,255,255,.65);padding:75px 0 20px}.footer-grid{display:grid;grid-template-columns:1.2fr 1fr .8fr 1.2fr;gap:35px}.footer h4{font:600 1.05rem 'Comfortaa',sans-serif;color:#fff;margin-bottom:18px}.footer p{font-size:.9rem;margin-bottom:12px}.footer-nav{display:flex;flex-direction:column;gap:7px}.copyright{text-align:center;border-top:1px solid rgba(255,255,255,.12);margin-top:45px;padding-top:20px;font-size:.85rem}.to-top{position:fixed;right:25px;bottom:25px;width:46px;height:46px;border:0;border-radius:50%;background:var(--gold);color:var(--navy-deep);font-size:22px;cursor:pointer;opacity:0;visibility:hidden;transition:all .3s ease;z-index:10}.to-top.visible{opacity:1;visibility:visible}.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}.reveal.is-visible{opacity:1;transform:none}@keyframes cinematic{from{transform:scale(1.02) translate3d(-1%,0,0)}to{transform:scale(1.18) translate3d(1.5%,-1.5%,0)}}@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(8px)}
}
@media(max-width:1023px){.nav{gap:13px}.cards--services{grid-template-columns:repeat(2,1fr)}.footer-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:767px){.container{width:min(100% - 30px,600px)}.hero{background-attachment:scroll}.topbar{padding-top:6px}.topbar__row{grid-template-columns:1fr auto;width:calc(100% - 30px)}.rating-badge{display:none}.brand{justify-self:start}.brand img{width:250px;height:66px;max-width:calc(100vw - 90px)}.contact-mini{display:none}.menu-toggle{display:flex;flex-direction:column;gap:5px;padding:12px;cursor:pointer}.menu-toggle span{display:block;width:25px;height:2px;background:var(--gold);transition:all .3s ease}.nav{position:absolute;top:82px;width:auto;margin:0;left:0;right:0;display:none;flex-direction:column;align-items:stretch;gap:0;background:rgba(15,22,50,.98);padding:10px 20px;border:0;border-radius:12px}.nav.is-open{display:flex}.nav>a,.nav__dropdown>a{padding:11px 0}.nav__dropdown{width:100%}.dropdown-menu{position:static;transform:none;min-width:0;padding:0 0 0 15px;background:transparent;box-shadow:none}.nav__dropdown::after{display:none}.nav__dropdown:hover .dropdown-menu{display:none}.nav__dropdown.is-open .dropdown-menu{display:block}.nav__button{margin:10px 0}.hero__main{padding:135px 0 100px}.hero h1{font-size:2.4rem}.section{padding:70px 0}.cards--rooms,.cards--services{grid-template-columns:1fr}.gallery-grid{grid-template-columns:1fr 1fr;grid-auto-rows:145px}.gallery-item--large{grid-row:span 1;grid-column:span 2}.contact-layout{grid-template-columns:1fr;gap:25px}.map{min-height:300px}.footer-grid{grid-template-columns:1fr;gap:30px}.footer{padding-top:55px}}
@media(min-width:1280px){.hero__main{padding-top:190px}}
/* ==========================================================================
   Joomla integration — module positions, mod_menu markup, content defaults.
   The module stylesheets (mod_menu, …) are written with :where(), i.e. with
   zero specificity, so every rule below wins regardless of the load order.
   ========================================================================== */

/* --- Utilities ----------------------------------------------------------- */
.visually-hidden,.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-to-content{position:absolute;z-index:100;top:12px;left:12px;padding:12px 20px;border-radius:999px;background:var(--gold);color:var(--navy-deep);font-weight:800;transform:translateY(-200%)}
.skip-to-content:focus{transform:none}
.mod-menu,.mod-menu ul,.list-unstyled{list-style:none;padding-left:0;margin:0}

/* --- Header: module positions of the fixed topbar ------------------------ */
.topbar--static{position:static}
.topbar .mod-custom{display:flex;align-items:center}
.topbar__pos{display:flex;align-items:center;gap:14px;min-width:0}
.topbar__pos--left{justify-self:start}
.topbar__pos--center{justify-self:center}
.topbar__pos--right{justify-self:end}
.topbar__pos a{color:inherit}
.topbar__pos a:hover{color:var(--gold)}

/* --- Fixed header stacking ----------------------------------------------- */
/* The topbar is position:fixed, but it is nested inside .hero__content, which
   opens a stacking context (position:relative;z-index:1). .site-content opens
   its own stacking context with the very same z-index:1, but sits later in the
   DOM, so the page content was painted over the whole header layer - the sticky
   topbar disappeared behind the article/card content once the page was scrolled.
   Lift the header layer above the content layer (while keeping it below the
   lightbox, which uses z-index:999999) so the fixed topbar stays visible at all
   times, on top of everything. */
.hero__content{z-index:40}

/* --- Hero: home page versus inner pages ---------------------------------- */
.hero--inner{min-height:0}
.hero--inner:before{display:none}
.hero--inner .hero__content{min-height:0}
.hero--inner .hero__main{padding:190px 0 70px}
.hero__main--inner h1{font-size:clamp(2rem,4vw,3.6rem);max-width:1000px}
/* The home hero heading now carries the long "Ваш уютный дом в Санкт-Петербурге!"
   sentence, so keep this particular <h1> compact. Inner-page headings (handled
   by .hero__main--inner above) are intentionally left untouched. */
.hero--home .hero__main h1{font-size:clamp(2rem,4vw,3.6rem)}
.hero__modules{margin-top:10px}

/* --- Main menu (mod_menu) inside the topbar ------------------------------ */
/* The module renders a flat <nav> of links; entries that have children are
   wrapped in .nav__dropdown with their sub-links inside .dropdown-menu - see
   the mod_menu template override. Base .nav / .nav__dropdown / .dropdown-menu
   layout and colours live with the template rules above; only the state
   colours and the responsive behaviour of the module links are added here. */
/* mod_menu renders its <nav> with the extra .mod-menu class. The global reset
   (.mod-menu{margin:0}) has the same specificity as the base .nav rule but
   appears later in the source, so it would cancel the auto margins that centre
   the header menu; restore them here with a higher-specificity selector. */
.topbar .nav{margin:0 auto}
.topbar .nav>.nav-item:not(.btn).active,
.topbar .nav>.nav-item:not(.btn).current,
.topbar .nav__dropdown>.nav-item:not(.btn).active,
.topbar .nav__dropdown>.nav-item:not(.btn).current{color:var(--gold)}
.topbar .nav .dropdown-menu>.nav-item.active,
.topbar .nav .dropdown-menu>.nav-item.current{background:var(--burgundy);color:#fff;border-radius:6px}

@media(max-width:767px){
  .topbar__pos--left,.topbar__pos--right{display:none}
  .topbar__pos--center{justify-self:start}
  .topbar .nav>.nav-item,
  .topbar .nav__dropdown>.nav-item,
  .topbar .nav .dropdown-menu .nav-item{display:flex;align-items:center;width:100%}
  .topbar .nav__dropdown>.nav-item{gap:7px}
  .topbar .nav .dropdown-menu .nav-item{padding:9px 0}
}

/* A mod_menu placed outside the header is a plain vertical list */
.site-content .nav,.footer .nav,.copyright .nav{position:static;display:block;width:auto;max-width:none;margin:0;padding:0;border:0;font-size:inherit;font-weight:inherit;text-align:left}
.site-content .nav .nav-item,.footer .nav .nav-item,.copyright .nav .nav-item{display:block;padding:6px 0;color:inherit;font-weight:inherit}
.site-content .nav .nav-item:hover,.footer .nav .nav-item:hover,.copyright .nav .nav-item:hover{color:var(--gold)}
.site-content .nav .nav__chevron,.footer .nav .nav__chevron,.copyright .nav .nav__chevron{display:none}
.site-content .nav .dropdown-menu,.footer .nav .dropdown-menu,.copyright .nav .dropdown-menu{display:block;position:static;transform:none;min-width:0;padding:0 0 0 12px;background:transparent;box-shadow:none;border-radius:0}
/* Footer menu: mirror the topbar's active highlight, sub-item padding and
   button styling. The generic vertical-list rules above keep the layout, but
   they reset colour/display on every .nav-item, so the state and button look
   are restored here with higher-specificity selectors (the .btn entry is kept
   out of the highlight rules, exactly like in the topbar). */
.footer .nav>.nav-item:not(.btn).active,
.footer .nav>.nav-item:not(.btn).current,
.footer .nav__dropdown>.nav-item:not(.btn).active,
.footer .nav__dropdown>.nav-item:not(.btn).current{color:var(--gold)}
.footer .nav .dropdown-menu>.nav-item{padding:6px 10px}
.footer .nav .dropdown-menu>.nav-item.active,
.footer .nav .dropdown-menu>.nav-item.current{background:var(--burgundy);color:#fff;border-radius:6px}
.footer .nav .nav-item.btn{display:inline-flex;justify-content:center;padding:13px 26px;margin-top:14px;color:var(--navy-deep);font-weight:800}

/* --- Breadcrumbs (mod_breadcrumbs) --------------------------------------- */
.hero .mod-breadcrumbs{color:rgba(255,255,255,.75);margin-bottom:12px}
.hero .mod-breadcrumbs a{color:inherit;font-weight:600}
.hero .mod-breadcrumbs a:hover{color:var(--gold)}
.mod-breadcrumbs__list{display:flex;flex-wrap:wrap;align-items:center;gap:8px;list-style:none;padding:0;margin:0 0 16px;font-size:.9rem}
.mod-breadcrumbs__item{list-style:none;display:flex;align-items:center;gap:8px}
.mod-breadcrumbs__item+.mod-breadcrumbs__item::before{content:"·";color:var(--gold)}
.mod-breadcrumbs__item.active,.mod-breadcrumbs__item [aria-current="page"]{color:var(--gold)}

/* --- Content of the component -------------------------------------------- */
.site-content{position:relative;z-index:1}
/* The component output is wrapped in .site-content__component (the standard
   1160px column, same as the header menu and the footer grid) so that article
   content no longer stretches across the whole viewport. Sections that paint
   the full-width dark/light bands (.section) escape that column again, so
   their backgrounds keep spanning the entire viewport as designed. */
.site-content{overflow-x:hidden;overflow-x:clip}
.site-content__component .section{width:auto;margin-inline:calc(50% - 50vw)}
.site-messages{margin-bottom:0}
joomla-alert{display:block;margin-bottom:22px}
.alert{padding:16px 20px;margin-bottom:22px;border-radius:12px;background:var(--white);border-left:4px solid var(--gold);box-shadow:var(--shadow)}
.alert-error,.alert-danger{border-left-color:var(--burgundy)}
.alert-success{border-left-color:#2e7d5b}
.alert-warning,.alert-notice{border-left-color:#c9861c}
.page-header{margin-bottom:28px; margin-top:20px}
.page-header h1,.page-header h2{color:var(--burgundy)}
/* Inner pages render their <h1> as the article title inside .page-header; make
   it as large as the section headings (the home page keeps its own hero h1
   sizing defined above). */
body:not(.home-page) .page-header h1{font:600 clamp(2rem,4vw,3.6rem)/1.2 'Comfortaa',sans-serif; text-align: center}
.com-content-article{margin-bottom:30px}
.com-content-article__body img{border-radius:14px;margin-bottom:20px}
.site-content ul,.site-content ol{padding-left:22px;margin-bottom:18px}
.site-content li{margin-bottom:6px}
.site-content a:not(.btn){color:var(--burgundy);font-weight:600}
.site-content a:not(.btn):hover{color:var(--gold)}
.site-content .section--dark a:not(.btn){color:var(--gold)}
.site-content .section--dark a:not(.btn):hover{color:#ffe477}
.site-content blockquote{border-left:3px solid var(--gold);padding:18px 22px;margin:25px 0;border-radius:0 12px 12px 0;background:rgba(212,175,55,.1);font-style:italic}
.site-content table{width:100%;border-collapse:collapse;margin:25px 0}
.site-content th,.site-content td{padding:12px 14px;border:1px solid rgba(22,34,75,.12);text-align:left}
.site-content th{background:rgba(212,175,55,.12)}
.site-content input[type="text"],.site-content input[type="email"],.site-content input[type="search"],.site-content input[type="tel"],.site-content textarea,.site-content select{width:100%;max-width:420px;padding:12px 14px;border:1px solid rgba(22,34,75,.18);border-radius:10px;background:var(--white);color:var(--ink);font:inherit}
.site-content input:focus,.site-content textarea:focus,.site-content select:focus{outline:2px solid var(--gold);outline-offset:1px}

/* --- Card grids: uniform height ------------------------------------------ */
/* .cards is a CSS grid, so its direct children already share the tallest row
   height. On the live site every room card is wrapped in its own <a> (the whole
   card is a link), and that anchor - not .room-card - becomes the grid item, so
   the card inside it kept its natural height and looked shorter whenever its
   text was shorter. Stretch the anchor, let the card fill it, and let the card
   body absorb the spare space so all cards in a row end up the same height. */
.cards>a{display:flex}
.cards>a>.room-card,.cards>a>.service-card{flex:1 1 auto}

/* --- Pagination ---------------------------------------------------------- */
.site-content .pagination{display:flex;flex-wrap:wrap;align-items:center;gap:8px;list-style:none;padding-left:0;margin:35px 0}
.site-content .pagination .page-item{list-style:none;margin:0}
.site-content .pagination .page-link{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:42px;padding:0 12px;border-radius:10px;background:var(--white);color:var(--ink);font-weight:700;box-shadow:var(--shadow)}
.site-content .pagination .page-link:hover,.site-content .pagination .active .page-link{background:var(--burgundy);color:#fff}
.site-content .pagination .disabled .page-link{opacity:.45;pointer-events:none}
.site-content .counter{margin:15px 0;color:var(--muted);font-size:.9rem}

/* --- Footer module positions --------------------------------------------- */
.footer__col{min-width:0}
.footer .mod-custom p:last-child{margin-bottom:0}
.copyright .container{padding:0}

/* --- Standalone component view (component.php, tmpl=component) ------------ */
.contentpane{background:var(--cream);color:var(--ink);padding:20px}
.contentpane img{max-width:100%;height:auto}

/* --- Header spacing when the topbar is not fixed (template option "No"). -- */
.hero__content:has(.topbar--static) .hero__main{padding:60px 0 70px}

/* ==========================================================================
   Special Offers Page Styling
   ========================================================================== */
.offers-page {
    max-width: 900px;
    margin: 40px auto;
    padding: 0 10px;
}

/* --- Intro Block --- */
.offers-page .offer-intro {
    text-align: center;
    margin-bottom: 50px;
}

.offers-page .offer-intro h2 {
    display: inline-flex;
    align-items: center;
    gap: 15px;
    justify-content: center;
    margin-bottom: 15px;
}

.offers-page .offer-icon {
    color: var(--gold);
    font-size: 0.8em;
}

.offers-page .offer-intro p {
    font-size: 1.15rem;
    color: var(--muted);
    max-width: 650px;
    margin: 0 auto;
}

/* --- Highlight Card Block --- */
.offers-page .offer-card {
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 45px 40px;
    border-top: 5px solid var(--gold);
    text-align: center;
    margin-bottom: 50px;
}

.offers-page .offer-card h3 {
    color: var(--burgundy);
    margin-bottom: 15px;
}

.offers-page .offer-card__lead {
    font-size: 1.05rem;
    color: var(--ink);
    margin-bottom: 35px;
}

.offers-page .offer-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    text-align: left;
}

.offers-page .offer-list li {
    display: flex;
    align-items: center;
    gap: 15px;
    font-weight: 700;
    font-size: 1.05rem;
    color: var(--navy-deep);
}

.offers-page .offer-list__icon {
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    flex-shrink: 0;
    background: rgba(118, 28, 53, 0.1); /* Burgundy with low opacity */
    color: var(--burgundy);
    border-radius: 50%;
    font-size: 0.85rem;
}

/* --- CTA Block --- */
.offers-page .offer-cta {
    text-align: center;
    border-top: 1px solid rgba(22, 34, 75, 0.1);
    padding-top: 40px;
}

.offers-page .offer-cta p {
    font-size: 1.1rem;
    margin-bottom: 25px;
    color: var(--ink);
}

/* --- Responsive Adjustments --- */
@media (max-width: 767px) {
    .offers-page .offer-card {
        padding: 30px 20px;
    }
    .offers-page .offer-list {
        grid-template-columns: 1fr;
        gap: 15px;
    }
}

/* ==========================================================================
   Strict House Rules Page Styling
   ========================================================================== */
.rules-strict-page {
    max-width: 850px;
    margin: 40px auto;
    padding: 0 10px;
}

/* --- Intro Block --- */
.rules-strict-page .rules-strict-intro {
    text-align: center;
    margin-bottom: 45px;
}

.rules-strict-page .rules-strict-intro h2 {
    display: inline-flex;
    align-items: center;
    gap: 15px;
    justify-content: center;
    margin-bottom: 15px;
}

.rules-strict-page .rules-strict-intro p {
    font-size: 1.1rem;
    color: var(--muted);
    margin-bottom: 8px;
}

/* --- Document Container --- */
/* Simulates a formal printed sheet lifted off the cream background */
.rules-strict-page .rules-document {
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 50px 60px;
    border-top: 5px solid var(--burgundy);
    margin-bottom: 50px;
}

/* --- Custom Numbered List --- */
.rules-strict-list {
    list-style: none;
    counter-reset: rules-counter;
    padding-left: 0;
    margin: 0;
}

.rules-strict-list > li {
    counter-increment: rules-counter;
    position: relative;
    padding-left: 45px;
    margin-bottom: 24px;
    line-height: 1.7;
    color: var(--ink);
    text-align: justify;
}

.rules-strict-list > li::before {
    content: counter(rules-counter) ".";
    position: absolute;
    left: 0;
    top: 0;
    font-family: 'Comfortaa', sans-serif;
    color: var(--burgundy);
    font-weight: 700;
    font-size: 1.05rem;
    line-height: 1.7; /* Match text line-height for perfect alignment */
}

/* --- Sub-list for Prohibitions --- */
.rules-sub-list {
    list-style: none;
    margin-top: 15px;
    padding-left: 0;
}

.rules-sub-list li {
    position: relative;
    padding-left: 25px;
    margin-bottom: 10px;
    line-height: 1.6;
}

.rules-sub-list li::before {
    content: '\2014'; /* Em dash */
    position: absolute;
    left: 0;
    top: 0;
    color: var(--gold);
    font-weight: bold;
}

/* --- Outro Block --- */
.rules-strict-outro {
    padding: 0 10px;
}

.rules-strict-outro p {
    font-size: 1rem;
	font-weight: bold;
    color: var(--ink);
    margin-bottom: 20px;
    line-height: 1.7;
    text-align: justify;
}

.rules-strict-outro .rules-wishes {
    text-align: center;
    font-family: 'Comfortaa', sans-serif;
    font-size: 1.25rem;
    color: var(--burgundy);
    font-weight: 600;
    margin-top: 40px;
    padding-top: 20px;
    border-top: 1px solid rgba(118, 28, 53, 0.15);
}

/* --- Responsive Adjustments --- */
@media (max-width: 767px) {
    .rules-strict-page .rules-document {
        padding: 30px 20px;
    }
    .rules-strict-list > li {
        padding-left: 30px;
        margin-bottom: 18px;
    }
    .rules-strict-list > li::before {
        font-size: 0.95rem;
    }
}


/* ==========================================================================
   Room Page Styling
   ========================================================================== */
.room-page {
    max-width: 900px;
    margin: 40px auto;
    padding: 0 10px;
}

/* --- Intro Block --- */
.room-page .room-intro {
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 45px 40px;
    margin-bottom: 60px;
    border-left: 5px solid var(--gold); /* Premium accent line */
}

.room-page .room-intro h2 {
    display: inline-flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 20px;
    color: var(--burgundy);
}

.room-page .room-intro__lead {
    font-size: 1.2rem;
    font-weight: 600;
    color: var(--navy-deep);
    margin-bottom: 20px;
    line-height: 1.6;
}

.room-page .room-intro p {
    font-size: 1.05rem;
    color: var(--muted);
    line-height: 1.7;
}

/* --- Amenities Grid --- */
.room-page .room-amenities {
    text-align: center;
}

.room-page .room-amenities h3 {
    margin-bottom: 35px;
    color: var(--navy-deep);
}

.room-page .amenities-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr); /* 5 columns for 5 amenities */
    gap: 20px;
}

.room-page .amenity-card {
    background: var(--white);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 30px 15px;
    text-align: center;
    border-bottom: 4px solid var(--gold);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
}

.room-page .amenity-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 12px 30px rgba(15, 22, 50, 0.15);
}

.room-page .amenity-icon {
    display: grid;
    place-items: center;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: rgba(118, 28, 53, 0.08); /* Light burgundy background */
    color: var(--burgundy);
    margin-bottom: 18px;
}

.room-page .amenity-card h4 {
    font: 700 1rem 'Nunito Sans', sans-serif;
    color: var(--ink);
    line-height: 1.4;
    margin: 0;
}

/* --- Responsive Adjustments --- */
@media (max-width: 1023px) {
    .room-page .amenities-grid {
        grid-template-columns: repeat(3, 1fr); /* 3 columns on tablet */
    }
}

@media (max-width: 600px) {
    .room-page .room-intro {
        padding: 30px 20px;
    }
    .room-page .amenities-grid {
        grid-template-columns: repeat(2, 1fr); /* 2 columns on mobile */
    }
    /* Center the last odd item on mobile */
    .room-page .amenities-grid .amenity-card:last-child {
        grid-column: 1 / -1;
        max-width: 50%;
        margin: 0 auto;
    }
}

/* ==========================================================================
   Services Page Styling (Alternating Rows)
   ========================================================================== */
.services-page {
    max-width: 1160px;
    margin: 40px auto;
    padding: 0 10px;
}

/* --- Subheader & Intro --- */
h2.page-subheader {
	font: 600 clamp(1.5rem,3vw,2rem)/1.2 'Comfortaa',sans-serif;
	color: var(--gold);
	text-align: center;
	margin-bottom: 30px;
}

.services-intro {
    text-align: center;
    margin-bottom: 70px;
}

.services-intro p {
    font-size: 1.15rem;
    color: var(--muted);
    max-width: 700px;
    margin: 0 auto;
}

/* --- Alternating Service Rows --- */
.services-list {
    display: flex;
    flex-direction: column;
    gap: 80px;
    margin-bottom: 60px;
}

.service-row {
    display: flex;
    align-items: center;
    gap: 45px;
}

/* Alternating layout: reverse every second row */
.service-row:nth-of-type(even) {
    flex-direction: row-reverse;
}

.service-row__media {
    flex: 0 0 570px;
    max-width: 570px;
    border-radius: var(--radius);
    overflow: hidden;
    box-shadow: var(--shadow);
}

.service-row__media img {
    width: 100%;
    height: 380px;
    object-fit: cover;
    display: block;
    transition: transform 0.6s ease;
}

.service-row:hover .service-row__media img {
    transform: scale(1.05);
}

.service-row__content {
    flex: 1 1 auto;
}

.service-row__icon {
    display: grid;
    place-items: center;
    width: 70px;
    height: 70px;
    border-radius: 50%;
    background: rgba(118, 28, 53, 0.08);
    color: var(--burgundy);
    margin-bottom: 25px;
}

.service-row__content h3 {
    font: 600 clamp(1.4rem, 2.5vw, 2rem)/1.2 'Comfortaa', sans-serif;
    color: var(--navy-deep);
    margin-bottom: 18px;
}

.service-row__content p {
    font-size: 1.05rem;
    line-height: 1.7;
    color: var(--ink);
    margin-bottom: 15px;
}

/* --- Price List (Paid Services) --- */
.price-list {
    list-style: none;
    padding: 0;
    margin: 25px 0 0;
    background: rgba(212, 175, 55, 0.05);
    border-radius: var(--radius);
    padding: 20px 25px;
    border-left: 4px solid var(--gold);
}

.price-list li {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 20px;
    padding: 12px 0;
    border-bottom: 1px dashed rgba(22, 34, 75, 0.15);
    font-size: 1rem;
    color: var(--ink);
}

.price-list li:last-child {
    border-bottom: 0;
}

.price-list li span {
    font-weight: 800;
    color: var(--burgundy);
    white-space: nowrap;
}

/* --- Responsive Adjustments --- */
@media (max-width: 991px) {
    .service-row,
    .service-row:nth-of-type(even) {
        flex-direction: column;
        align-items: stretch;
        gap: 25px;
    }

    .service-row__media {
        flex: 0 0 auto;
        max-width: 100%;
        width: 100%;
    }

    .service-row__media img {
        height: 280px;
    }
}

@media (max-width: 600px) {
    .services-list {
        gap: 60px;
    }
    .service-row__media img {
        height: 220px;
    }
    .price-list {
        padding: 15px;
    }
    .price-list li {
        flex-direction: column;
        gap: 5px;
        align-items: flex-start;
    }
}

/* Fix Bnovo watermark color to match template palette */
#_bn_widget_ a#_bnovo_link_ {
    color: var(--navy-deep) !important;
    opacity: 0.6 !important;
}
#_bn_widget_ a#_bnovo_link_:hover {
    color: var(--burgundy) !important;
    opacity: 1 !important;
}
