/*
Theme Name: Anna Samuszonek
Author: Studio / wdrożenie autorskie
Description: Autorski motyw portfolio architektki Anny Samuszonek. Bez page buildera, z natywną obsługą projektów WordPress.
Version: 1.6.2
Requires at least: 6.5
Requires PHP: 8.0
Text Domain: anna-samuszonek
*/

:root {
  --paper: #f1efe8;
  --paper-strong: #e7e4da;
  --ink: #191916;
  --ink-soft: #5f5e57;
  --white: #faf9f5;
  --line: rgba(25, 25, 22, 0.2);
  --line-light: rgba(250, 249, 245, 0.24);
  --accent: #9d8060;
  --header-height: 6rem;
  --gutter: clamp(1.25rem, 4vw, 4.5rem);
  --section-space: clamp(6.5rem, 12vw, 12.5rem);
  --max-width: 112rem;
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
}

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1.0625rem;
  line-height: 1.5;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

body.is-menu-open,
body.is-lightbox-open { overflow: hidden; }

.admin-bar .site-header { top: 32px; }

img { display: block; max-width: 100%; }
button, a { color: inherit; }
button { font: inherit; }
a { text-decoration: none; }

:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 5px;
}

::selection { background: var(--ink); color: var(--white); }

.skip-link {
  position: fixed;
  z-index: 200;
  top: 0.75rem;
  left: 0.75rem;
  padding: 0.75rem 1rem;
  background: var(--white);
  color: var(--ink);
  transform: translateY(-150%);
  transition: transform 180ms ease;
}

.skip-link:focus { transform: translateY(0); }

