/* Full-bleed applies only to frontend pages/project singles when enabled.
   Never force viewport height: long pages and scroll stories must keep scrolling. */
html:has(body.vpm-full-bleed) { background: #15120f; }
body.vpm-full-bleed { margin: 0 !important; padding: 0 !important; min-height: 100svh; width: 100%; background: #15120f; --vpm-menu-clearance: 110px; }
body.vpm-full-bleed :is(.wp-site-blocks, #page, .site, #content, .site-content, .content-area, .site-main, .entry-content, .page-content, .wp-block-post-content, .elementor, .elementor-section-wrap) {
  width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important; box-sizing: border-box;
}
/* Reset only ancestors of our experiences, preserving their internal spacing.
   Covers nested Elementor sections, containers, inner wrappers and widget padding. */
body.vpm-full-bleed :is(div, main, article, section):has(:is(.valpum-projects, #valpum-portfolio, #valpum-experience, .ma-field-project)),
body.vpm-full-bleed :is(.valpum-projects, #valpum-portfolio, #valpum-experience, .ma-field-project) {
  width: 100% !important; max-width: none !important; min-width: 0 !important;
  margin: 0 !important; padding: 0 !important; gap: 0 !important;
  --content-width: 100%; --container-max-width: 100%; --container-default-padding-top: 0px;
  --container-default-padding-right: 0px; --container-default-padding-bottom: 0px; --container-default-padding-left: 0px;
  box-sizing: border-box;
}
body.vpm-full-bleed .wp-site-blocks > * { margin-block: 0 !important; }
body.vpm-full-bleed .vpm-host { height: 0; min-height: 0; margin: 0; padding: 0; }
/* Keep headings readable below the overlay while the background reaches y=0. */
body.vpm-full-bleed:has(.vpm-host) :where(.valpum-projects, #valpum-portfolio) :is(.vp-heading, .vp-system) { top: var(--vpm-menu-clearance); }
body.vpm-full-bleed:has(.vpm-host) .ma-field-project .mf-topbar { top: var(--vpm-menu-clearance); }
body.vpm-full-bleed:has(.vpm-host) .ma-field-project .mf-intro { top: calc(var(--vpm-menu-clearance) + 72px); }
body.vpm-full-bleed:has(.vpm-host) .ma-field-project :is(.mf-brief, .mf-finish) { top: calc(var(--vpm-menu-clearance) + 77px); }
@media (max-width: 980px) { body.vpm-full-bleed { --vpm-menu-clearance: 102px; } }
@media (max-width: 860px), (max-width: 1024px) and (pointer: coarse) {
  body.vpm-full-bleed:has(.vpm-host) .valpum-projects .vp-heading { top: auto; padding-top: var(--vpm-menu-clearance); }
}
@media (max-width: 600px) {
  body.vpm-full-bleed:has(.vpm-host) .ma-field-project .mf-intro { top: calc(var(--vpm-menu-clearance) + 49px); }
  body.vpm-full-bleed:has(.vpm-host) .ma-field-project .mf-finish { top: 440px; }
}
/* Without JS, retain the accessible fallback in normal flow. */
body.vpm-full-bleed .vpm-host:has(.vpm-noscript) { height: auto; }
body.vpm-full-bleed .vpm-noscript { margin-top: 96px; }
/* Empty/reduced-motion layouts also leave room for the shared header. */
body.vpm-full-bleed:has(.vpm-host) .valpum-projects .vp-empty { padding-top: calc(var(--vpm-menu-clearance) + 12px); }
@media (min-width: 861px) and (pointer: fine), (min-width: 1025px) {
  body.vpm-full-bleed:has(.vpm-host) .valpum-projects.vp-static .vp-fallback { top: calc(var(--vpm-menu-clearance) + 220px); }
}
