@font-face {
  font-family: "Montserrat Local";
  src: url("assets/montserrat-400.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: "Montserrat Local";
  src: url("assets/montserrat-700.ttf") format("truetype");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}

:root {
  --black: #070808;
  --ink: #141819;
  --paper: #f7f8f6;
  --mist: #e7ecec;
  --blue: #4f89a2;
  --line: rgb(16 24 27 / 20%);
  --shell: min(1120px, calc(100% - 64px));
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  color: var(--ink);
  background: var(--paper);
  font-family: "Montserrat Local", Montserrat, Arial, sans-serif;
  font-size: 16px;
  line-height: 1.6;
}

a { color: inherit; }

a:focus-visible, button:focus-visible {
  outline: 3px solid #7bc8e9;
  outline-offset: 4px;
}

img { display: block; max-width: 100%; }

h1, h2, h3, p { margin: 0; }

h1, h2, h3 { line-height: 1.08; text-wrap: balance; }

.shell { width: var(--shell); margin: 0 auto; }

.section-padding { padding: clamp(72px, 10vw, 144px) 0; }

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.skip-link {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 100;
  transform: translateY(-160%);
  padding: 10px 14px;
  color: #fff;
  background: #000;
  border-radius: 2px;
}

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

.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  min-height: 76px;
  padding: 14px clamp(24px, 5vw, 76px);
  color: #fff;
  background: var(--black);
}

.brand { display: inline-flex; width: 174px; }

/* Annotation 6: Das Header-Logo ist bewusst größer als die bisherige 120px-Variante. */
.brand img { width: 100%; height: 42px; object-fit: contain; filter: invert(1); }

.primary-nav {
  display: flex;
  /* Annotation 1: ungefähr ein normaler Wortabstand statt übergroßer Navigation-Lücken. */
  gap: .5em;
  align-items: center;
  margin-right: 2rem;
}

.primary-nav a {
  color: #fff;
  font-size: .85rem;
  font-weight: 600;
  letter-spacing: .1em;
  text-decoration: none;
  text-transform: uppercase;
  white-space: nowrap;
}

.primary-nav a + a::before { content: " "; }

.primary-nav a:hover, .footer-nav a:hover { color: #9fd3e9; }

.menu-toggle {
  position: relative;
  display: grid;
  width: 44px;
  height: 44px;
  padding: 0;
  place-items: center;
  color: #fff;
  background: transparent;
  border: 0;
  cursor: pointer;
}

.menu-toggle__icon, .menu-toggle__icon::before, .menu-toggle__icon::after {
  width: 22px;
  height: 2px;
  content: "";
  background: currentColor;
  transition: transform 180ms ease;
}

.menu-toggle__icon { position: relative; }
.menu-toggle__icon::before { position: absolute; top: -7px; left: 0; }
.menu-toggle__icon::after { position: absolute; top: 7px; left: 0; }
.menu-toggle[aria-expanded="true"] .menu-toggle__icon { background: transparent; }
.menu-toggle[aria-expanded="true"] .menu-toggle__icon::before { top: 0; transform: rotate(45deg); }
.menu-toggle[aria-expanded="true"] .menu-toggle__icon::after { top: 0; transform: rotate(-45deg); }

.mobile-menu {
  position: absolute;
  top: 76px;
  right: 0;
  display: grid;
  width: min(420px, 100vw);
  max-height: calc(100vh - 76px);
  padding: 28px clamp(24px, 5vw, 54px) 36px;
  overflow-y: auto;
  background: #101315;
  box-shadow: -20px 26px 60px rgb(0 0 0 / 32%);
}

.mobile-menu[hidden] { display: none; }

.mobile-menu a {
  padding: .55rem 0;
  color: #fff;
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid rgb(255 255 255 / 14%);
}

.mobile-menu a:last-child { border-bottom: 0; }

.section-image { background-size: cover; background-position: center; }

.hero {
  position: relative;
  min-height: min(880px, calc(100vh - 76px));
  color: #fff;
  background-image: url("assets/hero.webp");
}

.hero__overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgb(3 23 30 / 25%), rgb(2 15 21 / 38%)); }

.hero__content {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  min-height: inherit;
  padding: clamp(88px, 11vw, 156px) 0 7rem;
  text-align: center;
}

.hero__intro h1, .hero__statement strong {
  font-size: clamp(1.5rem, 3.2vw, 3.2rem);
  font-weight: 700;
  text-transform: uppercase;
}

