/* 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-mobile-width: 100%;
    --nevv-page-mobile-scale-percent: 100;
    --nevv-page-font-family: inherit;
    --nevv-page-side-padding: 0px;
    --nevv-page-first-block-offset: 0px;
    --nevv-page-block-gap: 0px;
    --nevv-page-tiles-full: 4;
    --nevv-page-tiles-mobile: 1;
    --nevv-viewport-width: 100vw;
}
* { 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 { font-family: var(--nevv-page-font-family, inherit); width: min(100%, var(--nevv-page-width)); min-height: 100vh; margin: 0 auto; padding-top: var(--nevv-page-first-block-offset); padding-inline: var(--nevv-page-side-padding); background-color: var(--nevv-page-content-bg); container-type: inline-size; display:flex; flex-wrap:wrap; align-items:flex-start; align-content:flex-start; justify-content:center; column-gap:var(--nevv-page-block-gap); row-gap:0; }

@media (max-width: 767px) {
    .nevv-page { width: min(100%, var(--nevv-page-mobile-width)); }
}
.nevv-block { position: relative; width: min(100%, var(--nevv-block-layout-width, 100%)); flex: 0 0 min(100%, var(--nevv-block-layout-width, 100%)); max-width:100%; align-self:flex-start; margin: 0 0 var(--nevv-block-gap-after, var(--nevv-page-block-gap)); border: 0 !important; outline: none !important; }
.nevv-block[data-nevv-block-width-mode="viewport_percent"],
.nevv-block[data-nevv-block-width-mode="viewport_px"] {
    width: min(var(--nevv-viewport-width, 100vw), var(--nevv-block-layout-width, 100vw));
    flex-basis: min(var(--nevv-viewport-width, 100vw), var(--nevv-block-layout-width, 100vw));
    max-width: var(--nevv-viewport-width, 100vw);
}

@media (min-width: 768px) and (max-width: 1024px) {
    .nevv-block {
        width: min(100%, var(--nevv-block-layout-width-tablet, var(--nevv-block-layout-width, 100%)));
        flex-basis: min(100%, var(--nevv-block-layout-width-tablet, var(--nevv-block-layout-width, 100%)));
        max-width: 100%;
    }
    .nevv-block[data-nevv-block-width-mode-tablet="viewport_percent"],
    .nevv-block[data-nevv-block-width-mode-tablet="viewport_px"] {
        width: min(var(--nevv-viewport-width, 100vw), var(--nevv-block-layout-width-tablet, var(--nevv-block-layout-width, 100vw)));
        flex-basis: min(var(--nevv-viewport-width, 100vw), var(--nevv-block-layout-width-tablet, var(--nevv-block-layout-width, 100vw)));
        max-width: var(--nevv-viewport-width, 100vw);
    }
}

@media (max-width: 767px) {
    .nevv-block {
        width: min(100%, var(--nevv-block-layout-width-mobile, var(--nevv-block-layout-width, 100%)));
        flex-basis: min(100%, var(--nevv-block-layout-width-mobile, var(--nevv-block-layout-width, 100%)));
        max-width: 100%;
    }
    .nevv-block[data-nevv-block-width-mode-mobile="viewport_percent"],
    .nevv-block[data-nevv-block-width-mode-mobile="viewport_px"] {
        width: min(var(--nevv-viewport-width, 100vw), var(--nevv-block-layout-width-mobile, var(--nevv-block-layout-width, 100vw)));
        flex-basis: min(var(--nevv-viewport-width, 100vw), var(--nevv-block-layout-width-mobile, var(--nevv-block-layout-width, 100vw)));
        max-width: var(--nevv-viewport-width, 100vw);
    }
}
.nevv-page-semantics, .nevv-page > .nevv-sticky-stack { flex:0 0 100%; width:100%; max-width:100%; }
.nevv-block-flow-break { flex:0 0 100%; width:100%; height:0; min-height:0; margin:0; padding:0; border:0; pointer-events:none; }
.nevv-block__content { width: 100%; min-width: 0; }
.nevv-block--frame-supported > .nevv-block__content {
    border-width: 0 !important;
    border-style: none !important;
    border-color: transparent !important;
    border-radius: var(--nevv-block-frame-radius, 0);
    overflow: var(--nevv-block-frame-overflow, visible);
}
.nevv-block--frame-supported.nevv-block--frame-border-enabled > .nevv-block__content {
    border-width: var(--nevv-block-frame-border-width, 1px) !important;
    border-style: solid !important;
    border-color: var(--nevv-block-frame-border-color, #d6dee8) !important;
}


/* Sticky anchor with the document/body as the only scroll container.
   The stack stays in the normal page flow and becomes sticky at the configured
   top offset. A compositor-owned backdrop reproduces the visible page surface
   behind the stack, so lower blocks cannot show through it while the browser
   keeps one native scrollbar for the whole document. No scroll-time JavaScript
   geometry or nested overflow viewport is involved. */
