body {
  background-color: var(--color-surface, #fff8f4);
  overflow-x: hidden;
}

:root {
  --curve-sm: 0.5rem;
  --curve-md: 1rem;
  --curve-big: 2rem;
  --px-margin: 20px;
  --px-header-h: 4.5rem;
  --color-basalt: #161616;
  --color-limestone: #dcd0c7;
  --color-pine-green: #1d3f32;
  --color-pine-green-dark: #162f26;
  --color-surface: #fff8f4;
  --color-primary: #390d0f;
  --color-primary-container: #542222;
  --color-on-surface-variant: #524342;
  --color-inverse-on-surface: #fbeee5;
}

.curve-top-sm {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  border-top-left-radius: var(--curve-sm);
  border-top-right-radius: var(--curve-sm);
}

.curve-top-md {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  border-top-left-radius: var(--curve-md);
  border-top-right-radius: var(--curve-md);
}

.curve-top-big {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  border-top-left-radius: var(--curve-big);
  border-top-right-radius: var(--curve-big);
}

.overflow-hidden:has(> img.object-cover):not(.curve-top-big) {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  border-top-left-radius: var(--curve-md);
  border-top-right-radius: var(--curve-md);
}

.material-symbols-outlined {
  font-variation-settings: "FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;
}

/* Home hero: layered scroll parallax */
.px-scroll-container {
  position: relative;
  height: 120vh;
}

.px-wrapper {
  position: sticky;
  top: calc(var(--px-header-h) + 3rem);
  width: calc(100% - (2 * var(--px-margin)));
  max-width: 1440px;
  height: 80vh;
  margin: 0 auto;
  overflow: hidden;
  border-radius: var(--curve-big) var(--curve-big) 0 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

.px-layer {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  background-position: center bottom;
  background-size: cover;
  background-repeat: no-repeat;
}

.px-layer--bg {
  z-index: 1;
  transform: scale(1);
  background-image: url("../assets/img/parallax-bg.png");
}

.px-layer--fg {
  z-index: 2;
  background-image: url("../assets/img/parallax-fg.png");
}

.px-title {
  position: relative;
  z-index: 3;
  text-align: center;
  pointer-events: none;
}

.px-title h1,
.px-title p {
  filter: drop-shadow(0 2px 5px rgb(0 0 0 / 13%)) drop-shadow(0 1px 2px rgb(0 0 0 / 50%));
}

.glass-card {
  background: rgba(var(--color-surface-rgb, 255, 248, 244), 0.7);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(22, 22, 22, 0.1);
}

/* Master plan */
.ablaq-pattern {
  background-color: var(--color-surface);
  background-image: repeating-linear-gradient(
    0deg,
    transparent,
    transparent 40px,
    var(--color-limestone, #e5e2e1) 40px,
    var(--color-limestone, #e5e2e1) 80px
  );
}

/* Experience page */
.border-basalt-light {
  border-color: rgba(22, 22, 22, 0.15);
}

.fade-in-up {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.fade-in-up.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Typography: titles use Black Basalt Stone — only as default fallback, not override */
.font-headline-lg:not([class*="text-"]),
.font-headline-md:not([class*="text-"]),
.font-headline-sm:not([class*="text-"]) {
  color: var(--color-basalt);
}

/* Project by Numbers */
.numbers-card {
  position: relative;
  background: transparent;
  border: none;
  box-shadow: none;
}

.numbers-border-svg {
  position: absolute;
  inset: -2px;
  width: calc(100% + 4px);
  height: calc(100% + 4px);
  pointer-events: none;
}

.numbers-border-path {
  fill: none;
  stroke: var(--color-basalt);
  stroke-width: 3.5;
  stroke-linecap: round;
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
}

#numbers-section .numbers-stat {
  background-color: var(--color-pine-green);
  color: var(--color-limestone);
  border: none;
}

#numbers-section .numbers-stat .material-symbols-outlined {
  background-color: var(--color-pine-green-dark);
  color: var(--color-limestone);
}

#numbers-section .numbers-stat h3,
#numbers-section .numbers-stat p,
#numbers-section .numbers-stat .numbers-value,
#numbers-section .numbers-stat .numbers-value span {
  color: var(--color-limestone);
}

#numbers-section .numbers-stat .numbers-value span.text-on-surface-variant,
#numbers-section .numbers-stat p.text-on-surface-variant {
  opacity: 0.75;
}

#numbers-section .numbers-usages {
  border-color: rgba(22, 22, 22, 0.12);
}

