:root {
  --side-padding-base: clamp(1rem, 5vw, 4rem);
  --padding-xl: clamp(7.5rem, 15vw, 11rem);
  --padding-lg: clamp(5rem, 10vw, 7.5rem);
  --padding-md: clamp(3rem, 6vw, 5rem);
  --padding-sm: clamp(1.5rem, 4vw, 3rem);
  --padding-xs: clamp(0.75rem, 2vw, 1.5rem);
  --gap-lg: clamp(2rem, 4vw, 3rem);
  --gap-md: clamp(1rem, 2vw, 2rem);
  --gap-sm: clamp(0.5rem, 1vw, 1rem);
  --header-padding: clamp(0.75rem, 2vw, 1.25rem);
  --header-padding-slim: clamp(0.25rem, 0.5vw, 0.4rem);
  --header-height: 80px;
  --header-height-slim: 40px;
  --container-narrow: 900px;
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--header-height) + 20px);
}

.section-xl, .section-lg, .section-md, .section-sm, .section-xs, .section-none,
.section-hero, .section-hero-md, .section-hero-sm {
  padding-left: max(var(--side-padding-base), env(safe-area-inset-left)) !important;
  padding-right: max(var(--side-padding-base), env(safe-area-inset-right)) !important;
  margin: 0 !important;
  box-sizing: border-box !important;
}

.section-xl   { padding-top: var(--padding-xl) !important; padding-bottom: var(--padding-xl) !important; }
.section-lg   { padding-top: var(--padding-lg) !important; padding-bottom: var(--padding-lg) !important; }
.section-md   { padding-top: var(--padding-md) !important; padding-bottom: var(--padding-md) !important; }
.section-sm   { padding-top: var(--padding-sm) !important; padding-bottom: var(--padding-sm) !important; }
.section-xs   { padding-top: var(--padding-xs) !important; padding-bottom: var(--padding-xs) !important; }
.section-none { padding-top: 0 !important; padding-bottom: 0 !important; }

.section-hero, .section-hero-md {
  padding-top: var(--padding-md) !important;
  padding-bottom: var(--padding-md) !important;
}

.section-hero {
  min-height: 100vh !important;
  min-height: 100svh !important;
}

.section-hero-md {
  min-height: 75vh !important;
  min-height: 75svh !important;
}

.section-hero-sm {
  padding-top: var(--padding-sm) !important;
  padding-bottom: var(--padding-sm) !important;
  min-height: max(60svh, 450px) !important;
}

.section-full { padding-left: 0 !important; padding-right: 0 !important; }
.section-full .e-con-inner,
.section-full > .elementor-container,
.section-full > .wp-block-group__inner-container { max-width: 100% !important; width: 100% !important; padding-left: 0 !important; padding-right: 0 !important; }

.section-narrow .e-con-inner,
.section-narrow > .elementor-container,
.section-narrow > .wp-block-group__inner-container { max-width: var(--container-narrow) !important; margin-left: auto !important; margin-right: auto !important; }

.header-main {
  padding-top: var(--header-padding) !important;
  padding-bottom: var(--header-padding) !important;
  padding-left: max(var(--side-padding-base), env(safe-area-inset-left)) !important;
  padding-right: max(var(--side-padding-base), env(safe-area-inset-right)) !important;
}

.header-slim {
  padding-top: var(--header-padding-slim) !important;
  padding-bottom: var(--header-padding-slim) !important;
  padding-left: max(var(--side-padding-base), env(safe-area-inset-left)) !important;
  padding-right: max(var(--side-padding-base), env(safe-area-inset-right)) !important;
  min-height: auto !important;
}

.footer-main {
  padding-top: var(--padding-md) !important;
  padding-bottom: var(--padding-md) !important;
  padding-left: max(var(--side-padding-base), env(safe-area-inset-left)) !important;
  padding-right: max(var(--side-padding-base), env(safe-area-inset-right)) !important;
}

.footer-slim {
  padding-top: var(--padding-sm) !important;
  padding-bottom: var(--padding-sm) !important;
  padding-left: max(var(--side-padding-base), env(safe-area-inset-left)) !important;
  padding-right: max(var(--side-padding-base), env(safe-area-inset-right)) !important;
}

.section-offset { padding-top: calc(var(--header-height) + var(--padding-lg)) !important; }
.section-offset.section-md { padding-top: calc(var(--header-height) + var(--padding-md)) !important; }
.section-offset.section-sm { padding-top: calc(var(--header-height) + var(--padding-sm)) !important; }
.section-offset.section-none { padding-top: var(--header-height) !important; }
.section-offset-dual { padding-top: calc(var(--header-height) + var(--header-height-slim) + var(--padding-lg)) !important; }

.section-no-bottom { padding-bottom: 0 !important; }
.push-bottom { margin-top: auto !important; }
