/* Haupt-Stylesheet — lädt asynchron nach dem Critical CSS.
   Tokens und Reset stehen im Critical CSS und werden hier nicht wiederholt. */

/* ---------- Layout-Hüllen ---------- */
.km-main-wrap{max-width:var(--maxw); margin-inline:auto; padding-inline:var(--sp4)}
.km-section{padding-block:var(--sp7)}
.km-section:first-child{padding-top:var(--sp6)}
.km-section-head{margin-bottom:var(--sp5)}
.km-section-head h2{font-size:clamp(1.5rem,1.3rem + 1vw,1.9rem); font-weight:600; letter-spacing:-.02em; margin-bottom:8px}
.km-section-head p{color:var(--fg-muted); margin:0; max-width:60ch}
.km-section-title{font-size:1.4rem; font-weight:600; margin-bottom:var(--sp4)}
.km-section-more{margin-top:var(--sp4)}
.km-section-more a{
  font-family:var(--display); font-weight:600; font-size:15px;
  text-decoration:none; display:inline-flex; align-items:center; gap:7px;
}
.km-section-more a:hover{text-decoration:underline}
.km-section-more .km-icon{width:16px; height:16px}

/* ---------- Karten ---------- */
.km-grid{display:grid; gap:var(--sp4)}
.km-grid-3{grid-template-columns:repeat(auto-fit,minmax(270px,1fr))}
.km-grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.km-card{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
  padding:var(--sp4); text-decoration:none; color:inherit; display:block;
  transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease;
}
.km-card:hover{border-color:var(--border-strong); box-shadow:var(--shadow); transform:translateY(-2px)}
.km-card h2,.km-card h3{font-size:17px; font-weight:600; margin-bottom:6px; color:var(--fg)}
.km-card p{font-size:15px; color:var(--fg-muted); margin:0}
.km-card-icon{
  width:38px; height:38px; border-radius:9px; background:var(--accent-bg);
  display:grid; place-items:center; margin-bottom:var(--sp3); color:var(--accent);
}
.km-card-icon .km-icon{width:19px; height:19px}
.km-card-meta{
  font-family:var(--display); font-size:12px; font-weight:500; color:var(--fg-dim);
  margin-top:var(--sp3); display:block;
}

/* ---------- Chips (Kreditsummen) ---------- */
.km-chips{display:flex; flex-wrap:wrap; gap:9px}
.km-chips-grid{gap:10px}
.km-chip{
  font-family:var(--display); font-size:14.5px; font-weight:500;
  padding:9px 15px; border-radius:99px; background:var(--surface);
  border:1px solid var(--border); color:var(--fg); text-decoration:none;
  min-height:42px; display:inline-flex; align-items:center; gap:6px;
  transition:border-color .15s ease,background .15s ease;
}
.km-chip:hover{border-color:var(--cta); background:var(--accent-bg)}
.km-chip-more{font-weight:600; color:var(--cta)}
.km-chip .km-icon{width:15px; height:15px}

/* ---------- „Auf einen Blick“ ---------- */
.km-keyfacts{
  background:var(--accent-bg); border:1px solid var(--accent); border-radius:var(--radius);
  padding:var(--sp4); margin-bottom:var(--sp5);
}
:root[data-theme="dark"] .km-keyfacts{border-color:var(--border)}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .km-keyfacts{border-color:var(--border)}
}
.km-keyfacts h2{
  font-size:12px; font-weight:600; letter-spacing:.09em; text-transform:uppercase;
  color:var(--accent); margin-bottom:var(--sp3);
}
.km-keyfacts ul{margin:0; padding:0; list-style:none; display:grid; gap:11px}
.km-keyfacts li{display:flex; gap:11px; font-size:16px; line-height:1.6}
.km-keyfacts .km-icon{width:18px; height:18px; color:var(--accent); stroke-width:2.4; flex-shrink:0; margin-top:4px}
.km-keyfacts-note{font-size:13px; color:var(--fg-dim); margin:var(--sp3) 0 0}

