/*
 * Force the browser window to be the only vertical scroll container.
 * Loaded after legacy main.css via nuxt.config head link.
 */

/* Force the window to handle all scrolling */
html,
body {
    height: auto !important;
    min-height: 100vh;
    margin: 0;
    padding: 0;
    overflow-x: hidden !important;
    overflow-y: auto !important;
}

/* Strip fixed heights / scroll traps from Nuxt root wrappers */
#__nuxt,
#__layout,
.app-root {
    height: auto !important;
    min-height: 100vh;
    overflow: visible !important;
    max-height: none !important;
    width: 100%;
}

/* Page shells must not hijack document scroll */
main,
main.hp,
main.av5,
main.sv5,
main.pv5,
main.cv5,
main.rs-project-detail-page {
    height: auto !important;
    min-height: 0;
    overflow: visible !important;
    max-height: none !important;
    width: 100%;
}

html.preloader-active,
html.preloader-active body {
    overflow: hidden !important;
}

body.nav5-menu-open {
    overflow: hidden !important;
}

.nav5-mobile-root {
    overflow: visible !important;
}

/* Mobile drawer: internal scroll only while open */
header.nav5 .nav5-offcanvas {
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
}

header.nav5 .nav5-offcanvas:not(.is-open) {
    overflow-y: hidden;
    pointer-events: none;
}

/* Legacy theme class must not clip the page */
.fix:not(.nav5-mobile-root) {
    overflow: visible !important;
}

/* Fixed navbar + content offset (spacer synced in Navbar.vue) */
:root {
    --nav5-offset: 112px;
    --nav5-top-offset: 0px;
    --nav5-bar-offset: 112px;
    --site-container-max: 1200px;
    --site-container-narrow: 896px;
    --site-inline-padding: 24px;
    --site-section-y: 4.5rem;
    --site-section-y-sm: 3rem;
    --site-section-y-compact: 3.5rem;
    --site-page-section-y: 4.5rem;
    --site-page-section-y-sm: 3rem;
    --site-section-head-gap: 2.25rem;
    --site-section-content-gap: 2rem;
    --site-overlap-pull: 2.5rem;
    --site-grid-gap: 1.75rem;
    --site-grid-gap-lg: 2.25rem;
    --site-heading-to-copy: 0.875rem;
    --site-copy-gap: 1rem;
    --site-copy-max: 42rem;
    --site-logo-h: 5.5rem;
    --site-logo-h-scrolled: 5.5rem;
    --site-logo-w: 17rem;
    --site-logo-w-scrolled: 17rem;
    --site-logo-tcd-h: 4.75rem;
    --site-logo-tcd-h-scrolled: 4.75rem;
    --site-logo-tcd-w: 20rem;
    --site-logo-tcd-w-scrolled: 22rem;
    --site-logo-powered-w: 14rem;
    --site-logo-powered-w-scrolled: 16rem;
    --site-nav-brand-slot-h: 5.5rem;
    --site-nav-brand-slot-w: 17rem;
    --site-nav-brand-slot-h-scrolled: 5.5rem;
    --site-nav-brand-slot-w-scrolled: 17rem;
    --nav5-bar-pad-y: 12px;
    --nav5-bar-min-h: calc(var(--site-nav-brand-slot-h) + (var(--nav5-bar-pad-y) * 2));
    --site-logo-footer-h: 5rem;
    --site-logo-footer-w: 18rem;
    --site-logo-drawer-h: 4.75rem;
    --site-logo-drawer-w: 14rem;
}

/* Unified vertical rhythm for homepage + premium blocks */
.site-section {
    padding-block: var(--site-section-y);
}

.site-section--compact {
    padding-block: var(--site-section-y-compact);
}

.site-section__head {
    margin-bottom: var(--site-section-head-gap);
}

.site-section__stack {
    margin-top: var(--site-section-content-gap);
}

.site-section__overlap {
    margin-top: calc(-1 * var(--site-overlap-pull));
}

/* Consistent grid gaps in main content */
main .grid.gap-6 {
    gap: var(--site-grid-gap) !important;
}

main .grid.gap-8 {
    gap: calc(var(--site-grid-gap) + 0.25rem) !important;
}

main .grid.gap-12 {
    gap: var(--site-grid-gap-lg) !important;
}

@media (max-width: 767px) {
    .site-section,
    .site-section--compact {
        padding-block: var(--site-section-y-sm);
    }
}

/* Inner pages — normalize legacy oversized section padding */
.av5-pillars-section,
.av5-timeline-section,
.av5-caps,
.av5-quote,
.av5-cta,
.pv5-portfolio,
.pv5-quote,
.pv5-cta,
.cv5-cards,
.cv5-form-wrap,
.cv5-map-section,
.pd-hero,
.pd-body,
.pd-back {
    padding-block: var(--site-page-section-y) !important;
}

@media (max-width: 767px) {
    .av5-pillars-section,
    .av5-timeline-section,
    .av5-caps,
    .av5-quote,
    .av5-cta,
    .pv5-portfolio,
    .pv5-quote,
    .pv5-cta,
    .cv5-cards,
    .cv5-form-wrap,
    .cv5-map-section,
    .pd-hero,
    .pd-body,
    .pd-back {
        padding-block: var(--site-page-section-y-sm) !important;
    }
}

