/* creoCMS core styles: features every theme gets (admin bar, gallery, lightbox, content images, video,
   background videos, news banner, files for download, anti-spam field). Loaded before the theme's CSS, so a theme can override anything here.
   Colours come from the theme's variables; these are only fallbacks. */
:root{--accent:#0b6b83;--muted:#666;--maxw:1100px}
[hidden]{display:none}
/* Form controls use the page font (browsers default buttons to ~13px); fields stay at least 16px so phones don't zoom in */
button,input,select,textarea{font:inherit}
/* <picture> around uploaded photos (includes/picture.php) adds no box of its own: the <img> lays out exactly as before */
picture.cms-img{display:contents}

/* Accessibility: text only for screen readers, "Skip to content" link (visible when focused with the keyboard),
   and one clear focus ring for keyboard users everywhere (themes may restyle it, but keep it visible) */
.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-link{position:absolute;left:12px;top:-100px;z-index:10001;padding:12px 18px;border-radius:0 0 8px 8px;background:#fff;color:#000;font-weight:700;text-decoration:underline;box-shadow:0 2px 10px rgba(0,0,0,.25)}
.skip-link:focus{top:0}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
input,select,textarea{font-size:max(16px,1em)}

/* Contact form honeypot – must stay invisible in every theme */
.contact-form .hp{position:absolute;left:-9999px}

.admin-bar{background:#222;color:#fff;font-size:14px;padding:8px 16px;display:flex;flex-wrap:wrap;gap:16px;justify-content:center}
.admin-bar a{color:#66ccff}

/* Gallery */
.album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;margin-top:18px}
.album-card{display:block;text-decoration:none;color:#222;border-radius:10px;overflow:hidden;background:#f4f6f7;transition:transform .15s}
.album-card:hover{transform:translateY(-3px)}
.album-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}
.album-title{display:block;font-weight:700;padding:10px 12px 0}
.album-count{display:block;color:var(--muted);font-size:14px;padding:0 12px 12px}
.album-description{margin-bottom:18px}
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-top:18px}
.gallery-item{display:block;border-radius:6px;overflow:hidden;background:#eef1f2}
.gallery-item img{display:block;width:100%;aspect-ratio:1;object-fit:cover;transition:transform .2s}
.gallery-item:hover img{transform:scale(1.04)}
@media (max-width:520px){.gallery-grid{grid-template-columns:repeat(3,1fr);gap:4px}}

/* Lightbox */
.lb-open{overflow:hidden}
.lightbox{position:fixed;inset:0;z-index:10000;background:rgba(10,14,16,.94);display:flex;align-items:center;justify-content:center}
.lightbox[hidden]{display:none}
.lightbox figure{margin:0;max-width:92vw;max-height:88vh;display:flex;flex-direction:column;align-items:center}
.lightbox picture{display:contents}
.lightbox img{max-width:92vw;max-height:80vh;object-fit:contain;border-radius:4px;box-shadow:0 10px 40px rgba(0,0,0,.5)}
.lightbox figcaption{color:#e8eef0;margin-top:12px;text-align:center;max-width:70ch}
.lightbox button{position:absolute;background:rgba(255,255,255,.08);color:#fff;border:0;border-radius:50%;width:48px;height:48px;font-size:30px;line-height:1;cursor:pointer}
.lightbox button:hover,.lightbox button:focus-visible{background:rgba(255,255,255,.2);outline:none}
.lb-close{top:16px;right:16px}
.lb-prev{left:16px;top:50%;transform:translateY(-50%)}
.lb-next{right:16px;top:50%;transform:translateY(-50%)}
.lb-count{position:absolute;top:26px;left:20px;color:#aab;font-size:14px}
@media (max-width:600px){.lb-prev,.lb-next{top:auto;bottom:16px;transform:none}}

/* Images placed in content with "Insert image" */
.content-area img.align-left{float:left;max-width:45%;margin:4px 20px 12px 0}
.content-area img.align-right{float:right;max-width:45%;margin:4px 0 12px 20px}
.content-area img.align-center{display:block;margin:16px auto}
.content-area::after{content:"";display:table;clear:both}
@media (max-width:600px){.content-area img.align-left,.content-area img.align-right{float:none;display:block;max-width:100%;margin:12px auto}}

/* Videos ([video] embeds and gallery items) – click-to-play */
.video-embed{position:relative;max-width:860px;margin:18px auto;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:#111}
.video-embed iframe,.video-play{position:absolute;inset:0;width:100%;height:100%;border:0}
.video-play{display:block;color:#fff;text-decoration:none}
.video-play img{width:100%;height:100%;object-fit:cover;display:block;transition:opacity .2s}
.video-play:hover img{opacity:.85}
.video-icon{position:absolute;left:50%;top:50%;width:68px;height:48px;margin:-24px 0 0 -34px;border-radius:14px;background:rgba(20,20,20,.8);transition:background .2s}
.video-icon::after{content:"";position:absolute;left:27px;top:14px;border-style:solid;border-width:10px 0 10px 17px;border-color:transparent transparent transparent #fff}
.video-play:hover .video-icon,.gallery-item.is-video:hover .video-icon{background:#e62117}
.video-label{position:absolute;left:0;right:0;bottom:0;padding:24px 14px 10px;font-size:14px;background:linear-gradient(transparent,rgba(0,0,0,.75))}
.gallery-item.is-video{position:relative}
.gallery-item.is-video .video-icon{transform:scale(.75)}
.video-noimg{display:flex;align-items:center;justify-content:center;aspect-ratio:1;padding:10px;color:#fff;background:#223;font-size:13px;text-align:center}
.lb-video{width:min(92vw,calc(80vh*16/9));aspect-ratio:16/9;border:0;border-radius:4px;background:#000}

/* Background videos (masterControl → Backgrounds) – decoration only, never clickable */
.bg-video{position:absolute;inset:0;overflow:hidden;pointer-events:none;background:#16323a var(--bg-poster,none) center/cover no-repeat}
.bg-video video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .8s}
.bg-video.is-playing video{opacity:1}
.bg-overlay{position:absolute;inset:0;background:rgba(0,0,0,var(--bg-overlay,.4))}
.bg-full{position:fixed;z-index:-1}
.page-banner{position:relative;max-width:var(--maxw);height:260px;margin:0 auto;border-radius:8px;overflow:hidden}
@media (max-width:700px){.page-banner{height:150px;border-radius:0}}
@media (prefers-reduced-motion:reduce){.bg-video video{display:none}}

/* Files for download (masterControl → Files) – after the page content or where [files] is */
.downloads{clear:both;margin-top:32px;padding-top:20px;border-top:1px solid #e3e8ea}
.content-area .downloads h2{margin-top:0}
.page-downloads .downloads{margin-top:18px;padding-top:0;border-top:0}
.download-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.download-item{display:flex;align-items:center;gap:12px;min-height:56px;padding:10px 12px;border:1px solid #e3e8ea;border-radius:8px;text-decoration:none;color:inherit;transition:border-color .15s,background .15s}
.download-item:hover,.download-item:focus-visible{border-color:var(--accent);background:rgba(11,107,131,.04)}
.download-icon{flex:0 0 46px;height:46px;border-radius:6px;background:var(--accent);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
.download-text{min-width:0;display:flex;flex-direction:column}
.download-title{font-weight:600;color:var(--accent);overflow-wrap:anywhere}
.download-meta{font-size:13px;color:var(--muted);overflow-wrap:anywhere}

/* Comments (masterControl → Comments) – after the page content or where [comments] is */
.comments{clear:both;margin-top:36px;padding-top:20px;border-top:1px solid #e3e8ea}
.content-area .comments h2{margin-top:0}
.comment-list,.comment-replies{list-style:none;margin:0;padding:0}
.comment{padding:14px 0;border-bottom:1px solid #eef2f3}
.comment-replies{margin:10px 0 0 8px;padding-left:12px;border-left:3px solid #e3e8ea}
@media (min-width:601px){.comment-replies{margin-left:24px;padding-left:14px}}
.comment-replies .comment{padding:10px 0;border-bottom:0}
.comment-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:4px}
.comment-head time{font-size:13px;color:var(--muted)}
.comment-text{overflow-wrap:anywhere}
.comment-badge{display:inline-block;font-size:12px;font-weight:700;line-height:1.6;padding:0 8px;border-radius:999px;background:var(--accent);color:#fff}
.comment-pending{font-size:12px;font-weight:700;color:#a15c00}
.comment-reply,.comment-cancel{background:none;border:0;min-height:44px;padding:0 2px;margin-top:0;color:var(--accent);font:inherit;font-size:14px;font-weight:600;cursor:pointer}
.comment-cancel{margin-left:8px}
.comment-reply[hidden],.comment-replying[hidden]{display:none}
.comments-none,.comments-locked,.comment-public{color:var(--muted)}
.comment-public{font-size:13px}
.comment-form{margin-top:22px}
.comment-form h3{margin:0 0 12px}
.comment-form label{display:block;margin-bottom:12px;font-weight:600}
.comment-form input[type=text],.comment-form textarea{display:block;width:100%;max-width:640px;margin-top:4px;padding:10px;border:1px solid #7a949d;border-radius:6px;font:inherit;box-sizing:border-box}
.comment-form .hp,.booking-form .hp{position:absolute;left:-9999px}
.comment-edited{font-size:13px;color:var(--muted)}
.comment-edit{margin-top:6px}
.comment-edit summary{display:inline-flex;align-items:center;min-height:44px;cursor:pointer;color:var(--accent);font-size:14px;font-weight:600}
.comment-edit textarea{display:block;width:100%;max-width:640px;margin:8px 0;padding:10px;border:1px solid #7a949d;border-radius:6px;font:inherit;box-sizing:border-box}
.comment-edit form{display:inline-block;margin-right:12px}
.comment-delete{background:none;border:0;min-height:44px;padding:0 2px;color:#b3261e;font:inherit;font-size:14px;font-weight:600;cursor:pointer}
.comment-edit-time{font-size:13px;color:var(--muted);margin:6px 0 0}

/* Social links (masterControl → Social links) – footer, or where [social] is */
.social-links{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.content-area .social-links{justify-content:flex-start;margin:16px 0}
.social-links a{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border-radius:50%;color:var(--accent);background:rgba(11,107,131,.08);text-decoration:none;transition:background .15s,color .15s,transform .15s}
.social-links a:hover,.social-links a:focus-visible{background:var(--accent);color:#fff;transform:translateY(-2px)}
.social-links svg{width:20px;height:20px;display:block}
.social-links img{width:22px;height:22px;object-fit:contain;display:block;border-radius:3px}
.social-letter{font-weight:700;font-size:16px;line-height:1}
@media (prefers-reduced-motion:reduce){.social-links a{transition:none}.social-links a:hover{transform:none}}

/* Back to top button (masterControl → Pages → Navigation) – shown by js/site.js after scrolling down */
.back-to-top{position:fixed;right:18px;bottom:calc(18px + var(--bottom-offset,0px));z-index:900;width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;box-shadow:0 4px 14px rgba(0,0,0,.18);text-decoration:none;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .2s,transform .2s,visibility .2s,bottom .2s}
.back-to-top.is-visible{opacity:.9;visibility:visible;transform:none}
.back-to-top:hover,.back-to-top:focus-visible{opacity:1;outline:none;box-shadow:0 0 0 3px #fff,0 0 0 5px var(--accent)}
@media (max-width:600px){.back-to-top{right:12px;bottom:calc(12px + var(--bottom-offset,0px));width:44px;height:44px}}
@media (prefers-reduced-motion:reduce){.back-to-top{transition:none}}

/* Cookie consent banner (masterControl → Privacy) – "Accept all" and "Reject all" look the same on purpose (equal choice) */
.consent{position:fixed;left:0;right:0;bottom:0;z-index:9999;background:#1f2a2e;color:#fff;box-shadow:0 -4px 18px rgba(0,0,0,.25);max-height:85vh;overflow:auto}
.consent[hidden]{display:none}
.consent-form{max-width:var(--maxw);margin:0 auto;padding:14px 16px;display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px}
.consent-text{flex:1 1 320px;font-size:15px;line-height:1.5}
.consent-text p{margin:0}
.consent-text a,.consent a{color:#9fdcff}
.consent-buttons{display:flex;flex-wrap:wrap;gap:8px}
.consent-btn{min-height:44px;padding:8px 18px;border:2px solid #9fdcff;border-radius:6px;background:#9fdcff;color:#10181b;font-weight:700;cursor:pointer}
.consent-btn:hover{background:#fff;border-color:#fff}
.consent-details{flex-basis:100%;order:3}
.consent-details summary{display:inline-flex;align-items:center;min-height:44px;cursor:pointer;font-weight:700;text-decoration:underline}
.consent-cats{display:grid;gap:10px;margin:6px 0 12px}
.consent-cat{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid #4a5b62;border-radius:8px;cursor:pointer}
.consent-cat input{width:20px;height:20px;margin:2px 0 0;flex:none;accent-color:#9fdcff}
.consent-cat em{font-style:normal;font-size:13px;color:#c5d3d8;margin-left:6px}
.consent-desc{display:block;font-size:14px;color:#d5e0e4;margin-top:2px}
.consent-id{font-size:13px;color:#c5d3d8;margin:8px 0 0}
.consent :focus-visible{outline-color:#fff}
@media (max-width:600px){.consent-buttons{width:100%}.consent-buttons .consent-btn{flex:1}}
.cookie-table{width:100%;border-collapse:collapse;font-size:14px;margin:12px 0}
.cookie-table th,.cookie-table td{text-align:left;padding:8px;border-bottom:1px solid #e3e8ea;vertical-align:top}
.cookie-note{font-size:14px;color:var(--muted)}
.form-privacy,.optional{font-size:14px;color:var(--muted);font-weight:normal}

/* ==== Micro-interactions ====
   Feedback for hover, press, focus and loading. Only transform, opacity, box-shadow and colours are animated,
   so nothing pushes other content around (no layout shift / CLS). "Reduce motion" turns movement off (end of file). */
:root{--ease:cubic-bezier(.2,.7,.2,1);--fast:.16s;--glow:0 0 0 4px rgba(11,107,131,.18),0 6px 20px rgba(11,107,131,.32);--ring:0 0 0 3px rgba(11,107,131,.25)}
@supports (color:color-mix(in srgb,red,blue)){:root{
--glow:0 0 0 4px color-mix(in srgb,var(--accent) 18%,transparent),0 6px 20px color-mix(in srgb,var(--accent) 32%,transparent);
--ring:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}

/* Buttons: glow and lift on hover, press down on click */
.btn,.consent-btn,.news-pause,.comment-reply,.comment-cancel,.comment-delete,.comment-edit summary,.nav-toggle{transition:transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease),background-color var(--fast),color var(--fast),border-color var(--fast),opacity var(--fast)}
.btn{position:relative}
.btn:hover{box-shadow:var(--glow);transform:translateY(-1px)}
.btn:active,.consent-btn:active{transform:translateY(0) scale(.97);box-shadow:none;transition-duration:.06s}
.consent-btn:hover{box-shadow:0 0 0 4px rgba(159,220,255,.22),0 6px 20px rgba(159,220,255,.35);transform:translateY(-1px)}
.comment-reply:hover,.comment-cancel:hover,.comment-edit summary:hover{opacity:.75}

/* Busy button: after sending a form it shows a spinner (text kept, only hidden, so the button keeps its size) */
.btn.is-busy{color:transparent!important;pointer-events:none}
.btn.is-busy::after{content:"";position:absolute;inset:0;margin:auto;width:18px;height:18px;border-radius:50%;border:2px solid #fff;border-right-color:transparent;animation:creo-spin .7s linear infinite}
.btn-ghost.is-busy::after{border-color:var(--accent);border-right-color:transparent}
@keyframes creo-spin{to{transform:rotate(360deg)}}

/* Links in texts: the underline thickens on hover (no change in size) */
.content-area a:not(.btn):not(.download-item):not(.gallery-item):not(.album-card){text-decoration-thickness:1px;text-underline-offset:.18em;transition:text-decoration-color var(--fast),text-decoration-thickness var(--fast),color var(--fast)}
.content-area a:not(.btn):not(.download-item):not(.gallery-item):not(.album-card):hover{text-decoration-thickness:2px}

/* Form fields: soft ring and accent border while typing */
input:not([type=checkbox]):not([type=radio]):not([type=file]),textarea,select{transition:border-color var(--fast),box-shadow var(--fast)}
.content-area input:not([type=checkbox]):not([type=radio]):not([type=file]):focus,.content-area textarea:focus,.content-area select:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}

/* Clickable cards and icons lift a little */
.download-item{transition:border-color var(--fast),background var(--fast),transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}
.download-item:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.08)}
.download-item:active{transform:none;box-shadow:none}
.download-icon{transition:transform var(--fast) var(--ease)}
.download-item:hover .download-icon{transform:scale(1.06)}
.album-card:hover{box-shadow:0 10px 24px rgba(0,0,0,.1)}
.social-links a:hover,.social-links a:focus-visible{box-shadow:var(--glow)}
.social-links a:active{transform:scale(.94)}
.back-to-top:hover{transform:translateY(-2px);box-shadow:var(--glow)}
.back-to-top:active{transform:scale(.94)}
.poll-option:active{transform:scale(.99)}
.poll-option{transition:border-color var(--fast),background var(--fast),transform var(--fast)}

/* Things that appear: poll result bars grow, the lightbox fades in, the cookie banner slides up, the mobile menu drops down */
.poll-bar span{transform-origin:left center;animation:creo-grow .7s var(--ease) both}
@keyframes creo-grow{from{transform:scaleX(0)}}
.poll-message{animation:creo-pop .3s var(--ease) both}
@keyframes creo-pop{from{opacity:0;transform:translateY(-4px)}}
.lightbox:not([hidden]){animation:creo-fade .2s ease both}
.lightbox:not([hidden]) figure{animation:creo-zoom .25s var(--ease) both}
@keyframes creo-fade{from{opacity:0}}
@keyframes creo-zoom{from{opacity:0;transform:scale(.96)}}
.consent:not([hidden]){animation:creo-up .35s var(--ease) both}
@keyframes creo-up{from{transform:translateY(100%)}}

/* Scroll reveal: cards below the first screen fade in as they come into view (js/site.js adds .reveal only with JS,
   only below the fold, never with "reduce motion"; print always shows everything) */
.reveal{opacity:0;transform:translateY(14px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.reveal.is-in{opacity:1;transform:none}
@media print{.reveal{opacity:1!important;transform:none!important}}

/* Map (masterControl → Map): map + list of places side by side; the box keeps its height before and after loading (no layout shift) */
.site-map{padding:clamp(2.5rem,6vw,4.5rem) 0}
.site-map-inner{max-width:var(--maxw,1100px);margin:0 auto;padding:0 clamp(1rem,4vw,2.5rem)}
.site-map-title{margin:0 0 1.25rem}
.site-map-layout{display:grid;gap:1.25rem}
.map-box{position:relative;overflow:hidden;border-radius:14px;background:repeating-linear-gradient(45deg,rgba(127,127,127,.08) 0 12px,rgba(127,127,127,.14) 12px 24px);isolation:isolate}
.map-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:1.5rem;text-align:center}
.map-placeholder p{margin:0;max-width:26rem;font-size:.95rem}
.map-places{display:grid;gap:.75rem;list-style:none;margin:0;padding:0;align-content:start}
.map-place{display:flex;flex-direction:column;gap:.25rem;padding:1rem 1.1rem;border:1px solid rgba(127,127,127,.3);border-radius:12px}
.map-place.is-home{border-width:2px;border-color:var(--accent)}
.map-place-text{font-size:.95rem;opacity:.85}
.map-place-links{display:flex;flex-wrap:wrap;gap:0 1rem}
.map-place-links a{display:inline-flex;align-items:center;min-height:44px;font-weight:600}
.map-box .leaflet-container{font:inherit}
@media (min-width:860px){.site-map-layout{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}}

/* Polls (news items of type poll) – in the news banner, or alone with [poll <item>] */
.poll{margin:10px 0 4px;max-width:560px}
.poll fieldset{border:0;margin:0;padding:0}
.poll-legend{font-size:14px;color:var(--muted);margin-bottom:6px;padding:0}
.poll-option{display:flex;align-items:center;gap:10px;min-height:44px;margin:0 0 6px;padding:8px 12px;border:1px solid #7a949d;border-radius:8px;cursor:pointer;font-weight:normal;transition:border-color .15s,background .15s}
.poll-option:hover,.poll-option:has(input:checked){border-color:var(--accent);background:rgba(11,107,131,.05)}
.poll-option input{accent-color:var(--accent);margin:0}
.poll-submit{margin-top:6px}
.poll-options.is-preview{margin:0 0 8px;padding-left:20px}
.poll-results{list-style:none;margin:0;padding:0}
.poll-result{display:grid;grid-template-columns:1fr auto;gap:2px 10px;margin-bottom:10px}
.poll-percent{font-weight:700;font-variant-numeric:tabular-nums}
.poll-bar{grid-column:1/-1;height:8px;border-radius:999px;background:#e6eef0;overflow:hidden}
.poll-bar span{display:block;height:100%;border-radius:999px;background:#9fbfc8}
.poll-result.is-mine .poll-bar span{background:var(--accent)}
.poll-mine{display:inline-block;margin-left:6px;font-size:12px;font-weight:700;color:var(--accent)}
.poll-meta{font-size:13px;color:var(--muted);margin:6px 0 0}
.poll-message{margin:0 0 10px;padding:8px 12px;border-radius:8px;background:#e6f4ea;color:#1e5b2f;font-size:14px}
.poll-message.is-error{background:#fdecea;color:#8a1f11}
.poll-card{margin:24px 0;padding:16px;border:1px solid #e3e8ea;border-radius:10px}
.poll-card .poll-title{margin:0 0 8px}
@media (min-width:601px){.poll-card{padding:20px 22px}}
.news-body .poll{margin-bottom:8px}

/* News banner (masterControl → News) */
.container.news-container{padding-bottom:0}
.news-banner{position:relative;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.content-area .news-banner{margin:18px 0;border:1px solid #e6eef0;box-shadow:none}
/* All items share one grid cell, so the banner keeps the height of the tallest item and never jumps */
.news-slides{display:grid}
.news-slide{grid-area:1/1;display:flex;align-items:stretch;transition:opacity .5s}
.news-slide[hidden]{display:flex;visibility:hidden;opacity:0}
.news-image{flex:0 0 38%;width:38%;min-height:200px;object-fit:cover}
.news-body{flex:1;padding:24px 28px 52px}
.news-title{margin:0 0 8px;font-size:22px}
.news-text{color:#444}
.news-text p{margin:0 0 10px}
.news-link{margin-top:6px}
.news-dots{position:absolute;left:0;right:0;bottom:4px;display:flex;justify-content:center;gap:0}
.news-dot{width:44px;height:44px;padding:0;border:0;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center}
.news-dot::before{content:"";width:10px;height:10px;border-radius:50%;background:#7a949d;transition:background .2s,transform .2s}
.news-dot:hover::before{background:#56707a}
.news-dot[aria-current="true"]::before{background:var(--accent);transform:scale(1.25)}
.news-dot:focus-visible{outline:2px solid var(--accent);outline-offset:-4px;border-radius:50%}
/* Pause / play for the auto-advancing banner: two bars, or a triangle when stopped */
.news-pause{width:44px;height:44px;padding:0;border:0;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#56707a}
.news-pause[hidden]{display:none}
.news-pause::before{content:"";width:10px;height:12px;border-left:3px solid currentColor;border-right:3px solid currentColor;box-sizing:border-box}
.news-pause.is-stopped::before{width:0;height:0;border-style:solid;border-width:6px 0 6px 10px;border-color:transparent transparent transparent currentColor}
.news-pause:hover{color:var(--accent)}
.news-pause:focus-visible{outline:2px solid var(--accent);outline-offset:-4px;border-radius:50%}
@media (max-width:700px){
.news-slide{flex-direction:column}
.news-image{flex:none;width:100%;min-height:0;aspect-ratio:16/9}
.news-body{padding:18px 18px 52px}
}
@media (prefers-reduced-motion:reduce){.news-slide{transition:none}}

/* Reduce motion: no movement, no animations – only instant colour and shadow feedback */
@media (prefers-reduced-motion:reduce){
*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
.btn:hover,.consent-btn:hover,.download-item:hover,.back-to-top:hover,.social-links a:hover,.album-card:hover{transform:none}
.reveal{opacity:1;transform:none}
}

/* Booking (includes/booking.php): service → day → time → details. Themes may restyle; --accent colours the choices. */
.booking{margin:1.5rem 0}
.booking-info{margin:0 0 1.25rem;padding:.9rem 1.1rem;border-left:4px solid var(--accent);background:rgba(0,0,0,.035);border-radius:6px}
.booking-step{display:flex;align-items:center;gap:.6rem;margin:1.75rem 0 .75rem;font-size:1.2rem;font-weight:700;line-height:1.3}
.booking-step span{display:inline-grid;place-items:center;flex:none;width:1.9rem;height:1.9rem;border-radius:50%;background:var(--accent);color:#fff;font-size:.95rem}
.booking-services,.booking-days{display:flex;flex-wrap:wrap;gap:.6rem;margin:0;padding:0;list-style:none}
.booking-services a{display:flex;flex-direction:column;min-width:11rem;min-height:44px;padding:.75rem 1rem;border:2px solid rgba(0,0,0,.15);border-radius:10px;color:inherit;text-decoration:none}
.booking-services a span{font-size:.88rem;opacity:.8}
.booking-days a,.booking-days .is-full{display:flex;flex-direction:column;align-items:center;justify-content:center;width:4.2rem;min-height:4.6rem;border:2px solid rgba(0,0,0,.15);border-radius:10px;color:inherit;text-decoration:none;line-height:1.15}
.booking-days strong{font-size:1.35rem}
.booking-weekday,.booking-month{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
.booking-days .is-full{opacity:.4;text-decoration:line-through}
.booking-services a:hover,.booking-days a:hover{border-color:var(--accent)}
.booking-services a.is-current,.booking-days a.is-current{border-color:var(--accent);background:var(--accent);color:#fff}
.booking-form fieldset{margin:0;padding:0;border:0}
.booking-form legend{float:left;width:100%;padding:0;color:inherit}
.booking-form legend+*{clear:left}
.booking-times{display:flex;flex-wrap:wrap;gap:.5rem}
.booking-times legend{width:100%}
.booking-times label{position:relative;margin:0}
.booking-times input{position:absolute;opacity:0;width:1px;height:1px}
.booking-times label span{display:inline-grid;place-items:center;min-width:4.6rem;min-height:44px;padding:0 .75rem;border:2px solid rgba(0,0,0,.15);border-radius:10px;font-weight:700;cursor:pointer}
.booking-times input:checked+span{border-color:var(--accent);background:var(--accent);color:#fff}
.booking-times input:focus-visible+span{outline:3px solid var(--accent);outline-offset:2px}
.booking-details label{display:block;margin-bottom:1rem;font-weight:700}
.booking-details input:not([type=radio]),.booking-details textarea{display:block;width:100%;margin-top:.35rem;padding:.75rem 1rem;border:1px solid #8a8a8a;border-radius:8px;font:inherit;font-size:16px;background:#fff;color:#111}
.booking-details .hint{display:block;font-weight:normal;font-size:14px;opacity:.8}
.booking-done{padding:1rem 1.25rem}
@media (prefers-reduced-motion:no-preference){.booking-services a,.booking-days a,.booking-times label span{transition:border-color .15s,background-color .15s}}