.page-shell {
  width: min(100%, var(--max-width));
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.section { padding-block: var(--section-space); }

.section-kicker {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  margin: 0;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  line-height: 1;
  text-transform: uppercase;
}

.section-kicker span { color: var(--ink-soft); }
.section-kicker--light { color: var(--white); }
.section-kicker--light span { color: rgba(250, 249, 245, 0.5); }

.eyebrow {
  margin: 0;
  font-size: clamp(0.84rem, 1vw, 0.96rem);
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.text-link {
  display: inline-flex;
  align-items: center;
  gap: 0.8rem;
  width: fit-content;
  padding-block: 0.5rem;
  border-bottom: 1px solid currentColor;
  font-size: 0.94rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.text-link svg { width: 1.25rem; fill: none; stroke: currentColor; stroke-width: 1.25; transition: transform 300ms var(--ease); }
.text-link:hover svg { transform: translateX(0.35rem); }
.text-link--light { color: var(--white); }

/* Header */
.site-header {
  position: fixed;
  z-index: 100;
  top: 0;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-height: var(--header-height);
  padding-inline: var(--gutter);
  border-bottom: 1px solid transparent;
  color: var(--white);
  transition: min-height 450ms var(--ease), color 300ms ease, background-color 300ms ease, border-color 300ms ease;
}

.site-header.is-scrolled {
  min-height: 4.75rem;
  border-color: var(--line);
  background: rgba(241, 239, 232, 0.94);
  color: var(--ink);
  backdrop-filter: blur(14px);
}

.brand {
  position: relative;
  z-index: 102;
  display: block;
  line-height: 0;
}

.brand__variant { display: block; transition: opacity 300ms ease; }
.brand__variant--dark { position: absolute; inset: 0; opacity: 0; }
.brand__wordmark { display: block; width: clamp(17rem, 25vw, 22rem); height: auto; }
.brand__sygnet { display: none; width: 4.15rem; height: auto; }
.site-header.is-scrolled .brand__variant--light,
.project-page .site-header .brand__variant--light,
.legal-page .site-header .brand__variant--light { opacity: 0; }
.site-header.is-scrolled .brand__variant--dark,
.project-page .site-header .brand__variant--dark,
.legal-page .site-header .brand__variant--dark { opacity: 1; }

.site-nav__list {
  display: flex;
  align-items: center;
  gap: clamp(1.75rem, 3vw, 3.5rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-nav a { position: relative; display: inline-flex; gap: 0.5rem; padding-block: 0.6rem; font-size: 0.875rem; letter-spacing: 0.04em; }
.site-nav a::after { content: ""; position: absolute; right: 0; bottom: 0.3rem; left: 0; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform 300ms var(--ease); }
.site-nav a:hover::after, .site-nav a:focus-visible::after, .site-nav a[aria-current="page"]::after { transform: scaleX(1); transform-origin: left; }
.site-nav a span { font-size: 0.68rem; opacity: 0.58; }
.menu-toggle { display: none; }

/* Hero */
.hero {
  position: relative;
  min-height: 43rem;
  height: 100svh;
  overflow: hidden;
  isolation: isolate;
  background: #343932;
  color: var(--white);
}

.hero__media,
.hero__media img,
.hero__shade { position: absolute; inset: 0; width: 100%; height: 100%; }

.hero__media { z-index: -3; }
.hero__media img { object-fit: cover; object-position: center 52%; animation: hero-in 1.5s var(--ease) both; }
.hero__shade { z-index: -2; background: linear-gradient(90deg, rgba(12, 14, 12, 0.7) 0%, rgba(12, 14, 12, 0.24) 52%, rgba(12, 14, 12, 0.08) 100%), linear-gradient(0deg, rgba(12, 14, 12, 0.42) 0%, transparent 44%); }

.hero__content {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  height: 100%;
  padding-top: calc(var(--header-height) + 3rem);
  padding-bottom: clamp(5.5rem, 11vh, 8.5rem);
}

.hero__eyebrow { margin-bottom: clamp(1.5rem, 4vh, 2.5rem); }
.hero__eyebrow span { margin-inline: 0.35rem; opacity: 0.55; }

.hero h1 {
  max-width: 11ch;
  margin: 0 0 clamp(2rem, 4vh, 3rem);
  font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif;
  font-size: clamp(4rem, 9.2vw, 10.5rem);
  font-weight: 400;
  letter-spacing: -0.047em;
  line-height: 0.84;
}

.hero__actions { display: flex; align-items: stretch; flex-wrap: wrap; gap: 0.75rem; }
.hero-cta {
  display: inline-flex;
  min-height: 4rem;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 0.8rem 1.1rem;
  border: 1px solid rgba(250, 249, 245, 0.72);
  font-size: 0.82rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  transition: background-color 260ms ease, border-color 260ms ease, color 260ms ease, transform 300ms var(--ease);
}
.hero-cta:hover { transform: translateY(-0.18rem); }
.hero-cta svg { width: 1.15rem; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.25; transition: transform 300ms var(--ease); }
.hero-cta--primary { min-width: 13.75rem; border-color: var(--white); background: var(--white); color: var(--ink); font-weight: 500; }
.hero-cta--primary:hover { background: transparent; color: var(--white); }
.hero-cta--primary:hover svg { transform: translateX(0.28rem); }
.hero-cta--secondary { min-width: 17rem; background: rgba(17, 17, 15, 0.16); backdrop-filter: blur(8px); }
.hero-cta--secondary:hover { border-color: var(--white); background: rgba(250, 249, 245, 0.1); }
.hero-cta--secondary:hover svg { transform: translate(0.18rem, -0.18rem); }
.hero-cta--secondary span { display: grid; gap: 0.18rem; }
.hero-cta--secondary small { color: rgba(250, 249, 245, 0.62); font-size: 0.59rem; font-weight: 500; letter-spacing: 0.12em; line-height: 1.2; }
.hero-cta--secondary strong { font-size: 0.78rem; font-weight: 500; line-height: 1.3; }

/* 1.6: keep the two actions together and the external collaborator subordinate. */
.hero-cta--procedures:hover svg { transform: translateX(0.28rem); }
.hero__inspector { display: inline-flex; align-items: center; align-self: flex-start; gap: 0.65rem; max-width: 100%; min-height: 44px; margin-top: 0.65rem; padding-block: 0.4rem; font-size: 0.85rem; line-height: 1.5; color: var(--white); }
.hero__inspector-role { color: #e1dfd8; }
.hero__inspector svg { width: 1rem; height: 1rem; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.2; }
.hero__inspector:hover > span { text-decoration: underline; text-underline-offset: 0.3em; }
.hero { height: auto; min-height: max(43rem, 100svh); display: flex; }
.hero__content { width: 100%; min-height: inherit; height: auto; }

/* A short service sheet in the existing warm-paper / architectural type system. */
.procedures-main { padding-top: var(--header-height); }
.procedures-sheet { background: #515c59; color: var(--white); }
.procedures-sheet__grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); grid-template-areas: "heading body" "visual body"; column-gap: clamp(3rem, 7vw, 8rem); row-gap: clamp(1.75rem, 3vw, 3rem); align-items: start; padding-block: clamp(3.5rem, 5vw, 5rem); }
.procedures-sheet__heading { grid-area: heading; }
.procedures-sheet__body { grid-area: body; align-self: center; padding-block: 0.5rem; }
.procedures-sheet__visual { grid-area: visual; margin: 0 0 0 clamp(1.5rem, 3.5vw, 3.5rem); }
.procedures-sheet__visual img { width: 100%; height: auto; }
.procedures-sheet h1 { margin: 0; font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif; font-size: clamp(3.25rem, 6.4vw, 6rem); font-weight: 400; letter-spacing: -0.025em; line-height: 1.02; text-wrap: balance; }
.procedures-sheet__services ul { list-style: none; padding: 0; margin: 0; }
.procedures-sheet__services li { padding: 1.15rem 0; border-bottom: 1px solid var(--line-light); font-size: clamp(1.18rem, 1.75vw, 1.65rem); line-height: 1.45; }
.procedures-sheet__services li:first-child { padding-top: 0; }
.procedures-sheet__services p { max-width: 65ch; }
.procedures-sheet__contact { margin-top: 2rem; }
.procedures-sheet ::selection { background: var(--white); color: #515c59; }
.project-shot.project-shot--compact { max-width: 48rem; margin-inline: auto; }
.project-shot.project-shot--compact img { width: 100%; height: auto; object-fit: contain; }
.project-plan__download { display: inline-flex; align-items: center; min-height: 44px; margin-top: 1.5rem; text-decoration: underline; text-underline-offset: 0.3em; }
@media (max-width: 760px) {
  .procedures-sheet__grid { grid-template-columns: 1fr; grid-template-areas: "heading" "body" "visual"; gap: 2.75rem; padding-block: 3.5rem; }
  .procedures-sheet__body { padding-block: 0; }
  .procedures-sheet__visual { margin: 0; }
  .procedures-sheet h1 { font-size: clamp(3.25rem, 10vw, 4.5rem); }
  .procedures-sheet__services li { font-size: 1.22rem; }
}
@media (max-width: 900px) {
  .site-nav { overflow-y: auto; }
}
@media (max-width: 900px) and (max-height: 650px) {
  .site-nav .site-nav__list { align-content: start; }
  .site-nav .site-nav__list a { font-size: 2rem; padding-block: 0.55rem; }
}

.hero__index {
  position: absolute;
  right: var(--gutter);
  bottom: clamp(3rem, 6vh, 5rem);
  display: flex;
  gap: 0.7rem;
  font-size: 0.8rem;
  letter-spacing: 0.08em;
}
.hero__index span { opacity: 0.5; }

.hero__scroll {
  position: absolute;
  right: var(--gutter);
  top: 50%;
  display: flex;
  align-items: center;
  gap: 0.9rem;
  font-size: 0.75rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  transform: translate(45%, -50%) rotate(90deg);
  transform-origin: center;
}

.hero__scroll i { display: block; width: 3rem; height: 1px; overflow: hidden; background: rgba(250, 249, 245, 0.45); }
.hero__scroll i::after { content: ""; display: block; width: 100%; height: 100%; background: var(--white); animation: scroll-line 2.2s ease-in-out infinite; }

/* Intro */
.intro { display: grid; grid-template-columns: minmax(8rem, 1fr) minmax(0, 3.1fr); gap: clamp(2rem, 8vw, 9rem); }
.intro__body h2 {
  max-width: 21ch;
  margin: -0.12em 0 clamp(2.5rem, 5vw, 5rem);
  font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif;
  font-size: clamp(2.8rem, 5.7vw, 6.75rem);
  font-weight: 400;
  letter-spacing: -0.038em;
  line-height: 0.98;
}
.intro__body > p {
  width: min(100%, 35rem);
  margin: 0 0 0 auto;
  color: var(--ink-soft);
  font-size: clamp(1rem, 1.35vw, 1.25rem);
  line-height: 1.65;
}

/* Projects carousel */
.projects { overflow: hidden; padding-top: 0; padding-bottom: clamp(6.5rem, 9vw, 9rem); }
.projects__header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "kicker all-link"
    "title controls";
  align-items: end;
  column-gap: 2rem;
  row-gap: 1.5rem;
  margin-bottom: clamp(2.5rem, 5vw, 4.5rem);
}
.projects__header > .section-kicker { grid-area: kicker; align-self: start; }
.projects__header h2,
.services__heading h2 {
  margin: 0;
  font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif;
  font-size: clamp(3rem, 6vw, 7.25rem);
  font-weight: 400;
  letter-spacing: -0.043em;
  line-height: 0.94;
}
.projects__header h2 { grid-area: title; }
.services__heading h2 { margin-top: 1.5rem; }
.projects__all-link { grid-area: all-link; display: inline-flex; align-items: center; align-self: start; justify-self: end; gap: 0.65rem; padding-bottom: 0.28rem; border-bottom: 1px solid var(--line); color: var(--ink-soft); font-size: 0.76rem; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; transition: border-color 250ms ease, color 250ms ease; }
.projects__all-link svg { width: 1rem; fill: none; stroke: currentColor; stroke-width: 1.25; transition: transform 300ms var(--ease); }
.projects__all-link:hover { border-color: var(--ink); color: var(--ink); }
.projects__all-link:hover svg { transform: translateX(0.28rem); }

.carousel-controls { grid-area: controls; display: flex; align-items: center; justify-self: end; gap: clamp(1.25rem, 3vw, 3rem); }
.carousel-count { display: flex; align-items: center; gap: 0.8rem; margin: 0; font-size: 0.8rem; letter-spacing: 0.1em; }
.carousel-count i { display: block; width: clamp(2rem, 4vw, 4rem); height: 1px; background: var(--line); }
.carousel-buttons { display: flex; gap: 0.5rem; }
.carousel-buttons button {
  display: grid;
  width: 3.25rem;
  aspect-ratio: 1;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
  transition: background-color 250ms ease, color 250ms ease, opacity 250ms ease;
}
.carousel-buttons button:hover:not(:disabled) { background: var(--ink); color: var(--white); }
.carousel-buttons button:disabled { cursor: default; opacity: 0.3; }
.carousel-buttons svg { width: 1.2rem; fill: none; stroke: currentColor; stroke-width: 1.25; }

.project-carousel {
  display: flex;
  gap: clamp(1rem, 2.25vw, 2.5rem);
  padding-inline: var(--gutter);
  padding-bottom: 1.5rem;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scroll-behavior: smooth;
  scroll-padding-inline: var(--gutter);
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  cursor: grab;
  user-select: none;
}
.project-carousel.is-dragging { cursor: grabbing; scroll-snap-type: none; scroll-behavior: auto; }
.project-carousel::-webkit-scrollbar { display: none; }
.project-carousel:focus-visible { outline-offset: -0.5rem; }

.project-card { flex: 0 0 min(76vw, 68rem); scroll-snap-align: start; }
.project-card__media { position: relative; display: block; width: 100%; padding: 0; overflow: hidden; border: 0; background: #d7d4ca; cursor: pointer; }
.project-card__media::after { content: ""; position: absolute; inset: 0; background: rgba(18, 18, 16, 0.12); opacity: 0; transition: opacity 450ms ease; }
.project-card__media img { width: 100%; height: clamp(18rem, 52svh, 38rem); object-fit: cover; transition: transform 1s var(--ease); }
.project-card__media:hover img { transform: scale(1.025); }
.project-card__media:hover::after { opacity: 1; }
.project-card__action {
  position: absolute;
  z-index: 2;
  right: 1.25rem;
  bottom: 1.25rem;
  display: flex;
  align-items: center;
  gap: 0.55rem;
  padding: 0.85rem 1.05rem;
  border-radius: 999px;
  background: var(--white);
  color: var(--ink);
  font-size: 0.8rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0;
  transform: translateY(0.6rem);
  transition: opacity 350ms ease, transform 350ms var(--ease), padding 300ms var(--ease);
}
.project-card__media:hover .project-card__action,
.project-card__media:focus-visible .project-card__action { opacity: 1; transform: translateY(0); }
.project-card__media:hover .project-card__action { padding-inline: 1.25rem; }
.project-card__action svg { width: 1rem; fill: none; stroke: currentColor; stroke-width: 1.25; }
.project-card__caption { display: flex; align-items: baseline; justify-content: space-between; gap: 2rem; padding-top: 1.15rem; }
.project-card__caption h2, .project-card__caption h3 { margin: 0; font-size: clamp(1.1rem, 1.5vw, 1.45rem); font-weight: 500; letter-spacing: -0.02em; }
.project-card__caption p { margin: 0; color: var(--ink-soft); font-size: 0.84rem; letter-spacing: 0.05em; text-transform: uppercase; }
.project-card__caption p span { margin-inline: 0.35rem; opacity: 0.45; }

/* Full project index */
.projects-index-main { padding-top: var(--header-height); }
.projects-index-hero { padding-top: clamp(2.25rem, 4vw, 4.5rem); padding-bottom: clamp(4rem, 7vw, 7rem); border-bottom: 1px solid var(--line); }
.projects-index-hero__layout { display: grid; grid-template-columns: minmax(8rem, 0.8fr) minmax(0, 3.2fr); gap: clamp(2rem, 8vw, 9rem); }
.projects-index-hero h1 {
  max-width: 10ch;
  margin: 0;
  font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif;
  font-size: clamp(4rem, 8.4vw, 9.5rem);
  font-weight: 400;
  letter-spacing: -0.05em;
  line-height: 0.88;
}
.projects-index-hero__lead { max-width: 38rem; margin: clamp(2rem, 4vw, 3.5rem) 0 0; color: var(--ink-soft); font-size: clamp(1.08rem, 1.55vw, 1.45rem); line-height: 1.6; }
.projects-index-list { padding-block: clamp(4rem, 8vw, 8rem) var(--section-space); }
.projects-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(3.5rem, 6vw, 7rem) clamp(1rem, 2vw, 2rem); }
.projects-grid__card { min-width: 0; }
.projects-grid .project-card__media { aspect-ratio: 4 / 3; }
.projects-grid .project-card__media img { width: 100%; height: 100%; object-fit: cover; }
.projects-grid .project-card__caption { display: grid; justify-content: stretch; gap: 0.45rem; }
.projects-grid .project-card__caption p { line-height: 1.5; }
.projects-grid__number { position: absolute; z-index: 2; top: 1rem; left: 1rem; display: grid; width: 2.5rem; aspect-ratio: 1; place-items: center; border: 1px solid rgba(250, 249, 245, 0.5); border-radius: 50%; background: rgba(17, 17, 15, 0.28); color: var(--white); font-size: 0.67rem; letter-spacing: 0.08em; backdrop-filter: blur(6px); }

/* About */
.section--dark { background: var(--ink); color: var(--white); }
.about__grid {
  display: grid;
  grid-template-columns: minmax(18rem, 0.9fr) minmax(0, 1.65fr);
  column-gap: clamp(3rem, 8vw, 9rem);
  row-gap: clamp(2.75rem, 5vw, 5rem);
}
.about__topline {
  grid-column: 1 / -1;
  grid-row: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
}
.about__monogram {
  width: clamp(4.75rem, 6.5vw, 6.75rem);
  height: auto;
  opacity: 0.55;
}
.about__statement { grid-column: 2; grid-row: 2; }
.about__portrait {
  grid-column: 1;
  grid-row: 2 / span 2;
  align-self: start;
  width: min(100%, 31rem);
  margin: 0;
}
.about__portrait-composition {
  position: relative;
  isolation: isolate;
  padding: 0 1.1rem 1.1rem 0;
}
.about__portrait-plane {
  position: absolute;
  z-index: -1;
  inset: 1.1rem 0 0 1.1rem;
  border: 1px solid rgba(250, 249, 245, 0.28);
  background: linear-gradient(135deg, rgba(157, 128, 96, 0.16), transparent 58%);
}
.about__portrait-frame {
  position: relative;
  overflow: hidden;
  aspect-ratio: 4 / 5;
  background: #242421;
  clip-path: polygon(0 0, 87% 0, 87% 6.5%, 100% 6.5%, 100% 100%, 12% 100%, 12% 93.5%, 0 93.5%);
}
.about__portrait-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.about__portrait figcaption {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--line-light);
  color: rgba(250, 249, 245, 0.72);
  font-size: 0.76rem;
  letter-spacing: 0.1em;
  line-height: 1.3;
  text-transform: uppercase;
}
.about__portrait figcaption span:last-child { color: rgba(250, 249, 245, 0.42); }
.about__statement h2 {
  max-width: 15ch;
  margin: -0.12em 0 0;
  font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif;
  font-size: clamp(3rem, 6.6vw, 7.75rem);
  font-weight: 400;
  letter-spacing: -0.047em;
  line-height: 0.92;
}
.about__copy { grid-column: 2; grid-row: 3; display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(1.5rem, 5vw, 5rem); margin-top: 0; }
.about__copy p { margin: 0; color: rgba(250, 249, 245, 0.66); font-size: clamp(1rem, 1.3vw, 1.18rem); line-height: 1.68; }
.about__copy .text-link { grid-column: 2; margin-top: 1rem; }

/* Services */
.services { display: grid; grid-template-columns: minmax(15rem, 1.05fr) minmax(0, 1.5fr); gap: clamp(3rem, 9vw, 10rem); padding-block: clamp(5rem, 7vw, 7rem); scroll-margin-top: 4.75rem; }
.services__heading { position: sticky; top: 8rem; align-self: start; }
.services__heading h2 { position: static; }
.services__intro { max-width: 31rem; margin: 2rem 0 0; color: var(--ink-soft); line-height: 1.7; }
.service-list { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--line); }
.service-list li { display: grid; grid-template-columns: 2.75rem minmax(9rem, 0.75fr) minmax(0, 1.1fr); gap: 1.25rem; padding-block: clamp(1.25rem, 2vw, 1.9rem); border-bottom: 1px solid var(--line); }
.service-list li > span { padding-top: 0.3rem; color: var(--ink-soft); font-size: 0.66rem; letter-spacing: 0.1em; }
.service-list h3 { margin: 0; font-size: clamp(1.15rem, 1.6vw, 1.5rem); font-weight: 500; letter-spacing: -0.025em; }
.service-list p { margin: 0; color: var(--ink-soft); line-height: 1.65; }

/* Contact and footer */
.contact { padding-bottom: clamp(5rem, 10vw, 10rem); border-top: 1px solid var(--line); }
.contact__inner h2 {
  margin: clamp(3rem, 7vw, 6rem) 0 clamp(4rem, 9vw, 8rem);
  font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif;
  font-size: clamp(3rem, 7.6vw, 9rem);
  font-weight: 400;
  letter-spacing: -0.047em;
  line-height: 0.91;
}
.contact__grid { display: grid; grid-template-columns: minmax(17rem, 0.85fr) minmax(0, 1.15fr); gap: clamp(3rem, 8vw, 9rem); align-items: start; }
.contact__direct > p:first-child { margin: 0 0 1.5rem; color: var(--ink-soft); font-size: 0.94rem; }
.contact__channels { border-top: 1px solid var(--ink); }
.contact__link { display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding-block: 1.25rem; border-bottom: 1px solid var(--ink); font-size: clamp(1.15rem, 2vw, 1.8rem); }
.contact__link > span { display: grid; gap: 0.32rem; }
.contact__link small { color: var(--ink-soft); font-size: 0.68rem; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; }
.contact__link svg { width: clamp(2rem, 4vw, 3.5rem); fill: none; stroke: currentColor; stroke-width: 1; transition: transform 350ms var(--ease); }
.contact__link:hover svg { transform: translateX(0.6rem); }
.contact__availability { margin: 1.25rem 0 0; color: var(--ink-soft); font-size: 0.84rem; letter-spacing: 0.04em; text-transform: uppercase; }

.contact-form { display: grid; gap: 1.6rem; }
.contact-form__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
.contact-form label { display: grid; gap: 0.65rem; font-size: 0.84rem; letter-spacing: 0.06em; text-transform: uppercase; }
.contact-form input:not([type="checkbox"]),
.contact-form textarea {
  width: 100%;
  padding: 0.85rem 0;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  outline: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  line-height: 1.45;
  resize: vertical;
  transition: border-color 220ms ease;
}
.contact-form input:not([type="checkbox"]):focus,
.contact-form textarea:focus { border-color: var(--ink); }
.contact-form__consent { grid-template-columns: auto 1fr; align-items: start; gap: 0.75rem !important; color: var(--ink-soft); font-size: 0.76rem !important; letter-spacing: 0.02em !important; line-height: 1.55; text-transform: none !important; }
.contact-form__consent input { width: 1rem; height: 1rem; margin: 0.18rem 0 0; accent-color: var(--ink); }
.contact-form__consent a { border-bottom: 1px solid currentColor; }
.contact-form__footer { display: flex; align-items: center; gap: 1.25rem; min-height: 3.2rem; }
.contact-form button {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.95rem 1.25rem;
  border: 1px solid var(--ink);
  border-radius: 999px;
  background: var(--ink);
  color: var(--white);
  cursor: pointer;
  font-size: 0.82rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  transition: background-color 250ms ease, color 250ms ease, padding 300ms var(--ease);
}
.contact-form button:hover { padding-inline: 1.55rem; background: transparent; color: var(--ink); }
.contact-form button svg { width: 1.1rem; fill: none; stroke: currentColor; stroke-width: 1.25; }
.contact-form__status { margin: 0; color: var(--ink-soft); font-size: 0.82rem; line-height: 1.4; }
.asa-hp { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.cf-turnstile { min-height: 65px; }

.work-area { border-top: 1px solid var(--line); background: var(--paper-strong); }
.work-area__inner { display: grid; grid-template-columns: repeat(3, 1fr); }
.work-area__inner p { margin: 0; padding-block: 1.4rem; font-size: 0.78rem; letter-spacing: 0.08em; text-transform: uppercase; }
.work-area__inner p:nth-child(2) { text-align: center; }
.work-area__inner p:last-child { text-align: right; }

.site-footer { padding-block: 3rem; background: var(--ink); color: var(--white); }
.site-footer__inner { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 2rem; }
.site-footer p { margin: 0; }
.site-footer__links {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: start;
  gap: clamp(1.25rem, 3vw, 3.5rem);
  width: 100%;
  margin-top: 0.4rem;
  padding-top: 1.6rem;
  border-top: 1px solid var(--line-light);
}
.site-footer__item { position: relative; display: grid; gap: 0.32rem; width: fit-content; max-width: 100%; padding-bottom: 0.3rem; text-transform: uppercase; }
.site-footer__item:nth-child(2) { justify-self: center; }
.site-footer__item:last-child { justify-self: end; }
.site-footer__item small { color: rgba(250, 249, 245, 0.45); font-size: 0.62rem; font-weight: 500; letter-spacing: 0.13em; line-height: 1.25; }
.site-footer__item span { font-size: 0.8rem; letter-spacing: 0.05em; line-height: 1.35; }
.site-footer__item::after { content: ""; position: absolute; right: 0; bottom: 0; left: 0; height: 1px; background: currentColor; transform: scaleX(0); transition: transform 250ms var(--ease); }
.site-footer__item:hover::after { transform: scaleX(1); }
.site-footer__legal { grid-column: 2; grid-row: 1; display: flex; align-items: center; justify-self: end; gap: 1rem; color: rgba(250, 249, 245, 0.55); font-size: 0.8rem; }
.site-footer__legal button { padding: 0; border: 0; border-bottom: 1px solid rgba(250, 249, 245, 0.3); background: transparent; color: inherit; cursor: pointer; font-size: inherit; }
.site-footer__legal button:hover { border-color: currentColor; color: var(--white); }
.footer-brand { grid-column: 1; grid-row: 1; display: block; width: fit-content; line-height: 0; }
.footer-brand img { width: clamp(14rem, 22vw, 21rem); height: auto; }

/* Minimal analytics consent */
.analytics-consent {
  position: fixed;
  z-index: 300;
  right: clamp(1rem, 2.5vw, 2rem);
  bottom: clamp(1rem, 2.5vw, 2rem);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: clamp(1.25rem, 3vw, 2.5rem);
  width: min(calc(100% - 2rem), 54rem);
  padding: clamp(1.25rem, 2.5vw, 2rem);
  border: 1px solid rgba(250, 249, 245, 0.22);
  background: rgba(25, 25, 22, 0.98);
  color: var(--white);
  box-shadow: 0 1.5rem 4rem rgba(0, 0, 0, 0.24);
}
.analytics-consent[hidden] { display: none; }
.analytics-consent__copy { max-width: 35rem; }
.analytics-consent__copy strong { display: block; margin-bottom: 0.45rem; font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif; font-size: 1.3rem; font-weight: 400; }
.analytics-consent__copy p { margin: 0; color: rgba(250, 249, 245, 0.72); font-size: 0.82rem; line-height: 1.55; }
.analytics-consent__copy a { border-bottom: 1px solid rgba(250, 249, 245, 0.45); color: var(--white); }
.analytics-consent__actions { display: flex; align-items: center; gap: 0.7rem; }
.analytics-consent__button { min-height: 2.9rem; padding: 0.72rem 1rem; border: 1px solid rgba(250, 249, 245, 0.42); background: transparent; color: var(--white); cursor: pointer; font-size: 0.72rem; letter-spacing: 0.05em; text-transform: uppercase; transition: background-color 180ms ease, color 180ms ease, border-color 180ms ease; }
.analytics-consent__button:hover { border-color: var(--white); }
.analytics-consent__button--primary { border-color: var(--white); background: var(--white); color: var(--ink); }
.analytics-consent__button--primary:hover { background: transparent; color: var(--white); }
.privacy-cookie-settings { padding: 0.7rem 1rem; border: 1px solid var(--ink); background: transparent; color: var(--ink); cursor: pointer; font-size: 0.78rem; letter-spacing: 0.05em; text-transform: uppercase; }
.privacy-cookie-settings:hover { background: var(--ink); color: var(--white); }

/* Project and legal pages */
.project-page .site-header,
.legal-page .site-header {
  border-color: var(--line);
  background: rgba(241, 239, 232, 0.94);
  color: var(--ink);
  backdrop-filter: blur(14px);
}

.project-main,
.legal-main { padding-top: var(--header-height); }

.project-hero { padding-top: clamp(2.25rem, 4vw, 4.5rem); padding-bottom: clamp(3rem, 6vw, 6rem); }
.project-back {
  display: inline-flex;
  align-items: center;
  gap: 0.65rem;
  margin-bottom: clamp(3.5rem, 7vw, 7rem);
  color: var(--ink-soft);
  font-size: 0.82rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.project-back svg { width: 1.05rem; fill: none; stroke: currentColor; stroke-width: 1.25; transition: transform 300ms var(--ease); }
.project-back:hover svg { transform: translateX(-0.3rem); }
.project-hero__top { display: grid; grid-template-columns: minmax(8rem, 0.8fr) minmax(0, 3.2fr); gap: clamp(2rem, 8vw, 9rem); }
.project-hero__heading h1 {
  max-width: 11ch;
  margin: 0;
  font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif;
  font-size: clamp(4rem, 8.4vw, 9.5rem);
  font-weight: 400;
  letter-spacing: -0.05em;
  line-height: 0.88;
}
.project-hero__heading .project-title--long { max-width: 13ch; font-size: clamp(3.7rem, 7.3vw, 8.25rem); }
.project-hero__lead { max-width: 42rem; margin: clamp(2rem, 4vw, 3.5rem) 0 0; color: var(--ink-soft); font-size: clamp(1.08rem, 1.55vw, 1.45rem); line-height: 1.6; }
.project-hero__meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 1.5rem; margin: clamp(3rem, 6vw, 5rem) 0 0; padding-top: 1.2rem; border-top: 1px solid var(--line); }
.project-hero__meta div { display: grid; gap: 0.35rem; }
.project-hero__meta dt { color: var(--ink-soft); font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; }
.project-hero__meta dd { margin: 0; font-size: 0.96rem; }
.project-hero__figure { margin: clamp(3rem, 7vw, 7rem) 0 0; }
.project-hero__media { width: 100%; height: min(76svh, 56rem); object-fit: cover; }
.project-hero__figure figcaption,
.project-shot figcaption { display: flex; justify-content: space-between; gap: 1.5rem; padding-top: 0.7rem; color: var(--ink-soft); font-size: 0.74rem; letter-spacing: 0.04em; }

.project-overview { display: grid; grid-template-columns: minmax(12rem, 0.95fr) minmax(0, 1.65fr); gap: clamp(3rem, 9vw, 10rem); align-items: start; }
.project-overview__statement { position: sticky; top: calc(var(--header-height) + 2rem); }
.project-overview h2 {
  max-width: 12ch;
  margin: 1.5rem 0 0;
  font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif;
  font-size: clamp(2.8rem, 5.5vw, 6.5rem);
  font-weight: 400;
  letter-spacing: -0.043em;
  line-height: 0.96;
}
.project-overview__body { display: grid; gap: clamp(3.5rem, 7vw, 6.5rem); }
.project-overview__copy { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(1.5rem, 4vw, 4rem); }
.project-overview__copy p { margin: 0; color: var(--ink-soft); font-size: clamp(1rem, 1.3vw, 1.2rem); line-height: 1.76; }
.project-overview__copy p:first-child::first-letter { float: left; margin: 0.08em 0.12em 0 0; color: var(--ink); font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif; font-size: 4.5em; line-height: 0.72; }
.project-facts { display: grid; grid-template-columns: repeat(2, 1fr); margin: 0; border-top: 1px solid var(--line); }
.project-facts div { display: grid; grid-template-columns: minmax(6rem, 0.75fr) 1.25fr; gap: 1rem; padding-block: 1rem; border-bottom: 1px solid var(--line); }
.project-facts div:nth-child(odd) { padding-right: 1.5rem; }
.project-facts div:nth-child(even) { padding-left: 1.5rem; border-left: 1px solid var(--line); }
.project-facts dt { color: var(--ink-soft); font-size: 0.76rem; letter-spacing: 0.07em; text-transform: uppercase; }
.project-facts dd { margin: 0; font-size: 0.92rem; }

.project-gallery { display: grid; gap: clamp(3rem, 8vw, 8rem); padding-inline: var(--gutter); padding-bottom: var(--section-space); }
.project-gallery__label { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: 0; padding-bottom: 1rem; border-bottom: 1px solid var(--line); color: var(--ink-soft); font-size: 0.76rem; letter-spacing: 0.08em; text-transform: uppercase; }
.project-gallery__label span:last-child { color: var(--ink); }
.project-gallery__pair { display: grid; grid-template-columns: 0.82fr 1.18fr; gap: clamp(0.8rem, 1.5vw, 1.5rem); align-items: start; }
.project-gallery__pair--reverse { grid-template-columns: 1.18fr 0.82fr; }
.project-gallery__pair .project-shot:last-child { margin-top: clamp(4rem, 9vw, 10rem); }
.project-shot { margin: 0; }
.project-shot__frame { overflow: hidden; background: var(--paper-strong); }
.project-shot img { width: 100%; height: clamp(24rem, 58vw, 68rem); object-fit: cover; transition: transform 900ms var(--ease); }
.project-shot--portrait img { height: clamp(30rem, 57vw, 65rem); }
.project-shot--landscape img { height: clamp(20rem, 36vw, 40rem); }
.project-shot--wide img { height: clamp(20rem, 34vw, 38rem); }
.project-shot:hover img { transform: scale(1.012); }
.project-quote { max-width: 22ch; margin: 0 auto; padding-block: clamp(2rem, 5vw, 5rem); text-align: center; }
.project-quote p { margin: 0; font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif; font-size: clamp(2.35rem, 5vw, 6rem); letter-spacing: -0.038em; line-height: 1.02; }
.project-quote cite { display: block; margin-top: 1.25rem; color: var(--ink-soft); font-size: 0.76rem; font-style: normal; letter-spacing: 0.09em; text-transform: uppercase; }

/* Flexible project modules — mirrored later as WordPress blocks */
.room-gallery {
  width: min(100%, var(--max-width));
  margin-inline: auto;
  overflow: hidden;
}
.room-gallery__header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 2rem;
  margin-bottom: clamp(1.75rem, 3vw, 2.75rem);
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--line);
}
.room-gallery__header h2,
.project-comparison__heading h2,
.project-plan__copy h2 {
  margin: 1rem 0 0;
  font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif;
  font-size: clamp(2.75rem, 5vw, 6rem);
  font-weight: 400;
  letter-spacing: -0.043em;
  line-height: 0.95;
}
.room-gallery__controls { display: flex; align-items: center; gap: 0.55rem; }
.room-gallery__controls p { min-width: 4.25rem; margin: 0 0.6rem 0 0; color: var(--ink-soft); font-size: 0.76rem; letter-spacing: 0.08em; }
.room-gallery__controls button {
  display: grid;
  width: 3.15rem;
  aspect-ratio: 1;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
  transition: background-color 250ms ease, color 250ms ease, opacity 250ms ease;
}
.room-gallery__controls button:hover:not(:disabled) { background: var(--ink); color: var(--white); }
.room-gallery__controls button:disabled { cursor: default; opacity: 0.28; }
.room-gallery__controls svg { width: 1.15rem; fill: none; stroke: currentColor; stroke-width: 1.25; }
.room-gallery__track {
  display: flex;
  gap: clamp(0.8rem, 1.6vw, 1.5rem);
  padding-bottom: 1rem;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scroll-behavior: smooth;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}
.room-gallery__track::-webkit-scrollbar { display: none; }
.room-gallery__slide { flex: 0 0 min(72vw, 61rem); margin: 0; scroll-snap-align: start; }
.room-gallery__slide--portrait { flex-basis: min(38vw, 33rem); }
.room-gallery__slide--square { flex-basis: min(51vw, 44rem); }
.room-gallery__slide img {
  width: 100%;
  height: clamp(25rem, 50vw, 48rem);
  object-fit: cover;
  background: var(--paper-strong);
}
.room-gallery__slide figcaption,
.project-comparison figcaption,
.project-plan figcaption {
  margin-top: 0.7rem;
  color: var(--ink-soft);
  font-size: 0.74rem;
  letter-spacing: 0.04em;
}

.project-plan { background: var(--paper-strong); }
.project-plan__grid { display: grid; grid-template-columns: minmax(14rem, 0.65fr) minmax(0, 1.35fr); gap: clamp(3rem, 9vw, 10rem); align-items: start; }
.project-plan__copy { position: sticky; top: calc(var(--header-height) + 2rem); }
.project-plan__copy p:last-child { max-width: 29rem; margin: 2rem 0 0; color: var(--ink-soft); font-size: clamp(1rem, 1.25vw, 1.16rem); line-height: 1.7; }
.project-plan figure { margin: 0; }
.project-plan figure picture { display: block; padding: clamp(1rem, 2.5vw, 2.5rem); background: var(--white); }
.project-plan figure img { width: 100%; max-height: 68rem; object-fit: contain; }
.project-plan__figures { display: grid; gap: clamp(2rem, 4vw, 4rem); }

.project-comparison { width: min(100%, var(--max-width)); margin-inline: auto; }
.project-comparison__heading { max-width: 48rem; margin-bottom: clamp(2rem, 4vw, 4rem); }
.project-comparison__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(0.8rem, 1.5vw, 1.5rem); }
.project-comparison figure { margin: 0; }
.project-comparison img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: var(--paper-strong); }

