:root{--bg:#0f1419;--bg-panel:#1a2028;--bg-elev:#232b36;--border:#313947;--text:#e7ecf3;--text-dim:#98a2b3;--accent:#6fb3ff;--pipeline:#3a8c3a;--inference:#b58a00;--forcing:#3863a0;--validation:#a44444;--ui:#cd7f32;--datastore:#444;--external:#999}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}header.top{display:flex;align-items:center;gap:1rem;padding:.75rem 1.25rem;border-bottom:1px solid var(--border);background:var(--bg-panel)}header.top h1{font-size:1rem;margin:0}header.top nav{display:flex;gap:1rem;margin-left:auto}header.top nav a{color:var(--text-dim)}header.top nav a.active{color:var(--text)}main{padding:1.25rem;max-width:1400px;margin:0 auto}table.modules{width:100%;border-collapse:collapse;font-size:13px}table.modules td,table.modules th{text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--border);vertical-align:top}table.modules th{color:var(--text-dim);font-weight:600}table.modules tr:hover td{background:var(--bg-elev)}.tag{display:inline-block;padding:.1rem .5rem;border-radius:.25rem;font-size:11px;font-weight:600;color:#fff}.tag.Pipeline{background:var(--pipeline)}.tag.Inference{background:var(--inference)}.tag.Forcing{background:var(--forcing)}.tag.Validation{background:var(--validation)}.tag.UI{background:var(--ui)}.tag.Datastore{background:var(--datastore)}.tag.External{background:var(--external)}.tag.Model{background:#6cb86c;color:#1a3a1a}.diagram-frame{background:#fff;border-radius:.5rem}.diagram-frame,textarea.dsl{width:100%;min-height:70vh;border:1px solid var(--border)}textarea.dsl{background:#0b0f14;color:var(--text);border-radius:.5rem;padding:.75rem;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.5;resize:vertical}button{background:var(--accent);color:#0b0f14;border:none;border-radius:.25rem;padding:.5rem 1rem;font-weight:600;cursor:pointer}button:disabled{opacity:.5;cursor:progress}button.secondary{background:transparent;color:var(--text);border:1px solid var(--border)}button.secondary:hover{background:var(--bg-elev)}button.small{padding:.2rem .6rem;font-size:12px;font-weight:500}details.pending-panel>summary{font-weight:600;color:var(--accent);list-style:none;position:relative;padding-left:1.1rem}details.pending-panel>summary::-webkit-details-marker{display:none}details.pending-panel>summary:before{content:"▸";position:absolute;left:0;transition:transform .1s ease}details.pending-panel[open]>summary:before{transform:rotate(90deg)}select{background:var(--bg-elev);color:var(--text);border:1px solid var(--border);padding:.3rem .5rem}.status-pill,select{border-radius:.25rem}.status-pill{display:inline-block;padding:.1rem .5rem;font-size:11px;border:1px solid var(--border);color:var(--text-dim)}.status-pill.ok{color:#6cb86c;border-color:#2d5a2d}.status-pill.err{color:#ff7a7a;border-color:#6b2a2a}.flex-row{display:flex;gap:.75rem;align-items:center}.spacer{flex:1 1}.muted{color:var(--text-dim)}.callout{padding:.75rem 1rem;border-radius:.5rem;background:var(--bg-panel);border:1px solid var(--border);margin-bottom:1rem}.metric-toggle{background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:0;margin-right:.25rem;font-size:11px;width:14px;text-align:center;font-weight:700}.metric-toggle:hover{color:var(--text)}.metric-toggle.has-metrics{color:var(--accent)}.metric-count-pill{display:inline-block;padding:.05rem .4rem;border-radius:.75rem;font-size:11px;background:var(--bg-elev);color:var(--text-dim);margin-left:.25rem}.metric-count-pill.dirty{background:rgba(111,179,255,.2);color:var(--accent)}.metrics-panel{background:hsla(0,0%,100%,.02);padding:.75rem 1rem;border-left:3px solid var(--accent)}.metrics-panel table.metric-rows{width:100%;border-collapse:collapse;font-size:12.5px}.metrics-panel table.metric-rows td,.metrics-panel table.metric-rows th{text-align:left;padding:.35rem .5rem;border-bottom:1px solid var(--border);vertical-align:top}.metrics-panel table.metric-rows th{color:var(--text-dim);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em}.metrics-panel table.metric-rows tr:last-child td{border-bottom:none}.metric-status{display:inline-block;padding:.05rem .4rem;border-radius:.25rem;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.metric-status.draft{background:#444;color:#ccc}.metric-status.defined{background:#2d4a6b;color:#d6e6ff}.metric-status.implemented{background:#b58a00;color:#fff}.metric-status.passing{background:#2d6b2d;color:#d6ffd6}.metric-status.failing{background:#6b2d2d;color:#ffd6d6}.metric-cat{display:inline-block;padding:.05rem .4rem;border-radius:.25rem;font-size:10px;font-weight:600;background:var(--bg-elev);color:var(--text-dim)}.metric-cat.smoke{color:#aaa}.metric-cat.accuracy{color:#d6ffd6;background:#2d4a2d}.metric-cat.performance{color:#ffe0b0;background:#6b4a1a}.metric-cat.integration{color:#d6e6ff;background:#2d4a6b}