/* ===========================================================================
   NVESZ homepage / header theme
   ---------------------------------------------------------------------------
   Single source of truth for the navy/gold visual identity. To re-theme the
   site, edit the custom properties below - nothing else in this file (or in
   the header/footer/homepage templates) hard-codes a color.
=========================================================================== */

/* Self-hosted Inter (variable weight, latin + latin-ext for Hungarian
   diacritics), copied from the Filament-bundled files under
   /public/fonts/filament/... so the public site doesn't depend on that
   admin-panel-internal, content-hashed asset path. */
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-display: swap;
    font-weight: 100 900;
    src: url('/fonts/inter/inter-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-display: swap;
    font-weight: 100 900;
    src: url('/fonts/inter/inter-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Self-hosted Cinzel (weight 400, latin + latin-ext) - a free, open-license
   (OFL) classical Roman-inscription-style display face, used in place of
   the commercial "Trajan Pro" (which requires a paid Adobe license to
   self-host and can't be embedded without one). Swap --nv-display-font-family
   below for the real Trajan Pro if a licensed webfont becomes available. */
@font-face {
    font-family: 'Cinzel';
    font-style: normal;
    font-display: swap;
    font-weight: 400;
    src: url('/fonts/cinzel/cinzel-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Cinzel';
    font-style: normal;
    font-display: swap;
    font-weight: 400;
    src: url('/fonts/cinzel/cinzel-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
    --nv-font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    /* "Trajan Pro" stand-in: Cinzel is a free/OFL classical-capitals face in
       the same spirit; swap for the real Trajan Pro if a licensed webfont
       is ever provided. */
    --nv-display-font-family: 'Cinzel', Georgia, 'Times New Roman', serif;
    --nv-navy-950: #060c1f;
    --nv-navy-900: #0b1b3f;
    --nv-navy-800: #12275a;
    --nv-navy-700: #1c3572;
    --nv-gold-300: #f4d9a0;
    --nv-gold-400: #e8c17f;
    --nv-gold-500: #d9b36c;
    --nv-gold-600: #bd9550;

    --nv-text-on-dark: rgba(255, 255, 255, 0.94);
    --nv-text-muted-on-dark: rgba(255, 255, 255, 0.66);
    --nv-border-on-dark: rgba(255, 255, 255, 0.14);
    --nv-white: #ffffff;
    --nv-red: #ce2939;

    --nv-gradient-navy: linear-gradient(135deg, var(--nv-navy-950) 0%, var(--nv-navy-900) 55%, var(--nv-navy-800) 100%);
    --nv-gradient-gold: linear-gradient(120deg, var(--nv-gold-300) 0%, var(--nv-gold-600) 100%);

    --nv-header-height: 115px;
    --nv-header-height-mobile: 64px;
    --nv-radius: 12px;
    --nv-shadow: 0 16px 40px rgba(6, 12, 31, 0.35);

    /* Fluid type scale - each clamp() interpolates between a 375px (mobile)
       and a 1920px (laptop/desktop) viewport; below/above those widths the
       size holds at its min/max (very wide/4K screens don't keep growing -
       they're almost always OS-scaled anyway, so the real CSS viewport
       rarely reaches native 4K px, and unbounded growth would look broken
       at normal reading distance). Named by shared role since several of
       these were already the same number by convention across components
       (see the "Matches X" comments below) before being extracted here. */
    --nv-fs-card-title: clamp(1.5rem, 1.3544rem + 0.6214vw, 2.1rem);
    --nv-fs-date: clamp(1.566rem, 1.5092rem + 0.2423vw, 1.8rem);
    --nv-fs-section-heading: clamp(1.43rem, 1.2431rem + 0.7974vw, 2.2rem);
    --nv-fs-field-label: clamp(1.04rem, 0.9041rem + 0.5799vw, 1.6rem);
    --nv-fs-content: clamp(1.1875rem, 1.0434rem + 0.6148vw, 1.78125rem);
    --nv-fs-ui-sm: .95rem;
}

/* ---------------------------------------------------------------------------
   Layout offset for the permanently fixed header
--------------------------------------------------------------------------- */
body {
    padding-top: var(--nv-header-height);
    font-family: var(--nv-font-family);
}

@media (max-width: 991.98px) {
    body {
        padding-top: var(--nv-header-height-mobile);
    }
}

body.layer-open {
    overflow: hidden;
}

/* Every mailto: link on the site (whether hand-authored in a Blade template
   or dropped into CMS rich text, which otherwise falls back to website.css's
   generic teal "a { color: #13B6C6 }") - same red/weight as the date fields,
   so an email address reads as a distinct call-to-action wherever it shows
   up. Attribute-selector specificity already beats that plain "a" rule
   without needing !important. */
a[href^="mailto:"] {
    color: var(--nv-gold-400);
    font-weight: 700;
    text-decoration: none;
}

a[href^="mailto:"]:hover {
    color: var(--nv-navy-950);
    text-decoration: none;
}

/* website.css's generic "a:hover { color: #13B6C6; text-decoration: underline; }"
   adds an underline on hover to every plain link site-wide - drop it. */
a:hover {
    text-decoration: none;
}

/* ---------------------------------------------------------------------------
   Header
--------------------------------------------------------------------------- */
.nv-header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1050;
    background: var(--nv-gradient-navy);
    box-shadow: var(--nv-shadow);
}

.nv-header__inner {
    position: relative;
    /* #navbarSupportedContent is a sibling under the same <header>, with a
       lower z-index (1040) - this needs its own explicit stacking order to
       actually render above it (a non-positioned/no-z-index sibling always
       sits below any positioned sibling that has one, regardless of value). */
    z-index: 1050;
    width: 100%;
    padding: 0 32px;
    height: var(--nv-header-height);
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    column-gap: 20px;
}

@media (max-width: 991.98px) {
    .nv-header__inner {
        height: var(--nv-header-height-mobile);
        padding: 0 16px;
    }
}

.nv-header__left {
    display: flex;
    align-items: center;
    gap: 18px;
}

.nv-header__logo {
    flex: 0 0 auto;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 14px;
    text-decoration: none;
}

.nv-header__logo img {
    height: 100px;
    width: auto;
}

.nv-header__logo-text {
    font-family: var(--nv-font-family);
    display: flex;
    flex-direction: column;
    color: var(--nv-text-on-dark);
    font-weight: 400;
    font-size: 14px;
    line-height: 1.7;
    text-transform: uppercase;
    letter-spacing: .1em;
    text-align: left;
    white-space: nowrap;
}

@media (max-width: 991.98px) {
    .nv-header__logo img {
        height: 44px;
    }

    .nv-header__logo-text {
        font-size: 9px;
        letter-spacing: .06em;
    }
}

/* Primary nav --------------------------------------------------------------
 * The nav (+ search) always lives in an off-canvas panel opened by the
 * hamburger button - at every breakpoint, not just mobile. #navbarSupportedContent
 * (ID selector) is used on purpose: the legacy Bootstrap
 * ".collapse:not(.show) { display: none }" rule this element also matches
 * (it needs the "collapse"/"show" classes for the existing toggle JS in
 * website.js) has class-level specificity, so a class-only override here
 * would lose the cascade. The ID guarantees this always wins.
--------------------------------------------------------------------------- */
/*
 * The panel covers the full screen (top: 0) and is layered below the header
 * (z-index) rather than the header being layered below it, so the hamburger
 * button - which morphs into the close (X) control - stays visible and
 * clickable on top while the panel is open. Its own content is pushed below
 * the header height via padding-top, and inset from the left by a third of
 * the screen width so the menu items start roughly a third of the way in.
 */
#navbarSupportedContent.nv-nav-wrapper {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    background: var(--nv-navy-950);
    padding: 40px 24px 40px calc(100vw / 3);
    padding-top: calc(var(--nv-header-height) + 40px);
    transform: translateX(-100%);
    transition: transform .25s ease;
    overflow-y: auto;
    z-index: 1040;
}

@media (max-width: 991.98px) {
    #navbarSupportedContent.nv-nav-wrapper {
        padding-top: calc(var(--nv-header-height-mobile) + 24px);
        padding-left: 24px;
    }
}

#navbarSupportedContent.nv-nav-wrapper.show {
    transform: translateX(0);
}

.nv-nav {
    flex: 1 1 auto;
    width: 100%;
    max-width: 720px;
}

.nv-nav__list {
    list-style: none;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    margin: 0;
    padding: 0;
}

.nv-nav__item {
    position: relative;
}

/* Row wrapping the link + the has-children toggle button, so clicking the
   link text still navigates while the toggle button (not an <a>) expands/
   collapses the submenu instead of following the link's href. */
.nv-nav__row {
    display: flex;
    align-items: stretch;
    border-bottom: 1px solid var(--nv-border-on-dark);
}

.nv-nav__link {
    display: block;
    flex: 1 1 auto;
    padding: 18px 8px;
    color: var(--nv-text-on-dark);
    font-weight: 600;
    font-size: clamp(1.1375rem, 0.9888rem + 0.6343vw, 1.75rem);
    letter-spacing: .02em;
    text-transform: uppercase;
    border-radius: 6px;
    transition: color .15s ease, background-color .15s ease;
}

.nv-nav__link:hover,
.nv-nav__link:focus {
    color: var(--nv-navy-950);
    background: var(--nv-gradient-gold);
    text-decoration: none;
}

.nv-nav__toggle-sub {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    background: transparent;
    border: none;
    cursor: pointer;
}

.nv-nav__toggle-sub::after {
    content: '';
    display: inline-block;
    width: 10px;
    height: 10px;
    border-right: 3px solid var(--nv-text-on-dark);
    border-bottom: 3px solid var(--nv-text-on-dark);
    transform: rotate(45deg);
    transition: transform .2s ease;
}

.nv-nav__toggle-sub:hover::after,
.nv-nav__toggle-sub:focus-visible::after {
    border-color: var(--nv-gold-400);
}

.nv-nav__toggle-sub[aria-expanded="true"]::after {
    transform: rotate(-135deg);
}

.nv-nav__submenu,
.nv-nav__subsubmenu {
    list-style: none;
    margin: 0;
    padding-left: 24px;
    display: none;
}

.nv-nav__item.is-open > .nv-nav__submenu,
.nv-nav__submenu > li.is-open > .nv-nav__subsubmenu {
    display: block;
}

.nv-nav__submenu .nv-nav__sublink,
.nv-nav__subsubmenu a {
    display: block;
    padding: 12px 8px;
    color: var(--nv-text-muted-on-dark);
    font-size: clamp(1.0563rem, 0.9182rem + 0.589vw, 1.625rem);
}

/* Fixed search box, always visible on the right of the header ------------- */
.nv-search {
    display: flex;
    align-items: center;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid var(--nv-border-on-dark);
    border-radius: 999px;
    overflow: hidden;
    flex: 0 0 auto;
}

/* #searchKey (ID selector) is needed to beat the legacy "#searchKey { width:
   160px }" rule in website.css, which otherwise wins on specificity. */
#searchKey.nv-search__input {
    background: transparent;
    border: none;
    color: var(--nv-text-on-dark);
    padding: 8px 14px;
    width: 150px;
    font-size: 13px;
}

