/* Nadorex Design System V1 — nx component layer
   Fallback tokens only. Runtime ThemeSettings (:root in #theme-settings-css) override these. */

:root {
    --nx-color-brand: #0088CC;
    --nx-color-secondary: #E36159;
    --nx-color-tertiary: #2BAAB1;
    --nx-color-quaternary: #383F48;
    --nx-color-dark: #212529;
    --nx-color-light: #FFFFFF;
    --nx-color-text: #777777;
    --nx-color-heading: #212529;
    --nx-color-link: #0088CC;
    --nx-color-muted: #6c757d;
    --nx-color-surface: #ffffff;
    --nx-color-surface-soft: #f6f7f9;
    --nx-color-border: #e7e9ee;

    --nx-font-body: "Open Sans", sans-serif;
    --nx-font-heading: "Open Sans", sans-serif;
    --nx-font-size: 16px;

    --nx-h1: 42px;
    --nx-h2: 32px;
    --nx-h3: 26px;
    --nx-h4: 22px;
    --nx-h5: 18px;
    --nx-h6: 16px;

    --nx-body-line-height: 1.7;
    --nx-heading-line-height: 1.15;
    --nx-heading-font-weight: 700;
    --nx-heading-letter-spacing: -0.02em;

    --nx-container-width: 1320px;
    --nx-content-max-width: 760px;
    --nx-section-y: 96px;
    --nx-section-y-mobile: 64px;

    --nx-radius: 12px;
    --nx-card-radius: 20px;
    --nx-card-padding: 32px;
    --nx-button-radius: 10px;

    --nx-menu-font-size: 13px;
    --nx-menu-font-weight: 600;
    --nx-menu-color: #212529;
    --nx-menu-hover-color: #0088CC;
    --nx-submenu-font-size: 13px;
    --nx-submenu-font-weight: 400;
    --nx-submenu-color: #777777;

    --nx-section-padding-y: var(--nx-section-y);
    --nx-section-padding-y-mobile: var(--nx-section-y-mobile);
    --theme-muted-color: var(--nx-color-muted);
    --theme-surface-color: var(--nx-color-surface);
    --theme-surface-soft-color: var(--nx-color-surface-soft);
    --theme-border-color: var(--nx-color-border);
    --theme-radius: var(--nx-radius);
    --theme-card-radius: var(--nx-card-radius);
    --theme-button-radius: var(--nx-button-radius);
    --muted: var(--nx-color-muted);
    --surface: var(--nx-color-surface);
    --surface-soft: var(--nx-color-surface-soft);
    --border: var(--nx-color-border);
}

.nx-section,
.nx-container,
.nx-content-width,
.nx-heading,
.nx-text,
.nx-eyebrow,
.nx-btn,
.nx-card,
.nx-section-header,
.nx-badge,
.nx-stack,
.nx-cluster,
.nx-surface,
.nx-surface-soft,
.nx-hero,
.nx-hero__inner,
.nx-hero__copy,
.nx-hero__media,
.nx-hero__figure,
.nx-bento,
.nx-bento__item,
.nx-bento__content,
.nx-bento__media,
.nx-services,
.nx-service-card,
.nx-service-card__media,
.nx-blog,
.nx-blog-grid,
.nx-blog-card,
.nx-blog-card__media,
.nx-blog-card__body,
.nx-products,
.nx-product-card,
.nx-product-card__media,
.nx-product-card__body,
.nx-pricing,
.nx-pricing-card,
.nx-pricing-card__head,
.nx-pricing-card__features,
.nx-pricing-card__actions,
.nx-product-detail,
.nx-product-detail__grid,
.nx-product-detail__gallery,
.nx-product-detail__info,
.nx-product-gallery,
.nx-product-gallery__main,
.nx-product-gallery__thumbs,
.nx-product-info,
.nx-product-content,
.nx-product-content__inner,
.nx-product-detail__modules,
.nx-article,
.nx-article__header,
.nx-article__hero,
.nx-article__content,
.nx-article__modules,
.nx-article__footer,
.nx-content-detail,
.nx-content-detail__header,
.nx-content-detail__media,
.nx-content-detail__body,
.nx-content-detail__modules,
.nx-content-shell,
.nx-prose,
.nx-files,
.nx-files__grid,
.nx-file-card,
.nx-file-card__icon,
.nx-file-card__body,
.nx-file-card__actions,
.nx-solutions,
.nx-solutions__grid,
.nx-solution,
.nx-solution__body,
.nx-solution__media,
.nx-announcements,
.nx-announcements__list,
.nx-announcement,
.nx-announcement__body,
.nx-announcement__media,
.nx-header,
.nx-header__inner,
.nx-header__brand,
.nx-header__logo,
.nx-header__logo-image,
.nx-header__mobile-toggle,
.nx-nav,
.nx-nav__list,
.nx-nav__item,
.nx-nav__link,
.nx-nav__toggle,
.nx-nav__submenu,
.nx-nav__submenu-item,
.nx-nav__submenu-link,
.nx-mobile-nav,
.nx-mobile-nav__list,
.nx-mobile-nav__item,
.nx-mobile-nav__link,
.nx-mobile-nav__toggle,
.nx-mobile-nav__submenu,
.nx-footer,
.nx-footer__main,
.nx-footer__grid,
.nx-footer__column,
.nx-footer__brand,
.nx-footer__logo,
.nx-footer__logo-image,
.nx-footer__company,
.nx-footer__text,
.nx-footer-nav,
.nx-footer-nav__list,
.nx-footer-nav__item,
.nx-footer-nav__link,
.nx-footer-contact,
.nx-footer-contact__list,
.nx-footer-contact__item,
.nx-footer-contact__label,
.nx-footer-contact__link,
.nx-footer-social,
.nx-footer-social__list,
.nx-footer-social__item,
.nx-footer-social__link,
.nx-footer__bottom,
.nx-footer__copyright,
.nx-page-header,
.nx-page-header__inner,
.nx-page-header__content,
.nx-page-header__media,
.nx-breadcrumb,
.nx-breadcrumb__list,
.nx-gallery,
.nx-gallery__grid,
.nx-gallery-item,
.nx-gallery-item__link,
.nx-gallery-item__media,
.nx-gallery-item__overlay,
.nx-gallery-item__caption,
.nx-gallery-lightbox,
.nx-gallery-lightbox__dialog,
.nx-projects,
.nx-projects__grid,
.nx-project-card,
.nx-project-card__media,
.nx-project-card__body,
.nx-references,
.nx-reference-grid,
.nx-reference-item,
.nx-reference-item__media,
.nx-faq,
.nx-faq__list,
.nx-faq-item,
.nx-faq-item__question,
.nx-faq-item__answer,
.nx-testimonials,
.nx-testimonial-grid,
.nx-testimonial,
.nx-testimonial__person,
.nx-testimonial__media,
.nx-certificates,
.nx-certificates__grid,
.nx-certificate-card,
.nx-certificate-card__media {
    box-sizing: border-box;
}

.nx-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* -------------------------------------------------------------------------
   Header + navigation
   ------------------------------------------------------------------------- */

.nx-header,
.nx-header *,
.nx-nav,
.nx-mobile-nav {
    box-sizing: border-box;
}

.nx-header {
    --nx-header-logo-size: 5.625rem; /* 90px display area */
    --nx-header-height: calc(var(--nx-header-logo-size) + 1.5rem);
    position: relative;
    position: sticky;
    top: 0;
    z-index: 1000;
    width: 100%;
    min-width: 0;
    margin: 0;
    color: var(--nx-menu-color);
    font-family: var(--nx-font-body);
    background-color: var(--nx-color-surface);
    border-bottom: 1px solid var(--nx-color-border);
}

.nx-header--solid {
    background-color: var(--nx-color-surface);
}

.nx-header--sticky {
    position: sticky;
    top: 0;
}

.nx-header--scrolled {
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
    backdrop-filter: blur(8px);
}

.nx-header--transparent {
    background-color: transparent;
    border-bottom-color: transparent;
    color: var(--nx-color-light);
}

.nx-header--transparent .nx-nav__link,
.nx-header--transparent .nx-nav__toggle,
.nx-header--transparent .nx-header__logo-text,
.nx-header--transparent .nx-header__mobile-toggle {
    color: var(--nx-color-light);
}

.nx-header--transparent .nx-header__mobile-toggle-bars,
.nx-header--transparent .nx-header__mobile-toggle-bars::before,
.nx-header--transparent .nx-header__mobile-toggle-bars::after {
    background-color: var(--nx-color-light);
}

.nx-header--transparent.nx-header--scrolled {
    background-color: rgba(33, 37, 41, 0.92);
    border-bottom-color: rgba(255, 255, 255, 0.08);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
}

.nx-header__inner {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    min-height: var(--nx-header-height);
    min-width: 0;
}

.nx-header__brand {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    min-width: 0;
    max-width: min(100%, 16rem);
    color: inherit;
    text-decoration: none;
}

.nx-header__brand:focus-visible {
    outline: 2px solid var(--nx-menu-hover-color);
    outline-offset: 3px;
}

/* Instagram-style logo display area: contain, never stretch/crop */
.nx-header__logo {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--nx-header-logo-size);
    height: var(--nx-header-logo-size);
    flex: 0 0 var(--nx-header-logo-size);
    max-width: var(--nx-header-logo-size);
    max-height: var(--nx-header-logo-size);
    overflow: hidden;
}

.nx-header__logo-image {
    display: block;
    width: 100%;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    object-position: center;
}

.nx-header__logo-text {
    font-family: var(--nx-font-heading);
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: var(--nx-heading-letter-spacing);
    color: inherit;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nx-header__mobile-toggle {
    display: none;
    margin-left: auto;
    width: 2.75rem;
    height: 2.75rem;
    padding: 0;
    border: 0;
    border-radius: var(--nx-button-radius);
    background: transparent;
    color: var(--nx-menu-color);
    cursor: pointer;
}

.nx-header__mobile-toggle:focus-visible {
    outline: 2px solid var(--nx-menu-hover-color);
    outline-offset: 3px;
}

.nx-header__mobile-toggle-bars,
.nx-header__mobile-toggle-bars::before,
.nx-header__mobile-toggle-bars::after {
    display: block;
    width: 1.15rem;
    height: 2px;
    margin: 0 auto;
    background-color: currentColor;
    border-radius: 1px;
    content: "";
}

.nx-header__mobile-toggle-bars {
    position: relative;
}

.nx-header__mobile-toggle-bars::before,
.nx-header__mobile-toggle-bars::after {
    position: absolute;
    left: 0;
}

.nx-header__mobile-toggle-bars::before {
    top: -6px;
}

.nx-header__mobile-toggle-bars::after {
    top: 6px;
}

.nx-header.is-mobile-open .nx-header__mobile-toggle-bars {
    background-color: transparent;
}

.nx-header.is-mobile-open .nx-header__mobile-toggle-bars::before {
    top: 0;
    transform: rotate(45deg);
}

.nx-header.is-mobile-open .nx-header__mobile-toggle-bars::after {
    top: 0;
    transform: rotate(-45deg);
}

.nx-nav {
    flex: 1 1 auto;
    min-width: 0;
}

.nx-nav__list,
.nx-nav__submenu,
.nx-mobile-nav__list,
.nx-mobile-nav__submenu {
    list-style: none;
    margin: 0;
    padding: 0;
}

.nx-nav__list {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.15rem;
    min-width: 0;
}

.nx-nav__item,
.nx-nav__submenu-item {
    position: relative;
    min-width: 0;
}

.nx-nav__row,
.nx-mobile-nav__row {
    display: flex;
    align-items: stretch;
    min-width: 0;
}

.nx-nav__link,
.nx-nav__submenu-link {
    display: inline-flex;
    align-items: center;
    min-width: 0;
    max-width: 16rem;
    padding: 0.55rem 0.7rem;
    color: var(--nx-menu-color);
    font-size: var(--nx-menu-font-size);
    font-weight: var(--nx-menu-font-weight);
    letter-spacing: 0.01em;
    line-height: 1.3;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nx-nav__submenu-link {
    width: 100%;
    max-width: 18rem;
    color: var(--nx-submenu-color);
    font-size: var(--nx-submenu-font-size);
    font-weight: var(--nx-submenu-font-weight);
    white-space: normal;
}

/* Keep theme navigation typography from clipping long submenu labels. */
html.nx-theme .nx-header .nx-nav .nx-nav__submenu-link {
    white-space: normal;
    overflow-wrap: anywhere;
}

.nx-nav__link:hover,
.nx-nav__submenu-link:hover {
    color: var(--nx-menu-hover-color);
}

.nx-nav__link:focus-visible,
.nx-nav__submenu-link:focus-visible,
.nx-nav__toggle:focus-visible,
.nx-mobile-nav__link:focus-visible,
.nx-mobile-nav__toggle:focus-visible {
    outline: 2px solid var(--nx-menu-hover-color);
    outline-offset: 2px;
}

.nx-nav__toggle,
.nx-mobile-nav__toggle {
    flex: 0 0 auto;
    width: 2.25rem;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    cursor: pointer;
}

.nx-nav__toggle::after,
.nx-mobile-nav__toggle::after {
    display: block;
    width: 0.45rem;
    height: 0.45rem;
    margin: 0 auto;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg);
    content: "";
}

.nx-nav__item.is-open > .nx-nav__row > .nx-nav__toggle::after,
.nx-nav__submenu-item.is-open > .nx-nav__row > .nx-nav__toggle::after {
    transform: rotate(-135deg);
}

.nx-nav__submenu {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 40;
    min-width: 13.5rem;
    max-width: min(20rem, calc(100vw - 1.5rem));
    padding: 0.4rem 0;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-radius);
    box-shadow: 0 12px 32px rgba(15, 23, 42, 0.12);
}

.nx-nav__submenu .nx-nav__submenu {
    top: 0;
    left: 100%;
    margin-left: 0.25rem;
}

.nx-nav__item.is-flip > .nx-nav__submenu {
    left: auto;
    right: 0;
}

.nx-nav__submenu-item.is-flip > .nx-nav__submenu {
    left: auto;
    right: 100%;
    margin-left: 0;
    margin-right: 0.25rem;
}

.nx-mobile-nav {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 30;
    max-height: min(80vh, calc(100vh - var(--nx-header-height)));
    overflow: auto;
    background-color: var(--nx-color-surface);
    border-bottom: 1px solid var(--nx-color-border);
    box-shadow: 0 16px 32px rgba(15, 23, 42, 0.08);
}

.nx-mobile-nav[hidden],
.nx-nav__submenu[hidden],
.nx-mobile-nav__submenu[hidden] {
    display: none !important;
}

.nx-mobile-nav__item {
    border-bottom: 1px solid var(--nx-color-border);
}