/* Native block-editor content used by projects added in WordPress. */
.project-editor-content {
  display: grid;
  gap: clamp(3rem, 8vw, 8rem);
  padding-bottom: var(--section-space);
}
.project-editor-content > .project-shot,
.project-editor-content > .project-gallery__pair,
.project-editor-content > .room-gallery,
.project-editor-content > .project-comparison {
  width: min(calc(100% - (2 * var(--gutter))), var(--max-width));
  margin-inline: auto;
}
.project-editor-content > .project-plan { width: 100%; }
.project-editor-content .wp-block-image { margin-top: 0; margin-bottom: 0; }
.project-editor-content .wp-block-image img { width: 100%; }
.project-editor-content .wp-block-image figcaption { margin: 0.7rem 0 0; color: var(--ink-soft); font-size: 0.74rem; letter-spacing: 0.04em; text-align: left; }
.project-editor-content .project-plan .wp-block-image { margin: 0; padding: clamp(1rem, 2.5vw, 2.5rem); background: var(--white); }
.project-editor-content .project-plan .wp-block-image img { max-height: 68rem; object-fit: contain; }

.project-credits { padding-bottom: var(--section-space); }
.project-credits details { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.project-credits summary { display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding-block: 1.5rem; cursor: pointer; list-style: none; font-size: 0.85rem; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; }
.project-credits summary::-webkit-details-marker { display: none; }
.project-credits summary::after { content: "+"; font-size: 1.35rem; font-weight: 300; line-height: 1; }
.project-credits details[open] summary::after { content: "−"; }
.project-credits__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2rem; padding: 0 0 2rem; }
.project-credits__grid p { display: grid; gap: 0.35rem; margin: 0; }
.project-credits__grid span { color: var(--ink-soft); font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; }
.project-credits__grid strong { font-size: 0.95rem; font-weight: 400; }

