:root{--color-bg: #fafaf9;--color-text: #1c1917;--color-muted: #78716c;--color-muted-soft: rgba(120, 113, 108, .6);--color-accent: #2563eb;--color-border: #e7e5e4;--color-edge: #c4c3c2;--color-arrow: #a2a0a0;--color-skeleton: #eeece9;--color-skel-hi: #f6f4f1;--color-code-bg: #f4f4f3;--font-body: system-ui, -apple-system, sans-serif;--font-mono: ui-monospace, "Cascadia Code", monospace;--content-width: 760px;--spacing: 1.5rem}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:1rem;line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3{line-height:1.25;margin:0 0 .75em;font-weight:650}h1{font-size:1.75rem}h2{font-size:1.25rem}h3{font-size:1.05rem}p{margin:0 0 1em}a{color:var(--color-accent)}code,pre{font-family:var(--font-mono);font-size:.95em}pre{background:var(--color-code-bg);padding:1rem;border-radius:4px;overflow-x:auto}.skel{display:block;border-radius:4px;background:linear-gradient(90deg,var(--color-skeleton) 0%,var(--color-skel-hi) 50%,var(--color-skeleton) 100%);background-size:200% 100%;animation:skel-shimmer 1.4s ease-in-out infinite}@keyframes skel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.node{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;grid-template-areas:"title badge" "desc  desc";gap:4px 12px;padding:12px 14px;background:var(--color-bg);border:1.5px solid var(--color-muted-soft);border-radius:6px;font-family:var(--font-body);transition:border-color .12s ease}.node.failing{border-color:#dc2626}.node-title{grid-area:title;font-size:16px;font-weight:650;line-height:1.25;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-desc{grid-area:desc;font-size:15px;line-height:1.35;color:var(--color-muted);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.node-badge{grid-area:badge;align-self:start;display:flex;gap:4px}.node-badge .pill{display:inline-flex;align-items:center;height:22px;padding:0 10px;border-radius:11px;font-size:13px;font-weight:650;border:1px solid;font-family:var(--font-body)}.node-badge .pill.fail{background:#fee2e2;color:#b91c1c;border-color:#b91c1c59}.node-badge .pill.pass{background:#dcfce7;color:#166534;border-color:#16653459}.node-badge .pill.skeleton{width:46px;background:var(--color-skeleton);border-color:transparent;animation:skel-shimmer 1.4s ease-in-out infinite}.line-label{font-size:13px;fill:var(--color-muted);font-family:var(--font-body)}.node.node-boundary{opacity:.5;border-style:dashed;background:transparent}.node.node--has-info{grid-template-columns:1fr auto auto;grid-template-areas:"title badge info" "desc  desc  desc";gap:4px 6px}.node-info-btn{grid-area:info;align-self:start;width:22px;height:22px;border:none;background:transparent;color:var(--color-muted);font-size:22px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;margin-right:-8px;font-family:var(--font-body);transition:color .1s}.node-info-btn:hover{color:var(--color-text)}.graph-definition-overlay{position:fixed;inset:0;background:#00000073;z-index:100;display:flex;align-items:center;justify-content:center}.graph-definition-panel{width:520px;max-width:calc(100vw - 2rem);max-height:70vh;background:var(--color-bg);border:1.5px solid var(--color-border);border-radius:10px;box-shadow:0 12px 48px #0000002e;display:flex;flex-direction:column;overflow:hidden}.graph-definition-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--color-border);flex-shrink:0}.graph-definition-type{font-size:13px;font-weight:650;color:var(--color-muted);font-family:var(--font-mono)}.graph-definition-close{border:none;background:none;color:var(--color-muted);cursor:pointer;padding:0;font-size:14px;line-height:1;font-family:var(--font-body)}.graph-definition-close:hover{color:var(--color-text)}.graph-definition-body{padding:12px 14px;font-size:14px;line-height:1.55;color:var(--color-text);overflow-y:auto;white-space:pre-wrap}