.nx-mobile-nav__link {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    padding: 0.9rem 1.25rem;
    color: var(--nx-color-heading, var(--nx-color-text, #171512));
    font-size: var(--nx-menu-font-size);
    font-weight: var(--nx-menu-font-weight);
    text-decoration: none;
}

.nx-mobile-nav__submenu .nx-mobile-nav__link {
    padding-left: 1.75rem;
    color: var(--nx-submenu-color);
    font-size: var(--nx-submenu-font-size);
    font-weight: var(--nx-submenu-font-weight);
}

.nx-mobile-nav__submenu .nx-mobile-nav__submenu .nx-mobile-nav__link {
    padding-left: 2.35rem;
}

.nx-mobile-nav__toggle {
    width: 3rem;
    color: var(--nx-color-heading, var(--nx-color-text, #171512));
}

.nx-header.is-mobile-open {
    background-color: var(--nx-color-surface);
    color: var(--nx-color-heading, var(--nx-color-text, #171512));
}

.nx-header.is-mobile-open .nx-mobile-nav {
    color: var(--nx-color-heading, var(--nx-color-text, #171512));
}

.nx-mobile-nav__item.is-open > .nx-mobile-nav__row > .nx-mobile-nav__toggle::after {
    transform: rotate(-135deg);
}

.nx-mobile-nav__submenu {
    background-color: var(--nx-color-surface-soft);
}

html.nx-header-scroll-lock {
    overflow: hidden;
}

/* Do not create a body scroll container: sticky headers must stay on screen. */
html.nx-theme body.nx-header-scroll-lock {
    overflow: clip;
}

@media (max-width: 1439.98px) {
    [class$="-header__phone-text"] {
        display: none;
    }
}

@media (max-width: 1199.98px) {
    .nx-header {
        --nx-header-logo-size: 3.75rem; /* 60px */
        --nx-header-height: calc(var(--nx-header-logo-size) + 1rem);
    }

    .nx-nav,
    [class$="-header__nav"] {
        display: none;
    }

    .nx-header__mobile-toggle {
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }

    .nx-header__inner {
        gap: 1rem;
    }

    .nx-header__brand {
        max-width: 100%;
        flex-shrink: 1;
    }

    .nx-header__mobile-toggle {
        flex-shrink: 0;
    }
}

@media (min-width: 1200px) {
    .nx-header__mobile-toggle,
    .nx-mobile-nav {
        display: none !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .nx-header,
    .nx-nav__toggle::after,
    .nx-mobile-nav__toggle::after,
    .nx-header__mobile-toggle-bars::before,
    .nx-header__mobile-toggle-bars::after {
        transition: none;
    }
}

/* -------------------------------------------------------------------------
   Footer
   ------------------------------------------------------------------------- */

.nx-footer,
.nx-footer * {
    box-sizing: border-box;
}

.nx-footer {
    margin: 0;
    width: 100%;
    min-width: 0;
    font-family: var(--nx-font-body);
    color: var(--nx-color-text);
    background-color: var(--nx-color-surface);
}

.nx-footer--dark {
    background-color: var(--nx-color-dark);
    color: rgba(255, 255, 255, 0.84);
}

.nx-footer--light {
    background-color: var(--nx-color-surface);
    color: var(--nx-color-text);
    border-top: 1px solid var(--nx-color-border);
}

.nx-footer__main {
    padding: calc(var(--nx-section-y) * 0.7) 0 calc(var(--nx-section-y) * 0.55);
}

.nx-footer__main:not(:has(.nx-footer__column, .nx-footer-nav)) {
    display: none;
}

.nx-footer__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: 2.25rem 2.75rem;
    align-items: start;
    min-width: 0;
}

.nx-footer__column,
.nx-footer-nav,
.nx-footer-contact,
.nx-footer-social {
    min-width: 0;
}

.nx-footer__brand {
    max-width: 28rem;
}

.nx-footer__logo {
    display: inline-flex;
    align-items: center;
    max-width: 12rem;
    color: inherit;
    text-decoration: none;
}

.nx-footer__logo:focus-visible,
.nx-footer-nav__link:focus-visible,
.nx-footer-contact__link:focus-visible,
.nx-footer-social__link:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

.nx-footer__logo-image {
    display: block;
    height: 2.25rem;
    width: auto;
    max-width: 100%;
    object-fit: contain;
}

.nx-footer__company {
    font-family: var(--nx-font-heading);
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: var(--nx-heading-letter-spacing);
}

.nx-footer__text {
    margin: 1rem 0 0;
    max-width: 36rem;
    font-size: 0.95rem;
    line-height: 1.7;
    color: inherit;
    overflow-wrap: anywhere;
}

.nx-footer--dark .nx-footer__text,
.nx-footer--dark .nx-footer-contact__label {
    color: rgba(255, 255, 255, 0.62);
}

.nx-footer--light .nx-footer__text,
.nx-footer--light .nx-footer-contact__label {
    color: var(--nx-color-muted);
}

.nx-footer-nav__list,
.nx-footer-contact__list,
.nx-footer-social__list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.nx-footer-nav__list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr));
    gap: 0.55rem 1.25rem;
}

.nx-footer-nav__link {
    display: inline-block;
    max-width: 100%;
    color: inherit;
    font-size: 0.95rem;
    font-weight: 600;
    text-decoration: none;
    overflow-wrap: anywhere;
}

.nx-footer-nav__link:hover,
.nx-footer-contact__link:hover {
    color: var(--nx-color-brand);
}

.nx-footer-contact__list {
    display: grid;
    gap: 1rem;
}

.nx-footer-contact__item {
    min-width: 0;
}

.nx-footer-contact__label {
    display: block;
    margin-bottom: 0.25rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.nx-footer-contact address {
    margin: 0;
    font-style: normal;
    overflow-wrap: anywhere;
}

.nx-footer-contact__link {
    color: inherit;
    text-decoration: none;
    overflow-wrap: anywhere;
}

.nx-footer-social__list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
}

.nx-footer-social__link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: var(--nx-radius);
    color: inherit;
    text-decoration: none;
    border: 1px solid currentColor;
}

.nx-footer--dark .nx-footer-social__link {
    border-color: rgba(255, 255, 255, 0.18);
}

.nx-footer--light .nx-footer-social__link {
    border-color: var(--nx-color-border);
}

.nx-footer-social__link:hover {
    color: var(--nx-color-brand);
    border-color: var(--nx-color-brand);
}

.nx-footer-social__icon {
    display: block;
    width: 1.1rem;
    height: 1.1rem;
}

.nx-footer__bottom {
    padding: 1.15rem 0 1.35rem;
    border-top: 1px solid transparent;
}

.nx-footer--dark .nx-footer__bottom {
    border-top-color: rgba(255, 255, 255, 0.1);
}

.nx-footer--light .nx-footer__bottom {
    border-top-color: var(--nx-color-border);
}

.nx-footer__bottom:not(:has(.nx-footer__copyright)) {
    display: none;
}

.nx-footer__copyright {
    margin: 0;
    font-size: 0.85rem;
    line-height: 1.6;
    overflow-wrap: anywhere;
}

@media (max-width: 767.98px) {
    .nx-footer__main {
        padding-top: calc(var(--nx-section-y-mobile) * 0.7);
        padding-bottom: calc(var(--nx-section-y-mobile) * 0.5);
    }

    .nx-footer__grid {
        gap: 1.75rem;
    }
}

/* Scoped NX reboot. Do not unscope to html/body/* — Theme 1 must stay on Porto/Bootstrap. */
html.nx-theme {
    box-sizing: border-box;
}

html.nx-theme *,
html.nx-theme *::before,
html.nx-theme *::after {
    box-sizing: inherit;
}

html.nx-theme,
body.nx-theme {
    margin: 0;
    min-width: 0;
    background-color: var(--nx-color-surface);
    color: var(--nx-color-text);
    font-family: var(--nx-font-body);
    font-size: var(--nx-font-size);
    line-height: var(--nx-body-line-height);
}

html.nx-theme [hidden] {
    display: none !important;
}

html.nx-theme img,
html.nx-theme video,
html.nx-theme svg {
    max-width: 100%;
    height: auto;
}

html.nx-theme img {
    display: block;
}

/* Cover frames must beat the global `height: auto` or sliders/pageheaders
   leave a dark empty band below the photo. Logos stay contain. */
html.nx-theme .nx-slider img,
html.nx-theme .nx-slider__image,
html.nx-theme .nx-slider__media img,
html.nx-theme .nx-slider__slide img,
html.nx-theme .nx-page-header img,
html.nx-theme .nx-page-header__image,
html.nx-theme [class*="page-header"] img,
html.nx-theme [class*="page-header__image"],
html.nx-theme .nx-team__media img,
html.nx-theme .nx-product-card__media img,
html.nx-theme .nx-product-card__image,
html.nx-theme .nx-gallery-item__image,
html.nx-theme .nx-blog-card__media img,
html.nx-theme .nx-service-card__media img,
html.nx-theme .nx-reference-item__image {
    height: 100%;
    max-height: none;
    object-fit: cover;
    object-position: center;
}

html.nx-theme .nx-team__media img,
html.nx-theme .hc-team-card__media img {
    object-position: center top;
}

html.nx-theme .nx-header img,
html.nx-theme .nx-header__logo-image,
html.nx-theme [class*="header"] .nx-header__logo-image {
    width: 100%;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    object-position: center;
}

/* Footer logos stay compact — do not inherit header logo display area */
html.nx-theme .nx-footer img,
html.nx-theme .nx-footer__logo img,
html.nx-theme .nx-footer__logo-image {
    height: auto;
    max-height: 2.75rem;
    width: auto;
    max-width: 100%;
    object-fit: contain;
    object-position: left center;
}

html.nx-theme table {
    border-collapse: collapse;
    border-spacing: 0;
}

html.nx-theme button,
html.nx-theme input,
html.nx-theme select,
html.nx-theme textarea {
    font: inherit;
    letter-spacing: inherit;
}

html.nx-theme button {
    appearance: none;
    background: transparent;
    border: 0;
    padding: 0;
    color: inherit;
}

html.nx-theme h1,
html.nx-theme h2,
html.nx-theme h3,
html.nx-theme h4,
html.nx-theme h5,
html.nx-theme h6 {
    margin: 0;
}

.nx-theme .nx-main {
    display: block;
    min-width: 0;
    width: 100%;
}

/* -------------------------------------------------------------------------
   Section
   ------------------------------------------------------------------------- */

.nx-section {
    margin: 0;
    border: 0;
    position: relative;
    padding-top: var(--nx-section-y);
    padding-bottom: var(--nx-section-y);
    color: var(--nx-color-text);
    font-family: var(--nx-font-body);
    font-size: var(--nx-font-size);
    line-height: var(--nx-body-line-height);
}

@media (max-width: 767.98px) {
    .nx-section {
        padding-top: var(--nx-section-y-mobile);
        padding-bottom: var(--nx-section-y-mobile);
    }
}

.nx-section--light {
    background-color: var(--nx-color-surface);
    color: var(--nx-color-text);
}

.nx-section--soft {
    background-color: var(--nx-color-surface-soft);
    color: var(--nx-color-text);
}

.nx-section--dark {
    background-color: var(--nx-color-dark);
    color: var(--nx-color-light);
}

.nx-section--brand {
    background-color: var(--nx-color-brand);
    color: var(--nx-color-light);
}

.nx-section--gradient {
    background-color: var(--nx-color-brand);
    background-image: linear-gradient(135deg, var(--nx-color-brand) 0%, var(--nx-color-secondary) 100%);
    color: var(--nx-color-light);
}

.nx-section--dark .nx-heading,
.nx-section--dark .nx-heading--display,
.nx-section--dark .nx-heading--h1,
.nx-section--dark .nx-heading--h2,
.nx-section--dark .nx-heading--h3,
.nx-section--dark .nx-section-header__title,
.nx-section--brand .nx-heading,
.nx-section--brand .nx-heading--display,
.nx-section--brand .nx-heading--h1,
.nx-section--brand .nx-heading--h2,
.nx-section--brand .nx-heading--h3,
.nx-section--brand .nx-section-header__title,
.nx-section--gradient .nx-heading,
.nx-section--gradient .nx-heading--display,
.nx-section--gradient .nx-heading--h1,
.nx-section--gradient .nx-heading--h2,
.nx-section--gradient .nx-heading--h3,
.nx-section--gradient .nx-section-header__title {
    color: var(--nx-color-light);
}

.nx-section--dark .nx-text,
.nx-section--dark .nx-section-header__text,
.nx-section--brand .nx-text,
.nx-section--brand .nx-section-header__text,
.nx-section--gradient .nx-text,
.nx-section--gradient .nx-section-header__text {
    color: var(--nx-color-light);
}

.nx-section--dark .nx-text--muted,
.nx-section--dark .nx-eyebrow,
.nx-section--dark .nx-section-header__eyebrow,
.nx-section--brand .nx-text--muted,
.nx-section--brand .nx-eyebrow,
.nx-section--brand .nx-section-header__eyebrow,
.nx-section--gradient .nx-text--muted,
.nx-section--gradient .nx-eyebrow,
.nx-section--gradient .nx-section-header__eyebrow {
    color: rgba(255, 255, 255, 0.78);
}

.nx-section--brand .nx-btn--primary,
.nx-section--gradient .nx-btn--primary {
    background-color: var(--nx-color-light);
    color: var(--nx-color-brand);
    border-color: var(--nx-color-light);
}

.nx-section--brand .nx-btn--primary:hover,
.nx-section--gradient .nx-btn--primary:hover {
    opacity: 0.92;
}

.nx-section--dark .nx-btn--outline,
.nx-section--brand .nx-btn--outline,
.nx-section--gradient .nx-btn--outline,
.nx-section--dark .nx-btn--ghost,
.nx-section--brand .nx-btn--ghost,
.nx-section--gradient .nx-btn--ghost {
    color: var(--nx-color-light);
    border-color: var(--nx-color-light);
}

.nx-section--dark .nx-btn--outline:hover,
.nx-section--brand .nx-btn--outline:hover,
.nx-section--gradient .nx-btn--outline:hover {
    background-color: rgba(255, 255, 255, 0.12);
}

.nx-section--dark .nx-btn:focus-visible,
.nx-section--brand .nx-btn:focus-visible,
.nx-section--gradient .nx-btn:focus-visible {
    outline-color: var(--nx-color-light);
}

/* -------------------------------------------------------------------------
   Container
   ------------------------------------------------------------------------- */

.nx-container {
    width: 100%;
    max-width: var(--nx-container-width);
    margin-inline: auto;
    padding-left: 16px;
    padding-right: 16px;
}

@media (min-width: 576px) {
    .nx-container {
        padding-left: 20px;
        padding-right: 20px;
    }
}

@media (min-width: 768px) {
    .nx-container {
        padding-left: 24px;
        padding-right: 24px;
    }
}

@media (min-width: 992px) {
    .nx-container {
        padding-left: 32px;
        padding-right: 32px;
    }
}

.nx-content-width {
    max-width: var(--nx-content-max-width);
}

/* -------------------------------------------------------------------------
   Typography
   ------------------------------------------------------------------------- */

.nx-heading,
.nx-heading--display,
.nx-heading--h1,
.nx-heading--h2,
.nx-heading--h3,
.nx-section-header__title {
    margin: 0;
    font-family: var(--nx-font-heading);
    color: var(--nx-color-heading);
    line-height: var(--nx-heading-line-height);
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
}

.nx-heading {
    font-size: var(--nx-h2);
}

.nx-heading--display {
    font-size: clamp(2rem, 1.15rem + 3vw, var(--nx-h1));
}

.nx-heading--h1 {
    font-size: clamp(1.75rem, 1.1rem + 2.2vw, var(--nx-h1));
}

.nx-heading--h2 {
    font-size: clamp(1.5rem, 1.05rem + 1.5vw, var(--nx-h2));
}

.nx-heading--h3 {
    font-size: clamp(1.25rem, 1rem + 0.8vw, var(--nx-h3));
}

.nx-text,
.nx-section-header__text {
    margin: 0;
    font-family: var(--nx-font-body);
    font-size: var(--nx-font-size);
    line-height: var(--nx-body-line-height);
    color: var(--nx-color-text);
}

.nx-text--muted {
    color: var(--nx-color-muted);
}

.nx-eyebrow,
.nx-section-header__eyebrow {
    margin: 0;
    font-family: var(--nx-font-body);
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--nx-color-brand);
}

/* -------------------------------------------------------------------------
   Buttons
   ------------------------------------------------------------------------- */

.nx-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    min-height: 44px;
    padding: 0.7rem 1.25rem;
    border: 1px solid transparent;
    border-radius: var(--nx-button-radius);
    font-family: var(--nx-font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
    background-color: transparent;
    color: var(--nx-color-heading);
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease, opacity 0.2s ease;
}

.nx-btn:hover {
    text-decoration: none;
}

.nx-btn:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

.nx-btn--primary {
    background-color: var(--nx-color-brand);
    border-color: var(--nx-color-brand);
    color: var(--nx-color-light);
}

/* Beat InjectThemeSettingsCss `html.nx-theme a { color: link }` (link ≈ primary). */
html.nx-theme a.nx-btn.nx-btn--primary,
html.nx-theme a.nx-btn.nx-btn--primary:hover,
html.nx-theme a.nx-btn.nx-btn--primary:focus,
html.nx-theme a.nx-btn.nx-btn--primary:focus-visible,
.nx-btn.nx-btn--primary:hover,
.nx-btn.nx-btn--primary:focus,
.nx-btn.nx-btn--primary:focus-visible {
    color: var(--nx-color-light);
}

/* Beat `html.nx-theme button { background:transparent; border:0 }` for submit CTAs. */
html.nx-theme button.nx-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0.7rem 1.25rem;
    border: 1px solid transparent;
    border-radius: var(--nx-button-radius);
    font-family: var(--nx-font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
}

html.nx-theme button.nx-btn.nx-btn--primary,
html.nx-theme button.nx-btn.nx-btn--primary:hover,
html.nx-theme button.nx-btn.nx-btn--primary:focus,
html.nx-theme button.nx-btn.nx-btn--primary:focus-visible {
    background-color: var(--nx-color-brand);
    border-color: var(--nx-color-brand);
    color: var(--nx-color-light);
}

html.nx-theme button.nx-btn.nx-btn--secondary {
    background-color: var(--nx-color-secondary);
    border-color: var(--nx-color-secondary);
    color: var(--nx-color-light);
}

html.nx-theme button.nx-btn.nx-btn--outline {
    background-color: transparent;
    border-color: var(--nx-color-brand);
    color: var(--nx-color-brand);
}

html.nx-theme button.nx-btn.nx-btn--ghost {
    background-color: transparent;
    border-color: transparent;
    color: var(--nx-color-brand);
}

.nx-btn--primary:hover {
    opacity: 0.92;
    transform: translateY(-1px);
    box-shadow: 0 8px 18px rgba(0, 0, 0, 0.12);
}

html.nx-theme .nx-section--brand a.nx-btn.nx-btn--primary,
html.nx-theme .nx-section--gradient a.nx-btn.nx-btn--primary,
html.nx-theme .nx-section--brand a.nx-btn.nx-btn--primary:hover,
html.nx-theme .nx-section--gradient a.nx-btn.nx-btn--primary:hover,
html.nx-theme .nx-section--brand a.nx-btn.nx-btn--primary:focus,
html.nx-theme .nx-section--gradient a.nx-btn.nx-btn--primary:focus {
    color: var(--nx-color-brand);
}

.nx-btn__icon {
    width: 1.1em;
    height: 1.1em;
    flex-shrink: 0;
    fill: currentColor;
}

.nx-btn--secondary {
    background-color: var(--nx-color-secondary);
    border-color: var(--nx-color-secondary);
    color: var(--nx-color-light);
}

.nx-btn--secondary:hover {
    opacity: 0.92;
    transform: translateY(-1px);
}

.nx-btn--outline {
    background-color: transparent;
    border-color: var(--nx-color-brand);
    color: var(--nx-color-brand);
}

.nx-btn--outline:hover {
    background-color: var(--nx-color-surface-soft);
}

.nx-btn--ghost {
    background-color: transparent;
    border-color: transparent;
    color: var(--nx-color-brand);
}

.nx-btn--ghost:hover {
    background-color: var(--nx-color-surface-soft);
}

/* -------------------------------------------------------------------------
   Cards
   ------------------------------------------------------------------------- */

.nx-card {
    background-color: var(--nx-color-surface);
    border-radius: var(--nx-card-radius);
    padding: var(--nx-card-padding);
    color: var(--nx-color-text);
}

.nx-card--bordered {
    border: 1px solid var(--nx-color-border);
}

.nx-card--elevated {
    box-shadow: 0 10px 30px rgba(15, 23, 42, 0.08);
}

.nx-card--soft {
    background-color: var(--nx-color-surface-soft);
}

.nx-card--dark {
    background-color: var(--nx-color-dark);
    color: var(--nx-color-light);
}

.nx-card--dark .nx-heading,
.nx-card--dark .nx-heading--h1,
.nx-card--dark .nx-heading--h2,
.nx-card--dark .nx-heading--h3 {
    color: var(--nx-color-light);
}

.nx-card--dark .nx-text--muted {
    color: rgba(255, 255, 255, 0.78);
}

/* -------------------------------------------------------------------------
   Section header
   ------------------------------------------------------------------------- */

.nx-section-header {
    max-width: var(--nx-content-max-width);
    margin-bottom: 2rem;
}

.nx-section-header--center {
    margin-left: auto;
    margin-right: auto;
    text-align: center;
}

.nx-section-header__eyebrow {
    margin-bottom: 0.75rem;
}

.nx-section-header__title {
    margin-bottom: 0.75rem;
    font-size: clamp(1.5rem, 1.05rem + 1.5vw, var(--nx-h2));
}

.nx-section-header__text {
    margin: 0;
}

.nx-section-header__title:empty,
.nx-section-header__text:empty {
    display: none;
}

/* -------------------------------------------------------------------------
   Badge
   ------------------------------------------------------------------------- */

.nx-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 1.5rem;
    padding: 0.2rem 0.625rem;
    border-radius: var(--nx-radius);
    font-family: var(--nx-font-body);
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.02em;
    background-color: var(--nx-color-surface-soft);
    color: var(--nx-color-heading);
}

.nx-badge--brand {
    background-color: var(--nx-color-brand);
    color: var(--nx-color-light);
}

.nx-badge--soft {
    background-color: var(--nx-color-surface-soft);
    color: var(--nx-color-muted);
}

.nx-badge--dark {
    background-color: var(--nx-color-dark);
    color: var(--nx-color-light);
}

.nx-section--dark .nx-badge--soft,
.nx-section--brand .nx-badge--soft,
.nx-section--gradient .nx-badge--soft {
    background-color: rgba(255, 255, 255, 0.16);
    color: var(--nx-color-light);
}

/* -------------------------------------------------------------------------
   Utilities
   ------------------------------------------------------------------------- */

.nx-stack {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.nx-cluster {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
}

.nx-surface {
    background-color: var(--nx-color-surface);
}

.nx-surface-soft {
    background-color: var(--nx-color-surface-soft);
}

/* -------------------------------------------------------------------------
   Split / media
   ------------------------------------------------------------------------- */

.nx-split {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.75rem;
    align-items: center;
}

@media (min-width: 992px) {
    .nx-split {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: 2.5rem;
    }
}

.nx-split-copy {
    max-width: var(--nx-content-max-width);
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

@media (min-width: 992px) {
    .nx-split-copy {
        padding-right: 1.5rem;
    }
}

.nx-split-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.35rem;
}

.nx-split-media {
    margin-top: 2.5rem;
}

@media (min-width: 992px) {
    .nx-split-media {
        margin-top: 0;
    }
}

.nx-media {
    position: relative;
    display: block;
    overflow: hidden;
    margin: 0;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
}

.nx-media--rounded {
    border-radius: var(--nx-card-radius);
}

.nx-media--cover {
    aspect-ratio: 4 / 3;
}

.nx-media img {
    display: block;
    width: 100%;
    height: auto;
    object-fit: cover;
}

.nx-media--cover img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* -------------------------------------------------------------------------
   Hero
   ------------------------------------------------------------------------- */

.nx-hero {
    position: relative;
    overflow: hidden;
    margin: 0;
    border: 0;
    isolation: isolate;
    max-width: 100%;
    padding-block: calc(var(--nx-section-y) * 1.25);
    color: var(--nx-color-text);
    font-family: var(--nx-font-body);
    font-size: var(--nx-font-size);
    line-height: var(--nx-body-line-height);
    background-color: var(--nx-color-surface);
}

@media (max-width: 767.98px) {
    .nx-hero {
        padding-block: calc(var(--nx-section-y-mobile) * 1.1);
    }
}

.nx-hero::before,
.nx-hero::after {
    content: "";
    position: absolute;
    pointer-events: none;
    border-radius: 50%;
    z-index: 0;
}

.nx-hero::before {
    width: min(48vw, 34rem);
    height: min(48vw, 34rem);
    top: -18%;
    right: -12%;
    background: var(--nx-color-brand);
    opacity: 0.08;
}

.nx-hero::after {
    width: min(36vw, 24rem);
    height: min(36vw, 24rem);
    bottom: -22%;
    left: -10%;
    background: var(--nx-color-secondary);
    opacity: 0.1;
}

.nx-hero--soft {
    background-color: var(--nx-color-surface-soft);
    background-image: linear-gradient(165deg, var(--nx-color-surface) 0%, var(--nx-color-surface-soft) 58%, var(--nx-color-surface-soft) 100%);
}

.nx-hero--light {
    background-color: var(--nx-color-surface);
}

.nx-hero--dark {
    background-color: var(--nx-color-dark);
    color: var(--nx-color-light);
}

.nx-hero--dark::before,
.nx-hero--dark::after {
    opacity: 0.16;
}

.nx-hero__inner {
    position: relative;
    z-index: 1;
    min-width: 0;
    max-width: 100%;
}

.nx-hero--split .nx-hero__inner {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 2rem;
    align-items: center;
}

@media (min-width: 768px) {
    .nx-hero--split .nx-hero__inner {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: 2.25rem;
    }
}

@media (min-width: 992px) {
    .nx-hero--split .nx-hero__inner {
        grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
        gap: 3.5rem;
    }
}

.nx-hero__copy {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.25rem;
    min-width: 0;
    max-width: var(--nx-content-max-width);
}

.nx-hero__eyebrow {
    margin: 0;
    font-family: var(--nx-font-body);
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--nx-color-brand);
}

.nx-hero__eyebrow:empty {
    display: none;
}

.nx-hero__title {
    margin: 0;
    max-width: 100%;
    font-family: var(--nx-font-heading);
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    color: var(--nx-color-heading);
    overflow-wrap: break-word;
    font-size: clamp(var(--nx-h1), calc(var(--nx-h1) * 0.5 + 4vw), calc(var(--nx-h1) * 1.7));
}

.nx-hero__summary {
    margin: 0;
    max-width: 36em;
    font-family: var(--nx-font-body);
    font-size: var(--nx-font-size);
    line-height: var(--nx-body-line-height);
    color: var(--nx-color-text);
}

.nx-hero__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.35rem;
}

.nx-hero__media {
    min-width: 0;
    max-width: 100%;
}

.nx-hero--centered .nx-hero__media {
    margin-top: 2.5rem;
}

.nx-hero__figure {
    position: relative;
    overflow: hidden;
    margin: 0;
    aspect-ratio: 4 / 3;
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
    background-color: var(--nx-color-surface);
    box-shadow: 0 18px 48px rgba(15, 23, 42, 0.1);
}

.nx-hero--centered .nx-hero__figure {
    aspect-ratio: 16 / 9;
}

@media (min-width: 768px) {
    .nx-hero--split .nx-hero__figure {
        aspect-ratio: 5 / 4;
    }
}

@media (min-width: 992px) {
    .nx-hero--split .nx-hero__figure {
        aspect-ratio: 4 / 3;
    }
}

.nx-hero__image {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nx-hero--centered .nx-hero__copy {
    max-width: var(--nx-content-max-width);
    margin-inline: auto;
    align-items: center;
    text-align: center;
}

.nx-hero--centered .nx-hero__summary {
    margin-inline: auto;
}

.nx-hero--centered .nx-hero__actions {
    justify-content: center;
}

.nx-hero--centered .nx-hero__media {
    max-width: 52rem;
    margin-inline: auto;
}

.nx-hero--dark .nx-hero__title,
.nx-hero--dark .nx-hero__summary {
    color: var(--nx-color-light);
}

.nx-hero--dark .nx-hero__eyebrow {
    color: var(--nx-color-light);
    opacity: 0.82;
}

.nx-hero--dark .nx-hero__figure {
    border-color: rgba(255, 255, 255, 0.12);
    box-shadow: 0 18px 48px rgba(0, 0, 0, 0.28);
}

.nx-hero--dark .nx-btn:focus-visible {
    outline-color: var(--nx-color-light);
}

/* -------------------------------------------------------------------------
   Bento
   ------------------------------------------------------------------------- */

.nx-bento {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1rem;
    width: 100%;
    max-width: 100%;
    align-items: stretch;
}

.nx-bento__item {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    color: var(--nx-color-text);
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.nx-bento__item:nth-child(1) {
    background-color: var(--nx-color-surface-soft);
    background-image: linear-gradient(155deg, var(--nx-color-surface) 0%, var(--nx-color-surface-soft) 72%);
}

.nx-bento__item:nth-child(1)::before {
    content: "";
    position: absolute;
    top: -28%;
    right: -18%;
    width: min(42vw, 18rem);
    height: min(42vw, 18rem);
    border-radius: 50%;
    pointer-events: none;
    background: var(--nx-color-brand);
    opacity: 0.1;
    z-index: 0;
}

.nx-bento__item:nth-child(2),
.nx-bento__item:nth-child(5) {
    background-color: var(--nx-color-surface);
}

.nx-bento__item:nth-child(3) {
    background-color: var(--nx-color-dark);
    border-color: transparent;
    color: var(--nx-color-light);
}

.nx-bento__item:nth-child(4),
.nx-bento__item:nth-child(6) {
    background-color: var(--nx-color-surface-soft);
}

.nx-bento__item:hover {
    transform: translateY(-3px);
    border-color: var(--nx-color-brand);
    box-shadow: 0 14px 32px rgba(15, 23, 42, 0.08);
}

.nx-bento__item:nth-child(3):hover {
    border-color: var(--nx-color-secondary);
    box-shadow: 0 14px 32px rgba(0, 0, 0, 0.22);
}

.nx-bento__content {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.75rem;
    flex: 1 1 auto;
    min-width: 0;
    padding: var(--nx-card-padding);
}

.nx-bento__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    flex: 0 0 auto;
    border-radius: calc(var(--nx-radius) * 0.85);
    background-color: var(--nx-color-surface-soft);
    color: var(--nx-color-brand);
    font-size: 1.125rem;
}

.nx-bento__icon i {
    line-height: 1;
}

.nx-bento__item:nth-child(1) .nx-bento__icon {
    background-color: var(--nx-color-brand);
    color: var(--nx-color-light);
}

.nx-bento__item:nth-child(3) .nx-bento__icon {
    background-color: rgba(255, 255, 255, 0.1);
    color: var(--nx-color-light);
}

.nx-bento__title {
    margin: 0;
    max-width: 100%;
    font-family: var(--nx-font-heading);
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    color: var(--nx-color-heading);
    font-size: clamp(1.05rem, 0.95rem + 0.35vw, var(--nx-h4));
    overflow-wrap: break-word;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    overflow: hidden;
}

.nx-bento__item:nth-child(1) .nx-bento__title {
    font-size: clamp(1.2rem, 1rem + 0.55vw, var(--nx-h3));
}

.nx-bento__text {
    margin: 0;
    max-width: 40em;
    font-family: var(--nx-font-body);
    font-size: var(--nx-font-size);
    line-height: var(--nx-body-line-height);
    color: var(--nx-color-muted);
    overflow-wrap: break-word;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;
    overflow: hidden;
}

.nx-bento__item:nth-child(1) .nx-bento__text {
    -webkit-line-clamp: 6;
}

.nx-bento__item:nth-child(3) .nx-bento__title {
    color: var(--nx-color-light);
}

.nx-bento__item:nth-child(3) .nx-bento__text {
    color: rgba(255, 255, 255, 0.78);
}

.nx-bento__media {
    display: none;
    position: relative;
    z-index: 1;
    overflow: hidden;
    width: 100%;
    max-height: 11rem;
    aspect-ratio: 16 / 9;
    background-color: var(--nx-color-surface-soft);
}

.nx-bento__item:nth-child(1) .nx-bento__media {
    display: block;
}

.nx-bento__media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nx-bento__link {
    position: absolute;
    inset: 0;
    z-index: 2;
    border-radius: inherit;
    text-indent: -9999px;
    overflow: hidden;
}

.nx-bento__link:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

.nx-bento__item:nth-child(3) .nx-bento__link:focus-visible {
    outline-color: var(--nx-color-light);
}

@media (min-width: 768px) {
    .nx-bento {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: 1.15rem;
    }
}

@media (min-width: 992px) {
    .nx-bento {
        grid-template-columns: repeat(6, minmax(0, 1fr));
        gap: 1.25rem;
    }

    .nx-bento__item {
        grid-column: span 2;
    }

    .nx-bento__item:only-child {
        grid-column: span 6;
    }

    .nx-bento__item:nth-child(1):nth-last-child(2),
    .nx-bento__item:nth-child(1):nth-last-child(2) ~ .nx-bento__item {
        grid-column: span 3;
    }

    .nx-bento__item:nth-child(1):nth-last-child(3),
    .nx-bento__item:nth-child(1):nth-last-child(4),
    .nx-bento__item:nth-child(1):nth-last-child(5),
    .nx-bento__item:nth-child(1):nth-last-child(6) {
        grid-column: span 4;
        grid-row: span 2;
    }

    .nx-bento__item:nth-child(2):nth-last-child(2),
    .nx-bento__item:nth-child(3):nth-last-child(1),
    .nx-bento__item:nth-child(2):nth-last-child(3),
    .nx-bento__item:nth-child(3):nth-last-child(2),
    .nx-bento__item:nth-child(2):nth-last-child(4),
    .nx-bento__item:nth-child(3):nth-last-child(3),
    .nx-bento__item:nth-child(2):nth-last-child(5),
    .nx-bento__item:nth-child(3):nth-last-child(4) {
        grid-column: span 2;
    }

    .nx-bento__item:nth-child(4):nth-last-child(1) {
        grid-column: span 6;
    }

    .nx-bento__item:nth-child(4):nth-last-child(2),
    .nx-bento__item:nth-child(5):nth-last-child(1) {
        grid-column: span 3;
    }

    .nx-bento__item:nth-child(4):nth-last-child(3),
    .nx-bento__item:nth-child(5):nth-last-child(2),
    .nx-bento__item:nth-child(6):nth-last-child(1) {
        grid-column: span 2;
    }

    .nx-bento__item:nth-child(1):nth-last-child(n + 3) .nx-bento__media {
        max-height: none;
        min-height: 8rem;
        flex: 1 1 auto;
        aspect-ratio: auto;
    }
}

@media (max-width: 767.98px) {
    .nx-bento__item,
    .nx-bento__item:nth-child(1) {
        grid-column: auto;
        grid-row: auto;
        min-height: 0;
    }

    .nx-bento__item:nth-child(1) .nx-bento__media {
        max-height: 10rem;
        aspect-ratio: 16 / 9;
        flex: 0 0 auto;
    }
}

/* -------------------------------------------------------------------------
   Services
   ------------------------------------------------------------------------- */

.nx-services {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.15rem;
    width: 100%;
    max-width: 100%;
    align-items: stretch;
}

.nx-service-card {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: 0;
    max-width: 100%;
    height: 100%;
    overflow: hidden;
    padding: var(--nx-card-padding);
    color: var(--nx-color-text);
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.nx-service-card:nth-child(1) {
    background-color: var(--nx-color-surface);
    box-shadow: 0 1px 0 rgba(15, 23, 42, 0.02);
}

.nx-service-card:nth-child(3),
.nx-service-card:nth-child(6) {
    background-color: var(--nx-color-surface-soft);
}

.nx-service-card:nth-child(4) {
    background-color: var(--nx-color-dark);
    border-color: transparent;
    color: var(--nx-color-light);
}

.nx-service-card:hover {
    transform: translateY(-3px);
    border-color: var(--nx-color-brand);
    box-shadow: 0 12px 28px rgba(15, 23, 42, 0.07);
}

.nx-service-card:nth-child(4):hover {
    border-color: var(--nx-color-secondary);
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.2);
}

.nx-service-card__media {
    display: none;
    width: calc(100% + (var(--nx-card-padding) * 2));
    max-height: 8.5rem;
    margin: calc(var(--nx-card-padding) * -1) calc(var(--nx-card-padding) * -1) 1.15rem;
    overflow: hidden;
    background-color: var(--nx-color-surface-soft);
    aspect-ratio: 16 / 9;
}

.nx-service-card:nth-child(1) .nx-service-card__media {
    display: block;
}

.nx-service-card__media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nx-service-card__top {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.nx-service-card__top:empty,
.nx-service-card__top:not(:has(.nx-service-card__icon)):not(:has(.nx-service-card__number)) {
    display: none;
}

.nx-service-card__icon,
.nx-service-card__number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
}

.nx-service-card__icon {
    width: 2.5rem;
    height: 2.5rem;
    border-radius: calc(var(--nx-radius) * 0.75);
    background-color: var(--nx-color-surface-soft);
    color: var(--nx-color-brand);
    font-size: 1rem;
}

.nx-service-card__icon i {
    line-height: 1;
}

.nx-service-card:nth-child(1) .nx-service-card__icon {
    background-color: var(--nx-color-brand);
    color: var(--nx-color-light);
}

.nx-service-card:nth-child(4) .nx-service-card__icon {
    background-color: rgba(255, 255, 255, 0.1);
    color: var(--nx-color-light);
}

.nx-service-card__number {
    min-width: 2.5rem;
    font-family: var(--nx-font-heading);
    font-size: var(--nx-h4);
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: 1;
    color: var(--nx-color-brand);
}

.nx-service-card__title {
    margin: 0 0 0.65rem;
    max-width: 100%;
    font-family: var(--nx-font-heading);
    font-size: clamp(1rem, 0.92rem + 0.28vw, var(--nx-h5));
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    color: var(--nx-color-heading);
    overflow-wrap: break-word;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
}

.nx-service-card__text {
    margin: 0 0 1.15rem;
    max-width: 38em;
    font-family: var(--nx-font-body);
    font-size: var(--nx-font-size);
    line-height: var(--nx-body-line-height);
    color: var(--nx-color-muted);
    overflow-wrap: break-word;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;
    overflow: hidden;
}

.nx-service-card:nth-child(4) .nx-service-card__title {
    color: var(--nx-color-light);
}

.nx-service-card:nth-child(4) .nx-service-card__text {
    color: rgba(255, 255, 255, 0.78);
}

.nx-service-card__link {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: auto;
    padding-top: 0.15rem;
    font-family: var(--nx-font-body);
    font-size: 0.875rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--nx-color-brand);
    text-decoration: none;
}

.nx-service-card__link::before {
    content: "";
    position: absolute;
    inset: calc(var(--nx-card-padding) * -1);
    border-radius: var(--nx-card-radius);
    z-index: 0;
}

.nx-service-card__link::after {
    content: "→";
    display: inline-block;
    transition: transform 0.2s ease;
}

.nx-service-card:hover .nx-service-card__link::after {
    transform: translateX(4px);
}

.nx-service-card__link:focus-visible {
    outline: none;
}

.nx-service-card:has(.nx-service-card__link:focus-visible) {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

.nx-service-card:nth-child(4) .nx-service-card__link {
    color: var(--nx-color-light);
}

.nx-service-card:nth-child(4):has(.nx-service-card__link:focus-visible) {
    outline-color: var(--nx-color-light);
}

@media (min-width: 768px) {
    .nx-services {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.2rem;
    }
}

@media (min-width: 992px) {
    .nx-services {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.25rem;
    }

    .nx-service-card:nth-child(1) .nx-service-card__media {
        max-height: 9rem;
    }
}

@media (max-width: 767.98px) {
    .nx-service-card:nth-child(1) .nx-service-card__media {
        max-height: 8rem;
    }
}

/* -------------------------------------------------------------------------
   Products
   ------------------------------------------------------------------------- */

.nx-products {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.25rem;
    width: 100%;
    max-width: 100%;
    align-items: stretch;
}

.nx-product-card {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    max-width: 100%;
    height: 100%;
    overflow: hidden;
    color: var(--nx-color-text);
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.nx-product-card:hover {
    transform: translateY(-3px);
    border-color: var(--nx-color-brand);
    box-shadow: 0 14px 32px rgba(15, 23, 42, 0.08);
}

.nx-product-card__media {
    position: relative;
    overflow: hidden;
    width: 100%;
    aspect-ratio: 4 / 3;
    background-color: var(--nx-color-surface-soft);
}

.nx-product-card__media--empty {
    background-image: linear-gradient(165deg, var(--nx-color-surface-soft) 0%, var(--nx-color-surface) 100%);
}

.nx-product-card__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.35s ease;
}

.nx-product-card:hover .nx-product-card__image {
    transform: scale(1.035);
}

.nx-product-card__badge {
    position: absolute;
    top: 0.85rem;
    left: 0.85rem;
    z-index: 1;
    padding: 0.25rem 0.55rem;
    border-radius: calc(var(--nx-radius) * 0.7);
    background-color: var(--nx-color-brand);
    color: var(--nx-color-light);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.nx-product-card__body {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-width: 0;
    padding: var(--nx-card-padding);
}

.nx-product-card__meta:not(:has(.nx-product-card__brand)) {
    display: none;
}

.nx-product-card__brand {
    margin: 0 0 0.45rem;
    font-family: var(--nx-font-body);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--nx-color-brand);
}

.nx-product-card__title {
    margin: 0 0 0.55rem;
    max-width: 100%;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.05rem, 0.95rem + 0.3vw, var(--nx-h4));
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    color: var(--nx-color-heading);
    overflow-wrap: break-word;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
}

.nx-product-card__summary {
    margin: 0 0 0.85rem;
    max-width: 38em;
    font-family: var(--nx-font-body);
    font-size: var(--nx-font-size);
    line-height: var(--nx-body-line-height);
    color: var(--nx-color-muted);
    overflow-wrap: break-word;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    overflow: hidden;
}

.nx-product-card__price {
    margin: 0 0 0.85rem;
    font-family: var(--nx-font-heading);
    font-size: clamp(1rem, 0.95rem + 0.2vw, var(--nx-h5));
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    color: var(--nx-color-heading);
}

.nx-product-card__currency {
    font-weight: 600;
    color: var(--nx-color-muted);
}

.nx-product-card__price-old {
    margin-right: 0.35rem;
    font-weight: 500;
    color: var(--nx-color-muted);
    text-decoration: line-through;
}

.nx-product-card__actions {
    display: flex;
    align-items: center;
    margin-top: auto;
}

.nx-product-card__link {
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-family: var(--nx-font-body);
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--nx-color-brand);
    text-decoration: none;
}