.nv-search__input::placeholder {
    color: var(--nv-text-muted-on-dark);
}

.nv-search__input:focus {
    outline: none;
}

.nv-search__btn {
    border: none;
    background: var(--nv-gradient-gold);
    color: var(--nv-navy-950);
    width: 38px;
    height: 38px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

/* Icon-only stand-in for the search box, shown only below 575.98px (see the
   collapsed-search rules further down) - hidden by default so it doesn't
   take up space at any wider breakpoint, where the real input already fits. */
.nv-search__toggle {
    display: none;
    width: 38px;
    height: 38px;
    align-items: center;
    justify-content: center;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: var(--nv-text-on-dark);
    cursor: pointer;
    flex: 0 0 auto;
}

/* On the narrowest phones the countdowns + search + hamburger no longer fit
   next to the logo, so the search box collapses to just .nv-search__toggle -
   tapping it drops the real input down as a full-width bar under the header
   instead of permanently reserving cramped inline space for it. */
@media (max-width: 575.98px) {
    .nv-search__toggle {
        display: flex;
    }

    .nv-search__input,
    .nv-search__btn {
        display: none;
    }

    .nv-search {
        background: transparent;
        border: none;
    }

    .nv-search.is-open {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        overflow: visible;
        padding: 14px 16px;
        background: var(--nv-navy-950);
        border-radius: 0;
        border-bottom: 1px solid var(--nv-border-on-dark);
    }

    .nv-search.is-open .nv-search__toggle {
        display: none;
    }

    .nv-search.is-open #searchKey.nv-search__input {
        display: block;
        flex: 1 1 auto;
        width: auto;
    }

    .nv-search.is-open .nv-search__btn {
        display: flex;
    }
}

/* Hamburger toggle - always visible, opens the off-canvas nav at every
   breakpoint --------------------------------------------------------------- */
.nv-nav__toggle {
    /* resets legacy .navbar-toggler { padding: .25rem .75rem; float: right; } from website.css */
    position: relative;
    display: flex;
    width: 54px;
    height: 54px;
    padding: 0;
    border: none;
    border-radius: 8px;
    background: transparent;
    cursor: pointer;
    float: none;
    flex: 0 0 auto;
    outline: none;
}

.nv-nav__toggle:focus-visible {
    outline: 2px solid var(--nv-gold-400);
    outline-offset: 2px;
}

/* Bars are absolutely centered so they can rotate onto the same point and
   form an X when the panel is open - the button itself never changes size. */
.nv-nav__toggle span {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 30px;
    height: 4px;
    border-radius: 2px;
    background: var(--nv-text-on-dark);
    transform: translate(-50%, -50%) translateY(-10px);
    transition: transform .25s ease, background-color .25s ease, opacity .2s ease;
}

.nv-nav__toggle span:nth-child(2) {
    transform: translate(-50%, -50%);
}

.nv-nav__toggle span:nth-child(3) {
    transform: translate(-50%, -50%) translateY(10px);
}

.nv-nav__toggle.is-active span {
    background: var(--nv-red);
}

.nv-nav__toggle.is-active span:nth-child(1) {
    transform: translate(-50%, -50%) rotate(45deg);
}

.nv-nav__toggle.is-active span:nth-child(2) {
    opacity: 0;
}

.nv-nav__toggle.is-active span:nth-child(3) {
    transform: translate(-50%, -50%) rotate(-45deg);
}

/* Header controls: countdowns + hamburger ---------------------------------- */
.nv-header__controls {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 18px;
}

.nv-countdowns {
    display: flex;
    gap: 15px;
}

.nv-countdown {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 9px 15px;
    border-radius: 12px;
    background: var(--nv-text-on-dark);
    border: 1px solid transparent;
    text-decoration: none;
    transition: border-color .15s ease, background-color .15s ease;
}

.nv-countdown:hover {
    border-color: var(--nv-gold-500);
    background: var(--nv-gold-300);
    text-decoration: none;
}

.nv-countdown__image {
    width: 51px;
    height: 51px;
    border-radius: 9px;
    background-size: cover;
    background-position: center;
    flex: 0 0 auto;
}

.nv-countdown__body {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
}

.nv-countdown__value {
    color: var(--nv-gold-600);
    font-weight: 700;
    font-size: clamp(1.2506rem, 1.2053rem + 0.1935vw, 1.4375rem);
}

.nv-countdown__value small {
    margin-left: 4px;
    color: var(--nv-navy-700);
    font-weight: 400;
    font-size: 15px;
}

.nv-countdown__title {
    color: var(--nv-navy-700);
    font-size: clamp(0.9244rem, 0.8908rem + 0.143vw, 1.0625rem);
    max-width: 180px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nv-social {
    display: flex;
    list-style: none;
    margin: 0;
    padding: 0;
    gap: 28px;
}

.nv-social a {
    display: block;
    color: var(--nv-text-on-dark);
    font-size: clamp(1.95rem, 1.6951rem + 1.0874vw, 3rem);
    line-height: 1;
}

.nv-social a:hover {
    color: var(--nv-gold-400);
}

.nv-social--center {
    grid-column: 2;
    justify-self: center;
}

/* Responsive tweaks -------------------------------------------------------- */
@media (max-width: 991.98px) {
    .nv-header__controls {
        gap: 10px;
    }

    .nv-countdown__title {
        display: none;
    }

    /* Keep the enlarged countdown boxes desktop-only - at mobile widths,
       next to the logo lockup and search box, the bigger size overflows. */
    .nv-countdown {
        gap: 8px;
        padding: 6px 10px;
        border-radius: 8px;
    }

    .nv-countdown__image {
        width: 34px;
        height: 34px;
        border-radius: 6px;
    }

    .nv-countdown__value small {
        font-size: 10px;
    }

    .nv-social--center {
        display: none;
    }

    #searchKey.nv-search__input {
        width: 90px;
    }
}

/* ---------------------------------------------------------------------------
   Hero slider (full-bleed)
--------------------------------------------------------------------------- */
.nv-hero {
    width: 100%;
    /* matches .nv-news's background so the strip behind the owl-dots
       pagination (below the slide image) blends into the next section */
    background: var(--nv-navy-gradient);
}

.nv-hero .owl-carousel,
.nv-hero .owl-stage-outer,
.nv-hero .owl-stage,
.nv-hero .owl-item {
    height: 100%;
}

.nv-hero .owl-item.position-relative {
    position: relative;
    height: 86vh;
    min-height: 420px;
    overflow: hidden;
}

.nv-hero .img-fluid-slider {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nv-hero .owl-item.position-relative::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(0deg, rgba(6, 12, 31, 0.92) 0%, rgba(6, 12, 31, 0.15) 55%, rgba(6, 12, 31, 0.35) 100%);
}

.nv-hero .banner-content {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    max-width: 1440px;
    margin: 0 auto;
    padding: 0 24px 56px;
    color: var(--nv-text-on-dark);
}

.nv-hero .banner-content h1 {
    font-weight: 800;
    font-size: clamp(1.56rem, 1.3561rem + 0.8699vw, 2.4rem);
    max-width: 800px;
}

.nv-hero .banner-content h1 a {
    color: var(--nv-text-on-dark);
}

.nv-hero .banner-content .fs-12 {
    max-width: 640px;
    color: var(--nv-text-muted-on-dark);
}

.nv-hero .owl-nav button.owl-prev,
.nv-hero .owl-nav button.owl-next {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: 60px;
    height: 60px;
    padding: 0 !important;
    border-radius: 50%;
    background: var(--nv-gold-400) !important;
    border: 2px solid var(--nv-text-on-dark);
    color: var(--nv-text-on-dark) !important;
    box-shadow: 0 6px 18px rgba(6, 12, 31, 0.5);
    transition: background-color .25s ease, border-color .25s ease, transform .25s ease;
    z-index: 3;
}

.nv-hero .owl-nav button.owl-prev:hover,
.nv-hero .owl-nav button.owl-next:hover {
    background: var(--nv-navy-950) !important;
    border-color: var(--nv-gold-400);
}

.nv-hero .owl-nav button.owl-prev:hover {
    transform: translateY(-50%) translateX(-2px);
}

.nv-hero .owl-nav button.owl-next:hover {
    transform: translateY(-50%) translateX(2px);
}

