chamba 0.7.0 → 0.8.0

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 (120) hide show
  1. package/LICENSE +53 -14
  2. package/README.md +28 -8
  3. package/dist/commands/advanced.js +7 -278
  4. package/dist/commands/dev.js +11 -612
  5. package/dist/commands/doctor.js +1 -29
  6. package/dist/commands/menu.js +1 -80
  7. package/dist/commands/onboard.js +6 -230
  8. package/dist/commands/settings.js +15 -349
  9. package/dist/lib/agent-commands.js +2 -0
  10. package/dist/lib/agent-context.js +6 -210
  11. package/dist/lib/browser.js +1 -40
  12. package/dist/lib/chamba-yaml.js +10 -191
  13. package/dist/lib/constants.js +1 -125
  14. package/dist/lib/dockerfile-builder.js +41 -261
  15. package/dist/lib/env.js +2 -78
  16. package/dist/lib/git-env.js +1 -21
  17. package/dist/lib/global-config.js +4 -66
  18. package/dist/lib/pnpm-store.js +1 -19
  19. package/dist/lib/ports.js +1 -210
  20. package/dist/lib/safe-rm.js +1 -36
  21. package/dist/lib/sessions.js +2 -34
  22. package/dist/lib/shadows.js +1 -176
  23. package/dist/lib/skills.js +2 -0
  24. package/dist/lib/templates.js +1 -0
  25. package/dist/lib/webterm.js +1 -305
  26. package/dist/lib/workspace-identity.js +4 -260
  27. package/package.json +4 -4
  28. package/templates/Dockerfile +12 -19
  29. package/templates/claude-statusline.sh +5 -7
  30. package/templates/context/baseline.md +2 -0
  31. package/templates/pane-apps/client/assets/c-BNa-DeUl.json +3552 -0
  32. package/templates/pane-apps/client/assets/cpp-B-T4NRoH.json +20239 -0
  33. package/templates/pane-apps/client/assets/csharp-BbxHChhA.json +6010 -0
  34. package/templates/pane-apps/client/assets/css-CWCxuwmz.json +1860 -0
  35. package/templates/pane-apps/client/assets/diff-B-2N89g8.json +154 -0
  36. package/templates/pane-apps/client/assets/docker-DWTvYW26.json +103 -0
  37. package/templates/pane-apps/client/assets/files-D0nJgFAA.js +12 -0
  38. package/templates/pane-apps/client/assets/files-h0K1vZyQ.css +1 -0
  39. package/templates/pane-apps/client/assets/go-B2hyYeNg.json +3156 -0
  40. package/templates/pane-apps/client/assets/graphql-Z6Id2aNO.json +1292 -0
  41. package/templates/pane-apps/client/assets/html-BtzvlIfu.json +2627 -0
  42. package/templates/pane-apps/client/assets/ini-Bn3Twap1.json +108 -0
  43. package/templates/pane-apps/client/assets/java-C7t2dwLO.json +1885 -0
  44. package/templates/pane-apps/client/assets/javascript-DuC2v0C0.json +5996 -0
  45. package/templates/pane-apps/client/assets/json-CwdkWeV5.json +206 -0
  46. package/templates/pane-apps/client/assets/jsonc-MYWDbTU3.json +206 -0
  47. package/templates/pane-apps/client/assets/jsx-Cn8EZuIC.json +5996 -0
  48. package/templates/pane-apps/client/assets/kotlin-CFNOz1gw.json +580 -0
  49. package/templates/pane-apps/client/assets/make-BVnlFCcl.json +629 -0
  50. package/templates/pane-apps/client/assets/markdown-B4Xk2WM_.json +3263 -0
  51. package/templates/pane-apps/client/assets/php-CAQzQmmI.json +4188 -0
  52. package/templates/pane-apps/client/assets/python-CYQee8m4.json +4174 -0
  53. package/templates/pane-apps/client/assets/reviews-BsoGZ35r.css +1 -0
  54. package/templates/pane-apps/client/assets/reviews-iW0Mbn4e.js +153 -0
  55. package/templates/pane-apps/client/assets/ruby-D7R58tus.json +3114 -0
  56. package/templates/pane-apps/client/assets/rust-BFBbFiei.json +1103 -0
  57. package/templates/pane-apps/client/assets/scss-TQRhBkPG.json +1874 -0
  58. package/templates/pane-apps/client/assets/shellscript-DieAkC4W.json +2375 -0
  59. package/templates/pane-apps/client/assets/specs-D9z3neR-.js +13 -0
  60. package/templates/pane-apps/client/assets/sql-Bxd030LV.json +634 -0
  61. package/templates/pane-apps/client/assets/toml-ChrKGzsV.json +430 -0
  62. package/templates/pane-apps/client/assets/tsx-D2e90MFw.json +5996 -0
  63. package/templates/pane-apps/client/assets/typescript-DonXQ_n1.json +5747 -0
  64. package/templates/pane-apps/client/assets/xml-B17r2RXF.json +382 -0
  65. package/templates/pane-apps/client/assets/yaml-CKn4h1zy.json +627 -0
  66. package/templates/pane-apps/client/reviews/index.html +15 -0
  67. package/templates/pane-apps/client/specs/index.html +3 -2
  68. package/templates/pane-apps/server/reviews.mjs +20 -0
  69. package/templates/pane-apps/server/specs.mjs +5 -1588
  70. package/templates/skills/chamba-statusline/SKILL.md +7 -19
  71. package/templates/skills/dx-review/SKILL.md +123 -0
  72. package/templates/skills/dx-review/references/acts.md +162 -0
  73. package/templates/skills/dx-spec/SKILL.md +223 -27
  74. package/templates/skills/dx-spec/references/principles-template.md +2 -0
  75. package/templates/skills/dx-spec/references/review-guide.md +4 -50
  76. package/templates/skills/dx-spec/references/spec-guide.md +24 -4
  77. package/templates/skills/dx-spec/references/stages.md +143 -58
  78. package/templates/skills/dx-spec-execute/SKILL.md +148 -35
  79. package/templates/startup.mjs +10 -4
  80. package/templates/tool-helper.sh +166 -0
  81. package/templates/webterm/README.md +60 -26
  82. package/templates/webterm/color.js +61 -0
  83. package/templates/webterm/config.js +35 -4
  84. package/templates/webterm/context/claude.md +0 -1
  85. package/templates/webterm/public/app/alerts.js +4 -4
  86. package/templates/webterm/public/app/anchored.js +81 -0
  87. package/templates/webterm/public/app/connection.js +9 -0
  88. package/templates/webterm/public/app/dom.js +2 -0
  89. package/templates/webterm/public/app/frames.js +51 -17
  90. package/templates/webterm/public/app/main.js +22 -8
  91. package/templates/webterm/public/app/new-session.js +13 -41
  92. package/templates/webterm/public/app/palette.js +58 -0
  93. package/templates/webterm/public/app/pane-shape.js +167 -0
  94. package/templates/webterm/public/app/pane-shell.js +199 -134
  95. package/templates/webterm/public/app/pane.js +33 -24
  96. package/templates/webterm/public/app/reviews-host.js +15 -0
  97. package/templates/webterm/public/app/specs-host.js +12 -218
  98. package/templates/webterm/public/app/state.js +5 -0
  99. package/templates/webterm/public/app/tabs.js +6 -2
  100. package/templates/webterm/public/app/theme.js +75 -27
  101. package/templates/webterm/public/app/tool-host.js +302 -0
  102. package/templates/webterm/public/app/workspace-color.js +192 -0
  103. package/templates/webterm/public/index.html +17 -3
  104. package/templates/webterm/public/styles.css +143 -21
  105. package/templates/webterm/server.js +198 -150
  106. package/templates/webterm/tools/commands.js +61 -0
  107. package/templates/webterm/tools/index.js +25 -0
  108. package/templates/webterm/tools/mount.js +337 -0
  109. package/templates/webterm/tools/paths.js +34 -0
  110. package/templates/webterm/tools/reviews.js +133 -0
  111. package/templates/webterm/tools/specs.js +154 -0
  112. package/templates/webterm/typed-line.js +70 -7
  113. package/templates/context/context-usage.md +0 -1
  114. package/templates/context-usage.sh +0 -266
  115. package/templates/pane-apps/client/assets/specs-B1970L17.css +0 -1
  116. package/templates/pane-apps/client/assets/specs-cEee_SPn.js +0 -23
  117. package/templates/skills/dx-spec-config/SKILL.md +0 -313
  118. package/templates/skills/dx-spec-config/references/principles-template.md +0 -12
  119. package/templates/specs.sh +0 -106
  120. package/templates/webterm/specs.js +0 -358