.hero__intro p, .hero__statement span {
  display: block;
  margin-top: .65rem;
  font-size: clamp(1.2rem, 2.8vw, 2.35rem);
  font-weight: 400;
  letter-spacing: .025em;
  text-transform: uppercase;
}

.hero__statement { margin-top: clamp(84px, 17vh, 178px); }

.hero__statement strong { font-size: clamp(1.18rem, 2.1vw, 2rem); }
.hero__statement span { font-size: clamp(1rem, 2vw, 1.65rem); }

.eyebrow {
  margin-bottom: 1rem;
  color: #497487;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
}

h2 { font-size: clamp(2rem, 4vw, 4.25rem); font-weight: 700; letter-spacing: -.045em; }

.core-areas { background: #fff; }
.core-areas h2 { max-width: 840px; }

.core-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: clamp(38px, 5vw, 64px); }

.core-card, .service-card {
  min-height: 230px;
  padding: 28px;
  color: #fff;
  background: var(--ink);
  text-decoration: none;
  transition: transform 180ms ease, background 180ms ease;
}

.core-card:hover, .service-card:hover { background: #3d738a; transform: translateY(-5px); }

.core-card img { width: auto; height: 70px; margin-bottom: 35px; object-fit: contain; filter: brightness(0) invert(1); }
.core-card span, .service-card span { display: block; font-size: 1.3rem; font-weight: 700; text-transform: uppercase; }
.core-card small, .service-card small { display: block; font-size: .88rem; line-height: 1.4; }

.feature { position: relative; color: #fff; }
.feature::before { position: absolute; inset: 0; content: ""; background: linear-gradient(90deg, rgb(0 0 0 / 52%), rgb(0 0 0 / 5%)); }
.feature--integration { min-height: 640px; background-image: url("assets/integration.webp"); }
.feature--sustainability { background-image: url("assets/sustainability.webp"); }

.feature__content { position: relative; display: grid; align-items: center; min-height: inherit; padding: clamp(76px, 10vw, 142px) 0; }
.feature__content > div { max-width: 570px; }
.feature .eyebrow { color: #d4effa; }
.feature p:not(.eyebrow), .contact__copy > p:not(.eyebrow) { margin-top: 1.6rem; }

/* Annotation 2: Der Container um Buttons bleibt transparent; nur der Button selbst erhält die dunkle Fläche. */
.button-wrap { display: inline-block; margin-top: 2rem; background: transparent; }

.button {
  display: inline-block;
  padding: .9rem 1.35rem;
  color: #fff;
  font-weight: 700;
  line-height: 1.4;
  text-decoration: none;
  background: #101719;
  border: 1px solid #101719;
  border-radius: 0;
  transition: background 180ms ease, border-color 180ms ease, transform 180ms ease;
}

.button:hover { color: #fff; background: #356f88; border-color: #356f88; transform: translateY(-2px); }

.services { background: var(--paper); }
.services__heading { display: grid; grid-template-columns: minmax(250px, .9fr) minmax(320px, 1.1fr); gap: clamp(48px, 11vw, 180px); align-items: end; }
.services__copy p + p { margin-top: 1rem; }

.service-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; margin-top: clamp(48px, 8vw, 108px); background: var(--line); border: 1px solid var(--line); }

.service-card {
  min-height: 202px;
  padding: 23px;
  background: #fff;
  color: var(--ink);
}

.service-card:hover { color: #fff; }
.service-card img { width: auto; height: 54px; margin: 0 0 28px; object-fit: contain; }
.service-card:hover img { filter: brightness(0) invert(1); }
.service-card small { margin-top: .2rem; }

.feature--sustainability::before { background: rgb(0 43 58 / 45%); }
.feature__content--split { grid-template-columns: minmax(0, .9fr) minmax(0, .65fr); gap: 8vw; }
.sustainability-mark { justify-self: end; align-self: start; max-width: 350px; }
.sustainability-mark img { width: 100%; height: auto; }

.contact {
  min-height: 730px;
  color: var(--ink);
  background-image: linear-gradient(90deg, rgb(250 252 252 / 90%), rgb(250 252 252 / 15%)), url("assets/contact.webp");
  background-position: center;
}

.contact__content { display: grid; justify-items: end; min-height: inherit; padding: clamp(76px, 10vw, 140px) 0; }
.contact__copy { width: min(100%, 520px); }
.contact .eyebrow { color: #395c6b; }

/* Annotation 3: Auch die halbtransparente Kontaktvariante benutzt immer weiße Schrift. */
.button--glass { color: #fff; background: rgb(4 14 18 / 68%); border-color: rgb(255 255 255 / 75%); backdrop-filter: blur(5px); }
.button--glass:hover { color: #fff; background: rgb(27 88 110 / 88%); border-color: #fff; }
.contact__phone { display: inline-block; margin-top: 1.1rem; font-weight: 700; }

.site-footer {
  display: grid;
  grid-template-columns: minmax(225px, .7fr) minmax(500px, 1.3fr);
  gap: 6vw;
  padding: 58px max(32px, calc((100vw - 1120px) / 2));
  color: #fff;
  background: var(--black);
}

/* Annotation 5: Das bereitgestellte SVG ist auch im Footer sichtbar. */
.footer-brand img { width: 174px; height: 46px; margin-bottom: 1.3rem; filter: invert(1); }
.footer-brand strong { display: block; font-size: 1.35rem; }
.footer-brand p { margin: .3rem 0 1rem; }
.footer-brand a { display: block; width: fit-content; color: #fff; text-decoration: none; }
.footer-brand a[aria-label="E-Mail senden"] { font-size: 2.7rem; line-height: 1; }

/* Annotation 4: Der Footer enthält die komplette Navigation des Burger-Menüs. */
.footer-nav { display: flex; flex-wrap: wrap; align-content: center; gap: 1rem 2rem; }
.footer-nav a { color: #fff; font-size: .9rem; text-decoration: none; }

@media (max-width: 980px) {
  :root { --shell: min(100% - 48px, 760px); }
  .site-header { grid-template-columns: 1fr auto; }
  .primary-nav { display: none; }
  .mobile-menu { top: 76px; }
  .core-grid, .service-grid { grid-template-columns: repeat(2, 1fr); }
  .services__heading, .feature__content--split, .site-footer { grid-template-columns: 1fr; }
  .sustainability-mark { justify-self: start; max-width: 290px; }
  .site-footer { gap: 2.4rem; }
}

@media (max-width: 620px) {
  :root { --shell: calc(100% - 40px); }
  body { font-size: 16px; }
  .site-header { min-height: 68px; padding: 10px 20px; }
  .brand { width: 150px; }
  .brand img { height: 38px; }
  .mobile-menu { top: 68px; max-height: calc(100vh - 68px); }
  .hero { min-height: 680px; }
  .hero__content { padding-top: 86px; }
  .hero__statement { margin-top: auto; }
  .hero__intro h1 { font-size: 1.55rem; }
  .hero__intro p { font-size: 1.1rem; }
  h2 { font-size: clamp(2rem, 11vw, 3rem); }
  .core-grid, .service-grid { grid-template-columns: 1fr; }
  .core-card { min-height: 190px; }
  .feature--integration { min-height: 580px; background-position: 58% center; }
  .feature__content { padding: 80px 0; }
  .feature__content--split { gap: 3rem; }
  .sustainability-mark { max-width: 210px; }
  .contact { min-height: 620px; background-image: linear-gradient(90deg, rgb(250 252 252 / 88%), rgb(250 252 252 / 58%)), url("assets/contact.webp"); }
  .contact__content { justify-items: start; }
  .site-footer { padding: 44px 20px; }
  .footer-nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem 1.2rem; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; }
}

/* Gemeinsames Seitensystem für alle lokalen Unterseiten. */
.detail-page { background: #fff; }

.detail-hero {
  position: relative;
  display: grid;
  min-height: min(760px, calc(100vh - 76px));
  overflow: hidden;
  color: #fff;
  background-color: #132328;
  background-size: cover;
  background-position: center;
}

.detail-hero--mountain { background-image: url("assets/hero.webp"); }
.detail-hero--factory { background-image: url("assets/integration.webp"); }
.detail-hero--sustainability { background-image: url("assets/sustainability.webp"); }
.detail-hero--contact { background-image: url("assets/contact.webp"); }
.detail-hero--defense { background-image: url("assets/hero.webp"); }

.detail-hero__video {
  position: absolute;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.detail-hero__veil {
  position: absolute;
  z-index: 1;
  inset: 0;
  background: linear-gradient(90deg, rgb(2 12 16 / 79%), rgb(2 12 16 / 45%) 52%, rgb(2 12 16 / 28%));
}

.detail-hero__content {
  z-index: 2;
  align-self: end;
  padding: clamp(92px, 12vw, 164px) 0 clamp(72px, 8vw, 118px);
}

.detail-hero__content .eyebrow { color: #d2effa; }
.detail-hero h1 { max-width: 980px; font-size: clamp(3rem, 7vw, 6.9rem); letter-spacing: -.065em; }
.detail-hero__intro { max-width: 700px; margin-top: 1.75rem; font-size: clamp(1.05rem, 1.6vw, 1.3rem); }
.detail-hero__content .button-wrap { margin-top: 2.2rem; }

.section-heading { display: grid; gap: .25rem; }
.approach { color: var(--ink); background: #fff; }
.approach-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; margin-top: clamp(44px, 6vw, 80px); background: var(--line); border: 1px solid var(--line); }

.approach-card { min-height: 300px; padding: clamp(26px, 4vw, 48px); background: var(--paper); }
.approach-card span { display: block; color: #487487; font-size: .8rem; font-weight: 700; letter-spacing: .12em; }
.approach-card h3 { margin-top: 4.2rem; font-size: clamp(1.35rem, 2vw, 1.85rem); font-weight: 700; }
.approach-card p { margin-top: 1rem; }

.detail-image { min-height: 520px; background-size: cover; background-position: center; }
.detail-image--mountain { background-image: linear-gradient(90deg, rgb(2 12 16 / 64%), rgb(2 12 16 / 12%)), url("assets/hero.webp"); }
.detail-image--factory { background-image: linear-gradient(90deg, rgb(2 12 16 / 64%), rgb(2 12 16 / 12%)), url("assets/integration.webp"); }
.detail-image--sustainability { background-image: linear-gradient(90deg, rgb(2 12 16 / 64%), rgb(2 12 16 / 12%)), url("assets/sustainability.webp"); }
.detail-image--contact { background-image: linear-gradient(90deg, rgb(2 12 16 / 64%), rgb(2 12 16 / 12%)), url("assets/contact.webp"); }
.detail-image--defense { background-image: linear-gradient(90deg, rgb(2 12 16 / 64%), rgb(2 12 16 / 12%)), url("assets/hero.webp"); }

.detail-image .shell { display: grid; align-items: end; min-height: 520px; padding: 60px 0; }
.detail-image__quote { max-width: 620px; color: #fff; }
.detail-image__quote span { font-size: .8rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.detail-image__quote p { margin-top: 1rem; font-size: clamp(1.8rem, 3.4vw, 3.6rem); font-weight: 700; line-height: 1.08; letter-spacing: -.045em; }

.related { background: var(--paper); }
.related-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: clamp(40px, 6vw, 76px); }
.related-card { position: relative; display: grid; min-height: 235px; padding: 28px; color: #fff; background: var(--ink); text-decoration: none; transition: transform 180ms ease, background 180ms ease; }
.related-card:hover { background: #356f88; transform: translateY(-4px); }
.related-card span { align-self: start; color: #cdebf7; font-size: .76rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.related-card strong { align-self: end; max-width: 90%; font-size: 1.35rem; line-height: 1.15; }
.related-card i { position: absolute; right: 28px; bottom: 23px; font-size: 1.45rem; font-style: normal; }

.contact--compact { min-height: 620px; }
.legal-copy { background: #fff; }
.narrow { width: min(760px, var(--shell)); margin: 0 auto; }
.narrow h2 { margin-bottom: 2rem; }
.narrow h3 { margin-top: 2.6rem; font-size: 1.5rem; }
.narrow p + p { margin-top: 1rem; }
.narrow dl { display: grid; grid-template-columns: 150px 1fr; gap: 1.25rem 2rem; margin: 2rem 0; }
.narrow dt { color: #487487; font-weight: 700; }
.narrow dd { margin: 0; }

@media (max-width: 980px) {
  .approach-grid, .related-grid { grid-template-columns: 1fr; }
  .approach-card { min-height: auto; }
  .approach-card h3 { margin-top: 2.3rem; }
}

@media (max-width: 620px) {
  .detail-hero { min-height: 650px; }
  .detail-hero__content { padding: 88px 0 64px; }
  .detail-hero h1 { font-size: clamp(2.7rem, 13vw, 4rem); }
  .detail-hero__veil { background: linear-gradient(90deg, rgb(2 12 16 / 80%), rgb(2 12 16 / 44%)); }
  .detail-image, .detail-image .shell { min-height: 420px; }
  .narrow dl { grid-template-columns: 1fr; gap: .2rem; }
}