.nv-hero .owl-nav button .nv-hero-arrow {
    display: block;
}

.nv-hero .owl-nav button.owl-prev {
    left: 28px;
}

.nv-hero .owl-nav button.owl-next {
    right: 28px;
}

@media (max-width: 767.98px) {
    .nv-hero .owl-nav button.owl-prev,
    .nv-hero .owl-nav button.owl-next {
        width: 42px;
        height: 42px;
    }

    .nv-hero .owl-nav button.owl-prev {
        left: 14px;
    }

    .nv-hero .owl-nav button.owl-next {
        right: 14px;
    }
}

@media (max-width: 767.98px) {
    .nv-hero .owl-item.position-relative {
        height: 62vh;
        min-height: 320px;
    }
}

/* ---------------------------------------------------------------------------
   Section title - shared component, used on the homepage and reused as-is
   on other pages (e.g. the article show page's "További híreink" row)
--------------------------------------------------------------------------- */
.nv-section-title {
    font-weight: 800;
    font-size: clamp(0.957rem, 0.9223rem + 0.1481vw, 1.1rem);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--nv-navy-950);
    margin-bottom: 18px;
    padding-bottom: 10px;
    border-bottom: 3px solid var(--nv-gold-500);
    display: inline-block;
}

.nv-section-title--center {
    display: block;
    text-align: center;
    border-bottom: none;
}

.nv-section-title--center::after {
    content: '';
    display: block;
    width: 64px;
    height: 3px;
    margin: 10px auto 0;
    background: var(--nv-gradient-gold);
}

.nv-section-title--on-dark {
    color: var(--nv-text-on-dark);
    font-size: var(--nv-fs-section-heading);
}

/* Section title + "view all" link row, shared by Hírek and Fotógalériák -- */
.nv-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 16px;
    margin-bottom: 32px;
}

.nv-section-header .nv-section-title {
    margin-bottom: 0;
}

.nv-more-link {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    flex: 0 0 auto;
    color: var(--nv-text-on-dark);
    font-weight: 700;
    font-size: clamp(1.3rem, 1.1301rem + 0.7249vw, 2rem);
    text-transform: uppercase;
    letter-spacing: .04em;
    text-decoration: none;
    transition: color .15s ease;
}

.nv-more-link:hover {
    color: var(--nv-gold-400);
    text-decoration: none;
}

.nv-more-link__arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--nv-gold-400);
    color: var(--nv-text-on-dark);
    flex: 0 0 auto;
}

/* ---------------------------------------------------------------------------
   Hírek (news) - full-bleed, dark navy, matches the header background
--------------------------------------------------------------------------- */
.nv-news {
    position: relative;
    background: var(--nv-navy-950);
    /* top padding = a dedicated 50px band the wave lives in + the normal
       56px content padding */
    padding: 106px 0 56px;
}

/* Gold wave-line divider - lives entirely inside .nv-news's own reserved
   top band (not straddling the hero), so there's no seam/half-line
   showing above the section boundary when the two sections meet. */
.nv-news__wave {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: 50px;
    pointer-events: none;
    z-index: 5;
}

.nv-news__wave svg {
    display: block;
    width: 100%;
    height: 100%;
}

.nv-news__wave-line {
    fill: none;
    stroke: var(--nv-gold-400);
    stroke-width: 2.5;
    filter: drop-shadow(0 0 6px rgba(232, 193, 127, 0.55));
}

@media (max-width: 767.98px) {
    .nv-news {
        padding-top: 86px;
    }

    .nv-news__wave {
        height: 30px;
    }
}

.nv-news__inner {
    width: 100%;
    margin: 0 auto;
    padding: 0 32px;
}

.nv-news__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
    margin-bottom: 40px;
}

.nv-news-card {
    display: block;
    text-decoration: none;
}

.nv-news-card__image {
    width: 100%;
    aspect-ratio: 4 / 3;
    background-size: cover;
    background-position: center;
    background-color: var(--nv-navy-950);
    border-radius: var(--nv-radius);
    margin-bottom: 16px;
    overflow: hidden;
    transition: transform .3s ease;
}

.nv-news-card:hover .nv-news-card__image {
    transform: scale(1.02);
}

.nv-news-card__title {
    color: var(--nv-text-on-dark);
    font-size: var(--nv-fs-card-title);
    font-weight: 700;
    line-height: 1.4;
    margin: 0 0 8px;
    transition: color .15s ease;
}

.nv-news-card:hover .nv-news-card__title {
    color: var(--nv-gold-400);
}

.nv-news-card__date {
    color: var(--nv-red);
    font-weight: 700;
    font-size: var(--nv-fs-date);
    margin: 0;
}

/* Slider (row 2): 3 more news cards visible, paged with a right arrow ----- */
.nv-news-slider {
    position: relative;
}

.nv-news-slider .owl-stage-outer {
    overflow: hidden;
}

.nv-news-slider .owl-nav button.owl-prev,
.nv-news-slider .owl-nav button.owl-next {
    position: absolute;
    top: 38%;
    transform: translateY(-50%);
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    padding: 0 !important;
    border-radius: 50%;
    background: var(--nv-gold-400) !important;
    border: 2px solid var(--nv-text-on-dark);
    color: var(--nv-text-on-dark) !important;
    box-shadow: 0 6px 16px rgba(6, 12, 31, 0.5);
    transition: background-color .2s ease, border-color .2s ease, opacity .2s ease;
    z-index: 3;
}

.nv-news-slider .owl-nav button.owl-prev:hover,
.nv-news-slider .owl-nav button.owl-next:hover {
    background: var(--nv-navy-950) !important;
    border-color: var(--nv-gold-400);
}

.nv-news-slider .owl-nav button.owl-prev {
    left: -22px;
}

.nv-news-slider .owl-nav button.owl-next {
    right: -22px;
}

/* Owl marks the prev button "disabled" at the start of a non-looping
   carousel - hide it then, since only the "next" arrow should show
   until the visitor has paged forward at least once. */
.nv-news-slider .owl-nav button.disabled {
    opacity: 0;
    pointer-events: none;
}

/* "Tovább a hírekre" card - final slide, red accent ------------------------ */
.nv-news-card__image--more {
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: rgba(232, 193, 127, 0.1);
    border: 1px solid rgba(232, 193, 127, 0.4);
}

.nv-news-card--more:hover .nv-news-card__image--more {
    background-color: rgba(232, 193, 127, 0.18);
    border-color: var(--nv-gold-400);
}

.nv-news-card__more-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: var(--nv-gold-400);
    color: var(--nv-text-on-dark);
}

.nv-news-card__title--more {
    text-align: center;
    color: var(--nv-gold-400);
}

.nv-news-card--more:hover .nv-news-card__title--more {
    color: var(--nv-text-on-dark);
}

@media (max-width: 767.98px) {
    .nv-news__grid {
        grid-template-columns: 1fr;
    }
}

/* ---------------------------------------------------------------------------
   Fotógalériák (galleries) - same full-bleed dark navy pattern as Hírek:
   3 featured cards + a 3-visible slider with a "view all" card. Mirrors
   .nv-news* 1:1 under its own namespace (kept separate, like
   .nv-worldgame-card is separate from .nv-news-card) so each section stays
   independently tunable even though they read as one visual system today.
--------------------------------------------------------------------------- */
.nv-gallery {
    position: relative;
    background: var(--nv-navy-950);
    /* top padding = the 50px band .nv-news__wave lives in + the normal
       56px content padding, matching .nv-news */
    padding: 106px 0 56px;
}

@media (max-width: 767.98px) {
    .nv-gallery {
        padding-top: 86px;
    }
}

.nv-gallery__inner {
    width: 100%;
    margin: 0 auto;
    padding: 0 32px;
}

.nv-gallery__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
    margin-bottom: 40px;
}

.nv-gallery-card {
    display: block;
    text-decoration: none;
}

.nv-gallery-card__image {
    width: 100%;
    aspect-ratio: 4 / 3;
    background-size: cover;
    background-position: center;
    background-color: var(--nv-navy-950);
    border-radius: var(--nv-radius);
    margin-bottom: 16px;
    overflow: hidden;
    transition: transform .3s ease;
}

.nv-gallery-card:hover .nv-gallery-card__image {
    transform: scale(1.02);
}

.nv-gallery-card__title {
    color: var(--nv-text-on-dark);
    font-size: var(--nv-fs-card-title);
    font-weight: 700;
    line-height: 1.4;
    margin: 0;
    transition: color .15s ease;
}

.nv-gallery-card:hover .nv-gallery-card__title {
    color: var(--nv-gold-400);
}

.nv-gallery-slider {
    position: relative;
}

.nv-gallery-slider .owl-stage-outer {
    overflow: hidden;
}

.nv-gallery-slider .owl-nav button.owl-prev,
.nv-gallery-slider .owl-nav button.owl-next {
    position: absolute;
    top: 38%;
    transform: translateY(-50%);
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    padding: 0 !important;
    border-radius: 50%;
    background: var(--nv-gold-400) !important;
    border: 2px solid var(--nv-text-on-dark);
    color: var(--nv-text-on-dark) !important;
    box-shadow: 0 6px 16px rgba(6, 12, 31, 0.5);
    transition: background-color .2s ease, border-color .2s ease, opacity .2s ease;
    z-index: 3;
}

.nv-gallery-slider .owl-nav button.owl-prev:hover,
.nv-gallery-slider .owl-nav button.owl-next:hover {
    background: var(--nv-navy-950) !important;
    border-color: var(--nv-gold-400);
}

.nv-gallery-slider .owl-nav button.owl-prev {
    left: -22px;
}

.nv-gallery-slider .owl-nav button.owl-next {
    right: -22px;
}