.nx-product-card__link::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    border-radius: inherit;
}

.nx-product-card__link::after {
    content: "→";
    display: inline-block;
    transition: transform 0.2s ease;
}

.nx-product-card:hover .nx-product-card__link::after {
    transform: translateX(4px);
}

.nx-product-card__link:focus-visible {
    outline: none;
}

.nx-product-card:has(.nx-product-card__link:focus-visible) {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

@media (min-width: 768px) {
    .nx-products {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.35rem;
    }
}

@media (min-width: 992px) {
    .nx-products {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.5rem;
    }
}

/* -------------------------------------------------------------------------
   Pricing / packages
   ------------------------------------------------------------------------- */

.nx-pricing {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.25rem;
    width: 100%;
    max-width: 100%;
    align-items: stretch;
}

.nx-pricing-card {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    max-width: 100%;
    height: 100%;
    overflow: hidden;
    padding: var(--nx-card-padding);
    color: var(--nx-color-text);
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.nx-pricing-card::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background-color: transparent;
}

.nx-pricing-card--featured {
    border-color: var(--nx-color-brand);
    background-color: var(--nx-color-surface-soft);
    box-shadow: 0 16px 36px rgba(15, 23, 42, 0.08);
}

.nx-pricing-card--featured::before {
    background-color: var(--nx-color-brand);
}

.nx-pricing-card__head {
    min-width: 0;
    margin-bottom: 1rem;
}

.nx-pricing-card__eyebrow {
    margin: 0 0 0.4rem;
    font-family: var(--nx-font-body);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--nx-color-brand);
}

.nx-pricing-card__title {
    margin: 0 0 0.45rem;
    max-width: 100%;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.2rem, 1.05rem + 0.4vw, var(--nx-h3));
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    color: var(--nx-color-heading);
    overflow-wrap: break-word;
}

.nx-pricing-card__summary {
    margin: 0;
    max-width: 38em;
    font-family: var(--nx-font-body);
    font-size: var(--nx-font-size);
    line-height: var(--nx-body-line-height);
    color: var(--nx-color-muted);
    overflow-wrap: break-word;
}

