:root {
  --paper: #f5f1ea;
  --paper-deep: #ece6dc;
  --white: #fffdf9;
  --ink: #292921;
  --muted: #65645b;
  --olive: #4b5832;
  --olive-dark: #354023;
  --olive-soft: #7b8466;
  --moss: #b4b99e;
  --rust: #9f5639;
  --line: #cbc5bb;
  --line-dark: rgba(41, 41, 33, .2);
  --display: Georgia, "Times New Roman", serif;
  --body: Inter, Aptos, "Segoe UI", Arial, sans-serif;
  --shell: 1180px;
  --header-height: 92px;
  --shadow: 0 22px 60px rgba(48, 43, 34, .13);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--paper);
  font-family: var(--body);
  font-size: 16px;
  line-height: 1.66;
  -webkit-font-smoothing: antialiased;
}
body.menu-open { overflow: hidden; }
img { display: block; max-width: 100%; height: auto; }
button, input, select, textarea { color: inherit; font: inherit; }
button { cursor: pointer; }
a { color: inherit; text-decoration: none; }
address { font-style: normal; }
::selection { color: var(--white); background: var(--olive); }

:focus-visible {
  outline: 3px solid var(--rust);
  outline-offset: 4px;
}

.shell { width: min(calc(100% - 48px), var(--shell)); margin-inline: auto; }
.section { padding: clamp(84px, 9vw, 138px) 0; }
.section--tint { background: var(--paper-deep); }
.section--olive { color: var(--white); background: var(--olive); }
section[id] { scroll-margin-top: calc(var(--header-height) + 20px); }

.skip-link {
  position: fixed;
  z-index: 1000;
  top: 10px;
  left: 10px;
  padding: 11px 16px;
  color: var(--white);
  background: var(--olive-dark);
  transform: translateY(-160%);
}
.skip-link:focus { transform: none; }

h1, h2, h3, p, figure { margin-top: 0; }
h1, h2, h3 { font-family: var(--display); font-weight: 400; letter-spacing: -.025em; }
h1 { margin-bottom: 28px; font-size: clamp(3.2rem, 5.7vw, 6rem); line-height: .94; text-transform: uppercase; }
h2 { margin-bottom: 0; font-size: clamp(2.55rem, 4.7vw, 4.75rem); line-height: .98; text-transform: uppercase; }
h2 em { font-weight: 400; text-transform: none; }
h3 { line-height: 1.12; }