.nv-gallery-slider .owl-nav button.disabled {
    opacity: 0;
    pointer-events: none;
}

.nv-gallery-card__image--more {
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: rgba(232, 193, 127, 0.1);
    border: 1px solid rgba(232, 193, 127, 0.4);
}

.nv-gallery-card--more:hover .nv-gallery-card__image--more {
    background-color: rgba(232, 193, 127, 0.18);
    border-color: var(--nv-gold-400);
}

.nv-gallery-card__more-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: var(--nv-gold-400);
    color: var(--nv-text-on-dark);
}

.nv-gallery-card__title--more {
    text-align: center;
    color: var(--nv-gold-400);
}

.nv-gallery-card--more:hover .nv-gallery-card__title--more {
    color: var(--nv-text-on-dark);
}

@media (max-width: 767.98px) {
    .nv-gallery__grid {
        grid-template-columns: 1fr;
    }
}

/* Világesemények - full-bleed light section, mirrors the .nv-gallery
   wave/inner pattern but on a white background instead of navy. --------- */
.nv-worldgames-section {
    position: relative;
    background: #fff;
    /* top padding = the 50px band the wave lives in + the normal 56px
       content padding, matching .nv-news / .nv-gallery */
    padding: 106px 0 56px;
}

.nv-worldgames-section__wave {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: 50px;
    pointer-events: none;
    z-index: 5;
}

.nv-worldgames-section__wave svg {
    display: block;
    width: 100%;
    height: 100%;
}

.nv-worldgames-section__wave-line {
    fill: none;
    stroke: var(--nv-gold-500);
    stroke-width: 2.5;
    filter: drop-shadow(0 0 6px rgba(217, 179, 108, 0.45));
}

@media (max-width: 767.98px) {
    .nv-worldgames-section {
        padding-top: 86px;
    }

    .nv-worldgames-section__wave {
        height: 30px;
    }
}

.nv-worldgames-section__inner {
    width: 100%;
    margin: 0 auto;
    padding: 0 32px;
}

.nv-worldgames-section .nv-section-title {
    font-size: var(--nv-fs-section-heading);
}

/* Világesemények cards - same grid shape as .nv-gallery__grid (3 columns,
   same gap/inner padding) so the cards come out the same width, and thus,
   via the shared 4:3 aspect-ratio, the same height. --------------------- */
.nv-worldgames {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
}

@media (max-width: 767.98px) {
    .nv-worldgames {
        grid-template-columns: 1fr;
    }
}

.nv-worldgame-card {
    position: relative;
    display: block;
    aspect-ratio: 4 / 3;
    border-radius: var(--nv-radius);
    overflow: hidden;
    background: var(--nv-navy-950);
    box-shadow: var(--nv-shadow);
}

.nv-worldgame-card__image {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    transition: transform .3s ease;
}

.nv-worldgame-card:hover .nv-worldgame-card__image {
    transform: scale(1.05);
}

.nv-worldgame-card::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(0deg, rgba(6, 12, 31, 0.92) 10%, rgba(6, 12, 31, 0.1) 70%);
}

.nv-worldgame-card__body {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    padding: 18px;
    color: var(--nv-text-on-dark);
}

.nv-worldgame-card__year {
    display: inline-block;
    color: var(--nv-navy-950);
    background: var(--nv-gradient-gold);
    font-weight: 700;
    font-size: 12px;
    padding: 2px 9px;
    border-radius: 999px;
    margin-bottom: 8px;
}

.nv-worldgame-card__name {
    font-size: 1.05rem;
    font-weight: 700;
    margin: 0 0 4px;
    color: var(--nv-text-on-dark);
}

.nv-worldgame-card__location {
    font-size: 12px;
    color: var(--nv-text-muted-on-dark);
}

/* ---------------------------------------------------------------------------
   Videók - full-bleed dark navy, same visual system as .nv-news / .nv-gallery
   (reuses .nv-news__wave for the top divider, like .nv-gallery does).
--------------------------------------------------------------------------- */
.nv-videos {
    position: relative;
    background: var(--nv-navy-950);
    padding: 106px 0 56px;
}

@media (max-width: 767.98px) {
    .nv-videos {
        padding-top: 86px;
    }
}

.nv-videos__inner {
    width: 100%;
    margin: 0 auto;
    padding: 0 32px;
}

.nv-videos__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
    margin-bottom: 40px;
}

@media (max-width: 767.98px) {
    .nv-videos__grid {
        grid-template-columns: 1fr;
    }
}

/* Scroll-pinned "hero" effect for the middle featured video card - inert
   (plain grid, no pin) until initVideoHero() in nvesz-home.js opts in via
   --active, which it only does on wide viewports without reduced-motion.
   The extra height below is the scroll distance the shrink plays out over;
   the pin itself sticks to the viewport while that distance is consumed. */
.nv-videos__hero-wrap--active {
    position: relative;
    height: 160vh;
}

.nv-videos__hero-wrap--active .nv-videos__hero-pin {
    /* offset by the fixed site header's height so the pinned frame sticks
       just below it instead of being covered by it (this effect is JS-gated
       to viewports above the 991.98px breakpoint, so the desktop header
       height constant is always the right one here). Height starts at this
       full frame but initVideoHero() shrinks it in step with the shrinking
       card, via inline style, so nothing is left oversized/centered with
       dead space once the card has settled into its natural grid size. */
    position: sticky;
    top: var(--nv-header-height);
    height: calc(100vh - var(--nv-header-height));
    display: flex;
    align-items: center;
    overflow: hidden;
}

.nv-videos__hero-wrap--active .nv-videos__grid {
    width: 100%;
    margin-bottom: 0;
}

.nv-videos__hero-wrap--active .nv-video-card--hero {
    position: relative;
    z-index: 3;
}

.nv-videos__hero-wrap--active .nv-video-card--hero .nv-video-card__image {
    transform-origin: top left;
}

.nv-videos__hero-wrap--active .nv-video-card:not(.nv-video-card--hero) {
    position: relative;
    z-index: 1;
}

.nv-video-card {
    display: block;
    text-decoration: none;
}

/* Own zoom-in reveal for the featured cards, scoped with enough specificity
   (2 classes) to reliably beat AOS's generic single-class "[data-aos=zoom-in]"
   preset regardless of stylesheet load order - and gives a bouncier easing
   than AOS's plain linear scale. Still driven by AOS's own scroll detection
   (the data-aos attribute + the aos-animate class it toggles); only the
   before/after visual values and easing are ours. */
.nv-videos__grid .nv-video-card[data-aos] {
    opacity: 0;
    transform: scale(.6);
    transition-property: opacity, transform;
    transition-duration: .7s;
    transition-timing-function: cubic-bezier(.34, 1.56, .64, 1);
}

.nv-videos__grid .nv-video-card[data-aos].aos-animate {
    opacity: 1;
    transform: scale(1);
}

@media (prefers-reduced-motion: reduce) {
    .nv-videos__grid .nv-video-card[data-aos] {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

.nv-video-card__image {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 3;
    background-size: cover;
    background-position: center;
    background-color: var(--nv-navy-950);
    border-radius: var(--nv-radius);
    margin-bottom: 16px;
    overflow: hidden;
    transition: transform .3s ease;
}

.nv-video-card:hover .nv-video-card__image {
    transform: scale(1.02);
}

.nv-video-card__play {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: rgba(6, 12, 31, 0.35);
    border: 2px solid var(--nv-gold-400);
    color: var(--nv-gold-400);
    backdrop-filter: blur(2px);
    box-shadow: 0 6px 16px rgba(6, 12, 31, 0.5);
    transition: background-color .2s ease, color .2s ease, border-color .2s ease, transform .2s ease;
}

.nv-video-card:hover .nv-video-card__play {
    background: var(--nv-gradient-gold);
    border-color: transparent;
    color: var(--nv-navy-950);
    transform: translate(-50%, -50%) scale(1.08);
}

/* Radiating ring around the play button, a continuous cue that these
   tiles are playable rather than plain images. */
.nv-video-card__play::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 2px solid var(--nv-gold-400);
    opacity: 0;
    pointer-events: none;
}

/* Only start the pulse once AOS has revealed the card on scroll - without
   this it's a plain "infinite" animation ticking away since page load, so
   scrolling to it could land mid-pulse instead of a fresh first beat. */
.nv-video-card.aos-animate .nv-video-card__play::before {
    animation: nv-video-play-pulse 2.4s ease-out infinite;
}

.nv-video-card:hover .nv-video-card__play::before {
    animation-play-state: paused;
    opacity: 0;
}

@keyframes nv-video-play-pulse {
    0% {
        transform: scale(1);
        opacity: .6;
    }

    100% {
        transform: scale(1.85);
        opacity: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    .nv-video-card__play::before {
        animation: none;
        display: none;
    }
}

.nv-video-card__title {
    color: var(--nv-text-on-dark);
    font-size: var(--nv-fs-card-title);
    font-weight: 700;
    line-height: 1.4;
    margin: 0;
    transition: color .15s ease;
}

.nv-video-card:hover .nv-video-card__title {
    color: var(--nv-gold-400);
}

.nv-videos-slider {
    position: relative;
}

.nv-videos-slider .owl-stage-outer {
    overflow: hidden;
}

.nv-videos-slider .owl-nav button.owl-prev,
.nv-videos-slider .owl-nav button.owl-next {
    position: absolute;
    top: 38%;
    transform: translateY(-50%);
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    padding: 0 !important;
    border-radius: 50%;
    background: var(--nv-gold-400) !important;
    border: 2px solid var(--nv-text-on-dark);
    color: var(--nv-text-on-dark) !important;
    box-shadow: 0 6px 16px rgba(6, 12, 31, 0.5);
    transition: background-color .2s ease, border-color .2s ease, opacity .2s ease;
    z-index: 3;
}

.nv-videos-slider .owl-nav button.owl-prev:hover,
.nv-videos-slider .owl-nav button.owl-next:hover {
    background: var(--nv-navy-950) !important;
    border-color: var(--nv-gold-400);
}

.nv-videos-slider .owl-nav button.owl-prev {
    left: -22px;
}

.nv-videos-slider .owl-nav button.owl-next {
    right: -22px;
}

.nv-videos-slider .owl-nav button.disabled {
    opacity: 0;
    pointer-events: none;
}

.nv-video-card__image--more {
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: rgba(232, 193, 127, 0.1);
    border: 1px solid rgba(232, 193, 127, 0.4);
}

.nv-video-card--more:hover .nv-video-card__image--more {
    background-color: rgba(232, 193, 127, 0.18);
    border-color: var(--nv-gold-400);
}

.nv-video-card__more-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border-radius: 50%;
    background: var(--nv-gold-400);
    color: var(--nv-text-on-dark);
}

.nv-video-card__title--more {
    text-align: center;
    color: var(--nv-gold-400);
}

.nv-video-card--more:hover .nv-video-card__title--more {
    color: var(--nv-text-on-dark);
}

/* Partner intézmények static full-width row --------------------------------
   Unlike .nv-members below, this row does not scroll/animate - it always
   shows the full slide set for the PARTNER_INTEZMENYEK slider, laid out in
   a single-row grid that grows/shrinks each logo to fill the page width. */
.nv-partners {
    position: relative;
    background: var(--nv-white);
    /* top padding = the 50px band the wave lives in + the normal 44px
       content padding */
    padding: 94px 0 44px;
}

@media (max-width: 767.98px) {
    .nv-partners {
        padding-top: 74px;
    }
}

.nv-partners__inner {
    width: 100%;
    margin: 0 auto;
    padding: 0 32px;
}

.nv-partners__inner .nv-section-title {
    font-size: var(--nv-fs-section-heading);
}

.nv-partners__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    align-items: center;
    justify-items: center;
    column-gap: 16px;
    row-gap: 16px;
    width: 100%;
    margin: 28px 0 0;
    padding: 0 32px;
}

