/* Gemeinsame Basis der Kursseiten: Reset, Typografie, Layout, Bausteine (Tokens: tokens.css) */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { margin: 0; background: var(--bg); color: var(--text); font: var(--fs-md)/var(--lh) var(--font); min-height: 100vh; display: flex; flex-direction: column; overflow-wrap: break-word; }
main { flex: 1; }
img, svg { max-width: 100%; }
img { height: auto; }
.container { width: 100%; max-width: 62rem; margin-inline: auto; padding-inline: var(--sp-4); }
@media (min-width: 48rem) { .container { padding-inline: var(--sp-6); } }

/* Typografie */
h1, h2, h3, h4 { margin: 0 0 var(--sp-3); line-height: 1.2; font-weight: 700; font-family: var(--font-head); }
h1 { font-size: var(--fs-xl); }
h2 { font-size: var(--fs-lg); display: flex; align-items: center; gap: var(--sp-2); }
h3 { font-size: var(--fs-md); }
h4 { font-size: var(--fs-sm); }
p { margin: 0 0 var(--sp-3); }
/* Umbrüche: keine einzelnen Wörter in der letzten Zeile, ausgewogene Überschriften, Silbentrennung für lange Wörter */
h1, h2, h3, h4 { text-wrap: balance; }
p, li, .feature p, .how span, .values span { text-wrap: pretty; hyphens: auto; -webkit-hyphens: auto; }
.nobr { white-space: nowrap; }
a { color: var(--accent); text-underline-offset: .2em; }
a:hover { color: var(--accent-hover); }
code { font: .9em var(--mono); background: var(--surface-2); padding: .1em .4em; border-radius: .3em; }
small { font-size: var(--fs-xs); }
.muted { color: var(--muted); }
address { font-style: normal; margin-bottom: var(--sp-4); }
hr { border: 0; border-top: 1px solid var(--line); margin: var(--sp-5) 0; }
ul, ol { margin: 0 0 var(--sp-3); padding-left: 1.25rem; }
li { margin-bottom: var(--sp-1); }

/* Fokus: immer sichtbar */
:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; border-radius: 4px; }
.skip { position: absolute; left: -999px; top: 0; }
.skip:focus { left: var(--sp-4); top: var(--sp-4); z-index: 100; background: var(--accent); color: var(--on-accent); padding: var(--sp-2) var(--sp-4); border-radius: var(--r-sm); }

/* Icons (icons.css) */
.bi { margin-right: .4em; }
.go .bi, .wk-go .bi, .lb-close .bi, .ft .bi, .ico .bi, .quick .bi { margin: 0; }

/* Buttons und Formularfelder (niedrige Spezifität, Komponenten überschreiben) */
:where(button) { font: inherit; font-weight: 600; min-height: var(--tap); padding: .55rem 1.1rem; border-radius: var(--r-pill); border: 2px solid var(--accent); background: var(--accent); color: var(--on-accent); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: .4rem; }
:where(button):hover:not(:disabled) { background: var(--accent-hover); border-color: var(--accent-hover); }
:where(button.outline), :where(button.secondary) { background: transparent; color: var(--accent); }
:where(button.outline):hover:not(:disabled) { background: var(--accent-soft); color: var(--accent); }
:where(button):disabled { opacity: .55; cursor: not-allowed; }
:where(input[type="text"]) { font: inherit; font-family: var(--mono); min-height: var(--tap); padding: .5rem .8rem; color: var(--text); background: var(--surface); border: 2px solid var(--line-strong); border-radius: var(--r-sm); }
:where(input[readonly]) { background: var(--surface-2); }
input[aria-invalid="true"] { border-color: var(--warm); }
input[aria-invalid="false"] { border-color: var(--accent); }

/* Kopfzeile (auf jeder Seite) */
.topbar { padding-block: var(--sp-2); }
.topbar-in { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); min-height: 3.5rem; }
.brand { display: inline-flex; align-items: center; gap: var(--sp-2); min-height: var(--tap); color: var(--text); text-decoration: none; font: 700 1.2rem var(--font-head); }
.brand:hover { color: var(--text); }
.brand b { color: var(--accent); }
.logo { border-radius: 50%; border: 2px solid var(--sun); background: #fefbec; display: block; }
.topnav { display: flex; gap: var(--sp-1); }
.topnav a { display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 var(--sp-3); border-radius: var(--r-pill); color: var(--text); font-weight: 600; font-size: var(--fs-sm); text-decoration: none; }
.topnav a:hover { background: var(--accent-soft); color: var(--accent); }
.topnav a[aria-current="page"] { background: var(--sun); color: var(--on-sun); }

/* Seitenkopf: Marineband mit Titel */
.page-head { background: var(--hero); color: var(--on-hero); border-radius: var(--r-lg); margin-inline: var(--sp-2); padding-block: var(--sp-5) var(--sp-5); position: relative; overflow: hidden; }
.page-head::after { content: ""; position: absolute; right: -3rem; top: -3rem; width: 11rem; height: 11rem; border-radius: 50%; background: var(--sun); opacity: .16; pointer-events: none; }
.page-head > .container { position: relative; z-index: 1; }
.page-head a { color: var(--on-hero); }
.page-head :focus-visible { outline-color: var(--sun); }
.page-head h1 { color: var(--on-hero); }
.page-head .intro, .page-head p { color: var(--on-hero); }
.page-head .muted, .page-head .course, .page-head .back { color: var(--hero-muted); }
.page-head .back:hover { color: var(--on-hero); }
.crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-2) var(--sp-4); margin: 0 0 var(--sp-2); }
.back { display: inline-flex; align-items: center; gap: .45rem; min-height: var(--tap); color: var(--muted); text-decoration: none; font-size: var(--fs-sm); font-weight: 600; }
.back:hover { color: var(--accent); text-decoration: underline; }
mark { background: linear-gradient(transparent 58%, var(--sun) 58% 92%, transparent 92%); color: inherit; padding: 0 .1em; }

