/* ==========================================================================
   U-LIK BASE / UTILITY LAYER
   Global structural classes shared by every ulik-* component: container,
   section wrapper, button, and generic scoped resets. Nothing here uses a
   bare element selector (h1, .container, .button, etc.) so it cannot leak
   into other WordPress content, Pro's own markup, or third-party plugins.
   ========================================================================== */

/* ---- Scoped box-sizing reset (ulik- tree only) ---- */
[class^="ulik-"],
[class*=" ulik-"] {
  box-sizing: border-box;
}

/* ---- Container ---------------------------------------------------------- */
.ulik-container {
  width: 100%;
  max-width: var(--ulik-container-max);
  margin-inline: auto;
  padding-inline: var(--ulik-container-gutter);
}

.ulik-container--narrow {
  max-width: 1060px;
}

.ulik-container--flush {
  max-width: none;
  padding-inline: 0;
}

@media (max-width: 1199px) {
  .ulik-container {
    padding-inline: var(--ulik-container-gutter-tablet);
  }
}

@media (max-width: 767px) {
  .ulik-container {
    padding-inline: var(--ulik-container-gutter-mobile);
  }
}

/* ---- Section wrapper ----------------------------------------------------
   Every ulik-* section render function wraps its content in .ulik-section so
   vertical rhythm, background and overflow behavior stay consistent and
   editable from one place. Section-specific modifier classes set background
   and spacing; nothing is hard-coded per instance.
   -------------------------------------------------------------------------- */
.ulik-section {
  position: relative;
  overflow: hidden;
  background-color: var(--ulik-color-background);
  padding-top: var(--ulik-space-8);
  padding-bottom: var(--ulik-space-8);
}

.ulik-section--surface {
  background-color: var(--ulik-color-surface);
}

.ulik-section--primary {
  background-color: var(--ulik-color-primary);
  color: var(--ulik-color-white);
}

.ulik-section--tight {
  padding-top: var(--ulik-space-6);
  padding-bottom: var(--ulik-space-6);
}

.ulik-section--flush {
  padding-top: 0;
  padding-bottom: 0;
}

.ulik-section__header {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--ulik-space-3);
  text-align: center;
  max-width: 1060px;
  margin: 0 auto var(--ulik-space-6);
}

.ulik-section__header--left {
  align-items: flex-start;
  text-align: left;
  margin-inline: 0;
}

.ulik-eyebrow {
  display: block;
  font-family: var(--ulik-font-heading);
  font-weight: var(--ulik-fw-bold);
  font-size: var(--font-size-14);
  line-height: var(--ulik-lh-tight);
  letter-spacing: var(--ulik-ls-eyebrow);
  text-transform: uppercase;
  color: var(--ulik-color-accent);
  margin: 0;
}

.ulik-section__title {
  font-family: var(--ulik-font-heading);
  font-weight: var(--ulik-fw-bold);
  font-size: var(--font-size-32);
  line-height: var(--ulik-lh-tight);
  color: var(--ulik-color-primary);
  margin: 0;
}

.ulik-section--primary .ulik-section__title,
.ulik-section--on-dark .ulik-section__title {
  color: var(--ulik-color-white);
}

.ulik-section__description {
  font-family: var(--ulik-font-body);
  font-weight: var(--ulik-fw-medium);
  font-size: var(--font-size-20);
  line-height: var(--ulik-lh-snug);
  color: var(--ulik-color-text-muted);
  margin: 0;
}

.ulik-section--on-dark .ulik-section__description {
  color: rgba(255, 255, 255, 0.85);
}

/* ---- Visually hidden (a11y) ---------------------------------------------- */
.ulik-visually-hidden {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ---- Focus states --------------------------------------------------------
   Every interactive ulik-* element gets a consistent, visible focus ring.
   ---------------------------------------------------------------------- */
.ulik-button:focus-visible,
.ulik-nav__link:focus-visible,
.ulik-card__link:focus-visible,
.ulik-logo:focus-visible,
.ulik-footer__link:focus-visible,
.ulik-burger:focus-visible {
  outline: 2px solid var(--ulik-color-accent);
  outline-offset: 3px;
  border-radius: var(--ulik-radius-sm);
}

/* ---- Scroll reveal (opt-in via data-ulik-animate, driven by ulik-components.js) ---- */
.ulik-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 600ms ease, transform 600ms ease;
}
.ulik-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ---- Reduced motion ------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
  [class^="ulik-"],
  [class*=" ulik-"],
  [class^="ulik-"] *,
  [class*=" ulik-"] * {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}

/* ---- Button (ulik-button) ------------------------------------------------
   Shared by header CTA, About Us CTA, and closing CTA. Variants below.
   -------------------------------------------------------------------------- */
.ulik-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--ulik-space-2);
  font-family: var(--ulik-font-heading);
  font-weight: var(--ulik-fw-medium);
  font-size: var(--font-size-20);
  line-height: var(--ulik-lh-relaxed);
  white-space: nowrap;
  text-decoration: none;
  border: none;
  cursor: pointer;
  border-radius: var(--ulik-radius-sm);
  padding: 14px 24px;
  box-shadow: var(--ulik-shadow-button);
  transition: background-color var(--ulik-transition-base), transform var(--ulik-transition-fast), box-shadow var(--ulik-transition-base);
}

.ulik-button:hover,
.ulik-button:focus-visible {
  transform: translateY(-1px);
}

.ulik-button--primary {
  background-color: var(--ulik-color-primary);
  color: var(--ulik-color-white);
  border: 1.5px solid transparent; /* reserved so the hover state below never shifts the button's size (box-sizing: border-box) */
}
.ulik-button--primary:hover,
.ulik-button--primary:focus-visible {
  background-color: var(--ulik-color-white);
  color: var(--ulik-color-primary);
  border-color: var(--ulik-color-primary);
  box-shadow: none;
}

.ulik-button--accent {
  background-color: var(--ulik-color-accent);
  color: var(--ulik-color-white);
}
.ulik-button--accent:hover,
.ulik-button--accent:focus-visible {
  background-color: var(--ulik-color-accent-hover);
  color: var(--ulik-color-white);
}

.ulik-button--outline {
  background-color: transparent;
  color: var(--ulik-color-primary);
  box-shadow: none;
  border: 1.5px solid var(--ulik-color-primary);
}
.ulik-button--outline:hover,
.ulik-button--outline:focus-visible {
  background-color: var(--ulik-color-primary);
  color: var(--ulik-color-white);
}

.ulik-button--sm {
  font-size: var(--font-size-16);
  padding: 10px 18px;
}

.ulik-button--block {
  display: flex;
  width: 100%;
}

.ulik-button__icon {
  display: inline-flex;
  width: 1em;
  height: 1em;
  flex-shrink: 0;
}
.ulik-button__icon svg {
  width: 100%;
  height: 100%;
}

.ulik-button--icon-left .ulik-button__icon {
  order: -1;
}

@media (max-width: 767px) {
  .ulik-button {
    font-size: var(--font-size-16);
  }
}

/* ---- Generic responsive image treatment ---------------------------------- */
.ulik-image {
  display: block;
  width: 100%;
  height: auto;
}

.ulik-image--cover {
  height: 100%;
  object-fit: cover;
}