.project-nav { padding-block: clamp(4rem, 8vw, 8rem); background: var(--ink); color: var(--white); }
.project-nav__header { display: flex; align-items: center; justify-content: space-between; gap: 2rem; margin-bottom: clamp(3rem, 7vw, 6rem); }
.project-nav__header > span { color: rgba(250, 249, 245, 0.42); font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; }
.project-nav__home { display: inline-flex; align-items: center; gap: 0.65rem; color: rgba(250, 249, 245, 0.7); font-size: 0.82rem; letter-spacing: 0.07em; text-transform: uppercase; }
.project-nav__home svg { width: 1.1rem; fill: none; stroke: currentColor; stroke-width: 1.25; transform: rotate(180deg); }
.project-nav__links { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(1rem, 2vw, 2rem); }
.project-nav__links a { position: relative; display: grid; min-height: clamp(20rem, 38vw, 35rem); overflow: hidden; background: #292925; }
.project-nav__media { position: absolute; inset: 0; }
.project-nav__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(10, 10, 9, 0.82), rgba(10, 10, 9, 0.05) 70%); }
.project-nav__media img { width: 100%; height: 100%; object-fit: cover; opacity: 0.78; transition: transform 900ms var(--ease), opacity 400ms ease; }
.project-nav__links a:hover .project-nav__media img { opacity: 0.92; transform: scale(1.025); }
.project-nav__content { position: relative; z-index: 1; display: grid; align-content: end; gap: 0.6rem; padding: clamp(1.5rem, 3vw, 3rem); }
.project-nav__content > span { color: rgba(250, 249, 245, 0.5); font-size: 0.75rem; letter-spacing: 0.08em; text-transform: uppercase; }
.project-nav__links strong { max-width: 11ch; font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif; font-size: clamp(2rem, 3.5vw, 4.25rem); font-weight: 400; letter-spacing: -0.034em; line-height: 0.95; }
.project-nav__links em { color: rgba(250, 249, 245, 0.65); font-size: 0.78rem; font-style: normal; }

