@import"https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&family=Fira+Sans:wght@300;400;500;600;700&display=swap";:root{color-scheme:light;--bg: #f8fafc;--bg-soft: #eef2ff;--panel: rgba(255, 255, 255, .92);--panel-strong: #ffffff;--panel-muted: rgba(248, 250, 252, .92);--line: rgba(71, 85, 105, .16);--line-strong: rgba(71, 85, 105, .28);--text: #0f172a;--text-secondary: #334155;--text-soft: #64748b;--text-faint: #94a3b8;--primary: #2563eb;--primary-soft: rgba(37, 99, 235, .1);--primary-strong: #1d4ed8;--accent: #0891b2;--success: #16a34a;--warning: #d97706;--danger: #dc2626;--shadow: 0 18px 48px rgba(15, 23, 42, .07);--shadow-soft: 0 8px 20px rgba(15, 23, 42, .05);--radius-xl: 22px;--radius-lg: 16px;--radius-md: 12px;--radius-sm: 8px}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{font-family:Fira Sans,PingFang SC,Microsoft YaHei,sans-serif;color:var(--text);background:radial-gradient(circle at top left,rgba(37,99,235,.12),transparent 28%),radial-gradient(circle at top right,rgba(15,118,110,.1),transparent 22%),linear-gradient(180deg,#f8fafc,#eef2ff);overflow:hidden}button,input,select,textarea,table{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:2px solid rgba(37,99,235,.3);outline-offset:2px}::selection{background:#2563eb29}.app-shell{display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;min-height:100vh;height:100vh;padding:8px;overflow:hidden}.boot-screen{min-height:100vh;display:grid;place-items:center;padding:24px}.boot-panel,.app-header,.panel-block,.rail-card,.side-card,.table-panel,.graph-stage{position:relative;min-width:0;min-height:0;border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--panel);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.boot-panel{max-width:680px;padding:28px}.boot-panel h1{margin:0 0 10px;font-family:Fira Code,monospace;font-size:clamp(2rem,6vw,3rem);line-height:1}.boot-panel p:last-child{margin:8px 0 0;color:var(--text-soft)}.eyebrow{margin:0;color:var(--text-soft);font-family:Fira Sans,PingFang SC,Microsoft YaHei,sans-serif;font-size:10px;font-weight:400;letter-spacing:.03em}.app-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px}.app-brand,.app-header-actions{display:flex;align-items:center;gap:8px;min-width:0}.app-brand{flex-wrap:wrap}.app-brand strong{color:var(--text);font-family:Fira Sans,PingFang SC,Microsoft YaHei,sans-serif;font-size:.92rem;font-weight:400;white-space:nowrap}.app-page-label,.app-node-label{color:var(--text-soft);font-size:12px}.app-node-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-header-actions{flex-wrap:wrap;justify-content:flex-end}.panel-tag,.section-header>span{display:inline-flex;align-items:center;min-height:22px;padding:3px 8px;border-radius:999px;background:#2563eb14;color:var(--primary);font-family:Fira Sans,PingFang SC,Microsoft YaHei,sans-serif;font-size:10px;font-weight:400}.toolbar-group,.overview-actions,.tool-actions,.tag-row{display:flex;flex-wrap:wrap;gap:6px}.toolbar-button,.mode-tabs button,.subtabs button,.soft-button,.search-result,.filter-chip,.relation-item,.table-link{cursor:pointer;transition:transform .18s ease,border-color .18s ease,background .18s ease,color .18s ease,box-shadow .18s ease}.toolbar-button,.mode-tabs button,.subtabs button,.soft-button{border:1px solid var(--line);border-radius:999px;background:#ffffffe0;color:var(--text-secondary);padding:6px 10px;min-height:32px;font-size:11px;font-weight:400}.toolbar-button:hover,.mode-tabs button:hover,.subtabs button:hover,.soft-button:hover,.search-result:hover,.filter-chip:hover,.relation-item:hover,.table-link:hover{transform:translateY(-1px);border-color:var(--line-strong);box-shadow:var(--shadow-soft)}.toolbar-button.is-active,.mode-tabs button.is-active,.subtabs button.is-active,.soft-button.is-strong{border-color:#2563eb;background:#3b82f6;color:#fff}.toolbar-button:disabled,.soft-button:disabled,.mode-tabs button:disabled,.subtabs button:disabled{cursor:not-allowed;opacity:.45;transform:none;box-shadow:none}.toolbar-group.is-segmented,.mode-tabs{display:inline-flex;flex-wrap:nowrap;gap:3px;padding:3px;border-radius:10px;background:#0f172a0a}.toolbar-group.is-segmented .toolbar-button,.mode-tabs button{border:1px solid transparent;border-radius:8px;background:transparent}.toolbar-group.is-segmented .toolbar-button.is-active,.mode-tabs button.is-active{border-color:#2563eb;background:#3b82f6;box-shadow:0 1px 3px #2563eb47;color:#fff}.toolbar-group.is-segmented .toolbar-button:not(.is-active):hover,.mode-tabs button:not(.is-active):hover{background:#0f172a0a;box-shadow:none}.workspace{display:grid;grid-template-columns:236px minmax(0,1fr) 300px;gap:10px;min-height:0;height:calc(100vh - 78px)}.panel-left,.panel-right,.sidebar,.detail-panel{display:flex;flex-direction:column;gap:10px;min-height:0;overflow:auto;padding:2px}.center-stack{min-width:0;min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:10px}.panel-block,.rail-card,.side-card,.table-panel,.graph-panel{display:grid;gap:10px;padding:10px}.rail-card-nav{padding-bottom:12px}.section-header,.panel-title-row,.graph-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-header h2,.section-header h3,.panel-title-row h2{margin:0;font-size:.84rem;line-height:1.2;font-weight:400}.section-header button:last-child{margin-left:auto}.nav-list,.filter-grid,.search-results,.relation-groups,.relation-list,.summary-list{display:grid;gap:8px}.nav-list{margin-top:4px}.nav-item{display:flex;align-items:center;gap:10px;width:100%;border:1px solid var(--line);border-radius:16px;background:#fffffff0;color:var(--text);padding:10px;text-align:left}.nav-item.is-active{border-color:#2563eb57;background:#2563eb14}.nav-icon{width:28px;height:28px;flex:none;display:grid;place-items:center;border-radius:10px;background:#2563eb1a;color:var(--primary);font-family:Fira Sans,PingFang SC,Microsoft YaHei,sans-serif;font-size:12px;font-weight:400}.nav-copy{display:grid;gap:2px;min-width:0}.nav-copy strong{font-size:.92rem}.nav-copy small{color:var(--text-soft);font-size:.75rem;line-height:1.35}.field{display:grid;gap:6px}.field span,.search-result span,.search-result small,.switch-row span,.filter-chip small,.relation-item span,.relation-item small,.context-line,.empty-hint,.empty-state,.graph-footnote,.table-footer,.data-table th{color:var(--text-soft)}.detail-panel{gap:0;padding:0;border:1px solid rgba(71,85,105,.12);border-radius:18px;background:#ffffffe0;box-shadow:0 10px 28px #0f172a0d;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.detail-tabpanel,.data-tabpanel{display:grid;min-height:0;gap:0}.detail-tabpanel[hidden],.data-tabpanel[hidden]{display:none}.detail-panel>.side-card,.detail-tabpanel>.side-card{gap:6px;padding:8px 10px;border:0;border-radius:0;background:transparent;box-shadow:none}.detail-panel>.side-card+.side-card,.detail-tabpanel>.side-card+.side-card,.detail-panel>.detail-tabpanel>.side-card:first-child{border-top:1px solid rgba(226,232,240,.92)}.detail-panel .section-header,.detail-panel .panel-title-row,.detail-panel .graph-toolbar{gap:6px}.detail-panel .section-header h2,.detail-panel .section-header h3{font-size:.75rem;font-weight:400;color:var(--text-secondary);letter-spacing:.01em}.detail-panel .section-header>span{min-height:18px;padding:1px 6px;font-size:9px;color:var(--text-faint);font-weight:400}.detail-panel .subtabs{display:inline-flex;gap:4px;padding:1px;border-radius:10px;background:#0f172a0b}.detail-panel .subtabs button{min-height:26px;padding:4px 8px;border-radius:8px;font-size:10px}.field span{font-size:11px}.field input{width:100%;border:1px solid var(--line);border-radius:14px;background:#fffffff5;color:var(--text);padding:11px 13px;outline:none;transition:border-color .18s ease,box-shadow .18s ease}.field input:focus{border-color:#2563eb57;box-shadow:0 0 0 4px #2563eb1a}.search-results{max-height:170px;overflow:auto;padding-right:2px}.search-result{width:100%;display:grid;gap:4px;border:1px solid var(--line);border-radius:var(--radius-md);background:#ffffffe6;padding:10px 12px;text-align:left}.search-result strong,.relation-item strong{color:var(--text);font-size:.9rem;font-weight:400}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:var(--radius-md);background:#ffffffd6;padding:10px 12px}.switch-row.is-active{border-color:#2563eb47;background:#2563eb14}.switch-row input{accent-color:var(--primary)}.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-grid.is-compact{grid-template-columns:repeat(auto-fill,minmax(128px,1fr))}.filter-section-card{display:grid;gap:8px}.filter-section-card.is-compact{gap:4px}.filter-section-card.is-grouped{gap:10px}.filter-section-header{align-items:center}.filter-section-header .toolbar-group{justify-content:flex-end}.filter-section-header h3{font-size:.78rem}.filter-section-tools{display:flex;align-items:center;gap:6px;justify-content:flex-end;flex-wrap:wrap}.filter-section-toggle{min-height:24px;padding:4px 9px;font-size:10px}.filter-section-stack{display:grid;gap:8px}.filter-section-meta{display:inline-flex;align-items:center;min-height:18px;padding:2px 7px;border-radius:999px;background:#2563eb14;color:var(--primary);font-family:Fira Sans,PingFang SC,Microsoft YaHei,sans-serif;font-size:9px;font-weight:400}.filter-section-card.is-collapsible{padding-bottom:2px}.filter-chip{position:relative;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:6px;min-height:42px;border:1px solid var(--line);border-radius:12px;background:#ffffffeb;padding:7px 9px;color:var(--text-secondary)}.filter-chip input{position:absolute;inset:0;opacity:0;pointer-events:none}.filter-chip.is-active{border-color:#2563eb47;background:#2563eb14}.filter-chip.is-visual{border-color:color-mix(in srgb,var(--chip-border, rgba(71, 85, 105, .28)) 45%,transparent)}.class-shape-icon{display:inline-flex;align-items:center;justify-content:center;flex:none}.class-shape-icon svg{display:block}.filter-chip-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;font-weight:400;line-height:1.15}.filter-chip small{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:18px;border-radius:999px;background:#94a3b81f;padding-inline:6px;font-size:9px;font-family:Fira Code,monospace}.detail-id{font-family:Fira Code,monospace;font-size:11px}.graph-stage{overflow:hidden}.graph-panel{grid-template-rows:auto min-content minmax(0,1fr) auto;align-content:start;padding:9px}.graph-toolbar{flex-wrap:wrap}.metadata-guide{display:none}.metadata-note{display:flex;align-items:center;justify-content:space-between;gap:10px;align-self:start;min-height:0;padding:5px 10px;border:1px solid rgba(148,163,184,.16);border-radius:14px;background:#f8fafcc7}.metadata-note p{margin:0;color:var(--text-soft);font-size:10px;line-height:1.3}.metadata-note-status{display:inline-flex;align-items:center;min-height:22px;flex:none;border-radius:999px;background:#2563eb14;color:var(--primary);padding:2px 8px;font-size:9px;font-weight:400}.filter-menu-anchor{position:relative;z-index:3}.filter-popover{position:absolute;top:calc(100% + 4px);right:0;width:min(720px,calc(100vw - 48px));display:grid;gap:8px;border:1px solid var(--line);border-radius:16px;background:#fffffffa;box-shadow:0 18px 40px #0f172a1a;padding:8px}.filter-popover-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.filter-popover-head strong{font-size:.78rem}.filter-popover .toolbar-group{gap:4px}.filter-popover .toolbar-button{min-height:28px;padding:4px 9px;font-size:10px}.filter-popover-actions>span{display:inline-flex;align-items:center;min-height:18px;padding:2px 7px;border-radius:999px;background:#2563eb14;color:var(--primary);font-family:Fira Sans,PingFang SC,Microsoft YaHei,sans-serif;font-size:9px;font-weight:400}.graph-frame{min-height:0;height:100%;padding:0;border:1px solid rgba(203,213,225,.82);border-radius:16px;overflow:hidden;background:linear-gradient(180deg,#fffffffa,#f8fafcfa);box-shadow:inset 0 1px #ffffffe6}.graph-container{--graph-grid-size: 20px;--graph-grid-opacity: .028;position:relative;min-height:0;height:100%;overflow:hidden;border-radius:inherit;background:radial-gradient(circle at 18% 16%,rgba(191,219,254,.22),transparent 26%),radial-gradient(circle at 82% 12%,rgba(220,252,231,.18),transparent 18%),linear-gradient(180deg,#fff,#fbfdff)}.graph-container:before,.graph-container:after{content:"";position:absolute;inset:0;pointer-events:none}.graph-container:before{background-image:linear-gradient(rgba(148,163,184,var(--graph-grid-opacity)) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,var(--graph-grid-opacity)) 1px,transparent 1px),linear-gradient(rgba(191,219,254,calc(var(--graph-grid-opacity) + .01)) 1px,transparent 1px),linear-gradient(90deg,rgba(191,219,254,calc(var(--graph-grid-opacity) + .01)) 1px,transparent 1px);background-size:var(--graph-grid-size) var(--graph-grid-size),var(--graph-grid-size) var(--graph-grid-size),calc(var(--graph-grid-size) * 5) calc(var(--graph-grid-size) * 5),calc(var(--graph-grid-size) * 5) calc(var(--graph-grid-size) * 5)}.graph-container:after{background:radial-gradient(circle at center,rgba(255,255,255,.36),transparent 48%),linear-gradient(180deg,#ffffff0a,#94a3b805)}.graph-surface{position:relative;z-index:1;height:100%;min-height:clamp(460px,62vh,860px)}.graph-loading,.empty-state,.empty-hint{display:grid;place-items:center;min-height:100px;margin:0;text-align:center;font-size:12px;line-height:1.5}.graph-footnote{margin:0;font-size:12px;line-height:1.4}.graph-footnote strong{color:var(--text)}.node-overview-card{background:radial-gradient(circle at top right,rgba(37,99,235,.08),transparent 30%),#fffffff0}.detail-panel>.node-overview-card{padding-top:10px;padding-bottom:10px}.detail-summary{display:grid;gap:4px}.detail-summary .eyebrow{color:var(--text-faint);font-size:10px;font-weight:400;letter-spacing:.02em}.detail-summary h3{margin:0;font-size:.92rem;line-height:1.16;font-weight:400;color:var(--text-secondary)}.detail-id{margin:0;color:var(--text-soft);font-size:.76rem;font-weight:400}.tag-row{align-items:center;gap:5px}.tag-pill,.path-pill{display:inline-flex;align-items:center;min-height:22px;border:0;border-radius:999px;background:#f1f5f9eb;color:var(--text-secondary);padding:3px 8px;font-size:10px;font-weight:400;box-shadow:inset 0 0 0 1px #94a3b82e}.path-pill{cursor:pointer}.path-pill.is-current{border-color:#2563eb47;background:#2563eb14;color:var(--primary-strong)}.summary-metrics,.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.summary-metric,.mini-stat,.attribute-card,.relation-group{border:0;border-radius:var(--radius-md);background:#f8fafcd6;box-shadow:inset 0 0 0 1px #94a3b829}.summary-metric,.mini-stat{min-width:0;padding:7px 8px}.summary-metric span,.mini-stat span,.summary-list span{color:var(--text-faint);font-size:10px;font-family:Fira Sans,PingFang SC,Microsoft YaHei,sans-serif;letter-spacing:.02em}.summary-metric strong,.mini-stat strong{color:var(--text);font-family:Fira Code,monospace;font-size:.92rem;font-weight:400}.path-strip{display:flex;flex-wrap:wrap;gap:3px}.context-line{margin:0;font-size:10px;line-height:1.35}.summary-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.summary-list>div{display:grid;gap:3px;min-width:0;border:0;border-radius:var(--radius-md);background:#f8fafcd6;padding:7px 8px;box-shadow:inset 0 0 0 1px #94a3b829}.summary-list strong{color:var(--text-secondary);font-size:.78rem;line-height:1.28;font-weight:400}.attribute-grid{display:grid;gap:0;grid-template-columns:1fr}.attribute-card{display:grid;grid-template-columns:minmax(72px,96px) minmax(0,1fr);align-items:start;column-gap:6px;padding:6px 0;border-radius:0;background:transparent;box-shadow:none;border-top:1px solid rgba(226,232,240,.92)}.attribute-card:first-child{padding-top:0;border-top:0}.attribute-card:last-child{padding-bottom:0}.attribute-card dt{margin-bottom:0;color:var(--text-faint);font-size:10px;font-family:Fira Sans,PingFang SC,Microsoft YaHei,sans-serif;white-space:nowrap}.attribute-card dt:after{content:"："}.attribute-card dd{margin:0;min-width:0;color:var(--text);font-size:.78rem;line-height:1.35;word-break:break-word}.relation-group{padding:6px 0 0;border-radius:0;background:transparent;box-shadow:none;border-top:1px solid rgba(226,232,240,.92)}.relation-group:first-child{padding-top:0;border-top:0}.relation-group-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0;padding:0;border:0;background:transparent;color:inherit;text-align:left;box-shadow:none}.relation-group-toggle:hover{transform:none;box-shadow:none}.relation-group-title{display:flex;align-items:baseline;gap:8px;min-width:0}.relation-group-title span{color:var(--text-faint);font-size:9px;font-family:Fira Sans,PingFang SC,Microsoft YaHei,sans-serif;font-weight:400}.relation-group-title strong{color:var(--text-secondary);font-size:.86rem;line-height:1.22;font-weight:400}.relation-group-toggle-icon{flex:none;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#e2e8f0bf;color:var(--text-soft);font-size:12px;line-height:1}.relation-group .relation-list{margin-top:4px}.relation-group.is-collapsed .relation-list{margin-top:0}.relation-item{width:100%;display:grid;gap:2px;border:0;border-radius:10px;background:#f8fafcd1;padding:7px 8px;text-align:left;box-shadow:inset 0 0 0 1px #94a3b824}.relation-mainline{display:flex;align-items:baseline;gap:6px;min-width:0}.detail-panel .relation-item strong{color:var(--text-secondary);font-size:.8rem;line-height:1.24;font-weight:400;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-panel .relation-code{flex:none;color:var(--text-soft);font-family:Fira Code,monospace;font-size:.68rem;line-height:1;white-space:nowrap}.detail-panel .relation-item span,.detail-panel .relation-item small{color:var(--text-soft);font-size:.68rem;line-height:1.2;font-weight:400}.detail-panel .relation-list,.detail-panel .relation-groups{gap:4px}.table-panel{grid-template-rows:auto minmax(0,1fr) auto}.table-panel .data-tabpanel{align-content:start}.table-panel .data-tabpanel>.table-shell{min-height:0}.table-panel.is-collapsed{height:150px}.table-panel.is-expanded{height:310px}.stats-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.table-shell{min-height:0;overflow:auto;border:1px solid var(--line);border-radius:var(--radius-lg);background:#ffffffe0}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:10px 12px;border-bottom:1px solid rgba(226,232,240,.92);text-align:left;vertical-align:top}.data-table th{position:sticky;top:0;z-index:1;background:#f8fafcf5;font-size:11px;font-weight:400;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.table-link{border:0;background:transparent;color:var(--primary-strong);padding:0;box-shadow:none}.table-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:12px}.mock-graph-grid{min-height:360px;border:1px dashed var(--line-strong);border-radius:16px;background:linear-gradient(rgba(148,163,184,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.08) 1px,transparent 1px);background-size:20px 20px}@media(max-width:1280px){.workspace{grid-template-columns:224px minmax(0,1fr) 284px}}@media(max-width:1120px){body{overflow:auto}.app-shell{min-height:100vh;height:auto;overflow:visible}.workspace{height:auto;grid-template-columns:minmax(0,1fr)}.center-stack{order:1}.detail-panel{order:2}.sidebar{order:3}.panel-left,.panel-right,.sidebar,.detail-panel{overflow:visible}.graph-surface{min-height:clamp(420px,52vh,760px)}}@media(max-width:720px){.app-shell{gap:8px;padding:6px}.app-header{padding:10px}.app-header-actions{justify-content:flex-start}.filter-grid,.summary-metrics,.summary-list,.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.nav-item{align-items:flex-start}.graph-panel{padding:8px}.detail-panel>.side-card,.detail-tabpanel>.side-card{padding:9px 10px}.detail-panel .summary-metrics,.detail-panel .summary-list{grid-template-columns:1fr}.graph-surface{min-height:420px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:0s!important;animation-duration:0s!important}}