@@ -0,0 +1 @@
1
+ :root{--rv-accent-bg:#58a6ff1f;--rv-ok-bg:#3fb9501f;--rv-warn-bg:#d2992224;--rv-issue:#f85149;--rv-add-bg:#12291b;--rv-add:#7ee787;--rv-del-bg:#2b1719;--rv-del:#ffa198;--rv-btn-text:#0d1117;--rv-shadow:#00000073}[data-theme=light]{--rv-accent-bg:#0969da1a;--rv-ok-bg:#1a7f371a;--rv-warn-bg:#9a67001f;--rv-issue:#cf222e;--rv-add-bg:#dafbe1;--rv-add:#116329;--rv-del-bg:#ffebe9;--rv-del:#82071e;--rv-btn-text:#fff;--rv-shadow:#1f23282e}.workspace.is-review .stage.has-bar .theme-toggle{background:0 0;top:8px;right:10px}.rv-mono{font-family:ui-monospace,Menlo,monospace;font-size:12px}.nav-list button.rv-row{padding:6px 14px 7px;display:block}.nav-list button.rv-row:hover{color:inherit;background:var(--sunken)}.rv-row:disabled{cursor:default;opacity:.6}.rv-row-top{align-items:flex-start;gap:6px;display:flex}.rv-row-name{overflow-wrap:anywhere;flex:1;min-width:0;font-weight:600}.rv-row-chip{border:1px solid var(--border);color:var(--muted);border-radius:9px;flex:none;margin-top:2px;padding:0 6px;font-size:10.5px;line-height:15px}.rv-row-chip.is-merged{border-color:var(--accent);color:var(--accent)}.rv-bar{background:var(--border);border-radius:2px;height:3px;margin-top:5px;overflow:hidden}.rv-bar i{background:var(--ok);height:100%;display:block}.rv-row-state{color:var(--muted);margin-top:4px;font-size:11px}.rv-row-note{color:var(--muted);margin-top:2px;font-size:11px;font-style:italic}.rv-row-ended{color:var(--muted);margin-top:2px;font-size:11.5px}.rv-dot{background:var(--accent);vertical-align:middle;border-radius:50%;width:7px;height:7px;margin-right:5px;display:inline-block}@media (prefers-reduced-motion:no-preference){.rv-dot{animation:1.6s infinite rv-pulse}}@keyframes rv-pulse{0%,to{opacity:1}50%{opacity:.3}}.nav-list button.rv-qi{color:var(--muted);white-space:nowrap;align-items:center;gap:7px;padding:4px 14px 4px 12px;font-size:12px;display:flex;overflow:hidden}.nav-list button.rv-qi[aria-current=true]{color:var(--fg)}.rv-qi:disabled{opacity:.4;cursor:default}.rv-qi-mark{text-align:center;flex:none;justify-content:center;align-items:center;width:14px;display:inline-flex}.rv-qi-mark.is-seen{color:var(--ok)}.rv-qi-mark.is-thread{color:var(--accent)}.rv-qi-mark.is-pending{color:var(--muted)}.rv-qi-ud{background:var(--ok);border-radius:50%;flex:none;width:6px;height:6px}.rv-qi-notes{flex:none;align-items:center;gap:3px;display:inline-flex}.rv-qi-nd{background:var(--accent);opacity:.8;border-radius:50%;width:7px;height:7px;display:inline-block}.rv-qi-nd.is-attention{background:var(--warn)}.rv-qi-nd.is-issue{background:var(--rv-issue);opacity:1}.rv-qi-nc{color:var(--muted);font-size:10.5px}.rv-qi-file{text-overflow:ellipsis;font-family:ui-monospace,Menlo,monospace;font-size:11.5px;overflow:hidden}.rv-qi-file em{color:var(--muted);font-family:inherit;font-size:11px;font-style:normal}.rv-screen{flex-direction:column;height:100%;min-height:0;display:flex}.rv-head{border-bottom:1px solid var(--border);background:var(--panel);align-items:center;gap:10px;padding:8px 40px 8px 12px;display:flex}.rv-head h2{white-space:nowrap;margin:0;font-size:14px;font-weight:600}.rv-head-what{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.rv-grow{flex:1}.rv-chip{white-space:nowrap;border:1px solid #0000;border-radius:10px;padding:0 7px;font-size:11px;line-height:18px;display:inline-block}.rv-chip.is-you{background:var(--rv-warn-bg);color:var(--warn);border-color:var(--warn)}.rv-chip.is-ready{background:var(--rv-ok-bg);color:var(--ok);border-color:var(--ok)}.rv-chip.is-ended{background:var(--ok);color:var(--rv-btn-text)}.rv-agentbar{border-bottom:1px solid var(--border);background:var(--rv-accent-bg);align-items:center;gap:12px;padding:8px 12px;display:flex}.rv-agentbar b{color:var(--accent);white-space:nowrap}.rv-say{flex:1;min-width:0}.rv-say .rv-late{color:var(--warn)}.rv-status{border-top:1px solid var(--border);background:var(--panel);color:var(--muted);white-space:nowrap;align-items:center;gap:12px;padding:6px 12px;font-size:12px;display:flex}.rv-loops{align-items:center;gap:4px;display:inline-flex}.rv-loops svg{width:14px;height:14px;display:block}.rv-prog{background:var(--border);border-radius:3px;width:150px;height:6px;overflow:hidden}.rv-prog i{background:var(--ok);height:100%;display:block}.rv-fact{color:var(--fg);align-items:center;gap:5px;display:inline-flex}.rv-fact i{background:var(--muted);border-radius:50%;width:6px;height:6px;display:inline-block}.rv-fact.is-issue i{background:var(--rv-issue)}.rv-fact.is-attention i,.rv-fact.is-you i,.rv-fact.is-changed i{background:var(--warn)}.rv-fact.is-reply i{background:var(--ok)}.rv-log-toggle{all:unset;color:var(--muted);cursor:pointer;font:inherit;align-items:center;gap:5px;font-size:12px;display:inline-flex}.rv-log{border-top:1px solid var(--border);background:var(--bg);max-height:40%;color:var(--muted);padding:6px 12px 6px 30px;font-size:12px;line-height:1.7;overflow:auto}.rv-log b{color:var(--fg);font-weight:500}.rv-pills{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:6px;padding:6px 12px;display:flex}.rv-pill{all:unset;border:1px solid var(--border);background:var(--panel);color:var(--muted);cursor:pointer;font:inherit;border-radius:12px;padding:1px 9px;font-size:12px}.rv-badge{border-left:1px solid var(--border);align-items:center;gap:6px;margin-left:6px;padding-left:6px;display:inline-flex}.rv-badge-one{align-items:center;gap:3px;font-size:11px;display:inline-flex}.rv-badge-one i{background:var(--warn);border-radius:50%;width:6px;height:6px;display:inline-block}.rv-badge-one.is-issue i{background:var(--rv-issue)}.rv-pill[aria-pressed=true]{color:var(--fg);border-color:var(--accent);background:var(--rv-accent-bg)}.rv-pill.is-waiting{color:#0000;background:var(--border);border-color:var(--border);cursor:default;min-width:90px}.rv-body{flex:1;min-height:0;display:flex;position:relative}.rv-feed{flex:1;min-width:0;overflow:auto}.rv-fgrid{grid-template-columns:minmax(0,1fr) 300px;align-items:start;column-gap:12px;padding:10px 0 10px 12px;display:grid;position:relative}.rv-fgrid.is-shut{grid-template-columns:minmax(0,1fr) 22px;padding-right:4px}.rv-fmain{flex-direction:column;gap:10px;min-width:0;display:flex}.rv-gcard{border:1px solid var(--border);background:var(--panel);border-radius:8px;padding:10px 12px}.rv-gcard-top{align-items:center;gap:8px;display:flex}.rv-gcard h3{margin:0;font-size:13px;font-weight:600}.rv-facts{color:var(--muted);font-size:12px}.rv-gcard p{margin:6px 0}.rv-gcard ul{color:var(--muted);margin:6px 0 0;padding-left:18px;font-size:12px}.rv-gcard-acts{gap:8px;margin-top:6px;display:flex}.rv-section{flex-direction:column;gap:10px;display:flex}.rv-hunk{border:1px solid var(--border);background:var(--panel);border-radius:8px;min-width:0;position:relative}.rv-fh{border-bottom:1px solid var(--border);color:var(--muted);align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex}.rv-fh .rv-path{color:var(--fg);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.rv-fh .rv-path i{color:var(--muted);font-style:normal}.rv-also{border:1px solid var(--border);white-space:nowrap;border-radius:9px;padding:0 6px;font-size:11px}.rv-changed{border:1px solid var(--warn);background:var(--rv-warn-bg);color:var(--warn);white-space:nowrap;border-radius:9px;padding:0 6px;font-size:10.5px;line-height:15px}.rv-diff{margin:0;padding:4px 0 6px;overflow-x:auto}.rv-hd{color:var(--muted);background:var(--rv-accent-bg);padding:2px 10px 4px;font-family:ui-monospace,Menlo,monospace;font-size:12px}.rv-l{white-space:pre;grid-template-columns:34px 34px 1fr;font-family:ui-monospace,Menlo,monospace;font-size:12px;line-height:20px;display:grid}.rv-l .rv-ln{all:unset;box-sizing:border-box;color:var(--muted);text-align:right;font:inherit;padding-right:8px;font-size:11px;display:block}.rv-l button.rv-ln{cursor:pointer}.rv-l button.rv-ln:hover{color:var(--fg);background:var(--sunken)}.rv-l.is-picked{box-shadow:inset 0 0 0 1px var(--accent)}.rv-l,.rv-fh,.rv-folded{position:relative}.rv-fh.is-note:before,.rv-folded.is-note:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;margin-top:-3px;position:absolute;top:50%;left:3px}.rv-fh.is-note.is-attention:before,.rv-folded.is-note.is-attention:before{background:var(--warn)}.rv-fh.is-note.is-issue:before,.rv-folded.is-note.is-issue:before{background:var(--rv-issue)}.rv-nl{background:var(--accent);width:3px;position:absolute;top:0;bottom:0}.rv-nl.is-lane0{left:2px}.rv-nl.is-lane1{left:7px}.rv-nl.is-attention{background:var(--warn)}.rv-nl.is-issue{background:var(--rv-issue)}.rv-nl.is-first{border-radius:2px 2px 0 0;top:3px}.rv-nl.is-last{border-radius:0 0 2px 2px;bottom:3px}.rv-nl.is-first.is-last{border-radius:2px}.rv-l span:last-child{padding-left:10px}.rv-l.is-add{background:var(--rv-add-bg);color:var(--rv-add)}.rv-l.is-del{background:var(--rv-del-bg);color:var(--rv-del)}.rv-expand{background:var(--sunken);gap:10px;padding:2px 10px;font-size:11.5px;display:flex}.rv-trouble{color:var(--warn);margin:0;padding:4px 10px 6px;font-size:12px}.rv-folded{border:1px solid var(--border);background:var(--panel);min-width:0;color:var(--muted);border-radius:8px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex}.rv-folded .rv-mono{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rv-ok{color:var(--ok)}.rv-link{all:unset;color:var(--accent);cursor:pointer;font:inherit;font-size:12px}.rv-fh .rv-link{white-space:nowrap;border:1px solid var(--border);border-radius:999px;flex:none;padding:1px 8px;font-size:11.5px}.rv-fh .rv-link:hover{border-color:var(--accent)}.rv-fh .rv-link:disabled{opacity:.5;cursor:default}.rv-state{font-size:11.5px}.rv-state.is-seen{color:var(--ok)}button.rv-state{all:unset;white-space:nowrap;cursor:pointer;font:inherit;color:var(--ok);border:1px solid #0000;border-radius:999px;flex:none;padding:1px 8px;font-size:11.5px}button.rv-state .rv-state-off{display:none}button.rv-state:hover,button.rv-state:focus-visible{border-color:var(--border);color:var(--fg)}button.rv-state:hover .rv-state-on,button.rv-state:focus-visible .rv-state-on{display:none}button.rv-state:hover .rv-state-off,button.rv-state:focus-visible .rv-state-off{display:inline}.rv-fab{background:var(--accent);width:30px;height:30px;color:var(--rv-btn-text);cursor:pointer;box-shadow:0 3px 10px var(--rv-shadow);opacity:0;border:0;border-radius:50%;justify-content:center;align-items:center;font-size:18px;font-weight:600;transition:opacity .12s;display:flex;position:absolute;bottom:10px;right:10px}.rv-hunk:hover .rv-fab,.rv-hunk:focus-within .rv-fab{opacity:1}.rv-fabmenu{background:var(--panel);border:1px solid var(--border);box-shadow:0 10px 24px var(--rv-shadow);z-index:3;border-radius:8px;min-width:170px;padding:4px;position:absolute;bottom:10px;right:46px}.rv-fabmenu button{all:unset;text-align:left;cursor:pointer;width:100%;font:inherit;border-radius:5px;padding:5px 9px;font-size:12.5px;display:block}.rv-fabmenu button.rv-seen{color:var(--ok);font-weight:600}.rv-fabmenu button:hover:not(:disabled){background:var(--sunken)}.rv-fabmenu button:disabled{opacity:.5;cursor:default}.rv-fabmenu hr{border:0;border-top:1px solid var(--border);margin:3px 0}.rv-nt{border:1px solid var(--border);background:var(--panel);border-radius:8px}.rv-nt>summary{color:var(--muted);cursor:pointer;padding:6px 10px;font-size:12px}.rv-nt-names{margin-left:8px;font-family:ui-monospace,Menlo,monospace;font-size:11.5px}.rv-nt-row{border-top:1px solid var(--border);padding:6px 10px}.rv-nt-head{align-items:center;gap:8px;min-width:0;font-size:12px;display:flex}.rv-nt-images{gap:12px;padding:8px 0 2px;display:flex}.rv-nt-images figure{color:var(--muted);margin:0;font-size:11px}.rv-nt-images img{border:1px solid var(--border);background:var(--sunken);border-radius:4px;max-width:220px;max-height:160px;display:block}.rv-waiting{min-height:70px}.rv-skel{background:var(--border);opacity:.7;border-radius:3px;height:12px;margin:8px 0}.rv-skel.is-narrow{width:40%}.rv-skel.is-wide{width:80%}.rv-skel.is-half{width:60%}.rv-nrail{border-left:1px solid var(--border);background:var(--panel);color:var(--muted);align-self:stretch;padding:10px 8px;font-size:11.5px;position:relative}.rv-nrail.is-collapsed{text-align:center;padding:8px 2px}.rv-nrail-head{text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:6px;margin:0;padding:0 2px 4px;font-size:10.5px;display:flex}.rv-nrail-top{padding-bottom:6px}.rv-nstrip{flex-wrap:wrap;align-items:center;gap:4px;padding:2px 0;display:flex}.rv-npill{all:unset;border:1px solid var(--border);font:inherit;color:var(--muted);cursor:pointer;white-space:nowrap;border-radius:10px;padding:0 7px;font-size:10.5px;line-height:16px}.rv-npill[aria-pressed=true]{color:var(--fg);border-color:var(--accent);background:var(--rv-accent-bg)}.rv-npill.is-attention[aria-pressed=true]{border-color:var(--warn);background:var(--rv-warn-bg)}.rv-npill.is-issue[aria-pressed=true]{border-color:var(--rv-issue)}.rv-nelse{color:var(--muted);margin:4px 0 0;padding:0 2px;font-size:10.5px}.rv-note{border-left:2px solid var(--accent);background:var(--sunken);color:var(--fg);border-radius:0 4px 4px 0;padding:3px 7px}.rv-note.is-attention{border-left-color:var(--warn)}.rv-note.is-issue{border-left-color:var(--rv-issue)}.rv-note.is-current{box-shadow:0 0 0 1px var(--accent)}.rv-note.is-aside{opacity:.55}.rv-note-kind{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-right:5px;font-size:10px;display:inline-block}.rv-note.is-attention .rv-note-kind{color:var(--warn)}.rv-note.is-issue .rv-note-kind{color:var(--rv-issue)}.rv-note-acts{align-items:center;gap:8px;margin-top:4px;font-size:10.5px;display:flex}.rv-note-act{all:unset;border:1px solid var(--border);font:inherit;color:var(--fg);cursor:pointer;white-space:nowrap;border-radius:4px;padding:0 6px;font-size:10.5px;line-height:16px}.rv-note-act:hover{background:var(--panel)}.rv-note-act.is-fix{border-color:var(--rv-issue)}.rv-note-aside{color:var(--muted);font-style:italic}.rv-nnext{color:var(--muted);margin:0;font-size:10.5px;position:absolute;bottom:8px;left:8px;right:8px}.rv-note.is-waiting{border-left-color:var(--border)}.rv-note small{color:var(--muted);margin-top:1px;font-size:10.5px;display:block}.rv-note-ln{color:var(--muted);font-size:10.5px;display:block}.rv-note-txt{display:block}.rv-note-txt.is-clamped{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.rv-nfold{white-space:nowrap;text-overflow:ellipsis;font-size:11px;line-height:1.5;overflow:hidden}.rv-nfold:before{content:"▸ ";font-size:10px}.rv-nfold.is-attention{border-left:2px solid var(--warn);padding-left:6px}.rv-nfold.is-issue{border-left:2px solid var(--rv-issue);padding-left:6px}.rv-nrail .rv-note,.rv-nrail .rv-nfold{margin:0;position:absolute;left:8px;right:8px}.rv-nrail .rv-note.is-waiting{position:static}.rv-wire{pointer-events:none;z-index:4;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.rv-wire path{fill:none;stroke:var(--accent);stroke-width:1.5px}.rv-wire path.is-attention{stroke:var(--warn)}.rv-wire path.is-issue{stroke:var(--rv-issue)}.rv-form{max-width:640px;margin:28px auto;padding:0 20px;overflow:auto}.rv-form h2{margin:0 0 4px;font-size:18px;font-weight:600}.rv-form h3{margin:22px 0 4px;font-size:15px;font-weight:600}.rv-form-row{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.rv-form-row h3{margin-bottom:4px}.rv-opt.is-waiting{color:var(--muted);cursor:default;border-style:dashed;align-items:center;gap:10px;padding:12px 14px;display:flex}.rv-lead{color:var(--muted);margin:0 0 14px}.rv-opt{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:6px;grid-template-columns:16px minmax(0,1fr);gap:6px 8px;margin-bottom:6px;padding:8px 10px;display:grid;position:relative}.rv-opt.is-chosen{border-color:var(--accent);background:var(--rv-accent-bg)}.rv-opt.is-refused{border-color:var(--border);cursor:default}.rv-radio-input{opacity:0;width:0;height:0;margin:0;position:absolute}.rv-radio{border:1px solid var(--muted);border-radius:50%;width:12px;height:12px;margin-top:3px}.rv-opt.is-chosen .rv-radio{border:4px solid var(--accent)}.rv-opt-title{justify-content:space-between;gap:8px;min-width:0;display:flex}.rv-opt-title b{overflow-wrap:anywhere;min-width:0;font-weight:600}.rv-count{color:var(--muted);white-space:nowrap}.rv-opt-detail{min-width:0;color:var(--muted);overflow-wrap:anywhere;grid-column:2;font-size:12px}.rv-opt-detail input,.rv-opt-detail select{font:inherit;color:var(--fg);background:var(--sunken);border:1px solid var(--border);border-radius:5px;padding:1px 5px;font-size:12px}.rv-commits{min-width:0;color:var(--muted);grid-column:2;margin:0;padding:0;font-size:12px;list-style:none}.rv-commits li{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.rv-check{grid-column:2;align-items:center;gap:6px;font-size:12px;display:flex}.rv-form-foot{align-items:center;gap:10px;margin-top:12px;display:flex}.rv-form-foot label{color:var(--muted);font-size:12px}.rv-form-foot input{font:inherit;color:var(--fg);background:var(--sunken);border:1px solid var(--border);border-radius:5px;flex:1;padding:3px 7px}.rv-form-note{color:var(--muted);margin-top:8px;font-size:12px}.rv-form-acts{border-top:1px solid var(--border);justify-content:flex-end;gap:10px;margin-top:18px;padding-top:14px;display:flex}.rv-refused{border:1px solid var(--warn);background:var(--rv-warn-bg);color:var(--fg);border-radius:6px;margin-top:10px;padding:6px 10px;font-size:12px}.rv-btn{border:1px solid var(--border);background:var(--panel);color:var(--fg);cursor:pointer;font:inherit;white-space:nowrap;border-radius:6px;padding:4px 10px}.rv-btn.is-primary{background:var(--accent);border-color:var(--accent);color:var(--rv-btn-text);font-weight:600}.rv-btn.is-outline{border-color:var(--accent);color:var(--accent);background:0 0}.rv-btn.is-small{padding:2px 8px;font-size:12px}.rv-btn:disabled{opacity:.5;cursor:default}.rv-icon{all:unset;color:var(--muted);cursor:pointer;align-items:center;padding:0 2px;display:inline-flex}.rv-icon svg{stroke:currentColor;fill:none;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.rv-thread{border-top:1px solid var(--border);padding:8px 10px;font-size:12.5px}.rv-msg{margin-bottom:6px}.rv-who{color:var(--muted);font-size:11px;display:block}.rv-who.is-agent{color:var(--accent)}.rv-new{border:1px solid var(--accent);color:var(--accent);vertical-align:middle;border-radius:8px;margin-left:6px;padding:0 5px;font-size:10px;line-height:14px;display:inline-block}.rv-msg.is-unread .rv-msg-body{border-left:2px solid var(--accent);padding-left:6px}.rv-msg-body.is-tool{color:var(--muted);font-style:italic}.rv-tf{color:var(--muted);justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.rv-tag{border:1px solid var(--warn);color:var(--warn);border-radius:9px;margin-right:auto;padding:0 6px;font-size:10.5px;line-height:15px}.rv-compose{border-top:1px solid var(--border);padding:8px 10px}.rv-compose-head{align-items:baseline;gap:8px;margin:0 0 4px;display:flex}.rv-compose textarea{box-sizing:border-box;border:1px solid var(--border);background:var(--sunken);width:100%;color:var(--fg);font:inherit;resize:vertical;border-radius:6px;padding:6px 8px;font-size:12.5px}.rv-compose-acts{gap:8px;margin:6px 0 0;display:flex}.rv-editing{z-index:7;border:1px solid var(--border);background:var(--panel);width:360px;box-shadow:0 10px 24px var(--rv-shadow);border-radius:10px;position:absolute;bottom:18px;right:18px}.rv-send{z-index:6;border:1px solid var(--border);background:var(--panel);box-shadow:0 10px 24px var(--rv-shadow);border-radius:17px;font-size:12px;position:absolute;bottom:18px;right:318px}.rv-send.is-wide{right:40px}.rv-send.is-open{border-radius:10px;width:360px}.rv-sendpill{all:unset;box-sizing:border-box;width:100%;color:var(--fg);cursor:pointer;font:inherit;white-space:nowrap;align-items:center;gap:8px;padding:7px 14px;font-weight:600;display:flex}.rv-n{background:var(--accent);color:var(--rv-btn-text);border-radius:999px;padding:0 6px;font-size:11px;line-height:16px}.rv-send-head{border-bottom:1px solid var(--border);margin:0;padding:8px 12px;font-size:13px;font-weight:600}.rv-si{border-bottom:1px solid var(--border);grid-template-columns:1fr auto;gap:1px 8px;padding:7px 12px;display:grid}.rv-si b,.rv-si .rv-f,.rv-si .rv-q{grid-column:1;min-width:0}.rv-si b{font-size:11.5px}.rv-si .rv-f{color:var(--muted);font-family:ui-monospace,Menlo,monospace;font-size:11px}.rv-si .rv-q:before{content:"“"}.rv-si .rv-q:after{content:"”"}.rv-si-ctl{grid-area:1/2/4;align-self:start;gap:4px;display:flex}.rv-si-ctl button{all:unset;width:20px;height:20px;color:var(--muted);cursor:pointer;font:inherit;border-radius:4px;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.rv-si-ctl button:hover{background:var(--sunken);color:var(--fg)}.rv-send-foot{margin:0;padding:10px 12px}.rv-send-foot .rv-btn{width:100%;padding:6px 10px}.rv-send-foot small{color:var(--muted);text-align:center;margin-top:6px;font-size:11px;display:block}.rv-banner{border-bottom:1px solid var(--border);background:var(--rv-warn-bg);align-items:center;gap:10px;padding:7px 12px;font-size:13px;display:flex}.rv-banner b{color:var(--warn);white-space:nowrap}.rv-banner.is-merged{background:var(--rv-accent-bg)}.rv-banner.is-merged b{color:var(--accent)}.rv-hunk.is-dim,.rv-gcard.is-dim{opacity:.72}.rv-approve{border:1px solid var(--border);background:var(--panel);border-radius:8px;grid-template-columns:2fr 3fr;gap:16px;margin-top:6px;padding:16px;display:grid}.rv-ameta{flex-direction:column;gap:12px;min-width:0;display:flex}.rv-ameta .rv-k{color:var(--muted);font-size:12px;display:block}.rv-ameta .rv-v{overflow-wrap:anywhere;font-size:13px;display:block}.rv-ameta .rv-v.rv-mono{font-size:12px}.rv-aact{flex-direction:column;gap:16px;min-width:0;margin:0;display:flex}.rv-field{flex-direction:column;gap:6px;margin:0;display:flex}.rv-field label,.rv-field .rv-label{color:var(--muted);font-size:12px}.rv-field label small,.rv-field .rv-label small{margin-left:4px;font-size:10.5px}.rv-field input{border:1px solid var(--border);background:var(--deep);width:100%;color:var(--fg);font:inherit;border-radius:6px;padding:5px 8px}.rv-sig{border:1px solid var(--border);background:var(--deep);border-radius:6px;min-height:80px;display:block;position:relative}.rv-sig canvas{touch-action:none;cursor:crosshair;width:100%;height:80px;display:block}.rv-sig .rv-link{font-size:10.5px;position:absolute;bottom:3px;right:6px}.rv-btn.is-ok{border-color:var(--ok);background:var(--rv-ok-bg);width:100%;color:var(--fg);padding:7px 10px;font-weight:600}.rv-aclose{flex-direction:column;align-items:center;gap:4px;display:flex}.rv-aclose textarea{border:1px solid var(--border);background:var(--deep);width:100%;color:var(--fg);font:inherit;resize:vertical;border-radius:6px;padding:6px 8px}.rv-aclose-acts{gap:8px;display:flex}.rv-ended{border-bottom:1px solid var(--border);background:var(--panel);color:var(--muted);white-space:nowrap;align-items:center;gap:16px;padding:6px 12px;font-size:12px;display:flex}.rv-ended b{color:var(--fg);font-weight:600}.rv-ended img{object-fit:contain;flex:none;width:96px;height:26px;display:block}.rv-ended .rv-reason{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}