* { box-sizing: border-box; }
html { font-family: var(--font-body); color: var(--color-fg); background: var(--color-bg); line-height: 1.55; }
body { margin: 0; }
h1, h2, h3, h4 { font-family: var(--font-heading); line-height: 1.2; margin: 0 0 .5em; }
a { color: var(--color-accent); }
img { max-width: 100%; height: auto; display: block; }
.wrap { max-width: var(--content-width); margin: 0 auto; padding: 0 var(--space); }

.preview-banner { background: #b45309; color: #fff; text-align: center; padding: .4rem; font-size: .9rem; }
.site-header { border-bottom: 1px solid var(--color-bg-alt); }
.site-header .wrap { display: flex; align-items: center; justify-content: space-between; gap: var(--space); min-height: 64px; }
.brand { font-weight: 700; text-decoration: none; color: var(--color-fg); }
.site-nav ul { list-style: none; margin: 0; padding: 0; display: flex; gap: calc(var(--space) * 1.25); }
.site-nav li { position: relative; }
.site-nav a { text-decoration: none; color: var(--color-fg); padding: .4rem 0; display: inline-block; }
.site-nav li ul { display: none; position: absolute; top: 100%; left: 0; flex-direction: column; gap: 0; background: var(--color-bg); border: 1px solid var(--color-bg-alt); border-radius: var(--radius); min-width: 180px; padding: .3rem 0; z-index: 10; }
.site-nav li:hover > ul, .site-nav li:focus-within > ul { display: flex; }
.site-nav li ul a { padding: .4rem .9rem; display: block; }
.site-footer { background: var(--color-bg-alt); color: var(--color-muted); margin-top: calc(var(--space) * 3); padding: calc(var(--space) * 2) 0; font-size: .9rem; }
.site-footer ul { list-style: none; padding: 0; margin: 0 0 1rem; display: flex; gap: 1rem; flex-wrap: wrap; }
.site-footer a { color: inherit; }

.spacing-none { padding: 0; }
.spacing-sm { padding: calc(var(--space) * 1) 0; }
.spacing-md { padding: calc(var(--space) * 2) 0; }
.spacing-lg { padding: calc(var(--space) * 4) 0; }
.spacing-xl { padding: calc(var(--space) * 6) 0; }
.block-spacer { padding-bottom: 0; }
.width-narrow .wrap { max-width: calc(var(--content-width) * 0.66); }
.width-wide .wrap { max-width: calc(var(--content-width) * 1.3); }
.width-full .wrap { max-width: none; padding: 0; }
.align-center { text-align: center; }

.btn { display: inline-block; padding: .7rem 1.4rem; border-radius: var(--radius); text-decoration: none; font-weight: 600; }
.btn-primary { background: var(--color-accent); color: var(--color-accent-fg); }
.btn-secondary { background: transparent; color: var(--color-accent); border: 2px solid var(--color-accent); }

.block-hero { position: relative; overflow: hidden; }
.block-hero.variant-dark { background: var(--color-dark); color: #fff; }
.block-hero.variant-light { background: var(--color-bg-alt); }
.block-hero .hero-media { position: absolute; inset: 0; }
.block-hero .hero-media img { width: 100%; height: 100%; object-fit: cover; opacity: .55; }
.block-hero .hero-content { position: relative; }
.block-hero h1 { font-size: clamp(2rem, 5vw, 3.5rem); }
.block-hero .lead { font-size: 1.25rem; max-width: 60ch; }
.align-center .lead { margin-inline: auto; }

.prose { max-width: 70ch; }
.width-normal .prose, .width-wide .prose { max-width: none; }
.prose p { margin: 0 0 1em; }

.block-image figcaption { color: var(--color-muted); font-size: .9rem; margin-top: .5rem; }
.block-image img { border-radius: var(--radius); }

.gallery-grid { display: grid; gap: var(--space); grid-template-columns: repeat(var(--cols, 3), 1fr); }
.gallery-grid.cols-1 { --cols: 1; } .gallery-grid.cols-2 { --cols: 2; } .gallery-grid.cols-3 { --cols: 3; }
.gallery-grid.cols-4 { --cols: 4; } .gallery-grid.cols-5 { --cols: 5; } .gallery-grid.cols-6 { --cols: 6; }
.gallery-item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--radius); }
@media (max-width: 700px) { .gallery-grid { --cols: 2 !important; } }
.lightbox { position: fixed; inset: 0; background: rgba(0,0,0,.9); display: grid; place-items: center; z-index: 1000; }
.lightbox img { max-width: 92vw; max-height: 92vh; }
.lightbox button { position: absolute; top: 1rem; right: 1rem; font-size: 2rem; background: none; border: 0; color: #fff; cursor: pointer; }

.block-slider { position: relative; }
.slider-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
.slider-track::-webkit-scrollbar { display: none; }
.slide { flex: 0 0 100%; scroll-snap-align: start; position: relative; }
.slide img { width: 100%; max-height: 70vh; object-fit: cover; }
.slide-caption { position: absolute; left: 0; right: 0; bottom: 0; padding: var(--space) calc(var(--space) * 2); background: linear-gradient(transparent, rgba(0,0,0,.65)); color: #fff; }
.slider-btn { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(255,255,255,.85); border: 0; border-radius: 50%; width: 44px; height: 44px; font-size: 1.6rem; cursor: pointer; }
.slider-btn.prev { left: var(--space); } .slider-btn.next { right: var(--space); }
@media (prefers-reduced-motion: reduce) { .slider-track { scroll-behavior: auto; } }

.columns { display: grid; gap: calc(var(--space) * 2); grid-template-columns: repeat(var(--cols, 2), 1fr); }
.columns.cols-2 { --cols: 2; } .columns.cols-3 { --cols: 3; } .columns.cols-4 { --cols: 4; }
.columns > .block { padding: 0; }
.columns > .block .wrap { padding: 0; }
@media (max-width: 800px) { .columns { --cols: 1 !important; } }

.block-cta.variant-primary { background: var(--color-accent); color: var(--color-accent-fg); }
.block-cta.variant-primary .btn-primary { background: var(--color-accent-fg); color: var(--color-accent); }
.block-cta.variant-secondary { background: var(--color-bg-alt); }
.block-cta .btn-alt { background: var(--color-dark); color: #fff; margin-left: .6rem; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.block-column.has-link { position: relative; }
.block-column .column-link { position: absolute; inset: 0; z-index: 3; }
.cta-text { font-size: 1.2rem; max-width: 60ch; margin: 0 auto 1rem; }

.block-map iframe { border: 0; border-radius: var(--radius); display: block; }

.sx-form .field { margin: 0 0 1rem; }
.sx-form label { display: block; font-weight: 600; margin-bottom: .3rem; }
.sx-form label.choice { font-weight: 400; display: flex; gap: .5rem; align-items: flex-start; }
.sx-form input[type="text"], .sx-form input[type="email"], .sx-form input[type="tel"], .sx-form input[type="date"],
.sx-form select, .sx-form textarea { width: 100%; padding: .6rem .8rem; border: 1px solid var(--color-muted); border-radius: var(--radius); font: inherit; background: var(--color-bg); color: var(--color-fg); }
.sx-form fieldset { border: 0; padding: 0; margin: 0; }
.sx-form legend { font-weight: 600; margin-bottom: .3rem; }
.sx-form .hp { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; }
.sx-form .field[hidden] { display: none; }
.sx-form .form-grid { display: flex; flex-wrap: wrap; column-gap: 1.5rem; }
.sx-form .form-grid > .field { flex: 0 0 100%; min-width: 0; }
.sx-form .form-grid > .w-4 { flex-basis: calc(66.666% - .75rem); }
.sx-form .form-grid > .w-3 { flex-basis: calc(50% - .75rem); }
.sx-form .form-grid > .w-2 { flex-basis: calc(33.333% - 1rem); }
@media (max-width: 640px) { .sx-form .form-grid > .field { flex-basis: 100%; } }
.form-errors { background: #fee2e2; color: #991b1b; border-radius: var(--radius); padding: .8rem 1.2rem; }
.form-success { background: var(--color-success-bg); color: var(--color-success); border: 1px solid var(--color-success-border); border-radius: var(--radius); padding: .8rem 1.2rem; }
.block-form .wrap { max-width: calc(var(--content-width) * 0.66); }

.sx-altcha { display: inline-flex; gap: .5rem; align-items: center; padding: .6rem .9rem; border: 1px solid var(--color-muted); border-radius: var(--radius); }
.sx-altcha-state { color: var(--color-muted); font-size: .9rem; }
.field-captcha { margin: 1rem 0; }

.lang-switch { display: flex; gap: .5rem; font-size: .85rem; }
.lang-switch a { color: var(--color-muted); text-decoration: none; }
.lang-switch .current { font-weight: 700; }

.booking-days { display: flex; gap: .5rem; flex-wrap: wrap; margin: 1rem 0; }
.booking-day { padding: .4rem .8rem; border: 1px solid var(--color-muted); border-radius: var(--radius); text-decoration: none; color: var(--color-fg); }
.booking-day.is-selected { background: var(--color-accent); color: var(--color-accent-fg); border-color: var(--color-accent); }
.booking-slots { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.booking-slot { padding: .3rem .6rem; border: 1px solid var(--color-bg-alt); border-radius: var(--radius); }
.block-booking .wrap { max-width: calc(var(--content-width) * 0.66); }

.block-columns { position: relative; }
.block-columns > .wrap { position: relative; z-index: 2; }
.columns.cols-1 { --cols: 1; }
.section-bg { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.section-bg img { width: 100%; height: 100%; object-fit: cover; }
.block-columns.overlay-dark::after, .block-columns.overlay-light::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.block-columns.overlay-dark::after { background: rgba(0, 0, 0, .55); }
.block-columns.overlay-light::after { background: rgba(255, 255, 255, .6); }
.bg-light { background: var(--color-bg-alt); }
.bg-dark, .bg-image.overlay-dark { background: var(--color-dark); color: #fff; }
.bg-dark a, .bg-image.overlay-dark a { color: #fff; }
.bg-accent { background: var(--color-accent); color: var(--color-accent-fg); }
.block-columns.width-wide > .wrap { max-width: calc(var(--content-width) * 1.3); }
.block-columns.width-full > .wrap { max-width: none; }
.block-columns.align-center { text-align: center; }

.block-stats.variant-accent { background: var(--color-accent); color: var(--color-accent-fg); }
.block-stats.variant-dark { background: var(--color-dark); color: #fff; }
.stats { display: grid; gap: calc(var(--space) * 2); grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); text-align: center; }
.stat-value { display: block; font-family: var(--font-heading); font-size: 2.6rem; font-weight: 700; line-height: 1.1; }
.stat-label { display: block; margin-top: .3rem; }

.block-testimonials.variant-dark { background: var(--color-dark); color: #fff; }
.testimonials { display: grid; gap: calc(var(--space) * 2); grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.testimonial { margin: 0; padding: calc(var(--space) * 1.5); background: var(--color-bg-alt); border-radius: var(--radius); }
.variant-dark .testimonial { background: rgba(255, 255, 255, .06); }
.testimonial blockquote { margin: .6rem 0 1rem; }
.testimonial figcaption { display: flex; align-items: center; gap: .6rem; font-weight: 600; }
.testimonial .avatar { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.stars { display: flex; gap: 2px; }
.stars svg { fill: currentColor; opacity: .25; }
.stars svg.on { fill: var(--color-accent); opacity: 1; }

.map-consent { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; min-height: 240px; padding: calc(var(--space) * 2); text-align: center; background: var(--color-bg-alt); border-radius: var(--radius); }
.map-consent p { margin: 0; max-width: 40rem; }
.map-consent .btn { border: 0; cursor: pointer; font: inherit; font-weight: 600; }
.table-scroll { overflow-x: auto; }
.block-table table { width: 100%; border-collapse: collapse; }
.block-table th, .block-table td { padding: .5rem .75rem; text-align: left; vertical-align: top; }
.block-table th { font-weight: 700; border-bottom: 2px solid var(--color-accent); }
.block-table.variant-plain td { border-bottom: 1px solid var(--color-bg-alt); }
.block-table.variant-striped tbody tr:nth-child(odd) td { background: var(--color-bg-alt); }
.block-table.variant-boxed table { background: var(--color-bg-alt); }
.block-table.first-strong td:first-child { font-weight: 700; }
.block-table.last-right td:last-child, .block-table.last-right th:last-child { text-align: right; white-space: nowrap; }
.block-table.width-full .wrap { max-width: none; }

.variant-logos .gallery-item { display: flex; align-items: center; justify-content: center; padding: .6rem; background: #fff; border-radius: var(--radius); }
.variant-logos .gallery-item img { max-height: 90px; width: auto; object-fit: contain; filter: grayscale(1); opacity: .8; transition: filter .2s, opacity .2s; }
.variant-logos .gallery-item:hover img { filter: none; opacity: 1; }

.columns > .block-column { min-width: 0; }
.block-column.padding-xs { padding: 5px; --col-pad: 5px; } .block-column.padding-sm { padding: 10px; --col-pad: 10px; }
.block-column.padding-md { padding: 20px; --col-pad: 20px; } .block-column.padding-lg { padding: 40px; --col-pad: 40px; }
.block-column.align-center { text-align: center; } .block-column.align-right { text-align: right; }
.block-column > .block { padding: 0; }
.block-column > .block .wrap { padding: 0; max-width: none; }
.block-column.bg-white { background: #fff; color: var(--color-fg); }
.pt-none { padding-top: 0; } .pt-xs { padding-top: 10px; } .pt-sm { padding-top: 25px; } .pt-md { padding-top: 40px; } .pt-lg { padding-top: 70px; } .pt-xl { padding-top: 80px; }
.pb-none { padding-bottom: 0; } .pb-xs { padding-bottom: 10px; } .pb-sm { padding-bottom: 25px; } .pb-md { padding-bottom: 40px; } .pb-lg { padding-bottom: 70px; } .pb-xl { padding-bottom: 80px; }
.block-separator { border: 0; border-top: 2px solid var(--color-bg-alt); margin: calc(var(--space) * 1.5) auto; max-width: var(--content-width); }
.block-separator.width-full { max-width: none; }
.tone-accent { color: var(--color-accent); } .tone-light { color: #fff; } .tone-dark { color: var(--color-dark); }
.align-center.block-richtext { text-align: center; } .align-right.block-richtext { text-align: right; }
.ratio-square img { aspect-ratio: 1; object-fit: cover; width: 100%; }
.ratio-portrait img { aspect-ratio: 3 / 4; object-fit: cover; width: 100%; }
.ratio-landscape img { aspect-ratio: 4 / 3; object-fit: cover; width: 100%; }
.ratio-wide img { aspect-ratio: 16 / 9; object-fit: cover; width: 100%; }

.sx-preview { position: fixed; left: 50%; bottom: 16px; transform: translateX(-50%); z-index: 9999; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 4px; max-width: calc(100vw - 32px); padding: 5px; background: rgba(17, 20, 24, .92); border-radius: 999px; box-shadow: 0 10px 30px rgba(0, 0, 0, .3); font: 600 14px/1.2 system-ui, -apple-system, "Segoe UI", sans-serif; }
.sx-preview span { color: rgba(255, 255, 255, .7); padding: 0 10px 0 12px; }
.sx-preview a { display: block; padding: 8px 14px; border-radius: 999px; color: #fff; text-decoration: none; }
.sx-preview a:hover { background: rgba(255, 255, 255, .15); text-decoration: none; }
.sx-preview a.is-active { background: #fff; color: #111418; }
.block-column { --stripe: var(--color-accent); }
.block-column.has-media { overflow: hidden; }
.col-media { margin: calc(-1 * var(--col-pad-y, var(--col-pad, 0px))) calc(-1 * var(--col-pad-x, var(--col-pad, 0px))) 22px; }
.col-media img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 0; box-shadow: none; }
.col-icon { display: flex; align-items: center; justify-content: center; flex: 0 0 auto; width: 48px; height: 48px; margin: 0 0 18px; border-radius: 6px; background: color-mix(in srgb, var(--color-accent) 12%, #fff); color: var(--color-accent); }
.col-icon .icon { display: block; }
.icons-round .col-icon { border-radius: 50%; background: var(--color-accent); color: #fff; }
.col-media + .col-icon { position: relative; margin-top: -46px; border: 3px solid #fff; box-sizing: content-box; }
.icons-inline .col-icon, .icons-inline .col-media + .col-icon { position: static; display: block; width: auto; height: 0; min-height: 0; margin: 0; overflow: visible; border: 0; border-radius: 0; background: none; color: var(--color-accent); }
.icons-inline .col-icon .icon { width: 22px; height: 22px; transform: translateY(2px); }
.icons-inline .has-icon > .block-richtext:first-of-type .prose > :is(h2, h3, h4):first-child { padding-left: 34px; }
.columns > .block-column.stripe-top { border-top: 4px solid var(--stripe); }
.columns > .block-column.stripe-left { border-left: 4px solid var(--stripe); }
.columns > .block-column.stripe-right { border-right: 4px solid var(--stripe); }
.columns > .block-column.stripe-bottom { border-bottom: 4px solid var(--stripe); }
.block-column.stripe-c-accent { --stripe: var(--color-accent); }
.block-column.stripe-c-accent2 { --stripe: var(--color-accent-2, var(--color-accent)); }
.block-column.stripe-c-brand { --stripe: var(--color-brand, var(--color-accent)); }
.block-column.stripe-c-dark { --stripe: var(--color-dark, var(--color-fg)); }
.shadow-none > .columns > .block-column, .shadow-none > .columns > .block-column:hover { box-shadow: none; }
.shadow-light > .columns > .block-column { box-shadow: 0 10px 30px color-mix(in srgb, var(--color-dark, #000) 8%, transparent); }
.shadow-strong > .columns > .block-column { box-shadow: 0 18px 40px color-mix(in srgb, var(--color-dark, #000) 18%, transparent); }
.block-columns.gap-xs > .wrap.columns { column-gap: 8px; } .block-columns.gap-sm > .wrap.columns { column-gap: 16px; }
.block-columns.gap-md > .wrap.columns { column-gap: 24px; } .block-columns.gap-lg > .wrap.columns { column-gap: 36px; }
.block-columns.gap-xl > .wrap.columns { column-gap: 48px; }
.block-columns.row-gap-xs > .wrap.columns { row-gap: 8px; } .block-columns.row-gap-sm > .wrap.columns { row-gap: 16px; }
.block-columns.row-gap-md > .wrap.columns { row-gap: 24px; } .block-columns.row-gap-lg > .wrap.columns { row-gap: 36px; }
.block-columns.row-gap-xl > .wrap.columns { row-gap: 48px; }
