/* Webseite Kropf Systems. Werte aus dem Designpaket v1.1.0 (03_Tokens), nicht nachgebaut. */

@font-face {
  font-family: Inter;
  src: url("/schrift/InterVariable.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

:root {
  --carbon: #101214;
  --graphite-900: #1A2227;
  --graphite-800: #292F33;
  --graphite-700: #444B50;
  --muted: #667078;
  --silver: #A7AFB5;
  --mist: #DDE1E4;
  --canvas: #F5F5F2;
  --white: #FFFFFF;
  --ease: cubic-bezier(.2, 0, .2, 1);
  --section: 64px;
  --hero: 96px;
  color-scheme: light;
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--canvas);
  color: var(--graphite-900);
  font-family: Inter, Arial, sans-serif;
  font-optical-sizing: auto;
  font-size: 18px;
  line-height: 28px;
  text-rendering: optimizeLegibility;
}

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

a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 4px; }
a:hover { text-decoration-thickness: 2px; }

:focus-visible { outline: 2px solid var(--graphite-900); outline-offset: 2px; box-shadow: 0 0 0 2px var(--white); }
.dunkel :focus-visible { outline-color: var(--white); box-shadow: 0 0 0 2px var(--graphite-900); }

h1, h2, h3 { font-weight: 400; margin: 0; }
h1 { font-size: 48px; line-height: 54px; letter-spacing: -.025em; }
h2 { font-size: 32px; line-height: 40px; letter-spacing: -.02em; }
h3 { font-size: 24px; line-height: 32px; letter-spacing: -.015em; }
p { margin: 16px 0 0; max-width: 68ch; }

.rahmen { width: min(1280px, calc(100% - 64px)); margin-inline: auto; }

.sprung { position: absolute; left: 20px; top: -100px; z-index: 10; background: var(--white); color: var(--graphite-900); padding: 12px 16px; }
.sprung:focus { top: 12px; }

/* ------------------------------------------------ dunkler Kopfbereich */

.dunkel { background: var(--carbon); color: var(--canvas); color-scheme: dark; }

/* Der Kopf bleibt beim Scrollen oben stehen und wird nach den ersten Pixeln schmaler (skript.js). */
.kopf { position: sticky; top: 0; z-index: 20; border-bottom: 1px solid var(--graphite-800); }
.kopf-innen { display: flex; align-items: center; justify-content: space-between; gap: 32px; min-height: 112px; flex-wrap: wrap; transition: min-height 200ms var(--ease); }
.kopf.kompakt .kopf-innen { min-height: 72px; }
.marke { display: block; text-decoration: none; }
.marke .logo { width: 280px; transition: width 200ms var(--ease); }
.kopf.kompakt .marke .logo { width: 210px; }
html { scroll-padding-top: 88px; }
@media (prefers-reduced-motion: reduce) {
  .kopf-innen, .marke .logo { transition: none; }
}
.marke .signet { width: 70px; display: none; }
/* Schmale Köpfe: Signet mit dem Namen als Text, kein Nachbau der Wortmarke (Designpaket, Dossier 02). */
.marke-name { display: none; color: var(--silver); font-size: 16px; line-height: 24px; white-space: nowrap; transition: color 160ms var(--ease); }
.marke:hover .marke-name { color: var(--canvas); }

.hauptnav { display: flex; align-items: center; gap: 32px; }
.hauptnav ul { display: flex; flex-wrap: wrap; gap: 8px 28px; margin: 0; padding: 0; list-style: none; }
.hauptnav a { color: var(--silver); text-decoration: none; font-size: 16px; line-height: 24px; transition: color 160ms var(--ease); }
.hauptnav a:hover, .hauptnav a[aria-current="page"] { color: var(--canvas); }
.hauptnav a[aria-current="page"] { text-decoration: underline; text-decoration-thickness: 1px; }
.sprachwechsel { border: 1px solid var(--graphite-700); border-radius: 2px; padding: 6px 10px; font-size: 14px !important; letter-spacing: .06em; }
.sprachwechsel:hover { border-color: var(--silver); }

.menue-knopf { display: none; font: inherit; font-size: 16px; min-height: 44px; padding: 10px 16px; background: transparent; color: var(--canvas); border: 1px solid var(--graphite-700); border-radius: 2px; cursor: pointer; }