.nx-pricing-card__price {
    margin: 0 0 1.15rem;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.35rem, 1.15rem + 0.55vw, var(--nx-h2));
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: 1.15;
    color: var(--nx-color-heading);
    overflow-wrap: anywhere;
}

.nx-pricing-card__price-value,
.nx-pricing-card__currency {
    display: inline;
}

.nx-pricing-card__currency {
    font-size: 0.55em;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: var(--nx-color-muted);
    vertical-align: 0.12em;
}

.nx-pricing-card__features,
.nx-pricing-card__feature {
    margin: 0 0 1.25rem;
    padding: 0;
    list-style: none;
}

.nx-pricing-card__features > li,
.nx-pricing-card__feature {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
    margin: 0 0 0.65rem;
    padding: 0;
    color: var(--nx-color-text);
    overflow-wrap: break-word;
}

.nx-pricing-card__features > li:last-child,
.nx-pricing-card__feature:last-child {
    margin-bottom: 0;
}

.nx-pricing-card__features > li::before,
.nx-pricing-card__check {
    content: "";
    flex: 0 0 auto;
    width: 0.55rem;
    height: 0.9rem;
    margin-top: 0.15rem;
    border-right: 2px solid var(--nx-color-brand);
    border-bottom: 2px solid var(--nx-color-brand);
    transform: rotate(45deg);
}

.nx-pricing-card__check {
    display: inline-block;
}

.nx-pricing-card__badge {
    position: absolute;
    top: 0.9rem;
    right: 0.9rem;
    z-index: 1;
    padding: 0.25rem 0.55rem;
    border-radius: calc(var(--nx-radius) * 0.7);
    background-color: var(--nx-color-brand);
    color: var(--nx-color-light);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.nx-pricing-card__actions {
    display: flex;
    align-items: stretch;
    margin-top: auto;
}

.nx-pricing-card__link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 2.75rem;
    padding: 0.7rem 1.1rem;
    border-radius: var(--nx-button-radius);
    background-color: var(--nx-color-brand);
    color: var(--nx-color-light);
    font-family: var(--nx-font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    text-align: center;
    text-decoration: none;
    transition: filter 0.2s ease, background-color 0.2s ease;
}

.nx-pricing-card__link:hover {
    color: var(--nx-color-light);
    filter: brightness(1.06);
}

.nx-pricing-card__link:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

@media (min-width: 768px) {
    .nx-pricing {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.35rem;
    }
}

@media (min-width: 992px) {
    .nx-pricing {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.5rem;
    }
}

@media (max-width: 767.98px) {
    .nx-pricing-card--featured {
        transform: none;
    }
}

/* -------------------------------------------------------------------------
   Product detail — Premium NX V2
   ------------------------------------------------------------------------- */

.nx-product-detail {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-product-detail__hero {
    padding-bottom: clamp(2.5rem, 5vw, 4rem);
}

.nx-product-detail__nav {
    margin: 0 0 1.75rem;
}

.nx-product-detail__crumbs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.65rem;
    margin: 0;
    padding: 0;
    list-style: none;
    font-family: var(--nx-font-body);
    font-size: 0.875rem;
    color: var(--nx-color-muted);
}

.nx-product-detail__crumbs li {
    display: inline-flex;
    align-items: center;
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
}

.nx-product-detail__crumbs li:not(:last-child)::after {
    content: "/";
    margin-left: 0.65rem;
    color: var(--nx-color-border);
}

.nx-product-detail__crumbs a {
    color: var(--nx-color-muted);
    text-decoration: none;
}

.nx-product-detail__crumbs a:hover {
    color: var(--nx-color-heading);
}

.nx-product-detail__crumbs a:focus-visible,
.nx-product-gallery__main-link:focus-visible,
.nx-product-gallery__thumb:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

.nx-product-detail__crumbs .active {
    color: var(--nx-color-heading);
}

.nx-product-detail__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 2rem;
    align-items: start;
    width: 100%;
    min-width: 0;
}

.nx-product-detail__gallery,
.nx-product-detail__media,
.nx-product-detail__info,
.nx-product-info {
    min-width: 0;
    max-width: 100%;
}

.nx-product-gallery {
    display: grid;
    gap: 0.9rem;
}

.nx-product-gallery__main {
    margin: 0;
    overflow: hidden;
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
    background-color: var(--nx-color-surface-soft);
}

.nx-product-gallery__main-link {
    display: block;
    line-height: 0;
}

.nx-product-gallery__main-image {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    object-position: center;
    background-color: var(--nx-color-surface-soft);
}

.nx-product-gallery__thumbs {
    display: flex;
    gap: 0.65rem;
    margin: 0;
    padding: 0.1rem 0;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}

.nx-product-gallery__thumb {
    appearance: none;
    flex: 0 0 auto;
    width: 4.75rem;
    height: 4.75rem;
    padding: 0;
    overflow: hidden;
    border: 1px solid var(--nx-color-border);
    border-radius: calc(var(--nx-radius) * 0.9);
    background-color: var(--nx-color-surface-soft);
    cursor: pointer;
    font: inherit;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.nx-product-gallery__thumb.is-active {
    border-color: var(--nx-color-brand);
    box-shadow: 0 0 0 1px var(--nx-color-brand);
}

.nx-product-gallery__thumb-image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nx-product-detail__info,
.nx-product-info {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    padding-top: 0.15rem;
}

.nx-product-detail__eyebrow,
.nx-product-info__eyebrow {
    margin: 0 0 0.65rem;
    font-family: var(--nx-font-body);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--nx-color-brand);
}

.nx-product-detail__title,
.nx-product-info__title {
    margin: 0 0 0.95rem;
    max-width: 100%;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.75rem, 1.4rem + 1.1vw, 2.65rem);
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: 1.15;
    color: var(--nx-color-heading);
    overflow-wrap: break-word;
}

.nx-product-detail__summary,
.nx-product-info__summary {
    margin: 0 0 1.35rem;
    max-width: 36em;
    font-family: var(--nx-font-body);
    font-size: 1.0625rem;
    line-height: 1.7;
    color: var(--nx-color-text);
    overflow-wrap: break-word;
}

.nx-product-detail__meta,
.nx-product-info__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 1rem;
    margin: 0 0 1.25rem;
    font-family: var(--nx-font-body);
    font-size: 0.875rem;
    color: var(--nx-color-muted);
}

.nx-product-detail__model,
.nx-product-detail__code,
.nx-product-info__model,
.nx-product-info__code {
    overflow-wrap: anywhere;
}

.nx-product-detail__price,
.nx-product-info__price {
    margin: 0 0 1.5rem;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.55rem, 1.25rem + 0.85vw, 2.1rem);
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: 1.15;
    color: var(--nx-color-heading);
    overflow-wrap: anywhere;
}

.nx-product-detail__price-value,
.nx-product-detail__currency,
.nx-product-info__price-value,
.nx-product-info__currency {
    display: inline;
}

.nx-product-detail__currency,
.nx-product-info__currency {
    font-size: 0.5em;
    font-weight: 600;
    letter-spacing: 0.05em;
    color: var(--nx-color-muted);
    vertical-align: 0.18em;
}

.nx-product-detail__features,
.nx-product-info__properties {
    width: 100%;
    margin: 0 0 1.65rem;
    padding: 0;
    list-style: none;
    border-top: 1px solid var(--nx-color-border);
}

.nx-product-detail__features > li,
.nx-product-info__properties > li {
    margin: 0;
    padding: 0.85rem 0;
    border-bottom: 1px solid var(--nx-color-border);
    color: var(--nx-color-text);
    font-size: 0.975rem;
    line-height: 1.5;
    overflow-wrap: break-word;
}

.nx-product-detail__features > li:last-child,
.nx-product-info__properties > li:last-child {
    padding-bottom: 0.15rem;
    border-bottom: 0;
}

.nx-product-detail__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.25rem;
    width: 100%;
}

.nx-product-detail__actions:empty {
    display: none;
}

.nx-product-detail__actions .nx-btn {
    min-height: 3.15rem;
}

.nx-product-content {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-product-content__inner {
    width: 100%;
    min-width: 0;
}

.nx-product-content__inner .nx-prose {
    width: 100%;
    max-width: min(820px, 100%);
    margin-left: auto;
    margin-right: auto;
}

.nx-product-detail__modules {
    display: block;
    width: 100%;
    max-width: 100%;
}

.nx-product-detail__modules:empty {
    display: none;
}

@media (min-width: 768px) {
    .nx-product-detail__grid {
        gap: 2.5rem;
    }

    .nx-product-gallery__thumb {
        width: 5.25rem;
        height: 5.25rem;
    }
}

@media (min-width: 992px) {
    .nx-product-detail__grid {
        grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
        gap: 3.25rem;
        align-items: start;
    }

    .nx-product-detail__grid--info-only {
        grid-template-columns: minmax(0, 34rem);
    }

    .nx-product-detail__info,
    .nx-product-info {
        position: sticky;
        top: 6.5rem;
        padding-top: 0.35rem;
    }

    .nx-product-gallery__main-image {
        aspect-ratio: 5 / 4;
    }
}

@media (max-width: 991.98px) {
    .nx-product-detail__info,
    .nx-product-info {
        position: static;
        top: auto;
    }
}

@media (max-width: 767.98px) {
    .nx-product-detail__hero {
        padding-bottom: 2rem;
    }

    .nx-product-detail__nav {
        margin-bottom: 1.25rem;
    }

    .nx-product-detail__grid {
        gap: 1.5rem;
    }

    .nx-product-detail__title,
    .nx-product-info__title {
        font-size: clamp(1.55rem, 1.2rem + 2vw, 2rem);
    }

    .nx-product-detail__summary,
    .nx-product-info__summary {
        font-size: 1rem;
        margin-bottom: 1.15rem;
    }

    .nx-product-gallery__main-image {
        aspect-ratio: 4 / 3;
    }

    .nx-product-detail__actions .nx-btn {
        width: 100%;
        justify-content: center;
    }
}

/* -------------------------------------------------------------------------
   Blog
   ------------------------------------------------------------------------- */

.nx-blog {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-blog-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.75rem;
    width: 100%;
    align-items: stretch;
}

.nx-blog-card,
.nx-blog-card--featured {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    max-width: 100%;
    height: 100%;
    overflow: hidden;
    color: var(--nx-color-text);
    background-color: transparent;
    border: 0;
}

.nx-blog-card__media {
    position: relative;
    overflow: hidden;
    width: 100%;
    aspect-ratio: 16 / 10;
    margin: 0 0 1.1rem;
    border-radius: var(--nx-card-radius);
    background-color: var(--nx-color-surface-soft);
}

.nx-blog-card__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nx-blog-card__body {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-width: 0;
    padding: 0;
}

.nx-blog-card__meta {
    margin: 0 0 0.45rem;
}

.nx-blog-card__date {
    font-family: var(--nx-font-body);
    font-size: 0.8125rem;
    letter-spacing: 0.04em;
    color: var(--nx-color-muted);
}

.nx-blog-card__title {
    margin: 0;
    max-width: 100%;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.15rem, 1.05rem + 0.45vw, var(--nx-h4));
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    color: var(--nx-color-heading);
    overflow-wrap: break-word;
}

.nx-blog-card__link {
    color: inherit;
    text-decoration: none;
    transition: color 0.2s ease;
}

.nx-blog-card__link::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
}

.nx-blog-card__link:hover {
    color: var(--nx-color-brand);
}

.nx-blog-card__link:focus-visible {
    outline: none;
}

.nx-blog-card:has(.nx-blog-card__link:focus-visible) {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 4px;
    border-radius: var(--nx-radius);
}

.nx-blog-card__summary {
    margin: 0.7rem 0 0;
    max-width: 42em;
    font-family: var(--nx-font-body);
    font-size: var(--nx-font-size);
    line-height: var(--nx-body-line-height);
    color: var(--nx-color-text);
    overflow-wrap: break-word;
}

.nx-blog-card__actions {
    margin-top: auto;
    padding-top: 0.85rem;
}

.nx-blog-card:first-child .nx-blog-card__title,
.nx-blog-card--featured .nx-blog-card__title {
    font-size: clamp(1.45rem, 1.2rem + 0.9vw, var(--nx-h2));
}

.nx-blog-card:first-child .nx-blog-card__media,
.nx-blog-card--featured .nx-blog-card__media {
    aspect-ratio: 16 / 9;
}

@media (min-width: 768px) {
    .nx-blog-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.75rem 1.5rem;
    }

    .nx-blog-card:first-child,
    .nx-blog-card--featured {
        grid-column: 1 / -1;
    }
}

@media (min-width: 992px) {
    .nx-blog-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 2rem 1.5rem;
    }

    .nx-blog-card:first-child,
    .nx-blog-card--featured {
        grid-column: span 2;
    }

    .nx-blog-card:only-child {
        grid-column: 1 / -1;
    }
}

/* -------------------------------------------------------------------------
   Article — Premium Blog Detail
   ------------------------------------------------------------------------- */

.nx-article {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-article__nav,
.nx-article__header,
.nx-article__hero,
.nx-article__content {
    width: 100%;
    max-width: var(--nx-content-max-width);
    margin-left: auto;
    margin-right: auto;
    min-width: 0;
}

.nx-article__nav {
    margin-bottom: 1.75rem;
}

.nx-article__crumbs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.55rem;
    margin: 0;
    padding: 0;
    list-style: none;
    font-family: var(--nx-font-body);
    font-size: 0.875rem;
    color: var(--nx-color-muted);
}

.nx-article__crumbs li {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    max-width: 100%;
    overflow-wrap: anywhere;
}

.nx-article__crumbs li + li::before {
    content: "/";
    color: var(--nx-color-border);
    font-weight: 400;
}

.nx-article__crumbs a {
    color: var(--nx-color-muted);
    text-decoration: none;
}

.nx-article__crumbs a:hover {
    color: var(--nx-color-heading);
}

.nx-article__crumbs a:focus-visible,
.nx-article__content a:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

.nx-article__crumbs .active {
    color: var(--nx-color-heading);
}

.nx-article__header {
    margin-bottom: 1.75rem;
}

.nx-article__meta {
    margin: 0 0 0.7rem;
}

.nx-article__date {
    font-family: var(--nx-font-body);
    font-size: 0.875rem;
    letter-spacing: 0.04em;
    color: var(--nx-color-muted);
}

.nx-article__title {
    margin: 0;
    max-width: 100%;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.7rem, 1.35rem + 1.35vw, var(--nx-h1));
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    color: var(--nx-color-heading);
    overflow-wrap: break-word;
}

.nx-article__lead {
    margin: 1rem 0 0;
    max-width: 42em;
    font-family: var(--nx-font-body);
    font-size: clamp(1.05rem, 1rem + 0.2vw, 1.2rem);
    line-height: var(--nx-body-line-height);
    color: var(--nx-color-text);
    overflow-wrap: break-word;
}

.nx-article__hero {
    margin: 0 0 2rem;
    overflow: hidden;
    border-radius: var(--nx-card-radius);
    background-color: var(--nx-color-surface-soft);
}

.nx-article__image {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    background-color: var(--nx-color-surface-soft);
}

.nx-article__content {
    color: var(--nx-color-text);
    font-family: var(--nx-font-body);
    font-size: var(--nx-font-size);
    line-height: var(--nx-body-line-height);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.nx-article__content > *:first-child {
    margin-top: 0;
}

.nx-article__content > *:last-child {
    margin-bottom: 0;
}

.nx-article__content h1,
.nx-article__content h2,
.nx-article__content h3,
.nx-article__content h4,
.nx-article__content h5,
.nx-article__content h6 {
    margin: 1.75rem 0 0.75rem;
    font-family: var(--nx-font-heading);
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    color: var(--nx-color-heading);
    overflow-wrap: break-word;
}

.nx-article__content h1 { font-size: var(--nx-h2); }
.nx-article__content h2 { font-size: var(--nx-h3); }
.nx-article__content h3 { font-size: var(--nx-h4); }
.nx-article__content h4,
.nx-article__content h5,
.nx-article__content h6 { font-size: var(--nx-h5); }

.nx-article__content p {
    margin: 0 0 1.15rem;
}

.nx-article__content ul,
.nx-article__content ol {
    margin: 0 0 1.15rem;
    padding-left: 1.35rem;
}

.nx-article__content li {
    margin: 0 0 0.4rem;
}

.nx-article__content li > ul,
.nx-article__content li > ol {
    margin: 0.4rem 0 0;
}

.nx-article__content strong {
    font-weight: 700;
    color: var(--nx-color-heading);
}

.nx-article__content a {
    color: var(--nx-color-link);
    text-decoration: underline;
    text-underline-offset: 0.18em;
    text-decoration-thickness: 1px;
    overflow-wrap: anywhere;
}

.nx-article__content a:hover {
    color: var(--nx-color-brand);
}

.nx-article__content blockquote {
    margin: 1.5rem 0;
    padding: 0.15rem 0 0.15rem 1.2rem;
    border-left: 3px solid var(--nx-color-brand);
    color: var(--nx-color-heading);
    font-size: 1.05em;
}

.nx-article__content blockquote p:last-child {
    margin-bottom: 0;
}

.nx-article__content img {
    display: block;
    max-width: 100%;
    height: auto;
    margin: 1.25rem 0;
    border-radius: var(--nx-radius);
}

.nx-article__content figure {
    margin: 1.25rem 0;
    max-width: 100%;
}

.nx-article__content figure img {
    margin: 0;
}

.nx-article__content figcaption {
    margin-top: 0.55rem;
    font-size: 0.875rem;
    color: var(--nx-color-muted);
}

.nx-article__content hr {
    margin: 2rem 0;
    border: 0;
    border-top: 1px solid var(--nx-color-border);
}

.nx-article__content table {
    width: 100%;
    max-width: 100%;
    margin: 1.25rem 0;
    border-collapse: collapse;
    overflow-x: auto;
}

.nx-article__content th,
.nx-article__content td {
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--nx-color-border);
    text-align: left;
    vertical-align: top;
    overflow-wrap: anywhere;
}

.nx-article__content th {
    background-color: var(--nx-color-surface);
    color: var(--nx-color-heading);
    font-weight: 600;
}

