/* ===================================================================
   Bali Pro Services — Layout (global structure only)
   - Tokens (width, gutters, spacing)
   - Sticky footer shell
   - Global content canvas
   - Elementor containers (cap everywhere EXCEPT header/footer)
   - Page breathing / H1 offset
   - Standard sections & hero
   - Header nav font lock
   - Utilities (full-bleed, wrap, sections)
   =================================================================== */


/* === Tokens === */

:root {
  --pc-wrap-max: 1200px;
  --pc-wrap-vw: 90vw;
  --pc-wrap: min(var(--pc-wrap-max), var(--pc-wrap-vw));
  --pc-gutter: clamp(16px, 2vw, 28px);
  --pc-header-height: 80px;
  --pc-bar-pad-x: clamp(16px, 2.5vw, 32px);
  --pc-page-pad-y: clamp(32px, 6vh, 96px);
  --pc-page-top: clamp(40px, 9vh, 120px);
}

@media (min-width: 1920px) { :root { --pc-wrap-vw: 86vw; } }


/* === Sticky Footer Shell === */

html, body { height: 100%; }
body { min-height: 100vh; display: flex; flex-direction: column; background: #000; color: #e9eef1; }
#page { flex: 1 0 auto; display: flex; flex-direction: column; }
.site-content, .site-main, #content { flex: 1 0 auto; }
.site-footer, #colophon, .elementor-location-footer { margin-top: auto; }


/* === Global Content Canvas === */

:is(
  .site-content, .site-main, #content, .content-area,
  .entry-content, .page-content
) {
  width: var(--pc-wrap) !important;
  max-width: none !important;
  margin: 0 auto !important;
  box-sizing: border-box !important;
}


/* === Elementor Containers === */

.elementor-section.elementor-section-boxed > .elementor-container,
.elementor .elementor-container,
.e-con {
  max-width: var(--pc-wrap) !important;
  margin-left: auto !important;
  margin-right: auto !important;
  padding-left: var(--pc-gutter) !important;
  padding-right: var(--pc-gutter) !important;
}

/* Header & footer: full-width edge-to-edge */
.elementor-location-header .elementor-container,
.elementor-location-header .e-con,
.elementor-location-footer .elementor-container,
.elementor-location-footer .e-con {
  max-width: none !important;
  width: 100% !important;
  padding-left: var(--pc-bar-pad-x) !important;
  padding-right: var(--pc-bar-pad-x) !important;
}

.site-main .container,
.site-content .container,
.elementor-kit *, .elementor-container * { max-width: 100% !important; }


/* === Page Breathing === */

.site-content, .site-main, #content { padding: 0px !important; min-height: 60vh; }
body:not(.elementor-page) h1.entry-title { margin-top: 0px !important; }
.entry-content > h1:first-child { margin-top: var(--pc-page-top); }

.elementor-page .elementor-location-single:not(.elementor-edit-area-active) .elementor-section-wrap > .elementor-section:first-child { margin-top: clamp(12px, 4vh, 48px); }


/* === Utility Classes === */

.pc-wrap { max-width: var(--pc-wrap); margin: 0 auto; padding-left: var(--pc-gutter); padding-right: var(--pc-gutter); box-sizing: border-box; }

.pc-section { padding-top: clamp(40px, 6vw, 96px); padding-bottom: clamp(40px, 6vw, 96px); background: #000; }
.pc-section--tight { padding-top: clamp(24px, 4vw, 56px); padding-bottom: clamp(24px, 4vw, 56px); }
.pc-section--alt { background: #0b0b0b; }
.pc-section__inner { width: 100%; }
.pc-col { display: flex; flex-direction: column; gap: clamp(10px, 1.6vw, 16px); min-width: 0; }
.pc-col--media img { width: 100%; height: auto; border-radius: 6px; }

.pc-bleed { position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; width: 100vw; }


/* === Hero === */

.pc-hero:is(.e-con, .elementor-section) {
  max-width: none !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  position: relative;
  background-color: #000;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  background-attachment: scroll;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  overflow: clip;
  box-sizing: border-box;
}

.pc-hero:is(.e-con, .elementor-section) { left: 50%; transform: translateX(-50%); width: 100dvw !important; max-width: 100dvw !important; }

.pc-hero.pc-hero--light::before { background: linear-gradient(180deg, rgba(0,0,0,.25) 0%, rgba(0,0,0,.10) 40%, rgba(0,0,0,.25) 100%); }

.pc-hero::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgba(0,0,0,.55) 0%, rgba(0,0,0,.35) 40%, rgba(0,0,0,.55) 100%); }

.pc-hero__inner { position: relative; z-index: 1; width: min(var(--pc-wrap), 100%); margin-left: auto; margin-right: auto; padding-left: var(--pc-gutter); padding-right: var(--pc-gutter); box-sizing: border-box; padding-top: clamp(24px, 4vw, 48px); padding-bottom: clamp(24px, 4vw, 48px); }

.pc-hero h1 { color: #fff; font-family: "Montserrat", sans-serif; font-weight: 900; text-transform: uppercase; letter-spacing: .02em; font-size: clamp(28px, 4.5vw, 56px); line-height: 1.1; margin: 0 0 10px 0; text-align: left; }
.pc-hero h2 { color: #e3e3e3; font-family: "Montserrat", sans-serif; font-weight: 600; font-size: clamp(16px, 1.8vw, 22px); line-height: 1.45; margin: 6px 0 0 0; max-width: 80ch; text-align: left; }

#content .elementor > .e-con.e-parent:first-child.pc-hero,
.site-content > .elementor > .e-con.e-parent:first-child.pc-hero { margin-top: var(--pc-page-top) !important; }

@supports (-webkit-touch-callout: none) { .pc-hero:is(.e-con, .elementor-section) { background-attachment: scroll; } }


/* === First Section Breathing === */

#content .elementor > .e-con.e-parent:first-child,
.site-content > .elementor > .e-con.e-parent:first-child,
.site-content > .e-con.e-parent:first-child { margin-top: var(--pc-page-top) !important; }


/* === Header Nav Font Lock === */

.elementor-location-header .elementor-nav-menu .elementor-item { font-family: 'Montserrat', sans-serif; font-weight: 900; text-transform: uppercase; }