.hero { padding: 128px 0 144px; }
.hero h1 { font-size: 64px; line-height: 68px; letter-spacing: -.035em; max-width: 14ch; }
.hero h1 .z { display: block; }
.hero h1 .z2 { color: var(--silver); }
.lead { font-size: 20px; line-height: 30px; color: var(--silver); max-width: 56ch; margin-top: 24px; }
.hero .lead { margin-top: 32px; }
.hero .z4 { margin-top: 40px; }

.seitenkopf { padding: 96px 0 88px; }
.seitenkopf h1 { max-width: 20ch; }

/* ------------------------------------------------ Knöpfe und Verweise */

.knopf { display: inline-flex; align-items: center; min-height: 44px; padding: 10px 20px; border-radius: 2px; border: 1px solid var(--graphite-900); background: var(--graphite-900); color: var(--white); font-size: 16px; text-decoration: none; transition: background-color 160ms var(--ease), color 160ms var(--ease); }
.knopf:hover { background: var(--graphite-800); }
.knopf.hell { background: var(--canvas); color: var(--graphite-900); border-color: var(--canvas); }
.knopf.hell:hover { background: var(--mist); border-color: var(--mist); }

.verweis { display: inline-flex; align-items: center; gap: 8px; margin-top: 20px; font-size: 16px; line-height: 24px; }
.icon { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: square; transition: transform 160ms var(--ease); flex: none; }
.verweis:hover .icon { transform: translateX(2px); }
.verweise { display: flex; flex-wrap: wrap; gap: 0 32px; }

.mail { font-size: 24px; line-height: 32px; }
.mail.gross { font-size: 40px; line-height: 48px; letter-spacing: -.02em; word-break: break-word; }

/* ------------------------------------------------ Abschnitte */

main { display: block; }
.abschnitt { padding: var(--section) 0; }
.abschnitt + .abschnitt { border-top: 1px solid var(--mist); }
.abschnitt > h2 { margin-bottom: 32px; }

.gross { font-size: 32px; line-height: 40px; letter-spacing: -.02em; max-width: 30ch; margin: 0; }

.zwei { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; }
.zwei h2 { margin-bottom: 0; }

.tafel { background: var(--white); border: 1px solid var(--mist); padding: 32px; }
.tafel p { color: var(--graphite-700); }

