@distrohelena/canton-explorer 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +26 -0
  2. package/config/nodes.example.json +5 -1
  3. package/dist/public/assets/DebuggerView-Cf8sZ-NE.js +2 -0
  4. package/dist/public/assets/css.worker-BKx7BC4h.js +89 -0
  5. package/dist/public/assets/editor-C5uazxST.css +1 -0
  6. package/dist/public/assets/editor.api-8w-mShFJ.js +820 -0
  7. package/dist/public/assets/editor.worker-DQJwLooG.js +26 -0
  8. package/dist/public/assets/html.worker-ChRLLxCa.js +502 -0
  9. package/dist/public/assets/index-C6ucHbtz.js +1 -0
  10. package/dist/public/assets/index-D9pVnHtz.css +1 -0
  11. package/dist/public/assets/json.worker-DR52qCex.js +58 -0
  12. package/dist/public/assets/ts.worker-Cqvg7802.js +67734 -0
  13. package/dist/public/index.html +2 -2
  14. package/dist/src/api/debugger.controller.d.ts +16 -0
  15. package/dist/src/api/debugger.controller.js +105 -0
  16. package/dist/src/api/debugger.controller.js.map +1 -0
  17. package/dist/src/app-bootstrap.d.ts +1 -1
  18. package/dist/src/app-bootstrap.js +6 -2
  19. package/dist/src/app-bootstrap.js.map +1 -1
  20. package/dist/src/app.module.js +4 -1
  21. package/dist/src/app.module.js.map +1 -1
  22. package/dist/src/config/node-config.schema.d.ts +11 -0
  23. package/dist/src/config/node-config.schema.js +8 -0
  24. package/dist/src/config/node-config.schema.js.map +1 -1
  25. package/dist/src/config/node-config.service.d.ts +2 -1
  26. package/dist/src/config/node-config.service.js +3 -0
  27. package/dist/src/config/node-config.service.js.map +1 -1
  28. package/dist/src/debugger/debugger.service.d.ts +158 -0
  29. package/dist/src/debugger/debugger.service.js +746 -0
  30. package/dist/src/debugger/debugger.service.js.map +1 -0
  31. package/dist/src/domain/node.types.d.ts +1 -1
  32. package/dist/src/packages/daml-decoder.types.d.ts +8 -1
  33. package/dist/src/packages/daml-value-decoder.service.js.map +1 -1
  34. package/dist/src/packages/package-cache.service.js +103 -7
  35. package/dist/src/packages/package-cache.service.js.map +1 -1
  36. package/dist/src/packages/package-registry.service.js.map +1 -1
  37. package/dist/src/packages/package-sync.service.js +31 -3
  38. package/dist/src/packages/package-sync.service.js.map +1 -1
  39. package/dist/src/packages/pqs-package.service.js +15 -80
  40. package/dist/src/packages/pqs-package.service.js.map +1 -1
  41. package/dist/src/pqs/pqs-schema.d.ts +3 -0
  42. package/dist/src/pqs/pqs-schema.js +32 -0
  43. package/dist/src/pqs/pqs-schema.js.map +1 -0
  44. package/dist/src/pqs/pqs-summary.service.d.ts +3 -3
  45. package/dist/src/pqs/pqs-summary.service.js +619 -1414
  46. package/dist/src/pqs/pqs-summary.service.js.map +1 -1
  47. package/dist/tsconfig.build.tsbuildinfo +1 -1
  48. package/package.json +35 -31
  49. package/dist/public/assets/index-NfJYgVwb.css +0 -1
  50. package/dist/public/assets/index-ybPCCjei.js +0 -1