/* ---------- Beitragsinhalt ---------- */
.km-prose{font-size:17px}
.km-prose > h2{
  font-size:clamp(1.35rem,1.2rem + .7vw,1.6rem); font-weight:600;
  letter-spacing:-.015em; margin:var(--sp6) 0 var(--sp3); scroll-margin-top:80px;
}
.km-prose > h3{font-size:1.15rem; font-weight:600; margin:var(--sp5) 0 var(--sp2); scroll-margin-top:80px}
.km-prose p{margin:0 0 var(--sp3); max-width:68ch}
.km-prose ul,.km-prose ol{margin:0 0 var(--sp3); padding-left:22px; max-width:68ch}
.km-prose li{margin-bottom:9px}
.km-prose a{color:var(--link); font-weight:600}
.km-prose a:hover{text-decoration-thickness:2px}
.km-prose img{border-radius:var(--radius); margin-block:var(--sp4)}
.km-prose figure{margin:var(--sp4) 0}
.km-prose figcaption{font-size:14px; color:var(--fg-dim); margin-top:8px}
.km-prose blockquote{
  border-left:3px solid var(--accent); background:var(--accent-bg);
  padding:var(--sp3) var(--sp4); border-radius:0 var(--radius-sm) var(--radius-sm) 0;
  margin:var(--sp4) 0;
}
.km-prose blockquote p:last-child{margin-bottom:0}
.km-prose h2.center,.km-prose h3.center{text-align:left}

/* Tabellen: horizontal scrollbar statt Seitenüberlauf */
.km-prose table{
  width:100%; border-collapse:collapse; font-size:15px;
  margin:var(--sp4) 0; display:block; overflow-x:auto; white-space:nowrap;
}
@media(min-width:700px){
  .km-prose table{display:table; white-space:normal}
}
.km-prose th{
  background:var(--surface-2); font-family:var(--display); font-size:12.5px; font-weight:600;
  letter-spacing:.05em; text-transform:uppercase; color:var(--fg-muted);
  text-align:left; padding:12px var(--sp3); border-bottom:1px solid var(--border);
}
.km-prose td{padding:12px var(--sp3); border-bottom:1px solid var(--border); font-variant-numeric:tabular-nums}

/* FAQ: bestehende <details>-Blöcke aus dem Content */
.km-prose details{
  border:1px solid var(--border); border-radius:var(--radius);
  margin-bottom:10px; background:var(--surface);
}
.km-prose summary{
  padding:15px var(--sp4); font-family:var(--display); font-weight:600; font-size:16px;
  cursor:pointer; list-style:none; display:flex; justify-content:space-between;
  align-items:center; gap:var(--sp3); min-height:52px;
}
.km-prose summary::-webkit-details-marker{display:none}
.km-prose summary::after{
  content:""; width:9px; height:9px; flex-shrink:0;
  border-right:2px solid var(--fg-muted); border-bottom:2px solid var(--fg-muted);
  transform:rotate(45deg) translateY(-2px); transition:transform .2s ease;
}
.km-prose details[open] summary::after{transform:rotate(-135deg) translateY(-2px)}
.km-prose details > div{padding:0 var(--sp4) var(--sp4); color:var(--fg-muted); font-size:16px}
.km-prose details a{color:var(--link)}

/* ---------- Autorenbox ---------- */
.km-entry-foot{margin-top:var(--sp6)}
.km-authorbox{
  display:flex; gap:var(--sp4); background:var(--surface); border:1px solid var(--border);
  border-radius:var(--radius); padding:var(--sp4);
}
.km-avatar-lg{width:52px; height:52px; font-size:17px}
.km-authorbox h2{font-size:16px; font-weight:600; margin-bottom:3px}
.km-authorbox p{margin:0; font-size:14.5px; color:var(--fg-muted)}

/* ---------- Verwandte Beiträge ---------- */
.km-related{margin-top:var(--sp7)}

/* ---------- Sidebar ---------- */
.km-side{position:sticky; top:var(--sp3); display:grid; gap:var(--sp4)}
@media(max-width:1000px){.km-side{position:static}}
.km-side-box{background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:var(--sp4)}
.km-side-title{
  font-size:12px; font-weight:600; letter-spacing:.09em; text-transform:uppercase;
  color:var(--fg-dim); margin-bottom:var(--sp3);
}
.km-toc{list-style:none; margin:0; padding:0; display:grid; gap:2px}
.km-toc a{
  display:block; padding:7px 11px; border-radius:var(--radius-sm); font-size:14.5px;
  color:var(--fg-muted); text-decoration:none; border-left:2px solid transparent;
  transition:background .15s ease,color .15s ease;
}
.km-toc a:hover{background:var(--surface-2); color:var(--fg)}
.km-toc a.is-here{color:var(--fg); font-weight:600; border-left-color:var(--cta); background:var(--surface-2)}