.stufen { list-style: none; margin: 0; padding: 0; }
.stufen li { display: grid; grid-template-columns: 96px 1fr; gap: 24px; padding: 32px 0; border-top: 1px solid var(--mist); }
.stufen li:last-child { border-bottom: 1px solid var(--mist); }
.nr { font-size: 14px; line-height: 32px; letter-spacing: .06em; color: var(--muted); font-variant-numeric: tabular-nums; }
.stufen p { color: var(--graphite-700); }
.grundsaetze h2 { font-size: 28px; line-height: 36px; }
.umfang { font-size: 16px; color: var(--graphite-900) !important; }
.umfang span, dt, figcaption, .klein { font-size: 14px; line-height: 20px; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.umfang span { margin-right: 12px; }
figcaption, .klein { text-transform: none; letter-spacing: 0; }

.felderliste { list-style: none; margin: 0; padding: 0; counter-reset: feld; }
.felderliste li { font-size: 20px; line-height: 30px; padding: 20px 0 20px 48px; border-top: 1px solid var(--mist); position: relative; max-width: 60ch; }
.felderliste li::before { counter-increment: feld; content: counter(feld, decimal-leading-zero); position: absolute; left: 0; top: 23px; font-size: 14px; letter-spacing: .06em; color: var(--muted); font-variant-numeric: tabular-nums; }

.abschluss .gross { max-width: 34ch; }
.abschluss .knopf { margin-top: 32px; }

.referenz { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 48px; align-items: start; }
.ansicht { margin: 0; }
.ansicht img { border: 1px solid var(--mist); background: var(--white); }
.ansicht figcaption { margin-top: 12px; }
.referenz-text h2, .referenz-text h3 { margin-bottom: 24px; }

.felder { margin: 0; }
.felder dt { margin-top: 20px; }
.felder dt:first-child { margin-top: 0; }
.felder dd { margin: 6px 0 0; max-width: 60ch; }

.projekt { max-width: 860px; }
.projekt h2 { margin-bottom: 32px; }

.spalte { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 48px; }
.spalte h2 { font-size: 24px; line-height: 32px; }
.spalte p { margin-top: 0; font-size: 20px; line-height: 30px; }

.themen { display: grid; grid-template-columns: 1fr 1fr; gap: 0 64px; }
.thema { border-top: 1px solid var(--mist); padding: 28px 0 36px; }
.thema h3 { margin-bottom: 4px; }
.thema p { color: var(--graphite-700); }

.erzaehlung { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 48px; }
.erzaehlung > div > p:first-child { margin-top: 0; }
.erzaehlung p { font-size: 20px; line-height: 32px; max-width: 62ch; }
.erzaehlung p + p { margin-top: 20px; }

/* ------------------------------------------------ Bänder der Startseite */

.band.hell { background: var(--canvas); }
.band.weiss { background: var(--white); }
.band.dunkel { background: var(--carbon); color: var(--canvas); color-scheme: dark; }
.band .abschnitt { padding: 88px 0; }
.band.einordnung .abschnitt { padding: 96px 0; }
.band h2 { margin-bottom: 40px; }
.band.dunkel p, .band.dunkel .kachel p { color: var(--silver); }
.band.dunkel .kachel { border-top-color: var(--graphite-700); }
.band.dunkel :focus-visible { outline-color: var(--white); box-shadow: 0 0 0 2px var(--graphite-900); }
.lead-hell { font-size: 20px; line-height: 30px; max-width: 60ch; margin: -16px 0 40px; }

.raster { display: grid; gap: 0 48px; }
.raster.drei { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.raster.zwei-spalten { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px 64px; }
.raster.zwei-spalten h2 { margin-bottom: 0; }
.kachel { border-top: 1px solid var(--mist); padding: 24px 0 36px; }
.kachel h3 { font-size: 22px; line-height: 30px; }
.kachel p { color: var(--graphite-700); margin-top: 10px; }

.schritte { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 24px; }
.schritte li { border-top: 2px solid var(--graphite-900); padding-top: 20px; }
.schritte h3 { font-size: 20px; line-height: 28px; margin-top: 8px; }
.schritte p { font-size: 16px; line-height: 24px; color: var(--graphite-700); margin-top: 8px; }

.karte { background: var(--canvas); border: 1px solid var(--mist); padding: 32px; }
.karte h3 { font-size: 22px; line-height: 30px; }
.karte p { color: var(--graphite-700); margin-top: 10px; }

.kontakt-band .gross-titel { font-size: 48px; line-height: 54px; letter-spacing: -.025em; margin-bottom: 24px; }
.kontakt-band .lead-hell { margin: 0 0 32px; }
.band.dunkel .mail { color: var(--canvas); }

.recht { max-width: 800px; margin-inline: max(32px, calc((100% - 1280px) / 2)); }
.recht h2 { font-size: 24px; line-height: 32px; margin-top: 40px; }
.recht ul { padding-left: 20px; margin: 12px 0 0; }
.recht .angaben { list-style: none; padding: 0; }
.recht .angaben li { padding: 4px 0; }

/* ------------------------------------------------ Fuss */

.fuss { border-top: 1px solid var(--mist); font-size: 14px; line-height: 20px; color: var(--graphite-700); }
.fuss-innen { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px 32px; padding: 32px 0 40px; }
.fuss nav { display: flex; flex-wrap: wrap; gap: 8px 24px; }

/* ------------------------------------------------ Bewegung (Designpaket Kapitel Bewegung) */

@keyframes auf { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
.hero .z { animation: auf 500ms var(--ease) both; }
.hero .z2 { animation-delay: 150ms; }
.hero .z3 { animation-delay: 300ms; }
.hero .z4 { animation-delay: 450ms; }

.js .zeige { transition: opacity 400ms var(--ease), transform 400ms var(--ease); }
.js .zeige.vorher { opacity: 0; transform: translateY(12px); }

/* ------------------------------------------------ schmale Fenster */

@media (max-width: 1099px) {
  .marke .logo { display: none; }
  .marke .signet { display: block; }
  .marke { display: flex; align-items: center; gap: 10px; }
  .marke-name { display: block; }
  .kopf-innen { min-height: 88px; padding-block: 12px; }
  .kopf.kompakt .kopf-innen { min-height: 64px; padding-block: 8px; }
  .hauptnav { width: 100%; flex-wrap: wrap; gap: 16px; padding-bottom: 12px; }
  .raster.drei { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .schritte { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 32px; }
  .js .menue-knopf { display: inline-flex; }
  .js .hauptnav { display: none; }
  .js .hauptnav.offen { display: flex; flex-direction: column; align-items: flex-start; padding: 8px 0 24px; }
  .js .hauptnav.offen ul { flex-direction: column; gap: 4px; }
  .js .hauptnav.offen ul a { display: block; font-size: 20px; line-height: 44px; }
}

@media (max-width: 359px) {
  .marke { gap: 8px; }
  .marke-name { font-size: 15px; }
}

@media (max-width: 767px) {
  body { font-size: 16px; line-height: 26px; }
  .rahmen { width: calc(100% - 40px); }
  .kopf-innen { column-gap: 12px; }
  .recht { margin-inline: 20px; }
  h1 { font-size: 36px; line-height: 42px; }
  h2 { font-size: 26px; line-height: 34px; }
  h3 { font-size: 22px; line-height: 30px; }
  .hero { padding: 72px 0 88px; }
  .hero h1 { font-size: 40px; line-height: 44px; }
  .lead { font-size: 18px; line-height: 28px; }
  .seitenkopf { padding: 64px 0 56px; }
  .abschnitt { padding: 40px 0; }
  .gross { font-size: 24px; line-height: 32px; }
  .zwei, .referenz, .spalte, .themen, .erzaehlung, .raster.drei, .raster.zwei-spalten { grid-template-columns: 1fr; gap: 32px; }
  .raster.drei { gap: 0; }
  .schritte { grid-template-columns: 1fr; gap: 20px; }
  .band .abschnitt, .band.einordnung .abschnitt { padding: 56px 0; }
  .band h2 { margin-bottom: 24px; }
  .lead-hell { font-size: 18px; line-height: 28px; margin: -8px 0 28px; }
  .karte { padding: 24px; }
  .kontakt-band .gross-titel { font-size: 32px; line-height: 38px; }
  .themen { gap: 0; }
  .erzaehlung { gap: 16px; }
  .erzaehlung p { font-size: 18px; line-height: 28px; }
  .spalte { gap: 12px; }
  .spalte p { font-size: 18px; line-height: 28px; }
  .stufen li { grid-template-columns: 48px 1fr; gap: 12px; }
  .felderliste li { font-size: 18px; line-height: 28px; padding-left: 40px; }
  .tafel { padding: 20px; }
  .mail.gross { font-size: 28px; line-height: 36px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .js .zeige.vorher { opacity: 1; transform: none; }
}

.hinweis { color: var(--graphite-700); max-width: 56ch; margin-top: 24px; }

/* ------------------------------------------------ Texte aus den Textdateien (ab 2026-10-02) */

.knoepfe { display: flex; flex-wrap: wrap; gap: 12px 16px; align-items: center; }
.knopf.rand { background: transparent; color: var(--canvas); border-color: var(--graphite-700); }
.knopf.rand:hover { border-color: var(--silver); background: transparent; }
.kontakt-band .knoepfe { margin-top: 8px; }
.kontakt-band .knoepfe .mail:not(.gross) { font-size: 18px; color: var(--silver); }

.schritte.n5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.schritte li p { font-size: 16px; line-height: 24px; }

.band.hell + .band.hell .abschnitt { border-top: 1px solid var(--mist); }
.erzaehlung .fliess > p:first-child, .erzaehlung .fliess > figure:first-child { margin-top: 0; }
.fliess p { font-size: 18px; line-height: 30px; max-width: 64ch; }
.fliess h3 { font-size: 22px; line-height: 30px; margin-top: 40px; }
.fliess h3:first-child { margin-top: 0; }
.fliess ul { margin: 16px 0 0; padding-left: 22px; max-width: 64ch; }
.fliess li { margin-top: 6px; }
.fliess .ansicht { margin: 0 0 32px; }
.fliess .verweise { margin-top: 24px; }
.kachel ul, .karte ul { padding-left: 20px; }
.karte .verweise, .kachel .verweise { margin-top: 12px; }
.band .verweise .verweis { margin-top: 0; }

@media (max-width: 1099px) {
  .schritte.n5 { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 32px; }
}
@media (max-width: 767px) {
  .schritte.n5 { grid-template-columns: 1fr; }
  .fliess p { font-size: 17px; line-height: 28px; }
}