.nv-partners__item {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
}

.nv-partners__item img {
    width: 100%;
    height: auto;
    max-width: clamp(160px, 18vw, 480px);
    max-height: clamp(90px, 10vw, 260px);
    object-fit: contain;
}

/* Tagszövetség scrolling belt ---------------------------------------------- */
.nv-members {
    position: relative;
    background: var(--nv-white);
    padding: 44px 0 44px;
}

.nv-members__inner {
    width: 100%;
    margin: 0 auto;
    padding: 0 32px;
}

.nv-members__inner .nv-section-title {
    font-size: var(--nv-fs-section-heading);
}

.nv-members__track {
    overflow: hidden;
    width: 100%;
    margin: 28px 0 0;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}

.nv-members__list {
    display: flex;
    align-items: center;
    gap: 56px;
    width: max-content;
    animation: nv-members-scroll 100s linear infinite;
    padding: 0 28px;
}

.nv-members__item img {
    height: 138px;
    width: auto;
    max-width: 420px;
    object-fit: contain;
}

@keyframes nv-members-scroll {
    from {
        transform: translateX(0);
    }

    to {
        transform: translateX(-50%);
    }
}

@media (prefers-reduced-motion: reduce) {
    .nv-members__list {
        animation: none;
    }

    .nv-members__track {
        overflow-x: auto;
    }
}

/* ---------------------------------------------------------------------------
   Article/video show pages (.nv-article is shared by both) - full-width
   lead image or video embed, then a 1-10-1 (of 12) centred column for the
   title/lead/body and the related-items row below it.
--------------------------------------------------------------------------- */
.nv-article {
    background: #fff;
}

/* The reused .nv-news block (here, "További híreink") stays white on this
   page instead of the homepage's navy, matching the article content above
   it - text/hover colours are recoloured for a light background to match
   (scoped to this page only, the homepage's Hírek section is unaffected). */
.nv-article .nv-news {
    background: #fff;
}

.nv-article .nv-news .nv-section-title--on-dark,
.nv-article .nv-news .nv-news-card__title {
    color: var(--nv-navy-950);
}

.nv-article .nv-news .nv-news-card:hover .nv-news-card__title {
    color: var(--nv-gold-400);
}

.nv-article .nv-news .nv-news__wave-line {
    stroke: var(--nv-gold-500);
    filter: drop-shadow(0 0 6px rgba(217, 179, 108, 0.45));
}

/* Same white-on-this-page treatment as .nv-article .nv-news above, for the
   video show page's reused .nv-videos "További videók" row. */
.nv-article .nv-videos {
    background: #fff;
}

.nv-article .nv-videos .nv-section-title--on-dark,
.nv-article .nv-videos .nv-video-card__title {
    color: var(--nv-navy-950);
}

.nv-article .nv-videos .nv-video-card:hover .nv-video-card__title {
    color: var(--nv-gold-400);
}

.nv-article .nv-videos .nv-news__wave-line {
    stroke: var(--nv-gold-500);
    filter: drop-shadow(0 0 6px rgba(217, 179, 108, 0.45));
}

/* Same white-on-this-page treatment as .nv-article .nv-news above, for the
   gallery show page's reused .nv-gallery "További galériák" row. */
.nv-article .nv-gallery {
    background: #fff;
}

.nv-article .nv-gallery .nv-section-title--on-dark,
.nv-article .nv-gallery .nv-gallery-card__title {
    color: var(--nv-navy-950);
}

.nv-article .nv-gallery .nv-gallery-card:hover .nv-gallery-card__title {
    color: var(--nv-gold-400);
}

.nv-article .nv-gallery .nv-news__wave-line {
    stroke: var(--nv-gold-500);
    filter: drop-shadow(0 0 6px rgba(217, 179, 108, 0.45));
}

.nv-article__hero {
    display: block;
    width: 100%;
    height: auto;
    background-color: var(--nv-navy-950);
}

/* Video show page's embed sits inside the 1-10-1 content column (below the
   title/date) rather than as a full-width hero, so it just needs the same
   bottom spacing as the other blocks in .article. */
.nv-article__video {
    margin-bottom: 24px;
}

.nv-article__grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    column-gap: 24px;
    padding: 48px 0 80px;
}

.nv-article__content {
    grid-column: 3 / span 8;
}

@media (max-width: 991.98px) {
    .nv-article__content {
        grid-column: 1 / -1;
        padding: 0 24px;
    }
}

.nv-article__title {
    font-family: var(--nv-font-family);
    font-weight: 800;
    font-size: clamp(2rem, 1.4175rem + 2.4854vw, 4.4rem);
    line-height: 1.3;
    color: var(--nv-navy-950);
    margin-bottom: 8px;
}

.nv-article__date {
    color: var(--nv-red);
    font-size: var(--nv-fs-date);
    font-weight: 700;
    margin-bottom: 24px;
}

/* The article body/lead text and its images - doubles the legacy
   "div.article div.lead p / div.content p { font-size: 15px !important }"
   from website.css (needs matching !important + higher specificity to win
   over it) and centres any images dropped into the rich text. */
.nv-article__content .article .lead p,
.nv-article__content .article .content p {
    line-height: 1.6;
}

.nv-article__content .article .lead,
.nv-article__content .article .content {
    font-size: var(--nv-fs-content);
}

/* CMS content frequently carries hard-coded "font-family: Arial" and/or a
   per-span "font-size" (inline style, from whatever the editor pasted/set)
   - the wildcard + !important forces every descendant back to the site's
   own font and fluid size regardless of what was set in admin, so a
   <span style="font-size:12pt"> buried in the rich text can't opt back out
   of matching the rest of the page's content. */
.nv-article__content .article .lead,
.nv-article__content .article .lead *,
.nv-article__content .article .content,
.nv-article__content .article .content * {
    font-family: var(--nv-font-family) !important;
    font-size: var(--nv-fs-content) !important;
}

/* Plain links inside CMS rich text otherwise fall back to website.css's
   generic teal "a { color: #13B6C6 }" - make them red like the rest of the
   site's links instead (the mailto: rule above already covers email links
   specifically; this covers everything else, e.g. a plain "weboldal" link
   pasted into the content). */
.nv-article__content .article .lead a,
.nv-article__content .article .content a {
    color: var(--nv-gold-400) !important;
}

.nv-article__content .article .lead a:hover,
.nv-article__content .article .content a:hover {
    color: var(--nv-navy-950) !important;
}

.nv-article__content .article .lead img,
.nv-article__content .article .content img {
    display: block;
    margin: 24px auto;
    /* CKEditor content often carries small inline width/height (attributes
       or inline style) from whatever size the image was inserted at -
       override both so images always render at the column's full
       available width instead of staying shrunk to that original size. */
    width: 100% !important;
    height: auto !important;
    max-width: 100%;
}

/* Gallery show page - the individual-photo grid (baguetteBox lightbox),
   sitting below the description inside the same 1-10-1 content column. */
.nv-gallery-photos {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    margin-top: 8px;
}