.nx-article__modules {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-article__modules:empty,
.nx-article__footer:empty {
    display: none;
}

.nx-article__footer {
    width: 100%;
    max-width: var(--nx-content-max-width);
    margin: 0 auto;
}

/* -------------------------------------------------------------------------
   Content detail — Premium editorial page (V2)
   ------------------------------------------------------------------------- */

.nx-content-detail {
    display: block;
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-content-detail__header,
.nx-content-detail__body,
.nx-content-detail__modules {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-content-detail__header {
    margin: 0;
    padding-top: 1.75rem;
}

.nx-content-detail__media {
    margin: 0 auto;
    max-width: min(1100px, 100%);
    min-width: 0;
}

.nx-content-detail__media img {
    display: block;
    width: 100%;
    height: auto;
    max-width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    object-position: center;
    border-radius: var(--nx-card-radius);
    background-color: var(--nx-color-surface-soft);
}

.nx-content-detail__body {
    padding-top: 3rem;
    padding-bottom: 4.25rem;
}

.nx-content-detail__header + .nx-content-detail__body {
    padding-top: 2.75rem;
}

.nx-content-shell {
    width: 100%;
    min-width: 0;
}

/* Editorial reading column; modules stay full NX section width */
.nx-content-shell .nx-prose {
    width: 100%;
    max-width: min(820px, 100%);
    margin-left: auto;
    margin-right: auto;
}

.nx-content-detail__modules {
    display: block;
    width: 100%;
    max-width: 100%;
}

.nx-content-detail__modules:empty {
    display: none;
}

.nx-content-detail__modules .nx-section:first-child {
    padding-top: calc(var(--nx-section-y) * 0.85);
}

@media (max-width: 767.98px) {
    .nx-content-detail__header {
        padding-top: 1.1rem;
    }

    .nx-content-detail__media {
        max-width: 100%;
    }

    .nx-content-detail__media img {
        border-radius: calc(var(--nx-card-radius) * 0.85);
        aspect-ratio: 4 / 3;
    }

    .nx-content-detail__body {
        padding-top: 2rem;
        padding-bottom: 2.75rem;
    }

    .nx-content-detail__header + .nx-content-detail__body {
        padding-top: 1.85rem;
    }
}

/* -------------------------------------------------------------------------
   Prose — scoped rich-text typography (V2)
   ------------------------------------------------------------------------- */

.nx-prose {
    min-width: 0;
    max-width: 100%;
    color: var(--nx-color-text);
    font-family: var(--nx-font-body);
    font-size: 1.125rem;
    line-height: 1.8;
    overflow-wrap: break-word;
    word-wrap: break-word;
}

.nx-prose > *:first-child {
    margin-top: 0;
}

.nx-prose > *:last-child {
    margin-bottom: 0;
}

.nx-prose h2,
.nx-prose h3,
.nx-prose h4 {
    margin: 2.75rem 0 1rem;
    font-family: var(--nx-font-heading);
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    color: var(--nx-color-heading);
    overflow-wrap: break-word;
}

.nx-prose h2 {
    font-size: clamp(1.55rem, 1.25rem + 0.85vw, var(--nx-h2));
}

.nx-prose h3 {
    font-size: clamp(1.25rem, 1.1rem + 0.45vw, var(--nx-h3));
}

.nx-prose h4 {
    font-size: var(--nx-h4);
}

.nx-prose p {
    margin: 0 0 1.5rem;
}

.nx-prose ul,
.nx-prose ol {
    margin: 0 0 1.6rem;
    padding-left: 1.5rem;
}

.nx-prose ul {
    list-style: disc;
}

.nx-prose ol {
    list-style: decimal;
}

.nx-prose li {
    margin: 0 0 0.7rem;
    padding-left: 0.3rem;
    line-height: 1.7;
}

.nx-prose li::marker {
    color: var(--nx-color-brand);
}

.nx-prose li > ul,
.nx-prose li > ol {
    margin: 0.65rem 0 0.25rem;
}

.nx-prose strong {
    font-weight: 700;
    color: var(--nx-color-heading);
}

.nx-prose a {
    color: var(--nx-color-link);
    text-decoration: underline;
    text-underline-offset: 0.2em;
    text-decoration-thickness: 1px;
    overflow-wrap: anywhere;
    transition: color 0.15s ease;
}

.nx-prose a:hover {
    color: var(--nx-color-brand);
}

.nx-prose a:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

.nx-prose blockquote {
    margin: 2.4rem 0;
    padding: 1.25rem 1.35rem 1.25rem 1.5rem;
    border-left: 3px solid var(--nx-color-brand);
    border-radius: 0 var(--nx-radius) var(--nx-radius) 0;
    background-color: var(--nx-color-surface-soft);
    color: var(--nx-color-heading);
    font-size: 1.05em;
    line-height: 1.7;
}

.nx-prose blockquote p:last-child {
    margin-bottom: 0;
}

.nx-prose img {
    display: block;
    max-width: 100%;
    height: auto;
    margin: 2.15rem 0;
    border-radius: var(--nx-radius);
}

.nx-prose figure {
    margin: 2.15rem 0;
    max-width: 100%;
}

.nx-prose figure img {
    margin: 0;
}

.nx-prose figcaption {
    margin-top: 0.75rem;
    font-size: 0.875rem;
    line-height: 1.5;
    color: var(--nx-color-muted);
}

.nx-prose hr {
    margin: 3rem 0;
    border: 0;
    border-top: 1px solid var(--nx-color-border);
}

.nx-prose table {
    display: block;
    width: 100%;
    max-width: 100%;
    margin: 2rem 0;
    border-collapse: collapse;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.nx-prose thead {
    background-color: var(--nx-color-surface-soft);
}

.nx-prose tbody {
    background-color: transparent;
}

.nx-prose th,
.nx-prose td {
    padding: 0.85rem 1rem;
    border: 1px solid var(--nx-color-border);
    text-align: left;
    vertical-align: top;
    overflow-wrap: anywhere;
}

.nx-prose th {
    color: var(--nx-color-heading);
    font-weight: 650;
    white-space: nowrap;
}

.nx-prose iframe,
.nx-prose embed,
.nx-prose object,
.nx-prose video {
    display: block;
    max-width: 100%;
    margin: 2.15rem 0;
}

@media (max-width: 767.98px) {
    .nx-prose {
        font-size: 1.0625rem;
        line-height: 1.75;
    }

    .nx-prose h2,
    .nx-prose h3,
    .nx-prose h4 {
        margin-top: 2.1rem;
    }

    .nx-prose blockquote {
        margin: 1.85rem 0;
        padding: 1rem 1rem 1rem 1.15rem;
    }

    .nx-prose ul,
    .nx-prose ol {
        padding-left: 1.25rem;
    }

    .nx-prose th {
        white-space: normal;
    }
}

/* -------------------------------------------------------------------------
   Files / Downloads
   ------------------------------------------------------------------------- */

.nx-files {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-files__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1rem;
    width: 100%;
    align-items: stretch;
}

.nx-file-card {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    min-width: 0;
    max-width: 100%;
    height: 100%;
    padding: 1.15rem 1.2rem;
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
    background-color: var(--nx-color-surface);
    color: var(--nx-color-text);
}

.nx-file-card__icon {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: var(--nx-radius);
    background-color: var(--nx-color-surface-soft);
    color: var(--nx-color-brand);
    font-size: 1.35rem;
}

.nx-file-card__body {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-width: 0;
    gap: 0.45rem;
}

.nx-file-card__title {
    margin: 0;
    max-width: 100%;
    font-family: var(--nx-font-heading);
    font-size: clamp(1rem, 0.95rem + 0.25vw, var(--nx-h5));
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: 1.3;
    color: var(--nx-color-heading);
    overflow-wrap: anywhere;
}

.nx-file-card__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem 0.75rem;
    margin: 0;
}

.nx-file-card__type,
.nx-file-card__size {
    font-family: var(--nx-font-body);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--nx-color-muted);
}

.nx-file-card__actions {
    margin-top: 0.35rem;
}

.nx-file-card__link {
    width: auto;
    max-width: 100%;
    min-height: 40px;
    padding: 0.55rem 1rem;
    white-space: nowrap;
}

.nx-file-card__link:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

@media (min-width: 768px) {
    .nx-files__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.15rem;
    }
}

@media (min-width: 992px) {
    .nx-files__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.25rem;
    }
}

/* -------------------------------------------------------------------------
   Solutions
   ------------------------------------------------------------------------- */

.nx-solutions {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-solutions__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
    width: 100%;
    counter-reset: nx-solution;
    border-top: 1px solid var(--nx-color-border);
}

.nx-solution {
    position: relative;
    display: grid;
    grid-template-columns: auto auto minmax(0, 1fr);
    gap: 0.85rem 1rem;
    align-items: start;
    min-width: 0;
    max-width: 100%;
    padding: 1.35rem 0.15rem 1.35rem 0;
    border-bottom: 1px solid var(--nx-color-border);
    background: transparent;
    counter-increment: nx-solution;
    transition: border-color 0.2s ease, background-color 0.2s ease;
}

.nx-solution:hover {
    border-bottom-color: var(--nx-color-brand);
}

.nx-solution__index {
    flex: 0 0 auto;
    min-width: 2.1rem;
    font-family: var(--nx-font-heading);
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    line-height: 1.4;
    color: var(--nx-color-muted);
}

.nx-solution__index::before {
    content: counter(nx-solution, decimal-leading-zero);
}

.nx-solution__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    color: var(--nx-color-brand);
    font-size: 1rem;
}

.nx-solution:not(:has(.nx-solution__icon)) {
    grid-template-columns: auto minmax(0, 1fr);
}

.nx-solution__body {
    min-width: 0;
    padding-right: 1.75rem;
}

.nx-solution__title {
    margin: 0;
    max-width: 100%;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.05rem, 0.95rem + 0.4vw, var(--nx-h4));
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    color: var(--nx-color-heading);
    overflow-wrap: anywhere;
}

.nx-solution__summary {
    margin: 0.45rem 0 0;
    max-width: 42em;
    font-family: var(--nx-font-body);
    font-size: var(--nx-font-size);
    line-height: var(--nx-body-line-height);
    color: var(--nx-color-text);
    overflow-wrap: break-word;
}

.nx-solution__media {
    display: none;
}

.nx-solution__image {
    display: block;
    width: 4.5rem;
    height: 4.5rem;
    object-fit: cover;
    border-radius: var(--nx-radius);
    background-color: var(--nx-color-surface-soft);
}

.nx-solution__link {
    position: absolute;
    inset: 0;
    z-index: 1;
    color: inherit;
    text-decoration: none;
}

.nx-solution__link::after {
    content: "→";
    position: absolute;
    top: 1.35rem;
    right: 0.1rem;
    font-size: 1.05rem;
    line-height: 1;
    color: var(--nx-color-brand);
    transition: transform 0.2s ease;
}

.nx-solution:hover .nx-solution__link::after {
    transform: translateX(4px);
}

.nx-solution__link:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 4px;
}

@media (min-width: 768px) {
    .nx-solution:has(.nx-solution__media) {
        grid-template-columns: auto auto minmax(0, 1fr) auto;
    }

    .nx-solution:has(.nx-solution__media):not(:has(.nx-solution__icon)) {
        grid-template-columns: auto minmax(0, 1fr) auto;
    }

    .nx-solution__media {
        display: block;
        width: 4.5rem;
        margin-right: 1.5rem;
    }
}

@media (min-width: 992px) {
    .nx-solutions__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: 3rem;
        border-top: 0;
    }

    .nx-solution:nth-child(odd) {
        border-top: 1px solid var(--nx-color-border);
    }

    .nx-solution:nth-child(even) {
        border-top: 1px solid var(--nx-color-border);
    }
}

/* -------------------------------------------------------------------------
   Announcements
   ------------------------------------------------------------------------- */

.nx-announcements {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-announcements__list {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
    width: 100%;
    border-top: 1px solid var(--nx-color-border);
}

.nx-announcement {
    position: relative;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 1rem 1.25rem;
    align-items: start;
    min-width: 0;
    max-width: 100%;
    padding: 1.25rem 0.1rem 1.25rem 0;
    border-bottom: 1px solid var(--nx-color-border);
    background: transparent;
    transition: border-color 0.2s ease;
}

.nx-announcement:hover {
    border-bottom-color: var(--nx-color-brand);
}

.nx-announcement__date {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: 4.25rem;
    color: var(--nx-color-heading);
    line-height: 1.15;
}

.nx-announcement__date-day {
    font-family: var(--nx-font-heading);
    font-size: clamp(1.45rem, 1.2rem + 0.6vw, 1.85rem);
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
}

.nx-announcement__date-month {
    margin-top: 0.2rem;
    font-family: var(--nx-font-body);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--nx-color-muted);
}

.nx-announcement__body {
    min-width: 0;
    padding-right: 1.5rem;
}

.nx-announcement__title {
    margin: 0;
    max-width: 100%;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.05rem, 0.95rem + 0.35vw, var(--nx-h4));
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    color: var(--nx-color-heading);
    overflow-wrap: anywhere;
}

.nx-announcement__summary {
    margin: 0.4rem 0 0;
    max-width: 46em;
    font-family: var(--nx-font-body);
    font-size: 0.9375rem;
    line-height: var(--nx-body-line-height);
    color: var(--nx-color-text);
    overflow-wrap: break-word;
}

.nx-announcement__media {
    display: none;
}

.nx-announcement__image {
    display: block;
    width: 4.25rem;
    height: 4.25rem;
    object-fit: cover;
    border-radius: var(--nx-radius);
    background-color: var(--nx-color-surface-soft);
}

.nx-announcement__link {
    position: absolute;
    inset: 0;
    z-index: 1;
    color: inherit;
    text-decoration: none;
}

.nx-announcement__link::after {
    content: "→";
    position: absolute;
    top: 1.35rem;
    right: 0.1rem;
    color: var(--nx-color-brand);
    transition: transform 0.2s ease;
}

.nx-announcement:hover .nx-announcement__link::after {
    transform: translateX(4px);
}

.nx-announcement__link:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 4px;
}

@media (min-width: 768px) {
    .nx-announcement:has(.nx-announcement__media) {
        grid-template-columns: auto minmax(0, 1fr) auto;
    }

    .nx-announcement__media {
        display: block;
        margin-right: 1.5rem;
    }
}

@media (min-width: 1200px) {
    .nx-announcements__list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: 3rem;
        border-top: 0;
    }

    .nx-announcement {
        border-top: 1px solid var(--nx-color-border);
    }
}

/* -------------------------------------------------------------------------
   Page header + breadcrumb
   ------------------------------------------------------------------------- */

.nx-page-header {
    position: relative;
    isolation: isolate;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    margin: 0;
    overflow: hidden;
    padding-top: calc(var(--nx-section-y) * 0.5);
    padding-bottom: calc(var(--nx-section-y) * 0.5);
    background-color: var(--nx-color-surface-soft);
    color: var(--nx-color-text);
    font-family: var(--nx-font-body);
}

@media (max-width: 767.98px) {
    .nx-page-header {
        padding-top: calc(var(--nx-section-y-mobile) * 0.55);
        padding-bottom: calc(var(--nx-section-y-mobile) * 0.55);
    }
}

.nx-page-header--light {
    background-color: var(--nx-color-surface);
}

.nx-page-header--soft {
    background-color: var(--nx-color-surface-soft);
}

.nx-page-header--dark {
    background-color: var(--nx-color-dark);
    color: var(--nx-color-light);
}

.nx-page-header--brand {
    background-color: var(--nx-color-brand);
    color: var(--nx-color-light);
}

.nx-page-header__inner {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: 1.15rem;
    width: 100%;
    max-width: var(--nx-container-width);
    min-width: 0;
}

.nx-page-header__content {
    max-width: 46rem;
    min-width: 0;
}

.nx-page-header__eyebrow {
    margin: 0 0 0.45rem;
    color: var(--nx-color-muted);
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.nx-page-header__title {
    margin: 0;
    color: var(--nx-color-heading);
    font-family: var(--nx-font-heading);
    font-size: clamp(1.65rem, 1.15rem + 1.7vw, var(--nx-h1));
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    overflow-wrap: anywhere;
}

.nx-page-header__summary {
    margin: 0.85rem 0 0;
    max-width: 38rem;
    color: var(--nx-color-text);
    font-size: 1.02rem;
    line-height: var(--nx-body-line-height);
    overflow-wrap: anywhere;
}

.nx-page-header__summary:empty,
.nx-page-header__eyebrow:empty {
    display: none;
}

.nx-page-header__media {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
}

.nx-page-header__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.nx-page-header__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to right, rgba(33, 37, 41, 0.72), rgba(33, 37, 41, 0.38));
}

.nx-page-header--media {
    background-color: var(--nx-color-dark);
    color: var(--nx-color-light);
}

.nx-page-header--dark .nx-page-header__title,
.nx-page-header--brand .nx-page-header__title,
.nx-page-header--media .nx-page-header__title {
    color: var(--nx-color-light);
}

.nx-page-header--dark .nx-page-header__summary,
.nx-page-header--brand .nx-page-header__summary,
.nx-page-header--media .nx-page-header__summary,
.nx-page-header--dark .nx-page-header__eyebrow,
.nx-page-header--brand .nx-page-header__eyebrow,
.nx-page-header--media .nx-page-header__eyebrow {
    color: var(--nx-color-light);
    opacity: 0.88;
}

.nx-page-header--dark .nx-breadcrumb,
.nx-page-header--brand .nx-breadcrumb,
.nx-page-header--media .nx-breadcrumb,
.nx-page-header--dark .nx-breadcrumb__link,
.nx-page-header--brand .nx-breadcrumb__link,
.nx-page-header--media .nx-breadcrumb__link,
.nx-page-header--dark .nx-breadcrumb__current,
.nx-page-header--brand .nx-breadcrumb__current,
.nx-page-header--media .nx-breadcrumb__current {
    color: var(--nx-color-light);
}

.nx-page-header--dark .nx-breadcrumb__list > li + li::before,
.nx-page-header--brand .nx-breadcrumb__list > li + li::before,
.nx-page-header--media .nx-breadcrumb__list > li + li::before {
    color: rgba(255, 255, 255, 0.45);
}

.nx-breadcrumb {
    min-width: 0;
    max-width: 100%;
}

.nx-breadcrumb__list {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem 0.15rem;
    margin: 0;
    padding: 0;
    list-style: none;
    max-width: 100%;
    font-size: 0.875rem;
    line-height: 1.4;
    color: var(--nx-color-muted);
}

.nx-breadcrumb__item {
    display: inline-flex;
    align-items: center;
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
}

.nx-breadcrumb__list > li + li::before {
    content: "/";
    margin: 0 0.55rem 0 0.4rem;
    color: var(--nx-color-border);
    pointer-events: none;
}

.nx-breadcrumb__link {
    color: var(--nx-color-muted);
    text-decoration: none;
}

.nx-breadcrumb__link:hover {
    color: var(--nx-color-heading);
}

.nx-breadcrumb__link:focus-visible,
.nx-page-header__title:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

.nx-page-header--dark .nx-breadcrumb__link:hover,
.nx-page-header--brand .nx-breadcrumb__link:hover,
.nx-page-header--media .nx-breadcrumb__link:hover,
.nx-page-header--dark .nx-breadcrumb__link:focus-visible,
.nx-page-header--brand .nx-breadcrumb__link:focus-visible,
.nx-page-header--media .nx-breadcrumb__link:focus-visible {
    color: var(--nx-color-light);
}

.nx-breadcrumb__current {
    color: var(--nx-color-heading);
    font-weight: 600;
}

.nx-page-header--dark .nx-breadcrumb__link:focus-visible,
.nx-page-header--brand .nx-breadcrumb__link:focus-visible,
.nx-page-header--media .nx-breadcrumb__link:focus-visible {
    outline-color: var(--nx-color-light);
}

/* Content pages: keep PageHeader typographic; featured media lives in .nx-content-detail */
.nx-content-page .nx-page-header {
    padding-bottom: 1.35rem;
    background-color: var(--nx-color-surface);
    text-align: left;
}

.nx-content-page .nx-page-header--soft {
    background-color: var(--nx-color-surface);
}

.nx-content-page .nx-page-header__media,
.nx-content-page .nx-page-header__overlay {
    display: none;
}

.nx-content-page .nx-page-header--media {
    background-color: var(--nx-color-surface);
    color: var(--nx-color-text);
}

.nx-content-page .nx-page-header--media .nx-page-header__title {
    color: var(--nx-color-heading);
}

.nx-content-page .nx-page-header--media .nx-page-header__summary,
.nx-content-page .nx-page-header--media .nx-page-header__eyebrow {
    color: var(--nx-color-text);
    opacity: 1;
}

.nx-content-page .nx-page-header--media .nx-breadcrumb,
.nx-content-page .nx-page-header--media .nx-breadcrumb__link {
    color: var(--nx-color-muted);
}

.nx-content-page .nx-page-header--media .nx-breadcrumb__current {
    color: var(--nx-color-heading);
}

.nx-content-page .nx-page-header--media .nx-breadcrumb__list > li + li::before {
    color: var(--nx-color-border);
}

.nx-content-page .nx-breadcrumb,
.nx-content-page .nx-page-header__content {
    max-width: min(820px, 100%);
    margin-left: auto;
    margin-right: auto;
}

.nx-content-page .nx-page-header__title {
    font-size: clamp(2rem, 1.35rem + 2.2vw, 3.15rem);
    letter-spacing: -0.02em;
    overflow-wrap: break-word;
}

.nx-content-page .nx-page-header__summary {
    margin-top: 1rem;
    max-width: 40rem;
    font-size: clamp(1.05rem, 0.98rem + 0.3vw, 1.22rem);
    line-height: 1.65;
    color: var(--nx-color-text);
}

@media (max-width: 767.98px) {
    .nx-content-page .nx-page-header {
        padding-bottom: 0.95rem;
    }
}

/* -------------------------------------------------------------------------
   Gallery
   ------------------------------------------------------------------------- */

.nx-gallery {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-gallery__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0.65rem;
    width: 100%;
    min-width: 0;
}

