* { box-sizing: border-box; }
html { background: var(--nicolas-background); scroll-behavior: smooth; }
body { margin: 0; color: var(--nicolas-ink); background: var(--nicolas-background); font-family: var(--nicolas-font-body); font-size: var(--nicolas-type-body); line-height: 1.6; letter-spacing: .01em; }
button, input, select, textarea { font: inherit; }
/* Reusable translucent surface for content layered over a photo or background pattern. */
.nicolas-glass-panel { border: 1px solid rgb(255 255 255 / .78); border-radius: var(--nicolas-radius-control); background: rgb(255 255 255 / .36); -webkit-backdrop-filter: blur(1.5px); backdrop-filter: blur(1.5px); }
h1, h2, h3, h4, h5, h6 { margin-block: 0; font-family: var(--nicolas-font-heading); font-weight: 700; line-height: 1.2; letter-spacing: .03em; }
h1 { font-size: var(--nicolas-font-size-h1); }
h2 { font-size: var(--nicolas-font-size-h2); }
h3 { font-size: var(--nicolas-font-size-h3); }
/* Shared page typography; legacy pages and shared header/footer retain their styles. */
:where(.nicolas-home, .nicolas-venues, .nicolas-accommodation, .nicolas-contact) :is(h1, h2, h3) { letter-spacing: var(--nicolas-tracking-heading); text-wrap: balance; }
:where(.nicolas-home, .nicolas-venues, .nicolas-accommodation, .nicolas-contact) h1 { font-weight: var(--nicolas-weight-heading); line-height: 1.02; }
:where(.nicolas-home, .nicolas-venues, .nicolas-accommodation, .nicolas-contact) h2 { font-size: var(--nicolas-type-section); font-weight: var(--nicolas-weight-heading); line-height: 1.12; }
:where(.nicolas-home, .nicolas-venues, .nicolas-accommodation, .nicolas-contact) h3 { font-size: var(--nicolas-type-subheading); font-weight: var(--nicolas-weight-strong); line-height: 1.3; }
:where(.nicolas-home__title-brand, .nicolas-venues__hero h1 > span, .nicolas-accommodation__title-accent, .nicolas-contact__title-accent) {
    color: var(--nicolas-accent-dark);
    background-image: var(--nicolas-heading-accent-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}
@keyframes nicolas-heading-gradient-drift {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}
@media (prefers-reduced-motion: no-preference) {
    h1 .nicolas-heading-gradient--animated {
        background-image: linear-gradient(110deg,
            var(--nicolas-accent-dark) 0% 30%,
            var(--nicolas-accent) 43%,
            color-mix(in srgb, var(--nicolas-accent) 85%, white) 50%,
            var(--nicolas-accent) 57%,
            var(--nicolas-accent-dark) 70% 100%);
        background-size: 240% 100%;
        animation: nicolas-heading-gradient-drift 6s ease-in-out infinite;
        animation-play-state: var(--nicolas-heading-gradient-state, paused);
    }
}
p { margin-block: 0; }
img { display: block; max-width: 100%; height: auto; }
a { color: var(--nicolas-accent); text-decoration: none; }
:focus-visible { outline: 3px solid var(--nicolas-accent); outline-offset: 3px; }
.inner { width: 85%; max-width: var(--nicolas-content-width); margin-inline: auto; }
.section { padding-block: var(--nicolas-section-space); }
.nicolas-skip-link { position: absolute; z-index: 10000; top: 0; left: 1rem; padding: .6rem 1rem; transform: translateY(-150%); background: var(--nicolas-white); }
.nicolas-skip-link:focus { transform: translateY(0); }
.nicolas-visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