#numbers-section .numbers-usages .material-symbols-outlined {
  background-color: var(--color-pine-green-dark);
  color: var(--color-limestone);
}

#numbers-section .numbers-usages h3 {
  color: var(--color-basalt);
}

#numbers-section .numbers-usages li {
  background-color: var(--color-pine-green);
  border-color: rgba(220, 208, 199, 0.25);
  color: var(--color-limestone);
}

.is-inview .numbers-border-path {
  animation: draw-numbers-border 2.2s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

@keyframes draw-numbers-border {
  to {
    stroke-dashoffset: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .is-inview .numbers-border-path {
    animation: none;
    stroke-dashoffset: 0;
  }
}

/* Ablaq Legacy scroll morph */
.ablaq-story {
  height: 180vh;
  position: relative;
}

.ablaq-story__pin {
  position: sticky;
  top: 5rem;
  height: calc(100vh - 5rem);
  min-height: 640px;
  display: flex;
  align-items: center;
  overflow: hidden;
}

.ablaq-story__stage {
  position: relative;
  width: 100%;
  min-height: 500px;
}

.ablaq-story__text {
  position: absolute;
  top: 50%;
  width: calc(50% - 3rem);
  max-width: 34rem;
  transform: translateY(-50%);
  z-index: 5;
}

.ablaq-story__text--start {
  left: 0;
  padding-right: 3rem;
}

.ablaq-story__text--end {
  right: 0;
  padding-left: 3rem;
}

.ablaq-story__images {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 10;
}

.ablaq-story__img {
  position: absolute;
  top: 0;
  left: 0;
  overflow: hidden;
  box-shadow: 0 12px 32px rgba(22, 22, 22, 0.08);
  will-change: transform, width, height;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  border-top-left-radius: var(--curve-md);
  border-top-right-radius: var(--curve-md);
}

.ablaq-story__img--primary {
  z-index: 20;
}

.ablaq-story__img--secondary {
  z-index: 10;
}

.ablaq-story__img--detail {
  z-index: 30;
  background-color: rgba(255, 255, 255, 0.7);
  padding: 1rem;
  filter: grayscale(100%) contrast(1.2);
}

.ablaq-story__measure {
  position: absolute;
  inset: 0;
  visibility: hidden;
  pointer-events: none;
}

.ablaq-story__measure-col {
  position: absolute;
  top: 0;
  width: 50%;
  height: 500px;
}

.ablaq-story__measure--start .ablaq-story__measure-col {
  right: 0;
}

.ablaq-story__measure--end .ablaq-story__measure-col {
  left: 0;
}

.ablaq-story__measure-slot--primary {
  position: absolute;
  top: 0;
  width: 75%;
  height: 16rem;
}

.ablaq-story__measure--start .ablaq-story__measure-slot--primary {
  right: 0;
}

.ablaq-story__measure--end .ablaq-story__measure-slot--primary {
  left: 0;
}

.ablaq-story__measure-slot--secondary {
  position: absolute;
  bottom: 0;
  width: 66.666667%;
  height: 12rem;
}

.ablaq-story__measure--start .ablaq-story__measure-slot--secondary {
  left: 0;
}

.ablaq-story__measure--end .ablaq-story__measure-slot--secondary {
  right: 0;
}

.ablaq-story__measure-slot--detail {
  position: absolute;
  top: 50%;
  width: 8rem;
  height: 8rem;
  transform: translateY(-50%);
}

.ablaq-story__measure--start .ablaq-story__measure-slot--detail {
  left: 25%;
  transform: translate(-50%, -50%);
}

.ablaq-story__measure--end .ablaq-story__measure-slot--detail {
  right: 25%;
  transform: translate(50%, -50%);
}

@media (min-width: 768px) {
  :root {
    --px-margin: 80px;
    --px-header-h: 5rem;
  }

  .ablaq-story__measure-slot--primary {
    height: 20rem;
  }

  .ablaq-story__measure-slot--secondary {
    height: 16rem;
  }
}

.ablaq-story--static {
  height: auto;
}

.ablaq-story--static .ablaq-story__pin {
  position: relative;
  top: auto;
  height: auto;
  min-height: 0;
  display: block;
  padding-top: 120px;
  padding-bottom: 120px;
}

.ablaq-story--static .ablaq-story__stage {
  display: flex;
  flex-direction: column;
  gap: 3rem;
  min-height: 0;
}

.ablaq-story--static .ablaq-story__text {
  position: relative;
  top: auto;
  left: auto;
  right: auto;
  width: 100%;
  max-width: none;
  transform: none;
  padding: 0;
}

.ablaq-story--static .ablaq-story__text--end {
  order: 3;
}

.ablaq-story--static .ablaq-story__images {
  position: relative;
  order: 2;
  height: 500px;
}

.ablaq-story--static .ablaq-story__measure {
  visibility: hidden;
}

@media (max-width: 767px) {
  .ablaq-story {
    height: 200vh;
  }

  .ablaq-story__pin {
    position: sticky;
    top: 4rem;
    height: calc(100vh - 4rem);
    min-height: 560px;
    display: flex;
    align-items: center;
    overflow: hidden;
    padding-top: 0;
    padding-bottom: 0;
  }

  .ablaq-story__stage {
    min-height: calc(100vh - 4rem - 2rem);
  }

  .ablaq-story__text {
    top: auto;
    width: 100%;
    max-width: none;
    padding: 0;
    z-index: 15;
  }

  .ablaq-story__text--start {
    top: 0;
    left: 0;
    right: 0;
    transform: none;
  }

  .ablaq-story__text--end {
    top: auto;
    bottom: 0;
    left: 0;
    right: 0;
    transform: none;
  }

  .ablaq-story__images {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    width: 100%;
    height: 16rem;
    order: unset;
    will-change: transform;
  }

  .ablaq-story:not(.ablaq-story--static) .ablaq-story__img--primary {
    top: 0;
    right: 0;
    left: auto;
    width: 75%;
    height: 9rem;
  }

  .ablaq-story:not(.ablaq-story--static) .ablaq-story__img--secondary {
    bottom: 0;
    left: 0;
    right: auto;
    top: auto;
    width: 66.666667%;
    height: 7rem;
  }

  .ablaq-story:not(.ablaq-story--static) .ablaq-story__img--detail {
    top: 50%;
    left: 20%;
    width: 5rem;
    height: 5rem;
    transform: translate(-50%, -50%);
  }

  .ablaq-story__measure {
    top: 0;
    bottom: auto;
    height: 16rem;
  }

  .ablaq-story__measure-col {
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    right: auto;
  }

  .ablaq-story__measure--start .ablaq-story__measure-col,
  .ablaq-story__measure--end .ablaq-story__measure-col {
    left: 0;
    right: auto;
  }

  .ablaq-story__measure-slot--primary {
    width: 75%;
    height: 9rem;
  }

  .ablaq-story__measure-slot--secondary {
    width: 66.666667%;
    height: 7rem;
  }

  .ablaq-story__measure-slot--detail {
    width: 5rem;
    height: 5rem;
  }

  .ablaq-story__measure--start .ablaq-story__measure-slot--primary,
  .ablaq-story__measure--end .ablaq-story__measure-slot--primary {
    top: 0;
    right: 0;
    left: auto;
  }

  .ablaq-story__measure--start .ablaq-story__measure-slot--secondary,
  .ablaq-story__measure--end .ablaq-story__measure-slot--secondary {
    bottom: 0;
    left: 0;
    right: auto;
  }

  .ablaq-story__measure--start .ablaq-story__measure-slot--detail,
  .ablaq-story__measure--end .ablaq-story__measure-slot--detail {
    top: 50%;
    left: 20%;
    transform: translate(-50%, -50%);
  }

  .ablaq-story--static {
    height: auto;
  }

  .ablaq-story--static .ablaq-story__pin {
    position: relative;
    top: auto;
    height: auto;
    min-height: 0;
    display: block;
    padding-top: 80px;
    padding-bottom: 80px;
  }

  .ablaq-story--static .ablaq-story__stage {
    display: flex;
    flex-direction: column;
    gap: 3rem;
    min-height: 0;
  }

  .ablaq-story--static .ablaq-story__text {
    position: relative;
    top: auto;
    bottom: auto;
    left: auto;
    right: auto;
    transform: none;
  }

  .ablaq-story--static .ablaq-story__text--end {
    order: 3;
  }

  .ablaq-story--static .ablaq-story__images {
    position: relative;
    order: 2;
    top: auto;
    bottom: auto;
    height: 360px;
  }

  .ablaq-story--static .ablaq-story__img--primary {
    top: 0;
    right: 0;
    left: auto;
    width: 75%;
    height: 65%;
    transform: none;
  }

  .ablaq-story--static .ablaq-story__img--secondary {
    bottom: 0;
    left: 0;
    right: auto;
    top: auto;
    width: 66%;
    height: 55%;
    transform: none;
  }

  .ablaq-story--static .ablaq-story__img--detail {
    top: 50%;
    left: 20%;
    width: 5rem;
    height: 5rem;
    transform: translate(-50%, -50%);
  }
}

.ablaq-story:not(.ablaq-story--ready):not(.ablaq-story--static) .ablaq-story__img {
  opacity: 0;
}

.ablaq-story--ready .ablaq-story__img {
  opacity: 1;
}

/* Mobile nav */
#mobile-menu {
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  transform: translateY(-0.5rem);
  transition:
    max-height 0.35s ease-out,
    opacity 0.25s ease-out,
    transform 0.35s ease-out;
}

#mobile-menu.open {
  max-height: 500px;
  opacity: 1;
  transform: translateY(0);
}

