:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#0f172a;background:#f3f6fb;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,textarea{font:inherit}button{min-height:36px;padding:0 12px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#334155;cursor:pointer}button:hover{background:#f8fafc;border-color:#94a3b8}button:disabled{cursor:not-allowed;opacity:.5}.app-shell{padding:24px}.viewer-card{overflow:hidden;border:1px solid #dbe3ef;border-radius:18px;background:#fff;box-shadow:0 1px 2px #0f172a0a,0 16px 44px #0f172a1a}.viewer-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;padding:22px 24px;border-bottom:1px solid #e2e8f0}.viewer-header h1{margin:4px 0 0;font-size:24px;line-height:1.25}.viewer-header p{margin:8px 0 0;color:#64748b}.eyebrow{color:#2563eb;font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.viewer-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.viewer-grid{display:grid;grid-template-columns:1fr;min-height:720px}.viewer-grid--split{grid-template-columns:minmax(360px,38%) minmax(0,1fr)}.source-panel{display:flex;min-width:0;flex-direction:column;border-right:1px solid #e2e8f0;background:#0f172a}.panel-heading{padding:14px 16px;border-bottom:1px solid rgb(148 163 184 / 20%);color:#e2e8f0}.panel-heading strong,.panel-heading span{display:block}.panel-heading span{margin-top:3px;color:#94a3b8;font-size:12px}.source-panel textarea{min-height:0;flex:1;resize:none;border:0;outline:0;padding:18px;background:#0f172a;color:#dbeafe;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.55}.diagram-panel{min-width:0;background:#fff}.diagram-toolbar{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid #e2e8f0;background:#f8fafc}.diagram-toolbar span{min-width:54px;text-align:center;color:#475569;font-size:13px;font-weight:700}.diagram-viewport{position:relative;min-height:660px;overflow:auto;padding:36px;background:linear-gradient(#edf2f7 1px,transparent 1px),linear-gradient(90deg,#edf2f7 1px,transparent 1px),#fbfdff;background-size:24px 24px}.diagram-viewport:fullscreen{padding:48px;background-color:#fff}.diagram-canvas{width:max-content;min-width:100%;transition:transform .14s ease}.diagram-canvas svg{display:block;max-width:none;height:auto}.diagram-canvas .node rect,.diagram-canvas .node polygon,.diagram-canvas .node path{filter:drop-shadow(0 3px 6px rgb(15 23 42 / 9%))}.diagram-canvas .node rect{rx:10px;ry:10px}.diagram-canvas .nodeLabel{line-height:1.35}.diagram-canvas .edgeLabel{padding:3px 7px;border:1px solid #e2e8f0;border-radius:999px;background:#fff;box-shadow:0 1px 3px #0f172a12;color:#475569;font-size:12px}.diagram-canvas .flowchart-link{stroke-width:1.7px}.diagram-canvas marker path{fill:#64748b!important;stroke:#64748b!important}.diagram-canvas .cluster rect{rx:14px;ry:14px;stroke-dasharray:0}.diagram-canvas .cluster-label{color:#334155;font-weight:800}.diagram-error{max-width:760px;margin:40px auto;padding:20px;border:1px solid #fecaca;border-radius:12px;background:#fef2f2;color:#7f1d1d}.diagram-error pre{overflow:auto;white-space:pre-wrap}.viewer-legend{display:flex;flex-wrap:wrap;gap:16px;padding:14px 24px;border-top:1px solid #e2e8f0;background:#fff}.legend-item{display:inline-flex;align-items:center;gap:7px;color:#475569;font-size:13px}.legend-dot{width:11px;height:11px;border-radius:3px}.legend-dot[data-tone=web]{background:#3b82f6}.legend-dot[data-tone=worker]{background:#22c55e}.legend-dot[data-tone=backend]{background:#8b5cf6}.legend-dot[data-tone=database]{background:#f59e0b}.legend-dot[data-tone=event]{background:#06b6d4}.legend-dot[data-tone=processing]{background:#ea580c}.legend-dot[data-tone=failure]{background:#dc2626}@media(max-width:1050px){.viewer-header{flex-direction:column}.viewer-actions{justify-content:flex-start}.viewer-grid--split{grid-template-columns:1fr}.source-panel{min-height:440px;border-right:0;border-bottom:1px solid #e2e8f0}}@media(max-width:640px){.app-shell{padding:0}.viewer-card{border-radius:0;border-left:0;border-right:0}.viewer-header{padding:18px}.diagram-viewport{padding:20px}}