@media (max-width: 991.98px) {
    .nv-gallery-photos {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 575.98px) {
    .nv-gallery-photos {
        grid-template-columns: 1fr;
    }
}

.nv-gallery-photos__item {
    display: block;
    text-decoration: none;
}

.nv-gallery-photos__image {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    background-color: var(--nv-navy-950);
    border-radius: var(--nv-radius);
    transition: transform .3s ease;
}

.nv-gallery-photos__item:hover .nv-gallery-photos__image {
    transform: scale(1.02);
}

.nv-gallery-photos__caption {
    margin: 24px 0 0;
    color: rgba(6, 12, 31, 0.65);
    font-family: var(--nv-font-family);
    font-size: 1.35rem;
    line-height: 1.4;
}

/* ---------------------------------------------------------------------------
   Search page - reuses .nv-article's 1-10-1 (of 12) centred column, a
   filter row above a 2-column results grid (image, title, red date - no
   lead text), and the shared .nv-pagination component below.
--------------------------------------------------------------------------- */
.nv-search__filters {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 20px;
    margin-bottom: 40px;
    padding-bottom: 32px;
    border-bottom: 1px solid rgba(6, 12, 31, 0.08);
}

.nv-search__field {
    display: flex;
    flex: 1 1 180px;
    min-width: 160px;
    flex-direction: column;
    gap: 6px;
}

.nv-search__field label {
    font-size: var(--nv-fs-field-label);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--nv-navy-950);
}

.nv-search__field input,
.nv-search__field select {
    border: 1px solid rgba(6, 12, 31, 0.14);
    border-radius: var(--nv-radius);
    padding: 11px 16px;
    font-size: var(--nv-fs-ui-sm);
    font-family: var(--nv-font-family);
    color: var(--nv-navy-950);
    background: #fff;
    box-shadow: 0 1px 2px rgba(6, 12, 31, 0.04);
    transition: border-color .15s ease, box-shadow .15s ease;
}

.nv-search__field input::placeholder {
    color: rgba(6, 12, 31, 0.4);
}

.nv-search__field input:hover,
.nv-search__field select:hover {
    border-color: rgba(6, 12, 31, 0.28);
}

.nv-search__field input:focus,
.nv-search__field select:focus {
    outline: none;
    border-color: var(--nv-navy-950);
    box-shadow: 0 0 0 3px rgba(6, 12, 31, 0.08);
}

/* Custom dropdown arrow (replaces the browser default) so both selects and
   the text input share the same flat, borderless look. */
.nv-search__field select {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding-right: 36px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23060C1F' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    cursor: pointer;
}

.nv-search__field--submit {
    flex: 0 0 auto;
}

.nv-search__submit {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border: none;
    border-radius: 50%;
    background: #000;
    color: var(--nv-text-on-dark);
    cursor: pointer;
    transition: background-color .15s ease;
}

.nv-search__submit:hover {
    background: var(--nv-navy-950);
}

.nv-search__grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 32px 28px;
    margin-bottom: 48px;
}

@media (max-width: 767.98px) {
    .nv-search__grid {
        grid-template-columns: 1fr;
    }
}

.nv-search-card {
    display: block;
    text-decoration: none;
}

.nv-search-card__image {
    width: 100%;
    aspect-ratio: 4 / 3;
    background-size: cover;
    background-position: center;
    background-color: var(--nv-navy-950);
    border-radius: var(--nv-radius);
    margin-bottom: 16px;
    overflow: hidden;
    transition: transform .3s ease;
}

.nv-search-card:hover .nv-search-card__image {
    transform: scale(1.02);
}

.nv-search-card__title {
    color: var(--nv-navy-950);
    font-family: var(--nv-font-family);
    font-size: var(--nv-fs-card-title);
    font-weight: 700;
    line-height: 1.4;
    margin: 0 0 8px;
    transition: color .15s ease;
}

.nv-search-card:hover .nv-search-card__title {
    color: var(--nv-gold-400);
}

.nv-search-card__date {
    color: var(--nv-red);
    font-family: var(--nv-font-family);
    font-weight: 700;
    font-size: var(--nv-fs-date);
    margin: 0;
}

.nv-search-card__lead {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    overflow: hidden;
    color: rgba(6, 12, 31, 0.7);
    font-family: var(--nv-font-family);
    font-weight: 400;
    font-size: clamp(1.235rem, 1.0736rem + 0.6887vw, 1.9rem);
    line-height: 1.5;
    margin: 10px 0 0;
}

.nv-search__empty {
    grid-column: 1 / -1;
    padding: 40px 0;
    color: var(--nv-navy-950);
}

/* Shared modern pagination component - flat rounded page links + circular
   prev/next arrows, used wherever `vendor.pagination.nv-modern` is rendered. */
.nv-pagination-wrap {
    display: flex;
    justify-content: center;
}

.nv-pagination {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.nv-pagination__item {
    display: flex;
}

.nv-pagination__link,
.nv-pagination__arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    height: 40px;
    padding: 0 4px;
    border: 1px solid rgba(6, 12, 31, 0.12);
    border-radius: var(--nv-radius);
    background: #fff;
    font-family: var(--nv-font-family);
    color: var(--nv-navy-950);
    font-weight: 700;
    font-size: var(--nv-fs-ui-sm);
    text-decoration: none;
    transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}

.nv-pagination__link:hover {
    border-color: var(--nv-gold-400);
    color: var(--nv-gold-400);
    text-decoration: none;
}

.nv-pagination__link--active,
.nv-pagination__link--active:hover {
    background: var(--nv-gold-400);
    border-color: var(--nv-gold-400);
    color: var(--nv-text-on-dark);
}

.nv-pagination__dots {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    height: 40px;
    color: rgba(6, 12, 31, 0.4);
    font-weight: 700;
}

.nv-pagination__item--disabled .nv-pagination__arrow {
    border-color: rgba(6, 12, 31, 0.08);
    color: rgba(6, 12, 31, 0.25);
    opacity: .6;
    pointer-events: none;
}

/* ---------------------------------------------------------------------------
   Gallery index page - mirrors .nv-search's filters/grid/pagination 1:1
   under its own namespace (same reasoning as .nv-gallery vs .nv-news on the
   homepage: kept separate so each listing page stays independently
   tunable), reusing the shared .nv-article 1-10-1 layout and .nv-pagination
   component. No lead snippet - Gallery has no lead field.
--------------------------------------------------------------------------- */
.nv-gallery-index__filters {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 20px;
    margin-bottom: 40px;
    padding-bottom: 32px;
    border-bottom: 1px solid rgba(6, 12, 31, 0.08);
}

.nv-gallery-index__field {
    display: flex;
    flex: 1 1 180px;
    min-width: 160px;
    flex-direction: column;
    gap: 6px;
}

.nv-gallery-index__field label {
    font-size: var(--nv-fs-field-label);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--nv-navy-950);
}

.nv-gallery-index__field input,
.nv-gallery-index__field select {
    border: 1px solid rgba(6, 12, 31, 0.14);
    border-radius: var(--nv-radius);
    padding: 11px 16px;
    font-size: var(--nv-fs-ui-sm);
    font-family: var(--nv-font-family);
    color: var(--nv-navy-950);
    background: #fff;
    box-shadow: 0 1px 2px rgba(6, 12, 31, 0.04);
    transition: border-color .15s ease, box-shadow .15s ease;
}

.nv-gallery-index__field input::placeholder {
    color: rgba(6, 12, 31, 0.4);
}

.nv-gallery-index__field input:hover,
.nv-gallery-index__field select:hover {
    border-color: rgba(6, 12, 31, 0.28);
}

.nv-gallery-index__field input:focus,
.nv-gallery-index__field select:focus {
    outline: none;
    border-color: var(--nv-navy-950);
    box-shadow: 0 0 0 3px rgba(6, 12, 31, 0.08);
}

.nv-gallery-index__field select {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding-right: 36px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23060C1F' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    cursor: pointer;
}

.nv-gallery-index__field--submit {
    flex: 0 0 auto;
}

.nv-gallery-index__submit {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border: none;
    border-radius: 50%;
    background: #000;
    color: var(--nv-text-on-dark);
    cursor: pointer;
    transition: background-color .15s ease;
}

.nv-gallery-index__submit:hover {
    background: var(--nv-navy-950);
}

.nv-gallery-index__grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 32px 28px;
    margin-bottom: 48px;
}

@media (max-width: 767.98px) {
    .nv-gallery-index__grid {
        grid-template-columns: 1fr;
    }
}

.nv-gallery-index-card {
    display: block;
    text-decoration: none;
}

.nv-gallery-index-card__image {
    width: 100%;
    aspect-ratio: 4 / 3;
    background-size: cover;
    background-position: center;
    background-color: var(--nv-navy-950);
    border-radius: var(--nv-radius);
    margin-bottom: 16px;
    overflow: hidden;
    transition: transform .3s ease;
}

.nv-gallery-index-card:hover .nv-gallery-index-card__image {
    transform: scale(1.02);
}

.nv-gallery-index-card__title {
    color: var(--nv-navy-950);
    font-family: var(--nv-font-family);
    font-size: var(--nv-fs-card-title);
    font-weight: 700;
    line-height: 1.4;
    margin: 0 0 8px;
    transition: color .15s ease;
}

.nv-gallery-index-card:hover .nv-gallery-index-card__title {
    color: var(--nv-gold-400);
}

.nv-gallery-index-card__date {
    color: var(--nv-red);
    font-family: var(--nv-font-family);
    font-weight: 700;
    font-size: var(--nv-fs-date);
    margin: 0;
}

.nv-gallery-index__empty {
    grid-column: 1 / -1;
    padding: 40px 0;
    color: var(--nv-navy-950);
}

/* ---------------------------------------------------------------------------
   World game category page - reuses .nv-article's 1-10-1 layout (hero,
   title, optional video, lead) for the category header, then a
   chronological list of its world games below it in the same white
   content column - each row is logo | name+content | meta sidebar,
   matching the shape of the old Bootstrap layout but restyled.
--------------------------------------------------------------------------- */
.nv-wg-timeline__heading {
    margin-top: 8px;
    font-size: var(--nv-fs-section-heading);
}