.kicker, .section-number {
  margin-bottom: 18px;
  color: var(--olive);
  font-size: .7rem;
  font-weight: 750;
  letter-spacing: .16em;
  line-height: 1.35;
  text-transform: uppercase;
}
.section-number { margin-bottom: 20px; }
.section--olive .section-number { color: #d9ddca; }
.title-line { width: 46px; height: 1px; display: block; margin: 24px 0 29px; background: var(--olive); }

.button {
  min-height: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 17px;
  padding: 14px 24px;
  border: 1px solid var(--olive);
  border-radius: 0;
  color: var(--white);
  background: var(--olive);
  font-size: .73rem;
  font-weight: 750;
  letter-spacing: .055em;
  line-height: 1.2;
  text-transform: uppercase;
  transition: color .2s ease, background .2s ease, border-color .2s ease, transform .2s ease;
}
.button:hover { border-color: var(--olive-dark); background: var(--olive-dark); transform: translateY(-2px); }
.button--light { border-color: var(--white); color: var(--olive-dark); background: var(--white); }
.button--light:hover { border-color: #e2dfd4; background: #e2dfd4; }
.button--outline { border-color: rgba(255,255,255,.66); color: var(--white); background: transparent; }
.button--outline:hover { border-color: var(--white); color: var(--olive-dark); background: var(--white); }
.button--full { width: 100%; }
.button[disabled] { cursor: wait; opacity: .62; transform: none; }

.plain-link, .arrow-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding-bottom: 2px;
  border-bottom: 1px solid currentColor;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .055em;
  text-transform: uppercase;
}
.plain-link span, .arrow-link span { transition: transform .2s ease; }
.plain-link:hover span, .arrow-link:hover span { transform: translateX(4px); }

.site-header {
  position: sticky;
  z-index: 50;
  top: 0;
  border-bottom: 1px solid transparent;
  background: rgba(245, 241, 234, .96);
  backdrop-filter: blur(10px);
  transition: box-shadow .25s ease, border-color .25s ease;
}
.site-header.is-scrolled { border-color: var(--line); box-shadow: 0 8px 28px rgba(48, 43, 34, .07); }
.header__inner { min-height: var(--header-height); display: flex; align-items: center; justify-content: space-between; gap: 34px; }
.brand { display: inline-flex; min-width: 0; align-items: center; gap: 12px; }
.brand__symbol { width: 56px; height: 52px; display: block; flex: 0 0 56px; overflow: hidden; }
.brand__symbol img { width: 68px; height: auto; max-width: none; margin: 1px 0 0 -6px; mix-blend-mode: multiply; }
.brand__wording { display: flex; min-width: 0; flex-direction: column; line-height: 1.16; }
.brand__wording strong { font-family: var(--display); font-size: 1.16rem; font-weight: 400; white-space: nowrap; }
.brand__wording small { margin-top: 3px; font-family: var(--display); font-size: .78rem; white-space: nowrap; }

.main-nav { display: flex; align-items: center; gap: clamp(21px, 2.5vw, 37px); }
.main-nav > a:not(.nav-cta) { position: relative; padding: 11px 0; font-size: .7rem; font-weight: 650; letter-spacing: .035em; }
.main-nav > a:not(.nav-cta)::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: 6px;
  left: 0;
  height: 1px;
  background: var(--olive);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform .2s ease;
}
.main-nav > a:not(.nav-cta):hover::after { transform: scaleX(1); transform-origin: left; }
.nav-cta { min-height: 42px; display: inline-flex; align-items: center; gap: 14px; padding: 9px 16px; border: 1px solid #aaa69c; font-size: .68rem; font-weight: 700; letter-spacing: .045em; text-transform: uppercase; transition: .2s ease; }
.nav-cta:hover { border-color: var(--olive); color: var(--white); background: var(--olive); }
.menu-toggle { width: 48px; height: 48px; display: none; flex: 0 0 48px; padding: 12px 8px; border: 0; background: transparent; }
.menu-toggle span { width: 100%; height: 1px; display: block; margin: 6px 0; background: currentColor; transition: transform .25s ease, opacity .25s ease; }

.hero { padding: clamp(40px, 5vw, 72px) 0 35px; background: var(--paper); }
.hero__grid { display: grid; grid-template-columns: .92fr 1.08fr; align-items: center; }
.hero__copy { min-width: 0; position: relative; z-index: 2; padding: 30px clamp(12px, 1.5vw, 22px) 38px 0; }
.hero__copy h1 { max-width: 640px; }
.hero h1 { font-size: clamp(3rem, 3.55vw, 3.45rem); line-height: .98; }
.hero__lead { margin: 0 0 33px; color: var(--muted); font-size: clamp(.98rem, 1.25vw, 1.08rem); line-height: 1.7; }
.hero__actions { display: flex; align-items: center; gap: 25px; }
.hero__media { min-width: 0; min-height: 570px; position: relative; margin: 0; overflow: hidden; background: #ddd8cf; }
.hero__media picture, .hero__media img { width: 100%; height: 100%; }
.hero__media img { position: absolute; inset: 0; object-fit: cover; object-position: 60% center; }
.hero__media::before { content: ""; position: absolute; z-index: 1; inset: 0 auto 0 0; width: 14%; background: linear-gradient(90deg, rgba(245,241,234,.55), transparent); pointer-events: none; }
.hero__media figcaption { position: absolute; z-index: 2; right: 18px; bottom: 16px; padding: 7px 10px; color: rgba(255,255,255,.86); background: rgba(26,31,23,.64); font-size: .61rem; letter-spacing: .08em; text-transform: uppercase; }
.hero__services { display: flex; align-items: center; gap: 17px; padding-top: 27px; color: var(--muted); font-size: .61rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.hero__services i { width: 3px; height: 3px; border-radius: 50%; background: var(--olive); }

.story { background: var(--white); }
.story__grid { display: grid; grid-template-columns: .72fr 1.28fr; gap: clamp(46px, 7vw, 100px); align-items: center; }
.story__copy { padding-left: clamp(0px, 3vw, 38px); }
.story__copy > p:not(.section-number) { max-width: 430px; color: var(--muted); font-size: .9rem; }
.story__copy .arrow-link { margin-top: 9px; }
.story__media { margin: 0; }
.story__media img { width: 100%; aspect-ratio: 1.55; object-fit: cover; object-position: center 44%; }
.story__media figcaption { margin-top: 10px; color: var(--muted); font-size: .62rem; letter-spacing: .08em; text-align: right; text-transform: uppercase; }

.section-heading { display: grid; grid-template-columns: 1.35fr .65fr; gap: clamp(35px, 8vw, 110px); align-items: end; margin-bottom: clamp(42px, 6vw, 74px); }
.section-heading > p { max-width: 420px; margin-bottom: 3px; color: var(--muted); font-size: .93rem; }
.section-heading--light > p { color: rgba(255,255,255,.7); }

.service-cards { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.service-card { min-width: 0; border-left: 1px solid var(--line); background: rgba(255,255,255,.3); }
.service-card:last-child { border-right: 1px solid var(--line); }
.service-card picture { display: block; overflow: hidden; }
.service-card img { width: 100%; aspect-ratio: 1.42; object-fit: cover; filter: saturate(.82) contrast(.98); transition: transform .55s ease, filter .55s ease; }
.service-card:hover img { filter: saturate(1); transform: scale(1.025); }
.service-card__body { padding: 24px 18px 29px; }
.service-card__body > span { color: var(--muted); font-size: .63rem; letter-spacing: .1em; }
.service-card h3 { margin: 5px 0 11px; font-size: 1.55rem; text-transform: uppercase; }
.service-card p { min-height: 78px; margin-bottom: 20px; color: var(--muted); font-size: .82rem; }
.service-card .arrow-link { font-size: .65rem; }

.service-spectrum { display: grid; grid-template-columns: repeat(5, 1fr); margin-top: 60px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.service-spectrum article { min-height: 175px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 23px 12px; border-left: 1px solid var(--line); text-align: center; }
.service-spectrum article:last-child { border-right: 1px solid var(--line); }
.service-spectrum svg { width: 52px; height: 52px; fill: none; stroke: var(--olive); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.service-spectrum h3 { margin: 13px 0 0; font-family: var(--body); font-size: .7rem; font-weight: 700; letter-spacing: .065em; text-transform: uppercase; }

.craft { background: var(--white); }
.craft__grid { display: grid; grid-template-columns: 1.1fr .9fr; align-items: stretch; }
.craft__media { min-height: 640px; margin: 0; }
.craft__media picture, .craft__media img { width: 100%; height: 100%; }
.craft__media img { object-fit: cover; object-position: center; }
.craft__copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(55px, 7vw, 100px); border: 1px solid var(--line); border-left: 0; }
.craft__copy > p:not(.section-number) { color: var(--muted); font-size: .9rem; }
.values { display: grid; grid-template-columns: repeat(3, 1fr); gap: 13px; margin-top: 30px; }
.values div { padding-top: 17px; border-top: 1px solid var(--line); }
.values span, .values strong, .values small { display: block; }
.values span { color: var(--olive); font-family: var(--display); font-size: 1.1rem; }
.values strong { margin-top: 10px; font-size: .64rem; letter-spacing: .09em; text-transform: uppercase; }
.values small { margin-top: 5px; color: var(--muted); font-size: .65rem; line-height: 1.45; }

.audiences { position: relative; overflow: hidden; }
.audiences::after { content: ""; position: absolute; right: -120px; bottom: -180px; width: 460px; height: 460px; border: 1px solid rgba(255,255,255,.12); border-radius: 50%; }
.audience-grid { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(2, 1fr); border-top: 1px solid rgba(255,255,255,.3); border-bottom: 1px solid rgba(255,255,255,.3); }
.audience-card { min-height: 380px; padding: clamp(36px, 5vw, 65px); border-left: 1px solid rgba(255,255,255,.3); }
.audience-card:last-child { border-right: 1px solid rgba(255,255,255,.3); }
.audience-card > span { color: #d9ddca; font-size: .67rem; font-weight: 750; letter-spacing: .14em; text-transform: uppercase; }
.audience-card h3 { max-width: 470px; margin: 28px 0 18px; font-size: clamp(2rem, 3vw, 3rem); text-transform: uppercase; }
.audience-card p { max-width: 520px; margin-bottom: 28px; color: rgba(255,255,255,.72); font-size: .9rem; }

.gallery { background: var(--paper); }
.gallery__grid { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: 300px 300px; gap: 12px; }
.gallery-card { min-width: 0; position: relative; overflow: hidden; padding: 0; border: 0; color: var(--white); background: #ddd8cd; text-align: left; }
.gallery-card--tall { grid-row: span 2; }
.gallery-card--wide { grid-column: span 2; }
.gallery-card img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.82); transition: transform .5s ease, filter .5s ease; }
.gallery-card:hover img, .gallery-card:focus-visible img { filter: saturate(1); transform: scale(1.025); }
.gallery-card::after { content: ""; position: absolute; inset: 45% 0 0; background: linear-gradient(transparent, rgba(20,24,17,.74)); pointer-events: none; }
.gallery-card > span { position: absolute; z-index: 1; right: 20px; bottom: 18px; left: 20px; font-family: var(--display); font-size: 1.25rem; }
.gallery-card > span small { display: block; margin-bottom: 3px; font-family: var(--body); font-size: .57rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.gallery__hint { margin: 14px 0 0; color: var(--muted); font-size: .64rem; letter-spacing: .08em; text-align: right; text-transform: uppercase; }

.about__grid { display: grid; grid-template-columns: .82fr 1.18fr; gap: clamp(50px, 9vw, 120px); align-items: center; }
.about__media { min-height: 690px; position: relative; margin: 0; }
.about__media picture, .about__media img { width: 100%; height: 100%; }
.about__media img { position: absolute; inset: 0; object-fit: cover; object-position: center 35%; }
.about__seal { position: absolute; right: -35px; bottom: 35px; width: 132px; aspect-ratio: 1; display: grid; align-content: center; border: 1px solid var(--white); border-radius: 50%; color: var(--white); background: var(--olive); text-align: center; }
.about__seal strong, .about__seal span, .about__seal small { display: block; line-height: 1.05; }
.about__seal strong, .about__seal span { font-family: var(--display); font-size: 1.02rem; font-weight: 400; }
.about__seal small { margin-top: 8px; font-size: .5rem; letter-spacing: .08em; text-transform: uppercase; }
.about__copy { max-width: 600px; }
.about__copy > p:not(.section-number) { color: var(--muted); }
.about__copy .intro-text { color: var(--ink) !important; font-family: var(--display); font-size: clamp(1.25rem, 2vw, 1.55rem); line-height: 1.45; }
.about__copy .arrow-link { margin-top: 9px; }

.process { background: var(--white); }
.process__list { display: grid; grid-template-columns: repeat(4, 1fr); margin: 0; padding: 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); list-style: none; }
.process__list li { min-height: 245px; padding: 27px 26px 32px; border-left: 1px solid var(--line); }
.process__list li:last-child { border-right: 1px solid var(--line); }
.process__list span { color: var(--olive); font-family: var(--display); font-size: 1.05rem; }
.process__list h3 { margin: 48px 0 12px; font-size: 1.4rem; text-transform: uppercase; }
.process__list p { margin: 0; color: var(--muted); font-size: .8rem; }

.contact { background: var(--paper-deep); }
.contact__grid { display: grid; grid-template-columns: .78fr 1.22fr; gap: clamp(52px, 8vw, 110px); align-items: start; }
.contact__intro { position: sticky; top: calc(var(--header-height) + 35px); }
.contact__intro > p:not(.section-number, .appointment-note) { max-width: 510px; margin: 30px 0 39px; color: var(--muted); }
.contact-data { max-width: 520px; border-top: 1px solid var(--line); }
.contact-data > div { display: grid; grid-template-columns: 130px 1fr; padding: 20px 0; border-bottom: 1px solid var(--line); }
.contact-data small { grid-row: span 3; padding-top: 3px; color: var(--olive); font-size: .62rem; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
.contact-data strong, .contact-data a, .contact-data span { font-size: .91rem; line-height: 1.55; overflow-wrap: anywhere; }
.contact-data a:hover { color: var(--olive); text-decoration: underline; }
.appointment-note { max-width: 520px; margin: 18px 0 0; color: var(--olive-dark); font-family: var(--display); font-size: 1.05rem; text-align: center; }

.request-form { padding: clamp(30px, 5vw, 62px); background: var(--white); box-shadow: var(--shadow); }
.request-form .form-kicker { margin-bottom: 8px; color: var(--olive); font-size: .64rem; font-weight: 750; letter-spacing: .14em; text-transform: uppercase; }
.request-form > h3 { margin: 0 0 33px; font-size: clamp(1.75rem, 2.8vw, 2.55rem); text-transform: uppercase; }
.request-form fieldset { margin: 0 0 27px; padding: 0; border: 0; }
.request-form legend, .request-form label { color: #46463e; font-size: .68rem; font-weight: 700; letter-spacing: .055em; text-transform: uppercase; }
.request-form legend { margin-bottom: 10px; }
.choice-group { display: grid; grid-template-columns: repeat(2, 1fr); gap: 9px; }
.choice-group label { position: relative; }
.choice-group input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.choice-group span { min-height: 48px; display: grid; place-items: center; padding: 10px; border: 1px solid var(--line); font-size: .68rem; text-align: center; transition: .2s ease; }
.choice-group input:checked + span { border-color: var(--olive); color: var(--white); background: var(--olive); }
.choice-group input:focus-visible + span { outline: 3px solid var(--rust); outline-offset: 3px; }
.form-row { margin-bottom: 20px; }
.form-row--split { display: grid; grid-template-columns: repeat(2, 1fr); gap: 22px; }
.form-row label { display: block; margin-bottom: 5px; }
.request-form input[type="text"], .request-form input[type="email"], .request-form input[type="tel"], .request-form select, .request-form textarea {
  width: 100%;
  min-height: 46px;
  padding: 9px 0;
  border: 0;
  border-bottom: 1px solid #9f9e94;
  border-radius: 0;
  color: var(--ink);
  background: transparent;
  outline-offset: 3px;
}
.request-form select { cursor: pointer; }
.request-form textarea { min-height: 122px; resize: vertical; }
.request-form input:focus, .request-form select:focus, .request-form textarea:focus { border-bottom-color: var(--olive); }
.file-upload { min-height: 92px; display: flex !important; align-items: center; gap: 17px; margin: 4px 0 22px; padding: 17px; border: 1px dashed #999b89; cursor: pointer; text-transform: none !important; transition: border-color .2s ease, background .2s ease; }
.file-upload:hover, .file-upload:focus-within, .file-upload.is-dragging { border-color: var(--olive); background: rgba(75,88,50,.055); }
.file-upload input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.file-upload__plus { width: 44px; aspect-ratio: 1; display: grid; flex: 0 0 44px; place-items: center; border-radius: 50%; color: var(--white); background: var(--olive); font-family: var(--display); font-size: 1.45rem; font-weight: 400; }
.file-upload strong, .file-upload small { display: block; }
.file-upload strong { color: var(--ink); font-size: .72rem; letter-spacing: .04em; text-transform: uppercase; }
.file-upload small { margin-top: 3px; color: var(--muted); font-size: .68rem; font-weight: 400; letter-spacing: 0; }
.consent { display: flex !important; align-items: flex-start; gap: 11px; color: var(--muted) !important; font-size: .68rem !important; font-weight: 400 !important; letter-spacing: 0 !important; line-height: 1.5; text-transform: none !important; }
.consent input { width: 18px; height: 18px; flex: 0 0 18px; margin: 1px 0 0; accent-color: var(--olive); }
.consent a { color: var(--olive-dark); text-decoration: underline; }
.request-form .button { margin-top: 25px; }
.form-note { margin: 10px 0 0; color: var(--muted); font-size: .62rem; text-align: center; }
.form-status { margin-bottom: 23px; padding: 14px 16px; border: 1px solid #66805e; color: #264622; background: #eef5e9; font-size: .83rem; }
.form-status.is-error { border-color: #a86152; color: #702f24; background: #fbebe6; }
.honeypot { position: absolute !important; left: -9999px !important; }

.closing-cta { padding: 38px 0; color: var(--white); background: var(--olive); }
.closing-cta__inner { display: grid; grid-template-columns: 85px 1fr auto; gap: 28px; align-items: center; }
.closing-cta__logo { width: 78px; height: 72px; overflow: hidden; opacity: .82; }
.closing-cta__logo img { width: 94px; max-width: none; margin: 1px 0 0 -8px; mix-blend-mode: multiply; }
.closing-cta small { display: block; color: rgba(255,255,255,.75); font-size: .64rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.closing-cta h2 { margin-top: 5px; font-size: clamp(1.7rem, 3vw, 2.75rem); text-transform: uppercase; }

.site-footer { padding-top: 68px; color: #4d4d45; background: var(--paper); }
.footer__grid { display: grid; grid-template-columns: 1.65fr .8fr 1.25fr .65fr; gap: 45px; }
.footer__brand p { max-width: 310px; margin: 19px 0 0; color: var(--muted); font-size: .76rem; }
.footer__grid > nav, .footer__grid > div:not(.footer__brand) { display: flex; flex-direction: column; align-items: flex-start; }
.footer__grid > * > strong { margin-bottom: 14px; color: var(--ink); font-size: .64rem; letter-spacing: .12em; text-transform: uppercase; }
.footer__grid > * > a, .footer__grid > * > span { margin-bottom: 6px; font-size: .74rem; overflow-wrap: anywhere; }
.footer__grid a:hover { color: var(--olive); text-decoration: underline; }
.footer__bottom { display: flex; justify-content: space-between; margin-top: 58px; padding: 20px 0 25px; border-top: 1px solid var(--line); color: var(--muted); font-size: .61rem; letter-spacing: .07em; text-transform: uppercase; }

.lightbox { width: min(94vw, 1180px); max-width: none; height: min(92vh, 850px); max-height: none; padding: 0; border: 0; color: var(--white); background: #171912; box-shadow: 0 30px 90px rgba(0,0,0,.4); }
.lightbox::backdrop { background: rgba(20,22,17,.82); backdrop-filter: blur(3px); }
.lightbox figure { width: 100%; height: 100%; display: grid; place-items: center; margin: 0; padding: 42px 70px 55px; }
.lightbox figure img { width: 100%; height: 100%; object-fit: contain; }
.lightbox figcaption { position: absolute; right: 75px; bottom: 19px; left: 75px; color: rgba(255,255,255,.72); font-family: var(--display); font-size: .92rem; text-align: center; }
.lightbox__close, .lightbox__nav { position: absolute; z-index: 2; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.35); border-radius: 50%; color: var(--white); background: rgba(0,0,0,.32); }
.lightbox__close { top: 13px; right: 13px; width: 44px; height: 44px; font-size: 1.55rem; }
.lightbox__nav { top: 50%; width: 46px; height: 46px; transform: translateY(-50%); }
.lightbox__nav--prev { left: 13px; }
.lightbox__nav--next { right: 13px; }

.js-ready .reveal { opacity: 0; transform: translateY(20px); transition: opacity .7s ease, transform .7s ease; }
.js-ready .reveal.is-visible { opacity: 1; transform: none; }

/* Rechtliche Unterseiten */
.legal-page { min-height: 100vh; background: var(--paper); }
.legal-header { border-bottom: 1px solid var(--line); background: var(--paper); }
.legal-header .shell { min-height: var(--header-height); display: flex; align-items: center; justify-content: space-between; gap: 30px; }
.legal-back { font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.legal-content { width: min(calc(100% - 48px), 820px); margin-inline: auto; padding: 85px 0 110px; }
.legal-content h1 { margin-bottom: 45px; color: var(--ink); }
.legal-content h2 { margin: 45px 0 14px; font-size: 1.75rem; text-transform: none; }
.legal-content h3 { margin: 30px 0 8px; font-family: var(--body); font-size: 1rem; font-weight: 700; }
.legal-content p, .legal-content li { color: var(--muted); font-size: .9rem; }
.legal-content a { color: var(--olive-dark); text-decoration: underline; }
.legal-content .legal-lead { padding: 22px 24px; border-left: 3px solid var(--olive); background: var(--white); }

@media (max-width: 1050px) {
  .main-nav { gap: 20px; }
  .main-nav > a:not(.nav-cta) { font-size: .66rem; }
  .hero__grid { grid-template-columns: .9fr 1.1fr; }
  .hero__copy { padding-right: 34px; }
  .hero__media { min-height: 520px; }
  .craft__copy { padding: 50px; }
  .values { grid-template-columns: 1fr; }
  .values div { display: grid; grid-template-columns: 38px 110px 1fr; gap: 8px; align-items: start; }
  .values strong { margin-top: 3px; }
  .values small { margin-top: 2px; }
}

@media (max-width: 900px) {
  :root { --header-height: 78px; }
  .menu-toggle { display: block; }
  .main-nav {
    position: fixed;
    z-index: 49;
    top: var(--header-height);
    right: 0;
    bottom: 0;
    left: 0;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    overflow-y: auto;
    padding: 32px max(24px, calc((100vw - var(--shell)) / 2)) 50px;
    color: var(--white);
    background: var(--olive-dark);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-10px);
    transition: opacity .22s ease, visibility .22s ease, transform .22s ease;
  }
  .main-nav.is-open { opacity: 1; visibility: visible; transform: none; }
  .main-nav > a:not(.nav-cta) { padding: 16px 0; border-bottom: 1px solid rgba(255,255,255,.2); font-family: var(--display); font-size: clamp(1.55rem, 6vw, 2.4rem); font-weight: 400; letter-spacing: -.02em; }
  .main-nav > a:not(.nav-cta)::after { display: none; }
  .nav-cta { min-height: 54px; justify-content: center; margin-top: 30px; border-color: rgba(255,255,255,.55); }
  .menu-open .menu-toggle span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .menu-open .menu-toggle span:nth-child(2) { opacity: 0; }
  .menu-open .menu-toggle span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
  .hero__grid { grid-template-columns: 1fr; }
  .hero__copy { max-width: 710px; padding: 35px 0 55px; }
  .hero__media { min-height: 500px; }
  .story__grid { grid-template-columns: .85fr 1.15fr; gap: 38px; }
  .craft__grid { grid-template-columns: 1fr; }
  .craft__media { min-height: 560px; }
  .craft__copy { border-top: 0; border-left: 1px solid var(--line); }
  .values { grid-template-columns: repeat(3, 1fr); }
  .values div { display: block; }
  .process__list { grid-template-columns: repeat(2, 1fr); }
  .process__list li:nth-child(2) { border-right: 1px solid var(--line); }
  .process__list li:nth-child(n+3) { border-top: 1px solid var(--line); }
  .contact__grid { grid-template-columns: 1fr; }
  .contact__intro { position: static; }
  .footer__grid { grid-template-columns: 1.4fr 1fr 1fr; }
  .footer__grid > nav:last-child { grid-column: 2; }
}

@media (max-width: 760px) {
  .shell { width: min(calc(100% - 32px), var(--shell)); }
  .section { padding: 76px 0; }
  .brand__symbol { width: 49px; height: 46px; flex-basis: 49px; }
  .brand__symbol img { width: 60px; }
  .brand__wording strong { font-size: 1rem; }
  .brand__wording small { font-size: .7rem; }
  .hero { padding-top: 20px; }
  .hero__copy { padding-top: 25px; }
  .hero h1 { font-size: clamp(2.65rem, 9.5vw, 3.2rem); hyphens: manual; }
  .hero__actions { align-items: flex-start; flex-direction: column; gap: 20px; }
  .hero__media { min-height: 400px; }
  .hero__services { flex-wrap: wrap; gap: 9px 12px; }
  .story__grid, .section-heading, .about__grid { grid-template-columns: 1fr; }
  .story__copy { padding-left: 0; }
  .story__media img { aspect-ratio: 1.25; }
  .section-heading { gap: 25px; }
  .service-cards { grid-template-columns: 1fr; }
  .service-card { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
  .service-card:last-child { border-bottom: 0; }
  .service-card p { min-height: 0; }
  .service-spectrum { grid-template-columns: repeat(2, 1fr); }
  .service-spectrum article { min-height: 150px; border-bottom: 1px solid var(--line); }
  .service-spectrum article:nth-child(even) { border-right: 1px solid var(--line); }
  .service-spectrum article:last-child { grid-column: span 2; border-bottom: 0; }
  .craft__media { min-height: 440px; }
  .craft__copy { padding: 42px 28px; }
  .values { grid-template-columns: 1fr; }
  .values div { display: grid; grid-template-columns: 36px 100px 1fr; gap: 8px; }
  .audience-grid { grid-template-columns: 1fr; }
  .audience-card { min-height: 0; border-right: 1px solid rgba(255,255,255,.3); }
  .audience-card + .audience-card { border-top: 1px solid rgba(255,255,255,.3); }
  .gallery__grid { grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(3, 270px); }
  .gallery-card--tall { grid-row: span 2; }
  .gallery-card--wide { grid-column: auto; }
  .gallery-card:last-child { grid-column: span 2; }
  .about__grid { gap: 55px; }
  .about__media { min-height: 580px; }
  .about__seal { right: 18px; bottom: -30px; }
  .closing-cta__inner { grid-template-columns: 65px 1fr; }
  .closing-cta__logo { width: 60px; height: 58px; }
  .closing-cta__logo img { width: 75px; }
  .closing-cta .button { grid-column: span 2; }
  .footer__grid { grid-template-columns: 1fr 1fr; }
  .footer__brand { grid-column: span 2; }
  .footer__grid > nav:last-child { grid-column: auto; }
}

@media (max-width: 520px) {
  h1 { font-size: clamp(2.7rem, 11vw, 3.55rem); }
  h2 { font-size: clamp(2.25rem, 11.4vw, 3.35rem); }
  .header__inner { gap: 12px; }
  .brand { gap: 7px; }
  .brand__wording strong { font-size: .92rem; }
  .brand__wording small { font-size: .63rem; }
  .hero__media { min-height: 325px; }
  .hero__media img { object-position: 64% center; }
  .hero__media figcaption { display: none; }
  .story__media img { aspect-ratio: .95; object-position: center; }
  .service-spectrum { display: block; }
  .service-spectrum article, .service-spectrum article:nth-child(even), .service-spectrum article:last-child { min-height: 125px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
  .service-spectrum article:last-child { border-bottom: 0; }
  .values div { display: grid; grid-template-columns: 34px 1fr; }
  .values small { grid-column: 2; }
  .gallery__grid { display: block; }
  .gallery-card { width: 100%; height: 300px; display: block; margin-bottom: 10px; }
  .gallery-card--tall { height: 430px; }
  .gallery__hint { text-align: left; }
  .about__media { min-height: 500px; }
  .process__list { grid-template-columns: 1fr; }
  .process__list li, .process__list li:nth-child(2) { min-height: 0; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
  .process__list li:last-child { border-bottom: 0; }
  .process__list h3 { margin-top: 28px; }
  .contact-data > div { grid-template-columns: 1fr; gap: 4px; }
  .contact-data small { grid-row: auto; margin-bottom: 7px; }
  .request-form { padding: 29px 21px; }
  .form-row--split, .choice-group { grid-template-columns: 1fr; gap: 14px; }
  .choice-group { gap: 8px; }
  .closing-cta__logo { display: none; }
  .closing-cta__inner { display: flex; align-items: stretch; flex-direction: column; }
  .closing-cta .button { width: 100%; }
  .footer__grid { grid-template-columns: 1fr; }
  .footer__brand { grid-column: auto; }
  .footer__bottom { align-items: flex-start; flex-direction: column; gap: 6px; }
  .lightbox figure { padding: 55px 12px 60px; }
  .lightbox__nav { top: auto; bottom: 8px; transform: none; }
  .lightbox__nav--prev { left: 12px; }
  .lightbox__nav--next { right: 12px; }
  .lightbox figcaption { right: 62px; bottom: 15px; left: 62px; font-size: .75rem; }
  .legal-header .brand__wording { display: none; }
}

@media (max-height: 560px) and (orientation: landscape) {
  .main-nav { padding-top: 15px; }
  .main-nav > a:not(.nav-cta) { padding: 9px 0; font-size: 1.3rem; }
  .nav-cta { min-height: 46px; margin-top: 15px; }
}

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