.nx-gallery__grid:empty {
    display: none;
}

.nx-gallery-item {
    margin: 0;
    min-width: 0;
    min-height: 0;
    position: relative;
    overflow: hidden;
    border-radius: var(--nx-radius);
    background-color: var(--nx-color-surface);
}

.nx-gallery-item__link,
.nx-gallery-item__button {
    display: block;
    width: 100%;
    height: 100%;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    text-decoration: none;
    cursor: pointer;
    font: inherit;
}

.nx-gallery-item__button {
    appearance: none;
}

.nx-gallery-item__link:focus-visible,
.nx-gallery-item__button:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

.nx-gallery-item__media {
    display: block;
    position: relative;
    width: 100%;
    height: 100%;
    overflow: hidden;
    aspect-ratio: 4 / 3;
    background-color: var(--nx-color-surface-soft);
}

.nx-gallery-item__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    transform: scale(1);
    transition: transform 0.55s ease;
}

.nx-gallery-item:hover .nx-gallery-item__image,
.nx-gallery-item:focus-within .nx-gallery-item__image {
    transform: scale(1.04);
}

.nx-gallery-item__overlay {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 1.1rem 1rem 0.9rem;
    background: linear-gradient(to top, rgba(33, 37, 41, 0.58), rgba(33, 37, 41, 0));
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.35s ease;
}

.nx-gallery-item:hover .nx-gallery-item__overlay,
.nx-gallery-item:focus-within .nx-gallery-item__overlay {
    opacity: 1;
}

.nx-gallery-item__caption {
    display: block;
}

.nx-gallery-item__title {
    display: block;
    color: var(--nx-color-light);
    font-family: var(--nx-font-heading);
    font-size: 0.92rem;
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: 1.3;
}

.nx-gallery-lightbox {
    display: none;
}

.nx-gallery-lightbox.is-open {
    display: flex;
    align-items: center;
    justify-content: center;
    position: fixed;
    inset: 0;
    z-index: 1200;
    padding: 1.25rem;
}

.nx-gallery-lightbox__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(33, 37, 41, 0.82);
}

.nx-gallery-lightbox__dialog {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: min(1100px, 100%);
    max-height: calc(100vh - 2.5rem);
}

.nx-gallery-lightbox__image {
    display: block;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: min(78vh, 860px);
    object-fit: contain;
    border-radius: var(--nx-radius);
    background-color: var(--nx-color-dark);
}

.nx-gallery-lightbox__caption {
    margin: 0.75rem 0 0;
    max-width: 42rem;
    color: var(--nx-color-light);
    text-align: center;
    font-size: 0.95rem;
}

.nx-gallery-lightbox__caption:empty {
    display: none;
}

.nx-gallery-lightbox__close,
.nx-gallery-lightbox__prev,
.nx-gallery-lightbox__next {
    appearance: none;
    border: 0;
    padding: 0;
    cursor: pointer;
    color: var(--nx-color-light);
    background: rgba(33, 37, 41, 0.45);
    border-radius: 999px;
    width: 44px;
    min-width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.55rem;
    line-height: 1;
}

.nx-gallery-lightbox__close:focus-visible,
.nx-gallery-lightbox__prev:focus-visible,
.nx-gallery-lightbox__next:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

.nx-gallery-lightbox__close {
    position: absolute;
    top: 0;
    right: 0;
    z-index: 2;
}

.nx-gallery-lightbox__prev,
.nx-gallery-lightbox__next {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 2;
}

.nx-gallery-lightbox__prev {
    left: 0;
}

.nx-gallery-lightbox__next {
    right: 0;
}

@media (hover: none) {
    .nx-gallery-item__overlay {
        opacity: 1;
    }

    .nx-gallery-item:hover .nx-gallery-item__image,
    .nx-gallery-item:focus-within .nx-gallery-item__image {
        transform: none;
    }
}

@media (min-width: 576px) {
    .nx-gallery__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.75rem;
    }

    .nx-gallery-item:only-child {
        grid-column: 1 / -1;
    }
}

@media (min-width: 992px) {
    .nx-gallery__grid {
        grid-template-columns: repeat(12, minmax(0, 1fr));
        grid-auto-rows: minmax(140px, 16.5vw);
        gap: 0.85rem;
    }

    .nx-gallery-item {
        grid-column: span 4;
    }

    .nx-gallery-item__media {
        aspect-ratio: auto;
        min-height: 0;
    }

    .nx-gallery-item:nth-child(8n + 1) {
        grid-column: span 8;
        grid-row: span 2;
    }

    .nx-gallery-item:nth-child(8n + 2),
    .nx-gallery-item:nth-child(8n + 3),
    .nx-gallery-item:nth-child(8n + 4),
    .nx-gallery-item:nth-child(8n + 6),
    .nx-gallery-item:nth-child(8n + 7),
    .nx-gallery-item:nth-child(8n + 8) {
        grid-column: span 4;
    }

    .nx-gallery-item:nth-child(8n + 5) {
        grid-column: span 8;
    }

    .nx-gallery-item:only-child {
        grid-column: 1 / -1;
        grid-row: span 2;
    }

    .nx-gallery-item:nth-child(1):nth-last-child(2),
    .nx-gallery-item:nth-child(2):nth-last-child(1) {
        grid-column: span 6;
        grid-row: span 2;
    }

    .nx-gallery-item:nth-child(4):nth-last-child(1) {
        grid-column: 1 / -1;
        grid-row: auto;
    }

    .nx-gallery-item:nth-child(4):nth-last-child(3),
    .nx-gallery-item:nth-child(5):nth-last-child(2),
    .nx-gallery-item:nth-child(6):nth-last-child(1) {
        grid-column: span 4;
        grid-row: auto;
    }

    .nx-gallery-item:nth-child(6):nth-last-child(2),
    .nx-gallery-item:nth-child(7):nth-last-child(1) {
        grid-column: span 6;
        grid-row: auto;
    }
}

/* -------------------------------------------------------------------------
   Projects
   ------------------------------------------------------------------------- */

.nx-section:has(.nx-projects__grid:empty),
.nx-section:has(.nx-reference-grid:empty),
.nx-section:has(.nx-faq__list:empty),
.nx-section:has(.nx-testimonial-grid:empty),
.nx-section:has(.nx-certificates__grid:empty) {
    display: none;
}

.nx-projects {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-projects__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.15rem;
    width: 100%;
    max-width: 100%;
    align-items: stretch;
}

.nx-project-card {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    max-width: 100%;
    height: 100%;
    overflow: hidden;
    color: var(--nx-color-heading);
    background-color: var(--nx-color-dark);
    border-radius: var(--nx-card-radius);
}

.nx-project-card:not(:has(.nx-project-card__media)) {
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    color: var(--nx-color-heading);
}

.nx-project-card__media {
    position: relative;
    overflow: hidden;
    width: 100%;
    aspect-ratio: 16 / 10;
    background-color: var(--nx-color-surface-soft);
}

.nx-project-card__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nx-project-card__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(15, 23, 42, 0) 42%, rgba(15, 23, 42, 0.72) 100%);
    pointer-events: none;
}

.nx-project-card__body {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    min-width: 0;
    padding: 1.1rem 1.15rem 1.25rem;
}

.nx-project-card:has(.nx-project-card__media) .nx-project-card__body {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    color: var(--nx-color-light);
}

.nx-project-card__title {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.05rem, 0.4vw + 1rem, 1.35rem);
    font-weight: 650;
    line-height: 1.25;
    color: inherit;
}

.nx-project-card__summary {
    margin: 0;
    max-width: 36rem;
    font-family: var(--nx-font-body);
    font-size: 0.92rem;
    line-height: 1.45;
    color: inherit;
    opacity: 0.86;
}

.nx-project-card__link {
    position: absolute;
    inset: 0;
    z-index: 2;
    border-radius: inherit;
}

.nx-project-card__link:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
}

@media (min-width: 768px) {
    .nx-projects__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.25rem;
    }
}

@media (min-width: 992px) {
    .nx-projects__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.35rem;
    }
}

@media (max-width: 575.98px) {
    .nx-project-card__media {
        aspect-ratio: 4 / 3;
    }
}

/* -------------------------------------------------------------------------
   References
   ------------------------------------------------------------------------- */

.nx-references {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-reference-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(7.5rem, 1fr));
    gap: 0.75rem;
    width: 100%;
    max-width: 100%;
    align-items: stretch;
}

.nx-reference-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-width: 0;
    max-width: 100%;
    min-height: 5.5rem;
    padding: 0.85rem 0.9rem;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: calc(var(--nx-card-radius) * 0.7);
}

.nx-reference-item--text {
    min-height: 4.25rem;
    background-color: var(--nx-color-surface-soft);
}

.nx-reference-item__link {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    width: 100%;
    min-width: 0;
    color: inherit;
    text-decoration: none;
}

.nx-reference-item__link:hover .nx-reference-item__name {
    color: var(--nx-color-brand);
}

.nx-reference-item__link:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
    border-radius: 0.4rem;
}

.nx-reference-item__media {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 3.25rem;
}

.nx-reference-item__image {
    display: block;
    max-width: 100%;
    max-height: 3.25rem;
    width: auto;
    height: auto;
    object-fit: contain;
}

.nx-reference-item__name {
    display: block;
    margin: 0;
    max-width: 100%;
    overflow: hidden;
    font-family: var(--nx-font-body);
    font-size: 0.78rem;
    font-style: normal;
    font-weight: 550;
    line-height: 1.3;
    color: var(--nx-color-muted);
    text-align: center;
    text-overflow: ellipsis;
    white-space: nowrap;
}

@media (min-width: 576px) {
    .nx-reference-grid {
        grid-template-columns: repeat(auto-fill, minmax(8.5rem, 1fr));
        gap: 0.85rem;
    }
}

@media (min-width: 768px) {
    .nx-reference-grid {
        grid-template-columns: repeat(auto-fill, minmax(9.5rem, 1fr));
        gap: 1rem;
    }

    .nx-reference-item {
        min-height: 6rem;
        padding: 1rem;
    }
}

@media (min-width: 992px) {
    .nx-reference-grid {
        grid-template-columns: repeat(auto-fill, minmax(10.5rem, 1fr));
    }
}

@media (min-width: 1200px) {
    .nx-reference-grid {
        grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
    }
}

/* -------------------------------------------------------------------------
   FAQ
   ------------------------------------------------------------------------- */

.nx-faq {
    width: 100%;
    max-width: min(46rem, 100%);
}

.nx-faq__list {
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    width: 100%;
    min-width: 0;
}

.nx-faq-item {
    margin: 0;
    overflow: hidden;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: calc(var(--nx-card-radius) * 0.75);
}

.nx-faq-item__question {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.85rem;
    padding: 0.95rem 1.05rem;
    font-family: var(--nx-font-heading);
    font-size: 1rem;
    font-weight: 600;
    line-height: 1.35;
    color: var(--nx-color-heading);
    list-style: none;
    cursor: pointer;
}

.nx-faq-item__question::-webkit-details-marker {
    display: none;
}

.nx-faq-item__question::marker {
    content: "";
}

.nx-faq-item__question-text {
    min-width: 0;
}

.nx-faq-item__icon {
    flex: 0 0 auto;
    display: block;
    width: 0.7rem;
    height: 0.7rem;
    border-right: 2px solid var(--nx-color-muted);
    border-bottom: 2px solid var(--nx-color-muted);
    transform: rotate(45deg) translateY(-0.1rem);
    transform-origin: 50% 50%;
}

.nx-faq-item[open] .nx-faq-item__icon {
    transform: rotate(225deg) translateY(-0.05rem);
}

.nx-faq-item__question:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: -2px;
}

.nx-faq-item__answer {
    padding: 0 1.05rem 1.05rem;
    font-family: var(--nx-font-body);
    font-size: 0.95rem;
    line-height: 1.6;
    color: var(--nx-color-text);
}

@media (min-width: 768px) {
    .nx-faq {
        max-width: min(52rem, 100%);
    }

    .nx-faq-item__question {
        padding: 1.05rem 1.2rem;
        font-size: 1.05rem;
    }

    .nx-faq-item__answer {
        padding: 0 1.2rem 1.2rem;
    }
}

/* -------------------------------------------------------------------------
   Testimonials
   ------------------------------------------------------------------------- */

.nx-testimonials {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-testimonial-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.15rem;
    width: 100%;
    max-width: 100%;
    align-items: stretch;
}

.nx-testimonial {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 1.1rem;
    min-width: 0;
    max-width: 100%;
    height: 100%;
    margin: 0;
    padding: var(--nx-card-padding);
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
}

.nx-testimonial__quote {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.02rem, 0.35vw + 0.95rem, 1.2rem);
    font-weight: 500;
    font-style: normal;
    line-height: 1.55;
    color: var(--nx-color-heading);
}

.nx-testimonial__quote p {
    margin: 0;
}

.nx-testimonial__person {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-width: 0;
}

.nx-testimonial__media {
    flex: 0 0 auto;
    overflow: hidden;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 999px;
    background-color: var(--nx-color-surface-soft);
}

.nx-testimonial__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nx-testimonial__meta {
    min-width: 0;
    font-family: var(--nx-font-body);
    font-size: 0.88rem;
    font-style: normal;
    font-weight: 600;
    line-height: 1.35;
    color: var(--nx-color-muted);
}

@media (min-width: 768px) {
    .nx-testimonial-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.25rem;
    }
}

@media (min-width: 1200px) {
    .nx-testimonial-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .nx-testimonial-grid > .nx-testimonial:only-child {
        grid-column: 1 / -1;
        max-width: 36rem;
    }
}

/* -------------------------------------------------------------------------
   Certificates
   ------------------------------------------------------------------------- */

.nx-certificates {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.nx-certificates__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.1rem;
    width: 100%;
    max-width: 100%;
    align-items: stretch;
}

.nx-certificate-card {
    display: flex;
    flex-direction: column;
    min-width: 0;
    max-width: 100%;
    margin: 0;
    overflow: hidden;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
    box-shadow: 0 1px 0 rgba(15, 23, 42, 0.03);
}

.nx-certificate-card__media {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 12rem;
    padding: 0.85rem;
    background-color: var(--nx-color-surface-soft);
}

.nx-certificate-card__image {
    display: block;
    max-width: 100%;
    max-height: 18rem;
    width: auto;
    height: auto;
    object-fit: contain;
}

.nx-certificate-card__title {
    margin: 0;
    padding: 0.85rem 1rem 1rem;
    font-family: var(--nx-font-heading);
    font-size: 0.95rem;
    font-weight: 600;
    line-height: 1.35;
    color: var(--nx-color-heading);
}

.nx-certificate-card--text {
    min-height: 6rem;
    justify-content: center;
}

@media (min-width: 576px) {
    .nx-certificates__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 992px) {
    .nx-certificates__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.25rem;
    }
}

@media (min-width: 1200px) {
    .nx-certificates__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

/* -------------------------------------------------------------------------
   Form — Premium NX V2
   ------------------------------------------------------------------------- */

.nx-form {
    display: flex;
    flex-direction: column;
    gap: 1.15rem;
    width: 100%;
    max-width: min(720px, 100%);
    margin: 0;
    min-width: 0;
    padding: 1.35rem 1.35rem 1.45rem;
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
    background-color: var(--nx-color-surface);
    color: var(--nx-color-text);
    box-sizing: border-box;
}

.nx-form *,
.nx-form *::before,
.nx-form *::after {
    box-sizing: border-box;
}

.nx-form__hp {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.nx-form__group,
.nx-form__group--choices,
.nx-form__group--check {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin: 0;
    padding: 0;
    border: 0;
    min-width: 0;
}

.nx-form__group--choices {
    gap: 0.7rem;
}

.nx-form__label,
.nx-form legend.nx-form__label {
    display: block;
    margin: 0;
    padding: 0;
    font-family: var(--nx-font-body);
    font-size: 0.9rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    line-height: 1.35;
    color: var(--nx-color-heading);
}

.nx-form__required {
    margin-left: 0.15rem;
    color: var(--nx-color-brand);
    font-weight: 700;
}

.nx-form__control,
.nx-form__textarea,
.nx-form__select {
    display: block;
    width: 100%;
    max-width: 100%;
    min-height: 3.15rem;
    padding: 0.8rem 1rem;
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-button-radius);
    background-color: var(--nx-color-surface);
    color: var(--nx-color-heading);
    font-family: var(--nx-font-body);
    font-size: 1rem;
    line-height: 1.45;
    transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
    appearance: none;
    -webkit-appearance: none;
}

.nx-form__textarea {
    min-height: 9rem;
    padding-top: 0.9rem;
    padding-bottom: 0.9rem;
    resize: vertical;
}

.nx-form__select {
    padding-right: 2.6rem;
    background-color: var(--nx-color-surface);
    background-image:
        linear-gradient(45deg, transparent 50%, var(--nx-color-muted) 50%),
        linear-gradient(135deg, var(--nx-color-muted) 50%, transparent 50%);
    background-position:
        calc(100% - 1.2rem) calc(50% - 0.12rem),
        calc(100% - 0.78rem) calc(50% - 0.12rem);
    background-size: 0.42rem 0.42rem, 0.42rem 0.42rem;
    background-repeat: no-repeat;
    cursor: pointer;
}

.nx-form__control::placeholder,
.nx-form__textarea::placeholder {
    color: var(--nx-color-muted);
    opacity: 0.85;
}

.nx-form__control:hover,
.nx-form__textarea:hover,
.nx-form__select:hover {
    border-color: color-mix(in srgb, var(--nx-color-brand) 35%, var(--nx-color-border));
}

.nx-form__control:focus,
.nx-form__textarea:focus,
.nx-form__select:focus {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 2px;
    border-color: var(--nx-color-brand);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--nx-color-brand) 18%, transparent);
}

.nx-form__control:disabled,
.nx-form__textarea:disabled,
.nx-form__select:disabled {
    opacity: 0.62;
    cursor: not-allowed;
    background-color: var(--nx-color-surface-soft);
    color: var(--nx-color-muted);
}

.nx-form__control.is-invalid,
.nx-form__textarea.is-invalid,
.nx-form__select.is-invalid,
.nx-form__check-input.is-invalid {
    border-color: #b42318;
    box-shadow: 0 0 0 3px rgba(180, 35, 24, 0.12);
}

.nx-form__control.is-invalid:focus,
.nx-form__textarea.is-invalid:focus,
.nx-form__select.is-invalid:focus {
    outline-color: #b42318;
    border-color: #b42318;
}

.nx-form__check {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
    min-width: 0;
    padding: 0.2rem 0;
}

.nx-form__check-input {
    flex: 0 0 auto;
    width: 1.15rem;
    height: 1.15rem;
    margin: 0.2rem 0 0;
    accent-color: var(--nx-color-brand);
    cursor: pointer;
}

.nx-form__check-input:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 3px;
    border-radius: 2px;
}

.nx-form__check-label {
    flex: 1 1 auto;
    min-width: 0;
    color: var(--nx-color-text);
    font-size: 0.95rem;
    line-height: 1.5;
    cursor: pointer;
    overflow-wrap: break-word;
}

.nx-form__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.35rem;
}

.nx-form__submit {
    min-width: 9rem;
    min-height: 3.15rem;
}

.nx-form__submit[disabled],
.nx-form__submit[aria-busy="true"] {
    opacity: 0.72;
    cursor: wait;
}

.nx-form__alert,
.nx-form__success,
.nx-form__error {
    margin: 0;
    padding: 0.85rem 1rem;
    border-radius: var(--nx-radius);
    font-size: 0.9375rem;
    line-height: 1.5;
}

.nx-form__alert[hidden] {
    display: none !important;
}

.nx-form__success {
    background-color: color-mix(in srgb, var(--nx-color-tertiary) 12%, var(--nx-color-surface));
    color: var(--nx-color-heading);
    border: 1px solid color-mix(in srgb, var(--nx-color-tertiary) 35%, var(--nx-color-border));
}

.nx-form__error {
    background-color: #fde8e6;
    color: #7a1f16;
    border: 1px solid #f0b4ad;
}