/* Links in Buttonform */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .45rem; min-height: var(--tap); padding: 0 var(--sp-5); border-radius: var(--r-pill); font-weight: 700; text-decoration: none; background: var(--accent); color: var(--on-accent); border: 2px solid var(--accent); }
.btn:hover { background: var(--accent-hover); border-color: var(--accent-hover); color: var(--on-accent); }
.btn .bi { margin: 0; }
.btn-sun { background: var(--sun); border-color: var(--sun); color: var(--on-sun); }
.btn-sun:hover { background: var(--on-hero); border-color: var(--on-hero); color: var(--hero); }
.btn-ghost { background: transparent; color: var(--on-hero); border-color: var(--hero-muted); }
.btn-ghost:hover { background: rgba(255, 255, 255, .12); border-color: var(--on-hero); color: var(--on-hero); }

/* Fuß */
.site-footer { margin-top: var(--sp-7); padding-block: var(--sp-5) var(--sp-6); border-top: 1px solid var(--line); color: var(--muted); font-size: var(--fs-sm); }
.site-footer-in { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sp-3) var(--sp-5); }
.site-footer .brand { font-size: 1.05rem; }
.site-footer .logo { width: 32px; height: 32px; }
.site-footer p { margin: 0; }
.site-footer .stripe { display: none; }
.site-footer nav { display: flex; flex-wrap: wrap; gap: 0 var(--sp-3); }
.site-footer a { color: var(--muted); display: inline-flex; align-items: center; min-height: var(--tap); }
.site-footer a:hover { color: var(--accent); }
.site-footer .brand { color: var(--text); }
#updated { width: 100%; text-align: left; }
.site-footer .made { order: 9; width: 100%; text-align: center; margin: 0; padding-top: var(--sp-3); border-top: 1px solid var(--line); font-size: var(--fs-sm); color: var(--muted); }

/* Karten mit Farbkachel (Startseite, Tools, Kurse) */
.feature-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16.5rem), 1fr)); gap: var(--sp-4); }
.feature { display: flex; flex-direction: column; padding: var(--sp-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-1); }
.ft { display: grid; place-items: center; width: 3.25rem; height: 3.25rem; margin-bottom: var(--sp-4); border-radius: var(--r-md); font-size: 1.6rem; }
.ft .bi { margin: 0; }
.ft-blue { background: var(--accent-soft); color: var(--accent); }
.ft-sun { background: var(--sun); color: var(--on-sun); }
.ft-coral { background: var(--warm-soft); color: var(--warm); }
.feature.soon { border-style: dashed; border-color: var(--line-strong); background: transparent; box-shadow: none; }
.tag-soon { display: inline-block; font: 600 .7rem var(--mono); text-transform: uppercase; letter-spacing: .05em; padding: .15em .7em; border: 1px solid var(--line-strong); border-radius: var(--r-pill); color: var(--muted); }
.feature h3 { font-size: var(--fs-lg); margin-bottom: var(--sp-2); }
.feature p { color: var(--muted); }
.feature .more { margin: auto 0 0; padding-top: var(--sp-2); display: flex; flex-wrap: wrap; gap: 0 var(--sp-4); }
.feature .more a { display: inline-flex; align-items: center; min-height: var(--tap); font-weight: 700; }
.feature .more .bi { margin: 0 0 0 .35em; }

/* Karten */
.grid-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr)); gap: var(--sp-4); }
.card { margin: 0; padding: var(--sp-4); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-md); box-shadow: var(--shadow-1); }
.card > header { margin-bottom: var(--sp-2); }
.card h3 { display: flex; align-items: baseline; margin: 0; font-size: var(--fs-md); }
.card h3 .bi { color: var(--accent); }
.card > :last-child { margin-bottom: 0; }

/* Hinweisbox */
.rule { margin: var(--sp-3) 0 0; padding: var(--sp-3) var(--sp-4); border-radius: var(--r-sm); background: var(--warm-soft); border-left: 4px solid var(--warm); font-size: var(--fs-sm); }
.rule .bi { color: var(--warm); }