/* Full-screen project gallery */
.project-lightbox-trigger { cursor: zoom-in; }
.project-lightbox-trigger:focus-visible { outline: 2px solid var(--ink); outline-offset: -4px; }
.project-lightbox {
  position: fixed;
  inset: 0;
  z-index: 1000;
  grid-template-rows: auto minmax(0, 1fr) auto;
  width: 100vw;
  max-width: none;
  height: 100vh;
  height: 100dvh;
  max-height: none;
  margin: 0;
  padding: clamp(1rem, 2.4vw, 2.25rem);
  overflow: hidden;
  border: 0;
  background: #11110f;
  color: var(--white);
}
.project-lightbox[open] { display: grid; }
.project-lightbox::backdrop { background: #11110f; }
.project-lightbox__toolbar { display: flex; align-items: center; justify-content: space-between; gap: 2rem; min-height: 2.75rem; }
.project-lightbox__counter { margin: 0; color: rgba(250, 249, 245, 0.65); font-size: 0.76rem; letter-spacing: 0.12em; }
.project-lightbox__close,
.project-lightbox__arrow {
  display: grid;
  place-items: center;
  border: 1px solid rgba(250, 249, 245, 0.34);
  border-radius: 50%;
  background: rgba(17, 17, 15, 0.7);
  color: var(--white);
  cursor: pointer;
  transition: border-color 220ms ease, background-color 220ms ease;
}
.project-lightbox__close:hover,
.project-lightbox__arrow:hover { border-color: var(--white); background: rgba(250, 249, 245, 0.1); }
.project-lightbox__close { width: 2.75rem; height: 2.75rem; }
.project-lightbox__close svg { width: 1rem; fill: none; stroke: currentColor; stroke-width: 1.3; }
.project-lightbox__media { display: grid; min-width: 0; min-height: 0; place-items: center; overflow: hidden; padding: clamp(0.75rem, 2vh, 1.5rem) clamp(3.75rem, 6vw, 6rem); }
.project-lightbox__media img { display: block; width: 100%; min-width: 0; max-width: 100%; height: 100%; min-height: 0; max-height: 100%; object-fit: contain; object-position: center; user-select: none; }
.project-lightbox__arrow { position: absolute; z-index: 2; top: 50%; width: clamp(2.75rem, 4vw, 3.5rem); height: clamp(2.75rem, 4vw, 3.5rem); transform: translateY(-50%); }
.project-lightbox__arrow--previous { left: clamp(1rem, 2.4vw, 2.25rem); }
.project-lightbox__arrow--next { right: clamp(1rem, 2.4vw, 2.25rem); }
.project-lightbox__arrow svg { width: 1.25rem; fill: none; stroke: currentColor; stroke-width: 1.25; }
.project-lightbox__caption { display: flex; justify-content: space-between; gap: 1.5rem; min-height: 1.5rem; margin: 0; color: rgba(250, 249, 245, 0.72); font-size: 0.74rem; letter-spacing: 0.04em; }
.project-lightbox__caption span:last-child { color: rgba(250, 249, 245, 0.4); text-align: right; }

.legal-main { min-height: 75svh; }
.legal-hero { padding-top: clamp(4rem, 8vw, 8rem); padding-bottom: clamp(2.5rem, 5vw, 5rem); border-bottom: 1px solid var(--line); }
.legal-hero h1 { margin: 1.5rem 0 0; font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif; font-size: clamp(3.5rem, 7vw, 8rem); font-weight: 400; letter-spacing: -0.047em; line-height: 0.92; }
.legal-content { display: grid; grid-template-columns: minmax(8rem, 1fr) minmax(0, 2fr); gap: clamp(2rem, 8vw, 9rem); padding-block: clamp(4rem, 8vw, 8rem); }
.legal-content__aside { color: var(--ink-soft); font-size: 0.84rem; line-height: 1.6; }
.legal-content__body { display: grid; gap: 2.5rem; }
.legal-content section { padding-bottom: 2.5rem; border-bottom: 1px solid var(--line); }
.legal-content h2 { margin: 0 0 1rem; font-size: 1.25rem; font-weight: 500; letter-spacing: -0.02em; }
.legal-content p, .legal-content li { color: var(--ink-soft); line-height: 1.7; }
.legal-content p { margin: 0.75rem 0 0; }
.legal-content ul { margin: 0.75rem 0 0; padding-left: 1.2rem; }

/* Motion */
[data-reveal] { opacity: 0; transform: translateY(1.75rem); transition: opacity 800ms ease, transform 900ms var(--ease); }
[data-reveal].is-visible { opacity: 1; transform: translateY(0); }

@keyframes hero-in { from { opacity: 0.4; transform: scale(1.05); } to { opacity: 1; transform: scale(1); } }
@keyframes scroll-line { 0% { transform: translateX(-105%); } 45%, 55% { transform: translateX(0); } 100% { transform: translateX(105%); } }

@media (max-width: 900px) {
  :root { --header-height: 5rem; }

  .menu-toggle {
    position: relative;
    z-index: 102;
    display: flex;
    align-items: center;
    gap: 0.8rem;
    padding: 0.5rem 0;
    border: 0;
    background: transparent;
    cursor: pointer;
  }
  .menu-toggle__label { font-size: 0.8rem; letter-spacing: 0.1em; text-transform: uppercase; }
  .menu-toggle__icon { position: relative; display: block; width: 1.25rem; height: 0.75rem; }
  .menu-toggle__icon i { position: absolute; right: 0; left: 0; height: 1px; background: currentColor; transition: top 300ms var(--ease), transform 300ms var(--ease); }
  .menu-toggle__icon i:first-child { top: 0.18rem; }
  .menu-toggle__icon i:last-child { top: 0.6rem; }
  .is-menu-open .menu-toggle__icon i:first-child { top: 0.4rem; transform: rotate(45deg); }
  .is-menu-open .menu-toggle__icon i:last-child { top: 0.4rem; transform: rotate(-45deg); }

  .site-nav {
    position: fixed;
    z-index: 101;
    inset: 0;
    display: grid;
    align-items: center;
    padding: calc(var(--header-height) + 2rem) var(--gutter) 3rem;
    background: var(--ink);
    color: var(--white);
    visibility: hidden;
    opacity: 0;
    transform: translateY(-1rem);
    transition: visibility 0s linear 450ms, opacity 350ms ease, transform 450ms var(--ease);
  }
  .is-menu-open .site-header { color: var(--white); }
  .is-menu-open .site-header.is-scrolled {
    min-height: var(--header-height);
    border-color: transparent;
    background: var(--ink);
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
  .is-menu-open .site-header .brand__variant--light { opacity: 1; }
  .is-menu-open .site-header .brand__variant--dark { opacity: 0; }
  .is-menu-open .site-nav { visibility: visible; opacity: 1; transform: translateY(0); transition-delay: 0s; }
  .site-nav__list { display: grid; align-content: center; gap: 0; }
  .site-nav__list li { border-bottom: 1px solid var(--line-light); }
  .site-nav a { display: flex; align-items: baseline; gap: 1.1rem; padding-block: 1.15rem; font-family: "Iowan Old Style", "Baskerville", "Times New Roman", serif; font-size: clamp(2.25rem, 8vw, 4.5rem); letter-spacing: -0.03em; }
  .site-nav a span { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 0.62rem; letter-spacing: 0.1em; }

  .hero__scroll { display: none; }
  .intro, .about__grid { grid-template-columns: 1fr; }
  .about__topline { grid-column: 1; grid-row: 1; }
  .about__statement { grid-column: 1; grid-row: 2; }
  .about__portrait { grid-column: 1; grid-row: 3; width: min(78vw, 24rem); margin: 0 0 0 auto; }
  .about__copy { grid-column: 1; grid-row: 4; }
  .services { grid-template-columns: 1fr; }
  .services__heading { position: static; }
  .contact__grid { grid-template-columns: 1fr; }
  .project-hero__top, .projects-index-hero__layout, .project-overview, .legal-content { grid-template-columns: 1fr; }
  .project-overview__statement { position: static; }
  .project-plan__grid { grid-template-columns: 1fr; }
  .project-plan__copy { position: static; }
  .project-credits__grid { grid-template-columns: repeat(2, 1fr); }
  .projects-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 782px) {
  .admin-bar .site-header { top: 46px; }
}

@media (max-width: 680px) {
  :root { --section-space: 6rem; }
  .brand__wordmark { display: none; }
  .brand__sygnet { display: block; }
  .site-header.is-scrolled { min-height: 4.25rem; }

  .hero { min-height: max(38rem, 100svh); }
  .hero__media img { object-position: 62% center; }
  .hero__shade { background: linear-gradient(90deg, rgba(12, 14, 12, 0.68), rgba(12, 14, 12, 0.12)), linear-gradient(0deg, rgba(12, 14, 12, 0.58), transparent 55%); }
  .hero__content { padding-bottom: 4.75rem; }
  .hero h1 { font-size: clamp(3.75rem, 18vw, 6rem); line-height: 0.88; }
  .hero__actions { display: grid; width: min(100%, 22rem); }
  .hero-cta { width: 100%; min-width: 0; }
  .hero__index { right: var(--gutter); bottom: 2rem; }

  .intro__body h2 { margin-top: 0; }
  .intro__body > p { margin-left: 0; }

  .projects__header { align-items: end; column-gap: 0.9rem; row-gap: 1.25rem; }
  .projects__all-link { gap: 0.45rem; font-size: 0.68rem; letter-spacing: 0.06em; }
  .projects__all-link svg { width: 0.9rem; }
  .carousel-controls { align-items: end; }
  .carousel-count { display: none; }
  .carousel-buttons button { width: 3rem; }
  .project-card { flex-basis: 88vw; }
  .project-card__media img { height: clamp(18rem, 48svh, 31rem); }
  .project-card__action { opacity: 1; transform: none; }
  .project-card__caption { display: block; }
  .project-card__caption p { margin-top: 0.45rem; line-height: 1.5; }

  .about__copy { grid-template-columns: 1fr; }
  .about__copy .text-link { grid-column: 1; }
  .about__portrait { width: min(84vw, 22rem); }
  .about__monogram { width: 4.5rem; }

  .service-list li { grid-template-columns: 2rem 1fr; }
  .service-list p { grid-column: 2; }

  .contact__inner h2 br { display: none; }
  .contact__link { align-items: end; overflow-wrap: anywhere; }
  .contact-form__row { grid-template-columns: 1fr; }
  .contact-form__footer { align-items: flex-start; flex-direction: column; }

  .work-area__inner { grid-template-columns: 1fr; padding-block: 0.4rem; }
  .work-area__inner p { padding-block: 0.9rem; border-bottom: 1px solid var(--line); text-align: left !important; }
  .work-area__inner p:last-child { border-bottom: 0; }

  .site-footer__inner { grid-template-columns: 1fr; align-items: start; gap: 1.5rem; }
  .site-footer__links { grid-column: 1; grid-template-columns: 1fr; gap: 1.5rem; margin-top: 0; }
  .site-footer__item, .site-footer__item:nth-child(2), .site-footer__item:nth-child(3), .site-footer__item:last-child { justify-self: start; }
  .site-footer__legal { grid-column: 1; grid-row: auto; justify-self: start; }
  .footer-brand { grid-column: 1; grid-row: auto; }
  .footer-brand img { width: min(72vw, 18rem); }

  .analytics-consent { grid-template-columns: 1fr; align-items: stretch; }
  .analytics-consent__actions { display: grid; grid-template-columns: 1fr 1fr; }
  .analytics-consent__button { width: 100%; }

  .project-hero__heading h1 { font-size: clamp(3.8rem, 17vw, 6.2rem); }
  .projects-index-hero h1 { font-size: clamp(3.8rem, 17vw, 6.2rem); }
  .projects-index-hero { padding-bottom: 4rem; }
  .projects-index-list { padding-block: 3.5rem 6rem; }
  .projects-grid { grid-template-columns: 1fr; gap: 3.5rem; }
  .project-hero__heading .project-title--long { font-size: clamp(2.9rem, 13vw, 4.8rem); }
  .project-back { margin-bottom: 3rem; }
  .project-hero__meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .project-hero__meta div { grid-template-columns: 1fr; }
  .project-hero__media { height: 55svh; }
  .project-overview__copy, .project-facts, .project-gallery__pair, .project-gallery__pair--reverse { grid-template-columns: 1fr; }
  .project-facts div:nth-child(odd), .project-facts div:nth-child(even) { padding-inline: 0; border-left: 0; }
  .project-gallery { gap: 4.5rem; }
  .project-gallery__pair .project-shot:last-child { margin-top: 0; }
  .project-shot img, .project-shot--portrait img, .project-shot--landscape img, .project-shot--wide img { height: min(70svh, 36rem); }
  .room-gallery__header { align-items: flex-end; }
  .room-gallery__header h2 { font-size: clamp(2.7rem, 14vw, 4.5rem); }
  .room-gallery__controls p { display: none; }
  .room-gallery__controls button { width: 2.85rem; }
  .room-gallery__slide { flex-basis: 86vw; }
  .room-gallery__slide--portrait { flex-basis: 76vw; }
  .room-gallery__slide--square { flex-basis: 82vw; }
  .room-gallery__slide img { height: min(68svh, 36rem); }
  .project-comparison__grid { grid-template-columns: 1fr; }
  .project-plan figure picture { padding: 0.75rem; }
  .project-credits__grid { grid-template-columns: 1fr; }
  .project-nav__header { align-items: flex-start; flex-direction: column; }
  .project-nav__links { grid-template-columns: 1fr; }
  .project-nav__links a { min-height: 25rem; }

  .project-lightbox { padding: 0.9rem; }
  .project-lightbox__media { padding: 0.75rem 2.5rem; }
  .project-lightbox__arrow { width: 2.6rem; height: 2.6rem; }
  .project-lightbox__arrow--previous { left: 0.8rem; }
  .project-lightbox__arrow--next { right: 0.8rem; }
  .project-lightbox__caption span:last-child { display: none; }

}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: 0.01ms !important; }
  [data-reveal] { opacity: 1; transform: none; }
}
