/* Reserve the vertical scrollbar gutter on every NEVV page. Without this,
   switching between a short page and a long page changes the viewport width
   and a centered page appears to jump sideways. */
html { scrollbar-gutter: stable; }
@supports not (scrollbar-gutter: stable) {
    html { overflow-y: scroll; }
}

:root {
    --nevv-page-outer-bg: #fff;
    --nevv-page-content-bg: #fff;
    --nevv-page-bg-image: none;
    --nevv-page-bg-size: cover;
    --nevv-page-bg-position: center center;
    --nevv-page-bg-repeat: no-repeat;
    --nevv-page-bg-attachment: fixed;
    --nevv-page-width: 1280px;
    --nevv-page-side-padding: 0px;
    --nevv-page-block-gap: 0px;
    --nevv-page-tiles-full: 4;
    --nevv-page-tiles-mobile: 1;
}
* { box-sizing: border-box; }
body.nevv-site-document { margin: 0; background-color: var(--nevv-page-outer-bg); color: #17202a; }
.nevv-page-shell {
    width: 100%;
    min-height: 100vh;
    background-color: var(--nevv-page-outer-bg);
    background-image: var(--nevv-page-bg-image);
    background-size: var(--nevv-page-bg-size);
    background-position: var(--nevv-page-bg-position);
    background-repeat: var(--nevv-page-bg-repeat);
    background-attachment: var(--nevv-page-bg-attachment);
}
.nevv-page { width: min(100%, var(--nevv-page-width)); min-height: 100vh; margin: 0 auto; padding-inline: var(--nevv-page-side-padding); background-color: var(--nevv-page-content-bg); container-type: inline-size; }
.nevv-block { position: relative; width: 100%; margin: 0 0 var(--nevv-block-gap-after, var(--nevv-page-block-gap)); }
.nevv-page > .nevv-block:last-child,
.nevv-page > .nevv-sticky-stack:last-child > .nevv-block:last-child { margin-bottom: 0; }
.nevv-block__content { width: 100%; min-width: 0; }

/* Sticky stack. The last active sticky anchor on a page defines the end of the
   fixed group. Its stack background fills all gaps between the pinned blocks;
   setting it to transparent intentionally reveals content scrolling below. */
.nevv-sticky-stack {
    position: sticky;
    top: 0;
    z-index: 1000;
    display: flow-root;
    width: 100%;
    background: var(--nevv-sticky-stack-bg, transparent);
    isolation: isolate;
}
body.admin-bar .nevv-sticky-stack { top: 32px; }
.nevv-sticky-anchor-block {
    width: 100%;
    min-width: 0;
    background: var(--nevv-sticky-bg, transparent);
    color: var(--nevv-sticky-text, #17202a);
}
.nevv-sticky-anchor-stage {
    min-height: var(--nevv-sticky-height, 16px);
    display: flex;
    align-items: var(--nevv-sticky-align, center);
    justify-content: var(--nevv-sticky-justify, center);
    padding: var(--nevv-sticky-pad, 0px);
}
.nevv-sticky-anchor-stage > :first-child { margin-top: 0; }
.nevv-sticky-anchor-stage > :last-child { margin-bottom: 0; }
@media (max-width: 782px) {
    body.admin-bar .nevv-sticky-stack { top: 46px; }
}

/* Shared proportional scaling. The JavaScript runtime switches the stage to the
   configured design width and scales it only when the available width is smaller. */
.nevv-scalable-block { position: relative; width: 100%; min-width: 0; }
.nevv-scale-shell { position: relative; width: 100%; min-width: 0; overflow: hidden; }
.nevv-scale-stage { box-sizing: border-box; width: 100%; min-width: 0; transform-origin: top left; }
.nevv-scalable-block.is-nevv-scaled .nevv-scale-stage { position: absolute; inset: 0 auto auto 0; }

.nevv-layout-block {
    width: 100%;
    min-width: 0;
    background: var(--nevv-block-bg);
    color: var(--nevv-block-text);
    text-align: var(--nevv-block-text-align, left);
}
.nevv-layout-stage {
    min-height: var(--nevv-block-min-height);
    padding: var(--nevv-block-pad);
    font-size: var(--nevv-block-font-size, 16px);
    line-height: var(--nevv-block-line-height, 1.5);
}
.nevv-layout-row { display: grid; width: 100%; min-width: 0; gap: var(--nevv-block-gap); align-items: stretch; }
.nevv-layout-row + .nevv-layout-row { margin-top: var(--nevv-block-gap); }
.nevv-layout-column { min-width: 0; overflow-wrap: anywhere; }
.nevv-layout-column > :first-child { margin-top: 0; }
.nevv-layout-column > :last-child { margin-bottom: 0; }
.nevv-layout-column img,
.nevv-layout-column video,
.nevv-layout-column svg,
.nevv-layout-media { display: block; max-width: 100%; height: auto; }
.nevv-layout-column iframe { max-width: 100%; }

/* Text cut-outs use a synchronized copy of the page background. The runtime
   calculates the real rendered image size and offsets it for every text element,
   so the letters behave like moving windows onto the page background while the
   document is scrolled. */
.nevv-text-page-cutout,
.nevv-layout-block--text-page-cutout :where(p, div, h1, h2, h3, h4, h5, h6, span, strong, b, em, i, u, s, strike, small, sup, sub, li, a, blockquote) {
    color: transparent !important;
    -webkit-text-fill-color: transparent !important;
    background-color: var(--nevv-cutout-bg-color, var(--nevv-page-outer-bg)) !important;
    background-image: var(--nevv-cutout-bg-image, var(--nevv-page-bg-image)) !important;
    background-size: var(--nevv-cutout-bg-size, var(--nevv-page-bg-size)) !important;
    background-position: var(--nevv-cutout-bg-position, var(--nevv-page-bg-position)) !important;
    background-repeat: var(--nevv-cutout-bg-repeat, var(--nevv-page-bg-repeat)) !important;
    background-attachment: var(--nevv-cutout-bg-attachment, scroll) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    box-decoration-break: clone;
    -webkit-box-decoration-break: clone;
}
.nevv-layout-block--selection-locked,
.nevv-layout-block--selection-locked * {
    -webkit-user-select: none;
    user-select: none;
}
.nevv-layout-block--selection-locked * { pointer-events: none; }
.nevv-layout-block--selection-locked a,
.nevv-layout-block--selection-locked a * { pointer-events: auto; }
.nevv-layout-block--selection-locked img,
.nevv-layout-block--selection-locked video,
.nevv-layout-block--selection-locked svg { -webkit-user-drag: none; }
.nevv-layout-file { display: inline-flex; min-height: 42px; align-items: center; padding: 0 14px; border: 1px solid currentColor; border-radius: 8px; text-decoration: none; }

/* Menu block variants. */
.nevv-menu-block { width: 100%; min-width: 0; background: var(--nevv-menu-bg); color: var(--nevv-menu-text); }
.nevv-menu-stage { padding: var(--nevv-menu-padding); font-size: var(--nevv-menu-font-size); font-weight: var(--nevv-menu-font-weight); }
.nevv-menu-list { display: flex; flex-wrap: nowrap; align-items: center; justify-content: var(--nevv-menu-justify); gap: var(--nevv-menu-gap); min-width: max-content; }
.nevv-menu-block--vertical .nevv-menu-list { width: 100%; min-width: 0; flex-direction: column; align-items: stretch; }
.nevv-menu-link { flex: 0 0 auto; color: var(--nevv-menu-text); text-decoration: none; line-height: 1.25; white-space: nowrap; transition: color .18s ease, background-color .18s ease, border-color .18s ease, transform .18s ease; }
.nevv-menu-link:hover,
.nevv-menu-link:focus-visible,
.nevv-menu-link.is-current { color: var(--nevv-menu-active); }
.nevv-menu-block--plain .nevv-menu-link { padding: .35em .15em; }
.nevv-menu-block--buttons .nevv-menu-link { padding: .72em 1.15em; border: 1px solid transparent; border-radius: var(--nevv-menu-radius); background: var(--nevv-menu-button); box-shadow: 0 2px 8px rgba(20, 32, 45, .12); }
.nevv-menu-block--buttons .nevv-menu-link:hover,
.nevv-menu-block--buttons .nevv-menu-link:focus-visible,
.nevv-menu-block--buttons .nevv-menu-link.is-current { border-color: var(--nevv-menu-active); transform: translateY(-1px); }
.nevv-menu-block--pills .nevv-menu-link { padding: .58em 1em; border: 1px solid currentColor; border-radius: 999px; }
.nevv-menu-block--pills .nevv-menu-link:hover,
.nevv-menu-block--pills .nevv-menu-link:focus-visible,
.nevv-menu-block--pills .nevv-menu-link.is-current { color: var(--nevv-menu-button); border-color: var(--nevv-menu-active); background: var(--nevv-menu-active); }
.nevv-menu-block--underline .nevv-menu-link { position: relative; padding: .55em .1em .65em; }
.nevv-menu-block--underline .nevv-menu-link::after { content: ''; position: absolute; right: 0; bottom: 0; left: 0; height: 2px; background: currentColor; transform: scaleX(0); transform-origin: center; transition: transform .18s ease; }
.nevv-menu-block--underline .nevv-menu-link:hover::after,
.nevv-menu-block--underline .nevv-menu-link:focus-visible::after,
.nevv-menu-block--underline .nevv-menu-link.is-current::after { transform: scaleX(1); }
.nevv-menu-block--empty { padding: 16px; color: #677586; text-align: center; }

.nevv-auto-grid { display: grid; grid-template-columns: repeat(var(--nevv-page-tiles-full), minmax(0, 1fr)); gap: var(--nevv-page-block-gap); }
.nevv-fotobaza-block { width: 100%; overflow: hidden; }
.nevv-fotobaza-frame { display: block; width: 100%; min-height: 0; border: 0; background: transparent; overflow: hidden; }
html.nevv-fotobaza-viewport-open,
html.nevv-fotobaza-viewport-open body { overflow: hidden !important; overscroll-behavior: none; }
.nevv-block.is-nevv-fotobaza-viewport-host,
.nevv-fotobaza-block.is-nevv-fotobaza-viewport-host { z-index: 2147483000 !important; overflow: visible !important; }
.nevv-fotobaza-frame.is-nevv-fotobaza-viewport {
    position: fixed !important;
    inset: 0 !important;
    z-index: 2147483600 !important;
    display: block !important;
    width: 100vw !important;
    max-width: none !important;
    height: 100vh !important;
    height: 100dvh !important;
    max-height: none !important;
    margin: 0 !important;
    border: 0 !important;
    background: #050a12 !important;
    transform: none !important;
}
.nevv-block-error,
.nevv-page-disabled { margin: 0; padding: clamp(40px, 8vw, 100px) 24px; background: #fff4f2; color: #8a1c14; text-align: center; }
.nevv-page-disabled h1 { margin: 0 0 12px; }
@media (max-width: 720px) {
    /* Deliberately do not turn block columns into rows. The whole stage is scaled
       proportionally, preserving the authored row/column composition. */
    .nevv-auto-grid { grid-template-columns: repeat(var(--nevv-page-tiles-mobile), minmax(0, 1fr)); }
}
