/** Layout system adapted from bfoto-html-prototype; all selectors are namespaced. */
.bfoto-v3-hero,
.bfoto-v3-page-hero,
.bfoto-v3-story {
  width: min(100% - 64px, 1400px);
  margin-inline: auto;
}
.bfoto-v3-hero { min-height: calc(100svh - 84px); align-items: stretch; }
.bfoto-v3-hero__content { width: 48%; padding: clamp(72px, 9vw, 144px) clamp(32px, 6vw, 96px) clamp(64px, 8vw, 112px) 0; }
.bfoto-v3-hero__image { width: 52%; min-height: 620px; overflow: hidden; }
.bfoto-v3-hero__image img { width: 100%; height: 100%; object-fit: cover; }
.bfoto-v3-hero h1 { max-width: 760px; font-size: clamp(3rem, 6vw, 6.5rem); line-height: 1.08; }
.bfoto-v3-intro { display: grid; grid-template-columns: .72fr 1.28fr; gap: clamp(48px, 8vw, 128px); }
.bfoto-achievements__grid { gap: 1px; background: var(--bfoto-border); }
.bfoto-achievements__grid > .elementor-element { background: var(--bfoto-bg-primary); }
.bfoto-v3-story { display: grid; grid-template-columns: 1.2fr .8fr; min-height: 0; }
.bfoto-v3-story__image img { aspect-ratio: 16 / 11; object-fit: cover; }
.bfoto-v3-story__content { padding: clamp(48px, 7vw, 112px); }
.bfoto-v3-services__list { display: grid !important; grid-template-columns: repeat(2, 1fr); border-top: 1px solid var(--bfoto-border); }
.bfoto-v3-services__list > .elementor-element { min-height: 260px; padding: 40px; border-right: 1px solid var(--bfoto-border); border-bottom: 1px solid var(--bfoto-border); }
.bfoto-v3-page-hero { display: grid; grid-template-columns: 1.15fr .85fr; }
.bfoto-v3-page-hero__content { width: auto !important; }
.bfoto-v3-page-hero__image { width: auto !important; min-height: 560px; }
.bfoto-v3-page-hero__image img { width: 100%; height: 100%; object-fit: cover; }
.bfoto-v3-page__body { width: min(100% - 64px, 1400px); margin-inline: auto; padding-inline: 0; }
.bfoto-v3-page__row { grid-template-columns: 72px minmax(240px, .85fr) 1.15fr; }
.bfoto-project-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: clamp(20px, 3vw, 40px); }
.bfoto-project { grid-column: span 5; margin-bottom: 64px; }
.bfoto-project:nth-child(3n + 2) { grid-column: span 7; }
.bfoto-project img { width: 100%; height: auto; transition: transform .7s cubic-bezier(.2,.7,.2,1); }
.bfoto-project:hover img { transform: scale(1.02); }
.bfoto-publication-list,.bfoto-archive-list { border-top: 1px solid var(--bfoto-border); }
.bfoto-archive-row { display: grid; grid-template-columns: 80px 110px 1fr; gap: 24px; align-items: center; padding: 20px 0; border-bottom: 1px solid var(--bfoto-border); }
.bfoto-gallery-grid { columns: 3; column-gap: 24px; }
.bfoto-gallery-grid figure { break-inside: avoid; margin: 0 0 40px; }
.bfoto-contact { display: grid; grid-template-columns: .75fr 1.25fr; gap: clamp(64px, 10vw, 160px); }

