/* Regeln, Impressum, Datenschutz, 404 */
.legal-layout { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 40px; align-items: start; }
.toc { display: grid; gap: 2px; font-size: 14px; }
.toc-title { font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); margin: 0 0 8px 12px; }
.toc a { display: block; padding: 7px 12px; border-radius: 8px; color: var(--muted); text-decoration: none; border-left: 2px solid transparent; }
.toc a:hover { color: var(--text); background: var(--surface-2); }
.prose { max-width: 760px; }
.prose h2 { font: 650 21px/1.3 var(--font-body); margin: 0 0 12px; display: flex; gap: 12px; align-items: baseline; }
.prose h2 .no { font: 400 14px var(--font-display); color: var(--accent-text); flex: none; }
.prose section { padding: 26px 0; border-top: 1px solid var(--border); scroll-margin-top: calc(var(--header-h) + 20px); }
.prose section:first-of-type { border-top: 0; padding-top: 0; }
.prose p, .prose li { color: var(--text-2); }
.prose ul { padding-left: 20px; margin: 0 0 1em; display: grid; gap: 8px; }
.prose li::marker { color: var(--accent); }
.prose strong { color: var(--text); }
.lang-switch-note { margin-bottom: 24px; }
.lang-link, .lang-switch-note button { background: none; border: 0; padding: 0; color: var(--accent-text); font: inherit; font-weight: 650; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.draft-banner { margin-bottom: 24px; }
.address { font-style: normal; line-height: 1.7; }
@media (max-width: 900px) { .legal-layout { grid-template-columns: 1fr; } .toc-wrap { display: none; } }

.notfound { position: relative; overflow: hidden; text-align: center; padding: clamp(60px, 12vw, 140px) 0; }
.notfound .bg-grid { z-index: -1; }
.nf-code { font: 400 clamp(96px, 22vw, 200px)/.9 var(--font-display); letter-spacing: -.04em; margin: 0;
  background: linear-gradient(180deg, var(--text) 30%, transparent 110%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.nf-road { width: min(420px, 80%); height: 6px; margin: 18px auto 30px; border-radius: 3px;
  background: repeating-linear-gradient(90deg, var(--accent) 0 30px, transparent 30px 52px); animation: nf-drive 1.2s linear infinite; }
@keyframes nf-drive { to { background-position: -52px 0; } }
.notfound .lead { max-width: 520px; margin: 0 auto 28px; }
.notfound .row { justify-content: center; }
.toc a { display: flex; gap: 10px; }
.toc-no { font: 400 12px/1.9 var(--font-display); color: var(--accent-text); flex: none; }