/* ---------- Archive ---------- */
.km-archive-head{padding-block:var(--sp6) var(--sp5)}
.km-archive-head h1{font-size:clamp(1.8rem,1.5rem + 1.6vw,2.4rem); font-weight:700; letter-spacing:-.02em; margin-bottom:var(--sp3)}
.km-archive-desc{color:var(--fg-muted); max-width:68ch}
.km-pagination{margin-block:var(--sp6); display:flex; justify-content:center}
.km-pagination .page-numbers{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:44px; min-height:44px; padding:0 12px; margin:0 3px;
  border:1px solid var(--border); border-radius:var(--radius-sm);
  text-decoration:none; color:var(--fg-muted); font-family:var(--display); font-size:15px;
}
.km-pagination .page-numbers:hover{background:var(--surface-2); color:var(--fg)}
.km-pagination .page-numbers.current{background:var(--cta); border-color:var(--cta); color:var(--cta-fg); font-weight:600}
.km-empty{color:var(--fg-muted); padding-block:var(--sp6)}

/* ---------- Suche ---------- */
.km-searchform{display:flex; gap:8px; max-width:460px; margin-top:var(--sp3)}
.km-searchform input[type=search]{
  flex:1; padding:12px var(--sp3); font-size:16px; font-family:var(--body);
  border:1px solid var(--border-strong); border-radius:var(--radius);
  background:var(--surface); color:var(--fg); min-height:46px;
}
.km-searchform button{
  padding:0 18px; background:var(--cta); color:var(--cta-fg); border:none;
  border-radius:var(--radius); cursor:pointer; min-height:46px; min-width:46px;
  display:grid; place-items:center;
}
.km-searchform button:hover{background:var(--cta-hi)}

/* ---------- 404 ---------- */
.km-404{padding-block:var(--sp7); text-align:left}
.km-404 h1{font-size:clamp(1.8rem,1.5rem + 1.6vw,2.4rem); margin-bottom:var(--sp3)}
.km-404 p{color:var(--fg-muted); max-width:60ch}
.km-404-links{margin-top:var(--sp5)}

/* ---------- Footer ---------- */
.km-foot{
  background:var(--brand); color:rgba(255,255,255,.7);
  margin-top:var(--sp7); padding-block:var(--sp6) var(--sp4);
}
:root[data-theme="dark"] .km-foot{background:var(--surface); border-top:1px solid var(--border); color:var(--fg-muted)}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .km-foot{background:var(--surface); border-top:1px solid var(--border); color:var(--fg-muted)}
}
.km-foot-grid{
  max-width:var(--maxw); margin-inline:auto; padding-inline:var(--sp4);
  display:grid; grid-template-columns:1.4fr repeat(3,1fr); gap:var(--sp5);
}
@media(max-width:820px){.km-foot-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.km-foot-grid{grid-template-columns:1fr}}
.km-foot-brand .km-logo-text{color:#fff; display:block; margin-bottom:var(--sp2)}
:root[data-theme="dark"] .km-foot-brand .km-logo-text{color:var(--fg)}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .km-foot-brand .km-logo-text{color:var(--fg)}
}
.km-foot-brand p{margin:0; font-size:15px; max-width:40ch}
.km-foot-title{
  font-size:12px; font-weight:600; letter-spacing:.09em; text-transform:uppercase;
  color:#fff; margin-bottom:var(--sp3);
}
:root[data-theme="dark"] .km-foot-title{color:var(--fg)}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .km-foot-title{color:var(--fg)}
}
.km-foot-list{list-style:none; margin:0; padding:0; display:grid; gap:9px}
.km-foot-list a{color:inherit; text-decoration:none; font-size:15px}
.km-foot-list a:hover{text-decoration:underline}
.km-foot-list li{font-size:15px}
.km-foot-bottom{
  max-width:var(--maxw); margin:var(--sp5) auto 0; padding:var(--sp4) var(--sp4) 0;
  border-top:1px solid rgba(255,255,255,.13);
  font-size:14px; display:flex; justify-content:space-between; gap:var(--sp3); flex-wrap:wrap;
}
:root[data-theme="dark"] .km-foot-bottom{border-top-color:var(--border)}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .km-foot-bottom{border-top-color:var(--border)}
}
.km-foot-bottom p{margin:0}
.km-foot-note{max-width:52ch}

/* ---------- Body-Zustand bei offenem Menü ---------- */
body.km-nav-open{overflow:hidden}
@media(min-width:861px){body.km-nav-open{overflow:auto}}

