hanoman 0.9.26 → 0.9.28

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 (26) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/cli.js +86 -0
  3. package/dist/server.js +677 -207
  4. package/docs/agent-integration.md +1 -0
  5. package/package.json +1 -1
  6. package/web/assets/{DalangHanomanScreen-BMQjWbwC.js → DalangHanomanScreen-C3UMPHFg.js} +1 -1
  7. package/web/assets/{DocPreviewModal-Vysb114M.js → DocPreviewModal-Bp5stb4M.js} +1 -1
  8. package/web/assets/{DocsWorkspace-Bo2dJRqt.js → DocsWorkspace-C9yFxK4D.js} +1 -1
  9. package/web/assets/{IdeScreen-1V2L_82g.js → IdeScreen-CRFRAP6E.js} +1 -1
  10. package/web/assets/{LeadScreen-D7njTsNH.js → LeadScreen-DfVUawoK.js} +1 -1
  11. package/web/assets/{ReviewScreen-BytyE-o3.js → ReviewScreen-CMHOlmgX.js} +1 -1
  12. package/web/assets/{SchedulerScreen-b4hvb1Sy.js → SchedulerScreen-CK5QvX5c.js} +1 -1
  13. package/web/assets/{SettingsScreen-C9YeMz1R.js → SettingsScreen-D7P5JgjU.js} +1 -1
  14. package/web/assets/{TeamScreen-WvQNIYf0.js → TeamScreen-D4tA34Mj.js} +1 -1
  15. package/web/assets/TerminalScreen-BjFMJnq6.css +1 -0
  16. package/web/assets/TerminalScreen-CKySL63X.js +2 -0
  17. package/web/assets/{TriageScreen-CfzqvbI2.js → TriageScreen-B8ZCexaX.js} +1 -1
  18. package/web/assets/{VpsScreen-XWHjdq4i.js → VpsScreen-BCrLfZh7.js} +1 -1
  19. package/web/assets/{index-BvFCEJud.js → index-BRR3JL_o.js} +210 -210
  20. package/web/assets/{index-B8xChq6y.css → index-BqAP-VDq.css} +1 -1
  21. package/web/assets/{live-B2RFSX3l.js → live-DuBdI0MZ.js} +1 -1
  22. package/web/assets/{sched-lead-shared-0mpQqjza.js → sched-lead-shared-QqbtjoVv.js} +1 -1
  23. package/web/assets/{settings-rebase-BVFljdPX.js → settings-rebase-Cbh-JGJ-.js} +1 -1
  24. package/web/index.html +2 -2
  25. package/web/assets/TerminalScreen-BYx1OK27.js +0 -2
  26. package/web/assets/TerminalScreen-D0NdFmR-.css +0 -1
@@ -29,4 +29,4 @@
29
29
  * The original design remains. The terminal itself
30
30
  * has been extended to include xterm CSI codes, among
31
31
  * other features.
