/*
 * module-oz.css – Ergänzungen zu oz.css (Design-Vorlage) und module.css (erzeugte CMS-Bausteine).
 * Hier steht alles, was die Vorlage nicht kannte: Variablen der CMS-Module, Hilfsklassen statt
 * Inline-Styles (der HTML-Filter entfernt style-Attribute) und Anpassungen der CMS-Seiten an die Optik.
 */

/* Variablen, die die CMS-Module erwarten (Farben kommen aus Website → Design, includes/theme.php) */
:root {
  --line: #dfe3e9;
  --white: #fff;
  --max: 1240px;
  --shadow: 0 12px 32px rgba(53, 56, 62, .10);
  --color-surface: var(--soft);
}

body { font-family: var(--font-body, Arial, Helvetica, sans-serif); }
h1, h2, h3, h4 { font-family: var(--font-heading, Arial, Helvetica, sans-serif); }
img { max-width: 100%; }
main:focus { outline: none; }
main a:not(.button):not(.btn) { text-underline-offset: 4px; }

/* Farben der Vorlage folgen Website → Design */
.button:hover { background: var(--yellow-dark, #bc000c); border-color: var(--yellow-dark, #bc000c); }
.button.outline:hover { border-color: #c4c9d0; }
.nav-links a[aria-current="page"]:not(.button) { color: var(--brand-blue); text-decoration: underline; text-decoration-color: var(--orange); text-underline-offset: 7px; }

/* Staffelung beim Einblenden (statt style="--reveal-delay:…") */
.oz-delay-1 { --reveal-delay: 160ms; }
.oz-delay-2 { --reveal-delay: 320ms; }

/* Raster der Vorlage: Abstand zwischen umbrechenden Zeilen (mehr als drei Karten) */
.row { row-gap: 24px; }
.oz-link { font-size: 13px; font-weight: 700; text-underline-offset: 5px; color: var(--brand-blue); }
.oz-schmal { padding: 55px 0; }
.oz-mt { margin-top: 36px; }
.oz-zentriert { text-align: center; }

/* Seitenkopf ohne Bild (Übersichten, Rechtstexte, CMS-Seiten) */
.page-hero .legal-title h1 { margin-bottom: 0; }
.page-hero .legal-title .lead-copy { max-width: 650px; margin: 25px 0 0; font-size: 16px; }
.page-hero .legal-title .button { margin-top: 28px; }
.page-hero .hero-layout .button { margin-top: 4px; }

/* Fuß: Spaltentitel, Anschrift mit Telefon und E-Mail */
.footer-nav strong { font-size: 12px; color: var(--ink); margin-bottom: 3px; }
.address a { color: inherit; text-decoration: none; }
.address a:hover { color: var(--brand-blue); text-decoration: underline; }
.footer-utility .legal { flex-wrap: wrap; }
.footer-utility .legal button { background: none; border: 0; padding: 0; color: inherit; font: inherit; cursor: pointer; }
.quick-contact__button--whatsapp, .quick-contact__button--email { background: #fff; border: 1px solid #d3d9e2; }
.quick-contact__button--whatsapp:hover, .quick-contact__button--email:hover { background: #f3f5f8; border-color: var(--orange); }

/* Kundenstimmen */
.review-summary { margin: 18px 0 0; font-size: 14px; color: #646b75; }
.review-head a { color: inherit; text-decoration: none; }
.reviews .section-head a { color: var(--brand-blue); font-weight: 700; }

/* Inhalte aus dem Editor (CMS-Seiten, Startseiten-Abschnitte, Leistungen) */
.section > .container > h2 + p, .section > .container > p + p { margin-top: 20px; }
.section > .container > p, .section > .container > ul, .section > .container > ol { max-width: 790px; color: #596470; font-size: 16px; }
.section > .container > h3 { margin-top: 34px; color: var(--brand-blue); }
.detail-copy p + p { margin-top: 16px; }
.detail-copy ul { margin: 18px 0 0; padding-left: 20px; color: #606975; font-size: 16px; }
.oz-bild { display: block; width: 100%; height: auto; border-radius: 7px; box-shadow: 0 16px 35px #35383e12; }
.oz-zweispaltig { display: grid; grid-template-columns: 1fr 1fr; gap: 75px; align-items: start; }
.oz-checkliste { list-style: none; padding: 0; margin: 22px 0 0; border-top: 1px solid #d5dae2; }
.oz-checkliste li { padding: 13px 0 13px 30px; border-bottom: 1px solid #d5dae2; position: relative; font-size: 15px; color: #596470; }
.oz-checkliste li::before { content: '↗'; position: absolute; left: 0; color: var(--orange); font-size: 18px; line-height: 1.3; }

/* Team (Seite „Über uns“) */
.oz-team { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; margin-top: 36px; }
.oz-person { background: #fff; border: 1px solid #dce1e7; border-radius: 6px; overflow: hidden; }
.oz-person img { display: block; width: 100%; height: 300px; object-fit: cover; object-position: center top; }
.oz-person div { padding: 20px 22px 24px; }
.oz-person h3 { font-size: 19px; color: var(--brand-blue); margin-bottom: 8px; }
.oz-person p { font-size: 13px; color: #66707c; margin: 0 0 10px; line-height: 1.6; }
.oz-person a { font-size: 13px; color: var(--brand-blue); overflow-wrap: anywhere; }

/* Partnerlogos */
.oz-partner { display: flex; flex-wrap: wrap; gap: 40px; align-items: center; margin-top: 30px; }
.oz-partner img { display: block; max-height: 70px; width: auto; max-width: 260px; }

/* Referenzen: Kacheln und Branchen der Vorlage */
.reference-tile > img { display: block; width: 100%; height: 270px; object-fit: cover; }
.reference-tile a { color: inherit; text-decoration: none; }
.reference-sector ul { margin-bottom: 0; }

/* Kontaktseite und Formulare der CMS-Module */
.oz-form-bereich { max-width: 1040px; }
main input[type="text"], main input[type="email"], main input[type="tel"], main input[type="number"], main input[type="date"],
main input[type="url"], main select, main textarea { border-radius: 3px; }
main .btn-primary, main .btn.btn-primary { background: var(--orange); border-color: var(--orange); border-radius: 2px; font-weight: 700; }
main .btn-primary:hover { background: var(--yellow-dark, #bc000c); border-color: var(--yellow-dark, #bc000c); }
main .btn-outline, main .btn-light { border-radius: 2px; }

/* 404-Seite */
.error-404 { padding: 90px 0 110px; background-color: #f5f6f7; }
.error-404__code { font-size: clamp(90px, 16vw, 190px); font-weight: 800; line-height: 1; letter-spacing: -6px; color: #e3e6ea; margin: 0 0 10px; }
.error-404 h1 { font-size: clamp(34px, 4.6vw, 58px); letter-spacing: -2px; }
.error-404 p:not(.eyebrow):not(.error-404__code) { max-width: 560px; color: #646b75; margin-bottom: 30px; }

@media (max-width: 991px) {
  .oz-team { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .oz-zweispaltig { gap: 40px; }
}
@media (max-width: 767px) {
  .row { row-gap: 18px; }
  .oz-zweispaltig { grid-template-columns: 1fr; gap: 30px; }
  .oz-schmal { padding: 40px 0; }
}
@media (max-width: 575px) {
  .oz-team { grid-template-columns: 1fr; }
  .oz-person img { height: 340px; }
}
@media print {
  .nav-shell { position: static; }
}