.mobile-menu__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  padding-top: 0.5rem;
}

.mobile-menu__col {
  align-items: flex-start;
}

nav .site-nav-link {
  font-size: 16px;
  line-height: 24px;
}

#mobile-menu .site-nav-link {
  font-size: 17px;
  line-height: 26px;
}

/* Mobile-only overrides */
@media (max-width: 767px) {
  .contact-section {
    position: relative;
  }

  .contact-section::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image: url("../assets/logo/SVG/main_icon_half.svg");
    background-repeat: no-repeat;
    background-position: left center;
    background-size: contain;
    opacity: 0.05;
    pointer-events: none;
    transform: scaleX(-1);
  }

  .contact-section > .max-w-container-max {
    position: relative;
    z-index: 1;
  }

  .component-card.is-active {
    background-color: var(--color-inverse-on-surface);
  }

  .component-card.is-active svg {
    color: var(--color-primary);
  }

  .component-card.is-active h3 {
    color: var(--color-primary);
  }

  .component-card.is-active p {
    color: var(--color-on-surface-variant);
  }
}

/* Decorative patterns from brand assets */
.pattern-bg-1 {
  background-image: url("../assets/logo/SVG/pattern_1.svg");
  background-repeat: repeat;
  background-size: cover;
}

.pattern-bg-2 {
  background-image: url("../assets/logo/SVG/pattern_2.svg");
  background-repeat: repeat;
  background-size: 600px;
}

.nav-link-active {
  color: var(--color-primary);
  border-bottom: 1px solid var(--color-primary);
  padding-bottom: 0.25rem;
}

.dark .nav-link-active {
  color: var(--color-primary-container);
  border-bottom-color: var(--color-primary-container);
}

.contact-bg-icon {
  background-image: url("../assets/logo/SVG/main_icon_half.svg");
}

:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}
