/* =========================================================
   base.css — trägt keine Gestaltung, nur Lesbarkeit.
   Alles darüber liegende Theme darf jede Regel überschreiben.
   ========================================================= */

*, *::before, *::after { box-sizing: border-box; }

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

body {
  margin: 0;
  padding: 2rem 1.25rem 6rem;
  background: #ffffff;
  color: #16181a;
  font: 16px/1.65 ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

.cv { max-width: 44rem; margin: 0 auto; }

h1, h2, h3 { margin: 0; line-height: 1.2; font-weight: 600; }
p { margin: 0 0 0.85em; }
a { color: inherit; text-underline-offset: 0.18em; }

ul, ol, dl, dd { margin: 0; padding: 0; }
.nav, .contact, .facts, .job__stack, .skillgroup__items ul, .projects, .timeline
  { list-style: none; }
.job__tasks, .interests__group ul { padding-left: 1.1rem; }

time { white-space: nowrap; }

/* Jahresachse zeigt nur das BI-Theme */
.axis { display: none; }

/* Trennstrich zwischen zwei Zeitangaben – einzige Quelle, damit er sich
   nicht mit einem im Markup stehenden Strich doppelt. */
.job__period time + time::before,
.project__period time + time::before,
.edu__period time + time::before,
.job__period .job__now::before { content: " – "; }

/* ---------- Grundabstände ---------- */
.cv__header { margin-bottom: 2rem; }
.cv__nav    { margin-bottom: 3rem; }
.section    { margin-bottom: 3.5rem; }
.job, .project, .edu { margin-bottom: 2rem; }
.skillgroup { margin-bottom: 1.1rem; }
.skillgroup__name { font-weight: 600; }
.skillgroup__items { margin-left: 1.3rem; }
.section__title { margin-bottom: 1.2rem; }

.contact, .nav, .facts, .job__stack {
  display: flex; flex-wrap: wrap; gap: 0.4rem 1.1rem;
}

.cv__footer { border-top: 1px solid #ddd; padding-top: 1.5rem; }
.footer__meta { display: flex; flex-wrap: wrap; gap: 0.4rem 1.2rem; font-size: 0.85rem; }

/* ---------- Umschalter ---------- */
.switcher {
  display: flex;
  justify-content: flex-end;
  gap: 0.35rem;
  max-width: 44rem;
  margin: 0 auto 2rem;
}
.switcher__btn {
  font: inherit; font-size: 0.75rem;
  padding: 0.35rem 0.7rem;
  border: 1px solid #ccc; background: #fff; color: #444;
  cursor: pointer;
}
.switcher__btn[aria-pressed="true"] { background: #16181a; color: #fff; border-color: #16181a; }
.switcher__btn:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }

/* ---------- Sprungmarke ---------- */
.skiplink {
  position: absolute; left: -9999px;
}
.skiplink:focus {
  left: 1rem; top: 1rem; position: fixed;
  background: #16181a; color: #fff; padding: 0.6rem 1rem; z-index: 60;
}

/* ---------- Qualitätsboden ---------- */
:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* ---------- Druck ---------- */
@media print {
  .switcher, .cv__nav, .skiplink { display: none !important; }
  body { padding: 0; font-size: 10.5pt; }
  .cv { max-width: none; }
  .job, .project, .edu, .section { break-inside: avoid; }
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 0.8em; }
}
