/* ══════════════════════════════════════════════════════════════
   Opheiden Dachdeckermeister GmbH — gemeinsames Aussehen
   Eine Datei für alle fünf Seiten. Keine externen Aufrufe,
   keine fremden Schriften, keine eingebettete Karte.

   Leitgedanke: Seit 1954, dritte Generation, zwölf Gewerke —
   deshalb heißt es hier nicht „geht nicht".
   ══════════════════════════════════════════════════════════════ */

:root{
  --papier:#F4F3F0;
  --papier-2:#E9E7E0;
  --getoent:#E4EBE6;        /* getönte Abschnitte, mit Grünstich statt Grau */
  --tinte:#171D19;
  --gruen:#2F4A3F;
  --gruen-tief:#1F332B;
  --gruen-hell:#E4EBE6;
  --messing:#A07A2C;        /* nur große Ziffern — klein zu hell */
  --messing-text:#7A5C1E;
  --grau:#5C6560;
  --linie:#D8D5CD;
  --linie-2:#BFBBB0;

  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --luft:clamp(3.2rem,8vw,6rem);
  color-scheme:light;
  accent-color:var(--gruen);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  /* KEIN overflow-x:hidden — das macht position:sticky kaputt.
     Überlauf wird stattdessen an der Quelle vermieden. */
  margin:0;background:var(--papier);color:var(--tinte);
  font-family:var(--sans);font-size:1.0625rem;line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{margin:0;line-height:1.08;letter-spacing:-.024em;font-weight:800}
p{margin:0}
img,svg{max-width:100%;height:auto}
figure{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
a{color:var(--gruen);text-decoration-thickness:1px;text-underline-offset:.2em}
a:hover{color:var(--tinte)}
:focus-visible{outline:2px solid var(--gruen);outline-offset:3px;border-radius:2px}

.wrap{max-width:64rem;margin-inline:auto;padding-inline:1.25rem}
.schmal{max-width:46rem}

.marke-klein{
  font-size:.7rem;font-weight:800;letter-spacing:.19em;text-transform:uppercase;
  color:var(--grau);
}
.marke-klein.hell{color:#A8C4B6}

/* ─── Entwurfsband ────────────────────────────────────────── */
.entwurf{
  background:var(--tinte);color:#E3E8E4;font-size:.82rem;
  padding:.6rem 1.25rem;text-align:center;line-height:1.45;
}
.entwurf b{color:#fff}

/* ─── Kopf: mittig, groß ──────────────────────────────────── */
.masthead{text-align:center;padding-block:1.9rem 1.4rem}
.logo{
  display:inline-flex;flex-direction:column;align-items:center;gap:.5rem;
  text-decoration:none;color:var(--tinte);
}
.logo .zeichen{width:42px;height:42px;color:var(--gruen)}
.logo b{
  font-size:clamp(1.6rem,5.6vw,2.35rem);font-weight:800;
  letter-spacing:.07em;line-height:1;
}
.logo .unterzeile{
  font-size:.71rem;letter-spacing:.22em;text-transform:uppercase;color:var(--grau);
  font-weight:700;
}

/* Nur die Navigationszeile bleibt oben kleben, nicht der ganze Kopf. */
.hauptnav{
  position:sticky;top:0;z-index:30;
  background:var(--papier);
  border-top:1px solid var(--linie-2);
  border-bottom:1px solid var(--linie-2);
}
.hauptnav ul{display:flex;flex-wrap:wrap;justify-content:center;gap:0 .4rem}
.hauptnav a{
  display:inline-flex;align-items:center;min-height:54px;
  padding:.3rem .95rem;
  font-size:clamp(.98rem,2.6vw,1.1rem);font-weight:700;letter-spacing:.02em;
  color:var(--tinte);text-decoration:none;
  border-bottom:3px solid transparent;
}
.hauptnav a:hover{color:var(--gruen);border-bottom-color:var(--linie-2)}
.hauptnav a[aria-current="page"]{color:var(--gruen);border-bottom-color:var(--gruen)}

/* ─── Ziegelmuster ────────────────────────────────────────── */
.ziegel{position:relative;overflow:hidden}
.ziegel::before{
  content:"";position:absolute;inset:0;opacity:.13;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='32' viewBox='0 0 64 32'%3E%3Cpath d='M-2 32 Q14 -2 30 32 Q46 -2 62 32' fill='none' stroke='%23ffffff' stroke-width='1.6'/%3E%3C/svg%3E");
  background-size:64px 32px;
}

/* ─── Der große Kopfbereich der Startseite ────────────────── */
.held{
  background:var(--gruen);color:#fff;
  padding-block:clamp(3.4rem,10vw,6.5rem);
}
.held .wrap{position:relative;z-index:2}
.held h1{
  color:#fff;font-size:clamp(2.3rem,7.4vw,4.6rem);max-width:15ch;
  margin-top:1.2rem;overflow-wrap:break-word;
}
.held .vorspann{
  margin-top:1.5rem;max-width:42ch;color:#CBDAD1;
  font-size:clamp(1.06rem,2.7vw,1.28rem);line-height:1.55;
}
.jahrgross{
  position:absolute;right:-.04em;bottom:-.2em;z-index:1;
  font-size:clamp(8rem,27vw,21rem);font-weight:800;line-height:.78;
  letter-spacing:-.05em;pointer-events:none;user-select:none;
  color:rgba(255,255,255,.07);
  -webkit-text-stroke:2px rgba(255,255,255,.17);
}

/* ─── Kopfbereich der Unterseiten: auch farbig ────────────── */
.seitenkopf{
  background:var(--gruen);color:#fff;
  padding-block:clamp(2.6rem,7vw,4.4rem);
}
.seitenkopf .wrap{position:relative;z-index:2}
.seitenkopf .marke-klein{display:block;margin-bottom:1rem;color:#A8C4B6}
.seitenkopf h1{color:#fff}
h1{font-size:clamp(2.1rem,6.4vw,3.7rem);max-width:19ch;overflow-wrap:break-word}
.seitenkopf .vorspann{
  margin-top:1.3rem;max-width:44ch;font-size:clamp(1.06rem,2.6vw,1.24rem);
  color:#CBDAD1;line-height:1.55;
}

section{padding-block:var(--luft)}
.getoent{background:var(--getoent)}
.titel{margin-bottom:2.6rem}
.titel .marke-klein{display:block;margin-bottom:.85rem;color:var(--gruen)}
.titel h2{font-size:clamp(1.7rem,5vw,2.7rem);max-width:22ch}
.titel p{margin-top:1rem;max-width:46ch;color:var(--grau)}

/* ─── Die Aussage: der Slogan als ganzflächiges Band ──────── */
.aussage{
  background:var(--gruen-tief);color:#fff;
  padding-block:clamp(3rem,8.5vw,5rem);
}
.aussage .wrap{position:relative;z-index:2}
.aussage .frage{
  font-size:.72rem;font-weight:800;letter-spacing:.19em;text-transform:uppercase;
  color:#A8C4B6;display:block;margin-bottom:1.1rem;
}
.aussage p{
  font-size:clamp(1.75rem,6vw,3.4rem);font-weight:800;
  letter-spacing:-.03em;line-height:1.04;text-transform:uppercase;
  max-width:16ch;
}
.aussage .dazu{
  margin-top:1.5rem;font-size:1rem;font-weight:400;text-transform:none;
  letter-spacing:normal;line-height:1.6;color:#CBDAD1;max-width:44ch;
}

/* ─── Zeitleiste: drei Generationen ───────────────────────── */
/* Die Linie liegt ÜBER den Jahreszahlen, nicht mitten hindurch.
   Aufbau von oben nach unten: Linie mit Punkt · Jahr · Überschrift · Text. */
.zeitleiste{position:relative;display:grid;gap:2.4rem}
@media(min-width:52rem){
  .zeitleiste{grid-template-columns:repeat(3,minmax(0,1fr));gap:2.5rem}
}
.zeitleiste::before{
  content:"";position:absolute;left:0;right:0;top:8px;height:2px;
  background:var(--linie-2);
}
.strich-fuellung{
  position:absolute;left:0;top:8px;height:2px;width:0;
  background:var(--messing);
}
.generation{position:relative}
/* Punkt sitzt mittig auf der Linie: 18 px Außenmaß, Mitte bei 9 px,
   Linienmitte bei 9 px → top 0. */
.generation::before{
  content:"";position:absolute;left:0;top:0;
  width:14px;height:14px;border-radius:50%;
  background:var(--papier);border:2px solid var(--linie-2);z-index:2;
  transition:background .4s ease,border-color .4s ease;
}
.getoent .generation::before{background:var(--getoent)}
.jahr{
  display:block;margin-top:2.1rem;
  font-size:clamp(2.2rem,6vw,3.2rem);font-weight:800;
  /* Messing, aber eine Spur tiefer: gemessen 4,45 — deutlich über
     der Schwelle 3,0 für große Schrift. */
  color:#8F6A22;letter-spacing:-.035em;line-height:1.05;
  /* Platz für zwei Zeilen: „2. Generation" bricht um, und ohne das
     stehen die drei Überschriften auf verschiedener Höhe. */
  min-height:2.1em;
}
.generation.erreicht::before{border-color:var(--messing);background:var(--messing)}
.generation h3{margin-top:.9rem;font-size:1.2rem;line-height:1.24}
.generation p{margin-top:.5rem;color:var(--grau);font-size:.98rem}

@media(max-width:51.99rem){
  .zeitleiste::before,.strich-fuellung{
    left:8px;right:auto;top:0;bottom:0;width:2px;height:auto;
  }
  .strich-fuellung{height:0;width:2px}
  .generation{padding-left:2.9rem}
  .generation::before{left:0;top:.5rem}
  .jahr{margin-top:0}
}

/* ─── Leistungen: Gruppen mit Zeilen ──────────────────────── */
.gruppe{margin-bottom:3rem}
.gruppe:last-child{margin-bottom:0}
.gruppe h2{
  font-size:.76rem;font-weight:800;letter-spacing:.17em;text-transform:uppercase;
  color:#fff;background:var(--gruen);
  padding:.55rem .9rem;border-radius:2px;
  margin-bottom:.3rem;display:inline-block;
}
.gewerke li{border-bottom:1px solid var(--linie)}
.gewerke li:first-child{border-top:1px solid var(--linie)}
.gewerke .zeile{display:flex;gap:1.1rem;align-items:baseline;padding-block:1.25rem}
.gewerke .nr{
  font-size:.74rem;font-weight:800;letter-spacing:.1em;color:var(--messing-text);
  flex:none;padding-top:.3rem;min-width:1.9rem;
}
.gewerke h3{font-size:1.2rem;margin-bottom:.4rem;line-height:1.2}
.gewerke p{color:var(--grau);max-width:52ch;font-size:.99rem}

/* Freistehender Textverweis als Tippziel. Verweise mitten im Satz
   bleiben klein, sonst reißt die Zeile auseinander. */
.tat{display:inline-flex;align-items:center;min-height:44px;font-weight:700}

/* ─── Stimme ──────────────────────────────────────────────── */
.stimme{position:relative;padding-left:1.6rem;max-width:44rem}
.stimme::before{content:"";position:absolute;left:0;top:.3rem;bottom:.3rem;width:4px;background:var(--messing)}
.stimme blockquote{
  margin:0;font-size:clamp(1.2rem,3.8vw,1.7rem);line-height:1.38;
  font-weight:600;letter-spacing:-.014em;
}
.stimme figcaption{margin-top:1rem;font-size:.86rem;color:var(--grau);display:flex;flex-wrap:wrap;gap:.4rem .9rem;align-items:center}
.sterne{display:inline-flex;gap:.1rem;color:var(--messing-text)}
.sterne svg{width:14px;height:14px}
.nachsatz{margin-top:1.7rem;color:var(--grau);font-size:.95rem;max-width:46ch;padding-left:1.6rem}

/* ─── Bausteine ───────────────────────────────────────────── */
.zwei{display:grid;gap:2rem;grid-template-columns:minmax(0,1fr)}
@media(min-width:46rem){.zwei{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:3rem;align-items:start}}
.fliess{color:var(--grau)}
.fliess p+p{margin-top:1rem}
.satz{font-size:clamp(1.25rem,4vw,1.85rem);font-weight:800;letter-spacing:-.022em;line-height:1.28;max-width:22ch}

.bildplatz{
  border:1px dashed var(--linie-2);background:var(--papier);
  min-height:13rem;display:flex;align-items:center;justify-content:center;
  padding:1.4rem;text-align:center;
}
.getoent .bildplatz{background:var(--getoent)}
.bildplatz span{font-size:.82rem;color:var(--grau);max-width:22ch;line-height:1.5}

.ruf{
  display:inline-flex;align-items:center;gap:.6rem;min-height:44px;
  background:var(--gruen);color:#fff;padding:.8rem 1.5rem;border-radius:2px;
  font-size:1.02rem;font-weight:700;text-decoration:none;
  transition:background .2s ease;
}
.ruf:hover{background:var(--gruen-tief);color:#fff}
.ruf svg{width:17px;height:17px;flex:none}
.ruf.hell{background:#fff;color:var(--gruen)}
.ruf.hell:hover{background:var(--gruen-hell);color:var(--gruen-tief)}

.daten{border-top:1px solid var(--linie-2);max-width:34rem}
.daten>div{padding-block:.95rem;border-bottom:1px solid var(--linie);display:flex;flex-wrap:wrap;gap:.25rem 1.2rem}
.daten dt{font-size:.7rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--gruen);flex:0 0 6.5rem;padding-top:.3rem}
.daten dd{margin:0;flex:1 1 11rem;min-width:0;overflow-wrap:break-word}
.daten a{display:inline-flex;align-items:center;min-height:44px}

.partner{display:flex;flex-wrap:wrap;gap:.6rem}
.partner li{
  border:1px solid var(--linie-2);border-radius:2px;padding:.5rem .9rem;
  font-size:.86rem;font-weight:700;color:var(--grau);letter-spacing:.03em;
}

/* ─── Fuß ─────────────────────────────────────────────────── */
footer{background:var(--tinte);color:#B9C2BC;padding-block:3rem;font-size:.92rem}
footer a{color:#D8C79B}
footer a:hover{color:#fff}
footer h2{color:#fff;font-size:1.05rem;margin-bottom:.8rem;letter-spacing:-.01em}
footer .partner li{color:#C6CFC9;border-color:#3B443E}
.fussraster{display:grid;gap:2.2rem;grid-template-columns:minmax(0,1fr)}
@media(min-width:46rem){.fussraster{grid-template-columns:repeat(3,minmax(0,1fr));gap:2.5rem}}
.fussnav li+li{margin-top:.15rem}
.fussnav a{display:inline-flex;align-items:center;min-height:44px}
footer p a{display:inline-flex;align-items:center;min-height:44px}
.fussschluss{margin-top:2.4rem;padding-top:1.3rem;border-top:1px solid #333C36;font-size:.82rem;color:#8E9791}

/* ─── Rechtsseite ─────────────────────────────────────────── */
.recht h2{font-size:1.55rem;margin-top:2.8rem;margin-bottom:1rem}
.recht h2:first-of-type{margin-top:0}
.recht h3{font-size:1rem;margin-top:1.6rem;margin-bottom:.3rem}
.recht p{margin-bottom:.5rem;max-width:56ch;color:var(--grau)}
.recht strong{color:var(--tinte)}
.recht p a{display:inline-flex;align-items:center;min-height:44px}
.platzhalter{
  background:#FBF0DC;border-left:3px solid var(--messing);
  padding:.55rem .85rem;color:#66490F;display:block;max-width:56ch;
}

/* ─── Auftauchen ──────────────────────────────────────────── */
.js .auf{opacity:0;transform:translateY(14px)}
.js .auf.sichtbar{opacity:1;transform:none;transition:opacity .7s cubic-bezier(.2,.7,.3,1),transform .7s cubic-bezier(.2,.7,.3,1)}

@media(prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .js .auf{opacity:1;transform:none}
  .strich-fuellung{width:100%!important}
}

@media print{
  .entwurf,.hauptnav,.bildplatz,.jahrgross{display:none!important}
  body{background:#fff;color:#000;font-size:11pt}
  section{padding-block:1rem;break-inside:avoid}
  .getoent,.aussage,.held,.seitenkopf{background:#fff;color:#000}
  .held h1,.aussage p{color:#000}
  .aussage .frage,.aussage .dazu,.held .vorspann{color:#333}
  .ziegel::before{display:none}
  .gruppe h2{background:#fff;color:#000;border:1px solid #000}
  footer{background:#fff;color:#000}
  footer h2,footer a{color:#000}
  a{color:#000;text-decoration:none}
  .zeitleiste::before,.strich-fuellung{display:none}
}
