/**
 * Hanly Adaptive Composition v0.2
 * Safe, class-driven structural constraints for Elementor compositions.
 */
.hc-ac-section,
.hc-ac-inner,
.hc-ac-split,
.hc-ac-split-direct,
.hc-ac-media,
.hc-ac-copy,
.hc-ac-copy-wide {
  box-sizing: border-box;
  min-width: 0;
}

.hc-ac-section {
  --hc-ac-max-width: 1440px;
  --hc-ac-xl-max-width: 1560px;
  --hc-ac-gutter: clamp(24px, 3vw, 48px);
  --hc-ac-xl-gutter: clamp(60px, 4vw, 96px);
  --hc-ac-section-pad: clamp(64px, 7vw, 112px);
  --hc-ac-gap: clamp(32px, 5vw, 80px);
  --hc-ac-copy-width: 620px;
  --hc-ac-copy-wide-width: 800px;
  --hc-ac-split-text: minmax(0, 2fr);
  --hc-ac-split-media: minmax(0, 3fr);
  position: relative;
  width: 100%;
  max-width: none;
  overflow-x: clip;
}

/* Structure only: rhythm is explicitly opt-in. */
.hc-ac-rhythm {
  padding-block: var(--hc-ac-section-pad);
}

.hc-ac-section-short,
.hc-ac-section-medium,
.hc-ac-section-tall {
  padding-block: var(--hc-ac-section-pad);
}

.hc-ac-section-short {
  --hc-ac-section-pad: clamp(40px, 4vw, 72px);
  min-height: min(44vh, 520px);
}

.hc-ac-section-medium {
  min-height: min(68vh, 780px);
}

.hc-ac-section-tall {
  --hc-ac-section-pad: clamp(80px, 8vw, 136px);
  min-height: min(88vh, 980px);
}

/* Two classes give Elementor-aware specificity without overriding narrower widths. */
.hc-ac-inner,
.elementor-element.hc-ac-inner {
  max-width: min(var(--hc-ac-max-width), calc(100% - (var(--hc-ac-gutter) * 2)));
  margin-inline: auto;
  min-width: 0;
}

.hc-ac-copy,
.elementor-element.hc-ac-copy {
  max-width: min(100%, var(--hc-ac-copy-width));
  min-width: 0;
  flex-basis: auto;
}

.hc-ac-copy-wide,
.elementor-element.hc-ac-copy-wide {
  max-width: min(100%, var(--hc-ac-copy-wide-width));
  min-width: 0;
  flex-basis: auto;
}

.hc-ac-media {
  max-width: 100%;
  overflow: hidden;
}

.hc-ac-media :is(img, video, iframe, picture) {
  display: block;
  max-width: 100%;
}

.hc-ac-media :is(img, video) {
  width: 100%;
  height: auto;
  object-fit: cover;
}

.hc-ac-bleed {
  width: 100%;
  max-width: none;
}

.hc-ac-split {
  display: grid;
  grid-template-columns: var(--hc-ac-split-text) var(--hc-ac-split-media);
  gap: var(--hc-ac-gap);
  align-items: center;
}

.hc-ac-split-reverse {
  grid-template-columns: var(--hc-ac-split-media) var(--hc-ac-split-text);
}

.hc-ac-split-reverse > :first-child {
  order: 2;
}

.hc-ac-split-reverse > :last-child {
  order: 1;
}

/* Elementor boxed containers place assignable children inside generated .e-con-inner. */
.hc-ac-split-direct.e-con-full,
.hc-ac-split-direct > .e-con-inner {
  display: grid;
  grid-template-columns: var(--hc-ac-split-text) var(--hc-ac-split-media);
  gap: var(--hc-ac-gap);
  align-items: center;
}

.hc-ac-split-direct.e-con-full > .e-con,
.hc-ac-split-direct > .e-con-inner > .e-con {
  min-width: 0;
  width: auto;
  max-width: 100%;
}