/* 3.3 visual QA refinements: safer hero proportions and stronger readability. */
.bfoto-menu a { font-size: .8125rem; }
.bfoto-v3-page-hero {
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  align-items: stretch;
  overflow: hidden;
}
.bfoto-v3-page-hero__content,
.bfoto-v3-page-hero__image { min-width: 0; }
.bfoto-v3-page-hero__content {
  justify-content: center;
  padding: clamp(64px, 8vw, 120px) clamp(32px, 5vw, 72px) clamp(64px, 8vw, 120px) 0;
}
.bfoto-v3-page-hero__content h1 {
  max-width: 100%;
  overflow-wrap: anywhere;
  font-size: clamp(3.25rem, 6.5vw, 7rem);
  line-height: 1;
}
.bfoto-v3-page-hero__image {
  min-height: 520px;
  max-height: 760px;
  overflow: hidden;
}
.bfoto-v3-page-hero__image .elementor-widget-image,
.bfoto-v3-page-hero__image .elementor-widget-container { height: 100%; }
.bfoto-v3-page-hero__image img { display: block; min-height: 100%; object-position: center; }
.bfoto-page--portfolio { grid-template-columns: minmax(300px, .72fr) minmax(0, 1.28fr); }
.bfoto-page--portfolio .bfoto-v3-page-hero__content h1 { font-size: clamp(3.2rem, 5.8vw, 6.5rem); }
.bfoto-page--contact-us,
.bfoto-page--contact { grid-template-columns: minmax(300px, .8fr) minmax(0, 1.2fr); }
.bfoto-page--contact-us .bfoto-v3-page-hero__image,
.bfoto-page--contact .bfoto-v3-page-hero__image { max-height: 720px; }
.bfoto-page--contact-us .bfoto-v3-page-hero__image img,
.bfoto-page--contact .bfoto-v3-page-hero__image img { object-position: center 20%; }
.bfoto-v3-page__row p { max-width: 720px; font-size: clamp(1rem, 1.15vw, 1.125rem); line-height: 1.8; }
.bfoto-v3-page__row h2 { line-height: 1.2; }
.bfoto-v3-page__body { padding-block: clamp(64px, 8vw, 112px); }
.bfoto-site-footer p,
.bfoto-site-footer a { font-size: max(.9375rem, 15px); }

@media (max-width: 1024px) {
  .bfoto-v3-hero,.bfoto-v3-page-hero,.bfoto-v3-story { width: min(100% - 40px, 1400px); grid-template-columns: 1fr; flex-direction: column; }
  .bfoto-v3-hero__content,.bfoto-v3-hero__image { width: 100%; }
  .bfoto-v3-hero__image,.bfoto-v3-page-hero__image { min-height: 52vh; }
  .bfoto-v3-intro,.bfoto-contact { grid-template-columns: 1fr; }
  .bfoto-project,.bfoto-project:nth-child(3n + 2) { grid-column: span 6; }
  .bfoto-gallery-grid { columns: 2; }
  .bfoto-page--portfolio,.bfoto-page--contact-us,.bfoto-page--contact { grid-template-columns: 1fr; }
  .bfoto-v3-page-hero__content { padding-right: 0; }
}
@media (max-width: 767px) {
  .bfoto-v3-hero,.bfoto-v3-page-hero,.bfoto-v3-story,.bfoto-v3-page__body { width: min(100% - 32px, 100%); }
  .bfoto-v3-hero { min-height: 0; }
  .bfoto-v3-hero__content { padding: 72px 0 48px; }
  .bfoto-v3-hero__image,.bfoto-v3-page-hero__image { min-height: 0; }
  .bfoto-v3-services__list { grid-template-columns: 1fr; }
  .bfoto-v3-page__row { grid-template-columns: 1fr; }
  .bfoto-project-grid { display: block; }
  .bfoto-project { margin-bottom: 48px; }
  .bfoto-gallery-grid { columns: 1; }
  .bfoto-archive-row { grid-template-columns: 64px 1fr; }
  .bfoto-v3-page-hero__content h1 { overflow-wrap: normal; font-size: clamp(3rem, 15vw, 5rem); }
  .bfoto-v3-page-hero__image { max-height: none; aspect-ratio: 4 / 3; }
  .bfoto-page--contact-us .bfoto-v3-page-hero__image,
  .bfoto-page--contact .bfoto-v3-page-hero__image { max-height: none; aspect-ratio: 4 / 5; }
}