/* ---------- Cookie-Banner (Complianz) ----------
   Lighthouse-Befund: Der Akzeptieren-Button und die Rechtslinks des Plugins
   erreichen das 4,5:1-Verhältnis nicht. Da der Banner auf jeder Seite steht,
   zieht das die Accessibility-Wertung der gesamten Site nach unten.
   Wir überschreiben nur die Farben, nicht das Verhalten des Consent-Tools. */
#cmplz-cookiebanner-container .cmplz-btn.cmplz-accept,
#cmplz-cookiebanner-container .cmplz-btn.cmplz-accept-marketing{
  background:var(--cta) !important; border-color:var(--cta) !important;
  color:var(--cta-fg) !important; font-weight:600 !important;
}
#cmplz-cookiebanner-container .cmplz-btn.cmplz-accept:hover{
  background:var(--cta-hi) !important; border-color:var(--cta-hi) !important;
}
#cmplz-cookiebanner-container .cmplz-btn.cmplz-deny,
#cmplz-cookiebanner-container .cmplz-btn.cmplz-view-preferences{
  color:var(--fg) !important; border-color:var(--border-strong) !important;
  background:transparent !important;
}
#cmplz-cookiebanner-container .cmplz-link,
#cmplz-cookiebanner-container .cmplz-documents a,
#cmplz-cookiebanner-container a.cookie-statement,
#cmplz-cookiebanner-container a.privacy-statement,
#cmplz-cookiebanner-container a.impressum{
  color:var(--link) !important; text-decoration:underline !important;
}
#cmplz-cookiebanner-container .cmplz-title,
#cmplz-cookiebanner-container .cmplz-body{color:var(--fg) !important}
#cmplz-cookiebanner-container{background:var(--surface) !important; border-color:var(--border) !important}

/* ---------- Zinstabelle (Bundesbank-Daten) ---------- */
.km-zinsbox{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
  padding:var(--sp4); margin:var(--sp6) 0 0;
}
.km-zinsbox-title{
  font-size:1.15rem; font-weight:600; margin-bottom:var(--sp3);
}
.km-table-scroll{overflow-x:auto; border:1px solid var(--border); border-radius:var(--radius-sm)}
.km-zinstabelle{width:100%; border-collapse:collapse; font-size:15.5px; min-width:340px}
.km-zinstabelle th[scope="col"]{
  background:var(--surface-2); font-family:var(--display); font-size:12.5px; font-weight:600;
  letter-spacing:.05em; text-transform:uppercase; color:var(--fg-muted);
  text-align:left; padding:11px var(--sp3); border-bottom:1px solid var(--border);
}
.km-zinstabelle th[scope="row"]{
  font-weight:400; text-align:left; padding:11px var(--sp3);
  border-bottom:1px solid var(--border); color:var(--fg);
}
.km-zinstabelle td{
  padding:11px var(--sp3); border-bottom:1px solid var(--border);
  font-variant-numeric:tabular-nums; font-family:var(--display); font-weight:600;
}
.km-zinstabelle td.num,.km-zinstabelle th.num{text-align:right}
.km-zinstabelle tr:last-child th,.km-zinstabelle tr:last-child td{border-bottom:none}
.km-zinstabelle tr.is-highlight th[scope="row"],
.km-zinstabelle tr.is-highlight td{background:var(--accent-bg); color:var(--fg)}
.km-zinstabelle tr.is-highlight td{color:var(--accent)}
.km-zinsbox-quelle{
  font-size:13.5px; color:var(--fg-dim); margin:var(--sp3) 0 0; line-height:1.65;
}
.km-zinsbox-quelle a{color:var(--link)}

.km-chips-count{font-size:14px; color:var(--fg-dim); margin-top:var(--sp3)}

/* ---------- Diagramm (Inline-SVG) ---------- */
.km-diagramm{
  margin:var(--sp6) 0 0; padding:var(--sp4);
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
}
.km-diagramm svg{width:100%; height:auto; display:block}
.km-diag-kapital{fill:var(--accent)}
.km-diag-zins{fill:var(--cta)}
.km-diag-label{
  font-family:var(--display); font-size:13px; font-weight:500; fill:var(--fg-muted);
}
.km-diag-wert{
  font-family:var(--display); font-size:12.5px; font-weight:600; fill:var(--fg);
  font-variant-numeric:tabular-nums;
}
.km-diag-legende{font-family:var(--body); font-size:12.5px; fill:var(--fg-muted)}
.km-diagramm figcaption{
  font-size:13.5px; color:var(--fg-dim); margin-top:var(--sp3); line-height:1.6;
}
@media(max-width:520px){
  .km-diag-wert{font-size:11px}
  .km-diag-label{font-size:11.5px}
}