.nx-form__help {
    margin: 0;
    color: var(--nx-color-muted);
    font-size: 0.8125rem;
    line-height: 1.45;
}

/* Contact / split layouts: form fills its column */
.nx-contact__form .nx-form,
.nx-form-layout__main .nx-form {
    max-width: 100%;
}

.nx-contact__form .nx-form {
    padding: 1.5rem;
}

@media (min-width: 768px) {
    .nx-form {
        padding: 1.55rem 1.65rem 1.7rem;
    }

    .nx-contact__form .nx-form {
        padding: 1.75rem 1.85rem;
    }
}

/* Readable form panel on dark / brand / gradient sections */
.nx-section--dark .nx-form,
.nx-section--brand .nx-form,
.nx-section--gradient .nx-form {
    background-color: var(--nx-color-surface);
    color: var(--nx-color-text);
    border-color: var(--nx-color-border);
}

.nx-section--dark .nx-form .nx-form__label,
.nx-section--brand .nx-form .nx-form__label,
.nx-section--gradient .nx-form .nx-form__label,
.nx-section--dark .nx-form legend.nx-form__label,
.nx-section--brand .nx-form legend.nx-form__label,
.nx-section--gradient .nx-form legend.nx-form__label {
    color: var(--nx-color-heading);
}

.nx-section--dark .nx-form .nx-form__check-label,
.nx-section--brand .nx-form .nx-form__check-label,
.nx-section--gradient .nx-form .nx-form__check-label,
.nx-section--dark .nx-form .nx-form__help,
.nx-section--brand .nx-form .nx-form__help,
.nx-section--gradient .nx-form .nx-form__help {
    color: var(--nx-color-text);
}

@media (max-width: 767.98px) {
    .nx-form {
        gap: 1rem;
        padding: 1.15rem 1.05rem 1.25rem;
        max-width: 100%;
    }

    .nx-form__control,
    .nx-form__textarea,
    .nx-form__select {
        min-height: 3rem;
        font-size: 1rem;
    }

    .nx-form__check {
        gap: 0.65rem;
        padding: 0.3rem 0;
    }

    .nx-form__check-input {
        width: 1.2rem;
        height: 1.2rem;
        margin-top: 0.15rem;
    }

    .nx-form__submit {
        width: 100%;
        min-width: 0;
    }
}

/* -------------------------------------------------------------------------
   Form layout (module chrome around nx-form)
   ------------------------------------------------------------------------- */

.nx-form-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 2rem;
    align-items: start;
}

@media (min-width: 768px) {
    .nx-form-layout {
        grid-template-columns: minmax(0, 1.4fr) minmax(16rem, 0.8fr);
        gap: 2.5rem;
    }
}

.nx-form-layout__main,
.nx-form-layout__aside {
    min-width: 0;
}

.nx-form-layout__aside {
    padding: 1.5rem 0 0;
}

@media (min-width: 768px) {
    .nx-form-layout__aside {
        padding: 0.25rem 0 0 0.5rem;
        border-left: 1px solid var(--nx-color-border);
        padding-left: 2rem;
    }
}

.nx-form-layout__aside .nx-contact__list {
    margin: 0;
}

.nx-form-layout__aside:not(:has(.nx-contact__value:not(:empty))) {
    display: none;
}

.nx-form-layout:not(:has(.nx-contact__value:not(:empty))) {
    grid-template-columns: minmax(0, 1fr);
}

/* -------------------------------------------------------------------------
   About
   ------------------------------------------------------------------------- */

.nx-about {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 2rem;
    align-items: center;
}

@media (min-width: 768px) {
    .nx-about {
        grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
        gap: 3rem;
    }
}

.nx-about__media,
.nx-about__content {
    min-width: 0;
}

.nx-about__media img {
    display: block;
    width: 100%;
    height: auto;
    max-width: 100%;
    border-radius: var(--nx-card-radius);
    object-fit: cover;
    aspect-ratio: 4 / 5;
}

@media (min-width: 768px) {
    .nx-about__media img {
        min-height: 28rem;
        aspect-ratio: 4 / 5;
    }
}

.nx-about__content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem;
}

.nx-about__eyebrow {
    margin: 0;
    font-family: var(--nx-font-body);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--nx-color-brand);
}

.nx-about__title {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: var(--nx-h2);
    font-weight: 700;
    line-height: 1.15;
    color: var(--nx-color-heading);
    max-width: 18ch;
}

.nx-about__lead,
.nx-about__text {
    margin: 0;
    max-width: var(--nx-content-max-width);
    color: var(--nx-color-text);
    font-size: 1.0625rem;
    line-height: 1.7;
}

.nx-about__text p {
    margin: 0 0 0.85rem;
}

.nx-about__text p:last-child {
    margin-bottom: 0;
}

.nx-about__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 0.5rem;
}

.nx-about__eyebrow:empty,
.nx-about__title:empty,
.nx-about__lead:empty,
.nx-about__text:empty,
.nx-about__actions:has(a:empty),
.nx-about__media:empty {
    display: none;
}

/* -------------------------------------------------------------------------
   Contact
   ------------------------------------------------------------------------- */

.nx-contact {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 2.25rem;
    align-items: start;
}

@media (min-width: 768px) {
    .nx-contact {
        grid-template-columns: minmax(16rem, 0.85fr) minmax(0, 1.15fr);
        gap: 3rem;
    }
}

.nx-contact__info,
.nx-contact__form,
.nx-contact__map {
    min-width: 0;
}

.nx-contact__title {
    margin: 0 0 0.75rem;
    font-family: var(--nx-font-heading);
    font-size: var(--nx-h2);
    font-weight: 700;
    line-height: 1.2;
    color: var(--nx-color-heading);
}

.nx-contact__summary {
    margin: 0 0 1.75rem;
    color: var(--nx-color-text);
    font-size: 1.0625rem;
    line-height: 1.7;
    max-width: 36rem;
}

.nx-contact__title:empty,
.nx-contact__summary:empty,
.nx-contact__map:empty {
    display: none;
}

.nx-contact__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
}

.nx-contact__item {
    display: flex;
    align-items: flex-start;
    gap: 0.85rem;
    min-width: 0;
}

.nx-contact__item:has(.nx-contact__value:empty) {
    display: none;
}

.nx-contact__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 999px;
    background-color: var(--nx-color-surface-soft);
    color: var(--nx-color-brand);
}

.nx-contact__value {
    display: block;
    min-width: 0;
    margin: 0;
    padding-top: 0.45rem;
    color: var(--nx-color-heading);
    font-size: 1rem;
    line-height: 1.5;
    text-decoration: none;
    overflow-wrap: anywhere;
}

a.nx-contact__value:hover {
    color: var(--nx-color-brand);
}

.nx-contact__map {
    margin-top: 2rem;
    overflow: hidden;
    border-radius: var(--nx-card-radius);
}

.nx-contact__map iframe,
.nx-contact__map img {
    display: block;
    width: 100%;
    max-width: 100%;
    border: 0;
}

/* -------------------------------------------------------------------------
   Statistics
   ------------------------------------------------------------------------- */

.nx-stats {
    width: 100%;
    min-width: 0;
}

.nx-stats__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.5rem;
}

.nx-stats__grid:empty {
    display: none;
}

@media (min-width: 768px) {
    .nx-stats__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.75rem 2rem;
    }
}

@media (min-width: 992px) {
    .nx-stats__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.nx-stats__item {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.35rem;
    min-width: 0;
    padding: 0.25rem 0;
}

.nx-stats__icon {
    display: inline-flex;
    color: var(--nx-color-brand);
    margin-bottom: 0.35rem;
    font-size: 1.25rem;
}

.nx-stats__value {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: clamp(2.25rem, 4vw, 3.5rem);
    font-weight: 700;
    line-height: 1;
    letter-spacing: -0.03em;
    color: var(--nx-color-heading);
    overflow-wrap: anywhere;
}

.nx-stats__label {
    margin: 0;
    color: var(--nx-color-muted);
    font-size: 0.95rem;
    line-height: 1.45;
}

.nx-section--dark .nx-stats__value,
.nx-section--brand .nx-stats__value,
.nx-section--gradient .nx-stats__value {
    color: var(--nx-color-light);
}

.nx-section--dark .nx-stats__label,
.nx-section--brand .nx-stats__label,
.nx-section--gradient .nx-stats__label {
    color: rgba(255, 255, 255, 0.72);
}

.nx-section--dark .nx-stats__icon,
.nx-section--brand .nx-stats__icon,
.nx-section--gradient .nx-stats__icon {
    color: var(--nx-color-light);
}

.nx-stats__item:has(.nx-stats__value:empty) {
    display: none;
}

/* -------------------------------------------------------------------------
   Team
   ------------------------------------------------------------------------- */

.nx-team {
    width: 100%;
    min-width: 0;
}

.nx-team__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.5rem;
}

.nx-team__grid:empty {
    display: none;
}

@media (min-width: 576px) {
    .nx-team__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 992px) {
    .nx-team__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.75rem;
    }
}

@media (min-width: 1200px) {
    .nx-team__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.nx-team__card {
    display: flex;
    flex-direction: column;
    min-width: 0;
    overflow: hidden;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
    transition: border-color 0.2s ease, transform 0.2s ease;
}

.nx-team__card:hover {
    border-color: var(--nx-color-brand);
    transform: translateY(-2px);
}

.nx-team__media {
    overflow: hidden;
    aspect-ratio: 4 / 5;
    background-color: var(--nx-color-surface-soft);
}

.nx-team__media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
    transition: transform 0.35s ease;
}

.nx-team__card:hover .nx-team__media img {
    transform: scale(1.04);
}

.nx-team__body {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 1.15rem 1.2rem 1.35rem;
}

.nx-team__name {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: 1.125rem;
    font-weight: 650;
    line-height: 1.3;
    color: var(--nx-color-heading);
}

.nx-team__role {
    margin: 0;
    color: var(--nx-color-brand);
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.4;
}

.nx-team__text {
    margin: 0.35rem 0 0;
    color: var(--nx-color-muted);
    font-size: 0.9375rem;
    line-height: 1.55;
}

.nx-team__text:empty,
.nx-team__role:empty,
.nx-team__name:empty,
.nx-team__social:empty {
    display: none;
}

.nx-team__social {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin-top: 0.75rem;
}

.nx-team__link {
    color: var(--nx-color-heading);
    font-size: 0.875rem;
    font-weight: 600;
    text-decoration: none;
}

.nx-team__link:hover {
    color: var(--nx-color-brand);
}

/* -------------------------------------------------------------------------
   Features
   ------------------------------------------------------------------------- */

.nx-features {
    width: 100%;
    min-width: 0;
}

.nx-features__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.25rem;
}

.nx-features__grid:empty {
    display: none;
}

@media (min-width: 768px) {
    .nx-features__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.5rem;
    }
}

@media (min-width: 992px) {
    .nx-features__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.nx-feature {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.65rem;
    min-width: 0;
    padding: 1.35rem 1.25rem;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
}

.nx-feature__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 999px;
    background-color: var(--nx-color-surface-soft);
    color: var(--nx-color-brand);
    font-size: 1.15rem;
}

.nx-feature__title {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: 1.125rem;
    font-weight: 650;
    line-height: 1.3;
    color: var(--nx-color-heading);
}

.nx-feature__text {
    margin: 0;
    color: var(--nx-color-text);
    font-size: 0.975rem;
    line-height: 1.6;
}

.nx-feature__title:empty,
.nx-feature__text:empty {
    display: none;
}

/* -------------------------------------------------------------------------
   Process / Steps
   ------------------------------------------------------------------------- */

.nx-process {
    width: 100%;
    min-width: 0;
    counter-reset: nx-process;
}

.nx-process__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
}

.nx-process__grid:empty {
    display: none;
}

@media (min-width: 992px) {
    .nx-process__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 0 1.5rem;
    }
}

.nx-process__item {
    position: relative;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0.85rem 1rem;
    align-items: start;
    min-width: 0;
    padding: 1.35rem 0 1.5rem;
    border-bottom: 1px solid var(--nx-color-border);
    counter-increment: nx-process;
}

.nx-process__item:last-child {
    border-bottom: 0;
}

@media (min-width: 992px) {
    .nx-process__item {
        padding: 0.5rem 0.25rem 1.75rem;
        border-bottom: 0;
        border-top: 2px solid var(--nx-color-border);
    }

    .nx-process__item::after {
        content: "";
        position: absolute;
        top: -0.35rem;
        right: -0.85rem;
        width: 1.5rem;
        height: 2px;
        background: var(--nx-color-border);
    }

    .nx-process__item:nth-child(3n)::after,
    .nx-process__item:last-child::after {
        display: none;
    }
}

.nx-process__number {
    min-width: 2.25rem;
    font-family: var(--nx-font-heading);
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1.1;
    letter-spacing: -0.03em;
    color: var(--nx-color-brand);
}

.nx-process__number::before {
    content: counter(nx-process, decimal-leading-zero);
}

.nx-process__icon {
    display: none;
}

.nx-process__item:has(.nx-process__icon i) .nx-process__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    margin-top: 0.2rem;
    color: var(--nx-color-brand);
    font-size: 1rem;
}

.nx-process__item:has(.nx-process__icon i) {
    grid-template-columns: auto auto minmax(0, 1fr);
}

.nx-process__body {
    min-width: 0;
    grid-column: 2 / -1;
}

.nx-process__item:has(.nx-process__icon i) .nx-process__body {
    grid-column: 3 / -1;
}

.nx-process__title {
    margin: 0 0 0.4rem;
    font-family: var(--nx-font-heading);
    font-size: 1.125rem;
    font-weight: 650;
    line-height: 1.3;
    color: var(--nx-color-heading);
}

.nx-process__text {
    margin: 0;
    color: var(--nx-color-text);
    font-size: 0.975rem;
    line-height: 1.6;
}

.nx-process__title:empty,
.nx-process__text:empty {
    display: none;
}

/* -------------------------------------------------------------------------
   Branches
   ------------------------------------------------------------------------- */

.nx-branches {
    width: 100%;
    min-width: 0;
}

.nx-branches__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.25rem;
}

.nx-branches__grid:empty {
    display: none;
}

@media (min-width: 768px) {
    .nx-branches__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.5rem;
    }
}

@media (min-width: 1200px) {
    .nx-branches__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.nx-branch {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.65rem;
    min-width: 0;
    padding: 1.5rem 1.35rem;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
}

.nx-branch__icon {
    display: inline-flex;
    color: var(--nx-color-brand);
    font-size: 1.15rem;
}

.nx-branch__title {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: 1.2rem;
    font-weight: 650;
    line-height: 1.3;
    color: var(--nx-color-heading);
}

.nx-branch__contact {
    margin: 0;
    color: var(--nx-color-text);
    font-size: 0.975rem;
    line-height: 1.65;
    overflow-wrap: anywhere;
}

.nx-branch__contact p {
    margin: 0 0 0.35rem;
}

.nx-branch__contact p:last-child {
    margin-bottom: 0;
}

.nx-branch__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin-top: 0.5rem;
}

.nx-branch__title:empty,
.nx-branch__contact:empty,
.nx-branch__actions:empty {
    display: none;
}

/* -------------------------------------------------------------------------
   Video
   ------------------------------------------------------------------------- */

.nx-video {
    width: 100%;
    min-width: 0;
}

.nx-video__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.5rem;
}

.nx-video__grid:empty {
    display: none;
}

@media (min-width: 768px) {
    .nx-video__grid:has(> :nth-child(2)) {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.nx-video__item {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    min-width: 0;
}

.nx-video__item:not(:has(.nx-video__media)) {
    display: none;
}

.nx-video__media {
    position: relative;
    overflow: hidden;
    width: 100%;
    border-radius: var(--nx-card-radius);
    background-color: rgba(0, 0, 0, 0.28);
    aspect-ratio: 16 / 9;
}

.nx-video__media:empty {
    display: none;
}

.nx-video__media iframe,
.nx-video__media video,
.nx-video__player {
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
    object-fit: cover;
}

.nx-video__poster {
    display: block;
    width: 100%;
    height: 100%;
}

.nx-video__poster img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nx-video__media > .nx-btn {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.nx-video__content {
    min-width: 0;
}

.nx-video__title {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: 1.125rem;
    font-weight: 650;
    line-height: 1.35;
    color: var(--nx-color-heading);
}

.nx-section--dark .nx-video__title,
.nx-section--brand .nx-video__title,
.nx-section--gradient .nx-video__title {
    color: var(--nx-color-light);
}

.nx-video__title:empty {
    display: none;
}

/* -------------------------------------------------------------------------
   Campaigns
   ------------------------------------------------------------------------- */

.nx-campaigns {
    width: 100%;
    min-width: 0;
}

.nx-campaigns__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.5rem;
}

.nx-campaigns__grid:empty {
    display: none;
}

@media (min-width: 768px) {
    .nx-campaigns__grid:has(> :nth-child(2)) {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.nx-campaign {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    min-width: 0;
    overflow: hidden;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
}

@media (min-width: 992px) {
    .nx-campaigns__grid:not(:has(> :nth-child(2))) .nx-campaign {
        grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
        align-items: stretch;
    }
}

.nx-campaign__media {
    min-width: 0;
    background-color: var(--nx-color-surface-soft);
    aspect-ratio: 16 / 10;
}

@media (min-width: 992px) {
    .nx-campaigns__grid:not(:has(> :nth-child(2))) .nx-campaign__media {
        aspect-ratio: auto;
        min-height: 18rem;
    }
}

.nx-campaign__media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nx-campaign__content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.65rem;
    padding: 1.35rem 1.25rem 1.5rem;
    min-width: 0;
}

.nx-campaign__date {
    margin: 0;
    color: var(--nx-color-muted);
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.nx-campaign__title {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.25;
    color: var(--nx-color-heading);
}

.nx-campaign__text {
    margin: 0;
    color: var(--nx-color-text);
    font-size: 1rem;
    line-height: 1.65;
}

.nx-campaign__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin-top: 0.5rem;
}

.nx-campaign__title:empty,
.nx-campaign__text:empty,
.nx-campaign__date:empty,
.nx-campaign__actions:empty,
.nx-campaign__media:empty {
    display: none;
}

/* -------------------------------------------------------------------------
   Brands
   ------------------------------------------------------------------------- */

.nx-brands {
    width: 100%;
    min-width: 0;
}

.nx-brands__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.nx-brands__grid:empty {
    display: none;
}

@media (min-width: 768px) {
    .nx-brands__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.25rem;
    }
}

@media (min-width: 992px) {
    .nx-brands__grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (min-width: 1200px) {
    .nx-brands__grid {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }
}

.nx-brand {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    min-height: 5.5rem;
    padding: 1rem 1.15rem;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
}

.nx-brand__link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    text-decoration: none;
}

.nx-brand__logo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    max-width: 8.5rem;
}

.nx-brand__logo img {
    display: block;
    width: auto;
    max-width: 100%;
    height: auto;
    max-height: 2.75rem;
    object-fit: contain;
    filter: grayscale(1);
    opacity: 0.78;
    transition: filter 0.2s ease, opacity 0.2s ease;
}

.nx-brand:hover .nx-brand__logo img,
.nx-brand__link:focus-visible .nx-brand__logo img {
    filter: none;
    opacity: 1;
}

/* -------------------------------------------------------------------------
   Sectors
   ------------------------------------------------------------------------- */

.nx-sectors {
    width: 100%;
    min-width: 0;
}

.nx-sectors__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.25rem;
}

.nx-sectors__grid:empty {
    display: none;
}

@media (min-width: 768px) {
    .nx-sectors__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 992px) {
    .nx-sectors__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 1.5rem;
    }
}

.nx-sector {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    min-width: 0;
    padding: 1.35rem 1.25rem;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
    transition: border-color 0.2s ease;
}

.nx-sector:hover {
    border-color: var(--nx-color-brand);
}

.nx-sector__media {
    overflow: hidden;
    border-radius: calc(var(--nx-card-radius) - 2px);
    aspect-ratio: 16 / 10;
    background-color: var(--nx-color-surface-soft);
}