package/package.json CHANGED
@@ -1,35 +1,39 @@
1
1
  {
2
- "name": "@distrohelena/canton-explorer",
3
- "version": "0.1.0",
4
- "description": "Read-only operations explorer for Canton participant nodes and PQS-backed ledgers.",
5
- "author": "",
6
- "license": "Apache-2.0",
7
- "main": "dist/src/main.js",
8
- "bin": {
9
- "canton-explorer": "bin/canton-explorer.js"
10
- },
11
- "publishConfig": {
12
- "access": "public"
13
- },
14
- "files": [
15
- "bin",
16
- "config/nodes.example.json",
17
- "dist",
18
- ".env.example",
19
- "README.md"
20
- ],
21
- "scripts": {
22
- "build": "nest build",
23
- "build:package": "node ./scripts/prepack.mjs",
24
- "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
25
- "start": "nest start",
26
- "start:dev": "nest start --watch",
27
- "start:debug": "nest start --debug --watch",
28
- "start:prod": "node dist/src/main.js",
29
- "prepack": "node ./scripts/prepack.mjs",
30
- "pack:dry-run": "npm pack --dry-run",
31
- "debug:list-local-parties": "NODE_OPTIONS=--experimental-vm-modules ts-node ./scripts/list-local-parties.ts",
32
- "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
2
+ "name": "@distrohelena/canton-explorer",
3
+ "version": "0.1.2",
4
+ "description": "Read-only operations explorer for Canton participant nodes and PQS-backed ledgers.",
5
+ "author": "",
6
+ "license": "Apache-2.0",
7
+ "main": "dist/src/main.js",
8
+ "bin": {
9
+ "canton-explorer": "bin/canton-explorer.js"
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "files": [
15
+ "bin",
16
+ "config/nodes.example.json",
17
+ "dist",
18
+ ".env.example",
19
+ "README.md"
20
+ ],
21
+ "scripts": {
22
+ "build": "nest build",
23
+ "build:package": "node ./scripts/prepack.mjs",
24
+ "dar:debug": "node ./scripts/build-debug-dar.mjs",
25
+ "dar:prepare-workspace": "node ./scripts/prepare-debug-dars-from-workspace.mjs",
26
+ "dar:source-map": "node ./scripts/generate-daml-source-map.mjs",
27
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
28
+ "sdk:local": "node ./scripts/link-local-sdk.mjs",
29
+ "start": "nest start",
30
+ "start:dev": "nest start --watch",
31
+ "start:debug": "nest start --debug --watch",
32
+ "start:prod": "node dist/src/main.js",
33
+ "prepack": "node ./scripts/prepack.mjs",
34
+ "pack:dry-run": "npm pack --dry-run",
35
+ "debug:list-local-parties": "NODE_OPTIONS=--experimental-vm-modules ts-node ./scripts/list-local-parties.ts",
36
+ "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
33
37
  "test": "NODE_OPTIONS=--experimental-vm-modules jest",
34
38
  "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch",
35
39
  "test:cov": "NODE_OPTIONS=--experimental-vm-modules jest --coverage",
@@ -1 +0,0 @@
1
- :root{--font-body:Inter, "IBM Plex Sans", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--text-900:#1f2937;--text-700:#4b5563;--text-500:#6b7280;--surface-page:#f6f8fb;--surface-card:#fff;--surface-muted:#f9fafb;--line-soft:#e5e7eb;--line-strong:#d1d5db;--blue-600:#1f6feb;--blue-700:#0f4aa6;--blue-50:#eef5ff;--green-600:#11845b;--amber-600:#b7791f;--red-600:#d14343;--shadow-soft:0 10px 24px #0f172a0f;--nav-active-border:#bfd3f6;--nav-active-bg:#f5f8fe;--nav-active-text:#0f4aa6;--panel-border:#dde6f4;--panel-gradient-start:#f5f8fee6;--panel-gradient-end:#fff;--chart-gradient-start:#eef5ffb3;--chart-gradient-end:#ffffffb3;--chart-guide:#1f6feb1f;--chart-line:#1f6feb;--panel-divider:#e3ebf7;--filter-active-border:#bfd4fb;--filter-active-bg:#f3f7ff;--filter-chip-border:#d7e4fb;--filter-chip-bg:#f6f9ff;--back-button-border:#cfe0fb;--back-button-bg:#f7faff;--back-button-shadow:0 8px 18px #1f6feb14;--error-border:#fecaca;--status-healthy-bg:#e8f7f0;--status-healthy-border:#bfe8d3;--status-degraded-bg:#fff5e8;--status-degraded-border:#f2d19a;--status-down-bg:#feeeee;--status-down-border:#f6b8b8;font-family:var(--font-body);color:var(--text-900);background:var(--surface-page)}.search-results-view{flex-direction:column;gap:18px;width:min(1120px,100%);margin:0 auto;display:flex}.search-results-view__header{flex-direction:column;gap:6px;display:flex}.search-results-view__header h2{letter-spacing:-.04em;margin:0;font-size:1.9rem}.search-results-view__query{color:var(--muted-text,#64748b);margin:0}.search-results-view__content{flex-direction:column;gap:16px;display:flex}.search-results-view__loading,.search-results-view__error,.search-results-view__empty,.search-results-group{border:1px solid var(--line-soft);background:var(--surface-card);box-shadow:var(--shadow-soft);border-radius:20px;padding:18px 20px}.search-results-group{flex-direction:column;gap:10px;display:flex}.search-results-group__heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.search-results-group__heading h3{text-transform:uppercase;letter-spacing:.12em;margin:0;font-size:1rem}.search-results-group__subheading{text-transform:uppercase;letter-spacing:.14em;color:var(--muted-text,#64748b);margin-top:2px;font-size:.76rem;font-weight:700}.search-results-group__warning{color:#b45309;margin:0;font-size:.92rem}.search-results-row{color:inherit;background:#94a3b814;border-radius:14px;grid-template-columns:minmax(220px,1.15fr) minmax(180px,.9fr) minmax(140px,.7fr);align-items:center;gap:12px;padding:12px 14px;text-decoration:none;transition:background-color .14s,transform .14s;display:grid}.search-results-row:hover{background:#3b82f61f;transform:translateY(-1px)}.search-results-row__primary{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}:root[data-theme=dark]{--text-900:#e8eef8;--text-700:#c6d1df;--text-500:#91a4ba;--surface-page:#07111d;--surface-card:#0f1a2b;--surface-muted:#0b1524;--line-soft:#223349;--line-strong:#2e4460;--blue-600:#6ea8ff;--blue-700:#d8e8ff;--blue-50:#11233c;--green-600:#57d399;--amber-600:#f3b55d;--red-600:#ff8585;--shadow-soft:0 16px 30px #00000052;--nav-active-border:#355885;--nav-active-bg:#13243a;--nav-active-text:#d8e8ff;--panel-border:#223854;--panel-gradient-start:#0f1a2bf5;--panel-gradient-end:#0b1524fa;--chart-gradient-start:#14233cb3;--chart-gradient-end:#0a121fb3;--chart-guide:#6ea8ff2e;--chart-line:#6ea8ff;--panel-divider:#1e3148;--filter-active-border:#40679b;--filter-active-bg:#132743;--filter-chip-border:#35557f;--filter-chip-bg:#122239;--back-button-border:#34557f;--back-button-bg:#122239;--back-button-shadow:0 10px 24px #00000047;--error-border:#7a3535;--status-healthy-bg:#102b23;--status-healthy-border:#295846;--status-degraded-bg:#312414;--status-degraded-border:#7b5a23;--status-down-bg:#341818;--status-down-border:#7f3535}body{background:var(--surface-page);min-height:100vh;color:var(--text-900);margin:0}#app{min-height:100vh}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-frame{box-sizing:border-box;flex:1;width:100%;max-width:1280px;margin:0 auto;padding:24px 24px 40px}.app-header{background:var(--surface-card);border-bottom:1px solid var(--line-soft);width:100%}.app-header__inner{max-width:1280px;margin:0 auto;padding:0 24px}.app-footer{border-top:1px solid var(--line-soft);background:var(--surface-card)}.app-footer__inner{max-width:1280px;margin:0 auto;padding:14px 24px 18px}.app-footer__text{color:var(--text-500);text-align:center;margin:0;font-size:.85rem}.app-footer__package{color:var(--text-700);font-family:IBM Plex Mono,SFMono-Regular,Consolas,Liberation Mono,monospace;text-decoration:none}.app-footer__package:hover{color:var(--accent-600)}.app-titlebar{justify-content:space-between;align-items:center;gap:20px;min-height:72px;display:flex}.app-toolbar{flex:1;justify-content:flex-end;align-items:center;gap:12px;min-width:0;display:flex}.app-nav{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.app-search{border:1px solid var(--line-soft);background:var(--surface-card);width:min(360px,100%);min-width:220px;color:var(--text-900);box-sizing:border-box;border-radius:10px;padding:10px 14px;font-size:.95rem}.app-search::placeholder{color:var(--text-500)}.nav-button{border:1px solid var(--line-soft);background:var(--surface-card);color:var(--text-700);cursor:pointer;border-radius:10px;padding:10px 14px;font-size:.95rem;font-weight:500;text-decoration:none;transition:border-color .16s,color .16s,background-color .16s}.nav-button:hover{border-color:var(--blue-600);color:var(--blue-600);background:var(--blue-50)}.router-link-active.nav-button{border-color:var(--nav-active-border);background:var(--nav-active-bg);color:var(--nav-active-text)}.app-theme-toggle{border:1px solid var(--line-soft);background:var(--surface-card);width:42px;height:42px;color:var(--text-700);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;font-size:1rem;line-height:1;transition:border-color .16s,color .16s,background-color .16s,transform .16s;display:inline-flex}.app-theme-toggle:hover{border-color:var(--blue-600);color:var(--blue-600);background:var(--blue-50);transform:translateY(-1px)}.app-theme-toggle:focus-visible{outline:2px solid var(--blue-600);outline-offset:2px}.nav-button--disabled{cursor:not-allowed;opacity:.45}h1,h2,h3{font-family:var(--font-body);letter-spacing:-.02em;color:var(--text-900);margin:0;font-weight:700}.app-brand{min-width:0;color:inherit;align-items:center;gap:12px;text-decoration:none;display:flex}.app-brand__logo{object-fit:cover;border-radius:8px;flex:none;width:34px;height:34px}.app-brand__title{min-width:0;font-size:1.3rem;line-height:1.2}h2{font-size:1.5rem;line-height:1.2}h3{font-size:1.05rem;line-height:1.35}.app-main{flex-direction:column;gap:20px;display:flex}.dashboard{flex-direction:column;gap:16px;display:flex}.activity-home{flex-direction:column;gap:18px;display:flex}.activity-home__hero{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.activity-home__copy{max-width:44rem}.activity-home__eyebrow{color:var(--blue-600);text-transform:uppercase;letter-spacing:.14em;margin:0 0 10px;font-size:.72rem;font-weight:700}.activity-home__lede{color:var(--text-500);margin:8px 0 0;font-size:.98rem;line-height:1.6}.activity-home__controls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.activity-home__grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:18px;display:grid}.activity-home__updates-section{flex-direction:column;gap:14px;margin-top:20px;display:flex}.activity-home__updates-header h3{margin:0}.activity-home__updates-node{color:var(--text-900);font-weight:600}.activity-home__selector{border:1px solid var(--line-soft);background:var(--surface-card);border-radius:999px;align-items:center;gap:8px;padding:6px;display:inline-flex}.activity-home__selector-button{min-width:40px;color:var(--text-500);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:8px 12px;font-size:.9rem;font-weight:700;transition:background-color .16s,color .16s}.activity-home__selector-button:hover{background:var(--blue-50);color:var(--blue-600)}.activity-home__selector-button--active{background:var(--blue-600);color:#fff}.activity-panel{border:1px solid var(--panel-border);background:linear-gradient(180deg, var(--panel-gradient-start), var(--panel-gradient-end));box-shadow:var(--shadow-soft);border-radius:16px;padding:20px}.activity-panel-link{color:inherit;text-decoration:none}.activity-panel__header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.activity-panel__meta,.activity-panel__footer p{color:var(--text-500);margin:6px 0 0;font-size:.92rem}.activity-panel__status{background:var(--surface-card);border:1px solid var(--line-soft);border-radius:999px;justify-content:center;align-items:center;padding:7px 10px;font-size:.82rem;font-weight:700;display:inline-flex}.activity-panel__status[data-status=healthy]{color:var(--green-600)}.activity-panel__status[data-status=degraded]{color:var(--amber-600)}.activity-panel__status[data-status=down]{color:var(--red-600)}.activity-panel__chart-layout{grid-template-columns:34px minmax(0,1fr);align-items:stretch;gap:10px;margin-top:18px;display:grid}.activity-panel__scale{flex-direction:column;justify-content:space-between;align-items:flex-end;padding:6px 0;display:flex}.activity-panel__scale-label{color:var(--text-500);font-variant-numeric:tabular-nums;font-size:.74rem;font-weight:700;line-height:1}.activity-panel__chart{background:linear-gradient(180deg, var(--chart-gradient-start), var(--chart-gradient-end));border-radius:12px;width:100%;height:120px}.activity-panel__guide{stroke:var(--chart-guide);stroke-width:1px}.activity-panel__line{stroke:var(--chart-line)}.activity-panel__axis{justify-content:space-between;gap:12px;margin-top:8px;display:flex}.activity-panel__axis-label{color:var(--text-500);letter-spacing:.01em;font-size:.78rem;font-weight:600}.activity-panel__footer{border-top:1px solid var(--panel-divider);flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:14px;padding-top:14px;display:flex}.activity-panel-link:hover .activity-panel{border-color:var(--blue-600);box-shadow:0 14px 28px #1f6feb14}.node-updates,.node-updates__content{flex-direction:column;gap:18px;display:flex}.node-updates__pager{align-items:center;gap:10px;display:flex}.node-updates__page-size{color:var(--text-600);align-items:center;gap:8px;font-size:.88rem;font-weight:600;display:inline-flex}.node-updates__page-size-label{white-space:nowrap}.node-updates__page-size-select{border:1px solid var(--line-soft);background:var(--surface-card);min-width:88px;color:var(--text-900);appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--text-700) 50%), linear-gradient(135deg, var(--text-700) 50%, transparent 50%);cursor:pointer;background-position:calc(100% - 18px) calc(50% - 2px),calc(100% - 12px) calc(50% - 2px);background-repeat:no-repeat;background-size:6px 6px,6px 6px;border-radius:10px;padding:10px 34px 10px 12px;font-size:.95rem;font-weight:500;line-height:1.2}.node-updates__page-size-select:focus{outline:2px solid var(--blue-600);outline-offset:2px}.node-updates__pager .dashboard__refresh:disabled{border-color:var(--line-soft);background:var(--surface-muted);color:var(--text-500);cursor:not-allowed}.node-updates__advanced-filter{border:1px solid var(--line-soft);background:var(--surface-card);box-shadow:var(--shadow-soft);border-radius:14px;padding:18px 20px;overflow:visible}.node-updates__advanced-filter-title{margin-bottom:14px}.node-updates__advanced-filter-grid{grid-template-columns:minmax(240px,720px);gap:14px;display:grid}.node-updates__advanced-filter-field{color:var(--text-700);flex-direction:column;gap:8px;font-size:.9rem;font-weight:600;display:flex}.node-updates__advanced-filter-field--party{max-width:420px}.node-updates__advanced-filter-field--template{max-width:720px}.node-updates__advanced-filter-input-row{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.node-updates__advanced-filter-input-row--template{flex-wrap:nowrap}.node-updates__advanced-filter-input-row--template .searchable-combobox{flex:360px;max-width:none}.node-updates__advanced-filter-field input{border:1px solid var(--line-soft);background:var(--surface-muted);color:var(--text-500);border-radius:10px;flex:1;padding:10px 14px;font-size:.95rem}.searchable-combobox{flex:auto;min-width:0;position:relative}.searchable-combobox__input{box-sizing:border-box;width:100%}.searchable-combobox__menu{z-index:50;border:1px solid var(--line-soft);background:var(--surface-card);max-height:240px;box-shadow:var(--shadow-soft);border-radius:12px;flex-direction:column;gap:4px;padding:8px;display:flex;position:absolute;top:calc(100% + 8px);left:0;right:0;overflow-y:auto}.searchable-combobox__option{width:100%;color:var(--text-500);cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;border-radius:8px;padding:10px 12px}.searchable-combobox__option:hover,.searchable-combobox__option--active{background:var(--blue-50);color:var(--blue-700)}.searchable-combobox__empty{color:var(--text-700);padding:10px 12px;font-size:.9rem}.node-updates__advanced-filter-add{border:1px solid var(--line-soft);background:var(--surface-card);width:40px;height:40px;color:var(--blue-600);cursor:pointer;border-radius:10px;flex:0 0 40px;font-size:1.1rem;font-weight:700;transition:border-color .16s,background-color .16s,color .16s}.node-updates__advanced-filter-add:hover{border-color:var(--blue-600);background:var(--blue-50)}.node-updates__advanced-filter-mode{border:1px solid var(--line-soft);background:var(--surface-card);min-width:54px;height:40px;color:var(--text-700);cursor:pointer;border-radius:10px;font-size:.84rem;font-weight:700;transition:border-color .16s,background-color .16s,color .16s}.node-updates__advanced-filter-mode:hover{border-color:var(--blue-600);background:var(--blue-50);color:var(--blue-600)}.node-updates__advanced-filter-mode--active{border-color:var(--filter-active-border);background:var(--filter-active-bg);color:var(--blue-700)}.node-updates__advanced-filter-chips{flex-wrap:wrap;gap:10px;display:flex}.node-updates__advanced-filter-chip{border:1px solid var(--filter-chip-border);background:var(--filter-chip-bg);color:var(--blue-700);border-radius:999px;align-items:center;gap:8px;padding:8px 12px;font-size:.9rem;font-weight:600;display:inline-flex}.node-updates__advanced-filter-chip-remove{color:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-size:1rem;line-height:1}.node-updates__advanced-filter-toggle{color:var(--text-700);white-space:nowrap;flex:none;align-items:center;gap:12px;margin-left:auto;font-size:.9rem;font-weight:600;display:inline-flex}.node-updates__advanced-filter-checkbox{appearance:none;border:1px solid var(--line-soft);background:var(--surface-muted);cursor:pointer;border-radius:8px;flex:none;place-items:center;width:32px;height:32px;margin:0;transition:border-color .16s,background-color .16s,box-shadow .16s,transform .16s;display:inline-grid;position:relative;box-shadow:inset 0 0 0 1px #0000}.node-updates__advanced-filter-checkbox:hover{border-color:var(--blue-600)}.node-updates__advanced-filter-checkbox:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--blue-600) 26%, transparent);outline:none}.node-updates__advanced-filter-checkbox:after{content:"";opacity:0;transform-origin:50%;border-bottom:2px solid #fff;border-right:2px solid #fff;width:8px;height:14px;margin:auto;transition:opacity .12s,transform .12s;position:absolute;inset:0;transform:rotate(45deg)scale(.82)}.node-updates__advanced-filter-checkbox:checked{border-color:var(--blue-600);background:var(--blue-600);box-shadow:inset 0 0 0 1px #ffffff14}.node-updates__advanced-filter-checkbox:checked:after{opacity:1;transform:translateY(-1px)rotate(45deg)scale(1)}:root[data-theme=dark] .node-updates__advanced-filter-checkbox{background:var(--surface-muted)}:root[data-theme=dark] .node-updates__advanced-filter-checkbox:checked{background:var(--blue-600)}.node-updates-filter-enter-active,.node-updates-filter-leave-active{transform-origin:top;transition:opacity .18s,transform .18s,max-height .18s,margin .18s}.node-updates-filter-enter-from,.node-updates-filter-leave-to{opacity:0;max-height:0;transform:translateY(-6px)}.node-updates-filter-enter-to,.node-updates-filter-leave-from{opacity:1;max-height:260px;transform:translateY(0)}.node-updates__section{border:1px solid var(--line-soft);background:var(--surface-card);box-shadow:var(--shadow-soft);border-radius:14px;position:relative;overflow:hidden}.node-updates__table{flex-direction:column;display:flex}.node-updates__table--loading{pointer-events:none;filter:saturate(.82)}.node-updates__overlay{z-index:2;background:color-mix(in srgb, var(--surface-card) 74%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.node-updates__spinner{border:3px solid color-mix(in srgb, var(--blue-600) 18%, white);border-top-color:var(--blue-600);border-radius:999px;width:40px;height:40px;animation:.85s linear infinite node-updates-spin;box-shadow:0 8px 22px #0a25401f}@keyframes node-updates-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.node-updates__row{border-top:1px solid var(--line-soft);grid-template-columns:minmax(52px,.34fr) minmax(90px,.55fr) minmax(518px,3.01fr);align-items:center;gap:16px;padding:16px 20px;display:grid}.node-updates__row--link{color:inherit;cursor:pointer;text-decoration:none;transition:background-color .16s}.node-updates__row--link:hover{background:var(--blue-50)}.node-updates__row--link:focus-visible{outline:2px solid var(--blue-600);outline-offset:-2px}.node-updates__row--head{background:var(--surface-muted);color:var(--text-500);letter-spacing:.06em;text-transform:uppercase;border-top:none;font-size:.82rem;font-weight:700}.node-updates__id{color:var(--blue-600);word-break:break-all;font-weight:600}.node-updates__time{flex-direction:column;gap:2px;display:flex}.node-updates__time-date{color:var(--text-900);font-weight:600}.node-updates__time-clock{color:var(--text-500);font-size:.9rem}.node-updates__parties{flex-direction:column;align-items:flex-start;gap:4px;min-width:0;display:flex}.node-updates__party{white-space:nowrap;text-overflow:ellipsis;max-width:100%;display:block;overflow:hidden}.node-updates__row--with-node,.node-updates__row.activity-home__updates-row{grid-template-columns:minmax(120px,.8fr) minmax(52px,.34fr) minmax(110px,.55fr) minmax(300px,2fr)}.update-detail,.contract-detail,.party-detail,.contract-detail__content,.update-detail__content{flex-direction:column;gap:18px;display:flex}.update-detail__id,.update-detail__canonical{word-break:break-all}.update-detail__id{color:var(--blue-600);font-weight:600}.update-detail__canonical{color:var(--text-500);font-family:ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,monospace;font-size:.92rem}.update-detail__time{flex-direction:column;gap:2px;display:flex}.update-detail__time-date{color:var(--text-900);font-weight:600}.update-detail__time-clock{color:var(--text-500);font-size:.9rem}.update-detail__parties{flex-direction:column;align-items:flex-start;gap:2px;line-height:1.6;display:flex}.update-detail__party{white-space:nowrap;display:block}.update-detail__meta{color:#dbe7ff;background:#0f172a;border-radius:10px;margin:0;padding:16px;font-size:.88rem;line-height:1.6;overflow-x:auto}.update-detail__section--summary,.update-detail__section--meta,.update-detail__events-section,.contract-detail__section--summary,.contract-detail__section--data{grid-column:1/-1}.update-detail__events{flex-direction:column;gap:14px;display:flex}.update-detail__event{border:1px solid var(--line-soft);background:var(--surface-card);border-radius:12px;flex-direction:column;gap:14px;padding:16px;display:flex}.contract-detail__summary-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.contract-detail__summary-item{min-width:0}.contract-detail__summary-item dt,.contract-detail__summary-subitem dt{font-size:.82rem}.contract-detail__summary-item dd,.contract-detail__summary-subitem dd{font-size:1rem}.contract-detail__summary-item--contract-id,.contract-detail__summary-item--full-row{grid-column:1/-1}.contract-detail__summary-pair{grid-template-columns:repeat(2,max-content);justify-content:start;gap:14px;max-width:100%;display:grid}.contract-detail__summary-subitem{min-width:0}.contract-detail__summary-inline{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.token-transfer-detail__amount{white-space:nowrap}.package-detail,.package-detail__content{flex-direction:column;gap:18px;display:flex}.package-detail__section--summary,.package-detail__section--nodes,.package-detail__section--decoded{grid-column:1/-1}.package-detail__summary-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.package-detail__summary-item{min-width:0}.package-detail__summary-item dt,.package-detail__summary-subitem dt{font-size:.82rem}.package-detail__summary-item dd,.package-detail__summary-subitem dd{font-size:1rem}.package-detail__summary-item--full-row{grid-column:1/-1}.package-detail__summary-pair{grid-template-columns:repeat(2,max-content);justify-content:start;gap:14px;max-width:100%;display:grid}.package-detail__summary-subitem{min-width:0}.package-detail__seen-list,.package-detail__list{flex-direction:column;gap:8px;display:flex}.node-detail__sections.party-detail__sections{grid-template-columns:1fr}.party-detail__summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.party-detail__summary-item{min-width:0}.party-detail__summary-item--full-row{grid-column:1/-1}.party-detail__title{overflow-wrap:anywhere;word-break:break-word}.party-detail__section-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.party-detail__row-main{min-width:0}.party-detail__row-text,.party-detail__row-main .contract-detail__link,.party-detail__summary-item .update-detail__id{overflow-wrap:anywhere;word-break:break-word}.party-topology__list{flex-direction:column;gap:12px;display:flex}.party-topology__card{border:1px solid var(--line-soft);background:var(--surface-card);border-radius:12px;flex-direction:column;gap:14px;padding:14px 16px;display:flex}.party-topology__header{justify-content:space-between;align-items:center;gap:12px;display:flex}.party-topology__node{color:var(--text-900);margin:0;font-weight:700}.party-topology__group{flex-direction:column;gap:10px;display:flex}.party-topology__group h4{color:var(--text-900);margin:0;font-size:.95rem}.party-topology__rows{flex-direction:column;gap:8px;display:flex}.party-topology__row{border:1px solid var(--line-soft);background:color-mix(in srgb, var(--surface-card) 82%, var(--surface-2) 18%);border-radius:10px;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:10px 12px;display:grid}.party-topology__row--participant{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}.party-topology__row--key{grid-template-columns:repeat(3,minmax(0,1fr))}.party-topology__field{min-width:0;color:var(--text-700);overflow-wrap:anywhere;word-break:break-word;flex-direction:column;gap:4px;font-size:.92rem;display:flex}.party-topology__field--participant-uid{overflow-wrap:normal;word-break:normal;overflow:hidden}.party-topology__field--key-identity{grid-column:span 2}.party-topology__field strong{color:var(--text-500);letter-spacing:.06em;text-transform:uppercase;font-size:.78rem;font-weight:700}.party-topology__pill-list{flex-wrap:wrap;gap:6px;display:flex}.party-topology__pill{border:1px solid var(--line-soft);background:color-mix(in srgb, var(--filter-active-bg) 72%, var(--surface-card));min-height:28px;color:var(--blue-700);letter-spacing:.04em;white-space:nowrap;border-radius:999px;align-self:flex-start;align-items:center;padding:0 10px;font-size:.78rem;font-weight:700;display:inline-flex}.party-topology__stacked-value{flex-direction:column;gap:4px;min-width:0;display:flex}.party-topology__uid-link{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:block;overflow:hidden}.party-topology__state{color:var(--text-500);margin:0}.party-topology__state--error{color:var(--danger-600)}.package-detail__seen-row,.package-detail__list-row{border:1px solid var(--line-soft);background:var(--surface-card);border-radius:10px;justify-content:space-between;gap:16px;padding:10px 12px;display:flex}.package-detail__list-row{color:var(--text-900);font-weight:600}.package-detail__list-row--stacked{display:block}.package-detail__entry-title{color:var(--text-900);margin-bottom:10px;font-weight:700}.package-detail__seen-node{color:var(--text-900);margin:0;font-weight:600}.package-detail__seen-meta{color:var(--text-500);margin:4px 0 0;font-size:.9rem}.package-family__subtitle{color:var(--text-500);margin:8px 0 0}.package-family__row{border:1px solid var(--line-soft);background:var(--surface-card);border-radius:10px;justify-content:space-between;gap:16px;padding:12px 14px;display:flex}.package-tree{flex-direction:column;gap:10px;min-width:0;display:flex}.package-tree--embedded{border-left:1px solid var(--line-soft);padding-left:14px}.package-tree__embedded-head{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.package-tree__embedded-kind{color:var(--text-500);letter-spacing:.08em;text-transform:uppercase;font-size:.78rem;font-weight:700}.package-tree__headline{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.package-tree__kind{background:var(--surface-muted);color:var(--text-500);letter-spacing:.08em;text-transform:uppercase;border-radius:999px;padding:3px 8px;font-size:.72rem;font-weight:700}.package-tree__label{color:var(--text-900);overflow-wrap:anywhere;word-break:break-word;font-weight:600}.package-tree__note,.package-tree__meta,.package-tree__leaf,.package-tree__group-title{color:var(--text-500);font-size:.84rem}.package-tree__group,.package-tree__children,.package-tree__rows{flex-direction:column;gap:8px;display:flex}.package-tree__children{border-left:1px solid var(--line-soft);padding-left:14px}.package-tree__row{grid-template-columns:minmax(120px,180px) minmax(0,1fr);align-items:start;gap:12px;min-width:0;display:grid}.package-tree__row--stacked{align-items:stretch}.package-tree__row-label{color:var(--text-500);letter-spacing:.04em;text-transform:uppercase;padding-top:4px;font-size:.84rem;font-weight:700}.package-tree__choice{flex-direction:column;gap:8px;min-width:0;display:flex}.package-schema{border-left:1px solid var(--line-soft);flex-direction:column;gap:10px;min-width:0;padding-left:14px;display:flex}.package-schema__kind,.package-schema__group-title{color:var(--text-900);letter-spacing:.08em;text-transform:uppercase;font-size:.82rem;font-weight:800}.package-schema__label,.package-schema__choice-mode{color:var(--text-500);letter-spacing:.06em;text-transform:uppercase;font-size:.8rem;font-weight:700}.package-schema__label{overflow-wrap:anywhere;word-break:break-word;min-width:0}.package-schema__groups,.package-schema__group,.package-schema__rows{flex-direction:column;gap:8px;min-width:0;display:flex}.package-schema__row{grid-template-columns:minmax(120px,180px) minmax(0,1fr);align-items:start;gap:12px;min-width:0;display:grid}.package-schema__row--choice .package-schema__value{flex-direction:column;gap:4px;display:flex}.package-schema__group-value,.package-schema__value,.package-schema__empty{color:var(--text-900);overflow-wrap:anywhere;word-break:break-word;font-weight:600}.package-family__primary{min-width:0;font-weight:600}.package-family__meta{color:var(--text-500);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:18px;display:flex}.package-family__version,.package-family__size{color:var(--text-900)}@media (width<=720px){.contract-detail__summary-pair,.package-detail__summary-pair{grid-template-columns:minmax(0,1fr)}.package-detail__seen-row,.package-detail__list-row,.package-family__row,.package-family__meta{flex-direction:column;align-items:flex-start}}.contract-detail__summary-time-inline{color:var(--text-500);align-items:baseline;gap:8px;font-size:.9rem;display:inline-flex}.contract-detail__summary-time-date{color:var(--text-900);font-weight:600}.contract-detail__summary-time-clock{color:var(--text-500)}.update-detail__event-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.update-detail__event-item{min-width:0}.update-detail__event-item--template{grid-column:span 2}.update-detail__event-item--choice,.update-detail__event-item--contract{grid-column:1/-1}.update-detail__event-item:has(.update-detail__witnesses){grid-column:1/-1}.update-detail__event-item--exercise-data{grid-column:1/-1}.update-detail__witnesses{flex-direction:column;gap:2px;min-width:0;display:flex}.update-detail__exercise-data{flex-direction:column;gap:8px;display:flex}.update-detail__exercise-data-row{border:1px solid var(--line-soft);background:var(--surface-muted);border-radius:10px;justify-content:space-between;gap:16px;padding:10px 12px;display:flex}.update-detail__exercise-data-key{color:var(--text-500);text-transform:uppercase;letter-spacing:.06em;font-size:.85rem}.update-detail__exercise-data-value{color:var(--text-900);text-align:right;word-break:break-word;font-weight:600}.contract-detail__data{flex-direction:column;gap:8px;display:flex}.contract-detail__data-row{border:1px solid var(--line-soft);background:var(--surface-muted);border-radius:10px;justify-content:space-between;gap:16px;padding:10px 12px;display:flex}.contract-detail__data-key{color:var(--text-500);text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:.85rem}.contract-detail__data-value{color:var(--text-900);text-align:right;word-break:break-word;margin:0;font-weight:600}.contract-detail__link{color:var(--blue-600);font-weight:600;text-decoration:none}.contract-detail__link:hover{text-decoration:underline}.update-detail__witness{white-space:nowrap;word-break:normal;overflow-wrap:normal;display:block}.update-detail__empty{color:var(--text-500);margin:0;line-height:1.6}.dashboard__hero{background:0 0;border:none;border-radius:0;justify-content:space-between;align-items:center;gap:20px;padding:0;display:flex}.dashboard__hero-copy{max-width:36rem}.dashboard__controls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.dashboard__lede{color:var(--text-500);margin:6px 0 0;font-size:.95rem;line-height:1.55}.dashboard__search{border:1px solid var(--line-soft);background:var(--surface-card);width:min(420px,100%);min-width:260px;color:var(--text-900);box-sizing:border-box;border-radius:10px;padding:10px 14px;font-size:.95rem}.dashboard__search::placeholder{color:var(--text-500)}.dashboard__refresh{border:1px solid var(--line-soft);background:var(--surface-card);color:var(--text-700);cursor:pointer;border-radius:10px;padding:10px 14px;font-size:.95rem;font-weight:500;transition:border-color .16s,color .16s,background-color .16s}.dashboard__refresh:hover{border-color:var(--blue-600);color:var(--blue-600);background:var(--blue-50)}.dashboard__message{border:1px solid var(--line-soft);background:var(--surface-card);border-radius:12px;margin:0;padding:14px 16px}.dashboard__message--error{border-color:var(--error-border);color:var(--red-600)}.dashboard__grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.parties-page{flex-direction:column;gap:16px;display:flex}.parties-page__hero{margin-bottom:4px}.parties-page__section{flex-direction:column;gap:16px;display:flex}.parties-page__mode-switch,.parties-page__node-list{flex-wrap:wrap;gap:10px;display:flex}.parties-page__mode-button,.parties-page__node-button{border:1px solid var(--line-soft);background:var(--surface-card);min-height:42px;color:var(--text-700);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:10px;padding:10px 14px;font-size:.95rem;font-weight:600;transition:border-color .16s,color .16s,background-color .16s,box-shadow .16s;display:inline-flex}.parties-page__mode-button:hover,.parties-page__node-button:hover{border-color:var(--blue-600);color:var(--blue-600);background:var(--blue-50)}.parties-page__mode-button--active,.parties-page__node-button--active{border-color:var(--filter-active-border);background:var(--filter-active-bg);color:var(--blue-700);box-shadow:inset 0 0 0 1px #1f6feb14}.parties-page__node-button{white-space:nowrap;flex:none;width:auto;min-width:0}.parties-page__node-button:disabled,.parties-page__node-button--disabled{border-color:var(--line-soft);background:var(--surface-muted);color:var(--text-500);cursor:not-allowed;box-shadow:none}.parties-page__node-button:disabled:hover,.parties-page__node-button--disabled:hover{border-color:var(--line-soft);background:var(--surface-muted);color:var(--text-500)}.parties-page__node-label{font-weight:600}.parties-page__node-meta,.parties-page__results-copy{margin:0}.parties-page__node-meta{color:var(--text-500);font-size:.82rem;font-weight:500}.parties-page__results-header h3{margin-bottom:4px}.parties-page__party-link{justify-content:flex-start;text-decoration:none}.parties-page__results{padding-top:60px;position:relative}.parties-page__results--inline-actions{padding-top:24px}.results-section__source-pill{z-index:1;position:absolute;top:20px;right:20px}.contracts-page__results-header,.parties-page__results-header{justify-content:space-between;align-items:center;gap:16px;display:flex}.parties-page__namespace-filter{margin-top:4px}.parties-page__namespace-filter-grid{gap:16px;display:grid}.parties-page__namespace-filter-field{flex-direction:column;gap:8px;display:flex}.parties-page__namespace-filter-field--full{grid-column:1/-1}.parties-page__namespace-filter-field textarea,.parties-page__namespace-filter-field select{border:1px solid var(--line-soft);background:var(--surface-card);width:100%;color:var(--text-900);border-radius:10px;padding:10px 12px;font-size:.95rem;font-weight:500}.parties-page__namespace-filter-field textarea{resize:vertical;min-height:96px}.parties-page__namespace-filter-actions{align-items:center;gap:12px;margin-top:16px;display:flex}.results-header__actions{align-items:center;gap:12px;display:inline-flex}.tokens-page,.tokens-page__section{flex-direction:column;gap:16px;display:flex}.tokens-page__known-list{flex-direction:column;gap:12px;display:flex}.tokens-page__known-card{border:1px solid var(--line-soft);background:var(--surface-card);color:inherit;border-radius:12px;justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;text-decoration:none;display:flex}.tokens-page__known-card:hover{border-color:var(--line-strong);background:color-mix(in srgb, var(--surface-card) 84%, var(--surface-muted) 16%)}.tokens-page__known-main{flex-direction:column;gap:6px;min-width:0;display:flex}.tokens-page__known-main h4{color:var(--text-900);margin:0;font-size:1rem}.tokens-page__row{border-top:1px solid var(--line-soft);grid-template-columns:minmax(130px,1fr) minmax(90px,.6fr) minmax(126px,.84fr) minmax(100px,.78fr) minmax(100px,.78fr) minmax(140px,.9fr);align-items:center;gap:16px;padding:16px 20px;display:grid}.tokens-page__row--head{background:var(--surface-muted);color:var(--text-500);letter-spacing:.06em;text-transform:uppercase;border-top:none;font-size:.82rem;font-weight:700}.tokens-page__cell{min-width:0;color:var(--text-700);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tokens-page__token{white-space:normal;flex-direction:column;gap:4px;display:flex}.tokens-page__token-link{flex-direction:column;gap:4px;min-width:0;display:flex}.tokens-page__nodes{white-space:normal;flex-direction:column;gap:4px;display:flex}.tokens-page__nodes-item{display:block}.tokens-page__token strong{color:var(--text-900);font-size:.95rem}.tokens-page__token span{color:var(--text-500);font-size:.82rem}.tokens-page__movement-pill{border:1px solid var(--filter-chip-border);background:var(--filter-chip-bg);max-width:100%;color:var(--text-700);letter-spacing:.03em;white-space:nowrap;border-radius:999px;align-self:flex-start;padding:4px 10px;font-size:.72rem;font-weight:700;display:inline-flex}.tokens-page__time{white-space:normal;flex-direction:column;gap:2px;display:flex}.token-detail__sections{grid-template-columns:1fr}.token-detail__section{grid-column:1/-1}.token-detail__holders-table,.token-detail__transfers-table{border:1px solid var(--line-soft);background:var(--surface-card);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}.token-detail__holders-row{border-top:1px solid var(--line-soft);grid-template-columns:minmax(220px,1.4fr) minmax(120px,.8fr) minmax(180px,1fr);align-items:center;gap:16px;padding:16px 20px;display:grid}.token-detail__transfers-row{border-top:1px solid var(--line-soft);grid-template-columns:minmax(130px,1fr) minmax(126px,.84fr) minmax(100px,.78fr) minmax(100px,.78fr) minmax(140px,.9fr);align-items:center;gap:16px;padding:16px 20px;display:grid;position:relative}.token-detail__holders-row:first-child,.token-detail__transfers-row:first-child{border-top:none}.token-detail__holders-row--head,.token-detail__transfers-row--head{background:var(--surface-muted);color:var(--text-500);letter-spacing:.06em;text-transform:uppercase;font-size:.82rem;font-weight:700}.token-detail__cell{min-width:0;color:var(--text-700)}.token-detail__party,.token-detail__nodes{flex-direction:column;gap:4px;display:flex}.token-detail__party-link{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.token-detail__party .contract-detail__link,.token-detail__nodes,.token-detail__cell.tokens-page__time{z-index:1;position:relative}.token-detail__amount{white-space:nowrap}.token-detail__row-link{z-index:0;position:absolute;inset:0}@media (width<=720px){.parties-page__results{padding-top:72px}.results-section__source-pill{top:16px;right:16px}}.query-source-pill{border:1px solid var(--line-soft);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;min-height:34px;padding:0 12px;font-size:.8rem;font-weight:800;display:inline-flex}.query-source-pill--pqs{border-color:var(--filter-active-border);background:var(--filter-active-bg);color:var(--blue-700)}.query-source-pill--grpc.query-source-pill--fallback{border-color:color-mix(in srgb, var(--amber-600) 58%, var(--line-soft));background:color-mix(in srgb, var(--amber-600) 16%, var(--surface-card));color:var(--amber-600)}.contracts-table__row{grid-template-columns:minmax(220px,1.7fr) minmax(200px,1.1fr) minmax(170px,.9fr);align-items:center}.contracts-table__row--with-node{grid-template-columns:minmax(140px,.9fr) minmax(220px,1.55fr) minmax(180px,1fr) minmax(170px,.85fr)}.contracts-table__contract-id{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.contracts-table__cell{min-width:0;color:var(--text-700)}.contracts-table__template{flex-direction:column;gap:2px;display:flex}.contracts-table__template-namespace,.contracts-table__template-name{display:block}.contracts-table__template-namespace{color:var(--text-700)}.contracts-table__template-name{color:var(--text-900);font-weight:600}.node-card{border:1px solid var(--line-soft);background:var(--surface-card);color:inherit;box-shadow:var(--shadow-soft);border-radius:14px;flex-direction:column;gap:18px;min-height:148px;padding:20px;text-decoration:none;transition:border-color .16s,box-shadow .16s;display:flex}.node-card:hover{border-color:var(--blue-600);box-shadow:0 14px 28px #1f6feb14}.node-card__topline{justify-content:space-between;align-items:center;gap:12px;display:flex}.node-card__eyebrow{color:var(--text-500);text-transform:uppercase;letter-spacing:.12em;margin:0;font-size:.72rem}.node-card__state-dot{width:10px;height:10px;box-shadow:none;border-radius:999px}.node-card__state-dot[data-status=healthy]{background:var(--green-600)}.node-card__state-dot[data-status=degraded]{background:var(--amber-600)}.node-card__state-dot[data-status=down]{background:var(--red-600)}.node-card__body{flex-direction:column;gap:8px;display:flex}.node-card__status{color:var(--text-500);margin:0;font-size:.95rem;font-weight:600}.node-card__status[data-status=healthy]{color:var(--green-600)}.node-card__status[data-status=degraded]{color:var(--amber-600)}.node-card__status[data-status=down]{color:var(--red-600)}.node-page{position:relative}.node-page__rail{position:absolute;top:4px;left:0;transform:translate(-120%)}.node-page__main{width:100%;min-width:0;margin:0}.node-detail__content{flex-direction:column;gap:18px;max-width:100%;display:flex}.node-detail__back{border:1px solid var(--back-button-border);background:var(--back-button-bg);width:40px;height:40px;color:var(--blue-600);box-shadow:var(--back-button-shadow);border-radius:999px;justify-content:center;align-items:center;font-size:1.1rem;font-weight:700;line-height:1;text-decoration:none;transition:border-color .16s,background-color .16s,transform .16s;display:inline-flex}.node-detail__back:hover{border-color:var(--blue-600);background:var(--blue-50);transform:translate(-1px)}.node-detail__hero{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.node-detail__sections{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-width:0;display:grid}.node-detail__section{border:1px solid var(--line-soft);background:var(--surface-muted);border-radius:12px;min-width:0;padding:20px}.node-detail__section h3{margin-bottom:16px}.node-detail__section--half{grid-column:span 1}.node-detail__message{border:1px solid var(--line-soft);background:var(--surface-card);border-radius:12px;margin:0;padding:14px 16px}.node-detail__message--error{border-color:var(--error-border);color:var(--red-600)}.node-detail__section--packages,.node-detail__section--participant-status{grid-column:1/-1}.node-participant-status{flex-direction:column;gap:16px;min-width:0;display:flex}.node-participant-status__block{flex-direction:column;gap:10px;min-width:0;display:flex}.node-participant-status__mini-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.node-synchronizers{flex-direction:column;gap:10px;display:flex}.node-synchronizers__row{border:1px solid var(--line-soft);background:var(--surface-card);border-radius:10px;padding:14px 16px}.node-synchronizers__grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.node-synchronizers__grid>div{min-width:0}.node-packages{flex-direction:column;gap:16px;display:flex}.node-packages__group{flex-direction:column;gap:10px;min-width:0;display:flex}.node-packages__title{color:var(--text-900);margin:0;font-size:1rem}.node-packages__list{flex-direction:column;gap:8px;min-width:0;display:flex}.node-packages__row{border:1px solid var(--line-soft);background:var(--surface-card);border-radius:10px;justify-content:space-between;gap:16px;min-width:0;padding:10px 12px;display:flex}.node-packages__primary{flex-wrap:wrap;align-items:center;gap:12px;min-width:0;display:flex}.node-packages__version{min-width:72px;color:var(--text-900);align-items:center;font-weight:700;display:inline-flex}.node-packages__timestamp{color:var(--text-500)}.detail-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:14px;min-width:0;display:grid}.detail-grid>div{min-width:0}.detail-grid dt{color:var(--text-500);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;font-size:.82rem}.detail-grid dd{color:var(--text-900);overflow-wrap:anywhere;word-break:break-word;margin:0;line-height:1.5}.update-detail__summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.update-detail__summary-item{min-width:0}.update-detail__summary-item--parties{grid-column:1/-1}.status-pill{text-transform:capitalize;border:1px solid #0000;border-radius:999px;padding:6px 10px;font-size:.85rem;font-weight:600}.status-pill[data-status=healthy]{background:var(--status-healthy-bg);color:var(--green-600);border-color:var(--status-healthy-border)}.status-pill[data-status=degraded]{background:var(--status-degraded-bg);color:var(--amber-600);border-color:var(--status-degraded-border)}.status-pill[data-status=down]{background:var(--status-down-bg);color:var(--red-600);border-color:var(--status-down-border)}@media (width<=720px){.app-titlebar{flex-direction:column;align-items:flex-start;padding:14px 0}.app-header__inner,.app-frame{padding-left:18px;padding-right:18px}.app-toolbar{flex-direction:column;align-items:stretch;width:100%}.app-nav{justify-content:flex-start}.app-search{width:100%;min-width:0}.activity-home__hero,.dashboard__hero{flex-direction:column;align-items:stretch}.activity-home__controls,.dashboard__controls{justify-content:flex-start}.dashboard__search{width:100%;min-width:0}.activity-home__grid{grid-template-columns:1fr}.activity-panel__footer{flex-direction:column}.node-updates__row{grid-template-columns:1fr;gap:8px}.node-page{flex-direction:column;gap:14px;display:flex}.node-detail__sections{grid-template-columns:1fr}.node-page__rail{justify-content:flex-start;display:flex;position:static;transform:none}.node-page__main{width:100%;margin:0}.node-detail__hero{flex-direction:column}.node-packages__row{flex-direction:column;align-items:flex-start}}