/* Auf-/Zuklappen (details/summary): Chevron als CSS-Form, kein Icon-Font */
details > summary { cursor: pointer; list-style: none; min-height: var(--tap); display: flex; align-items: center; gap: var(--sp-3); }
details > summary::-webkit-details-marker { display: none; }
details > summary::after { content: ""; flex: none; width: .55rem; height: .55rem; margin-left: auto; border-right: 2px solid var(--muted); border-bottom: 2px solid var(--muted); transform: rotate(45deg); transition: transform .15s; }
details[open] > summary::after { transform: rotate(225deg); }

/* Chips */
.chips { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin-top: var(--sp-3); }
.chip { display: inline-flex; align-items: center; gap: .35rem; min-height: var(--tap); padding: 0 var(--sp-4); border-radius: var(--r-pill); font: inherit; font-size: var(--fs-sm); font-weight: 500; text-decoration: none; background: var(--accent-soft); color: var(--accent); border: 1px solid transparent; cursor: pointer; }
.chip .bi { margin: 0; }
a.chip:hover, button.chip:hover { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); }
.chip.soon { background: transparent; border: 1px dashed var(--line-strong); color: var(--muted); cursor: default; }

/* Tabellen (Excel-Nachbau) */
.xl-wrap { overflow-x: auto; margin-bottom: var(--sp-3); }
.xl { border-collapse: collapse; font-size: var(--fs-sm); }
.xl th, .xl td { padding: .35rem .7rem; white-space: nowrap; border: 1px solid var(--line-strong); text-align: left; }
.xl thead th, .xl tbody th { background: var(--surface-2); color: var(--muted); font-weight: 500; text-align: center; }

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; } }

/* Kopfzeile auf schmalen Geräten kompakter */
@media (max-width: 26rem) {
  .brand { font-size: 1.05rem; gap: .4rem; }
  .topnav a { padding: 0 var(--sp-2); }
}

/* Hinweiszeile und Abschnitte außerhalb der Kursseiten */
/* Tool-Übersicht: Karten mit Cover, kurzer Text, Eckdaten; ganze Karte klickbar */
.tool-section + .tool-section { margin-top: var(--sp-7); }
.tool-section h2 { display: flex; align-items: center; gap: var(--sp-2); }
.tool-section h2 .bi { color: var(--accent); font-size: .85em; }
.tool-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); gap: var(--sp-4); }
.tool-card { position: relative; display: flex; flex-direction: column; overflow: hidden; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--shadow-1); transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease; }
.tool-card:hover { transform: translateY(-3px); border-color: var(--accent); box-shadow: var(--shadow-2); }
.tool-card:focus-within { outline: 3px solid var(--focus); outline-offset: 3px; }
.tool-cover { position: relative; display: grid; place-items: center; height: 8.5rem; font-size: 3rem; border-bottom: 1px solid var(--line); overflow: hidden; }
.tool-cover img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; image-rendering: pixelated; }
.tc-coral { background: radial-gradient(circle at 30% 30%, #5a2b3a, var(--warm-soft)); color: var(--warm); }
.tc-blue { background: radial-gradient(circle at 30% 30%, #2c4590, var(--accent-soft)); color: var(--accent); }
.tc-pixel { background: #0a0f1f; }
.tool-body { display: flex; flex-direction: column; flex: 1; padding: var(--sp-4) var(--sp-5) var(--sp-5); }
.tool-body h3 { font-size: var(--fs-lg); margin: 0 0 var(--sp-2); }
.tool-link { color: var(--text); text-decoration: none; }
.tool-link::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.tool-link:focus-visible { outline: none; }
.tool-body p { color: var(--muted); margin: 0 0 var(--sp-3); hyphens: manual; -webkit-hyphens: manual; }
.tool-meta { display: flex; flex-wrap: wrap; gap: var(--sp-2); list-style: none; padding: 0; margin: 0 0 var(--sp-4); }
.tool-meta li { display: inline-flex; align-items: center; gap: .35em; padding: .2em .65em; font-size: var(--fs-xs); color: var(--muted); background: var(--surface-2); border-radius: var(--r-pill); }
.tool-go { margin-top: auto; display: inline-flex; align-items: center; gap: .4em; min-height: var(--tap); font-weight: 700; color: var(--accent); }
.tool-card:hover .tool-go { color: var(--accent-hover); }
.tool-card:hover .tool-go .bi { transform: translateX(3px); }
.tool-go .bi { transition: transform .15s ease; }
@media (prefers-reduced-motion: reduce) { .tool-card, .tool-go .bi { transition: none; } .tool-card:hover { transform: none; } }

.note-line { display: flex; gap: var(--sp-2); align-items: flex-start; margin: var(--sp-6) 0 0; color: var(--muted); font-size: var(--fs-sm); }
.note-line .bi { margin: .2rem 0 0; }
main > .container > section:first-child, main.container > section:first-child { margin-top: var(--sp-6); }