.nv-wg-timeline__item {
    display: grid;
    grid-template-columns: 160px 0.85fr 340px;
    gap: 32px;
    padding: 32px 0;
    border-bottom: 1px solid rgba(6, 12, 31, 0.08);
}

.nv-wg-timeline__item:first-child {
    padding-top: 0;
}

@media (max-width: 991.98px) {
    .nv-wg-timeline__item {
        grid-template-columns: 120px 1fr;
    }

    .nv-wg-timeline__meta {
        grid-column: 1 / -1;
        border-left: none;
        border-top: 1px solid rgba(6, 12, 31, 0.08);
        padding-left: 0;
        padding-top: 20px;
    }
}

@media (max-width: 575.98px) {
    .nv-wg-timeline__item {
        grid-template-columns: 1fr;
    }

    .nv-wg-timeline__logo {
        width: 120px;
    }
}

.nv-wg-timeline__logo {
    display: block;
}

.nv-wg-timeline__logo img {
    width: 100%;
    height: auto;
    display: block;
}

.nv-wg-timeline__name {
    margin: 0 0 8px;
    font-size: var(--nv-fs-section-heading);
    font-weight: 800;
    line-height: 1.3;
}

.nv-wg-timeline__name a {
    color: var(--nv-navy-950);
    text-decoration: none;
    transition: color .15s ease;
}

.nv-wg-timeline__name a:hover {
    color: var(--nv-gold-400);
}

.nv-wg-timeline__content,
.nv-wg-timeline__content * {
    font-family: var(--nv-font-family) !important;
    font-size: var(--nv-fs-content) !important;
    color: rgba(6, 12, 31, 0.75);
    line-height: 1.6;
}

.nv-wg-timeline__content img {
    display: block;
    margin: 24px auto;
    width: 100% !important;
    height: auto !important;
    max-width: 100%;
}

.nv-wg-timeline__meta,
.nv-wg-timeline__meta *:not(i) {
    font-family: var(--nv-font-family) !important;
}

.nv-wg-timeline__meta {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding-left: 32px;
    border-left: 1px solid rgba(6, 12, 31, 0.08);
    font-size: calc(var(--nv-fs-content) * 0.75) !important;
    color: var(--nv-navy-950);
}

.nv-wg-timeline__meta-item i {
    color: var(--nv-red);
    width: 18px;
}

.nv-wg-timeline__meta-link {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--nv-gold-400);
    font-weight: 700;
    text-decoration: none;
    transition: color .15s ease;
}

.nv-wg-timeline__meta-link:hover {
    color: var(--nv-navy-950);
    text-decoration: none;
}

.nv-wg-timeline__meta-link i {
    width: 18px;
    flex-shrink: 0;
}

.nv-wg-timeline__meta-badge {
    width: 24px;
    height: auto;
}

.nv-wg-timeline__empty {
    padding: 40px 0;
    color: var(--nv-navy-950);
}

/* ---------------------------------------------------------------------------
   Video index page - mirrors .nv-gallery-index/.nv-search 1:1 (filters/grid/
   pagination, same reasoning as those two: kept separate so each listing
   page stays independently tunable), reusing the shared .nv-article 1-10-1
   layout and .nv-pagination component. Cards get a play-icon overlay
   (matches the homepage's .nv-video-card__play) since these link to videos.
--------------------------------------------------------------------------- */
.nv-video-index__filters {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 20px;
    margin-bottom: 40px;
    padding-bottom: 32px;
    border-bottom: 1px solid rgba(6, 12, 31, 0.08);
}

.nv-video-index__field {
    display: flex;
    flex: 1 1 180px;
    min-width: 160px;
    flex-direction: column;
    gap: 6px;
}

.nv-video-index__field label {
    font-size: var(--nv-fs-field-label);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--nv-navy-950);
}

.nv-video-index__field input,
.nv-video-index__field select {
    border: 1px solid rgba(6, 12, 31, 0.14);
    border-radius: var(--nv-radius);
    padding: 11px 16px;
    font-size: var(--nv-fs-ui-sm);
    font-family: var(--nv-font-family);
    color: var(--nv-navy-950);
    background: #fff;
    box-shadow: 0 1px 2px rgba(6, 12, 31, 0.04);
    transition: border-color .15s ease, box-shadow .15s ease;
}

.nv-video-index__field input::placeholder {
    color: rgba(6, 12, 31, 0.4);
}

.nv-video-index__field input:hover,
.nv-video-index__field select:hover {
    border-color: rgba(6, 12, 31, 0.28);
}

.nv-video-index__field input:focus,
.nv-video-index__field select:focus {
    outline: none;
    border-color: var(--nv-navy-950);
    box-shadow: 0 0 0 3px rgba(6, 12, 31, 0.08);
}

.nv-video-index__field select {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding-right: 36px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23060C1F' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    cursor: pointer;
}

.nv-video-index__field--submit {
    flex: 0 0 auto;
}

.nv-video-index__submit {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border: none;
    border-radius: 50%;
    background: #000;
    color: var(--nv-text-on-dark);
    cursor: pointer;
    transition: background-color .15s ease;
}

.nv-video-index__submit:hover {
    background: var(--nv-navy-950);
}

.nv-video-index__grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 32px 28px;
    margin-bottom: 48px;
}

@media (max-width: 767.98px) {
    .nv-video-index__grid {
        grid-template-columns: 1fr;
    }
}

.nv-video-index-card {
    display: block;
    text-decoration: none;
}

.nv-video-index-card__image {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 3;
    background-size: cover;
    background-position: center;
    background-color: var(--nv-navy-950);
    border-radius: var(--nv-radius);
    margin-bottom: 16px;
    overflow: hidden;
    transition: transform .3s ease;
}

.nv-video-index-card:hover .nv-video-index-card__image {
    transform: scale(1.02);
}

.nv-video-index-card__play {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: rgba(6, 12, 31, 0.35);
    border: 2px solid var(--nv-gold-400);
    color: var(--nv-gold-400);
    backdrop-filter: blur(2px);
    transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}

.nv-video-index-card:hover .nv-video-index-card__play {
    background: var(--nv-gradient-gold);
    border-color: transparent;
    color: var(--nv-navy-950);
}

.nv-video-index-card__title {
    color: var(--nv-navy-950);
    font-family: var(--nv-font-family);
    font-size: var(--nv-fs-card-title);
    font-weight: 700;
    line-height: 1.4;
    margin: 0 0 8px;
    transition: color .15s ease;
}

.nv-video-index-card:hover .nv-video-index-card__title {
    color: var(--nv-gold-400);
}

.nv-video-index-card__date {
    color: var(--nv-red);
    font-family: var(--nv-font-family);
    font-weight: 700;
    font-size: var(--nv-fs-date);
    margin: 0;
}

.nv-video-index__empty {
    grid-column: 1 / -1;
    padding: 40px 0;
    color: var(--nv-navy-950);
}

/* ---------------------------------------------------------------------------
   Shared "entity list" row - logo | name(+subtitle)+content | meta sidebar -
   used by the event, tagszövetség (member organization) and tisztségviselők
   (officer) listing pages. Unlike the homepage's nv-news/nv-gallery/
   nv-worldgames-section (which intentionally stay separate namespaces
   because they coexist on the same page), these three pages are never
   rendered together, so one shared component is used instead of three
   near-identical copies - it's the same shape as .nv-wg-timeline, kept as
   its own component since that one's specifically the world-game category
   page's reuse of the pattern.
--------------------------------------------------------------------------- */
.nv-entity-list__item {
    display: grid;
    grid-template-columns: 160px 1fr 260px;
    gap: 32px;
    padding: 32px 0;
    border-bottom: 1px solid rgba(6, 12, 31, 0.08);
}

.nv-entity-list__item:first-child {
    padding-top: 0;
}

/* For rows with no meta sidebar (e.g. the gallery list on the world game
   show page) - two columns instead of reserving the third for nothing. */
.nv-entity-list__item--compact {
    grid-template-columns: 160px 1fr;
}

/* Full-width banner image above the content+meta row instead of a small
   logo in its own column (the events list) - the banner (first child)
   spans both columns via implicit grid placement, body/meta fall into the
   row below it automatically. */
.nv-entity-list__item--banner {
    grid-template-columns: 1fr 260px;
}

.nv-entity-list__item--banner .nv-entity-list__banner {
    grid-column: 1 / -1;
}

@media (max-width: 991.98px) {
    .nv-entity-list__item {
        grid-template-columns: 120px 1fr;
    }

    .nv-entity-list__item--banner {
        grid-template-columns: 1fr;
    }

    .nv-entity-list__meta {
        grid-column: 1 / -1;
        border-left: none;
        border-top: 1px solid rgba(6, 12, 31, 0.08);
        padding-left: 0;
        padding-top: 20px;
    }
}

.nv-entity-list__banner {
    width: 100%;
    aspect-ratio: 21 / 9;
    border-radius: var(--nv-radius);
    overflow: hidden;
}

.nv-entity-list__banner img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

@media (max-width: 767.98px) {
    .nv-entity-list__banner {
        aspect-ratio: 4 / 3;
    }
}

@media (max-width: 575.98px) {
    .nv-entity-list__item {
        grid-template-columns: 1fr;
    }

    .nv-entity-list__logo {
        width: 120px;
    }
}

.nv-entity-list__logo {
    display: block;
}

.nv-entity-list__logo img {
    width: 100%;
    height: auto;
    display: block;
    border-radius: var(--nv-radius);
}

.nv-entity-list__name {
    margin: 0 0 4px;
    font-size: var(--nv-fs-section-heading);
    font-weight: 800;
    line-height: 1.3;
}