.hc-ac-split-direct-reverse.e-con-full,
.hc-ac-split-direct-reverse > .e-con-inner {
  grid-template-columns: var(--hc-ac-split-media) var(--hc-ac-split-text);
}

.hc-ac-split-direct-reverse.e-con-full > .e-con:first-child,
.hc-ac-split-direct-reverse > .e-con-inner > .e-con:first-child {
  order: 2;
}

.hc-ac-split-direct-reverse.e-con-full > .e-con:last-child,
.hc-ac-split-direct-reverse > .e-con-inner > .e-con:last-child {
  order: 1;
}

.hc-ac-align-start {
  text-align: start;
  justify-items: start;
  align-items: flex-start;
}

.hc-ac-align-center {
  text-align: center;
  justify-items: center;
  align-items: center;
}

.hc-ac-align-end {
  text-align: end;
  justify-items: end;
  align-items: flex-end;
}

@media (max-width: 900px) {
  .hc-ac-section {
    --hc-ac-gutter: clamp(20px, 4vw, 36px);
    --hc-ac-section-pad: clamp(52px, 8vw, 88px);
    --hc-ac-gap: clamp(28px, 6vw, 52px);
  }

  .hc-ac-split,
  .hc-ac-split-reverse,
  .hc-ac-split-direct.e-con-full,
  .hc-ac-split-direct > .e-con-inner,
  .hc-ac-split-direct-reverse.e-con-full,
  .hc-ac-split-direct-reverse > .e-con-inner {
    grid-template-columns: minmax(0, 1fr);
  }

  .hc-ac-split-reverse > *,
  .hc-ac-split-direct-reverse.e-con-full > .e-con,
  .hc-ac-split-direct-reverse > .e-con-inner > .e-con {
    order: initial;
  }
}

@media (max-width: 600px) {
  .hc-ac-section {
    --hc-ac-gutter: 20px;
    --hc-ac-section-pad: clamp(44px, 12vw, 72px);
    --hc-ac-gap: 28px;
  }

  .hc-ac-section-short,
  .hc-ac-section-medium,
  .hc-ac-section-tall {
    min-height: auto;
  }
}

@media (min-width: 1800px) and (min-aspect-ratio: 8/5) {
  .hc-ac-section {
    --hc-ac-gap: clamp(56px, 4vw, 88px);
  }

  .hc-ac-inner,
  .elementor-element.hc-ac-inner {
    max-width: min(var(--hc-ac-xl-max-width), calc(100% - (var(--hc-ac-xl-gutter) * 2)));
  }
}

/* Fluid hero safe zone for headers/logos overlaid inside the first section. */
.hc-adaptive-hero {
  --hc-hero-min-height: 760px;
  --hc-hero-safe-top: 230px;
  --hc-hero-safe-bottom: 130px;
  --hc-hero-growth-start: 1440px;
  --hc-hero-growth-max: 180px;
  --hc-hero-content-position: center;
  box-sizing: border-box;
  min-height: calc(var(--hc-hero-min-height) + clamp(0px, calc(var(--hc-hero-growth-start) - 100vw), var(--hc-hero-growth-max))) !important;
  padding-top: var(--hc-hero-safe-top) !important;
  padding-bottom: var(--hc-hero-safe-bottom) !important;
  justify-content: var(--hc-hero-content-position) !important;
}

/*
 * Interaction baseline
 *
 * Browsers and themes commonly expose the native focus ring after ordinary
 * pointer clicks. Keep pointer interaction visually clean while preserving a
 * clear, intentional ring for keyboard navigation. Component-level Hanly
 * focus-visible rules remain free to provide their own branded treatment.
 */
:where(a[href], button, input, select, textarea, summary, [role="button"], [tabindex]):focus:not(:focus-visible) {
  outline: none !important;
}

:where(a[href], button, input, select, textarea, summary, [role="button"], [tabindex]):focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
}

@media (max-width: 767px) {
  .hc-adaptive-hero {
    /* Mobile should remain intentional and compact; width growth is a narrow-desktop behavior. */
    min-height: var(--hc-hero-min-height) !important;
  }
}