.nx-sector__media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nx-sector__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 999px;
    background-color: var(--nx-color-surface-soft);
    color: var(--nx-color-brand);
    font-size: 1.15rem;
}

.nx-sector__body {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    min-width: 0;
}

.nx-sector__title {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: 1.15rem;
    font-weight: 650;
    line-height: 1.3;
    color: var(--nx-color-heading);
}

.nx-sector__text {
    margin: 0;
    color: var(--nx-color-text);
    font-size: 0.975rem;
    line-height: 1.6;
}

.nx-sector__link {
    position: absolute;
    inset: 0;
    z-index: 1;
    border-radius: inherit;
}

.nx-sector__title:empty,
.nx-sector__text:empty,
.nx-sector__media:empty {
    display: none;
}

/* -------------------------------------------------------------------------
   Events
   ------------------------------------------------------------------------- */

.nx-events {
    width: 100%;
    min-width: 0;
}

.nx-events__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.25rem;
}

.nx-events__grid:empty {
    display: none;
}

@media (min-width: 768px) {
    .nx-events__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1200px) {
    .nx-events__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.nx-event {
    display: flex;
    flex-direction: column;
    min-width: 0;
    overflow: hidden;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
}

.nx-event__media {
    aspect-ratio: 16 / 10;
    background-color: var(--nx-color-surface-soft);
}

.nx-event__media img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.nx-event__body {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.55rem;
    padding: 1.15rem 1.2rem 1.35rem;
}

.nx-event__meta {
    margin: 0;
    color: var(--nx-color-brand);
    font-size: 0.8125rem;
    font-weight: 650;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.nx-event__title {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: 1.15rem;
    font-weight: 650;
    line-height: 1.3;
    color: var(--nx-color-heading);
}

.nx-event__text {
    margin: 0;
    color: var(--nx-color-text);
    font-size: 0.975rem;
    line-height: 1.6;
}

.nx-event__cta {
    margin-top: 0.35rem;
    color: var(--nx-color-heading);
    font-size: 0.875rem;
    font-weight: 650;
    text-decoration: none;
}

.nx-event__cta:hover {
    color: var(--nx-color-brand);
}

.nx-event__title:empty,
.nx-event__text:empty,
.nx-event__meta:empty,
.nx-event__media:empty {
    display: none;
}

/* -------------------------------------------------------------------------
   Careers
   ------------------------------------------------------------------------- */

.nx-careers {
    width: 100%;
    min-width: 0;
}

.nx-careers__list {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
}

.nx-careers__list:empty {
    display: none;
}

.nx-career {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1rem;
    align-items: center;
    min-width: 0;
    padding: 1.25rem 1.2rem;
    background-color: var(--nx-color-surface);
    border: 1px solid var(--nx-color-border);
    border-radius: var(--nx-card-radius);
}

@media (min-width: 768px) {
    .nx-career {
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 1.25rem;
        padding: 1.35rem 1.4rem;
    }
}

.nx-career__main {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    min-width: 0;
}

.nx-career__title {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: 1.15rem;
    font-weight: 650;
    line-height: 1.3;
    color: var(--nx-color-heading);
}

.nx-career__meta {
    margin: 0;
    color: var(--nx-color-muted);
    font-size: 0.875rem;
    font-weight: 600;
}

.nx-career__text {
    margin: 0.15rem 0 0;
    color: var(--nx-color-text);
    font-size: 0.975rem;
    line-height: 1.6;
}

.nx-career__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
}

.nx-career__title:empty,
.nx-career__meta:empty,
.nx-career__text:empty,
.nx-career__actions:empty {
    display: none;
}

/* -------------------------------------------------------------------------
   Premium NX Slider (Swiper)
   ------------------------------------------------------------------------- */

.nx-slider {
    position: relative;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    margin: 0;
    overflow: hidden;
    background-color: var(--nx-color-dark);
    color: var(--nx-color-light);
}

.nx-slider__swiper {
    width: 100%;
    height: clamp(28rem, 78vh, 46rem);
}

.nx-slider__slide {
    position: relative;
    display: block;
    width: 100%;
    height: 100%;
    overflow: hidden;
    background-color: var(--nx-color-dark);
}

.nx-slider__media {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.nx-slider__media picture,
.nx-slider__image,
.nx-slider__video {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.nx-slider__overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        linear-gradient(180deg, rgba(8, 12, 20, 0.35) 0%, rgba(8, 12, 20, 0.45) 50%, rgba(8, 12, 20, 0.55) 100%),
        radial-gradient(ellipse at center, rgba(8, 12, 20, 0.2) 0%, rgba(8, 12, 20, 0.55) 100%);
    pointer-events: none;
}

.nx-slider__content {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    max-width: none;
    margin: 0;
    padding: clamp(3.5rem, 8vh, 5rem) 1.25rem;
    text-align: center;
    pointer-events: none;
}

.nx-slider__copy {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.85rem;
    width: 100%;
    max-width: min(52rem, 100%);
    min-width: 0;
    margin-inline: auto;
    pointer-events: auto;
}

/* Beat ThemeSettings `html.nx-theme h2 { color: HeadingColor }` inside slider only. */
html.nx-theme .nx-slider .nx-slider__title,
html.nx-theme .nx-slider h2.nx-slider__title,
.nx-slider .nx-slider__title,
.nx-slider h2.nx-slider__title {
    margin: 0;
    color: #fff;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.85rem, 1.2rem + 2.4vw, 3.4rem);
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.12;
    text-wrap: balance;
    overflow-wrap: anywhere;
    word-break: break-word;
}

html.nx-theme .nx-slider .nx-slider__text,
.nx-slider .nx-slider__text {
    margin: 0;
    max-width: min(40rem, 100%);
    color: rgba(255, 255, 255, 0.9);
    font-size: clamp(1rem, 0.95rem + 0.25vw, 1.2rem);
    line-height: 1.6;
    overflow-wrap: anywhere;
}

.nx-slider__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    margin-top: 0.45rem;
}

.nx-slider__title:empty,
.nx-slider__text:empty,
.nx-slider__actions:empty {
    display: none;
}

.nx-slider__nav {
    position: absolute;
    top: 50%;
    z-index: 3;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    margin: 0;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, 0.28);
    border-radius: 999px;
    background: rgba(8, 12, 20, 0.35);
    color: var(--nx-color-light);
    cursor: pointer;
    transform: translateY(-50%);
    transition: background-color 0.18s ease, border-color 0.18s ease;
}

.nx-slider__nav:hover,
.nx-slider__nav:focus-visible {
    background: rgba(8, 12, 20, 0.55);
    border-color: rgba(255, 255, 255, 0.55);
    outline: none;
}

.nx-slider__nav--prev {
    left: 1rem;
}

.nx-slider__nav--next {
    right: 1rem;
}

.nx-slider__nav span {
    display: block;
    width: 0.55rem;
    height: 0.55rem;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
}

.nx-slider__nav--prev span {
    transform: rotate(135deg);
    margin-left: 0.15rem;
}

.nx-slider__nav--next span {
    transform: rotate(-45deg);
    margin-right: 0.15rem;
}

.nx-slider__pagination {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 1.15rem;
    z-index: 3;
    display: flex;
    justify-content: center;
    gap: 0.35rem;
}

.nx-slider .swiper-pagination-bullet {
    width: 0.55rem;
    height: 0.55rem;
    margin: 0 !important;
    opacity: 0.45;
    background: var(--nx-color-light);
}

.nx-slider .swiper-pagination-bullet-active {
    opacity: 1;
    background: var(--nx-color-brand);
}

@media (max-width: 767.98px) {
    .nx-slider__swiper {
        height: clamp(22rem, 70vh, 34rem);
    }

    .nx-slider__content {
        padding: 3rem 1rem 3.75rem;
    }

    html.nx-theme .nx-slider .nx-slider__title,
    html.nx-theme .nx-slider h2.nx-slider__title,
    .nx-slider .nx-slider__title,
    .nx-slider h2.nx-slider__title {
        font-size: clamp(1.45rem, 1.1rem + 2.2vw, 2.1rem);
        max-width: 100%;
    }

    .nx-slider__nav {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .nx-slider__nav {
        transition: none;
    }
}

/* -------------------------------------------------------------------------
   Popup
   ------------------------------------------------------------------------- */

.nx-popup {
    position: fixed;
    inset: 0;
    z-index: 1100;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.18s ease, visibility 0.18s ease;
}

.nx-popup.is-open {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
}

.nx-popup__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(33, 37, 41, 0.55);
}

.nx-popup__dialog {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 28rem;
    max-height: 90vh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 1.5rem 1.25rem 1.25rem;
    background-color: var(--nx-color-surface);
    color: var(--nx-color-text);
    border-radius: var(--nx-card-radius);
    box-shadow: 0 18px 48px rgba(15, 23, 42, 0.22);
    transform: translateY(8px);
    transition: transform 0.18s ease;
}

.nx-popup.is-open .nx-popup__dialog {
    transform: none;
}

.nx-popup--form .nx-popup__dialog {
    max-width: 36rem;
}

.nx-popup__close {
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
    z-index: 2;
    width: 2.75rem;
    height: 2.75rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: var(--nx-button-radius);
    background: transparent;
    color: var(--nx-color-heading);
    font-size: 1.75rem;
    line-height: 1;
    cursor: pointer;
}

.nx-popup__close:focus-visible {
    outline: 2px solid var(--nx-color-brand);
    outline-offset: 2px;
}

.nx-popup__content {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    min-width: 0;
}

.nx-popup__header {
    padding-right: 2rem;
}

.nx-popup__title {
    margin: 0;
    font-family: var(--nx-font-heading);
    font-size: clamp(1.15rem, 1rem + 0.8vw, 1.45rem);
    font-weight: var(--nx-heading-font-weight);
    letter-spacing: var(--nx-heading-letter-spacing);
    line-height: var(--nx-heading-line-height);
    color: var(--nx-color-heading);
}

.nx-popup__body {
    min-width: 0;
}

.nx-popup__text {
    margin: 0 0 0.75rem;
    font-size: 0.98rem;
    line-height: var(--nx-body-line-height);
}

.nx-popup__media img {
    display: block;
    width: 100%;
    max-width: 100%;
    height: auto;
    border-radius: var(--nx-radius);
}

.nx-popup__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 0.35rem;
}

html.nx-theme body.nx-popup-open,
body.nx-theme.nx-popup-open {
    overflow: hidden;
}

@media (max-width: 575.98px) {
    .nx-popup {
        padding: 0.6rem;
        align-items: flex-end;
    }

    .nx-popup__dialog {
        max-height: 88vh;
        padding: 1.25rem 1rem 1rem;
        border-bottom-left-radius: 0;
        border-bottom-right-radius: 0;
    }
}

/* -------------------------------------------------------------------------
   Reduced motion
   ------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
    .nx-btn,
    .nx-btn--primary,
    .nx-btn--secondary,
    .nx-btn--outline,
    .nx-btn--ghost {
        transition: none;
        transform: none;
    }

    .nx-hero::before,
    .nx-hero::after {
        display: none;
    }

    .nx-bento__item,
    .nx-bento__item:hover {
        transition: none;
        transform: none;
    }

    .nx-bento__item:nth-child(1)::before {
        display: none;
    }

    .nx-service-card,
    .nx-service-card:hover {
        transition: none;
        transform: none;
    }

    .nx-service-card__link::after,
    .nx-service-card:hover .nx-service-card__link::after {
        transition: none;
        transform: none;
    }

    .nx-product-card,
    .nx-product-card:hover,
    .nx-product-card__image,
    .nx-product-card:hover .nx-product-card__image,
    .nx-product-card__link::after,
    .nx-product-card:hover .nx-product-card__link::after {
        transition: none;
        transform: none;
    }

    .nx-pricing-card,
    .nx-pricing-card--featured,
    .nx-pricing-card__link,
    .nx-pricing-card__features > li::before,
    .nx-pricing-card__check,
    .nx-product-gallery__thumb,
    .nx-product-gallery__main-image,
    .nx-product-detail__crumbs a,
    .nx-blog-card__link,
    .nx-blog-card__image,
    .nx-article__crumbs a,
    .nx-breadcrumb__link,
    .nx-page-header__image,
    .nx-article__content a,
    .nx-article__image,
    .nx-file-card__link,
    .nx-solution,
    .nx-solution__link::after,
    .nx-announcement,
    .nx-announcement__link::after,
    .nx-gallery-item__image,
    .nx-gallery-item:hover .nx-gallery-item__image,
    .nx-gallery-item:focus-within .nx-gallery-item__image,
    .nx-gallery-item__overlay,
    .nx-gallery-lightbox__prev,
    .nx-gallery-lightbox__next,
    .nx-project-card,
    .nx-faq-item__icon,
    .nx-reference-item__link,
    .nx-certificate-card {
        transition: none;
        transform: none;
        filter: none;
    }

    .nx-popup,
    .nx-popup__dialog,
    .nx-popup.is-open .nx-popup__dialog {
        transition: none;
        transform: none;
    }

    .nx-gallery-lightbox__prev,
    .nx-gallery-lightbox__next {
        transform: translateY(-50%);
    }

    .nx-pricing-card__features > li::before,
    .nx-pricing-card__check {
        transform: rotate(45deg);
    }
}

/* Final frontend audit: narrowly scoped theme integration fixes.
   Keep these in the shared NX layer; template CSS URLs may be long-lived. */
html.lm-theme .lm-header__nav {
    overflow: visible;
}

html.hc-theme .hc-hero__copy {
    min-width: 0;
}

html.hc-theme .hc-hero h1.hc-hero__title {
    font-size: clamp(2.1rem, 5vw, var(--theme-h1-size, 3.75rem));
    overflow-wrap: anywhere;
}

html.hc-theme .hc-page-header h1.hc-page-header__title {
    font-size: clamp(1.85rem, 3.5vw, var(--theme-h1-size, 2.5rem));
    overflow-wrap: anywhere;
}

html.hc-theme .hc-page-header--media .nx-breadcrumb__link,
html.hc-theme .hc-page-header--media .nx-breadcrumb__item {
    color: rgba(255, 255, 255, 0.92);
}

/* Preserve NX container gutters when the hotel slider adds vertical padding. */
html.lh-theme .lh-slider__content.nx-container {
    padding-left: 1rem;
    padding-right: 1rem;
}

@media (min-width: 768px) {
    html.lh-theme .lh-slider__content.nx-container {
        padding-left: 1.5rem;
        padding-right: 1.5rem;
    }
}

@media (min-width: 1200px) {
    html.lh-theme .lh-slider__content.nx-container {
        padding-left: 2rem;
        padding-right: 2rem;
    }
}

@media (max-width: 991.98px) {
    html.hc-theme .hc-hero__inner {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* Actual NX logo markup on the two transparent slider headers. */
html.nx-theme body:has(.lm-main > .lm-slider:first-child) .lm-header:not(.nx-header--scrolled) .nx-header__logo-text,
html.nx-theme body:has(.lm-main > .lm-slider:first-child) .lm-header:not(.nx-header--scrolled) .nx-nav__toggle,
html.nx-theme body:has(.ed-main > .ed-slider:first-child) .ed-header:not(.nx-header--scrolled) .nx-header__logo-text {
    color: #fff !important;
}

@media (max-width: 991.98px) {
    .nx-header .nx-header__logo-text {
        white-space: normal;
        overflow-wrap: anywhere;
    }
}

/* Transparent-header bar backgrounds must follow the clinic button ink. */
html.hc-theme .hc-header:not(.is-mobile-open) .nx-header__mobile-toggle-bars,
html.hc-theme .hc-header .nx-header__mobile-toggle-bars::before,
html.hc-theme .hc-header .nx-header__mobile-toggle-bars::after {
    background-color: currentColor;
}

@media (max-width: 575.98px) {
    html.lh-theme .lh-header__inner,
    html.hc-theme .hc-header__inner {
        gap: 0.5rem;
    }
    html.lh-theme .lh-header__actions,
    html.hc-theme .hc-header__actions {
        gap: 0.4rem;
    }
    html.lh-theme .lh-header .lh-btn--book {
        padding: 0.7rem;
        font-size: 0.6875rem;
    }
    html.lh-theme .lh-header .nx-header__logo-text,
    html.hc-theme .hc-header .nx-header__logo-text {
        font-size: 0.875rem;
        line-height: 1.35;
    }
}

/* Page header media is a background layer, not a flow-based card image. */
html.lm-theme .lm-page-header > .lm-page-header__media {
    position: absolute;
    inset: 0;
}

html.lm-theme .lm-page-header--media .lm-page-header__overlay {
    background: linear-gradient(105deg, rgba(11, 25, 38, 0.68), rgba(11, 25, 38, 0.38));
}

html.nx-theme.lm-theme .lm-page-header--media .lm-page-header__title {
    color: #fff;
}

html.nx-theme.lm-theme .lm-page-header--media .lm-page-header__summary,
html.nx-theme.lm-theme .lm-page-header--media .nx-breadcrumb a,
html.nx-theme.lm-theme .lm-page-header--media .nx-breadcrumb span,
html.nx-theme.lm-theme .lm-page-header--media .nx-breadcrumb li {
    color: rgba(255, 255, 255, 0.92);
}

/* ThemeSettings' generic image rule must not undo page-header cover sizing. */
html.nx-theme :is(.ap-page-header__image, .ls-page-header__image) {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

html.nx-theme :is(.ap-page-header--media, .ls-page-header--media) :is(.ap-page-header__overlay, .ls-page-header__overlay) {
    background: linear-gradient(105deg, rgba(11, 13, 15, 0.68), rgba(11, 13, 15, 0.38));
}

html.nx-theme.ls-theme .ls-page-header--media .ls-page-header__title {
    color: #fff;
}

html.nx-theme.ls-theme .ls-page-header--media :is(.ls-page-header__summary, .ls-page-header__eyebrow) {
    color: rgba(255, 255, 255, 0.92);
}

/* Breadcrumb colors are scoped to headers that actually render media. */
html.nx-theme :is(.ac-page-header--media, .lc-page-header--media, .ls-page-header--media) .nx-breadcrumb :is(a, span, li) {
    color: rgba(255, 255, 255, 0.92);
}

/* Keep long architecture page titles within the mobile content column. */
html.nx-theme.cc-theme .cc-page-header h1.cc-page-header__title {
    font-size: clamp(2rem, 6vw, var(--theme-h1-size, 4rem));
    overflow-wrap: anywhere;
}

html.nx-theme.ac-theme .ac-page-header h1.ac-page-header__title {
    font-size: clamp(2rem, 6vw, var(--theme-h1-size, 7rem));
    overflow-wrap: anywhere;
}

@media (max-width: 575.98px) {
    html.ac-theme .ac-header__inner {
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 0.5rem;
    }
    html.ac-theme .ac-header__actions {
        gap: 0.4rem;
    }
}

@media (min-width: 1200px) and (max-width: 1439.98px) {
    html.nx-theme .nx-header .nx-nav__list {
        flex-wrap: nowrap;
        gap: 0.1rem;
    }

    html.nx-theme .nx-header .nx-nav__link {
        padding-left: 0.5rem;
        padding-right: 0.5rem;
    }
}

/* -------------------------------------------------------------------------
   Header logo — final guard against theme-wide `img { height:auto }`
   Applies to every NX frontend theme that uses {{HEADER_BRAND}}.
   Sticky / transparent / scrolled use the same display area (no shrink jump).
   ------------------------------------------------------------------------- */
html.nx-theme .nx-header .nx-header__logo,
.nx-header .nx-header__logo {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--nx-header-logo-size, 5.625rem);
    height: var(--nx-header-logo-size, 5.625rem);
    flex: 0 0 var(--nx-header-logo-size, 5.625rem);
    max-width: var(--nx-header-logo-size, 5.625rem);
    max-height: var(--nx-header-logo-size, 5.625rem);
    overflow: hidden;
}

html.nx-theme .nx-header .nx-header__logo-image,
.nx-header .nx-header__logo-image {
    display: block;
    width: 100% !important;
    height: 100% !important;
    max-width: 100% !important;
    max-height: 100% !important;
    object-fit: contain !important;
    object-position: center !important;
}