.nevv-page > .nevv-sticky-stack {
    position: sticky;
    top: var(--nevv-page-first-block-offset, 0px);
    z-index: 1000;
}
body.admin-bar .nevv-page > .nevv-sticky-stack {
    top: calc(32px + var(--nevv-page-first-block-offset, 0px));
}
.nevv-sticky-stack {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    align-content: flex-start;
    justify-content: center;
    column-gap: var(--nevv-page-block-gap);
    row-gap: 0;
    width: 100%;
    min-width: 0;
    isolation: isolate;
}
.nevv-sticky-stack::before {
    content: "";
    position: absolute;
    inset: calc(0px - var(--nevv-page-first-block-offset, 0px)) 0 0;
    z-index: 0;
    pointer-events: none;
    background-color: transparent;
    background-image:
        linear-gradient(var(--nevv-sticky-stack-bg, transparent), var(--nevv-sticky-stack-bg, transparent)),
        linear-gradient(var(--nevv-page-content-bg, #fff), var(--nevv-page-content-bg, #fff)),
        var(--nevv-page-bg-image, none);
    background-size: 100% 100%, 100% 100%, var(--nevv-page-bg-size, cover);
    background-position: 0 0, 0 0, var(--nevv-page-bg-position, center center);
    background-repeat: no-repeat, no-repeat, var(--nevv-page-bg-repeat, no-repeat);
    background-attachment: scroll, scroll, var(--nevv-page-bg-attachment, fixed);
}
.nevv-sticky-stack > .nevv-block {
    position: relative;
    z-index: 1;
}
.nevv-sticky-anchor-block { width: 100%; min-width: 0; }
.nevv-sticky-anchor-stage { width: 100%; min-width: 0; }
@media (max-width: 782px) {
    body.admin-bar .nevv-page > .nevv-sticky-stack {
        top: calc(46px + var(--nevv-page-first-block-offset, 0px));
    }
}

/* 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; }

/* 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),
.nevv-layout-column--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-block .nevv-layout-column a:any-link { color: inherit; text-decoration: none; }
.nevv-grid-text-block .nevv-grid-text-cell-content a:any-link { color: inherit; text-decoration: 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; }

.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)); }
}

/* Text-grid runtime selection lock. Appearance is owned by block source CSS. */
.nevv-grid-text-block--selection-locked,
.nevv-grid-text-block--selection-locked * { -webkit-user-select: none; user-select: none; }
.nevv-grid-text-block--selection-locked * { pointer-events: none; }
.nevv-grid-text-block--selection-locked a,
.nevv-grid-text-block--selection-locked a * { pointer-events: auto; }

/* Semantic SEO headings are real document headings. They appear only when the
 * editor explicitly enables page semantics or assigns a heading to a block. */
.nevv-page-semantics{box-sizing:border-box;width:100%;font-family:var(--nevv-page-font-family,inherit);color:inherit;}
.nevv-semantic-heading{box-sizing:border-box;color:inherit;font-family:inherit;}
.nevv-page-semantics>.nevv-semantic-heading:first-child{margin-top:0;}
.nevv-block>.nevv-semantic-heading--block{margin-top:0;}

/* System documents (privacy notice, terms, etc.). They reuse the page shell and
   width/font variables, but remain a single predictable document surface. */
.nevv-system-document-page {
    display: block;
    padding-bottom: max(32px, var(--nevv-page-block-gap, 0px));
}
.nevv-system-document {
    width: 100%;
    min-width: 0;
    padding: 24px;
    color: #17202a;
}
.nevv-system-document__title {
    margin: 0 0 24px;
    font-size: clamp(28px, 4vw, 48px);
    line-height: 1.15;
}
.nevv-system-document__content {
    min-width: 0;
    font-size: 16px;
    line-height: 1.6;
    overflow-wrap: anywhere;
}
.nevv-system-document__content > :first-child { margin-top: 0; }
.nevv-system-document__content > :last-child { margin-bottom: 0; }
.nevv-system-document__content img,
.nevv-system-document__content video,
.nevv-system-document__content svg { max-width: 100%; height: auto; }
@media (max-width: 782px) {
    .nevv-system-document { padding: 18px 14px; }
}

/* 0.2.91: protected page access gate. */
.nevv-page-access{min-height:100vh;display:grid;place-items:center;padding:32px 18px;background:var(--nevv-page-outer-bg,#f4f7fa);font-family:var(--nevv-page-font-family,inherit)}
.nevv-page-access__card{width:min(560px,100%);padding:30px;border:1px solid #d6dee8;border-radius:16px;background:#fff;color:#17202a;box-shadow:0 18px 54px rgba(23,32,42,.12)}
.nevv-page-access__card>small{display:block;margin-bottom:7px;color:#6b7b8d;font-size:12px;font-weight:850;letter-spacing:.08em}
.nevv-page-access__card h1{margin:0 0 10px;font-size:30px;line-height:1.15}
.nevv-page-access__card p{margin:0 0 18px;color:#5f7082;font-size:16px;line-height:1.55}
.nevv-page-access__form{display:grid;gap:12px}
.nevv-page-access__form label{display:grid;gap:7px;color:#405064;font-size:13px;font-weight:800}
.nevv-page-access__form input[type="password"]{width:100%;min-height:46px;padding:9px 12px;border:1px solid #b9c6d3;border-radius:8px;background:#fff;color:#17202a;font:500 16px/1.4 inherit}
.nevv-page-access__form input[type="password"]:focus{outline:2px solid #1769d2;outline-offset:1px}
.nevv-page-access__button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:0 18px;border:0;border-radius:8px;background:#1769d2;color:#fff!important;font:800 14px/1 inherit;text-decoration:none;cursor:pointer}
.nevv-page-access__error{margin:0!important;padding:10px 12px;border-radius:7px;background:#fff0ef!important;color:#a52b21!important;font-size:13px!important}


/* Direct NEVV attachment links open in a closable frontend viewer instead of
   navigating the visitor to a raw full-screen file with no way back. */
html.nevv-media-lightbox-open,
html.nevv-media-lightbox-open body { overflow: hidden !important; }
.nevv-media-lightbox[hidden] { display: none !important; }
.nevv-media-lightbox {
    position: fixed;
    inset: 0;
    z-index: 2147482500;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 52px 28px 28px;
    background: rgba(8, 12, 18, .92);
    overscroll-behavior: contain;
}
.nevv-media-lightbox__stage {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.nevv-media-lightbox__stage img,
.nevv-media-lightbox__stage video {
    display: block;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    box-shadow: 0 14px 60px rgba(0,0,0,.45);
}
.nevv-media-lightbox__stage audio {
    width: min(720px, 92vw);
}
.nevv-media-lightbox__stage iframe {
    width: min(1400px, 96vw);
    height: min(900px, calc(100dvh - 92px));
    border: 0;
    background: #fff;
    box-shadow: 0 14px 60px rgba(0,0,0,.45);
}
.nevv-media-lightbox__close {
    position: absolute;
    top: max(12px, env(safe-area-inset-top));
    right: max(12px, env(safe-area-inset-right));
    z-index: 2;
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border: 1px solid rgba(255,255,255,.42);
    border-radius: 999px;
    background: rgba(0,0,0,.6);
    color: #fff;
    font: 700 30px/1 Arial, sans-serif;
    cursor: pointer;
}
.nevv-media-lightbox__close:hover,
.nevv-media-lightbox__close:focus-visible { background: #fff; color: #111; outline: none; }

/* Managed Visual Editor videos. Autoplay-on-visible is controlled by runtime;
   manual lightbox videos intentionally behave like a clickable media surface. */
.nevv-block video[data-nevv-video-view="lightbox"] { cursor: zoom-in; }
.nevv-block video[data-nevv-video-start="visible"] { object-fit: contain; }
