/* Layout grid and module styles
   Breakpoints: sm <=767px | md 768-1199px | lg >=1200px */

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }
body { margin: 0; overflow-x: hidden; }

img, video { max-width: 100%; height: auto; }

/* ---------- Rows and containers ---------- */
.row { position: relative; width: 100%; }

.container {
    width: 100%;
    margin: 0 auto;
    padding-left: 15px;
    padding-right: 15px;
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
}

.container-fluid { max-width: 100%; }
.container-fixed { max-width: 1170px; }

@media only screen and (max-width: 1199px) {
    .container-fixed { max-width: 960px; }
}
@media only screen and (max-width: 767px) {
    .container-fixed { max-width: 100%; }
    .container { padding-left: 12px; padding-right: 12px; }
}

.clear::after { content: ""; display: table; clear: both; }

/* ---------- Columns ---------- */
.col {
    position: relative;
    width: 100%;
    min-height: 1px;
    padding-left: 15px;
    padding-right: 15px;
    flex: 0 0 100%;
    max-width: 100%;
}

@media only screen and (max-width: 767px) {
    .col { padding-left: 10px; padding-right: 10px; }
}

/* sm = mobile first, applies at every width unless overridden */
.col-sm-1  { flex: 0 0 8.333333%;  max-width: 8.333333%; }
.col-sm-2  { flex: 0 0 16.666667%; max-width: 16.666667%; }
.col-sm-3  { flex: 0 0 25%;        max-width: 25%; }
.col-sm-4  { flex: 0 0 33.333333%; max-width: 33.333333%; }
.col-sm-5  { flex: 0 0 41.666667%; max-width: 41.666667%; }
.col-sm-6  { flex: 0 0 50%;        max-width: 50%; }
.col-sm-7  { flex: 0 0 58.333333%; max-width: 58.333333%; }
.col-sm-8  { flex: 0 0 66.666667%; max-width: 66.666667%; }
.col-sm-9  { flex: 0 0 75%;        max-width: 75%; }
.col-sm-10 { flex: 0 0 83.333333%; max-width: 83.333333%; }
.col-sm-11 { flex: 0 0 91.666667%; max-width: 91.666667%; }
.col-sm-12 { flex: 0 0 100%;       max-width: 100%; }

@media only screen and (min-width: 768px) {
    .col-md-1  { flex: 0 0 8.333333%;  max-width: 8.333333%; }
    .col-md-2  { flex: 0 0 16.666667%; max-width: 16.666667%; }
    .col-md-3  { flex: 0 0 25%;        max-width: 25%; }
    .col-md-4  { flex: 0 0 33.333333%; max-width: 33.333333%; }
    .col-md-5  { flex: 0 0 41.666667%; max-width: 41.666667%; }
    .col-md-6  { flex: 0 0 50%;        max-width: 50%; }
    .col-md-7  { flex: 0 0 58.333333%; max-width: 58.333333%; }
    .col-md-8  { flex: 0 0 66.666667%; max-width: 66.666667%; }
    .col-md-9  { flex: 0 0 75%;        max-width: 75%; }
    .col-md-10 { flex: 0 0 83.333333%; max-width: 83.333333%; }
    .col-md-11 { flex: 0 0 91.666667%; max-width: 91.666667%; }
    .col-md-12 { flex: 0 0 100%;       max-width: 100%; }
}

@media only screen and (min-width: 1200px) {
    .col-lg-1  { flex: 0 0 8.333333%;  max-width: 8.333333%; }
    .col-lg-2  { flex: 0 0 16.666667%; max-width: 16.666667%; }
    .col-lg-3  { flex: 0 0 25%;        max-width: 25%; }
    .col-lg-4  { flex: 0 0 33.333333%; max-width: 33.333333%; }
    .col-lg-5  { flex: 0 0 41.666667%; max-width: 41.666667%; }
    .col-lg-6  { flex: 0 0 50%;        max-width: 50%; }
    .col-lg-7  { flex: 0 0 58.333333%; max-width: 58.333333%; }
    .col-lg-8  { flex: 0 0 66.666667%; max-width: 66.666667%; }
    .col-lg-9  { flex: 0 0 75%;        max-width: 75%; }
    .col-lg-10 { flex: 0 0 83.333333%; max-width: 83.333333%; }
    .col-lg-11 { flex: 0 0 91.666667%; max-width: 91.666667%; }
    .col-lg-12 { flex: 0 0 100%;       max-width: 100%; }
}

/* ---------- Visibility helpers ---------- */
@media only screen and (max-width: 767px)  { .hidden-sm { display: none !important; } }
@media only screen and (min-width: 768px) and (max-width: 1199px) { .hidden-md { display: none !important; } }
@media only screen and (min-width: 1200px) { .hidden-lg { display: none !important; } }