/* Unified site container — one max-width + one horizontal padding layer */
.container,
.container-lg,
.container-md,
.container-sm,
.container-xl,
.container-xxl {
    --bs-gutter-x: 1.5rem;
    width: 100% !important;
    max-width: var(--site-container-max) !important;
    margin-inline: auto !important;
    padding-inline: var(--site-inline-padding) !important;
    box-sizing: border-box;
}

.container--narrow {
    max-width: var(--site-container-narrow) !important;
}

.container .container {
    max-width: 100% !important;
    padding-inline: 0 !important;
    margin-inline: 0 !important;
}

header.nav5 .nav5-bar-inner {
    max-width: var(--site-container-max) !important;
    width: 100% !important;
    margin-inline: auto !important;
    min-height: var(--nav5-bar-min-h) !important;
    padding-block: var(--nav5-bar-pad-y) !important;
}

.ft5-main.container,
footer.ft5 .ft5-bottom .container {
    max-width: var(--site-container-max) !important;
}

@media (max-width: 767px) {
    :root {
        --site-inline-padding: 20px;
        --site-nav-brand-slot-h: 4.35rem;
        --site-nav-brand-slot-w: 13rem;
        --site-nav-brand-slot-h-scrolled: 4.35rem;
        --site-nav-brand-slot-w-scrolled: 13rem;
    }
}

header.nav5 {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    z-index: 100 !important;
}

/* Heroes extend under fixed transparent navbar */
.page-bleed-nav,
.hero-slider-bleed {
    margin-top: calc(-1 * var(--nav5-offset));
}

/* Override main text color inside heroes */
#home .hero-slider__title,
#home .hero-slider__subtitle,
.inner-page-hero__title,
.inner-page-hero__subtitle {
    color: #ffffff !important;
}

header.nav5:not(.nav5--scrolled),
header.nav5:not(.nav5--scrolled) .nav5-bar {
    background: transparent !important;
    background-color: transparent !important;
}

/* Project detail — dark navbar on light page background */
body:has(.rs-project-detail-page) header.nav5,
body:has(.rs-project-detail-page) header.nav5 .nav5-bar {
    background: #071230 !important;
    box-shadow: 0 4px 28px rgba(7, 18, 48, 0.4);
}

body:has(.rs-project-detail-page) header.nav5 .nav5-bar {
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

body:has(.rs-project-detail-page) header.nav5 .nav5-link {
    color: rgba(255, 255, 255, 0.92) !important;
}

body:has(.rs-project-detail-page) header.nav5 .nav5-link:hover,
body:has(.rs-project-detail-page) header.nav5 .nav5-link.is-active {
    color: #ffffff !important;
}

body:has(.rs-project-detail-page) header.nav5 .nav5-toggle {
    border-color: rgba(255, 255, 255, 0.35);
    background: rgba(255, 255, 255, 0.08);
}

body:has(.rs-project-detail-page) header.nav5 .nav5-toggle span {
    background: #ffffff;
}

body:has(.rs-project-detail-page) header.nav5 .nav5-lang {
    border-color: rgba(255, 255, 255, 0.35);
    background: rgba(255, 255, 255, 0.08);
    color: #ffffff;
}

header.nav5 .nav5-logo-img {
    height: auto !important;
    max-height: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    width: auto !important;
}

header.nav5.nav5--scrolled .nav5-logo-img {
    height: auto !important;
    max-height: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    width: auto !important;
}

header.nav5 .nav5-brand-slot,
header.nav5 .nav5-powered-slot {
    width: var(--site-nav-brand-slot-w) !important;
    height: var(--site-nav-brand-slot-h) !important;
    min-width: 0 !important;
}

header.nav5 .nav5-brand-img {
    height: 100% !important;
    max-width: 100% !important;
    max-height: 100% !important;
    width: auto !important;
    min-width: 0 !important;
    object-fit: contain !important;
    object-position: center !important;
}

header.nav5 .nav5-logo-tcd,
header.nav5 .nav5-powered-img {
    height: 100% !important;
    max-width: 100% !important;
    max-height: 100% !important;
    width: auto !important;
    min-width: 0 !important;
}

header.nav5.nav5--scrolled .nav5-logo-tcd,
header.nav5.nav5--scrolled .nav5-powered-img {
    height: 100% !important;
    max-width: 100% !important;
    max-height: 100% !important;
    width: auto !important;
    min-width: 0 !important;
}

@media (max-width: 767px) {
    header.nav5 .nav5-brand-slot,
    header.nav5 .nav5-powered-slot {
        width: var(--site-nav-brand-slot-w) !important;
        height: var(--site-nav-brand-slot-h) !important;
    }

    header.nav5 .nav5-logo-img {
        height: auto !important;
        max-width: 100% !important;
    }

    header.nav5 .nav5-logo-tcd,
    header.nav5 .nav5-powered-img,
    header.nav5.nav5--scrolled .nav5-logo-tcd,
    header.nav5.nav5--scrolled .nav5-powered-img {
        height: 100% !important;
        max-width: 100% !important;
        max-height: 100% !important;
        width: auto !important;
        min-width: 0 !important;
    }
}
