
:root{--bg:#0d1117;--panel:#161b22;--panel2:#0f1724;--text:#e6edf3;--muted:#8b949e;--accent:#58a6ff;--ok:#3fb950;--warn:#d29922;--bad:#f85149;--line:#30363d;}
*{box-sizing:border-box} body{margin:0;background:var(--bg);color:var(--text);font-family:Segoe UI,Roboto,Arial,sans-serif;line-height:1.55} a{color:var(--accent);text-decoration:none} a:hover{text-decoration:underline}
header{padding:28px 34px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,#111827,#0d1117)} main{padding:28px 34px;max-width:1320px;margin:auto}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px;box-shadow:0 8px 24px rgba(0,0,0,.18)}
h1,h2,h3{line-height:1.2} h1{margin:0 0 8px;font-size:34px} h2{margin-top:34px;border-bottom:1px solid var(--line);padding-bottom:8px}.muted{color:var(--muted)}.tag{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:2px 9px;margin:2px 4px 2px 0;background:#0b1220;color:#c9d1d9;font-size:12px}.ok{color:var(--ok)}.warn{color:var(--warn)}.bad{color:var(--bad)}
table{border-collapse:collapse;width:100%;background:var(--panel);border-radius:12px;overflow:hidden;border:1px solid var(--line)}th,td{padding:9px 11px;border-bottom:1px solid var(--line);vertical-align:top}th{text-align:left;background:#101826;color:#c9d1d9}tr:last-child td{border-bottom:0}code,pre{font-family:Consolas,Monaco,monospace}pre{background:#05080d;border:1px solid var(--line);padding:14px;border-radius:10px;overflow:auto}.small{font-size:13px}.nav{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.nav a{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 12px}.flow{font-family:Consolas,monospace;background:#05080d;border:1px solid var(--line);border-radius:12px;padding:16px;white-space:pre-wrap}.pill-ok{background:#052e16;color:#a7f3d0}.pill-warn{background:#3a2500;color:#fde68a}.pill-bad{background:#3b0a0a;color:#fecaca}

blockquote{border-left:4px solid var(--accent);padding-left:14px;color:var(--muted)}

/* P73B — Schémas contractuels UML/Mermaid */
.diagram-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin:18px 0}.diagram-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;box-shadow:0 8px 24px rgba(0,0,0,.16)}.diagram-card h3{margin-top:0}.diagram-note{border-left:4px solid var(--accent);background:#07111f;border-radius:10px;padding:12px 14px;margin:14px 0}.mermaid{background:#05080d;border:1px solid var(--line);border-radius:12px;padding:16px;overflow:auto;white-space:pre;color:#d6e2f0}.contract-ok{color:var(--ok);font-weight:700}.contract-bad{color:var(--bad);font-weight:700}.contract-warn{color:var(--warn);font-weight:700}.uml-caption{font-size:13px;color:var(--muted);margin-top:6px}.layer-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:14px 0}.layer-box{background:#0b1220;border:1px solid var(--line);border-radius:10px;padding:10px}.layer-box b{color:#c9d1d9}.decision{border:1px solid var(--line);background:#101826;border-radius:10px;padding:10px;margin:8px 0}


/* P73C — Schémas HTML rendus offline sans dépendance Mermaid */
.rendered-diagram{background:#05080d;border:1px solid var(--line);border-radius:12px;padding:12px;margin:12px 0;overflow:auto}.svg-diagram{display:block;width:100%;height:auto;min-width:760px}.svg-diagram text{font-family:Segoe UI,Roboto,Arial,sans-serif;fill:#e6edf3;font-size:14px}.svg-diagram .small{font-size:12px;fill:#8b949e}.svg-diagram .title{font-size:15px;font-weight:700;fill:#f0f6fc}.svg-diagram .box{fill:#0b1220;stroke:#30363d;stroke-width:1.5}.svg-diagram .box-ok{fill:#071b12;stroke:#3fb950;stroke-width:1.7}.svg-diagram .box-warn{fill:#2d2108;stroke:#d29922;stroke-width:1.7}.svg-diagram .box-bad{fill:#2b1012;stroke:#f85149;stroke-width:1.7}.svg-diagram .box-accent{fill:#07111f;stroke:#58a6ff;stroke-width:1.7}.svg-diagram .arrow{stroke:#58a6ff;stroke-width:2.2;fill:none}.svg-diagram .arrow-ok{stroke:#3fb950;stroke-width:2.2;fill:none}.svg-diagram .arrow-bad{stroke:#f85149;stroke-width:2.2;fill:none;stroke-dasharray:7 5}.svg-diagram .label-ok{fill:#a7f3d0}.svg-diagram .label-warn{fill:#fde68a}.svg-diagram .label-bad{fill:#fecaca}.svg-diagram .caption{font-size:12px;fill:#8b949e}.svg-diagram .lane{fill:#101826;stroke:#30363d;stroke-width:1}.diagram-source{margin-top:8px}.diagram-source summary{cursor:pointer;color:var(--muted);font-size:13px}.diagram-source pre{margin-top:8px}