32
- */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.hn-ide-tree-row{position:relative;display:flex;align-items:stretch;min-width:0}.hn-ide-tree-row>.hn-ide-tree-entry{flex:1 1 auto;min-width:0}.hn-ide-row-more{flex:0 0 auto;width:28px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;opacity:.55}.hn-ide-tree-row:hover .hn-ide-row-more,.hn-ide-tree-row:focus-within .hn-ide-row-more{opacity:1}.hn-ide-row-more:hover{background:var(--bone-200)}@media (pointer: coarse),(max-width: 767px){.hn-ide-row-more{width:44px;height:44px;opacity:1}.hn-ide-tree-row>.hn-ide-tree-entry{min-height:44px}}.hn-ide-tree-leaf{display:flex;align-items:center;gap:8px;width:100%;padding:5px 8px;padding-left:calc(22px + var(--depth, 0) * 12px);border:none;cursor:pointer;text-align:left;background:transparent}.hn-ide-tree-dir{display:flex;align-items:center;gap:8px;width:100%;padding:5px 6px;padding-left:calc(6px + var(--depth, 0) * 12px);border:none;background:transparent;cursor:pointer;text-align:left}.hn-ide-tree-ignored{opacity:.62}.hn-ide-tree-name{flex:1 1 0%;min-width:0;font-family:var(--font-mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-body);font-weight:400}.hn-ide-sel .hn-ide-tree-name{color:var(--brass-700);font-weight:600}.hn-ide-tree-dirname{font-family:var(--font-mono);font-size:12.5px;color:var(--text-strong);font-weight:500}.hn-ide-sel .hn-ide-tree-dirname{color:var(--brass-700);font-weight:700}.hn-ide-tree-empty{padding:4px 8px;padding-left:calc(28px + var(--depth, 0) * 12px);font-size:11.5px;color:var(--text-subtle)}.hn-ide-tree-loading{font-size:11px;color:var(--text-subtle)}.hn-ide-status{font-family:var(--font-mono);font-size:12px;font-weight:700}.hn-ide-status[data-status=A]{color:var(--leaf-600)}.hn-ide-status[data-status=M]{color:var(--brass-700)}.hn-ide-status[data-status=D]{color:var(--status-err)}.hn-ide-stat{font-family:var(--font-mono);font-size:11px}.hn-ide-add{color:var(--leaf-600)}.hn-ide-del{color:var(--status-err)}.hn-ide-changed-row{display:flex;align-items:center;gap:8px;width:100%;padding:5px 10px;border:none;cursor:pointer;text-align:left;background:transparent}.hn-ide-sel{background:var(--brass-100)}.hn-ide-changed-path{flex:1 1 0%;min-width:0;font-family:var(--font-mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-body)}.hn-ide-sel .hn-ide-changed-path{color:var(--brass-700)}.hn-ide-changed-head{display:flex;align-items:center;gap:6px;padding:6px 8px}.hn-ide-view-btn{display:flex;padding:3px;border:none;cursor:pointer;border-radius:4px;background:transparent}.hn-ide-view-btn[aria-pressed=true]{background:var(--brass-100)}.hn-ide-empty-pad{padding:4px 10px;font-size:12px;color:var(--text-subtle)}.hn-ide-view-btn{min-width:24px;min-height:24px;box-sizing:border-box;align-items:center;justify-content:center}.hn-ide-changed-row{min-height:24px}.kl-screen{display:grid;gap:var(--space-4);min-width:0}.kl-muted{font-size:var(--text-xs);color:var(--text-subtle)}.kl-intro{font-size:var(--text-xs);color:var(--text-muted);line-height:1.5;margin-bottom:var(--space-4)}.kl-field-err{display:block;font-size:var(--text-2xs);color:var(--status-err);margin-top:var(--space-2)}.kl-checks{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-4)}.kl-device{display:grid;gap:var(--space-2);flex:1 1 0;min-width:0}.kl-device-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.kl-device-name{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;color:var(--text-strong);overflow-wrap:anywhere}.kl-device-meta{font-size:var(--text-xs);color:var(--text-subtle)}.kl-device-reason{font-size:var(--text-xs);color:var(--text-muted)}.kl-device-access{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);font-size:var(--text-xs);color:var(--text-muted)}.kl-device-access strong{font-weight:500;color:var(--text-strong)}.kl-device-access .kl-device-reason{flex-basis:100%}.kl-session{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3);width:100%;min-width:0;padding:var(--space-2) 0;border:0;border-top:1px solid var(--border-hair);background:transparent;color:var(--text-body);font:inherit;text-align:left}.kl-session-link{cursor:pointer}.kl-session-link:hover{background:var(--bone-100)}.kl-session-id{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-subtle)}.kl-session-title{flex:1 1 180px;min-width:0;font-size:var(--text-sm);color:var(--text-strong);overflow-wrap:anywhere}.kl-session-phase{font-size:var(--text-xs);color:var(--text-muted)}.kl-access{display:grid;gap:var(--space-3);min-width:0}.kl-row{display:flex;align-items:center;gap:var(--space-4);min-width:0;padding:var(--space-3) 0;border-bottom:1px solid var(--border-hair)}.kl-row-last{border-bottom:0}.kl-row-text{flex:1 1 auto;min-width:0}.kl-row-title{font-size:var(--text-sm);font-weight:600;color:var(--text-strong)}.kl-row-desc{font-size:var(--text-xs);color:var(--text-muted);line-height:1.5;margin-top:var(--space-1)}.kl-tier-head{font-size:var(--text-xs);font-weight:600;color:var(--text-strong)}.kl-tier-group{gap:var(--space-2)}.kl-tier-hint{font-size:var(--text-xs);color:var(--text-subtle)}.kl-access-requests{display:grid;gap:var(--space-2);min-width:0}.kl-request-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2)}.kl-device-request-entry{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.kl-device-request{display:grid;gap:var(--space-2);padding:var(--space-2) 0}.kl-request-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--space-1);font-size:var(--text-xs)}.kl-khusus{font-size:var(--text-xs);color:var(--text-muted)}.kl-khusus summary{cursor:pointer;color:var(--text-strong);padding:var(--space-1) 0}.kl-audit-row{font-size:var(--text-xs);padding:var(--space-2) 0;border-bottom:1px solid var(--border-hair);overflow-wrap:anywhere}.kl-status-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);font-size:var(--text-sm)}.kl-status-origin{color:var(--text-muted);overflow-wrap:anywhere;min-width:0}.kl-account{display:grid;gap:var(--space-2);flex:1 1 0;min-width:0}.kl-account-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.kl-account-email{font-weight:500;color:var(--text-strong);overflow-wrap:anywhere}.kl-account-projects{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin-top:var(--space-2)}.kl-banner{position:sticky;top:0;z-index:3;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);background:var(--action-bg);color:var(--action-on);border-radius:var(--radius-md);font-size:var(--text-sm);line-height:1.4}.kl-banner-text{flex:1 1 220px;min-width:0;overflow-wrap:anywhere}@media (min-width: 768px){.kl-row-text{flex-basis:200px}}@media (max-width: 767px){.kl-row{flex-direction:column;align-items:flex-start}}.hn-ov{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.hn-ov-section{min-width:0;padding:var(--space-4) var(--space-5);background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.hn-ov-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-3);margin-bottom:var(--space-2);min-width:0}.hn-ov-head-text{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1) var(--space-3);min-width:0}.hn-ov-title{margin:0;font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);line-height:1.2;color:var(--text-strong)}.hn-ov-head-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-left:auto}.hn-ov-meta{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--text-muted)}.hn-ov-name{min-width:8ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-strong)}.hn-ov-activity{flex:1 1 200px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs);color:var(--text-body)}.hn-ov-mono{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--text-subtle);white-space:nowrap}.hn-ov-prj .hn-row-main{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto auto;align-items:center;column-gap:var(--space-3)}.hn-ov-act .hn-row-main{display:grid;grid-template-columns:6.5rem minmax(0,1fr) minmax(0,1.5fr) auto;align-items:center;column-gap:var(--space-3)}.hn-ov-pagehead .hn-page-title{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.hn-ov-empty{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);margin:0;padding:var(--space-1) 0;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--text-body)}.hn-ov-empty>svg{flex:0 0 auto;color:var(--text-subtle)}.hn-ov-none{margin:0;padding:var(--space-1) 0}.hn-ov-cov{min-width:0;display:flex;align-items:center;gap:var(--space-2)}.hn-ov-bar{flex:1 1 auto;min-width:0}.hn-ov-pct{flex:0 0 auto;min-width:3ch;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);text-align:right}.hn-ov-prj-meta{white-space:nowrap}.hn-ov-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-3);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border-hair)}.hn-ov-foot-link{min-width:0;max-width:100%;min-height:30px;margin:0;padding:var(--space-1) var(--space-3);display:inline-flex;align-items:center;gap:var(--space-2);text-align:left;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-body);font:var(--weight-medium) var(--text-sm)/1.35 var(--font-ui);white-space:normal;cursor:pointer}.hn-ov-foot-link:hover{background:var(--bone-200)}.hn-ov-foot-link>svg{flex:0 0 auto}.hn-ov-limit{margin-top:var(--space-2);min-width:0}@media (max-width: 767px){.hn-ov-section{padding:var(--space-4)}.hn-ov-prj .hn-row-main{grid-template-columns:minmax(0,1fr) auto;row-gap:var(--space-1)}.hn-ov-prj .hn-ov-cov{grid-column:1 / -1;order:3}.hn-ov-prj .hn-ov-prj-status{order:2}.hn-ov-prj .hn-ov-prj-meta{order:4;grid-column:1 / -1}.hn-ov-attn .hn-row-main{flex-wrap:wrap;align-items:center;row-gap:var(--space-1);column-gap:var(--space-2)}.hn-ov-attn .hn-row-main>:first-child{order:2}.hn-ov-attn .hn-ov-name{order:1;flex:1 1 100%;white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.hn-ov-attn .hn-ov-meta{order:2;flex:1 1 0;min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.hn-ov-act .hn-row-main{display:flex;flex-wrap:wrap;row-gap:var(--space-1)}.hn-ov-act .hn-ov-activity{flex:1 1 100%;white-space:normal;overflow-wrap:anywhere}.hn-ov-foot-link{width:100%;min-height:var(--touch-target);padding-inline:var(--space-2)}}.hn-skills-workspace{display:flex;flex-direction:column;flex:1 1 0%;min-height:0;min-width:0;gap:var(--space-3)}.hn-skill-master{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;min-width:0;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);overflow:hidden}.hn-skill-master-foot{display:flex;justify-content:flex-end;padding:var(--space-2);border-top:1px solid var(--border-hair)}.hn-skill-list{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.hn-skill-list-tools{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-hair)}.hn-skill-list-scroll{flex:1 1 auto;min-height:0;overflow:auto;padding:var(--space-1) var(--space-2) var(--space-2)}.hn-skill-list-error{padding:4px 8px;font-size:var(--text-xs);color:var(--clay-600)}.hn-skill-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.hn-skill-row{display:flex;flex-direction:column;gap:2px;width:100%;box-sizing:border-box;min-height:44px;padding:8px 10px;border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;min-width:0}.hn-skill-row:hover{background:var(--bone-200)}.hn-skill-row.is-selected{background:var(--brass-100);box-shadow:inset 3px 0 0 var(--brass-500)}.hn-skill-row:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-skill-row-head{display:flex;align-items:center;gap:6px;min-width:0}.hn-skill-row-name{flex:1 1 auto;min-width:0;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-skill-row-desc{font-size:var(--text-xs);color:var(--text-subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-skill-row-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:var(--text-2xs);color:var(--text-subtle)}.hn-skill-detail{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;min-width:0;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);overflow:hidden}.hn-skill-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-hair);min-width:0}.hn-skill-detail-text{display:flex;flex-direction:column;gap:2px;min-width:0}.hn-skill-detail-name{font-family:var(--font-mono);font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-strong);overflow-wrap:anywhere}.hn-skill-detail-desc{font-size:var(--text-sm);color:var(--text-muted)}.hn-skill-detail-body{display:flex;flex-wrap:wrap;flex:1 1 auto;min-height:0;align-items:stretch}.hn-skill-detail-structure{flex:0 1 240px;min-width:200px;min-height:200px;display:flex}.hn-skill-detail-editor{flex:1 1 420px;min-width:0;min-height:320px;display:flex}.hn-skill-structure{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;border-right:1px solid var(--border-hair)}.hn-skill-structure-head{padding:10px 14px;border-bottom:1px solid var(--border-hair)}.hn-skill-structure-name{font-size:var(--text-xs);color:var(--text-strong)}.hn-skill-structure-tree{flex:1 1 auto;min-height:0;overflow:auto;padding:8px}.hn-skill-structure-foot{display:flex;gap:8px;padding:8px;border-top:1px solid var(--border-hair);flex-wrap:wrap}.hn-skill-error-text{color:var(--clay-600)}.hn-skill-editor{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0}.hn-skill-editor-head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;padding:10px 16px;border-bottom:1px solid var(--border-hair)}.hn-skill-editor-path{flex:1 1 auto;min-width:0;font-size:var(--text-sm);overflow-wrap:anywhere}.hn-skill-frontmatter{padding:10px 16px;border-bottom:1px solid var(--border-hair);background:var(--bone-200)}.hn-skill-fm-name{font-family:var(--font-mono);font-size:var(--text-xs)}.hn-skill-fm-desc{font-size:var(--text-sm);color:var(--text-muted)}.hn-skill-editor-body{flex:1 1 auto;min-height:0;overflow:auto;padding:var(--space-4)}.hn-skill-editor-body.is-edit{padding:0}.hn-skill-textarea{display:block;width:100%;height:100%;min-height:320px;box-sizing:border-box;resize:none;border:0;padding:var(--space-4);background:transparent;color:var(--text-body);font-family:var(--font-mono);font-size:var(--text-sm)}.hn-skill-textarea:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-skill-pre{margin:0;font-family:var(--font-mono);font-size:var(--text-sm);white-space:pre-wrap}.hn-skill-savebar{position:sticky;bottom:0;z-index:1;display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-top:1px solid var(--border-hair);background:var(--bone-100)}.hn-skill-conflict{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);font-size:var(--text-xs);color:var(--clay-600)}.hn-agents{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-agents-head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.hn-agents-scope{flex:1 1 280px;min-width:0;margin:0;font-size:var(--text-xs);color:var(--text-subtle)}.hn-agent-evidence{border:1px solid var(--border-hair);border-radius:var(--radius-sm);padding:0 var(--space-3);background:var(--surface-card);min-width:0}.hn-agent-evidence-summary{display:flex;align-items:center;min-height:36px;cursor:pointer;font-size:var(--text-xs);color:var(--text-muted)}.hn-agent-evidence-summary:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-agent-evidence-body{display:flex;flex-direction:column;gap:var(--space-2);padding-bottom:var(--space-3);min-width:0}.hn-agent-card{display:flex;flex-direction:column;gap:6px;padding:14px;min-width:0;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg)}.hn-agent-head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0}.hn-agent-name{font-family:var(--font-mono);font-weight:var(--weight-semibold);color:var(--text-strong);overflow-wrap:anywhere}.hn-agent-desc{margin:0;font-size:var(--text-xs);color:var(--text-muted)}.hn-agent-note{margin:0;font-size:var(--text-xs);color:var(--text-muted);line-height:1.5}.hn-agent-error{display:block;margin-top:3px;color:var(--clay-600)}.hn-agent-meta{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin:0;font-size:var(--text-xs);color:var(--text-subtle)}.hn-agent-meta>div{display:flex;gap:4px;min-width:0}.hn-agent-meta dt{color:var(--text-subtle)}.hn-agent-meta dd{margin:0;color:var(--text-body);overflow-wrap:anywhere}.hn-agent-card>.hn-agent-evidence{margin-top:var(--space-1)}.hn-agent-samples{display:flex;flex-direction:column;gap:var(--space-2)}.hn-agent-sample{padding:var(--space-2);border:1px solid var(--border-hair);border-radius:var(--radius-sm)}.hn-agent-sample-meta{font-size:var(--text-xs);color:var(--text-subtle);margin-bottom:6px}.hn-agent-sample-form{display:flex;flex-wrap:wrap;gap:var(--space-2)}.hn-agent-metrics{display:flex;gap:14px;flex-wrap:wrap;padding-top:9px;border-top:1px solid var(--border-hair);font-size:var(--text-xs);color:var(--text-subtle)}.hn-agent-stat{display:flex;flex-direction:column;gap:2px;max-width:280px}.hn-agent-stat-caption{color:var(--text-muted)}.hn-agent-stat-line{font-size:var(--text-xs)}.hn-agent-variants{margin-top:var(--space-2)}.hn-agent-variants summary{cursor:pointer;font-size:var(--text-xs);min-height:32px;display:flex;align-items:center}.hn-agent-variants ul{font-size:var(--text-xs);color:var(--text-muted);padding-left:20px}.hn-agent-grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3)}@media (max-width: 767px){.hn-skill-detail-structure,.hn-skill-detail-editor{flex-basis:100%;min-width:0}.hn-skill-detail-structure{min-height:0;max-height:220px}.hn-skill-detail-editor{min-height:320px}.hn-agent-grid2{grid-template-columns:minmax(0,1fr)}}.hn-am-intro{font-size:12.5px;color:var(--text-muted);margin-bottom:12px;line-height:1.5}.hn-am-warn{font-size:12.5px;color:var(--status-warn, var(--text-muted));margin-bottom:12px}.hn-am-row{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}.hn-am-grid{display:grid;gap:10px}.hn-am-label{margin-bottom:4px}.hn-am-note{font-size:12.5px;color:var(--text-subtle)}.hn-qa-stack{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-qa-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.hn-qa-toolbar-project{flex:0 1 240px;min-width:0}.hn-qa-intro{margin:0;max-width:70ch;font-size:var(--text-sm);color:var(--text-subtle)}.hn-qa-note{margin:0;font-size:var(--text-xs);color:var(--text-subtle)}.hn-qa-note-list{margin:0;padding-left:18px}.hn-qa-error{margin:0;font-size:var(--text-sm);color:var(--status-err);overflow-wrap:anywhere}.hn-qa-code{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--text-subtle);white-space:nowrap}.hn-qa-label{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-strong);margin-bottom:var(--space-1)}.hn-qa-pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--text-sm);color:var(--text-body)}.hn-qa-row-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1 1 200px}.hn-qa-row-head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);min-width:0}.hn-qa-row-title{display:block;font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-strong);overflow-wrap:anywhere;min-width:0}.hn-qa-row-line{display:flex;flex-wrap:wrap;align-items:center;gap:2px var(--space-3);min-width:0;font-size:var(--text-xs);color:var(--text-subtle)}.hn-qa-row-line>span{min-width:0;overflow-wrap:anywhere}.hn-qa-row-stat{color:var(--text-muted)}.hn-qa-editor{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-qa-bar{position:sticky;top:0;z-index:2;display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2) 0;background:var(--surface-page);border-bottom:1px solid var(--border-hair);min-width:0}.hn-qa-bar-title{flex:1 1 200px;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.hn-qa-bar-name{margin:0;min-width:0;font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-qa-bar-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);flex:0 0 auto;min-width:0}.hn-qa-bar-save{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:360px;font-size:var(--text-xs);color:var(--text-subtle)}.hn-qa-bar-save.is-error{color:var(--status-err)}@media (max-width: 767px){.hn-qa-editor{padding-bottom:calc(84px + env(safe-area-inset-bottom))}.hn-qa-bar-actions{position:fixed;left:0;right:0;bottom:0;z-index:5;justify-content:flex-end;padding:var(--space-2) var(--page-gutter-x) calc(var(--space-2) + env(safe-area-inset-bottom));background:var(--surface-card);border-top:1px solid var(--border-hair)}.hn-qa-bar-save{flex:1 1 100%;max-width:none;order:-1}}.hn-qa-info{display:flex;flex-direction:column;gap:var(--space-2);min-width:0;padding:var(--space-3) var(--space-4);background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg)}.hn-qa-info-head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);min-width:0}.hn-qa-info-title{margin:0;flex:1 1 160px;min-width:0;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-qa-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:var(--space-2) var(--space-4);margin:0;min-width:0}.hn-qa-facts>div{min-width:0}.hn-qa-facts dt{font-size:var(--text-2xs);color:var(--text-subtle)}.hn-qa-facts dd{margin:0;font-size:var(--text-sm);color:var(--text-strong);overflow-wrap:anywhere}.hn-qa-form{display:flex;flex-direction:column;min-width:0}.hn-qa-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));min-width:0}.hn-qa-fieldset{border:0;margin:0 0 var(--space-3);padding:0;min-width:0}.hn-qa-legend{padding:0;margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-qa-more{margin-top:var(--space-1)}.hn-qa-more>summary{cursor:pointer;color:var(--text-subtle);font-size:var(--text-sm);padding:var(--space-1) 0}.hn-qa-file{display:block;width:100%;max-width:100%;font:var(--text-sm)/1.4 var(--font-ui);color:var(--text-body)}.hn-qa-file::file-selector-button{margin-right:10px;height:34px;padding:0 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-strong);font:var(--weight-medium) var(--text-sm)/1 var(--font-ui);cursor:pointer;box-shadow:var(--shadow-xs)}.hn-qa-file::file-selector-button:hover{background:var(--bone-100)}.hn-qa-file:focus-visible{outline:2px solid var(--border-focus);outline-offset:3px;border-radius:var(--radius-sm)}.hn-qa-file:disabled{opacity:.5}.hn-qa-modal-stack{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-qa-check{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-qa-check>li{display:grid;grid-template-columns:22px minmax(0,1fr);gap:var(--space-2);align-items:start;padding-bottom:var(--space-3);border-bottom:1px solid var(--border-hair)}.hn-qa-check>li:last-child{border-bottom:0;padding-bottom:0}.hn-qa-check-icon{display:inline-flex;padding-top:1px}.hn-qa-check-icon.is-ok{color:var(--leaf-600)}.hn-qa-check-icon.is-warn{color:var(--amber-600)}.hn-qa-check-icon.is-miss{color:var(--clay-600)}.hn-qa-check-name{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-qa-check-note{font-size:var(--text-xs);color:var(--text-subtle);overflow-wrap:anywhere}.hn-qa-check-body{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.hn-qa-export{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.hn-qa-export>a{justify-content:flex-start}.hn-qa-case-head{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-2);min-width:0}.hn-qa-case-code{flex:0 1 120px;min-width:0}.hn-qa-case-name{flex:1 1 200px;min-width:0}.hn-qa-case-status{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-1);min-width:0}.hn-qa-case-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));margin-top:var(--space-2);min-width:0}.hn-qa-add{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:flex-start;min-width:0}.hn-qa-add-field{flex:1 1 240px;min-width:0}.hn-qa-save{display:inline-flex;align-items:center;gap:6px;min-height:20px;font-size:var(--text-xs);color:var(--text-subtle);overflow-wrap:anywhere}.hn-qa-save.is-saved{color:var(--leaf-600)}.hn-qa-save.is-error{color:var(--status-err)}.hn-qa-seg{min-width:0}.hn-qa-seg .hn-choice-target{position:relative;min-height:36px;border-radius:var(--radius-sm);background:var(--surface-card);border:1px solid var(--border-strong)}.hn-qa-seg .hn-choice-target>span:last-child{display:flex;align-items:center;min-height:36px;padding:0 12px}.hn-qa-seg .hn-choice-control{position:absolute;left:0;top:0;opacity:0}.hn-qa-seg .hn-choice-target:focus-within{outline:2px solid var(--border-focus);outline-offset:2px}.hn-qa-seg .hn-choice-target.is-on{background:var(--brass-100);border-color:var(--brass-600)}.hn-qa-seg .hn-choice-target.is-on>span:last-child{font-weight:var(--weight-semibold)}.hn-qa-detail-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));min-width:0}.hn-qa-detail-stack{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-qa-steps{margin:0;padding-left:20px;font-size:var(--text-sm);color:var(--text-body)}.hn-qa-steps li{overflow-wrap:anywhere}.hn-qa-result-line{font-size:var(--text-xs);color:var(--text-subtle);overflow-wrap:anywhere}.hn-qa-result-line.is-err{color:var(--status-err)}.hn-qa-attach{min-width:0;margin-top:var(--space-2);border-radius:var(--radius-sm)}.hn-qa-attach:focus-visible{outline:2px solid var(--border-focus);outline-offset:3px}.hn-qa-attach-list{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-3);min-width:0}.hn-qa-attach-item{display:grid;gap:4px;max-width:160px;min-width:0}.hn-qa-attach-img{height:96px;max-width:160px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border-strong)}.hn-qa-attach-img.is-compact{height:64px}.hn-qa-attach-file{font-size:var(--text-xs);overflow-wrap:anywhere}.hn-qa-attach-meta{font-size:var(--text-2xs);color:var(--text-subtle);overflow-wrap:anywhere}.hn-qa-attach-hint{margin:var(--space-2) 0 0;font-size:var(--text-xs);color:var(--text-subtle)}.hn-qa-preview{display:grid;gap:var(--space-3);grid-template-columns:minmax(0,1fr);min-width:0}.hn-qa-preview .hn-md table{display:block;overflow-x:auto;max-width:100%}.hn-qa-preview .hn-md th{white-space:nowrap}.hn-qa-preview .hn-md td{min-width:112px;overflow-wrap:break-word;word-break:normal}.hn-review{display:flex;flex-direction:column;gap:12px;min-width:0}.hn-review-topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.hn-review-head{display:flex;flex-direction:column;gap:2px;min-width:0}.hn-review-title{margin:0;font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;color:var(--text-strong);line-height:1.25;overflow-wrap:anywhere}.hn-review-stat{margin:0;font-size:var(--text-sm);color:var(--text-muted)}.hn-review-delta{font-family:var(--font-mono);font-weight:600;color:var(--text-strong)}.hn-review-pane{display:flex;flex-direction:column;min-width:0;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);overflow:hidden}.hn-review-list{padding:6px 4px;min-width:0}.hn-review-sep{padding:8px 8px 6px;margin-top:8px;border-top:1px solid var(--border-hair)}.hn-review-legend{margin:0;padding:8px 12px;border-top:1px solid var(--border-hair);font-size:var(--text-xs);color:var(--text-subtle)}.hn-review-viewer{display:flex;flex-direction:column;min-width:0;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);overflow:hidden}.hn-review-viewbar{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid var(--border-hair);min-width:0}.hn-review-path{flex:1 1 180px;min-width:0;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;color:var(--text-strong);overflow-wrap:anywhere}.hn-review-filestat{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap}.hn-review-seg{display:inline-flex;gap:2px;padding:2px;background:var(--bone-100);border-radius:var(--radius-pill)}.hn-review-seg button{padding:4px 12px;border:none;cursor:pointer;border-radius:var(--radius-pill);font:inherit;font-size:var(--text-xs);color:var(--text-muted);background:transparent}.hn-review-seg button[aria-pressed=true]{background:var(--surface-card);color:var(--text-strong);font-weight:600}.hn-review-seg button:focus-visible{outline:2px solid var(--border-focus);outline-offset:1px}.hn-review-body{min-width:0;background:var(--surface-card)}.hn-review-diff{padding:10px 0}.hn-review-truncated{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 12px;font-size:var(--text-xs);color:var(--text-muted)}.hn-review-truncated a{color:var(--brass-700);font-weight:500}.hn-review-pre{margin:0;padding:12px 16px;font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.6;white-space:pre-wrap;word-break:break-word;color:var(--text-body)}.hn-review-decide{position:sticky;bottom:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:8px 12px;flex-wrap:wrap;padding:10px 12px;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.hn-review-decide-hint{margin:0;flex:1 1 260px;font-size:var(--text-sm);color:var(--text-muted);line-height:1.5}.hn-review-decide-err{flex:1 1 100%;margin:0}.hn-review-decide-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.hn-review-more{display:inline-flex}@media (min-width: 768px){.hn-review-list,.hn-review-body{max-height:min(640px,60dvh);overflow:auto}}@media (pointer: coarse),(max-width: 767px){.hn-review button{min-height:var(--touch-target)}.hn-review-seg button{min-height:var(--touch-target);padding:8px 14px}}@media (max-width: 767px){.hn-review-decide{padding-bottom:calc(10px + var(--safe-bottom))}.hn-review-viewbar{align-items:stretch}.hn-review-path{flex-basis:100%}}@media (max-width: 399px){.hn-review-decide-hint{flex:1 1 0;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.hn-reconcile-error{font-size:var(--text-sm);color:var(--clay-600);background:var(--status-err-tint);border:1px solid var(--clay-500);border-radius:var(--radius-sm);padding:8px 10px;margin-bottom:12px}.hn-reconcile-card{border:1px solid var(--border-hair);border-radius:var(--radius-md);padding:12px;margin:0 0 12px;background:var(--surface-card);min-width:0}.hn-reconcile-head{display:flex;align-items:baseline;gap:8px 10px;flex-wrap:wrap;font-size:var(--text-sm);color:var(--text-strong)}.hn-reconcile-id{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);overflow-wrap:anywhere}.hn-reconcile-hint{font-size:var(--text-xs);color:var(--text-muted)}.hn-reconcile-meta{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:4px;font-size:var(--text-xs);color:var(--text-subtle)}.hn-reconcile-same{margin:10px 0 0;font-size:var(--text-sm);color:var(--text-muted)}.hn-reconcile-fields{margin:10px 0 0;display:flex;flex-direction:column;gap:6px;min-width:0}.hn-reconcile-field{display:grid;grid-template-columns:minmax(0,110px) minmax(0,1fr) minmax(0,1fr);gap:8px 12px;align-items:start;padding:8px 10px;border-radius:var(--radius-sm);background:var(--bone-100)}.hn-reconcile-field dt{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-strong);overflow-wrap:anywhere}.hn-reconcile-field dd{margin:0;min-width:0;font-size:var(--text-xs);color:var(--text-body)}.hn-reconcile-field code{display:block;font-family:var(--font-mono);font-size:var(--text-xs);white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5}.hn-reconcile-field-head{background:transparent;padding-bottom:0}.hn-reconcile-field-head dt,.hn-reconcile-field-head dd{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--text-subtle);font-weight:600}.hn-reconcile-side{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;font-size:var(--text-xs);color:var(--text-subtle);font-weight:600}.hn-reconcile-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:10px}@media (max-width: 767px){.hn-reconcile-field{grid-template-columns:minmax(0,1fr);gap:4px}.hn-reconcile-field-head{display:none}.hn-reconcile-side{position:static;width:auto;height:auto;overflow:visible;clip-path:none;white-space:normal;display:block;margin-bottom:2px}.hn-reconcile-actions>*{flex:1 1 140px;justify-content:center}.hn-reconcile-field dt{font-weight:600}}.hn-bl-screen{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;min-width:0}.hn-bl-toolbar{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4);min-width:0}.hn-bl-stage-tabs{max-width:100%;overflow-x:auto}.hn-bl-status-line{display:flex;flex-wrap:wrap;gap:var(--space-2);min-height:0}.hn-bl-status-line:empty{display:none}.hn-bl-stale{font:var(--weight-medium) var(--text-xs)/1.5 var(--font-ui);color:var(--status-warn)}.hn-bl-muted{font:var(--weight-regular, 400) var(--text-xs)/1.5 var(--font-ui);color:var(--text-muted)}.hn-bl-hint{margin:0;font:var(--weight-regular, 400) var(--text-xs)/1.5 var(--font-ui);color:var(--text-muted)}.hn-bl-gap-top{margin-top:var(--space-2)}.hn-bl-gap-bottom{margin-bottom:var(--space-2)}.hn-bl-view-toggle{display:inline-flex;gap:2px;padding:2px;background:var(--bone-200);border-radius:var(--radius-sm)}.hn-bl-view-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer}.hn-bl-view-btn:hover{color:var(--text-strong)}.hn-bl-view-btn[aria-pressed=true]{background:var(--surface-card);color:var(--text-strong);box-shadow:var(--shadow-xs)}.hn-bl-view-btn:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-bl-full{width:100%}.hn-bl-date-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.hn-bl-body{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;min-width:0}.hn-bl-list-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;border:1px solid var(--border-hair);border-radius:var(--radius-lg);background:var(--surface-card)}.hn-bl-pager{margin-top:var(--space-3);border:1px solid var(--border-hair);border-radius:var(--radius-lg);overflow:hidden}.hn-bl-prio{--dot: var(--ink-400);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:12px;height:12px}.hn-bl-prio:before{content:"";display:block;border-radius:50%;box-sizing:border-box;width:9px;height:9px;border:1.5px solid var(--dot);background:var(--dot)}.hn-bl-prio-high:before{width:12px;height:12px}.hn-bl-prio-low:before{background:transparent}.hn-bl-prio[data-status=done]{--dot: var(--leaf-500)}.hn-bl-prio[data-status=running]{--dot: var(--brass-600)}.hn-bl-prio[data-status=queued]{--dot: var(--brass-400, var(--brass-500))}.hn-bl-prio-text{display:inline-flex;align-items:center;gap:var(--space-2);font:var(--weight-medium) var(--text-sm)/1 var(--font-ui);color:var(--text-strong)}.hn-bl-stage-pill{flex:0 0 auto}.hn-bl-id{font:var(--weight-regular, 400) var(--text-2xs)/1 var(--font-mono);color:var(--text-subtle);white-space:nowrap}.hn-bl-source{display:inline-flex;align-items:center;gap:var(--space-1);white-space:nowrap;font:var(--weight-regular, 400) var(--text-2xs)/1 var(--font-ui);color:var(--text-muted)}.hn-bl-row-body{display:flex;flex-direction:column;gap:var(--space-1);min-width:0;flex:1 1 auto;text-align:left}.hn-bl-row-title{font:var(--weight-medium) var(--text-md)/1.35 var(--font-ui);color:var(--text-strong);overflow-wrap:anywhere;min-width:0}.hn-bl-row-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);min-width:0}.hn-bl-actions{display:inline-flex;align-items:center;gap:var(--space-1);flex:0 0 auto}.hn-bl-title{display:block;width:100%;padding:0;border:0;background:transparent;cursor:pointer;text-align:left;font:var(--weight-semibold) var(--text-md)/1.35 var(--font-ui);color:var(--text-strong);overflow-wrap:anywhere}.hn-bl-title:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-bl-board{display:flex;overflow-x:auto;gap:var(--space-2);align-items:stretch}.hn-bl-col{flex:0 0 248px;display:flex;flex-direction:column;min-height:0;padding:var(--space-2);border-radius:var(--radius-lg);background:var(--bone-100);border:1px solid var(--border-hair);transition:var(--transition-fast)}.hn-bl-col[data-active]{border-style:dashed}.hn-bl-col[data-hot]{background:var(--brass-100);border-color:var(--brass-500)}.hn-bl-col[data-dimmed]{opacity:.5}.hn-bl-col-head{display:flex;align-items:center;gap:var(--space-1);margin-bottom:var(--space-2);min-height:20px}.hn-bl-col-count{margin-left:auto;font:var(--weight-regular, 400) var(--text-2xs)/1 var(--font-mono);color:var(--text-subtle)}.hn-bl-col-body{display:flex;flex-direction:column;gap:var(--space-2);min-height:0;overflow-y:auto}.hn-bl-card{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);cursor:default}.hn-bl-card[data-draggable]{cursor:grab}.hn-bl-card[data-dragging]{opacity:.4}.hn-bl-card-head{display:flex;align-items:center;gap:var(--space-2);min-width:0}.hn-bl-card-badges{display:flex;flex-wrap:wrap;gap:var(--space-1)}.hn-bl-card-foot{display:flex;justify-content:flex-end}.hn-bl-stagebar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1)}.hn-bl-stage{position:relative;display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-pill)}.hn-bl-stage[data-state=active]{background:var(--brass-100)}.hn-bl-stage:not(:last-child):after{content:"";display:inline-block;width:12px;height:2px;margin-left:var(--space-1);background:var(--bone-300);border-radius:1px}.hn-bl-stage[data-state=done]:after{background:var(--leaf-500)}.hn-bl-stage-dot{width:8px;height:8px;border-radius:50%;background:var(--bone-400);flex:0 0 auto}.hn-bl-stage[data-state=done] .hn-bl-stage-dot{background:var(--leaf-500)}.hn-bl-stage[data-state=active] .hn-bl-stage-dot{background:var(--brass-500)}.hn-bl-stage-label{font:var(--weight-medium) var(--text-2xs)/1 var(--font-mono);color:var(--brass-700)}.hn-bl-detail{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.hn-bl-section{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-bl-section-title{margin:0;font:var(--weight-semibold) var(--text-xs)/1.2 var(--font-mono);color:var(--text-muted);letter-spacing:var(--tracking-wide, .04em);text-transform:uppercase}.hn-bl-summary-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3)}.hn-bl-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2) var(--space-4);margin:0}.hn-bl-facts>div{display:flex;flex-direction:column;gap:2px;min-width:0}.hn-bl-facts dt{font:var(--weight-regular, 400) var(--text-2xs)/1.2 var(--font-mono);color:var(--text-subtle);text-transform:uppercase}.hn-bl-facts dd{margin:0;font:var(--weight-regular, 400) var(--text-sm)/1.4 var(--font-ui);color:var(--text-body);overflow-wrap:anywhere}.hn-bl-field{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.hn-bl-field-value{font:var(--weight-regular, 400) var(--text-sm)/1.5 var(--font-ui);color:var(--text-strong);white-space:pre-wrap;overflow-wrap:anywhere}.hn-bl-inline-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.hn-bl-end{justify-content:flex-end}.hn-bl-cta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.hn-bl-subsection{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.hn-bl-stack-list{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.hn-bl-dep{display:flex;align-items:center;gap:var(--space-2);font:var(--weight-regular, 400) var(--text-sm)/1.4 var(--font-ui)}.hn-bl-trail{font:var(--weight-regular, 400) var(--text-sm)/1.4 var(--font-ui);color:var(--text-muted);overflow-wrap:anywhere}.hn-bl-checklist{display:flex;flex-direction:column;gap:var(--space-2);max-height:132px;overflow-y:auto;padding:var(--space-2);border:1px solid var(--border-hair);border-radius:var(--radius-sm)}.hn-bl-status-now{font:var(--weight-semibold) var(--text-sm)/1.4 var(--font-ui);color:var(--text-strong)}.hn-bl-callout{padding:var(--space-2) var(--space-3);border:1px solid var(--border-hair);border-radius:var(--radius-sm);background:var(--bone-100);font:var(--weight-regular, 400) var(--text-xs)/1.5 var(--font-ui);color:var(--text-muted)}.hn-bl-callout-title{font:var(--weight-semibold) var(--text-xs)/1.5 var(--font-ui);color:var(--text-strong)}.hn-bl-confirm-lead{font:var(--weight-regular, 400) var(--text-sm)/1.5 var(--font-ui);color:var(--text-strong);margin-bottom:var(--space-3)}.hn-bl-file-list{margin:0 0 var(--space-4);padding-left:var(--space-4);font:var(--weight-regular, 400) var(--text-xs)/1.6 var(--font-mono);color:var(--text-muted);overflow-wrap:anywhere}.hn-bl-advanced{border-top:1px solid var(--border-hair);padding-top:var(--space-3);min-width:0}.hn-bl-advanced>summary{cursor:pointer;list-style:none;font:var(--weight-semibold) var(--text-xs)/1.2 var(--font-mono);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--tracking-wide, .04em);padding:var(--space-1) 0;min-height:var(--touch-target)}.hn-bl-advanced>summary::-webkit-details-marker{display:none}.hn-bl-advanced>summary:before{content:"+ "}.hn-bl-advanced[open]>summary:before{content:"− "}.hn-bl-advanced>summary:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-bl-advanced-body{display:flex;flex-direction:column;gap:var(--space-4);padding-top:var(--space-3);min-width:0}.hn-bl-danger{display:flex;flex-direction:column;gap:var(--space-1);padding-top:var(--space-3);border-top:1px solid var(--border-hair)}.hn-bl-danger .hn-bl-section-title{color:var(--clay-600)}@media (max-width: 767px){.hn-bl-toolbar{gap:var(--space-2)}.hn-bl-screen{min-height:auto}.hn-bl-body{flex:0 0 auto;min-height:auto}.hn-bl-list-scroll{flex:0 0 auto;min-height:auto;overflow:visible}.hn-bl-screen .hn-bl-stage-tabs{overflow:visible;flex-wrap:wrap}.hn-bl-board{flex-direction:column;overflow-x:hidden}.hn-bl-col{flex:0 0 auto;width:100%}.hn-bl-col-body{overflow-y:visible}.hn-bl-facts{grid-template-columns:minmax(0,1fr)}.hn-bl-list-scroll{border-radius:var(--radius-md)}.hn-bl-row-title{white-space:normal}.hn-bl-card-foot{justify-content:stretch}.hn-bl-card-foot .hn-bl-actions{width:100%;justify-content:space-between}}.hn-bl-proj{font:var(--weight-regular, 400) var(--text-xs)/1.2 var(--font-ui);color:var(--text-muted);max-width:16ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-bl-card>.hn-bl-proj{display:block;max-width:100%}.hn-pc{display:flex;flex-direction:column;gap:14px}.hn-pc-kuota{font-size:12.5px;color:var(--text-muted);line-height:1.6}.hn-pc-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 16px;background:none;border:none;border-bottom:1px solid var(--border-hair);cursor:pointer}.hn-pc-type{font-size:12.5px;color:var(--text-muted);width:110px}.hn-pc-summary{flex:1;min-width:0;color:var(--text-strong)}.hn-pc-meta{font-size:12.5px;color:var(--text-muted)}.hn-pc-transcript{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.hn-pc-msg{padding:10px 12px;border-radius:var(--radius-lg);border:1px solid var(--border-hair);background:var(--surface-card)}.hn-pc-msg[data-role=klien]{background:var(--bone-100)}.hn-pc-msg[data-blocked=true]{border-color:var(--status-err)}.hn-pc-msg-meta{font-size:11.5px;color:var(--text-muted);margin-bottom:4px}.hn-pc-msg-text{white-space:pre-wrap;line-height:1.6}.hn-pc-blocked{margin-top:8px;font-size:12.5px;color:var(--text-muted)}.hn-pc-raw{white-space:pre-wrap;margin-top:4px}.hn-pc-prd{border:1px solid var(--border-hair);border-radius:var(--radius-lg);padding:12px 14px;margin-bottom:12px}.hn-pc-prd-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.hn-pc-slug{width:240px}.hn-pc-note{margin-top:10px;font-size:12.5px;color:var(--text-muted)}
32
+ */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.hn-ide-tree-row{position:relative;display:flex;align-items:stretch;min-width:0}.hn-ide-tree-row>.hn-ide-tree-entry{flex:1 1 auto;min-width:0}.hn-ide-row-more{flex:0 0 auto;width:28px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;opacity:.55}.hn-ide-tree-row:hover .hn-ide-row-more,.hn-ide-tree-row:focus-within .hn-ide-row-more{opacity:1}.hn-ide-row-more:hover{background:var(--bone-200)}@media (pointer: coarse),(max-width: 767px){.hn-ide-row-more{width:44px;height:44px;opacity:1}.hn-ide-tree-row>.hn-ide-tree-entry{min-height:44px}}.hn-ide-tree-leaf{display:flex;align-items:center;gap:8px;width:100%;padding:5px 8px;padding-left:calc(22px + var(--depth, 0) * 12px);border:none;cursor:pointer;text-align:left;background:transparent}.hn-ide-tree-dir{display:flex;align-items:center;gap:8px;width:100%;padding:5px 6px;padding-left:calc(6px + var(--depth, 0) * 12px);border:none;background:transparent;cursor:pointer;text-align:left}.hn-ide-tree-ignored{opacity:.62}.hn-ide-tree-name{flex:1 1 0%;min-width:0;font-family:var(--font-mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-body);font-weight:400}.hn-ide-sel .hn-ide-tree-name{color:var(--brass-700);font-weight:600}.hn-ide-tree-dirname{font-family:var(--font-mono);font-size:12.5px;color:var(--text-strong);font-weight:500}.hn-ide-sel .hn-ide-tree-dirname{color:var(--brass-700);font-weight:700}.hn-ide-tree-empty{padding:4px 8px;padding-left:calc(28px + var(--depth, 0) * 12px);font-size:11.5px;color:var(--text-subtle)}.hn-ide-tree-loading{font-size:11px;color:var(--text-subtle)}.hn-ide-status{font-family:var(--font-mono);font-size:12px;font-weight:700}.hn-ide-status[data-status=A]{color:var(--leaf-600)}.hn-ide-status[data-status=M]{color:var(--brass-700)}.hn-ide-status[data-status=D]{color:var(--status-err)}.hn-ide-stat{font-family:var(--font-mono);font-size:11px}.hn-ide-add{color:var(--leaf-600)}.hn-ide-del{color:var(--status-err)}.hn-ide-changed-row{display:flex;align-items:center;gap:8px;width:100%;padding:5px 10px;border:none;cursor:pointer;text-align:left;background:transparent}.hn-ide-sel{background:var(--brass-100)}.hn-ide-changed-path{flex:1 1 0%;min-width:0;font-family:var(--font-mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-body)}.hn-ide-sel .hn-ide-changed-path{color:var(--brass-700)}.hn-ide-changed-head{display:flex;align-items:center;gap:6px;padding:6px 8px}.hn-ide-view-btn{display:flex;padding:3px;border:none;cursor:pointer;border-radius:4px;background:transparent}.hn-ide-view-btn[aria-pressed=true]{background:var(--brass-100)}.hn-ide-empty-pad{padding:4px 10px;font-size:12px;color:var(--text-subtle)}.hn-ide-view-btn{min-width:24px;min-height:24px;box-sizing:border-box;align-items:center;justify-content:center}.hn-ide-changed-row{min-height:24px}.kl-screen{display:grid;gap:var(--space-4);min-width:0}.kl-muted{font-size:var(--text-xs);color:var(--text-subtle)}.kl-intro{font-size:var(--text-xs);color:var(--text-muted);line-height:1.5;margin-bottom:var(--space-4)}.kl-field-err{display:block;font-size:var(--text-2xs);color:var(--status-err);margin-top:var(--space-2)}.kl-checks{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-4)}.kl-device{display:grid;gap:var(--space-2);flex:1 1 0;min-width:0}.kl-device-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.kl-device-name{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;color:var(--text-strong);overflow-wrap:anywhere}.kl-device-meta{font-size:var(--text-xs);color:var(--text-subtle)}.kl-device-reason{font-size:var(--text-xs);color:var(--text-muted)}.kl-device-access{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);font-size:var(--text-xs);color:var(--text-muted)}.kl-device-access strong{font-weight:500;color:var(--text-strong)}.kl-device-access .kl-device-reason{flex-basis:100%}.kl-session{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3);width:100%;min-width:0;padding:var(--space-2) 0;border:0;border-top:1px solid var(--border-hair);background:transparent;color:var(--text-body);font:inherit;text-align:left}.kl-session-link{cursor:pointer}.kl-session-link:hover{background:var(--bone-100)}.kl-session-id{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-subtle)}.kl-session-title{flex:1 1 180px;min-width:0;font-size:var(--text-sm);color:var(--text-strong);overflow-wrap:anywhere}.kl-session-phase{font-size:var(--text-xs);color:var(--text-muted)}.kl-access{display:grid;gap:var(--space-3);min-width:0}.kl-row{display:flex;align-items:center;gap:var(--space-4);min-width:0;padding:var(--space-3) 0;border-bottom:1px solid var(--border-hair)}.kl-row-last{border-bottom:0}.kl-row-text{flex:1 1 auto;min-width:0}.kl-row-title{font-size:var(--text-sm);font-weight:600;color:var(--text-strong)}.kl-row-desc{font-size:var(--text-xs);color:var(--text-muted);line-height:1.5;margin-top:var(--space-1)}.kl-tier-head{font-size:var(--text-xs);font-weight:600;color:var(--text-strong)}.kl-tier-group{gap:var(--space-2)}.kl-tier-hint{font-size:var(--text-xs);color:var(--text-subtle)}.kl-access-requests{display:grid;gap:var(--space-2);min-width:0}.kl-request-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2)}.kl-device-request-entry{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.kl-device-request{display:grid;gap:var(--space-2);padding:var(--space-2) 0}.kl-request-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--space-1);font-size:var(--text-xs)}.kl-khusus{font-size:var(--text-xs);color:var(--text-muted)}.kl-khusus summary{cursor:pointer;color:var(--text-strong);padding:var(--space-1) 0}.kl-audit-row{font-size:var(--text-xs);padding:var(--space-2) 0;border-bottom:1px solid var(--border-hair);overflow-wrap:anywhere}.kl-status-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);font-size:var(--text-sm)}.kl-status-origin{color:var(--text-muted);overflow-wrap:anywhere;min-width:0}.kl-account{display:grid;gap:var(--space-2);flex:1 1 0;min-width:0}.kl-account-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.kl-account-email{font-weight:500;color:var(--text-strong);overflow-wrap:anywhere}.kl-account-projects{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin-top:var(--space-2)}.kl-banner{position:sticky;top:0;z-index:3;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);background:var(--action-bg);color:var(--action-on);border-radius:var(--radius-md);font-size:var(--text-sm);line-height:1.4}.kl-banner-text{flex:1 1 220px;min-width:0;overflow-wrap:anywhere}@media (min-width: 768px){.kl-row-text{flex-basis:200px}}@media (max-width: 767px){.kl-row{flex-direction:column;align-items:flex-start}}.hn-ov{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.hn-ov-section{min-width:0;padding:var(--space-4) var(--space-5);background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.hn-ov-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-3);margin-bottom:var(--space-2);min-width:0}.hn-ov-head-text{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1) var(--space-3);min-width:0}.hn-ov-title{margin:0;font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);line-height:1.2;color:var(--text-strong)}.hn-ov-head-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-left:auto}.hn-ov-meta{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--text-muted)}.hn-ov-name{min-width:8ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-strong)}.hn-ov-prj .hn-row-main{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto auto;align-items:center;column-gap:var(--space-3)}.hn-ov-pagehead .hn-page-title{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.hn-ov-empty{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);margin:0;padding:var(--space-1) 0;font-family:var(--font-ui);font-size:var(--text-sm);color:var(--text-body)}.hn-ov-empty>svg{flex:0 0 auto;color:var(--text-subtle)}.hn-ov-none{margin:0;padding:var(--space-1) 0}.hn-ov-cov{min-width:0;display:flex;align-items:center;gap:var(--space-2)}.hn-ov-bar{flex:1 1 auto;min-width:0}.hn-ov-pct{flex:0 0 auto;min-width:3ch;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);text-align:right}.hn-ov-prj-meta{white-space:nowrap}.hn-ov-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-3);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border-hair)}.hn-ov-foot-link{min-width:0;max-width:100%;min-height:30px;margin:0;padding:var(--space-1) var(--space-3);display:inline-flex;align-items:center;gap:var(--space-2);text-align:left;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-body);font:var(--weight-medium) var(--text-sm)/1.35 var(--font-ui);white-space:normal;cursor:pointer}.hn-ov-foot-link:hover{background:var(--bone-200)}.hn-ov-foot-link>svg{flex:0 0 auto}@media (max-width: 767px){.hn-ov-section{padding:var(--space-4)}.hn-ov-prj .hn-row-main{grid-template-columns:minmax(0,1fr) auto;row-gap:var(--space-1)}.hn-ov-prj .hn-ov-cov{grid-column:1 / -1;order:3}.hn-ov-prj .hn-ov-prj-status{order:2}.hn-ov-prj .hn-ov-prj-meta{order:4;grid-column:1 / -1}.hn-ov-attn .hn-row-main{flex-wrap:wrap;align-items:center;row-gap:var(--space-1);column-gap:var(--space-2)}.hn-ov-attn .hn-row-main>:first-child{order:2}.hn-ov-attn .hn-ov-name{order:1;flex:1 1 100%;white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.hn-ov-attn .hn-ov-meta{order:2;flex:1 1 0;min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.hn-ov-foot-link{width:100%;min-height:var(--touch-target);padding-inline:var(--space-2)}}.hn-ovk-masthead{text-align:center;margin-bottom:var(--space-2)}.hn-ovk-title{margin:0;font-family:var(--font-display);font-size:30px;font-weight:600;letter-spacing:.02em;color:var(--text-strong)}.hn-ovk-dateline{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;border-top:2px solid var(--text-strong);border-bottom:1px solid var(--text-strong);padding:4px 0;margin-top:6px;font-family:var(--font-mono);font-size:12px;color:var(--text-muted)}.hn-ovk-headline{margin:14px 0 6px;font-family:var(--font-display);font-size:26px;line-height:1.25;color:var(--text-strong);max-width:46ch}.hn-ovk-tone--bad{color:var(--clay-600)}.hn-ovk-tone--good{color:var(--leaf-600)}.hn-ovk-kicker{margin:0;font-family:var(--font-ui);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-subtle)}.hn-ovk-delta{font-size:12px;color:var(--text-muted)}.hn-ovk-koreksi{border:1px solid var(--border-hair);border-left:3px solid var(--amber-600);background:var(--surface-card);padding:8px 12px;margin:8px 0 12px}.hn-ovk-cols{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:16px;align-items:start}.hn-ovk-col{display:grid;gap:16px;min-width:0}.hn-ovk-col--lead{grid-column:1}.hn-ovk-col--mid{grid-column:2}.hn-ovk-col--side{grid-column:3}.hn-ovk-indeks .hn-ov-pct,.hn-ovk-indeks .hn-ov-prj-meta{font-family:var(--font-mono)}.hn-ovk-indeks .hn-ov-prj>*{border-bottom:1px dotted var(--border-hair)}@media (max-width: 1100px){.hn-ovk-cols{grid-template-columns:1fr 1fr}.hn-ovk-col--lead{grid-column:1 / -1}.hn-ovk-col--mid{grid-column:1}.hn-ovk-col--side{grid-column:2}}@media (max-width: 720px){.hn-ovk-cols{grid-template-columns:1fr}.hn-ovk-col--lead,.hn-ovk-col--mid,.hn-ovk-col--side{grid-column:1}.hn-ovk-col--side{order:2}.hn-ovk-col--mid{order:3}.hn-ovk-headline{font-size:21px}.hn-ovk-title{font-size:24px}}.hn-ovk-denyut{background:var(--term-bg);color:var(--term-fg);border-radius:6px;padding:12px}.hn-ovk-denyut .hn-ovk-kicker,.hn-ovk-denyut .hn-ov-meta{color:var(--term-dim)}.hn-ovk-denyut .hn-ov-name{color:var(--term-fg)}.hn-ovk-denyut .hn-ov-empty,.hn-ovk-more{color:var(--term-dim)}.hn-ovk-trace{display:block;flex:1 1 120px;min-width:80px;height:24px;overflow:hidden}.hn-ovk-trace svg{display:block;width:200%;height:100%}.hn-ovk-trace path{fill:none;stroke:var(--brass-400);stroke-width:1.6;vector-effect:non-scaling-stroke}.hn-ovk-trace--flat path{stroke:var(--clay-500);stroke-dasharray:4 4}.hn-ovk-trace-run{animation:hn-ovk-scroll 2.4s linear infinite}.hn-ovk-trace--b .hn-ovk-trace-run{animation-duration:3.1s}.hn-ovk-trace--c .hn-ovk-trace-run{animation-duration:1.9s}.hn-ovk-trace--flat .hn-ovk-trace-run{animation:none}@keyframes hn-ovk-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}@media (prefers-reduced-motion: reduce){.hn-ovk-trace-run{animation:none}}.hn-ovk-denyut .hn-row-main{flex-wrap:wrap}.hn-ovk-denyut .hn-row{border-bottom-color:var(--term-line)}.hn-ovk-denyut .hn-row-interactive:hover,.hn-ovk-denyut .hn-row-interactive:focus-within{background:var(--term-line)}.hn-ovk-denyut .hn-ov-head-actions{--text-body: var(--term-fg);--bone-200: var(--term-line)}.hn-ovk-panel{background:var(--surface-card);border:1px solid var(--border-hair);border-radius:6px;padding:12px;display:grid;gap:6px;min-width:0}.hn-ovk-panel p{margin:0}.hn-ovk-figure{margin:0;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.hn-ovk-big{font-family:var(--font-display);font-size:32px;line-height:1;color:var(--text-strong)}.hn-ovk-unit{font-size:13px;color:var(--text-muted)}.hn-ovk-lede{margin:0;font-family:var(--font-display);font-size:17px;color:var(--text-strong)}.hn-ovk-mono{font-family:var(--font-mono)}.hn-ovk-pill{font-size:11px;font-weight:600;padding:1px 8px;border-radius:999px;background:var(--brass-100);color:var(--brass-700)}.hn-ovk-pill--bad{background:var(--clay-100);color:var(--clay-600)}.hn-ovk-river{width:100%;height:56px}.hn-ovk-river path{fill:var(--brass-100);stroke:var(--brass-500);stroke-width:1}.hn-ovk-river-labels{margin:0;display:flex;justify-content:space-between;font-size:11px;color:var(--text-muted)}.hn-ovk-spark{width:100%;height:44px}.hn-ovk-spark polyline{fill:none;stroke:var(--brass-500);stroke-width:1.5;vector-effect:non-scaling-stroke}.hn-ovk-spark-proj{stroke:var(--brass-500);stroke-dasharray:3 2;vector-effect:non-scaling-stroke}.hn-ovk-spark-limit{stroke:var(--clay-500);stroke-width:.6;vector-effect:non-scaling-stroke}.hn-ovk-heatwrap{margin-top:16px}.hn-ovk-heat{display:grid;grid-template-columns:48px repeat(24,minmax(0,1fr));gap:2px;align-items:center}.hn-ovk-heat-day{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}.hn-ovk-heat-cell{aspect-ratio:1;border-radius:2px;background:var(--bone-200)}.hn-ovk-heat-cell--1{background:var(--brass-100)}.hn-ovk-heat-cell--2{background:var(--brass-300)}.hn-ovk-heat-cell--3{background:var(--brass-400)}.hn-ovk-heat-cell--4{background:var(--brass-600)}@media (max-width: 720px){.hn-ovk-heat{grid-template-columns:36px repeat(24,minmax(0,1fr));gap:1px}}.hn-skills-workspace{display:flex;flex-direction:column;flex:1 1 0%;min-height:0;min-width:0;gap:var(--space-3)}.hn-skill-master{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;min-width:0;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);overflow:hidden}.hn-skill-master-foot{display:flex;justify-content:flex-end;padding:var(--space-2);border-top:1px solid var(--border-hair)}.hn-skill-list{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.hn-skill-list-tools{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-hair)}.hn-skill-list-scroll{flex:1 1 auto;min-height:0;overflow:auto;padding:var(--space-1) var(--space-2) var(--space-2)}.hn-skill-list-error{padding:4px 8px;font-size:var(--text-xs);color:var(--clay-600)}.hn-skill-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.hn-skill-row{display:flex;flex-direction:column;gap:2px;width:100%;box-sizing:border-box;min-height:44px;padding:8px 10px;border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;min-width:0}.hn-skill-row:hover{background:var(--bone-200)}.hn-skill-row.is-selected{background:var(--brass-100);box-shadow:inset 3px 0 0 var(--brass-500)}.hn-skill-row:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-skill-row-head{display:flex;align-items:center;gap:6px;min-width:0}.hn-skill-row-name{flex:1 1 auto;min-width:0;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-skill-row-desc{font-size:var(--text-xs);color:var(--text-subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-skill-row-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:var(--text-2xs);color:var(--text-subtle)}.hn-skill-detail{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;min-width:0;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);overflow:hidden}.hn-skill-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-hair);min-width:0}.hn-skill-detail-text{display:flex;flex-direction:column;gap:2px;min-width:0}.hn-skill-detail-name{font-family:var(--font-mono);font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-strong);overflow-wrap:anywhere}.hn-skill-detail-desc{font-size:var(--text-sm);color:var(--text-muted)}.hn-skill-detail-body{display:flex;flex-wrap:wrap;flex:1 1 auto;min-height:0;align-items:stretch}.hn-skill-detail-structure{flex:0 1 240px;min-width:200px;min-height:200px;display:flex}.hn-skill-detail-editor{flex:1 1 420px;min-width:0;min-height:320px;display:flex}.hn-skill-structure{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;border-right:1px solid var(--border-hair)}.hn-skill-structure-head{padding:10px 14px;border-bottom:1px solid var(--border-hair)}.hn-skill-structure-name{font-size:var(--text-xs);color:var(--text-strong)}.hn-skill-structure-tree{flex:1 1 auto;min-height:0;overflow:auto;padding:8px}.hn-skill-structure-foot{display:flex;gap:8px;padding:8px;border-top:1px solid var(--border-hair);flex-wrap:wrap}.hn-skill-error-text{color:var(--clay-600)}.hn-skill-editor{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0}.hn-skill-editor-head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;padding:10px 16px;border-bottom:1px solid var(--border-hair)}.hn-skill-editor-path{flex:1 1 auto;min-width:0;font-size:var(--text-sm);overflow-wrap:anywhere}.hn-skill-frontmatter{padding:10px 16px;border-bottom:1px solid var(--border-hair);background:var(--bone-200)}.hn-skill-fm-name{font-family:var(--font-mono);font-size:var(--text-xs)}.hn-skill-fm-desc{font-size:var(--text-sm);color:var(--text-muted)}.hn-skill-editor-body{flex:1 1 auto;min-height:0;overflow:auto;padding:var(--space-4)}.hn-skill-editor-body.is-edit{padding:0}.hn-skill-textarea{display:block;width:100%;height:100%;min-height:320px;box-sizing:border-box;resize:none;border:0;padding:var(--space-4);background:transparent;color:var(--text-body);font-family:var(--font-mono);font-size:var(--text-sm)}.hn-skill-textarea:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-skill-pre{margin:0;font-family:var(--font-mono);font-size:var(--text-sm);white-space:pre-wrap}.hn-skill-savebar{position:sticky;bottom:0;z-index:1;display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-top:1px solid var(--border-hair);background:var(--bone-100)}.hn-skill-conflict{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);font-size:var(--text-xs);color:var(--clay-600)}.hn-agents{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-agents-head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.hn-agents-scope{flex:1 1 280px;min-width:0;margin:0;font-size:var(--text-xs);color:var(--text-subtle)}.hn-agent-evidence{border:1px solid var(--border-hair);border-radius:var(--radius-sm);padding:0 var(--space-3);background:var(--surface-card);min-width:0}.hn-agent-evidence-summary{display:flex;align-items:center;min-height:36px;cursor:pointer;font-size:var(--text-xs);color:var(--text-muted)}.hn-agent-evidence-summary:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-agent-evidence-body{display:flex;flex-direction:column;gap:var(--space-2);padding-bottom:var(--space-3);min-width:0}.hn-agent-card{display:flex;flex-direction:column;gap:6px;padding:14px;min-width:0;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg)}.hn-agent-head{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0}.hn-agent-name{font-family:var(--font-mono);font-weight:var(--weight-semibold);color:var(--text-strong);overflow-wrap:anywhere}.hn-agent-desc{margin:0;font-size:var(--text-xs);color:var(--text-muted)}.hn-agent-note{margin:0;font-size:var(--text-xs);color:var(--text-muted);line-height:1.5}.hn-agent-error{display:block;margin-top:3px;color:var(--clay-600)}.hn-agent-meta{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin:0;font-size:var(--text-xs);color:var(--text-subtle)}.hn-agent-meta>div{display:flex;gap:4px;min-width:0}.hn-agent-meta dt{color:var(--text-subtle)}.hn-agent-meta dd{margin:0;color:var(--text-body);overflow-wrap:anywhere}.hn-agent-card>.hn-agent-evidence{margin-top:var(--space-1)}.hn-agent-samples{display:flex;flex-direction:column;gap:var(--space-2)}.hn-agent-sample{padding:var(--space-2);border:1px solid var(--border-hair);border-radius:var(--radius-sm)}.hn-agent-sample-meta{font-size:var(--text-xs);color:var(--text-subtle);margin-bottom:6px}.hn-agent-sample-form{display:flex;flex-wrap:wrap;gap:var(--space-2)}.hn-agent-metrics{display:flex;gap:14px;flex-wrap:wrap;padding-top:9px;border-top:1px solid var(--border-hair);font-size:var(--text-xs);color:var(--text-subtle)}.hn-agent-stat{display:flex;flex-direction:column;gap:2px;max-width:280px}.hn-agent-stat-caption{color:var(--text-muted)}.hn-agent-stat-line{font-size:var(--text-xs)}.hn-agent-variants{margin-top:var(--space-2)}.hn-agent-variants summary{cursor:pointer;font-size:var(--text-xs);min-height:32px;display:flex;align-items:center}.hn-agent-variants ul{font-size:var(--text-xs);color:var(--text-muted);padding-left:20px}.hn-agent-grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3)}@media (max-width: 767px){.hn-skill-detail-structure,.hn-skill-detail-editor{flex-basis:100%;min-width:0}.hn-skill-detail-structure{min-height:0;max-height:220px}.hn-skill-detail-editor{min-height:320px}.hn-agent-grid2{grid-template-columns:minmax(0,1fr)}}.hn-am-intro{font-size:12.5px;color:var(--text-muted);margin-bottom:12px;line-height:1.5}.hn-am-warn{font-size:12.5px;color:var(--status-warn, var(--text-muted));margin-bottom:12px}.hn-am-row{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}.hn-am-grid{display:grid;gap:10px}.hn-am-label{margin-bottom:4px}.hn-am-note{font-size:12.5px;color:var(--text-subtle)}.hn-qa-stack{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-qa-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.hn-qa-toolbar-project{flex:0 1 240px;min-width:0}.hn-qa-intro{margin:0;max-width:70ch;font-size:var(--text-sm);color:var(--text-subtle)}.hn-qa-note{margin:0;font-size:var(--text-xs);color:var(--text-subtle)}.hn-qa-note-list{margin:0;padding-left:18px}.hn-qa-error{margin:0;font-size:var(--text-sm);color:var(--status-err);overflow-wrap:anywhere}.hn-qa-code{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--text-subtle);white-space:nowrap}.hn-qa-label{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-strong);margin-bottom:var(--space-1)}.hn-qa-pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--text-sm);color:var(--text-body)}.hn-qa-row-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1 1 200px}.hn-qa-row-head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);min-width:0}.hn-qa-row-title{display:block;font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-strong);overflow-wrap:anywhere;min-width:0}.hn-qa-row-line{display:flex;flex-wrap:wrap;align-items:center;gap:2px var(--space-3);min-width:0;font-size:var(--text-xs);color:var(--text-subtle)}.hn-qa-row-line>span{min-width:0;overflow-wrap:anywhere}.hn-qa-row-stat{color:var(--text-muted)}.hn-qa-editor{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-qa-bar{position:sticky;top:0;z-index:2;display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2) 0;background:var(--surface-page);border-bottom:1px solid var(--border-hair);min-width:0}.hn-qa-bar-title{flex:1 1 200px;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.hn-qa-bar-name{margin:0;min-width:0;font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-qa-bar-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);flex:0 0 auto;min-width:0}.hn-qa-bar-save{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:360px;font-size:var(--text-xs);color:var(--text-subtle)}.hn-qa-bar-save.is-error{color:var(--status-err)}@media (max-width: 767px){.hn-qa-editor{padding-bottom:calc(84px + env(safe-area-inset-bottom))}.hn-qa-bar-actions{position:fixed;left:0;right:0;bottom:0;z-index:5;justify-content:flex-end;padding:var(--space-2) var(--page-gutter-x) calc(var(--space-2) + env(safe-area-inset-bottom));background:var(--surface-card);border-top:1px solid var(--border-hair)}.hn-qa-bar-save{flex:1 1 100%;max-width:none;order:-1}}.hn-qa-info{display:flex;flex-direction:column;gap:var(--space-2);min-width:0;padding:var(--space-3) var(--space-4);background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg)}.hn-qa-info-head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);min-width:0}.hn-qa-info-title{margin:0;flex:1 1 160px;min-width:0;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-qa-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:var(--space-2) var(--space-4);margin:0;min-width:0}.hn-qa-facts>div{min-width:0}.hn-qa-facts dt{font-size:var(--text-2xs);color:var(--text-subtle)}.hn-qa-facts dd{margin:0;font-size:var(--text-sm);color:var(--text-strong);overflow-wrap:anywhere}.hn-qa-form{display:flex;flex-direction:column;min-width:0}.hn-qa-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));min-width:0}.hn-qa-fieldset{border:0;margin:0 0 var(--space-3);padding:0;min-width:0}.hn-qa-legend{padding:0;margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-qa-more{margin-top:var(--space-1)}.hn-qa-more>summary{cursor:pointer;color:var(--text-subtle);font-size:var(--text-sm);padding:var(--space-1) 0}.hn-qa-file{display:block;width:100%;max-width:100%;font:var(--text-sm)/1.4 var(--font-ui);color:var(--text-body)}.hn-qa-file::file-selector-button{margin-right:10px;height:34px;padding:0 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-strong);font:var(--weight-medium) var(--text-sm)/1 var(--font-ui);cursor:pointer;box-shadow:var(--shadow-xs)}.hn-qa-file::file-selector-button:hover{background:var(--bone-100)}.hn-qa-file:focus-visible{outline:2px solid var(--border-focus);outline-offset:3px;border-radius:var(--radius-sm)}.hn-qa-file:disabled{opacity:.5}.hn-qa-modal-stack{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-qa-check{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-qa-check>li{display:grid;grid-template-columns:22px minmax(0,1fr);gap:var(--space-2);align-items:start;padding-bottom:var(--space-3);border-bottom:1px solid var(--border-hair)}.hn-qa-check>li:last-child{border-bottom:0;padding-bottom:0}.hn-qa-check-icon{display:inline-flex;padding-top:1px}.hn-qa-check-icon.is-ok{color:var(--leaf-600)}.hn-qa-check-icon.is-warn{color:var(--amber-600)}.hn-qa-check-icon.is-miss{color:var(--clay-600)}.hn-qa-check-name{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-qa-check-note{font-size:var(--text-xs);color:var(--text-subtle);overflow-wrap:anywhere}.hn-qa-check-body{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.hn-qa-export{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.hn-qa-export>a{justify-content:flex-start}.hn-qa-case-head{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-2);min-width:0}.hn-qa-case-code{flex:0 1 120px;min-width:0}.hn-qa-case-name{flex:1 1 200px;min-width:0}.hn-qa-case-status{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-1);min-width:0}.hn-qa-case-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));margin-top:var(--space-2);min-width:0}.hn-qa-add{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:flex-start;min-width:0}.hn-qa-add-field{flex:1 1 240px;min-width:0}.hn-qa-save{display:inline-flex;align-items:center;gap:6px;min-height:20px;font-size:var(--text-xs);color:var(--text-subtle);overflow-wrap:anywhere}.hn-qa-save.is-saved{color:var(--leaf-600)}.hn-qa-save.is-error{color:var(--status-err)}.hn-qa-seg{min-width:0}.hn-qa-seg .hn-choice-target{position:relative;min-height:36px;border-radius:var(--radius-sm);background:var(--surface-card);border:1px solid var(--border-strong)}.hn-qa-seg .hn-choice-target>span:last-child{display:flex;align-items:center;min-height:36px;padding:0 12px}.hn-qa-seg .hn-choice-control{position:absolute;left:0;top:0;opacity:0}.hn-qa-seg .hn-choice-target:focus-within{outline:2px solid var(--border-focus);outline-offset:2px}.hn-qa-seg .hn-choice-target.is-on{background:var(--brass-100);border-color:var(--brass-600)}.hn-qa-seg .hn-choice-target.is-on>span:last-child{font-weight:var(--weight-semibold)}.hn-qa-detail-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));min-width:0}.hn-qa-detail-stack{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-qa-steps{margin:0;padding-left:20px;font-size:var(--text-sm);color:var(--text-body)}.hn-qa-steps li{overflow-wrap:anywhere}.hn-qa-result-line{font-size:var(--text-xs);color:var(--text-subtle);overflow-wrap:anywhere}.hn-qa-result-line.is-err{color:var(--status-err)}.hn-qa-attach{min-width:0;margin-top:var(--space-2);border-radius:var(--radius-sm)}.hn-qa-attach:focus-visible{outline:2px solid var(--border-focus);outline-offset:3px}.hn-qa-attach-list{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-3);min-width:0}.hn-qa-attach-item{display:grid;gap:4px;max-width:160px;min-width:0}.hn-qa-attach-img{height:96px;max-width:160px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border-strong)}.hn-qa-attach-img.is-compact{height:64px}.hn-qa-attach-file{font-size:var(--text-xs);overflow-wrap:anywhere}.hn-qa-attach-meta{font-size:var(--text-2xs);color:var(--text-subtle);overflow-wrap:anywhere}.hn-qa-attach-hint{margin:var(--space-2) 0 0;font-size:var(--text-xs);color:var(--text-subtle)}.hn-qa-preview{display:grid;gap:var(--space-3);grid-template-columns:minmax(0,1fr);min-width:0}.hn-qa-preview .hn-md table{display:block;overflow-x:auto;max-width:100%}.hn-qa-preview .hn-md th{white-space:nowrap}.hn-qa-preview .hn-md td{min-width:112px;overflow-wrap:break-word;word-break:normal}.hn-review{display:flex;flex-direction:column;gap:12px;min-width:0}.hn-review-topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.hn-review-head{display:flex;flex-direction:column;gap:2px;min-width:0}.hn-review-title{margin:0;font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;color:var(--text-strong);line-height:1.25;overflow-wrap:anywhere}.hn-review-stat{margin:0;font-size:var(--text-sm);color:var(--text-muted)}.hn-review-delta{font-family:var(--font-mono);font-weight:600;color:var(--text-strong)}.hn-review-pane{display:flex;flex-direction:column;min-width:0;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);overflow:hidden}.hn-review-list{padding:6px 4px;min-width:0}.hn-review-sep{padding:8px 8px 6px;margin-top:8px;border-top:1px solid var(--border-hair)}.hn-review-legend{margin:0;padding:8px 12px;border-top:1px solid var(--border-hair);font-size:var(--text-xs);color:var(--text-subtle)}.hn-review-viewer{display:flex;flex-direction:column;min-width:0;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);overflow:hidden}.hn-review-viewbar{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid var(--border-hair);min-width:0}.hn-review-path{flex:1 1 180px;min-width:0;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;color:var(--text-strong);overflow-wrap:anywhere}.hn-review-filestat{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap}.hn-review-seg{display:inline-flex;gap:2px;padding:2px;background:var(--bone-100);border-radius:var(--radius-pill)}.hn-review-seg button{padding:4px 12px;border:none;cursor:pointer;border-radius:var(--radius-pill);font:inherit;font-size:var(--text-xs);color:var(--text-muted);background:transparent}.hn-review-seg button[aria-pressed=true]{background:var(--surface-card);color:var(--text-strong);font-weight:600}.hn-review-seg button:focus-visible{outline:2px solid var(--border-focus);outline-offset:1px}.hn-review-body{min-width:0;background:var(--surface-card)}.hn-review-diff{padding:10px 0}.hn-review-truncated{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 12px;font-size:var(--text-xs);color:var(--text-muted)}.hn-review-truncated a{color:var(--brass-700);font-weight:500}.hn-review-pre{margin:0;padding:12px 16px;font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.6;white-space:pre-wrap;word-break:break-word;color:var(--text-body)}.hn-review-decide{position:sticky;bottom:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:8px 12px;flex-wrap:wrap;padding:10px 12px;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.hn-review-decide-hint{margin:0;flex:1 1 260px;font-size:var(--text-sm);color:var(--text-muted);line-height:1.5}.hn-review-decide-err{flex:1 1 100%;margin:0}.hn-review-decide-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.hn-review-more{display:inline-flex}@media (min-width: 768px){.hn-review-list,.hn-review-body{max-height:min(640px,60dvh);overflow:auto}}@media (pointer: coarse),(max-width: 767px){.hn-review button{min-height:var(--touch-target)}.hn-review-seg button{min-height:var(--touch-target);padding:8px 14px}}@media (max-width: 767px){.hn-review-decide{padding-bottom:calc(10px + var(--safe-bottom))}.hn-review-viewbar{align-items:stretch}.hn-review-path{flex-basis:100%}}@media (max-width: 399px){.hn-review-decide-hint{flex:1 1 0;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.hn-reconcile-error{font-size:var(--text-sm);color:var(--clay-600);background:var(--status-err-tint);border:1px solid var(--clay-500);border-radius:var(--radius-sm);padding:8px 10px;margin-bottom:12px}.hn-reconcile-card{border:1px solid var(--border-hair);border-radius:var(--radius-md);padding:12px;margin:0 0 12px;background:var(--surface-card);min-width:0}.hn-reconcile-head{display:flex;align-items:baseline;gap:8px 10px;flex-wrap:wrap;font-size:var(--text-sm);color:var(--text-strong)}.hn-reconcile-id{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);overflow-wrap:anywhere}.hn-reconcile-hint{font-size:var(--text-xs);color:var(--text-muted)}.hn-reconcile-meta{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:4px;font-size:var(--text-xs);color:var(--text-subtle)}.hn-reconcile-same{margin:10px 0 0;font-size:var(--text-sm);color:var(--text-muted)}.hn-reconcile-fields{margin:10px 0 0;display:flex;flex-direction:column;gap:6px;min-width:0}.hn-reconcile-field{display:grid;grid-template-columns:minmax(0,110px) minmax(0,1fr) minmax(0,1fr);gap:8px 12px;align-items:start;padding:8px 10px;border-radius:var(--radius-sm);background:var(--bone-100)}.hn-reconcile-field dt{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-strong);overflow-wrap:anywhere}.hn-reconcile-field dd{margin:0;min-width:0;font-size:var(--text-xs);color:var(--text-body)}.hn-reconcile-field code{display:block;font-family:var(--font-mono);font-size:var(--text-xs);white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5}.hn-reconcile-field-head{background:transparent;padding-bottom:0}.hn-reconcile-field-head dt,.hn-reconcile-field-head dd{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--text-subtle);font-weight:600}.hn-reconcile-side{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;font-size:var(--text-xs);color:var(--text-subtle);font-weight:600}.hn-reconcile-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:10px}@media (max-width: 767px){.hn-reconcile-field{grid-template-columns:minmax(0,1fr);gap:4px}.hn-reconcile-field-head{display:none}.hn-reconcile-side{position:static;width:auto;height:auto;overflow:visible;clip-path:none;white-space:normal;display:block;margin-bottom:2px}.hn-reconcile-actions>*{flex:1 1 140px;justify-content:center}.hn-reconcile-field dt{font-weight:600}}.hn-bl-screen{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;min-width:0}.hn-bl-toolbar{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4);min-width:0}.hn-bl-stage-tabs{max-width:100%;overflow-x:auto}.hn-bl-status-line{display:flex;flex-wrap:wrap;gap:var(--space-2);min-height:0}.hn-bl-status-line:empty{display:none}.hn-bl-stale{font:var(--weight-medium) var(--text-xs)/1.5 var(--font-ui);color:var(--status-warn)}.hn-bl-muted{font:var(--weight-regular, 400) var(--text-xs)/1.5 var(--font-ui);color:var(--text-muted)}.hn-bl-hint{margin:0;font:var(--weight-regular, 400) var(--text-xs)/1.5 var(--font-ui);color:var(--text-muted)}.hn-bl-gap-top{margin-top:var(--space-2)}.hn-bl-gap-bottom{margin-bottom:var(--space-2)}.hn-bl-view-toggle{display:inline-flex;gap:2px;padding:2px;background:var(--bone-200);border-radius:var(--radius-sm)}.hn-bl-view-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer}.hn-bl-view-btn:hover{color:var(--text-strong)}.hn-bl-view-btn[aria-pressed=true]{background:var(--surface-card);color:var(--text-strong);box-shadow:var(--shadow-xs)}.hn-bl-view-btn:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-bl-full{width:100%}.hn-bl-date-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.hn-bl-body{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;min-width:0}.hn-bl-list-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;border:1px solid var(--border-hair);border-radius:var(--radius-lg);background:var(--surface-card)}.hn-bl-pager{margin-top:var(--space-3);border:1px solid var(--border-hair);border-radius:var(--radius-lg);overflow:hidden}.hn-bl-prio{--dot: var(--ink-400);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:12px;height:12px}.hn-bl-prio:before{content:"";display:block;border-radius:50%;box-sizing:border-box;width:9px;height:9px;border:1.5px solid var(--dot);background:var(--dot)}.hn-bl-prio-high:before{width:12px;height:12px}.hn-bl-prio-low:before{background:transparent}.hn-bl-prio[data-status=done]{--dot: var(--leaf-500)}.hn-bl-prio[data-status=running]{--dot: var(--brass-600)}.hn-bl-prio[data-status=queued]{--dot: var(--brass-400, var(--brass-500))}.hn-bl-prio-text{display:inline-flex;align-items:center;gap:var(--space-2);font:var(--weight-medium) var(--text-sm)/1 var(--font-ui);color:var(--text-strong)}.hn-bl-stage-pill{flex:0 0 auto}.hn-bl-id{font:var(--weight-regular, 400) var(--text-2xs)/1 var(--font-mono);color:var(--text-subtle);white-space:nowrap}.hn-bl-source{display:inline-flex;align-items:center;gap:var(--space-1);white-space:nowrap;font:var(--weight-regular, 400) var(--text-2xs)/1 var(--font-ui);color:var(--text-muted)}.hn-bl-row-body{display:flex;flex-direction:column;gap:var(--space-1);min-width:0;flex:1 1 auto;text-align:left}.hn-bl-row-title{font:var(--weight-medium) var(--text-md)/1.35 var(--font-ui);color:var(--text-strong);overflow-wrap:anywhere;min-width:0}.hn-bl-row-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);min-width:0}.hn-bl-actions{display:inline-flex;align-items:center;gap:var(--space-1);flex:0 0 auto}.hn-bl-title{display:block;width:100%;padding:0;border:0;background:transparent;cursor:pointer;text-align:left;font:var(--weight-semibold) var(--text-md)/1.35 var(--font-ui);color:var(--text-strong);overflow-wrap:anywhere}.hn-bl-title:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-bl-board{display:flex;overflow-x:auto;gap:var(--space-2);align-items:stretch}.hn-bl-col{flex:0 0 248px;display:flex;flex-direction:column;min-height:0;padding:var(--space-2);border-radius:var(--radius-lg);background:var(--bone-100);border:1px solid var(--border-hair);transition:var(--transition-fast)}.hn-bl-col[data-active]{border-style:dashed}.hn-bl-col[data-hot]{background:var(--brass-100);border-color:var(--brass-500)}.hn-bl-col[data-dimmed]{opacity:.5}.hn-bl-col-head{display:flex;align-items:center;gap:var(--space-1);margin-bottom:var(--space-2);min-height:20px}.hn-bl-col-count{margin-left:auto;font:var(--weight-regular, 400) var(--text-2xs)/1 var(--font-mono);color:var(--text-subtle)}.hn-bl-col-body{display:flex;flex-direction:column;gap:var(--space-2);min-height:0;overflow-y:auto}.hn-bl-card{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);cursor:default}.hn-bl-card[data-draggable]{cursor:grab}.hn-bl-card[data-dragging]{opacity:.4}.hn-bl-card-head{display:flex;align-items:center;gap:var(--space-2);min-width:0}.hn-bl-card-badges{display:flex;flex-wrap:wrap;gap:var(--space-1)}.hn-bl-card-foot{display:flex;justify-content:flex-end}.hn-bl-stagebar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1)}.hn-bl-stage{position:relative;display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-pill)}.hn-bl-stage[data-state=active]{background:var(--brass-100)}.hn-bl-stage:not(:last-child):after{content:"";display:inline-block;width:12px;height:2px;margin-left:var(--space-1);background:var(--bone-300);border-radius:1px}.hn-bl-stage[data-state=done]:after{background:var(--leaf-500)}.hn-bl-stage-dot{width:8px;height:8px;border-radius:50%;background:var(--bone-400);flex:0 0 auto}.hn-bl-stage[data-state=done] .hn-bl-stage-dot{background:var(--leaf-500)}.hn-bl-stage[data-state=active] .hn-bl-stage-dot{background:var(--brass-500)}.hn-bl-stage-label{font:var(--weight-medium) var(--text-2xs)/1 var(--font-mono);color:var(--brass-700)}.hn-bl-detail{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.hn-bl-section{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-bl-section-title{margin:0;font:var(--weight-semibold) var(--text-xs)/1.2 var(--font-mono);color:var(--text-muted);letter-spacing:var(--tracking-wide, .04em);text-transform:uppercase}.hn-bl-summary-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3)}.hn-bl-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2) var(--space-4);margin:0}.hn-bl-facts>div{display:flex;flex-direction:column;gap:2px;min-width:0}.hn-bl-facts dt{font:var(--weight-regular, 400) var(--text-2xs)/1.2 var(--font-mono);color:var(--text-subtle);text-transform:uppercase}.hn-bl-facts dd{margin:0;font:var(--weight-regular, 400) var(--text-sm)/1.4 var(--font-ui);color:var(--text-body);overflow-wrap:anywhere}.hn-bl-field{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.hn-bl-field-value{font:var(--weight-regular, 400) var(--text-sm)/1.5 var(--font-ui);color:var(--text-strong);white-space:pre-wrap;overflow-wrap:anywhere}.hn-bl-inline-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.hn-bl-end{justify-content:flex-end}.hn-bl-cta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.hn-bl-subsection{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.hn-bl-stack-list{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.hn-bl-dep{display:flex;align-items:center;gap:var(--space-2);font:var(--weight-regular, 400) var(--text-sm)/1.4 var(--font-ui)}.hn-bl-trail{font:var(--weight-regular, 400) var(--text-sm)/1.4 var(--font-ui);color:var(--text-muted);overflow-wrap:anywhere}.hn-bl-checklist{display:flex;flex-direction:column;gap:var(--space-2);max-height:132px;overflow-y:auto;padding:var(--space-2);border:1px solid var(--border-hair);border-radius:var(--radius-sm)}.hn-bl-status-now{font:var(--weight-semibold) var(--text-sm)/1.4 var(--font-ui);color:var(--text-strong)}.hn-bl-callout{padding:var(--space-2) var(--space-3);border:1px solid var(--border-hair);border-radius:var(--radius-sm);background:var(--bone-100);font:var(--weight-regular, 400) var(--text-xs)/1.5 var(--font-ui);color:var(--text-muted)}.hn-bl-callout-title{font:var(--weight-semibold) var(--text-xs)/1.5 var(--font-ui);color:var(--text-strong)}.hn-bl-confirm-lead{font:var(--weight-regular, 400) var(--text-sm)/1.5 var(--font-ui);color:var(--text-strong);margin-bottom:var(--space-3)}.hn-bl-file-list{margin:0 0 var(--space-4);padding-left:var(--space-4);font:var(--weight-regular, 400) var(--text-xs)/1.6 var(--font-mono);color:var(--text-muted);overflow-wrap:anywhere}.hn-bl-advanced{border-top:1px solid var(--border-hair);padding-top:var(--space-3);min-width:0}.hn-bl-advanced>summary{cursor:pointer;list-style:none;font:var(--weight-semibold) var(--text-xs)/1.2 var(--font-mono);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--tracking-wide, .04em);padding:var(--space-1) 0;min-height:var(--touch-target)}.hn-bl-advanced>summary::-webkit-details-marker{display:none}.hn-bl-advanced>summary:before{content:"+ "}.hn-bl-advanced[open]>summary:before{content:"− "}.hn-bl-advanced>summary:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-bl-advanced-body{display:flex;flex-direction:column;gap:var(--space-4);padding-top:var(--space-3);min-width:0}.hn-bl-danger{display:flex;flex-direction:column;gap:var(--space-1);padding-top:var(--space-3);border-top:1px solid var(--border-hair)}.hn-bl-danger .hn-bl-section-title{color:var(--clay-600)}@media (max-width: 767px){.hn-bl-toolbar{gap:var(--space-2)}.hn-bl-screen{min-height:auto}.hn-bl-body{flex:0 0 auto;min-height:auto}.hn-bl-list-scroll{flex:0 0 auto;min-height:auto;overflow:visible}.hn-bl-screen .hn-bl-stage-tabs{overflow:visible;flex-wrap:wrap}.hn-bl-board{flex-direction:column;overflow-x:hidden}.hn-bl-col{flex:0 0 auto;width:100%}.hn-bl-col-body{overflow-y:visible}.hn-bl-facts{grid-template-columns:minmax(0,1fr)}.hn-bl-list-scroll{border-radius:var(--radius-md)}.hn-bl-row-title{white-space:normal}.hn-bl-card-foot{justify-content:stretch}.hn-bl-card-foot .hn-bl-actions{width:100%;justify-content:space-between}}.hn-bl-proj{font:var(--weight-regular, 400) var(--text-xs)/1.2 var(--font-ui);color:var(--text-muted);max-width:16ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-bl-card>.hn-bl-proj{display:block;max-width:100%}.hn-pc{display:flex;flex-direction:column;gap:14px}.hn-pc-kuota{font-size:12.5px;color:var(--text-muted);line-height:1.6}.hn-pc-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 16px;background:none;border:none;border-bottom:1px solid var(--border-hair);cursor:pointer}.hn-pc-type{font-size:12.5px;color:var(--text-muted);width:110px}.hn-pc-summary{flex:1;min-width:0;color:var(--text-strong)}.hn-pc-meta{font-size:12.5px;color:var(--text-muted)}.hn-pc-transcript{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.hn-pc-msg{padding:10px 12px;border-radius:var(--radius-lg);border:1px solid var(--border-hair);background:var(--surface-card)}.hn-pc-msg[data-role=klien]{background:var(--bone-100)}.hn-pc-msg[data-blocked=true]{border-color:var(--status-err)}.hn-pc-msg-meta{font-size:11.5px;color:var(--text-muted);margin-bottom:4px}.hn-pc-msg-text{white-space:pre-wrap;line-height:1.6}.hn-pc-blocked{margin-top:8px;font-size:12.5px;color:var(--text-muted)}.hn-pc-raw{white-space:pre-wrap;margin-top:4px}.hn-pc-prd{border:1px solid var(--border-hair);border-radius:var(--radius-lg);padding:12px 14px;margin-bottom:12px}.hn-pc-prd-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.hn-pc-slug{width:240px}.hn-pc-note{margin-top:10px;font-size:12.5px;color:var(--text-muted)}
@@ -1 +1 @@
1
- import{u as l,j as s,n as f}from"./index-BvFCEJud.js";import{R as o}from"./react-DfGhg7ZW.js";const m=6e3;function p({className:a="",style:r={}}){const e=l(),t=!e.idle&&!e.connected&&!e.paused,[i,n]=o.useState(()=>Date.now());o.useEffect(()=>{if(!t)return;n(Date.now());const u=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(u)},[t,e.since]);const c=t&&i-e.since>=m;return s.jsx("span",{role:"status","aria-live":"polite",className:`hn-live-status ${a}`.trim(),style:r,children:c&&s.jsx(f,{tone:"warn",variant:"soft",icon:"wifi-off",children:"koneksi terputus · menyambung ulang…"})})}export{p as L};
1
+ import{u as l,j as s,n as f}from"./index-BRR3JL_o.js";import{R as o}from"./react-DfGhg7ZW.js";const m=6e3;function p({className:a="",style:r={}}){const e=l(),t=!e.idle&&!e.connected&&!e.paused,[i,n]=o.useState(()=>Date.now());o.useEffect(()=>{if(!t)return;n(Date.now());const u=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(u)},[t,e.since]);const c=t&&i-e.since>=m;return s.jsx("span",{role:"status","aria-live":"polite",className:`hn-live-status ${a}`.trim(),style:r,children:c&&s.jsx(f,{tone:"warn",variant:"soft",icon:"wifi-off",children:"koneksi terputus · menyambung ulang…"})})}export{p as L};
@@ -1 +1 @@
1
- import{j as s,B as m,a1 as f}from"./index-BvFCEJud.js";import{R as c}from"./react-DfGhg7ZW.js";import"./markdown-CWEY34jk.js";/* empty css */function p(t,e=Date.now()){return f(t,e)||"—"}function b(t,e=Date.now()){if(!t)return"—";const r=new Date(t).getTime()-e;if(r<=0)return"jatuh tempo";const n=Math.ceil(r/6e4);return n<60?`${n} menit lagi`:`${Math.ceil(n/60)} jam lagi`}function g(t,e,r,n,a=!0){const i=t.trim()===""?NaN:Number(t.replace(",","."));if(!Number.isFinite(i))return n;const o=a?Math.round(i):i;return Math.min(r,Math.max(e,o))}function D(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function y(t,e){if(!t)return"—";const r=new Date(t);if(Number.isNaN(r.getTime()))return"—";const n={dateStyle:"medium",timeStyle:"short"};try{return new Intl.DateTimeFormat("id-ID",e?{...n,timeZone:e}:n).format(r)}catch(a){if(a instanceof RangeError)return new Intl.DateTimeFormat("id-ID",n).format(r);throw a}}function w({message:t,onRetry:e,busy:r=!1}){return s.jsxs("div",{role:"alert",className:"hn-sched-error",children:[s.jsx("span",{className:"hn-sched-error-text",children:t}),s.jsx(m,{size:"sm",variant:"secondary",leftIcon:"rotate-ccw",disabled:r,onClick:e,children:"Coba lagi"})]})}function x(t){const[e,r]=c.useState(t),n=c.useRef(t),a=JSON.stringify(t);c.useEffect(()=>{const o=JSON.stringify(n.current);n.current=t,r(u=>JSON.stringify(u)===o?t:u)},[a]);const i=JSON.stringify(e)!==a;return{draft:e,setDraft:r,dirty:i}}export{w as I,p as a,D as b,g as c,b as d,y as f,x as u};
1
+ import{j as s,B as m,a1 as f}from"./index-BRR3JL_o.js";import{R as c}from"./react-DfGhg7ZW.js";import"./markdown-CWEY34jk.js";/* empty css */function p(t,e=Date.now()){return f(t,e)||"—"}function b(t,e=Date.now()){if(!t)return"—";const r=new Date(t).getTime()-e;if(r<=0)return"jatuh tempo";const n=Math.ceil(r/6e4);return n<60?`${n} menit lagi`:`${Math.ceil(n/60)} jam lagi`}function g(t,e,r,n,a=!0){const i=t.trim()===""?NaN:Number(t.replace(",","."));if(!Number.isFinite(i))return n;const o=a?Math.round(i):i;return Math.min(r,Math.max(e,o))}function D(){return Intl.DateTimeFormat().resolvedOptions().timeZone}function y(t,e){if(!t)return"—";const r=new Date(t);if(Number.isNaN(r.getTime()))return"—";const n={dateStyle:"medium",timeStyle:"short"};try{return new Intl.DateTimeFormat("id-ID",e?{...n,timeZone:e}:n).format(r)}catch(a){if(a instanceof RangeError)return new Intl.DateTimeFormat("id-ID",n).format(r);throw a}}function w({message:t,onRetry:e,busy:r=!1}){return s.jsxs("div",{role:"alert",className:"hn-sched-error",children:[s.jsx("span",{className:"hn-sched-error-text",children:t}),s.jsx(m,{size:"sm",variant:"secondary",leftIcon:"rotate-ccw",disabled:r,onClick:e,children:"Coba lagi"})]})}function x(t){const[e,r]=c.useState(t),n=c.useRef(t),a=JSON.stringify(t);c.useEffect(()=>{const o=JSON.stringify(n.current);n.current=t,r(u=>JSON.stringify(u)===o?t:u)},[a]);const i=JSON.stringify(e)!==a;return{draft:e,setDraft:r,dirty:i}}export{w as I,p as a,D as b,g as c,b as d,y as f,x as u};
@@ -1 +1 @@
1
- import{j as a,cm as j,aH as g,F as u,bO as p,b1 as C,cn as N,g as x,aJ as $,bJ as k,co as S,cp as A,a9 as L,ac as F,ad as M}from"./index-BvFCEJud.js";import{R as O}from"./react-DfGhg7ZW.js";import"./markdown-CWEY34jk.js";/* empty css */const v=[{id:"claude",label:k.claude},{id:"codex",label:k.codex}],T=[{value:"inline",label:"Inline — agen fase mengerjakan task sendiri (cepat)"},{value:"subagent",label:"Subagen per task — implementer + review tiap task (lebih lambat)"}],_={model:null,effort:null};function I({flow:s,phase:n,runtime:r,cell:e,disabled:t,onPick:l}){const d=A(r),i=L(r,e.model??""),m=r==="codex"?F:M,b=[{value:"",label:"— warisi orchestrator"},...e.model&&!d.some(o=>o.id===e.model)?[{value:e.model,label:e.model}]:[],...d.map(o=>({value:o.id,label:o.label}))],E=[{value:"",label:"— warisi"},...e.effort&&!i.includes(e.effort)?[{value:e.effort,label:e.effort}]:[],...i.map(o=>({value:o,label:o}))];return a.jsxs("div",{className:"hn-sched-picks",children:[a.jsx(x,{size:"sm","aria-label":`Model ${s} ${n} ${r}`,value:e.model??"",className:"hn-sched-pick-model",options:b,disabled:t,onChange:o=>{const h=o.target.value||null;l({model:h,effort:h&&e.effort?m(h,e.effort):e.effort},`${n} (${r}) → ${h??"warisi"}`)}}),a.jsx(x,{size:"sm","aria-label":`Effort ${s} ${n} ${r}`,value:e.effort??"",className:"hn-sched-pick-effort",options:E,disabled:t,onChange:o=>l({...e,effort:o.target.value||null},`${n} (${r}) effort → ${o.target.value||"warisi"}`)})]})}function y({flow:s,f:n,putFlow:r}){return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"hn-sched-flow-row",children:[a.jsx("span",{className:"hn-sched-flow-status",children:n.enabled?"Fase dikerjakan subagen":"Satu sesi biasa (subagen nonaktif)"}),a.jsx(C,{checked:n.enabled,"aria-label":`Orkestrasi ${s}`,onChange:e=>r(s,{...n,enabled:e},`Orkestrasi ${u[s]} · ${e?"aktif":"nonaktif"}`)})]}),N.has(s)&&a.jsxs("div",{className:"hn-sched-flow-mode",children:[a.jsx("span",{className:"hn-sched-flow-mode-label",children:"Cara mengerjakan rencana"}),a.jsx(x,{size:"sm","aria-label":`Mode Execute ${s}`,value:n.executeMode??"inline",className:"hn-sched-flow-mode-select",options:T,disabled:!n.enabled,onChange:e=>{const t=e.target.value==="subagent"?"subagent":"inline";r(s,{...n,executeMode:t},`Mode Execute ${u[s]} · ${t==="subagent"?"subagen per task":"inline"}`)}}),a.jsx("span",{className:"hn-sched-flow-mode-note",children:"khusus sesi Claude · Codex selalu inline"})]}),a.jsx($,{children:a.jsxs("table",{className:"hn-sched-matrix",children:[a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{children:"Fase"}),v.map(e=>a.jsx("th",{children:e.label},e.id))]})}),a.jsx("tbody",{children:S[s].map(e=>a.jsxs("tr",{children:[a.jsx("td",{children:e}),v.map(t=>a.jsx("td",{children:a.jsx(I,{flow:s,phase:e,runtime:t.id,cell:n[t.id][e]??_,disabled:!n.enabled,onPick:(l,d)=>r(s,{...n,[t.id]:{...n[t.id],[e]:l}},d)})},t.id))]},e))})]})})]})}function R({flow:s,f:n,putFlow:r}){const[e,t]=O.useState(!1),l=O.useId();return a.jsxs("div",{className:"hn-sched-flow","data-testid":`orch-flow-${s}`,children:[a.jsxs("button",{type:"button",className:"hn-sched-flow-head hn-touch-target","aria-expanded":e,"aria-controls":l,onClick:()=>t(d=>!d),children:[a.jsx("span",{children:u[s]}),a.jsx("span",{className:"hn-sched-flow-state",children:n.enabled?"aktif":"nonaktif"})]}),a.jsx("div",{id:l,className:"hn-sched-flow-body",hidden:!e,children:a.jsx(y,{flow:s,f:n,putFlow:r})})]})}function z({orchestration:s,onChange:n,variant:r="cards"}){const e=s??p,t=i=>e[i]??p[i],l=(i,m,b)=>n({...e,[i]:m},b),d=a.jsxs("div",{className:"hn-sched-group-hint",children:["Sesi utama berperan sebagai ",a.jsx("b",{children:"pengatur"}),"; setiap fase dikerjakan subagen dengan model & effort di bawah. ",a.jsx("b",{children:"Warisi"})," memakai pengaturan sesi utama yang dipilih saat ",a.jsx("b",{children:"Start"}),". Subagen selalu berjalan di runtime yang sama dengan sesi utama: sesi Claude memakai kolom Claude Code, sesi Codex kolom Codex CLI. Flow yang dimatikan berjalan sebagai satu sesi biasa seperti sebelumnya."]});return r==="accordion"?a.jsxs("div",{className:"hn-sched-panel",children:[d,j.map(i=>a.jsx(R,{flow:i,f:t(i),putFlow:l},i))]}):a.jsxs(a.Fragment,{children:[a.jsx(g,{eyebrow:"orkestrasi",title:"Orkestrasi subagen per fase",children:d}),j.map(i=>a.jsx("div",{"data-testid":`orch-flow-${i}`,children:a.jsx(g,{eyebrow:"flow",title:u[i],children:a.jsx(y,{flow:i,f:t(i),putFlow:l})})},i))]})}const c=s=>!!s&&typeof s=="object"&&!Array.isArray(s)&&Object.getPrototypeOf(s)===Object.prototype,f=(s,n)=>{if(s===n)return!0;if(Array.isArray(s)&&Array.isArray(n))return s.length===n.length&&s.every((r,e)=>f(r,n[e]));if(c(s)&&c(n)){const r=Object.keys(s).filter(t=>s[t]!==void 0),e=Object.keys(n).filter(t=>n[t]!==void 0);return r.length===e.length&&r.every(t=>f(s[t],n[t]))}return!1};function w(s,n,r){if(f(n,s)&&r!==void 0)return r;if(!c(s)||!c(n)||!c(r))return n;const e={...r};for(const t of Object.keys(n))e[t]=w(s[t],n[t],r[t]);return e}export{z as O,w as r};
1
+ import{j as a,cm as j,aH as g,F as u,bO as p,b1 as C,cn as N,g as x,aJ as $,bJ as k,co as S,cp as A,a9 as L,ac as F,ad as M}from"./index-BRR3JL_o.js";import{R as O}from"./react-DfGhg7ZW.js";import"./markdown-CWEY34jk.js";/* empty css */const v=[{id:"claude",label:k.claude},{id:"codex",label:k.codex}],T=[{value:"inline",label:"Inline — agen fase mengerjakan task sendiri (cepat)"},{value:"subagent",label:"Subagen per task — implementer + review tiap task (lebih lambat)"}],_={model:null,effort:null};function I({flow:s,phase:n,runtime:r,cell:e,disabled:t,onPick:l}){const d=A(r),i=L(r,e.model??""),m=r==="codex"?F:M,b=[{value:"",label:"— warisi orchestrator"},...e.model&&!d.some(o=>o.id===e.model)?[{value:e.model,label:e.model}]:[],...d.map(o=>({value:o.id,label:o.label}))],E=[{value:"",label:"— warisi"},...e.effort&&!i.includes(e.effort)?[{value:e.effort,label:e.effort}]:[],...i.map(o=>({value:o,label:o}))];return a.jsxs("div",{className:"hn-sched-picks",children:[a.jsx(x,{size:"sm","aria-label":`Model ${s} ${n} ${r}`,value:e.model??"",className:"hn-sched-pick-model",options:b,disabled:t,onChange:o=>{const h=o.target.value||null;l({model:h,effort:h&&e.effort?m(h,e.effort):e.effort},`${n} (${r}) → ${h??"warisi"}`)}}),a.jsx(x,{size:"sm","aria-label":`Effort ${s} ${n} ${r}`,value:e.effort??"",className:"hn-sched-pick-effort",options:E,disabled:t,onChange:o=>l({...e,effort:o.target.value||null},`${n} (${r}) effort → ${o.target.value||"warisi"}`)})]})}function y({flow:s,f:n,putFlow:r}){return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"hn-sched-flow-row",children:[a.jsx("span",{className:"hn-sched-flow-status",children:n.enabled?"Fase dikerjakan subagen":"Satu sesi biasa (subagen nonaktif)"}),a.jsx(C,{checked:n.enabled,"aria-label":`Orkestrasi ${s}`,onChange:e=>r(s,{...n,enabled:e},`Orkestrasi ${u[s]} · ${e?"aktif":"nonaktif"}`)})]}),N.has(s)&&a.jsxs("div",{className:"hn-sched-flow-mode",children:[a.jsx("span",{className:"hn-sched-flow-mode-label",children:"Cara mengerjakan rencana"}),a.jsx(x,{size:"sm","aria-label":`Mode Execute ${s}`,value:n.executeMode??"inline",className:"hn-sched-flow-mode-select",options:T,disabled:!n.enabled,onChange:e=>{const t=e.target.value==="subagent"?"subagent":"inline";r(s,{...n,executeMode:t},`Mode Execute ${u[s]} · ${t==="subagent"?"subagen per task":"inline"}`)}}),a.jsx("span",{className:"hn-sched-flow-mode-note",children:"khusus sesi Claude · Codex selalu inline"})]}),a.jsx($,{children:a.jsxs("table",{className:"hn-sched-matrix",children:[a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{children:"Fase"}),v.map(e=>a.jsx("th",{children:e.label},e.id))]})}),a.jsx("tbody",{children:S[s].map(e=>a.jsxs("tr",{children:[a.jsx("td",{children:e}),v.map(t=>a.jsx("td",{children:a.jsx(I,{flow:s,phase:e,runtime:t.id,cell:n[t.id][e]??_,disabled:!n.enabled,onPick:(l,d)=>r(s,{...n,[t.id]:{...n[t.id],[e]:l}},d)})},t.id))]},e))})]})})]})}function R({flow:s,f:n,putFlow:r}){const[e,t]=O.useState(!1),l=O.useId();return a.jsxs("div",{className:"hn-sched-flow","data-testid":`orch-flow-${s}`,children:[a.jsxs("button",{type:"button",className:"hn-sched-flow-head hn-touch-target","aria-expanded":e,"aria-controls":l,onClick:()=>t(d=>!d),children:[a.jsx("span",{children:u[s]}),a.jsx("span",{className:"hn-sched-flow-state",children:n.enabled?"aktif":"nonaktif"})]}),a.jsx("div",{id:l,className:"hn-sched-flow-body",hidden:!e,children:a.jsx(y,{flow:s,f:n,putFlow:r})})]})}function z({orchestration:s,onChange:n,variant:r="cards"}){const e=s??p,t=i=>e[i]??p[i],l=(i,m,b)=>n({...e,[i]:m},b),d=a.jsxs("div",{className:"hn-sched-group-hint",children:["Sesi utama berperan sebagai ",a.jsx("b",{children:"pengatur"}),"; setiap fase dikerjakan subagen dengan model & effort di bawah. ",a.jsx("b",{children:"Warisi"})," memakai pengaturan sesi utama yang dipilih saat ",a.jsx("b",{children:"Start"}),". Subagen selalu berjalan di runtime yang sama dengan sesi utama: sesi Claude memakai kolom Claude Code, sesi Codex kolom Codex CLI. Flow yang dimatikan berjalan sebagai satu sesi biasa seperti sebelumnya."]});return r==="accordion"?a.jsxs("div",{className:"hn-sched-panel",children:[d,j.map(i=>a.jsx(R,{flow:i,f:t(i),putFlow:l},i))]}):a.jsxs(a.Fragment,{children:[a.jsx(g,{eyebrow:"orkestrasi",title:"Orkestrasi subagen per fase",children:d}),j.map(i=>a.jsx("div",{"data-testid":`orch-flow-${i}`,children:a.jsx(g,{eyebrow:"flow",title:u[i],children:a.jsx(y,{flow:i,f:t(i),putFlow:l})})},i))]})}const c=s=>!!s&&typeof s=="object"&&!Array.isArray(s)&&Object.getPrototypeOf(s)===Object.prototype,f=(s,n)=>{if(s===n)return!0;if(Array.isArray(s)&&Array.isArray(n))return s.length===n.length&&s.every((r,e)=>f(r,n[e]));if(c(s)&&c(n)){const r=Object.keys(s).filter(t=>s[t]!==void 0),e=Object.keys(n).filter(t=>n[t]!==void 0);return r.length===e.length&&r.every(t=>f(s[t],n[t]))}return!1};function w(s,n,r){if(f(n,s)&&r!==void 0)return r;if(!c(s)||!c(n)||!c(r))return n;const e={...r};for(const t of Object.keys(n))e[t]=w(s[t],n[t],r[t]);return e}export{z as O,w as r};
package/web/index.html CHANGED
@@ -12,11 +12,11 @@
12
12
  <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&amp;family=IBM+Plex+Serif:ital,wght@0,400;0,500;0,600;0,700;1,400&amp;family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&amp;display=swap" /></noscript>
