chore: vollständiger Workspace-Snapshot 03.07.2026

- publish_gatekeeper.py (neues Gatekeeper-System)
- 4 Premium-Artikel: Veggie Match, Berlin 1960, Wild Tiled West, Scream Park
- Alle kumulierten Artikel, Scripts, Medien und Caches
This commit is contained in:
Hermes Agent
2026-07-03 11:35:39 +02:00
parent 0bc68ecd25
commit b3b6b702d1
354 changed files with 180125 additions and 9391 deletions
+1 -70
View File
@@ -4,76 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>BSN Coding Standards — Verbindliches Regelwerk v1.0 (Review-fixed)</title>
<style>
:root {
--bsn-blue: #20228a;
--bsn-blue-light: #2d30b5;
--bg: #ffffff; --bg-card: #f8f9ff; --bg-code: #1a1a2e;
--text: #1a1a2e; --text-secondary: #555; --border: #e0e0e8;
--success: #28a745; --warning: #ffc107; --danger: #dc3545;
--radius: 8px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;line-height:1.6;color:var(--text);background:#f5f5fa}
.container{max-width:1100px;margin:0 auto;padding:0 20px}
.header{background:linear-gradient(135deg,var(--bsn-blue),#181a6e);color:#fff;padding:60px 20px 50px;text-align:center;position:relative;overflow:hidden}
.header::after{content:'';position:absolute;bottom:0;left:0;right:0;height:4px;background:linear-gradient(90deg,#ff6b6b,#ffd93d,#6bcb77,#4d96ff)}
.header h1{font-size:clamp(1.8rem,4vw,2.8rem);font-weight:800;letter-spacing:-0.5px;margin-bottom:10px}
.header .subtitle{font-size:1.1rem;opacity:.85;max-width:650px;margin:0 auto;line-height:1.5}
.header .meta{margin-top:20px;font-size:.85rem;opacity:.7;display:flex;gap:20px;justify-content:center;flex-wrap:wrap}
.status-badge{display:inline-block;background:rgba(255,255,255,.15);padding:4px 14px;border-radius:20px;font-size:.8rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase;margin-bottom:15px}
.review-badge{display:inline-block;background:#d4edda;color:#155724;padding:4px 14px;border-radius:20px;font-size:.8rem;font-weight:600;margin-bottom:15px;margin-left:8px}
.toc{background:white;border:2px solid var(--border);border-radius:var(--radius);padding:30px;margin:-30px auto 40px;position:relative;box-shadow:0 4px 20px rgba(0,0,0,.06)}
.toc h2{color:var(--bsn-blue);font-size:1.3rem;margin-bottom:15px;padding-bottom:10px;border-bottom:2px solid var(--bsn-blue)}
.toc ol{columns:2;column-gap:40px;list-style-position:inside}
@media(max-width:600px){.toc ol{columns:1}}
.toc li{margin-bottom:6px}
.toc a{color:var(--bsn-blue);text-decoration:none;font-weight:500}
.toc a:hover{color:var(--bsn-blue-light);text-decoration:underline}
section{background:white;border:1px solid var(--border);border-radius:var(--radius);padding:35px 30px;margin-bottom:25px;box-shadow:0 2px 8px rgba(0,0,0,.03)}
h2{font-size:1.5rem;color:var(--bsn-blue);margin-bottom:20px;padding-bottom:8px;border-bottom:2px solid var(--bsn-blue);display:flex;align-items:center;gap:10px}
h2 .num{background:var(--bsn-blue);color:white;width:32px;height:32px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;font-size:.9rem;font-weight:700;flex-shrink:0}
h3{font-size:1.15rem;color:#181a6e;margin:25px 0 12px}
h4{font-size:1rem;color:#333;margin:16px 0 8px}
p{margin-bottom:12px}p:last-child{margin-bottom:0}
code{background:#eef0ff;color:#181a6e;padding:2px 6px;border-radius:3px;font-family:'JetBrains Mono','Fira Code','Cascadia Code','Consolas',monospace;font-size:.9em}
pre{background:var(--bg-code);color:#e0e0e0;padding:20px;border-radius:var(--radius);overflow-x:auto;margin:15px 0;font-size:.88rem;line-height:1.5;position:relative}
pre code{background:none;color:inherit;padding:0;font-size:inherit}
.kw{color:#c792ea}.str{color:#c3e88d}.cm{color:#676e95;font-style:italic}.fn{color:#82aaff}.num{color:#f78c6c}.op{color:#89ddff}
.badge-correct{display:inline-block;background:#d4edda;color:#155724;padding:2px 8px;border-radius:3px;font-size:.75rem;font-weight:600;margin-right:5px}
.badge-wrong{display:inline-block;background:#f8d7da;color:#721c24;padding:2px 8px;border-radius:3px;font-size:.75rem;font-weight:600;margin-right:5px}
.badge-manual{display:inline-block;background:#fff3cd;color:#856404;padding:2px 8px;border-radius:3px;font-size:.75rem;font-weight:600;margin-right:5px}
.badge-auto{display:inline-block;background:#d4edda;color:#155724;padding:2px 8px;border-radius:3px;font-size:.75rem;font-weight:600;margin-right:5px}
.table-wrap{overflow-x:auto;margin:15px 0}
table{width:100%;border-collapse:collapse;font-size:.92rem}
th{background:var(--bsn-blue);color:white;padding:10px 14px;text-align:left;font-weight:600}
td{padding:10px 14px;border-bottom:1px solid var(--border)}
tr:nth-child(even) td{background:var(--bg-card)}
.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin:15px 0}
.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px}
.card h4{color:var(--bsn-blue);margin-top:0;margin-bottom:8px}
.principle-box{background:linear-gradient(135deg,#f0f0ff,#e8e8ff);border-left:4px solid var(--bsn-blue);padding:20px 24px;border-radius:0 var(--radius) var(--radius) 0;margin:20px 0}
.principle-box h4{color:var(--bsn-blue);margin-top:0}
.warning-box{background:#fff8e1;border-left:4px solid var(--warning);padding:16px 20px;border-radius:0 var(--radius) var(--radius) 0;margin:15px 0}
.danger-box{background:#fff0f0;border-left:4px solid var(--danger);padding:16px 20px;border-radius:0 var(--radius) var(--radius) 0;margin:15px 0}
.info-box{background:#e8f4fd;border-left:4px solid var(--bsn-blue-light);padding:16px 20px;border-radius:0 var(--radius) var(--radius) 0;margin:15px 0}
.fixed-box{background:#f0fff4;border-left:4px solid var(--success);padding:16px 20px;border-radius:0 var(--radius) var(--radius) 0;margin:15px 0}
.checklist{list-style:none;padding:0}
.checklist li{padding:6px 0 6px 28px;position:relative}
.checklist li::before{content:'☐';position:absolute;left:0;color:var(--bsn-blue);font-size:1.1rem}
.footer{text-align:center;padding:40px 20px;color:var(--text-secondary);font-size:.9rem}
.footer a{color:var(--bsn-blue)}
.tool-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:15px;margin:20px 0}
.tool-card{border:2px solid var(--border);border-radius:var(--radius);padding:20px;text-align:center;transition:border-color .2s,transform .2s}
.tool-card:hover{border-color:var(--bsn-blue);transform:translateY(-2px)}
.tool-card .tool-icon{font-size:2rem;margin-bottom:10px}
.tool-card h4{color:var(--bsn-blue);margin:5px 0}
.tool-card p{font-size:.85rem;color:var(--text-secondary)}
.changelog{font-size:.85rem;color:var(--text-secondary);margin-top:5px}
.changelog li{margin-bottom:3px}
.changelog .fix{color:#155724;font-weight:600}
@media print{body{background:white}.header{background:var(--bsn-blue)!important;-webkit-print-color-adjust:exact}section{break-inside:avoid;box-shadow:none}pre{background:#f5f5f5;color:#333}}
</style>
</head>
<body>