.hide { display: none !important; }
.veiled { display: none !important; }

/* ---------- Flexible columns / spacers ---------- */
.flexCol { display: flex; flex-direction: column; }
.flexWrap { width: 100%; }
.autospacer { flex: 1 1 auto; min-height: 0; }

/* ---------- Background filter overlay ---------- */
.bgfilter { position: relative; }
.bgfilter > * { position: relative; z-index: 2; }
.bgfilter::before {
    content: "";
    position: absolute;
    top: 0; right: 0; bottom: 0; left: 0;
    z-index: 1;
    pointer-events: none;
}

/* ---------- Row groups (rotating hero) ---------- */
.rowGroup { position: relative; width: 100%; }
.rowGroup > .row { display: none; }
.rowGroup > .row.is-active { display: block; animation: rgFade .9s ease-in-out; }
@keyframes rgFade { from { opacity: 0; } to { opacity: 1; } }

.rowGroup .rgDots {
    position: absolute;
    left: 0; right: 0; bottom: 18px;
    z-index: 5;
    text-align: center;
    line-height: 0;
}
.rowGroup .rgDots button {
    width: 11px; height: 11px;
    margin: 0 5px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(255,255,255,.55);
    cursor: pointer;
}
.rowGroup .rgDots button.is-active { background: #fff; }

/* ---------- Navigation ---------- */
.module.nav { width: 100%; }
.module.nav .navContainer {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
}
.module.nav .navContainer > li { position: relative; }
.module.nav .navContainer > li > a { display: block; }

.navToggle {
    display: none;
    margin: 0 auto;
    padding: 9px 14px;
    background: transparent;
    /* The toggle sits inside the dark header row, where inherited text
       colour matches the background and would render invisibly. */
    color: #fff;
    border: 1px solid rgba(255, 255, 255, .55);
    border-radius: 3px;
    font: inherit;
    line-height: 1;
    cursor: pointer;
}
.navToggle .navToggleBar {
    display: block;
    width: 22px;
    height: 2px;
    margin: 4px 0;
    background: #fff;
}
.navToggle:hover { border-color: #fff; }

@media only screen and (max-width: 767px) {
    .navToggle { display: block; }
    .module.nav .navContainer { display: none; flex-direction: column; }
    .module.nav.is-open .navContainer { display: flex; }
    .module.nav .navContainer > li { width: 100%; text-align: center; }
}

/* ---------- Buttons ---------- */
a.module.button, a.module.button2, .module.form input[type="submit"] {
    display: inline-block;
    text-decoration: none;
    cursor: pointer;
}
.buttonIcon { margin-right: 6px; }
.buttonLabel.labelRight { display: inline; }

/* ---------- Images ---------- */
.imageModuleWrap { display: inline-block; max-width: 100%; line-height: 0; }
img.module.image { display: block; max-width: 100%; height: auto; }

/* ---------- Galleries and image lists ---------- */
.module.gallery, .module.imagelist { width: 100%; }
.module.gallery .slides, .module.imagelist .slides { width: 100%; }
.module.gallery .pics, .module.imagelist .pics {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 12px;
}
.module.gallery .pics { grid-template-columns: repeat(3, 1fr); }
.module.imagelist .pics { grid-template-columns: repeat(2, 1fr); }

@media only screen and (max-width: 767px) {
    .module.gallery .pics { grid-template-columns: repeat(2, 1fr); }
    .module.imagelist .pics { grid-template-columns: repeat(2, 1fr); }
}

.module.gallery .pics li, .module.imagelist .pics li { margin: 0; }
.module.gallery .pics a { display: block; text-decoration: none; }
.module.gallery .thumb, .module.imagelist .thumb { display: block; }
.module.gallery .thumbInner { display: block; overflow: hidden; }
.module.gallery .pics img, .module.imagelist .pics img {
    display: block;
    width: 100%;
    height: 240px;
    object-fit: cover;
    transition: transform .35s ease;
}
@media only screen and (max-width: 767px) {
    .module.gallery .pics img, .module.imagelist .pics img { height: 160px; }
}
.module.gallery .pics a:hover img { transform: scale(1.05); }
.module.gallery .caption { display: block; }

/* ---------- Lightbox ---------- */
.lightbox {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(0,0,0,.9);
    padding: 30px;
}
.lightbox.is-open { display: flex; }
.lightbox img { max-width: 92vw; max-height: 86vh; object-fit: contain; }
.lightbox button {
    position: absolute;
    background: transparent;
    border: 0;
    color: #fff;
    font-size: 38px;
    line-height: 1;
    cursor: pointer;
    padding: 10px 18px;
}
.lightbox .lbClose { top: 10px; right: 14px; }
.lightbox .lbPrev { left: 6px; top: 50%; transform: translateY(-50%); }
.lightbox .lbNext { right: 6px; top: 50%; transform: translateY(-50%); }

/* ---------- Forms ---------- */
.module.form { width: 100%; }
.module.form .fields {
    display: flex;
    flex-wrap: wrap;
    margin-left: -8px;
    margin-right: -8px;
}
.module.form .field { padding: 0 8px 16px; }
.module.form .field.w100 { flex: 0 0 100%; max-width: 100%; }
.module.form .field.w50  { flex: 0 0 50%;  max-width: 50%; }
@media only screen and (max-width: 767px) {
    .module.form .field.w50 { flex: 0 0 100%; max-width: 100%; }
}
.module.form label { display: block; margin-bottom: 5px; }
.module.form input[type="text"],
.module.form input[type="email"],
.module.form input[type="tel"],
.module.form textarea {
    width: 100%;
    padding: 11px 12px;
    border: 1px solid #c4c4c4;
    border-radius: 3px;
    background: #fff;
    font: inherit;
    color: #333;
}
.module.form textarea { min-height: 150px; resize: vertical; }
.module.form input:focus, .module.form textarea:focus {
    outline: 2px solid #2b7fbc;
    outline-offset: 1px;
    border-color: #2b7fbc;
}
.module.form .formConsent {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    padding: 0 8px 16px;
    width: 100%;
}
.module.form .formConsent input { margin-top: 3px; flex: 0 0 auto; }
.module.form .formNote { padding: 0 8px; width: 100%; }
.formError { color: #b00020; }

/* ---------- Map ---------- */
.map-container { width: 100%; }
.map-container iframe { display: block; width: 100%; height: 420px; border: 0; }
@media only screen and (max-width: 767px) {
    .map-container iframe { height: 300px; }
}

/* ---------- Cookie notice ---------- */
.cookieBar {
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 9998;
    display: none;
    background: #1c1c1c;
    color: #fff;
    padding: 18px 20px;
    box-shadow: 0 -2px 14px rgba(0,0,0,.3);
    font-size: 14px;
    line-height: 1.5;
}
.cookieBar.is-open { display: block; }
.cookieBarInner {
    max-width: 1170px;
    margin: 0 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 14px;
}
.cookieBarText { flex: 1 1 340px; }
.cookieBar h2 { margin: 0 0 5px; font-size: 16px; color: #fff; }
.cookieBar p { margin: 0; color: #e6e6e6; }
.cookieBar a { color: #7fc4f2; text-decoration: underline; }
.cookieBarButtons { display: flex; gap: 10px; flex-wrap: wrap; }
.cookieBar button {
    padding: 10px 18px;
    border: 1px solid #fff;
    border-radius: 3px;
    font: inherit;
    cursor: pointer;
}
.cookieBar .cookieAccept { background: #2b7fbc; border-color: #2b7fbc; color: #fff; }
.cookieBar .cookieDecline { background: transparent; color: #fff; }

/* ---------- Footer additions ---------- */
.footerLegal { width: 100%; text-align: center; padding-top: 10px; }
.footerLegal a { text-decoration: underline; }

/* ---------- Editorial content pages ---------- */
.legalPage { padding: 50px 0 60px; }
.legalPage h1 { margin-top: 0; }
.legalPage h2 { margin-top: 34px; }
.legalPage ul { padding-left: 22px; }
.legalPage li { margin-bottom: 7px; }
.legalPage table {
    width: 100%;
    border-collapse: collapse;
    margin: 14px 0 6px;
}
.legalPage th, .legalPage td {
    border: 1px solid #d5d5d5;
    padding: 9px 11px;
    text-align: left;
    vertical-align: top;
}
.legalPage th { background: #f2f2f2; }
@media only screen and (max-width: 767px) {
    .legalPage table, .legalPage thead, .legalPage tbody,
    .legalPage th, .legalPage td, .legalPage tr { display: block; }
    .legalPage thead { display: none; }
    .legalPage tr { margin-bottom: 12px; border: 1px solid #d5d5d5; }
    .legalPage td { border: 0; border-bottom: 1px solid #eee; }
}

/* ---------- Accessibility ---------- */
.skipLink {
    position: absolute;
    left: -9999px;
    top: 0;
    z-index: 10000;
    padding: 10px 16px;
    background: #fff;
    color: #1c1c1c;
}
.skipLink:focus { left: 0; }

a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible {
    outline: 2px solid #2b7fbc;
    outline-offset: 2px;
}