.nv-entity-list__subtitle {
    margin: 0 0 8px;
    font-size: var(--nv-fs-field-label);
    font-weight: 400;
    color: rgba(6, 12, 31, 0.6);
}

.nv-entity-list__content,
.nv-entity-list__content * {
    font-family: var(--nv-font-family) !important;
    font-size: var(--nv-fs-content) !important;
}

.nv-entity-list__content {
    color: rgba(6, 12, 31, 0.75);
    line-height: 1.6;
}

.nv-entity-list__content img {
    display: block;
    margin: 24px auto;
    width: 100% !important;
    height: auto !important;
    max-width: 100%;
}

.nv-entity-list__meta,
.nv-entity-list__meta *:not(i) {
    font-family: var(--nv-font-family) !important;
}

.nv-entity-list__meta {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
    padding-left: 32px;
    border-left: 1px solid rgba(6, 12, 31, 0.08);
    font-size: calc(var(--nv-fs-content) * 0.75);
    color: var(--nv-navy-950);
}

.nv-entity-list__meta-item i {
    color: var(--nv-red);
    width: 18px;
    flex-shrink: 0;
}

.nv-entity-list__meta-link {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--nv-gold-400);
    font-weight: 700;
    text-decoration: none;
    transition: color .15s ease;
}

.nv-entity-list__meta-link:hover {
    color: var(--nv-navy-950);
    text-decoration: none;
}

.nv-entity-list__meta-link i {
    width: 18px;
    flex-shrink: 0;
}

.nv-entity-list__meta-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 20px;
    border-radius: 999px;
    background: var(--nv-gold-400);
    color: var(--nv-text-on-dark) !important;
    font-weight: 700;
    text-decoration: none;
    transition: background-color .15s ease;
}

.nv-entity-list__meta-btn:hover {
    background: var(--nv-navy-950);
    color: var(--nv-text-on-dark) !important;
    text-decoration: none;
}

.nv-entity-list__empty {
    padding: 40px 0;
    color: var(--nv-navy-950);
}

.nv-entity-list__group-heading {
    margin: 0 0 8px;
}

.nv-entity-list__group + .nv-entity-list__group {
    margin-top: 24px;
}

/* ---------------------------------------------------------------------------
   Static content pages (Kapcsolat, Impresszum/Jognyilatkozat/Adatvédelem/
   Rólunk/NVESZ, Közérdekű adatok) - reuse .nv-article's 1-10-1 layout and
   the article body's own .article .content font/image rules (so CMS-edited
   HTML gets the same styling wherever it's rendered on the site).
--------------------------------------------------------------------------- */
.nv-contact__heading {
    font-weight: 800;
    font-size: var(--nv-fs-section-heading);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--nv-navy-950);
    margin: 48px 0 18px;
    padding-bottom: 10px;
    border-bottom: 3px solid var(--nv-gold-500);
    display: inline-block;
}

.nv-contact__heading:first-child {
    margin-top: 0;
}

.nv-contact__map {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    border-radius: var(--nv-radius);
    overflow: hidden;
}

.nv-contact__map iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

/* ---------------------------------------------------------------------------
   Közérdekű adatok - document accordion, built on native <details>/
   <summary> (no JS needed for expand/collapse, nests naturally for the
   category -> subcategory -> documents hierarchy).
--------------------------------------------------------------------------- */
.nv-doc-accordion {
    margin-top: 8px;
    border-top: 1px solid rgba(6, 12, 31, 0.1);
}

.nv-doc-accordion__category {
    border-bottom: 1px solid rgba(6, 12, 31, 0.1);
}

.nv-doc-accordion__category-summary {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 20px 4px;
    font-size: var(--nv-fs-field-label);
    font-weight: 700;
    color: var(--nv-navy-950);
    cursor: pointer;
    list-style: none;
}

.nv-doc-accordion__category-summary::-webkit-details-marker {
    display: none;
}

.nv-doc-accordion__category-summary::before {
    content: '';
    flex: 0 0 auto;
    width: 10px;
    height: 10px;
    border-right: 2px solid var(--nv-red);
    border-bottom: 2px solid var(--nv-red);
    transform: rotate(-45deg);
    transition: transform .2s ease;
}

.nv-doc-accordion__category[open] > .nv-doc-accordion__category-summary::before {
    transform: rotate(45deg);
}

.nv-doc-accordion__category-body {
    padding: 0 4px 24px;
}

.nv-doc-accordion__subcategory {
    border-top: 1px solid rgba(6, 12, 31, 0.08);
}

.nv-doc-accordion__subcategory:first-child {
    border-top: none;
}

.nv-doc-accordion__subcategory-summary {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 4px;
    font-size: var(--nv-fs-ui-sm);
    font-weight: 700;
    color: var(--nv-navy-950);
    cursor: pointer;
    list-style: none;
}

.nv-doc-accordion__subcategory-summary::-webkit-details-marker {
    display: none;
}

.nv-doc-accordion__subcategory-summary::before {
    content: '';
    flex: 0 0 auto;
    width: 8px;
    height: 8px;
    border-right: 2px solid var(--nv-navy-700);
    border-bottom: 2px solid var(--nv-navy-700);
    transform: rotate(-45deg);
    transition: transform .2s ease;
}

.nv-doc-accordion__subcategory[open] > .nv-doc-accordion__subcategory-summary::before {
    transform: rotate(45deg);
}

.nv-doc-accordion__files {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 4px 4px 16px 18px;
}

.nv-doc-accordion__file {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px;
    border: 1px solid rgba(6, 12, 31, 0.12);
    border-radius: var(--nv-radius);
    color: var(--nv-navy-950);
    font-size: var(--nv-fs-ui-sm);
    text-decoration: none;
    transition: border-color .15s ease, color .15s ease, background-color .15s ease;
}

.nv-doc-accordion__file:hover {
    border-color: var(--nv-gold-400);
    color: var(--nv-gold-400);
    background: rgba(232, 193, 127, 0.04);
    text-decoration: none;
}

.nv-doc-accordion__file i {
    color: var(--nv-gold-400);
}

/* ---------------------------------------------------------------------------
   World game show page - key facts list (reuses .nv-entity-list__meta-item/
   -link for the row styling, but standalone/unbordered since here it's the
   page's own content rather than a grid row's sidebar column), then the
   Magyar vonatkozású eredmények (medals table) further down.
--------------------------------------------------------------------------- */
.nv-worldgame-meta,
.nv-worldgame-meta *:not(i) {
    font-family: var(--nv-font-family) !important;
}

.nv-worldgame-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 32px;
    font-size: calc(var(--nv-fs-content) * 0.75);
    color: var(--nv-navy-950);
}

.nv-medal-table-wrap {
    overflow-x: auto;
}

.nv-medal-table {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--nv-font-family);
}

.nv-medal-table th,
.nv-medal-table td {
    padding: 12px 16px;
    text-align: center;
    white-space: nowrap;
}

.nv-medal-table th:first-child,
.nv-medal-table td:first-child {
    text-align: left;
    white-space: normal;
}

.nv-medal-table thead th {
    font-size: var(--nv-fs-ui-sm);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--nv-navy-950);
    border-bottom: 3px solid var(--nv-gold-500);
}

.nv-medal-table tbody tr:nth-child(odd) {
    background: rgba(6, 12, 31, 0.02);
}

.nv-medal-table tbody td {
    font-size: var(--nv-fs-ui-sm);
    color: var(--nv-navy-950);
    border-bottom: 1px solid rgba(6, 12, 31, 0.06);
}

.nv-medal-table .nv-medal {
    margin-right: 6px;
}

.nv-medal--gold {
    color: #d4af00;
}

.nv-medal--silver {
    color: #9a9a9a;
}

.nv-medal--bronze {
    color: #aa704a;
}

/* ---------------------------------------------------------------------------
   404 page - reuses .nv-article's 1-10-1 layout, centred instead of
   left-aligned since there's no title/lead/body structure to line up with.
--------------------------------------------------------------------------- */
.nv-error-404 {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 40px 0 80px;
}

.nv-error-404__image {
    max-width: 320px;
    width: 100%;
    height: auto;
    margin-bottom: 32px;
}

.nv-error-404__text {
    max-width: 520px;
    color: rgba(6, 12, 31, 0.7);
    font-size: var(--nv-fs-content);
    line-height: 1.6;
    margin: 0 0 32px;
}

/* ---------------------------------------------------------------------------
   Footer
--------------------------------------------------------------------------- */
footer {
    background: var(--nv-gradient-navy);
}

footer .footer-top,
footer .footer-bottom {
    background: transparent;
}

footer .navbar-footer-bottom .nav-link-bottom {
    color: var(--nv-text-on-dark);
}

footer .navbar-footer-bottom .nav-link-bottom:hover {
    color: var(--nv-gold-400);
}

footer .footer-bottom {
    border-top: 1px solid var(--nv-border-on-dark);
}

footer .footer-bottom .fs-14 {
    color: var(--nv-text-muted-on-dark);
}

footer .footer-bottom a {
    color: var(--nv-gold-400);
}

.nv-footer-credit {
    display: flex;
    align-items: center;
    gap: 10px;
}

.nv-footer-credit__badge {
    display: inline-flex;
    align-items: center;
    line-height: 0;
    border-radius: 8px;
    padding: 4px 10px;
    transition: transform .15s ease;
}

.nv-footer-credit__badge:hover {
    transform: scale(1.04);
}

.nv-footer-credit__badge img {
    display: block;
    height: 52px;
    width: auto;
    border-radius: 4px;
    opacity: .85;
    transition: opacity .15s ease;
}

.owl-carousel {
    background: var(--nv-navy-950) !important;
}

.owl-theme .owl-nav {
    margin: 0 !important;
}

.owl-carousel.owl-loaded {
    background: #14203b;
}