13
13
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
14
14
  <title>hanoman</title>
15
- <script type="module" crossorigin src="/assets/index-BvFCEJud.js"></script>
15
+ <script type="module" crossorigin src="/assets/index-BRR3JL_o.js"></script>
16
16
  <link rel="modulepreload" crossorigin href="/assets/react-DfGhg7ZW.js">
17
17
  <link rel="modulepreload" crossorigin href="/assets/markdown-CWEY34jk.js">
18
18
  <link rel="modulepreload" crossorigin href="/assets/xterm-3VOAfa_q.js">
19
- <link rel="stylesheet" crossorigin href="/assets/index-B8xChq6y.css">
19
+ <link rel="stylesheet" crossorigin href="/assets/index-BqAP-VDq.css">
20
20
  </head>
21
21
  <body>
22
22
  <div id="root"></div>
@@ -1,2 +0,0 @@
1
- import{h as M,i as ne,j as a,M as re,f as ua,g as ae,a3 as un,a4 as da,m as Ce,n as pt,I as Te,a2 as dn,Z as mn,B as K,a5 as pn,C as He,a6 as Wt,a7 as qt,e as Ge,a8 as hn,a9 as fn,aa as gn,ab as bn,ac as kn,ad as xn,ae as Ee,af as ma,ag as Re,ah as vn,r as yn,a1 as jn,Y as de,O as je,ai as wn,aj as Sn,ak as ht,al as Nn,q as ue,am as pa,b as In,an as Cn,d as Tn,ao as Rn,p as En,ap as zn,aq as Ut,ar as An,o as ct,as as Dn,at as $n,c as Mn,au as Fn,av as Ht,aw as Pn,ax as Ln,V as On,ay as Bn,az as Kn,aA as We,aB as bt,aC as _n,aD as Gn,D as Wn,aE as qn,aF as Vt,aG as Un}from"./index-BvFCEJud.js";import{R as u,r as L}from"./react-DfGhg7ZW.js";import"./markdown-CWEY34jk.js";import"./xterm-3VOAfa_q.js";function kt(e){return e.endedAt?e.endedReason==="reconciled"?"interrupted":e.exitCode===null||e.exitCode===0?"completed":"failed":"running"}const qe=new Set;let Ie;function Hn(e){return qe.add(e),Ie||(Ie=setInterval(()=>{for(const n of[...qe])n()},1e3)),()=>{qe.delete(e),qe.size===0&&Ie&&(clearInterval(Ie),Ie=void 0)}}const Yt=20;function Vn(e,n){if(!n)return"—";const i=new Date(n).getTime()-new Date(e).getTime();if(!Number.isFinite(i)||i<0)return"—";const r=Math.round(i/1e3);if(r<60)return`${r} dtk`;const l=Math.round(r/60);return l<60?`${l} mnt`:`${Math.floor(l/60)} jam ${l%60} mnt`}function Yn(e){switch(kt(e)){case"running":return{label:"berjalan",tone:"neutral"};case"interrupted":return{label:"terputus",tone:"warn"};case"failed":return{label:`exit ${e.exitCode}`,tone:"err"};default:return{label:"selesai",tone:"ok"}}}const ha=e=>kt(e)==="interrupted"?"—":Vn(e.startedAt,e.endedAt),fa=e=>da[e]??e;function Jn({projects:e,onClose:n,onRestart:i}){const[r,l]=u.useState([]),[c,k]=u.useState(0),[g,S]=u.useState(1),[p,j]=u.useState(!1),[h,b]=u.useState(""),[y,R]=u.useState(""),[T,E]=u.useState(""),[z,v]=u.useState(""),[f,$]=u.useState(null),[B,_]=u.useState(null),[x,N]=u.useState(0);u.useEffect(()=>{const o=setTimeout(()=>v(T.trim()),250);return()=>clearTimeout(o)},[T]),u.useEffect(()=>{S(1)},[h,y,z]),u.useEffect(()=>{let o=!0;return j(!0),M.listSessionHistory({projectId:h||void 0,kind:y||void 0,q:z||void 0,page:g,limit:Yt}).then(C=>{o&&(_(null),k(C.total),l(C.items))}).catch(C=>{o&&(l([]),k(0),_(ne("memuat riwayat sesi",C)))}).finally(()=>{o&&j(!1)}),()=>{o=!1}},[h,y,z,g,x]);const D=mn(c,g,Yt),w=o=>{var C;return((C=e.find(H=>H.id===o))==null?void 0:C.name)??o};return a.jsxs(re,{open:!0,title:"Riwayat sesi",icon:"history",onClose:n,width:900,children:[a.jsxs("div",{className:"hn-terminal-hist-toolbar",children:[a.jsx(ua,{size:"sm",leftIcon:"search",placeholder:"mis. spec-412 atau reverse","aria-label":"Cari riwayat sesi",value:T,onChange:o=>E(o.target.value),className:"hn-terminal-hist-search"}),a.jsx(ae,{size:"sm","aria-label":"Filter project",value:h,onChange:o=>b(o.target.value),options:[{value:"",label:"Semua project"}].concat(e.map(o=>({value:o.id,label:o.name})))}),a.jsx(ae,{size:"sm","aria-label":"Filter jenis",value:y,onChange:o=>R(o.target.value),options:[{value:"",label:"Semua jenis"}].concat(un.map(o=>({value:o,label:da[o]})))})]}),B?a.jsx(Ce,{kind:"error",icon:"history",title:"Riwayat belum bisa dimuat",hint:B,action:()=>N(o=>o+1),actionLabel:"Coba lagi"}):r.length===0&&!p?a.jsx(Ce,{kind:"empty",icon:"history",title:"Belum ada riwayat sesi",hint:"Riwayat terisi sendiri saat sesi terminal dibuka lalu ditutup — termasuk sesi backlog, terminal biasa, dan sesi project-level."}):a.jsxs("div",{className:"hn-terminal-hist-list",children:[r.map(o=>{const C=Yn(o);return a.jsx("button",{onClick:()=>$(o),className:"hn-terminal-hist-row",children:a.jsxs("span",{className:"hn-dense-row hn-picker-row hn-terminal-hist-main",children:[a.jsx("span",{className:"hn-terminal-hist-when",children:new Date(o.startedAt).toLocaleString("id-ID")}),a.jsx(pt,{size:"sm",tone:"neutral",children:fa(o.kind)}),a.jsx("span",{className:"hn-picker-title hn-terminal-hist-title",children:o.title??o.specId??w(o.projectId)}),o.transcriptBytes!==null&&a.jsx(Te,{name:"file-text",size:12,color:"var(--text-subtle)"}),a.jsx("span",{className:"hn-terminal-hist-duration",children:ha(o)}),a.jsx(pt,{size:"sm",tone:C.tone,children:C.label})]})},o.id)}),p&&a.jsx("div",{className:"hn-terminal-hist-loading",children:"memuat…"})]}),a.jsx(dn,{page:D.page,pageCount:D.pageCount,total:c,from:D.from,to:D.to,onPage:S,unit:"sesi"}),f&&a.jsx(Xn,{row:f,projectName:w(f.projectId),onBack:()=>$(null),onRestart:i})]})}function Xn({row:e,projectName:n,onBack:i,onRestart:r}){const[l,c]=u.useState(null),[k,g]=u.useState("idle"),[S,p]=u.useState(null);async function j(y){try{if(!navigator.clipboard)throw new Error("clipboard tidak tersedia di browser ini");await navigator.clipboard.writeText(y),p({tone:"ok",text:"Transkrip disalin."})}catch(R){p({tone:"err",text:ne("menyalin transkrip",R)})}}u.useEffect(()=>{if(e.transcriptBytes===null){g("none"),c(null);return}let y=!0;return g("loading"),M.sessionTranscript(e.id).then(R=>{y&&(c(R.text),g("idle"))}).catch(()=>{y&&(c(null),g("error"))}),()=>{y=!1}},[e.id,e.transcriptBytes]);const h=kt(e)==="interrupted",b=[["Project",n],["Sesi",e.sessionId],["Jenis",fa(e.kind)],["Agen",[e.agent,e.model,e.effort].filter(Boolean).join(" · ")],["Mulai",new Date(e.startedAt).toLocaleString("id-ID")],[h?"Terakhir terlihat hidup":"Selesai",e.endedAt?new Date(e.endedAt).toLocaleString("id-ID"):"berjalan"],...h&&e.reconciledAt?[["Terdeteksi mati",new Date(e.reconciledAt).toLocaleString("id-ID")]]:[],["Durasi",ha(e)],["Direktori",e.cwd]];return e.specId&&b.splice(1,0,["Backlog",`${e.specId}${e.title?` · ${e.title}`:""}`]),e.branch&&b.push(["Branch",e.branch]),a.jsxs(re,{open:!0,title:e.title??e.specId??e.sessionId,icon:"history",onClose:i,width:1e3,children:[a.jsxs("div",{className:"hn-terminal-hist-actions",children:[a.jsx(K,{size:"sm",variant:"ghost",leftIcon:"arrow-left",onClick:i,children:"Kembali"}),a.jsx("div",{className:"hn-terminal-hist-spacer"}),l&&a.jsx(K,{size:"sm",variant:"secondary",leftIcon:"copy",onClick:()=>void j(l),children:"Salin transkrip"}),pn(e.kind)&&a.jsx(K,{size:"sm",leftIcon:"play",onClick:()=>r(e),children:"Mulai lagi"})]}),h&&a.jsxs(He,{tone:"warn",title:"Sesi terputus — hasilnya tak diketahui",className:"hn-terminal-notice",children:["Panenya sudah lenyap saat hanoman menyala lagi (reboot, ",a.jsx("code",{children:"tmux kill-server"}),", atau host mati), jadi sesi ini tak meninggalkan exit code dan transkripnya kemungkinan besar tak sempat diambil — capture berjalan tepat sebelum pane dibunuh, dan di jalur ini sudah tak ada pane untuk dibaca. Periksa worktree & branch sesi ini sebelum menganggapnya selesai, lalu mulai lagi bila pekerjaannya belum tuntas."]}),a.jsx("div",{className:"hn-terminal-hist-meta",children:b.map(([y,R])=>a.jsxs(u.Fragment,{children:[a.jsx("span",{className:"hn-terminal-hist-key",children:y}),a.jsx("span",{className:"hn-terminal-hist-val",children:R})]},y))}),k==="loading"&&a.jsx("div",{className:"hn-terminal-hist-note",children:"memuat transkrip…"}),k==="none"&&a.jsx("div",{className:"hn-terminal-hist-note",children:h?"Tanpa transkrip — panenya sudah lenyap sebelum hanoman sempat mengambilnya.":"Tanpa transkrip — sesi ini ditutup sebelum fitur riwayat ada, atau panenya tak menyisakan keluaran."}),S&&a.jsx("div",{role:"status",className:S.tone==="err"?"hn-terminal-hist-copy is-err":"hn-terminal-hist-copy",children:S.text}),k==="error"&&a.jsx("div",{className:"hn-terminal-hist-error",children:"Transkrip tak terbaca lagi di server."}),l!==null&&a.jsx("pre",{className:"hn-terminal-hist-pre",children:l})]})}function Zn({open:e,projectId:n,projectName:i,projects:r,onProjectChange:l,onClose:c,onCreated:k}){var w;const[g,S]=u.useState("claude"),[p,j]=u.useState("sonnet"),[h,b]=u.useState("medium"),[y,R]=u.useState({claude:{model:"sonnet",effort:"medium"},codex:{...Wt}}),[T,E]=u.useState(!1),[z,v]=u.useState(null),[f,$]=u.useState(null),[B,_]=u.useState(null);u.useEffect(()=>{e&&(v(null),$(null),M.getSettings().then(o=>{const C={claude:{model:o.model,effort:o.effort},codex:{...Wt,...o.codex??{}}},H=o.agent==="codex"?"codex":"claude",F=qt(C,H);R(C),S(H),j(F.model),b(F.effort)}).catch(o=>{v(`${ne("memuat pengaturan",o)} · memakai default bawaan`)}),M.getCodexVersion().then(o=>_(o.version)).catch(o=>{v(C=>(C?`${C} · `:"")+ne("membaca versi Codex CLI",o))}))},[e]);const x=o=>{S(o);const C=qt(y,o);j(C.model),b(C.effort)},N=o=>{j(o),b(C=>g==="codex"?kn(o,C):xn(o,C))};async function D(){E(!0),$(null);try{const{id:o}=await M.createTerminal(n,{agent:g,model:p,effort:h});k(o),c()}catch(o){$(ne("membuka sesi",o))}finally{E(!1)}}return a.jsxs(re,{open:e,onClose:c,icon:"plus",eyebrow:i,title:"Sesi baru",footer:a.jsxs(a.Fragment,{children:[a.jsx(K,{variant:"ghost",onClick:c,children:"Batal"}),a.jsx(K,{leftIcon:"play",disabled:T,onClick:()=>void D(),children:"Buka sesi"})]}),children:[z&&a.jsx(He,{tone:"warn",title:"Pengaturan belum terbaca",className:"hn-terminal-notice",children:z}),f&&a.jsx(He,{tone:"err",title:"Sesi belum terbuka",className:"hn-terminal-notice",children:f}),a.jsxs("div",{className:"hn-terminal-intro",children:["Runtime untuk sesi ini. Default dari setelan global; ubah bila perlu. Sesi lahir dengan pilihan ini untuk seluruh hidupnya — ",a.jsx("code",{children:"/model"})," di terminal tetap bisa mengubahnya."]}),r&&l&&r.length>1&&a.jsx(Ge,{label:"Project",hint:"Direktori repo tempat sesi dibuka.",children:a.jsx(ae,{"aria-label":"Project",value:n,className:"hn-terminal-field-full",options:r.map(o=>({value:o.id,label:o.name})),onChange:o=>l(o.target.value)})}),a.jsx(Ge,{label:"Agen",hint:"Mesin yang menjalankan sesi ini. Perilaku sesi sama; hanya CLI-nya berbeda.",children:a.jsx(ae,{"aria-label":"Agen",value:g,className:"hn-terminal-field-full",options:[{value:"claude",label:"Claude Code"},{value:"codex",label:"Codex CLI"}],onChange:o=>x(o.target.value)})}),a.jsx(Ge,{label:"Model",children:a.jsx(ae,{"aria-label":"Model",value:p,className:"hn-terminal-field-full",options:hn(g,p),onChange:o=>N(o.target.value)})}),a.jsx(Ge,{label:"Effort",children:a.jsx(ae,{"aria-label":"Effort",value:h,className:"hn-terminal-field-full",options:fn(g,p).map(o=>({value:o,label:o})),onChange:o=>b(o.target.value)})}),g==="codex"&&gn(p,B)&&a.jsxs("div",{"data-testid":"codex-version-note",className:"hn-terminal-codex-note",children:["Codex CLI terpasang ",a.jsx("b",{children:B}),", sedangkan ",a.jsx("b",{children:p})," butuh ",a.jsx("b",{children:(w=bn(p))==null?void 0:w.minClient}),". Sesi tetap boleh dijalankan, tapi modelnya belum tentu dikenali CLI ini."]})]})}const ga=()=>({rows:1,cols:1,cells:[null]}),ba=(e,n)=>[...e.slice(0,n),...e.slice(n+1)],Jt=e=>({...e,rows:e.rows+1,cells:[...e.cells,...Array(e.cols).fill(null)],...e.rowSizes?{rowSizes:[...e.rowSizes,1]}:{}});function Xt(e){const n=e.cols+1,i=[];for(let r=0;r<e.rows;r++)for(let l=0;l<n;l++)i.push(l<e.cols?e.cells[r*e.cols+l]??null:null);return{...e,cols:n,cells:i,...e.colSizes?{colSizes:[...e.colSizes,1]}:{}}}function Zt(e,n){if(e.rows===1||n<0||n>=e.rows)return e;const i=[...e.cells];return i.splice(n*e.cols,e.cols),{...e,rows:e.rows-1,cells:i,...e.rowSizes?{rowSizes:ba(e.rowSizes,n)}:{}}}function Qt(e,n){if(e.cols===1||n<0||n>=e.cols)return e;const i=e.cols-1,r=[];for(let l=0;l<e.rows;l++)for(let c=0;c<e.cols;c++)c!==n&&r.push(e.cells[l*e.cols+c]??null);return{...e,cols:i,cells:r,...e.colSizes?{colSizes:ba(e.colSizes,n)}:{}}}const ka=.3,Qn=(e,n,i)=>Math.min(i,Math.max(n,e));function xt(e,n,i){if(n<0||n+1>=e.length||i===0)return e;const l=e.reduce((S,p)=>S+p,0)/e.length*ka,c=e[n]+e[n+1],k=Qn(e[n]+i,l,c-l);if(k===e[n])return e;const g=[...e];return g[n]=k,g[n+1]=c-k,g}function xa(e,n,i){const r=e.colSizes??Array(e.cols).fill(1),l=xt(r,n,i);return l===r?e:{...e,colSizes:l}}function va(e,n,i){const r=e.rowSizes??Array(e.rows).fill(1),l=xt(r,n,i);return l===r?e:{...e,rowSizes:l}}const es=.05,ts=.15,ya=(e,n)=>e.reduce((i,r)=>i+r,0)*(n?ts:es);function as(e,n,i,r=!1){const l=e.colSizes??Array(e.cols).fill(1);return xa(e,n,i*ya(l,r))}function ns(e,n,i,r=!1){const l=e.rowSizes??Array(e.rows).fill(1);return va(e,n,i*ya(l,r))}function ea(e,n){const r=e.reduce((k,g)=>k+g,0)/e.length*ka,l=e[n]+e[n+1],c=Math.round(r/l*100);return{now:Math.round(e[n]/l*100),min:c,max:100-c}}function ft(e,n,i){if(n<0||n>=e.cells.length)return e;const r=e.cells.map(l=>i!==null&&l===i?null:l);return r[n]=i,{...e,cells:r}}const ss=(e,n)=>({...e,cells:e.cells.map(i=>i&&n.has(i)?i:null)}),ja=e=>({id:crypto.randomUUID(),name:e,layout:ga()});function ta(){const e=ja("Utama");return{groups:[e],active:e.id}}const ze=e=>e.groups.find(n=>n.id===e.active)??e.groups[0];function is(e,n){const i=ja(n);return{groups:[...e.groups,i],active:i.id}}const rs=(e,n,i)=>({...e,groups:e.groups.map(r=>r.id===n?{...r,name:i}:r)});function ls(e,n){if(e.groups.length===1)return e;const i=e.groups.filter(r=>r.id!==n);return i.length===e.groups.length?e:{groups:i,active:e.active===n?i[0].id:e.active}}const os=(e,n)=>e.groups.some(i=>i.id===n)?{...e,active:n}:e;function U(e,n){const i=ze(e);return{...e,groups:e.groups.map(r=>r.id===i.id?{...r,layout:n(r.layout)}:r)}}function gt(e,n,i){const r=ze(e),l=i===null?e.groups:e.groups.map(c=>c.id===r.id?c:{...c,layout:ft(c.layout,c.layout.cells.indexOf(i),null)});return{...e,groups:l.map(c=>c.id===r.id?{...c,layout:ft(c.layout,n,i)}:c)}}function xe(e,n){const i=ze(e).layout.cells.indexOf(null);return i===-1?e:gt(e,i,n)}const cs=(e,n)=>({...e,groups:e.groups.map(i=>({...i,layout:ft(i.layout,i.layout.cells.indexOf(n),null)}))}),aa=e=>new Set(e.groups.flatMap(n=>n.layout.cells.filter(i=>i!==null))),na=(e,n)=>({...e,groups:e.groups.map(i=>({...i,layout:ss(i.layout,n)}))}),wa="hanoman.terminal.workspace",Sa="hanoman.terminal.layout",ve=e=>Ee.parse({version:1,groups:e.groups});function Ue(e,n){const i=e.groups,r=n&&i.some(l=>l.id===n)?n:i[0].id;return{groups:i,active:r}}function us(e){try{const n=JSON.parse(e);if(!n||typeof n!="object")return null;const i=n,r=Ee.parse({version:1,groups:i.groups});return{workspace:r,active:typeof i.active=="string"&&r.groups.some(l=>l.id===i.active)?i.active:r.groups[0].id}}catch{return null}}function ds(){try{const e=localStorage.getItem(wa);if(e)return us(e);const n=localStorage.getItem(Sa);if(!n)return null;const i=JSON.parse(n),r={id:crypto.randomUUID(),name:"Utama",layout:i};return{workspace:Ee.parse({version:1,groups:[r]}),active:r.id}}catch{return null}}function ut(){try{localStorage.removeItem(wa),localStorage.removeItem(Sa)}catch{}}const Na=e=>`hanoman.terminal.workspace.v2.${encodeURIComponent(e)}`;function ms(e){try{const n=localStorage.getItem(Na(e));if(!n)return null;const i=JSON.parse(n),r=Ee.parse(i.workspace);if(!Number.isInteger(i.revision)||(i.revision??-1)<0)return null;const l=typeof i.active=="string"&&r.groups.some(c=>c.id===i.active)?i.active:r.groups[0].id;return{workspace:r,revision:i.revision,active:l}}catch{return null}}function dt(e,n){try{const i=Ee.parse(n.workspace);if(!Number.isInteger(n.revision)||n.revision<0)return;const r=i.groups.some(l=>l.id===n.active)?n.active:i.groups[0].id;localStorage.setItem(Na(e),JSON.stringify({workspace:i,revision:n.revision,active:r}))}catch{}}function mt(e){if(!(e instanceof Re)||e.status!==409)return null;const n=e.detail;if((n==null?void 0:n.code)!=="revision-conflict")return null;const i=vn.safeParse(n.current);return i.success?i.data:null}function ps(e){const n=L.useRef(null);n.current||(n.current=ta());const[i,r]=L.useState(n.current),[l,c]=L.useState("loading"),[k,g]=L.useState(null),[S,p]=L.useState(!1),j=L.useRef(i),h=L.useRef(0),b=L.useRef(!1),y=L.useRef(Promise.resolve()),R=L.useRef(0),T=L.useCallback(x=>{j.current=x,r(x)},[]),E=L.useCallback(x=>{b.current=x,p(x)},[]),z=L.useCallback(x=>{const N=y.current.then(x,x);return y.current=N.then(()=>{},()=>{}),N},[]),v=L.useCallback((x,N="ready",D=null,w=j.current.active)=>{const o=x.workspace?Ue(x.workspace,w):ta();h.current=x.revision,T(o),c(N),g(D),E(!0),x.workspace&&dt(e,{workspace:x.workspace,revision:x.revision,active:o.active})},[T,E,e]),f=L.useCallback(x=>{const N=ms(e);N&&(h.current=N.revision,T(Ue(N.workspace,N.active))),E(!1),c("recovering"),g(x instanceof Error?x.message:"Layout server belum tersambung")},[T,E,e]),$=L.useCallback(()=>z(async()=>{try{v(await M.getTerminalWorkspace())}catch(x){f(x)}}),[v,z,f]);L.useEffect(()=>{const x=++R.current;return c("loading"),g(null),E(!1),z(async()=>{try{const N=await M.getTerminalWorkspace();if(x!==R.current)return;if(N.workspace){v(N),ut();return}const D=ds();if(!D){v(N);return}try{const w=await M.putTerminalWorkspace({baseRevision:N.revision,workspace:D.workspace});if(x!==R.current)return;T(Ue(w.workspace,D.active)),h.current=w.revision,dt(e,{workspace:w.workspace,revision:w.revision,active:D.active}),ut(),c("ready"),g(null),E(!0)}catch(w){const o=mt(w);o!=null&&o.workspace?(v(o,"conflict","Layout server lebih baru; layout lokal lama tidak diunggah"),ut()):f(w)}}catch(N){x===R.current&&f(N)}}),()=>{R.current+=1}},[v,z,f,T,E,e]),L.useEffect(()=>{const x=()=>{$()},N=()=>{document.visibilityState==="visible"&&$()};return window.addEventListener("focus",x),document.addEventListener("visibilitychange",N),()=>{window.removeEventListener("focus",x),document.removeEventListener("visibilitychange",N)}},[$]);const B=L.useCallback(x=>z(async()=>{if(!b.current)return!1;const N=x(j.current);let D,w;try{D=ve(N),w=ve(j.current)}catch{return c("conflict"),g("Layout tidak valid dan tidak disimpan"),!1}if(ma(D,w))return!0;try{return v(await M.putTerminalWorkspace({baseRevision:h.current,workspace:D}),"ready",null,N.active),!0}catch(o){const C=mt(o);if(!(C!=null&&C.workspace))return f(o),!1;const H=x(Ue(C.workspace,j.current.active));try{const F=await M.putTerminalWorkspace({baseRevision:C.revision,workspace:ve(H)});return v(F,"conflict","Layout berubah di perangkat lain; perubahan ini diterapkan ulang",H.active),!0}catch(F){if(!mt(F)&&!(F instanceof Re&&F.status===409))return f(F),!1;try{v(await M.getTerminalWorkspace(),"conflict","Layout berubah lagi di perangkat lain; state terbaru dimuat")}catch(me){f(me)}return!1}}}),[v,z,f]),_=L.useCallback(x=>{const N=os(j.current,x);T(N);const D=ve(N);dt(e,{workspace:D,revision:h.current,active:N.active})},[T,e]);return{workspace:i,status:l,message:k,writable:S,mutate:B,setActive:_,refresh:$}}const hs=yn("focus","grid"),sa={attention:0,running:1,open:1,failed:2,done:3};function Ia(e,n){return e.exited?e.exitCode?{tone:"failed",label:`Gagal · exit ${e.exitCode}`}:{tone:"done",label:"Selesai"}:e.deciding?{tone:"attention",label:"Lead memutuskan"}:e.decision?{tone:"attention",label:"Menunggu keputusan"}:n?{tone:"done",label:"Selesai"}:e.specId?{tone:"running",label:"Berjalan"}:{tone:"open",label:"Terbuka"}}function fs(e){const n=e.startedAt;return typeof n=="number"&&Number.isFinite(n)&&n>0?n*1e3:null}function gs(e,n){const i=e.map((r,l)=>({session:r,index:l,rank:sa[Ia(r,n.has(r.id)).tone]}));return i.sort((r,l)=>{if(r.rank!==l.rank)return r.rank-l.rank;if(r.rank===sa.attention){const c=r.session.decisionAt?Date.parse(r.session.decisionAt):Number.NaN,k=l.session.decisionAt?Date.parse(l.session.decisionAt):Number.NaN,g=Number.isNaN(c)?Number.POSITIVE_INFINITY:c,S=Number.isNaN(k)?Number.POSITIVE_INFINITY:k;if(g!==S)return g<S?-1:1}return r.index-l.index}),i.map(r=>r.session)}function bs(e,n){if(n){const i=e.find(r=>r.id===n);if(i)return i}return e[0]??null}function ks(e,n,i){if(i<=0)return null;const r=e<0?0:e;switch(n){case"ArrowDown":return Math.min(r+1,i-1);case"ArrowUp":return Math.max(r-1,0);case"Home":return 0;case"End":return i-1;default:return null}}const Ca={attention:"awaiting",running:"running",open:"idle",failed:"failed",done:"done"};function xs(e){const[n,i]=u.useState(()=>Date.now());return u.useEffect(()=>{const r=setInterval(()=>i(Date.now()),e);return()=>clearInterval(r)},[e]),n}function ia({items:e,focusedId:n,onFocus:i,menuFor:r,label:l="Daftar sesi"}){const c=xs(3e4),k=u.useRef([]),g=e.findIndex(p=>p.session.id===n),S=p=>{var y;const j=k.current.indexOf(p.target);if(j<0)return;const h=ks(j,p.key,e.length);if(h===null)return;p.preventDefault();const b=e[h];b&&(i(b.session.id),(y=k.current[h])==null||y.focus())};return a.jsx("ul",{role:"list","aria-label":l,className:"hn-terminal-rail-list",onKeyDown:S,children:e.map((p,j)=>{const{session:h,status:b}=p,y=h.id===n,R=y||g<0&&j===0,T=p.startedMs!==null?jn(p.startedMs,c):"";return a.jsx("li",{className:"hn-terminal-rail-item",children:a.jsxs("div",{className:`hn-terminal-rail-row${y?" is-focused":""}`,"data-tone":b.tone,children:[a.jsxs("button",{type:"button",className:"hn-terminal-rail-main",ref:E=>{k.current[j]=E},tabIndex:R?0:-1,"aria-current":y?"true":void 0,title:p.label,onClick:()=>i(h.id),children:[a.jsx("span",{className:"hn-terminal-rail-name",children:p.label}),a.jsxs("span",{className:"hn-terminal-rail-meta",children:[a.jsx(de,{status:Ca[b.tone],variant:"dot",size:"sm",children:b.label}),T&&a.jsx("span",{className:"hn-terminal-rail-time",children:T})]})]}),a.jsx(je,{label:`Aksi sesi ${h.id} di daftar`,items:r(h)})]})},h.id)})})}const vs=[],ys=e=>!!(e.binding??e.repoDir),js=e=>{var n;return((n=e.find(ys)??e[0])==null?void 0:n.id)??""},ws=e=>e instanceof Re&&e.status===400&&typeof e.detail=="object"&&e.detail!==null&&e.detail.needsBind===!0;function Ls({userId:e="test-user",projects:n,backlog:i=vs,focusSession:r,startedSession:l,onStartedSessionHandled:c,onStartBacklog:k,onOpenReview:g,onOpenSessionReview:S,titleOf:p,onIntegrate:j,onIntegrateSession:h,specOf:b,sessions:y,setSessions:R,onOpenProject:T}){const[E,z]=u.useState([]),v=y??E,f=R??z,[$,B]=u.useState([]),_=ps(e),{workspace:x,status:N,message:D,writable:w,mutate:o,setActive:C,refresh:H}=_,[F,me]=ue("terminal","project",js(n),Wn),pe=pa(),we=In(),Z=we==="mobile",[W,Ae]=ue("terminal","fontSize",pe?Bn:Kn,On),[le,se]=ue("terminal","keys",pe&&!Z,We),[V,Ve]=ue("terminal","predict",!0,We),[J,De]=ue("terminal","diag",!1,We),[he,Ea]=ue("terminal","sr",!1,We),yt=t=>Ae(s=>Ln(s+t)),[oe,jt]=u.useState(!1),[Q,Ye]=u.useState(null),[za,$e]=u.useState(!1),[Aa,Me]=u.useState(null),[Da,wt]=u.useState(!1),[$a,Fe]=u.useState(!1),[Ma,Je]=ue("terminal","view","focus",hs),q=Ma==="focus",[Fa,Pe]=u.useState(null),[Xe,Pa]=u.useState(()=>new Set),[La,Oa]=u.useState(null),[St,Nt]=u.useState(!1),[Ba,It]=u.useState(!1),[Le,Ct]=u.useState(null),Ze=Cn(),{confirm:Ka,dialog:_a}=Tn(),A=ze(x).layout,Qe=A.rows===1&&A.cols===1&&!A.cells[0]&&v.length===0,et=u.useRef(null),[Ga,Wa]=u.useState(Number.POSITIVE_INFINITY);u.useEffect(()=>{const t=et.current;if(!t||typeof ResizeObserver!="function")return;const s=new ResizeObserver(d=>{var I;const m=((I=d[0])==null?void 0:I.contentRect.width)??t.getBoundingClientRect().width;m>0&&Wa(m)});return s.observe(t),()=>s.disconnect()},[Qe]);const qa=we==="tablet"&&Rn(A.cols,Ga,Pn),O=Z||qa,[X,Oe]=u.useState(0),[ee,Be]=u.useState(null),tt=u.useRef(null),Se=t=>{Pe(t),Be(t)},Ua=u.useCallback((t,s)=>{Pa(d=>{if(d.has(t)===s)return d;const m=new Set(d);return s?m.add(t):m.delete(t),m})},[]),Tt=u.useMemo(()=>gs(v,Xe),[v,Xe]),Ha=bs(Tt,Fa),[fe,Va]=u.useState(!1),[Ke,Rt]=u.useState(null),[Ya,Ja]=u.useState(0);u.useEffect(()=>{let t=!0;return M.listTerminals().then(s=>{t&&(Rt(null),f(s),Va(!0))}).catch(s=>{t&&Rt(ne("memuat daftar sesi",s))}),()=>{t=!1}},[Ya]);const[Xa,ge]=En();u.useEffect(()=>zn(t=>{t.t==="sessions"&&!y?f(t.sessions):t.t==="cleanups"&&B(t.cleanups)}),[]),u.useEffect(()=>{if(!fe||!w)return;const t=new Set(v.map(d=>d.id)),s=na(x,t);ma(ve(s),ve(x))||o(d=>na(d,t))},[o,v,fe,w,x]),u.useEffect(()=>{!l||l.specId==null||!fe||(f(t=>t.some(s=>s.id===l.id)?t:[...t,{...l,cwd:"",exited:!1}]),Pe(l.id),Be(l.id),c==null||c())},[c,fe,l]);const at=u.useRef(null);u.useEffect(()=>{if(!r){tt.current=null,at.current=null;return}if(!(!fe||tt.current===r)){if(!v.some(t=>t.id===r&&!t.exited)){if(at.current===r)return;at.current=r,M.listSessionHistory({q:r,limit:1}).then(t=>ge(Ut,"warn","history",t.total>0?{action:{label:An,onAction:()=>Fe(!0)},duration:7e3}:void 0)).catch(()=>{ge(Ut,"warn","history")});return}tt.current=r,Pe(r),Be(r)}},[r,v,fe,ge]),u.useEffect(()=>{if(!ee)return;const t=x.groups.find(s=>s.layout.cells.includes(ee));if(t){t.id!==x.active&&C(t.id);return}w&&o(s=>{if(aa(s).has(ee))return s;const d=xe(s,ee);return d!==s||!O?d:gt(s,X,ee)})},[X,O,o,ee,C,w,x]),u.useEffect(()=>{Q&&!v.some(t=>t.id===Q)&&Ye(null)},[Q,v]);const nt=$.filter(t=>t.error),ce=t=>v.find(s=>s.id===t)??null,te=u.useCallback(t=>{var s;return((s=n.find(d=>d.id===t))==null?void 0:s.name)??t},[n]);function Za(t){f(s=>s.some(d=>d.id===t)?s:[...s,{id:t,projectId:F,cwd:"",exited:!1}]),o(s=>xe(s,t)),Se(t)}async function Qa(){if(!F)return;let t;try{({id:t}=await M.createShell(F))}catch(s){ws(s)?ge(`Project ${te(F)} belum terhubung ke folder repo — hubungkan dulu.`,"err","folder-git-2",T?{action:{label:"Buka project",onAction:()=>T(F)}}:void 0):ge(ne("membuka terminal biasa",s),"err","x-circle");return}f(s=>[...s,{id:t,projectId:F,cwd:"",exited:!1}]),o(s=>xe(s,t)),Se(t)}async function Et(t,s){if(k&&!s){$e(!1),Me(null),k(t);return}const d=Gn(t.source);try{const{id:m}=await M.startSession({spec:t.id,flow:d,...s?{force:s}:{}});f(I=>I.some(P=>P.id===m)?I:[...I,{id:m,projectId:t.projectId,specId:t.id,flow:d,cwd:"",exited:!1}]),o(I=>xe(I,m)),Se(m),$e(!1),Me(null)}catch(m){if(Ze.offerRetry(m,t.id,P=>Et(t,P)))return;const I=m instanceof Re&&(m.status===400||m.status===422);Me(`${t.id} · gagal mulai${I?" · project belum punya repoDir":""}`)}}async function zt(t,s){try{const d=t.specId?await M.startSession({spec:t.specId,flow:t.flow??"feature",agent:t.agent==="codex"?"codex":"claude",...t.model?{model:t.model}:{},...t.effort?{effort:t.effort}:{},...s?{force:s}:{}}):t.kind==="shell"?await M.createShell(t.projectId):t.kind==="terminal"?await M.createTerminal(t.projectId,{agent:t.agent==="codex"?"codex":"claude",...t.model?{model:t.model}:{},...t.effort?{effort:t.effort}:{}}):await(s?M.createTerminalFlow(t.projectId,t.kind,{force:s}):M.createTerminalFlow(t.projectId,t.kind));f(m=>m.some(I=>I.id===d.id)?m:[...m,{id:d.id,projectId:t.projectId,specId:t.specId??void 0,cwd:"",exited:!1}]),o(m=>xe(m,d.id)),Se(d.id),Fe(!1)}catch(d){if((t.specId||t.kind!=="shell"&&t.kind!=="terminal")&&Ze.offerRetry(d,`${t.projectId} · ${t.title??t.specId??t.kind}`,m=>zt(t,m)))return}}const At=new Set(v.filter(t=>t.specId&&!t.exited).map(t=>t.specId)),en=i.filter(t=>t.stage!=="done"&&!At.has(t.id));function Dt(t){f(s=>s.filter(d=>d.id!==t)),M.deleteTerminal(t).catch(s=>{s instanceof Re&&s.status===404||ge(ne(`menutup sesi ${t.slice(0,6)}`,s),"err","x-circle")})}async function st(t){const s=ce(t),d=`${s?ye(s,te,p):t} · ${t.slice(0,6)}`,m=!!s&&!s.exited;await Ka({title:`Tutup sesi "${d}"?`,impact:[m?"Agen yang sedang berjalan di sesi ini akan dihentikan.":"Sesi ini sudah berhenti, jadi tidak ada agen yang perlu dihentikan.","Worktree sesi ini ikut dibersihkan dari disk."],confirmLabel:"Tutup sesi",icon:"square",tone:"danger"})&&Dt(t)}const tn=u.useCallback((t,s)=>{f(d=>d.map(m=>m.id===t?{...m,exited:!0,exitCode:s}:m))},[]),$t={killSession:Dt,requestKill:st,detach:t=>{o(s=>cs(s,t))},markExited:tn,setFullId:Ye,openDialog:(t,s)=>Ct({kind:t,sessionId:s}),props:{onOpenReview:g,onOpenSessionReview:S,titleOf:p,onIntegrate:j,onIntegrateSession:h,specOf:b}},G=u.useRef($t);G.current=$t;const Mt=u.useRef(new Map),be=t=>{let s=Mt.current.get(t);return s||(s={onClose:()=>void G.current.requestKill(t),onForget:()=>G.current.killSession(t),onDetach:()=>G.current.detach(t),onExit:d=>G.current.markExited(t,d),onFullscreen:()=>G.current.setFullId(t),onDialog:d=>G.current.openDialog(d,t)},Mt.current.set(t,s)),s},Ft=u.useRef(new Map),an=t=>{let s=Ft.current.get(t);return s||(s=(d,m)=>{Oa({sessionId:t,phases:d}),Ua(t,m)},Ft.current.set(t,s)),s},nn=t=>Ra(t,{label:ye(t,te,p),canArrange:w,specOf:b,onReview:g,onSessionReview:S,onIntegrate:j,onIntegrateSession:h,onDialog:be(t.id).onDialog,onDetach:be(t.id).onDetach,onFullscreen:be(t.id).onFullscreen,onKill:()=>void st(t.id)}),ke=u.useRef({onOpenReview:t=>{var s,d;return(d=(s=G.current.props).onOpenReview)==null?void 0:d.call(s,t)},onOpenSessionReview:(t,s)=>{var d,m;return(m=(d=G.current.props).onOpenSessionReview)==null?void 0:m.call(d,t,s)},titleOf:t=>{var s,d;return(d=(s=G.current.props).titleOf)==null?void 0:d.call(s,t)},onIntegrate:(t,s,d)=>{var m,I;return(I=(m=G.current.props).onIntegrate)==null?void 0:I.call(m,t,s,d)},onIntegrateSession:(t,s,d)=>{var m,I;return(I=(m=G.current.props).onIntegrateSession)==null?void 0:I.call(m,t,s,d)},specOf:t=>{var s,d;return(d=(s=G.current.props).specOf)==null?void 0:d.call(s,t)}}).current,sn=(t,s)=>{Oe(t),o(d=>gt(d,t,s))},rn=t=>{Se(t),o(s=>xe(s,t))},ln=aa(x),it=v.filter(t=>!ln.has(t.id));u.useEffect(()=>{if(!ee)return;const t=A.cells.indexOf(ee);t<0||(Oe(t),Be(null))},[A.cells,ee]),u.useEffect(()=>{X>=A.cells.length&&Oe(Math.max(0,A.cells.length-1))},[X,A.cells.length]);const _e=u.useRef(null),[ie,rt]=u.useState(null),lt=(ie==null?void 0:ie.axis)==="col"?ie.sizes:A.colSizes??Array(A.cols).fill(1),ot=(ie==null?void 0:ie.axis)==="row"?ie.sizes:A.rowSizes??Array(A.rows).fill(1);function Pt(t,s,d){var P,Y,Ne;if(!w)return;const m=(P=et.current)==null?void 0:P.getBoundingClientRect();if(!m)return;(Ne=(Y=d.currentTarget).setPointerCapture)==null||Ne.call(Y,d.pointerId);const I=t==="col"?lt:ot;_e.current={axis:t,index:s,pointerId:d.pointerId,start:t==="col"?d.clientX:d.clientY,extent:t==="col"?m.width:m.height,startSizes:I,latest:I},rt({axis:t,sizes:I})}function Lt(t){const s=_e.current;if(!s||s.pointerId!==t.pointerId)return;const d=s.axis==="col"?t.clientX:t.clientY,m=s.startSizes.reduce((P,Y)=>P+Y,0),I=(d-s.start)/s.extent*m;s.latest=xt(s.startSizes,s.index,I),rt({axis:s.axis,sizes:s.latest})}function Ot(t){var d,m;const s=_e.current;!s||s.pointerId!==t.pointerId||(_e.current=null,(m=(d=t.currentTarget).releasePointerCapture)==null||m.call(d,t.pointerId),rt(null),s.latest!==s.startSizes&&o(I=>U(I,P=>s.axis==="col"?{...P,colSizes:s.latest}:{...P,rowSizes:s.latest})))}function Bt(t,s,d){if(!w)return;const m=t==="col"?"ArrowRight":"ArrowDown",I=t==="col"?"ArrowLeft":"ArrowUp",P=d.key===m?1:d.key===I?-1:0;P!==0&&(d.preventDefault(),o(Y=>U(Y,Ne=>t==="col"?as(Ne,s,P,d.shiftKey):ns(Ne,s,P,d.shiftKey))))}function Kt(t,s){w&&o(d=>U(d,m=>{const I=t==="col"?m.colSizes??Array(m.cols).fill(1):m.rowSizes??Array(m.rows).fill(1),Y=(I[s]+I[s+1])/2-I[s];return t==="col"?xa(m,s,Y):va(m,s,Y)}))}const _t=a.jsxs("div",{className:"hn-terminal-display",children:[a.jsxs("div",{className:"hn-dense-row hn-terminal-display-row",children:[a.jsx("span",{className:"hn-terminal-display-label",children:"Ukuran teks terminal"}),a.jsx(ct,{size:"sm",icon:"minus",label:"Perkecil teks terminal",disabled:W<=Dn,onClick:()=>yt(-1)}),a.jsxs("span",{className:"hn-terminal-display-value",children:[W,"px"]}),a.jsx(ct,{size:"sm",icon:"plus",label:"Perbesar teks terminal",disabled:W>=$n,onClick:()=>yt(1)})]}),a.jsxs("div",{className:"hn-dense-row hn-terminal-display-row",children:[a.jsx("span",{className:"hn-terminal-display-label",children:"Papan tombol layar (Esc · panah · Enter)"}),a.jsx(K,{size:"sm",variant:"secondary","aria-pressed":le,onClick:()=>se(t=>!t),children:le?"Sembunyikan":"Tampilkan"})]}),a.jsxs("div",{className:"hn-dense-row hn-terminal-display-row",children:[a.jsx("span",{className:"hn-terminal-display-label",children:"Ketik responsif (huruf tampil sebelum echo server)"}),a.jsx(K,{size:"sm",variant:"secondary","aria-pressed":V,"aria-label":`${V?"Matikan":"Nyalakan"} ketik responsif`,onClick:()=>Ve(t=>!t),children:V?"Matikan":"Nyalakan"})]}),a.jsxs("div",{className:"hn-dense-row hn-terminal-display-row",children:[a.jsx("span",{id:"terminal-sr-label",className:"hn-terminal-display-label",children:"Mode pembaca layar"}),a.jsx(K,{size:"sm",variant:"secondary","aria-pressed":he,"aria-describedby":"terminal-sr-hint","aria-label":`${he?"Matikan":"Nyalakan"} mode pembaca layar`,onClick:()=>Ea(t=>!t),children:he?"Matikan":"Nyalakan"})]}),a.jsx("p",{id:"terminal-sr-hint",className:"hn-terminal-sr-hint",children:"Untuk pembaca layar: teks terminal tersedia di DOM; kecepatan lebih rendah. Tab dikirim ke sesi (tidak memindahkan fokus). Untuk keluar dari terminal tekan Ctrl+Shift+Esc."}),!q&&a.jsxs("div",{className:"hn-dense-row hn-terminal-display-row",children:[a.jsx("span",{id:"terminal-reset-grid-hint",className:"hn-terminal-display-label",children:'Kembalikan grid ke 1 kolom × 1 baris (sesi lain pindah ke "belum di grid")'}),a.jsx(K,{size:"sm",variant:"secondary","aria-describedby":"terminal-reset-grid-hint",disabled:!w||A.cols===1&&A.rows===1,onClick:()=>void o(t=>U(t,()=>ga())),children:"Reset grid"})]}),a.jsxs("details",{className:"hn-terminal-diag",children:[a.jsxs("summary",{className:"hn-terminal-diag-summary",children:["Diagnostik",J?" · perekaman aktif":""]}),a.jsxs("div",{className:"hn-dense-row hn-terminal-display-row hn-terminal-diag-row",children:[a.jsx("span",{className:"hn-terminal-display-label",children:"Rekam jalur ketik — mencatat setiap tombol yang ditekan di pane. Nyalakan hanya saat menyelidiki masalah ketik."}),a.jsx(K,{size:"sm",variant:"secondary","aria-pressed":J,"aria-label":`${J?"Matikan":"Nyalakan"} rekam jalur ketik`,onClick:()=>De(t=>!t),children:J?"Matikan":"Nyalakan"})]})]})]}),Gt=[{key:"backlog",label:"Ambil backlog",icon:"inbox",onSelect:()=>{Me(null),$e(!0)}},{key:"history",label:"Riwayat sesi",icon:"history",onSelect:()=>Fe(!0)},{key:"shell",label:"Terminal biasa",icon:"terminal",onSelect:()=>void Qa()}],on=[{key:"col+",label:"+ Kolom",icon:"columns-2",disabled:!w,onSelect:()=>void o(t=>U(t,Xt))},{key:"row+",label:"+ Baris",icon:"rows-2",disabled:!w,onSelect:()=>void o(t=>U(t,Jt))},{key:"col-",label:"Hapus kolom aktif",icon:"columns-2",disabled:!w||A.cols===1,onSelect:()=>void o(t=>U(t,s=>Qt(s,X%s.cols)))},{key:"row-",label:"Hapus baris aktif",icon:"rows-2",disabled:!w||A.rows===1,onSelect:()=>void o(t=>U(t,s=>Zt(s,Math.floor(X/s.cols))))}],cn=[{key:"mode",label:q?"Pakai mode Grid":"Pakai mode Fokus",icon:q?"columns-2":"terminal",onSelect:()=>Je(q?"grid":"focus")},{key:"full",label:oe?"Keluar layar penuh":"Layar penuh",icon:oe?"minimize-2":"maximize-2",onSelect:()=>jt(t=>!t)},{key:"display",label:"Tampilan terminal",icon:"sliders",onSelect:()=>It(!0)}];return a.jsxs("div",{"data-testid":"terminal-root",className:oe?"hn-terminal-screen is-maxed":"hn-terminal-screen",children:[a.jsxs("div",{className:"hn-terminal-toolbar",role:"group","aria-label":"Terminal",children:[a.jsx(K,{size:"sm",leftIcon:"plus",title:"Pilih runtime lalu buka sesi agen di direktori project. Agen berjalan dengan izin penuh (claude --dangerously-skip-permissions).",onClick:()=>wt(!0),children:"Sesi baru"}),Z?a.jsxs(a.Fragment,{children:[a.jsx(ca,{compact:!0,items:Gt}),q&&v.length>0&&a.jsxs("button",{type:"button",className:"hn-terminal-rail-toggle","aria-haspopup":"dialog","aria-expanded":St,onClick:()=>Nt(!0),children:["Sesi · ",v.length]}),a.jsx(je,{label:"Menu terminal",title:"Terminal",items:cn})]}):a.jsxs(a.Fragment,{children:[a.jsx(ca,{items:Gt}),a.jsxs("div",{className:"hn-terminal-seg",role:"group","aria-label":"Mode tampilan terminal",children:[a.jsx("button",{type:"button",className:"hn-terminal-seg-btn","aria-pressed":q,title:"Satu terminal fokus dengan daftar sesi di samping",onClick:()=>Je("focus"),children:"Fokus"}),a.jsx("button",{type:"button",className:"hn-terminal-seg-btn","aria-pressed":!q,title:"Beberapa terminal sekaligus dalam grid",onClick:()=>Je("grid"),children:"Grid"})]}),a.jsx(je,{label:"Tampilan terminal",icon:"sliders",items:[],children:_t}),a.jsx(ct,{size:"sm",icon:oe?"minimize-2":"maximize-2",label:oe?"Keluar layar penuh":"Layar penuh","aria-pressed":oe,onClick:()=>jt(t=>!t)})]})]}),(N!=="ready"||$.length>0)&&a.jsxs("div",{className:"hn-terminal-status",children:[N!=="ready"&&a.jsx("span",{"data-testid":"terminal-workspace-status",title:D??void 0,className:N==="conflict"?"hn-terminal-status-warn":void 0,children:N==="loading"?"Memuat layout server…":N==="recovering"?a.jsxs(a.Fragment,{children:[a.jsx("span",{children:"Layout server belum tersambung"})," ",a.jsx("button",{type:"button",onClick:()=>void H(),children:"Coba lagi"})]}):D??"Layout berubah di perangkat lain"}),$.length>0&&a.jsx("span",{"data-testid":"worktree-cleanups",title:$.map(t=>`${t.sessionId}${t.error?` — ${t.error}`:""}`).join(`
2
- `),className:nt.length?"hn-terminal-status-err":void 0,children:nt.length?`${nt.length} worktree gagal dibersihkan`:`membersihkan ${$.length} worktree…`})]}),!q&&a.jsxs("div",{className:"hn-terminal-grid-bar",children:[a.jsx(Ns,{compact:oe,ws:x,writable:w,onSelect:C,onAdd:()=>void o(t=>is(t,`Grup ${t.groups.length+1}`)),onRename:(t,s)=>void o(d=>rs(d,t,s)),onRemove:t=>void o(s=>ls(s,t))}),!O&&a.jsxs(a.Fragment,{children:[a.jsx(K,{size:"sm",variant:"ghost",disabled:!w,onClick:()=>void o(t=>U(t,Xt)),children:"+ Kolom"}),a.jsx(K,{size:"sm",variant:"ghost",disabled:!w,onClick:()=>void o(t=>U(t,Jt)),children:"+ Baris"})]}),O&&a.jsx(je,{label:"Atur grid",icon:"sliders",items:on})]}),Ke&&a.jsxs(He,{tone:"err",title:"Daftar sesi belum bisa dimuat",className:"hn-terminal-notice--tight",children:[a.jsxs("span",{children:[Ke," "]}),a.jsx("button",{type:"button",className:"hn-terminal-action hn-terminal-action--text",onClick:()=>Ja(t=>t+1),children:"Coba lagi"})]}),!q&&it.length>0&&a.jsxs("div",{className:"hn-terminal-unplaced",children:[a.jsx("span",{className:"hn-terminal-unplaced-label",children:"Belum di grid:"}),it.map(t=>a.jsxs("span",{className:"hn-terminal-unplaced-chip",children:[a.jsxs("button",{className:"hn-terminal-unplaced-action",disabled:!w,onClick:()=>rn(t.id),title:"Taruh di sel kosong pertama grup ini",children:[t.specId??te(t.projectId)," · ",t.id.slice(0,6)]}),a.jsx("button",{type:"button",className:"hn-terminal-action","aria-label":`Tutup sesi ${t.id}`,onClick:()=>void st(t.id),children:"×"})]},t.id))]}),!q&&O&&!Qe&&a.jsx("div",{className:"hn-stack-mobile hn-terminal-tabs-row",children:a.jsx(Mn,{"aria-label":"Panel terminal",variant:"pill",value:String(X),onChange:t=>Oe(Number(t)),tabs:A.cells.map((t,s)=>({value:String(s),label:`Panel ${s+1}${t?` · ${t.slice(0,6)}`:" · kosong"}`}))})}),!q&&(Qe?Ke?null:a.jsx(Ce,{kind:"empty",icon:"terminal",title:"Belum ada sesi terminal",hint:"Tekan Sesi baru untuk memulai agen di project terpilih, atau Terminal biasa untuk shell."}):a.jsxs("div",{ref:et,"data-testid":"terminal-grid",className:"hn-terminal-grid",style:{"--grid-cols":O?"minmax(0, 1fr)":`18px ${lt.map(t=>`minmax(0, ${t}fr)`).join(" ")}`,"--grid-rows":O?"minmax(0, 1fr)":`16px ${ot.map(t=>`minmax(0, ${t}fr)`).join(" ")}`},children:[!O&&a.jsx("div",{className:"hn-terminal-grid-corner"}),!O&&Array.from({length:A.cols},(t,s)=>a.jsx(ra,{axis:"col",label:`Tutup kolom ${s+1}`,disabled:!w||A.cols===1,gridColumn:s+2,gridRow:1,onClick:()=>void o(d=>U(d,m=>Qt(m,s)))},`col-${s}`)),!O&&Array.from({length:A.rows},(t,s)=>a.jsx(ra,{axis:"row",label:`Tutup baris ${s+1}`,disabled:!w||A.rows===1,gridColumn:1,gridRow:s+2,onClick:()=>void o(d=>U(d,m=>Zt(m,s)))},`row-${s}`)),!O&&Array.from({length:A.cols-1},(t,s)=>{const d=ea(lt,s);return a.jsx(la,{orientation:"col",label:`Ubah lebar kolom ${s+1}/${s+2}`,now:d.now,min:d.min,max:d.max,disabled:!w,gridColumn:s+3,gridRow:"1 / -1",onPointerDown:m=>Pt("col",s,m),onPointerMove:Lt,onPointerUp:Ot,onKeyDown:m=>Bt("col",s,m),onDoubleClick:()=>Kt("col",s)},`col-div-${s}`)}),!O&&Array.from({length:A.rows-1},(t,s)=>{const d=ea(ot,s);return a.jsx(la,{orientation:"row",label:`Ubah tinggi baris ${s+1}/${s+2}`,now:d.now,min:d.min,max:d.max,disabled:!w,gridColumn:"1 / -1",gridRow:s+3,onPointerDown:m=>Pt("row",s,m),onPointerMove:Lt,onPointerUp:Ot,onKeyDown:m=>Bt("row",s,m),onDoubleClick:()=>Kt("row",s)},`row-div-${s}`)}),Array.from({length:A.rows},(t,s)=>s).flatMap(t=>Array.from({length:A.cols},(s,d)=>{const m=t*A.cols+d,I=A.cells[m]??null,P=I?ce(I):null;return a.jsx("div",{"data-terminal-cell-index":m,"aria-hidden":O&&X!==m?"true":"false",className:O&&X!==m?"hn-terminal-cell-slot is-hidden":"hn-terminal-cell-slot",style:{"--cell-col":O?"auto":d+2,"--cell-row":O?"auto":t+2},children:P?a.jsx(Ts,{session:P,nameOf:te,...be(P.id),canArrange:w,onReview:g&&ke.onOpenReview,onSessionReview:S&&ke.onOpenSessionReview,titleOf:p&&ke.titleOf,onIntegrate:j&&ke.onIntegrate,onIntegrateSession:h&&ke.onIntegrateSession,specOf:b&&ke.specOf,backlog:i,fontSize:W,showKeys:le,predict:V,diag:J,screenReader:he,fullscreen:Q===P.id,paneHidden:O&&X!==m}):a.jsx(Ds,{disabled:!w,unplaced:it,nameOf:te,onPick:Y=>sn(m,Y)})},I??`empty-${m}`)}))]})),q&&a.jsx(zs,{sessionCount:v.length,focused:Ha,mobile:Z,railItems:Tt.map(t=>({session:t,label:ye(t,te,p),status:Ia(t,Xe.has(t.id)),startedMs:fs(t)})),listError:!!Ke,menuFor:nn,onFocus:Pe,drawerOpen:St,onDrawer:Nt,fullId:Q,focusPhases:La,paneHandlers:t=>({onExit:be(t).onExit,onPhases:an(t),onForget:be(t).onForget}),fontSize:W,showKeys:le,onToggleKeys:()=>se(t=>!t),predict:V,diag:J,screenReader:he}),za&&a.jsx(Ss,{seed:en,activeIds:At,error:Aa,onPick:t=>void Et(t),onClose:()=>$e(!1)}),Da&&a.jsx(Zn,{open:!0,projectId:F,projectName:te(F),projects:n,onProjectChange:me,onClose:()=>wt(!1),onCreated:Za}),$a&&a.jsx(Jn,{projects:n,onClose:()=>Fe(!1),onRestart:t=>void zt(t)}),Ze.dialog,Le&&ce(Le.sessionId)&&a.jsx(Es,{kind:Le.kind,session:ce(Le.sessionId),specOf:b,onIntegrate:j,onIntegrateSession:h,onClose:()=>Ct(null)}),Q&&ce(Q)&&a.jsx(As,{session:ce(Q),label:ye(ce(Q),te,p),fontSize:W,showKeys:le,predict:V,diag:J,screenReader:he,onClose:()=>Ye(null)}),Z&&Ba&&a.jsx(re,{open:!0,title:"Tampilan terminal",icon:"sliders",width:420,onClose:()=>It(!1),children:_t}),_a,a.jsx(Fn,{toast:Xa})]})}function ye(e,n,i){const r=n(e.projectId),l=e.specId?i==null?void 0:i(e.specId):void 0;return e.specId?`${r} · ${e.specId}${l?` · ${l}`:""}`:e.id.startsWith("xaudit-")?`${r} · audit lintas`:r}function Ss({seed:e,activeIds:n,error:i,onPick:r,onClose:l}){const[c,k]=u.useState(""),[g,S]=u.useState("all"),[p,j]=u.useState("all"),[h,b]=u.useState(e),[y,R]=u.useState(""),[T,E]=u.useState(null);u.useEffect(()=>{const f=setTimeout(()=>R(c.trim()),250);return()=>clearTimeout(f)},[c]),u.useEffect(()=>{var B,_;let f=!0;const $=(_=(B=M).listSpecs)==null?void 0:_.call(B,{startable:!0,q:y||void 0,stage:g==="all"?void 0:g,priority:p==="all"?void 0:p});return $==null||$.then(x=>{f&&(b(x.items),E(null))}).catch(x=>{f&&E(ne("memuat backlog",x))}),()=>{f=!1}},[y,g,p]);const z=h.filter(f=>!n.has(f.id)),v=i??T;return a.jsxs(re,{open:!0,title:"Ambil backlog",icon:"inbox",onClose:l,width:760,children:[v&&a.jsx("div",{role:"alert",className:"hn-terminal-pick-notice",children:v}),a.jsxs("div",{className:"hn-terminal-pick-filters",children:[a.jsx(ua,{size:"sm",leftIcon:"search",placeholder:"mis. invoice atau SPEC-412","aria-label":"Cari backlog",value:c,onChange:f=>k(f.target.value),className:"hn-terminal-pick-search"}),a.jsx(ae,{size:"sm","aria-label":"Filter stage",value:g,onChange:f=>S(f.target.value),options:[{value:"all",label:"Semua stage"}].concat(_n.filter(f=>f.key!=="done").map(f=>({value:f.key,label:f.label})))}),a.jsx(ae,{size:"sm","aria-label":"Filter prioritas",value:p,onChange:f=>j(f.target.value),options:[{value:"all",label:"Semua prioritas"},{value:"tinggi",label:"Tinggi"},{value:"sedang",label:"Sedang"},{value:"rendah",label:"Rendah"}]})]}),z.length===0?a.jsx(Ce,{kind:"empty",icon:"inbox",title:"Tak ada backlog untuk diambil",hint:"Semua item sudah selesai/aktif atau tak cocok filter — buat brief baru di halaman Backlog."}):a.jsx("div",{className:"hn-terminal-pick-list",children:z.map(f=>a.jsx("button",{onClick:()=>r(f),className:"hn-terminal-pick-row",children:a.jsxs("span",{className:"hn-dense-row hn-picker-row hn-terminal-pick-main",children:[a.jsx(Te,{name:f.source==="qa"?"bug":f.source==="audit"?"search":"lightbulb",size:14,color:f.source==="qa"?"var(--clay-500)":f.source==="audit"?"var(--wind-600)":"var(--brass-500)"}),a.jsx("span",{className:"hn-terminal-pick-id",children:f.id}),a.jsx("span",{className:"hn-picker-title hn-terminal-pick-title",children:f.title}),a.jsx(pt,{tone:f.priority==="tinggi"?"err":"neutral",size:"sm",children:f.priority}),a.jsx("span",{className:"hn-terminal-pick-project",children:f.projectId})]})},f.id))})]})}function Ns({ws:e,compact:n=!1,writable:i,onSelect:r,onAdd:l,onRename:c,onRemove:k}){const[g,S]=u.useState(null),p=ze(e),j=e.groups.length===1,b=pa()?44:24;return a.jsxs("div",{className:n?"hn-terminal-groups":"hn-terminal-groups is-bordered",style:{"--group-box":`${b}px`},children:[a.jsx("div",{role:"tablist","aria-label":"Grup terminal",className:"hn-terminal-groups-tabs",children:e.groups.map((y,R)=>{const T=y.id===p.id;return a.jsx("button",{type:"button",role:"tab","aria-selected":T,tabIndex:T?0:-1,className:"hn-terminal-group-control hn-terminal-group-tab",onClick:()=>r(y.id),onKeyDown:E=>{var v,f;let z=null;E.key==="ArrowRight"?z=(R+1)%e.groups.length:E.key==="ArrowLeft"?z=(R-1+e.groups.length)%e.groups.length:E.key==="Home"?z=0:E.key==="End"&&(z=e.groups.length-1),z!==null&&(E.preventDefault(),r(e.groups[z].id),(f=(v=E.currentTarget.closest('[role="tablist"]'))==null?void 0:v.querySelectorAll('[role="tab"]')[z])==null||f.focus())},children:y.name},y.id)})}),i&&(g===p.id?a.jsx(Is,{initial:p.name,onCommit:y=>{y.trim()&&c(p.id,y.trim()),S(null)},onCancel:()=>S(null)},p.id):a.jsxs("span",{role:"group","aria-label":`Kelola grup ${p.name}`,className:"hn-terminal-groups-actions",children:[a.jsx("button",{type:"button",className:"hn-terminal-group-control hn-terminal-group-action","aria-label":`Ganti nama grup ${p.name}`,title:"Ganti nama",onClick:()=>S(p.id),children:"✎"}),a.jsx("button",{type:"button",className:"hn-terminal-group-control hn-terminal-group-action hn-terminal-group-remove","aria-label":`Hapus grup ${p.name}`,title:j?"Grup terakhir tak bisa dihapus":"Hapus grup (sesi tetap hidup)",disabled:j,onClick:()=>k(p.id),children:"×"})]})),a.jsx("button",{type:"button",className:"hn-terminal-group-control hn-terminal-group-action hn-terminal-group-add","aria-label":"Grup baru",title:"Grup baru",disabled:!i,onClick:l,children:"+"})]})}function ra({label:e,disabled:n,onClick:i,axis:r,gridColumn:l,gridRow:c}){return a.jsx("button",{type:"button","aria-label":e,title:n?"Grid tak boleh menyusut ke nol":e,disabled:n,onClick:i,className:`hn-terminal-gutter hn-terminal-gutter--${r}`,style:{"--grid-col":l,"--grid-row":c},children:"×"})}function la({orientation:e,label:n,now:i,min:r,max:l,disabled:c,gridColumn:k,gridRow:g,onPointerDown:S,onPointerMove:p,onPointerUp:j,onKeyDown:h,onDoubleClick:b}){return a.jsx("div",{role:"separator","aria-label":n,"aria-disabled":c,"aria-orientation":e==="col"?"vertical":"horizontal","aria-valuenow":i,"aria-valuemin":r,"aria-valuemax":l,tabIndex:c?-1:0,className:`hn-terminal-divider hn-terminal-divider--${e}`,title:c?void 0:"Seret untuk ubah ukuran — panah untuk langkah kecil, Shift+panah langkah besar, klik dua kali menyamakan",style:{"--grid-col":k,"--grid-row":g},onPointerDown:c?void 0:S,onPointerMove:c?void 0:p,onPointerUp:c?void 0:j,onPointerCancel:c?void 0:j,onKeyDown:c?void 0:h,onDoubleClick:c?void 0:b})}function Is({initial:e,onCommit:n,onCancel:i}){const[r,l]=u.useState(e);return a.jsx("input",{autoFocus:!0,"aria-label":"Nama grup",value:r,placeholder:"mis. Rilis",onChange:c=>l(c.target.value),onBlur:()=>n(r),onKeyDown:c=>{c.key==="Enter"?n(r):c.key==="Escape"&&i()},className:"hn-terminal-rename"})}const Cs={done:"✓",running:"●",pending:"○",skipped:"–",failed:"✕",abandoned:"⨯"};function Ta({phases:e,compact:n=!1,now:i}){const[r,l]=u.useState(null),c=wn(r!==null,()=>l(null),"dialog"),[,k]=u.useState(0),g=!!(e!=null&&e.some(h=>{var b;return((b=h.agent)==null?void 0:b.status)==="running"}));if(u.useEffect(()=>{if(!(!g||i!==void 0))return Hn(()=>k(h=>h+1))},[g,i]),!(e!=null&&e.length))return null;const S=i??Date.now(),p=e.find(h=>h.name===r&&h.agent),j=h=>{const b=h.agent;return b?typeof b.durationMs=="number"?Ht(b.durationMs):b.status==="running"&&b.startedAt?Ht(S-Date.parse(b.startedAt)):"":""};return a.jsxs("div",{"data-testid":"phase-strip",className:"hn-terminal-phase",children:[a.jsx("div",{"data-testid":"phase-strip-scroller",className:"hn-terminal-phase-scroller",children:e.map(h=>{if(!h.agent)return a.jsx("span",{"data-state":h.state,title:h.state,className:"hn-terminal-phase-name",children:h.name},h.name);const b=h.agent,y=Sn(h),R=!n||h.state==="active",T=j(h);return a.jsxs("button",{type:"button","data-tone":y,"aria-expanded":r===h.name,ref:r===h.name?c.triggerRef:void 0,"aria-haspopup":"dialog","aria-controls":r===h.name?c.panelId:void 0,"aria-label":Nn(h,T),onClick:()=>l(r===h.name?null:h.name),className:"hn-terminal-phase-chip",children:[a.jsx("span",{"aria-hidden":!0,children:Cs[y]}),a.jsx("span",{"data-state":h.state,title:h.state,className:"hn-terminal-phase-name",children:h.name}),h.state==="skipped"&&a.jsx("span",{children:"dilewati"}),R&&b.model&&a.jsxs("span",{children:["· ",ht(b.model)]}),R&&b.effort&&a.jsxs("span",{children:["· ",b.effort]}),R&&T&&a.jsxs("span",{children:["· ",T]}),b.attempts>1&&a.jsxs("span",{children:["↻",b.attempts]}),b.evidence==="missing"&&a.jsx("span",{role:"img","aria-label":"bukti subagent tak diterima",title:"bukti subagent tak diterima",className:"hn-terminal-phase-warn",children:"⚠"})]},h.name)})}),(p==null?void 0:p.agent)&&a.jsxs("div",{ref:c.panelRef,id:c.panelId,role:"dialog","aria-label":`Detail fase ${p.name}`,tabIndex:-1,onKeyDown:c.onKeyDown,className:"hn-terminal-phase-panel",children:[a.jsx("div",{children:a.jsx("b",{children:p.agent.name})}),a.jsx("div",{children:[ht(p.agent.model),p.agent.effort,p.agent.status??"belum mulai"].filter(Boolean).join(" · ")}),a.jsxs("div",{children:["durasi ",j(p)||"—"," · percobaan ",p.agent.attempts]}),a.jsxs("div",{children:["token in ",p.agent.inputTokens??"—"," · out ",p.agent.outputTokens??"—"," · cache ",p.agent.cachedTokens??"—"]}),p.agent.resultExcerpt&&a.jsx("pre",{className:"hn-terminal-phase-excerpt",children:p.agent.resultExcerpt})]})]})}const Ts=u.memo(Rs);function Rs({session:e,nameOf:n,onClose:i,onForget:r,canArrange:l,onDetach:c,onExit:k,onReview:g,onSessionReview:S,titleOf:p,onIntegrate:j,onIntegrateSession:h,specOf:b,fontSize:y,showKeys:R,predict:T,diag:E,screenReader:z,fullscreen:v,onFullscreen:f,onDialog:$,paneHidden:B}){const[_,x]=u.useState(null),N=u.useRef(null),[D,w]=u.useState(Number.POSITIVE_INFINITY);u.useEffect(()=>{const se=N.current;if(!se||typeof ResizeObserver!="function")return;const V=new ResizeObserver(Ve=>{var De;const J=((De=Ve[0])==null?void 0:De.contentRect.width)??se.getBoundingClientRect().width;J>0&&w(J)});return V.observe(se),()=>V.disconnect()},[]);const[o,C]=u.useState(!1),H=u.useCallback((se,V)=>{x(se),C(V)},[]),F=ye(e,n,p),me=!e.exited&&!!e.decision,pe=!e.exited&&!!e.deciding,we=me||pe,Z=e.exited&&!!e.exitCode,W=!e.exited&&o,Ae=Z?null:e.exited||W?"PST-005":we?"PST-004":"PST-003",le=Ra(e,{label:F,canArrange:l,specOf:b,onReview:g,onSessionReview:S,onIntegrate:j,onIntegrateSession:h,onDialog:$,onDetach:c,onFullscreen:f});return a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:e.exited?"hn-terminal-cell-header is-exited":"hn-terminal-cell-header","data-cell-tone":Z?"failed":e.exited||W?"done":we?"attention":"idle",children:[Ae&&a.jsx("span",{className:"hn-terminal-cell-illus",children:a.jsx(Un,{id:Ae,decorative:!0})}),a.jsxs("span",{className:"hn-terminal-cell-title",children:[F," · ",e.id.slice(0,6)]}),e.orchestrated&&e.model&&a.jsxs("span",{"data-testid":"orchestrator-chip",title:"Model & effort orchestrator",className:"hn-terminal-orch",children:["orch ",ht(e.model),e.effort?` · ${e.effort}`:""]}),e.exited&&(Z?a.jsx(de,{status:"failed",size:"sm",children:`Gagal · exit ${e.exitCode}`}):a.jsx(de,{status:"done",size:"sm",children:"Selesai"})),W&&a.jsx(de,{status:"done",size:"sm",children:"Selesai"}),pe&&!W&&a.jsx(de,{status:"running",size:"sm",children:"Lead memutuskan"}),me&&!pe&&!W&&a.jsx(de,{status:"awaiting",size:"sm"}),a.jsxs("span",{className:"hn-terminal-actions",children:[a.jsx(je,{label:`Aksi sesi ${e.id}`,items:le}),a.jsx("button",{type:"button",className:"hn-terminal-action","aria-label":`Tutup sesi ${e.id}`,title:"Tutup sesi (dikonfirmasi dulu)",onClick:i,children:a.jsx(Te,{name:"x",size:12})})]})]}),a.jsxs("div",{ref:N,className:"hn-terminal-cell-body",children:[e.exited&&a.jsx(vt,{}),a.jsx(Ta,{phases:_,compact:D<480}),a.jsx("div",{className:"hn-terminal-cell-pane",children:v?a.jsx("div",{className:"hn-terminal-cell-fullscreen",children:"Terbuka di layar penuh"}):a.jsx(bt,{sessionId:e.id,onExit:k,onPhases:H,fontSize:y,showKeys:R,predict:T,diag:E,screenReader:z,hidden:B,onForget:r,label:ye(e,n,p)},e.id)})]})]})}function Ra(e,n){var k;const i=[],r=e.specId?(k=n.specOf)==null?void 0:k.call(n,e.specId):void 0,l=!e.specId&&!!e.branch;e.specId&&i.push({key:"docs",label:"Lihat dokumen",icon:"file-text",title:"Lihat dokumen (audit/spec/plan)",onSelect:()=>n.onDialog("docs")});const c=e.specId;if(c&&n.onReview){const g=n.onReview;i.push({key:"review",label:"Review perubahan",icon:"git-compare",title:"Review perubahan (diff worktree)",onSelect:()=>g(c)})}if(l&&n.onSessionReview){const g=n.onSessionReview;i.push({key:"review-session",label:"Review perubahan",icon:"git-compare",title:"Review perubahan (diff worktree sesi)",onSelect:()=>g(e.id,n.label)})}return r&&n.onIntegrate&&i.push({key:"integrate",label:"Rebase / Merge branch",icon:"git-merge",title:"Rebase / Merge branch spec",onSelect:()=>n.onDialog("integrate")}),l&&n.onIntegrateSession&&i.push({key:"integrate-session",label:"Rebase / Merge branch",icon:"git-merge",title:"Rebase / Merge branch sesi",onSelect:()=>n.onDialog("sessIntegrate")}),i.push({key:"detach",label:"Lepas dari grid",icon:"unlink",disabled:!n.canArrange,title:"Lepas dari grid (sesi tetap hidup)",onSelect:n.onDetach}),i.push({key:"fullscreen",label:"Layar penuh",icon:"fullscreen",title:"Layar penuh — fokus 1 terminal",onSelect:n.onFullscreen}),n.onKill&&i.push({key:"close",label:"Tutup sesi",icon:"square",tone:"danger",title:"Tutup sesi (dikonfirmasi dulu)",onSelect:n.onKill}),i}function Es({kind:e,session:n,specOf:i,onIntegrate:r,onIntegrateSession:l,onClose:c}){if(e==="docs")return n.specId?a.jsx(qn,{specId:n.specId,onClose:c}):null;if(e==="integrate"){const k=n.specId?i==null?void 0:i(n.specId):void 0;return!k||!r?null:a.jsx(Vt,{projectId:k.projectId,ownBranch:`hanoman/${k.id.toLowerCase().replace(/[^a-z0-9_-]/g,"_")}`,eyebrow:k.id,onClose:c,onIntegrate:(g,S)=>{c(),r(k,g,S)}})}return!n.branch||n.specId||!l?null:a.jsx(Vt,{projectId:n.projectId,ownBranch:n.branch,eyebrow:n.id.slice(0,16),onClose:c,onIntegrate:(k,g)=>{c(),l(n,k,g)}})}const oa="Buka sesi lain: ambil backlog, riwayat sesi, atau terminal biasa";function ca({items:e,compact:n=!1}){const[i,r]=u.useState(!1);return a.jsxs(a.Fragment,{children:[n?a.jsxs("button",{type:"button",className:"hn-terminal-open-compact","aria-label":"Buka…",title:oa,"aria-haspopup":"dialog","aria-expanded":i,onClick:()=>r(!0),children:[a.jsx(Te,{name:"folder-open",size:16}),a.jsx("span",{className:"hn-terminal-open-text",children:"Buka…"})]}):a.jsx(K,{size:"sm",variant:"ghost","aria-haspopup":"dialog","aria-expanded":i,title:oa,onClick:()=>r(!0),children:"Buka…"}),i&&a.jsx(re,{open:!0,title:"Buka sesi",icon:"terminal",width:420,onClose:()=>r(!1),children:a.jsx("div",{className:"hn-terminal-menu-list",children:e.map(l=>a.jsxs("button",{type:"button",disabled:l.disabled,title:l.title,className:"hn-overflow-item",onClick:()=>{r(!1),l.onSelect()},children:[l.icon&&a.jsx(Te,{name:l.icon,size:15}),l.label]},l.key))})})]})}function zs({sessionCount:e,focused:n,railItems:i,mobile:r,listError:l,menuFor:c,onFocus:k,drawerOpen:g,onDrawer:S,fullId:p,focusPhases:j,paneHandlers:h,fontSize:b,showKeys:y,onToggleKeys:R,predict:T,diag:E,screenReader:z}){const v=n?i.find(f=>f.session.id===n.id):void 0;return a.jsxs("div",{className:"hn-terminal-focus","data-testid":"terminal-focus",children:[!r&&e>0&&a.jsxs("aside",{className:"hn-terminal-rail","aria-label":"Sesi terminal",children:[a.jsxs("div",{className:"hn-terminal-rail-head",children:[a.jsx("span",{children:"Sesi"}),a.jsx("span",{children:e})]}),a.jsx("div",{className:"hn-terminal-rail-scroll",children:a.jsx(ia,{items:i,focusedId:(n==null?void 0:n.id)??null,onFocus:k,menuFor:c})})]}),a.jsx("section",{className:"hn-terminal-focus-main","aria-label":"Terminal fokus",children:n&&v?a.jsxs(a.Fragment,{children:[a.jsxs("header",{className:"hn-terminal-focus-head",children:[a.jsxs("span",{className:"hn-terminal-focus-title",title:v.label,children:[v.label," · ",n.id.slice(0,6)]}),a.jsx(de,{status:Ca[v.status.tone],size:"sm",variant:"dot",children:v.status.label}),a.jsx(je,{label:`Aksi sesi ${n.id}`,items:c(n)})]}),n.exited&&a.jsx(vt,{}),a.jsx(Ta,{compact:r,phases:(j==null?void 0:j.sessionId)===n.id?j.phases:null}),a.jsx("div",{className:"hn-terminal-focus-body",children:p===n.id?a.jsx("div",{className:"hn-terminal-focus-placeholder",children:"Terbuka di layar penuh"}):a.jsx(bt,{sessionId:n.id,...h(n.id),fontSize:b,showKeys:y,predict:T,diag:E,screenReader:z,composer:!0,compact:r,onToggleKeys:R,label:v.label},n.id)})]}):l?null:a.jsx(Ce,{kind:"empty",icon:"terminal",title:"Belum ada sesi terminal",hint:"Tekan Sesi baru untuk memulai agen di project terpilih, atau Terminal biasa untuk shell."})}),r&&g&&a.jsx(re,{open:!0,title:"Sesi terminal",icon:"terminal",width:460,onClose:()=>S(!1),children:a.jsx(ia,{items:i,focusedId:(n==null?void 0:n.id)??null,onFocus:f=>{k(f),S(!1)},menuFor:c})})]})}function vt(){return a.jsxs("div",{role:"status","data-testid":"terminal-ended",className:"hn-terminal-ended",children:[a.jsx("strong",{className:"hn-terminal-ended-title",children:"Berakhir"}),a.jsx("span",{className:"hn-terminal-ended-body",children:"Agen sudah berhenti. Output tetap bisa dibaca; tutup sel bila tak diperlukan lagi."})]})}function As({session:e,label:n,fontSize:i,showKeys:r,predict:l,diag:c,screenReader:k,onClose:g}){return a.jsx(re,{open:!0,icon:"terminal",title:n,onClose:g,closeOnEscape:!1,width:1600,children:a.jsxs("div",{className:"hn-terminal-fullscreen-body",children:[e.exited&&a.jsx(vt,{}),a.jsx(bt,{sessionId:e.id,onExit:()=>{},fontSize:i,showKeys:r,predict:l,diag:c,screenReader:k},e.id)]})})}function Ds({unplaced:e,nameOf:n,onPick:i,disabled:r}){return a.jsx("div",{className:"hn-terminal-empty-cell",children:a.jsx(ae,{size:"sm",value:"","aria-label":"Pilih sesi untuk sel",disabled:r||!e.length,onChange:l=>l.target.value&&i(l.target.value),options:[{value:"",label:e.length?"Pilih sesi…":"tidak ada sesi bebas"}].concat(e.map(l=>({value:l.id,label:`${l.specId??n(l.projectId)} · ${l.id.slice(0,6)}`})))})})}export{Ta as PhaseStrip,Ls as TerminalScreen,Ra as sessionMenuItems};
@@ -1 +0,0 @@
1
- .hn-terminal-root{display:flex;flex-direction:column;gap:var(--space-3)}.hn-terminal-toolbar{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.hn-terminal-toolbar>*{flex:0 0 auto;white-space:nowrap}.hn-terminal-seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden}.hn-terminal-seg-btn{display:inline-flex;align-items:center;gap:var(--space-1);min-height:32px;padding:4px 10px;font:inherit;font-size:var(--text-xs);color:var(--text-muted);background:transparent;border:0;cursor:pointer}.hn-terminal-seg-btn+.hn-terminal-seg-btn{border-left:1px solid var(--border-hair)}.hn-terminal-seg-btn[aria-pressed=true]{background:var(--bone-200);color:var(--text-strong)}.hn-terminal-seg-btn:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-terminal-status{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;font-size:var(--text-xs);color:var(--text-muted)}.hn-terminal-status-warn{color:var(--status-warn)}.hn-terminal-status-err{color:var(--status-err)}.hn-terminal-grid-bar{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.hn-terminal-focus{display:flex;gap:var(--space-3);flex:1 1 0;min-height:640px;min-width:0}.hn-terminal-rail{flex:0 0 232px;display:flex;flex-direction:column;min-height:0;min-width:0;border:1px solid var(--border-hair);border-radius:var(--radius-md);background:var(--surface-card);overflow:hidden}.hn-terminal-rail-head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-hair);font-size:var(--text-xs);color:var(--text-muted)}.hn-terminal-rail-scroll{flex:1 1 0;min-height:0;overflow-y:auto}.hn-terminal-rail-list{list-style:none;margin:0;padding:0}.hn-terminal-rail-item{border-bottom:1px solid var(--border-hair)}.hn-terminal-rail-row{position:relative;display:flex;align-items:center;gap:var(--space-1);padding-right:var(--space-1)}.hn-terminal-rail-row:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px}.hn-terminal-rail-row[data-tone=attention]:before{background:var(--amber-600)}.hn-terminal-rail-row[data-tone=failed]:before{background:var(--clay-600)}.hn-terminal-rail-row.is-focused{background:var(--bone-200)}.hn-terminal-rail-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:var(--space-2) var(--space-3);font:inherit;color:var(--text-body);text-align:left;background:transparent;border:0;cursor:pointer}.hn-terminal-rail-main:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-terminal-rail-name{max-width:100%;font-size:var(--text-sm);color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-terminal-rail-meta{display:flex;align-items:center;gap:var(--space-2);min-width:0;flex-wrap:wrap;font-size:var(--text-xs);color:var(--text-muted)}.hn-terminal-rail-time{color:var(--text-subtle)}.hn-terminal-focus-main{flex:1 1 0;min-width:0;min-height:0;display:flex;flex-direction:column;border:1px solid var(--border-hair);border-radius:var(--radius-md);background:var(--surface-card);overflow:hidden}.hn-terminal-focus-head{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-3);border-bottom:1px solid var(--border-hair);background:var(--bone-200)}.hn-terminal-focus-title{flex:1 1 auto;min-width:0;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-terminal-focus-body{flex:1 1 0;min-height:0;display:flex;flex-direction:column;position:relative}.hn-terminal-focus-placeholder{flex:1 1 0;display:grid;place-items:center;padding:var(--space-3);font-size:var(--text-xs);color:var(--text-muted);text-align:center}.hn-terminal-dock{display:flex;flex-direction:column;gap:var(--space-2);flex:0 0 auto}.hn-terminal-dock:empty{display:none}.hn-terminal-rail-toggle{display:inline-flex;align-items:center;gap:var(--space-1);min-height:32px;padding:0 var(--space-2);font:inherit;font-size:var(--text-xs);color:var(--text-strong);background:transparent;border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap}.hn-terminal-rail-toggle:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-terminal-menu-list{display:flex;flex-direction:column;gap:var(--space-1)}.hn-terminal-dock-bar{display:flex;align-items:center;gap:var(--space-2);min-width:0}.hn-terminal-dock-bar .hn-terminal-voice-interim{flex:1 1 0}.hn-terminal-keys-toggle{display:inline-flex;align-items:center;min-height:32px;padding:0 var(--space-2);font:inherit;font-size:var(--text-xs);color:var(--text-muted);background:transparent;border:1px solid var(--border-hair);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap}.hn-terminal-keys-toggle[aria-expanded=true]{background:var(--bone-200);color:var(--text-strong)}.hn-terminal-keys-toggle:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-terminal-open-compact{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);min-width:32px;min-height:32px;padding:0 var(--space-2);font:inherit;font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer}.hn-terminal-open-compact:hover,.hn-terminal-open-compact[aria-expanded=true]{background:var(--bone-200);color:var(--text-strong)}.hn-terminal-open-compact:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-terminal-open-text{display:none}@media (min-width: 641px){.hn-terminal-open-text{display:inline}}@media (pointer: coarse),(max-width: 767px){.hn-terminal-open-compact{min-width:var(--touch-target);min-height:var(--touch-target)}}.hn-terminal-send{flex:0 0 auto;min-height:36px;padding:0 var(--space-3);font:inherit;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--action-on);background:var(--action-bg);border:1px solid var(--action-bg);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap}.hn-terminal-send:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-terminal-voice-options{display:flex;flex-direction:column;gap:var(--space-2)}.hn-terminal-voice-options-field{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-muted)}.hn-terminal-voice-options p{margin:0;font-size:var(--text-xs);color:var(--text-muted)}@media (max-width: 767px){.hn-terminal-toolbar{flex-wrap:nowrap}.hn-terminal-focus{min-height:0;gap:0}.hn-terminal-screen:not(.is-maxed){min-height:0;gap:var(--space-1);margin-bottom:-32px}.hn-terminal-focus-head{padding-top:0;padding-bottom:0;min-height:var(--touch-target)}.hn-terminal-rail{display:none}.hn-terminal-focus-main{border:0;border-radius:0;background:transparent;min-height:0;overflow:visible}.hn-terminal-focus-body{min-height:35dvh}.hn-terminal-focus-head{background:transparent;padding-left:0;padding-right:0}.hn-terminal-dock{gap:var(--space-1)}.hn-terminal-dock{position:sticky;bottom:0;z-index:1;background:var(--surface-page)}.hn-terminal-dock .hn-terminal-composer{flex-wrap:nowrap}.hn-terminal-dock .hn-terminal-composer-status{min-width:0;overflow:hidden;text-overflow:ellipsis}.hn-terminal-keys-toggle,.hn-terminal-send{min-height:var(--touch-target)}}@media (pointer: coarse){.hn-terminal-seg-btn,.hn-terminal-rail-main,.hn-terminal-rail-toggle,select.hn-terminal-voice-lang{min-height:var(--touch-target)}}@media (prefers-reduced-motion: reduce){.hn-terminal-rail-main,.hn-terminal-seg-btn{transition:none}}.hn-terminal-display{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}.hn-terminal-display-row{display:flex;align-items:center;gap:8px}.hn-terminal-display-label{flex:1;min-width:0;font-size:12px;color:var(--text-muted)}.hn-terminal-display-value{font-family:var(--font-mono);font-size:12px;min-width:44px;text-align:center}.hn-terminal-sr-hint{margin:0;font-size:12px;line-height:1.5;color:var(--text-muted)}.hn-terminal-diag{border-top:1px solid var(--border-hair);padding-top:8px}.hn-terminal-diag-summary{cursor:pointer;font-size:12px;color:var(--text-muted)}.hn-terminal-diag-row{margin-top:8px}.hn-terminal-notice{margin-bottom:12px}.hn-terminal-notice--tight{margin-bottom:8px}.hn-terminal-unplaced{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.hn-terminal-unplaced-label{font-size:11px;color:var(--text-subtle)}.hn-terminal-unplaced-chip{display:inline-flex;align-items:center;border-radius:var(--radius-sm);background:var(--bone-200);border:1px solid var(--border-hair);font-family:var(--font-mono);font-size:11px}.hn-terminal-unplaced-chip>.hn-terminal-unplaced-action{all:unset;cursor:pointer}.hn-terminal-tabs-row{display:flex;align-items:center;gap:8px}.hn-terminal-grid{flex:1;min-height:0;display:grid;gap:8px;grid-template-columns:var(--grid-cols);grid-template-rows:var(--grid-rows)}.hn-terminal-grid-corner{grid-column:1;grid-row:1}.hn-terminal-cell-slot{min-height:0;min-width:0;display:flex;flex-direction:column;border:1px solid var(--border-hair);border-radius:var(--radius-sm);overflow:hidden;grid-column:var(--cell-col);grid-row:var(--cell-row)}.hn-terminal-cell-slot.is-hidden{display:none}button.hn-terminal-gutter{position:relative;display:grid;place-items:center;font-size:11px;line-height:1;opacity:1;cursor:pointer;grid-column:var(--grid-col);grid-row:var(--grid-row)}button.hn-terminal-gutter:disabled{opacity:.3;cursor:not-allowed}.hn-terminal-divider{grid-column:var(--grid-col);grid-row:var(--grid-row)}.hn-terminal-groups{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.hn-terminal-groups.is-bordered{border-bottom:1px solid var(--border-hair);padding-bottom:4px}.hn-terminal-groups-tabs{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.hn-terminal-groups-actions{display:inline-flex;align-items:center}.hn-terminal-groups button.hn-terminal-group-tab{min-height:var(--group-box);padding:3px 6px;border:1px solid transparent;border-radius:var(--radius-sm);font:inherit;background:transparent;color:var(--text-muted);cursor:pointer}.hn-terminal-groups button.hn-terminal-group-tab[aria-selected=true]{background:var(--bone-200);border-color:var(--border-hair);color:var(--text-strong)}.hn-terminal-groups button.hn-terminal-group-action{min-width:var(--group-box);min-height:var(--group-box);display:inline-grid;place-items:center;border:0;padding:0;background:transparent;color:var(--text-subtle);font:inherit;cursor:pointer}.hn-terminal-groups button.hn-terminal-group-add{padding:0 8px}.hn-terminal-groups button.hn-terminal-group-remove:disabled{opacity:.35;cursor:not-allowed}.hn-terminal-groups button.hn-terminal-group-add:disabled{opacity:.5}.hn-terminal-rename{width:min(160px,60vw);padding:3px 6px;font-size:12px;font-family:var(--font-ui);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-strong)}.hn-terminal-field-full{width:100%}.hn-terminal-intro{font-size:12.5px;line-height:1.5;color:var(--text-muted);margin-bottom:12px}.hn-terminal-codex-note{font-size:12px;line-height:1.5;margin-bottom:12px;padding:8px 10px;border-radius:8px;background:var(--status-warn-tint);color:var(--text-muted)}.hn-terminal-phase{flex:0 0 auto;border-bottom:1px solid var(--border-hair)}.hn-terminal-phase-scroller{display:flex;align-items:center;gap:8px;padding:3px 8px;font-size:10px;font-family:var(--font-mono);overflow-x:auto;white-space:nowrap}.hn-terminal-phase-chip{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;padding:1px 6px;border:1px solid var(--border-hair);border-radius:var(--radius-sm);background:transparent;font:inherit;color:var(--text-body);cursor:pointer}.hn-terminal-phase-name{font-weight:400;text-decoration:none;opacity:1}.hn-terminal-phase-name[data-state=done]{color:var(--brass)}.hn-terminal-phase-name[data-state=active]{color:var(--text-strong);font-weight:600}.hn-terminal-phase-name[data-state=skipped]{color:var(--text-subtle);text-decoration:line-through}.hn-terminal-phase-name[data-state=pending]{color:var(--text-subtle);opacity:.5}.hn-terminal-phase-warn{color:var(--status-warn)}.hn-terminal-phase-panel{position:absolute;margin-left:8px;z-index:5;min-width:220px;max-width:min(420px,calc(100% - 16px));max-height:calc(100% - 48px);overflow-y:auto;box-sizing:border-box;padding:8px 10px;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-sm);white-space:normal;line-height:1.5;font-size:10px;font-family:var(--font-mono)}.hn-terminal-phase-excerpt{margin:6px 0 0;white-space:pre-wrap;max-height:160px;overflow:auto}.hn-terminal-cell-header{display:flex;align-items:center;gap:8px;padding:4px 8px;flex:0 0 auto;background:var(--bone-200);border-bottom:1px solid var(--border-hair);font-family:var(--font-mono);font-size:11px;color:var(--text-body)}.hn-terminal-cell-header.is-exited{color:var(--text-muted)}.hn-terminal-cell-header[data-cell-tone=failed]{background:var(--status-err-tint)}.hn-terminal-cell-header[data-cell-tone=done]{background:var(--status-ok-tint)}.hn-terminal-cell-header[data-cell-tone=attention]{background:var(--status-warn-tint)}.hn-terminal-cell-illus{display:block;width:34px;flex:0 0 auto;border-radius:var(--radius-sm);overflow:hidden}.hn-terminal-cell-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-terminal-orch{flex:0 0 auto;font-size:10px;color:var(--text-muted)}.hn-terminal-cell-body{display:flex;flex-direction:column;flex:1;min-height:0;position:relative}.hn-terminal-cell-pane{flex:1;min-height:0}.hn-terminal-cell-fullscreen{height:100%;display:grid;place-items:center;padding:12px;color:var(--text-subtle);font-size:12px;text-align:center}.hn-terminal-ended{display:flex;align-items:center;gap:8px;flex:0 0 auto;padding:4px 8px;background:var(--bone-200);border-bottom:1px solid var(--border-hair);font-size:11px;color:var(--text-strong)}.hn-terminal-ended-title{font-weight:600}.hn-terminal-ended-body{color:var(--text-body)}.hn-terminal-fullscreen-body{height:min(72vh,calc(100dvh - 180px));min-height:0;display:flex;flex-direction:column}.hn-terminal-empty-cell{flex:1;display:grid;place-items:center;padding:12px}.hn-terminal-screen{flex:1 1 0;min-height:640px;display:flex;flex-direction:column;gap:12px}.hn-terminal-screen.is-maxed{flex:0 1 auto;min-height:auto;gap:8px;position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--surface-page);padding-top:max(12px,var(--safe-top));padding-right:max(12px,var(--safe-right));padding-bottom:max(12px,var(--safe-bottom));padding-left:max(12px,var(--safe-left))}.hn-terminal-pick-notice{margin-bottom:10px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--clay-100);color:var(--clay-600);font-size:12px}.hn-terminal-pick-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.hn-terminal-pick-search{flex:1 1 220px}.hn-terminal-pick-list{display:flex;flex-direction:column;max-height:62vh;overflow-y:auto}.hn-terminal-pick-row{display:block;width:100%;flex:0 0 auto;font:inherit;color:inherit;text-align:left;background:transparent;padding:9px 8px;border:none;border-bottom:1px solid var(--border-hair);cursor:pointer}.hn-terminal-pick-main{display:flex;align-items:center;gap:10px;width:100%}.hn-terminal-pick-id{font-family:var(--font-mono);font-size:12px;color:var(--text-subtle);flex:0 0 78px}.hn-terminal-pick-title{flex:1;min-width:0;font-size:13px;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-terminal-pick-project{font-family:var(--font-mono);font-size:11px;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted)}.hn-terminal-hist-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.hn-terminal-hist-search{flex:1 1 200px}.hn-terminal-hist-list{display:flex;flex-direction:column;max-height:60vh;overflow-y:auto}.hn-terminal-hist-row{display:block;width:100%;flex:0 0 auto;font:inherit;color:inherit;text-align:left;background:transparent;padding:9px 8px;border:none;border-bottom:1px solid var(--border-hair);cursor:pointer}.hn-terminal-hist-main{display:flex;align-items:center;gap:10px;width:100%}.hn-terminal-hist-when{font-family:var(--font-mono);font-size:11px;color:var(--text-subtle);flex:0 0 132px}.hn-terminal-hist-title{flex:1;min-width:0;font-size:13px;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-terminal-hist-duration{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);flex:0 0 72px}.hn-terminal-hist-loading{padding:10px 8px;text-align:center;font-size:11px;color:var(--text-subtle)}.hn-terminal-hist-actions{display:flex;gap:8px;align-items:center;margin-bottom:10px}.hn-terminal-hist-spacer{flex:1}.hn-terminal-hist-meta{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin-bottom:12px;font-size:12px}.hn-terminal-hist-key{color:var(--text-subtle)}.hn-terminal-hist-val{font-family:var(--font-mono);color:var(--text-body);word-break:break-all}.hn-terminal-hist-note{font-size:12px;color:var(--text-subtle)}.hn-terminal-hist-copy{font-size:12px;margin-bottom:8px;color:var(--text-muted)}.hn-terminal-hist-copy.is-err{color:var(--clay-600)}.hn-terminal-hist-error{font-size:12px;color:var(--clay-600)}.hn-terminal-hist-pre{max-height:52vh;overflow:auto;margin:0;padding:10px;background:var(--bone-200);border:1px solid var(--border-hair);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:11px;white-space:pre-wrap;word-break:break-word;color:var(--text-body)}