/**
 * 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)));
  }
}
