hanoman 0.9.20 → 0.9.22
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.
- package/dist/build-info.json +3 -3
- package/dist/cli.js +2822 -253
- package/dist/server.js +15501 -12231
- package/docs/agent-integration.md +199 -23
- package/package.json +1 -1
- package/prisma/migrations/20261012100000_spec_reviewed_at/migration.sql +13 -0
- package/prisma/schema.prisma +6 -0
- package/web/assets/DalangHanomanScreen--M-xLwH5.js +16 -0
- package/web/assets/DalangHanomanScreen-DhDPV6e8.css +1 -0
- package/web/assets/{DocPreviewModal-Chk-jQ51.js → DocPreviewModal-CYdmHEb_.js} +1 -1
- package/web/assets/DocsWorkspace-BFzb87Ye.js +3 -0
- package/web/assets/DocsWorkspace-CSak7xFX.css +1 -0
- package/web/assets/IdeScreen-CDMJaERU.js +2 -0
- package/web/assets/IdeScreen-CppUucs0.css +10 -0
- package/web/assets/LeadScreen-CN53yR_e.css +1 -0
- package/web/assets/LeadScreen-DJjFTkyZ.js +1 -0
- package/web/assets/ReviewScreen-DG0xSBou.js +1 -0
- package/web/assets/SchedulerScreen-ChEZ01CH.js +1 -0
- package/web/assets/SettingsScreen-BnINOj5X.js +62 -0
- package/web/assets/SettingsScreen-DQZ3K43g.css +1 -0
- package/web/assets/TeamScreen-5cFDPm3o.js +1 -0
- package/web/assets/TeamScreen-CtkpFpCF.css +1 -0
- package/web/assets/TerminalScreen-CIROrYjO.js +2 -0
- package/web/assets/TerminalScreen-D0NdFmR-.css +1 -0
- package/web/assets/TriageScreen-B6_KrS6l.css +1 -0
- package/web/assets/TriageScreen-BWnuGOmQ.js +1 -0
- package/web/assets/VpsScreen-BzXpc3le.css +1 -0
- package/web/assets/VpsScreen-PqOkFriA.js +2 -0
- package/web/assets/index-DYWU10xI.js +1012 -0
- package/web/assets/index-T4aiSGoI.css +32 -0
- package/web/assets/live-C90Zx0h6.js +1 -0
- package/web/assets/sched-lead-shared-Qn3NA7WO.js +1 -0
- package/web/assets/scheduler-CQt-VP9-.css +1 -0
- package/web/assets/settings-rebase-3Z15zUKI.js +1 -0
- package/web/index.html +10 -3
- package/web/assets/DalangHanomanScreen-DqzYitwv.js +0 -1
- package/web/assets/DocsWorkspace-DuNVIjTg.js +0 -3
- package/web/assets/IdeScreen-BZGVyFT5.js +0 -2
- package/web/assets/IdeScreen-BfC0goYb.css +0 -10
- package/web/assets/LeadScreen-35VgddUo.js +0 -1
- package/web/assets/ReviewScreen-EkG8ywTU.js +0 -1
- package/web/assets/SchedulerScreen-ClaLLB8Y.js +0 -1
- package/web/assets/SettingsScreen-liOlVCeT.js +0 -62
- package/web/assets/TeamScreen-Dzl6Ruju.js +0 -1
- package/web/assets/TerminalScreen-CK3SzzgP.js +0 -2
- package/web/assets/TriageScreen-EtBRNg-t.js +0 -1
- package/web/assets/VpsScreen-9qeTHo1w.js +0 -2
- package/web/assets/hnm-dalang-six-arms-v01-DeBacuq8.webp +0 -0
- package/web/assets/hnm-wayang-project-v01-BG9EZqzn.webp +0 -0
- package/web/assets/index-D5w059cP.js +0 -1063
- package/web/assets/index-DI8I0VA5.css +0 -32
- package/web/assets/live-Bz-jmiWI.js +0 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
:root{--ink-900: #17130c;--ink-800: #241d13;--ink-700: #3a3125;--ink-600: #574b3a;--ink-500: #6f6250;--ink-400: #90826c;--ink-300: #b3a794;--ink-200: #d6ccb9;--bone-000: #fffdf8;--bone-100: #faf6ec;--bone-200: #f2ebdc;--bone-300: #e8dfcc;--bone-400: #dccfb6;--brass-700: #7a5417;--brass-600: #97671f;--brass-500: #b8863b;--brass-400: #cf9d55;--brass-300: #e3c988;--brass-100: #f3e6c4;--brass-050: #faf2df;--wind-700: #2f5560;--wind-600: #3f6e7a;--wind-500: #517f8c;--wind-100: #dbe7ea;--wind-050: #eef4f5;--leaf-600: #4d6b30;--leaf-500: #5f8340;--leaf-100: #e6eed7;--amber-600: #b3771a;--amber-500: #cf8f28;--amber-100: #f7e9c9;--amber-700: #8f5a0f;--clay-600: #a23b2e;--clay-500: #bd4a3a;--clay-100: #f5dcd6;--term-bg: #1c1810;--term-fg: #e9e0cd;--term-dim: #8f8467;--term-line: #2c2618;--surface-page: var(--bone-100);--surface-panel: var(--bone-200);--surface-card: var(--bone-000);--surface-sunken: var(--bone-200);--surface-inverse: var(--ink-900);--surface-code: var(--term-bg);--text-strong: var(--ink-900);--text-body: var(--ink-700);--text-muted: var(--ink-500);--text-subtle: #776853;--text-on-brass: var(--ink-900);--text-on-dark: var(--term-fg);--text-link: var(--wind-600);--border-hair: var(--bone-300);--border-strong: var(--ink-400);--border-focus: var(--brass-600);--accent: var(--brass-500);--accent-hover: var(--brass-600);--accent-press: var(--brass-700);--accent-tint: var(--brass-100);--action-bg: var(--brass-600);--action-bg-hover: var(--brass-700);--action-on: var(--bone-000);--info: var(--wind-600);--info-tint: var(--wind-100);--brass: var(--brass-600);--danger: var(--clay-600);--line: var(--border-hair);--status-ok: var(--leaf-600);--status-ok-tint: var(--leaf-100);--status-warn: var(--amber-700);--status-warn-tint: var(--amber-100);--status-err: var(--clay-600);--status-err-tint: var(--clay-100);--ring: 0 0 0 3px color-mix(in srgb, var(--brass-500) 45%, transparent)}:root{--font-serif: "IBM Plex Serif", Georgia, "Times New Roman", serif;--font-sans: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--font-display: var(--font-serif);--font-body: var(--font-sans);--font-ui: var(--font-sans);--font-code: var(--font-mono);--text-2xs: 11px;--text-xs: 12px;--text-sm: 13px;--text-md: 14px;--text-base:16px;--text-lg: 18px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 30px;--text-4xl: 38px;--text-5xl: 48px;--text-6xl: 62px;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--leading-tight: 1.12;--leading-snug: 1.3;--leading-normal: 1.5;--leading-relaxed:1.65;--tracking-tight: -.02em;--tracking-normal: 0;--tracking-wide: .02em;--tracking-caps: .14em}:root{--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 32px;--space-8: 40px;--space-9: 48px;--space-10: 64px;--space-11: 80px;--space-12: 96px;--radius-xs: 3px;--radius-sm: 5px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-pill: 999px;--border-thin: 1px;--border-med: 1.5px;--border-thick:2px;--content-max: 1200px;--sidebar-w: 248px;--topbar-h: 56px;--page-gutter-x: 28px;--page-gutter-y: 24px;--touch-target: 44px;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px)}@media (min-width: 768px) and (max-width: 1199px){:root{--sidebar-w: 72px;--page-gutter-x: 20px;--page-gutter-y: 20px}}@media (max-width: 767px){:root{--sidebar-w: 0px;--page-gutter-x: 14px;--page-gutter-y: 14px}}:root{--shadow-xs: 0 1px 1px rgba(35, 27, 15, .05);--shadow-sm: 0 1px 2px rgba(35, 27, 15, .06), 0 1px 1px rgba(35, 27, 15, .04);--shadow-md: 0 2px 4px rgba(35, 27, 15, .07), 0 4px 12px rgba(35, 27, 15, .06);--shadow-lg: 0 8px 24px rgba(35, 27, 15, .1), 0 2px 6px rgba(35, 27, 15, .06);--shadow-xl: 0 20px 48px rgba(35, 27, 15, .16), 0 4px 12px rgba(35, 27, 15, .08);--shadow-inset: inset 0 1px 2px rgba(35, 27, 15, .08);--shadow-gild: 0 1px 0 rgba(255, 253, 248, .6) inset, 0 0 0 1px var(--brass-300);--elevation-flat: none;--elevation-raised: var(--shadow-sm);--elevation-float: var(--shadow-md);--elevation-overlay:var(--shadow-lg);--elevation-modal: var(--shadow-xl);--ease-out: cubic-bezier(.22, .61, .36, 1);--ease-inout: cubic-bezier(.65, 0, .35, 1);--ease-fall: cubic-bezier(.55, .085, .68, .53);--dur-fast: .12s;--dur-base: .18s;--dur-slow: .28s;--transition-base: all var(--dur-base) var(--ease-out);--transition-fast: all var(--dur-fast) var(--ease-out)}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--surface-page);color:var(--text-body);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--font-display);color:var(--text-strong);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);font-weight:var(--weight-semibold);margin:0 0 var(--space-3)}p{margin:0 0 var(--space-3)}a{color:var(--text-link);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--text-link) 35%,transparent);transition:var(--transition-fast)}a:hover{color:var(--wind-700);border-bottom-color:var(--wind-700)}code,kbd,samp,pre{font-family:var(--font-code);font-size:.92em}.hn-eyebrow{font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted)}::selection{background:var(--brass-100);color:var(--ink-900)}html,body{margin:0;height:100%;background:var(--surface-page);overflow:hidden}#root{position:relative;height:100vh;height:100dvh;overflow:hidden;max-width:100%}.hn-dynamic-viewport{height:100vh;height:100dvh;min-height:100vh;min-height:100dvh}button:focus-visible,a[href]:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[role=button]:focus-visible,[role=tab]:focus-visible,[role=checkbox]:focus-visible,[role=radio]:focus-visible,[role=switch]:focus-visible,[role=separator]:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-select select:focus,.hn-select select:focus-visible{outline:none}.hn-input-core:focus-visible,.hn-textarea-core:focus-visible{outline:none}.hn-touch-target:focus-within:has(>.hn-input-core){outline:2px solid var(--border-focus);outline-offset:2px}.hn-shell{display:flex;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;background:var(--surface-page);color:var(--text-body)}.hn-shell-sidebar{width:var(--sidebar-w);flex:0 0 auto;display:flex;min-height:0;flex-direction:column;box-sizing:border-box;border-right:1px solid var(--border-hair);background:var(--bone-100);padding:18px 14px}.hn-shell-wordmark{padding:2px 4px 20px}.hn-shell-nav{display:flex;min-height:0;flex-direction:column;gap:2px;overflow-y:auto}.hn-shell-nav svg{flex:0 0 auto}.hn-shell-nav[data-cue-start=true],.hn-shell-nav[data-cue-end=true]{--hn-cue-t: 0px;--hn-cue-b: 0px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--hn-cue-t),#000 calc(100% - var(--hn-cue-b)),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 var(--hn-cue-t),#000 calc(100% - var(--hn-cue-b)),transparent 100%)}.hn-shell-nav[data-cue-start=true]{--hn-cue-t: 16px}.hn-shell-nav[data-cue-end=true]{--hn-cue-b: 16px}.hn-shell-dock{flex:0 0 auto;margin-top:auto;padding-top:8px}.hn-shell-dock:empty{display:none}.hn-shell-lane{flex:0 0 auto}.hn-shell-lane:empty{display:none}.hn-shell-lane:not(:empty){padding-bottom:var(--safe-bottom)}.hn-topbar-extra{display:contents}.hn-shell-subrow{display:flex;align-items:center;gap:10px;min-width:0;margin-left:auto}.hn-shell-subrow+.hn-shell-tools{margin-left:0}.hn-shell-subrow>*{min-width:0}.hn-shell-subrow>button{flex:0 0 auto;white-space:nowrap}.hn-shell .hn-shell-subrow .hn-shell-scope{min-width:0;max-width:100%}.hn-shell .hn-shell-subrow .hn-shell-scope select{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-nav-group{display:flex;flex-direction:column;gap:2px}.hn-nav-group+.hn-nav-group{margin-top:14px}.hn-nav-group-label{padding:0 10px 6px}.hn-nav-item{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:8px 10px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-body);font-family:var(--font-ui);font-size:var(--text-md);font-weight:var(--weight-medium);text-align:left;cursor:default;transition:background var(--dur-fast, .12s) ease}.hn-nav-item[data-interactive=true]{cursor:pointer}.hn-nav-item[data-interactive=true]:not([aria-current=page]):hover{background:var(--bone-200)}.hn-nav-item[aria-current=page]{background:var(--brass-100);color:var(--brass-700);font-weight:var(--weight-semibold)}.hn-section-tabs{min-width:0;max-width:100%;margin-bottom:var(--space-4)}.hn-section-tabs>.hn-tabs{max-width:100%}.hn-shell-column{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}.hn-shell-topbar{min-height:var(--topbar-h);flex:0 0 auto;display:flex;align-items:center;gap:16px;padding:0 22px;border-bottom:1px solid var(--border-hair);background:color-mix(in srgb,var(--bone-100) 80%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:relative;z-index:90}.hn-shell-menu{display:none;width:var(--touch-target);height:var(--touch-target);flex:0 0 auto;align-items:center;justify-content:center;border:1px solid var(--border-hair);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-body)}.hn-shell-heading{min-width:0}.hn-shell-tools{margin-left:auto;display:flex;flex:0 0 auto;min-width:0;align-items:center;justify-content:flex-end;flex-wrap:nowrap;gap:10px}.hn-shell-crumb{min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hn-shell-title{min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-bottom:.1em}.hn-shell-search{width:220px}:root{--pet-h: 0px}.hn-shell-main{flex:1;min-width:0;min-height:0;overflow-x:hidden;overflow-y:auto}@media (max-width: 767px){.hn-shell .hn-qa-bar-actions{bottom:calc(var(--pet-h) + var(--safe-bottom))}}.hn-shell-content{width:100%;min-width:0;min-height:100%;margin:0 auto;padding:var(--page-gutter-y) var(--page-gutter-x) calc(32px + var(--safe-bottom));box-sizing:border-box;display:flex;flex-direction:column}.hn-shell-backdrop{display:none}.hn-viewport-popover{box-sizing:border-box;max-width:calc(100vw - var(--safe-left) - var(--safe-right) - 28px)}.hn-modal-overlay{box-sizing:border-box;padding:calc(24px + var(--safe-top)) calc(24px + var(--safe-right)) calc(24px + var(--safe-bottom)) calc(24px + var(--safe-left))}.hn-modal-panel{min-width:0}.hn-modal-footer{flex-wrap:wrap;padding-bottom:calc(14px + var(--safe-bottom))}.hn-board-local-overflow{max-width:100%;overscroll-behavior-inline:contain}.hn-timeline-scroll{overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch}.hn-row-actions{flex-wrap:wrap}.hn-topbar-label-short{display:none}.hn-grid-mobile,.hn-stack-mobile,.hn-dense-row{min-width:0}.hn-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.hn-nav-badge{margin-left:auto;flex-shrink:0;min-width:18px;height:18px;padding:0 5px;display:inline-flex;align-items:center;justify-content:center;background:var(--brass-700);color:var(--bone-000);border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:var(--weight-semibold);line-height:1}@media (min-width: 768px) and (max-width: 1199px){.hn-shell-sidebar{width:var(--sidebar-w);padding:14px 4px}.hn-shell-sidebar .hn-nav-item{position:relative}.hn-shell-sidebar .hn-nav-badge{position:absolute;top:3px;right:5px;margin-left:0;min-width:16px;height:16px;padding:0 4px;font-size:10px}.hn-shell-sidebar .hn-nav-item{flex-direction:column;justify-content:center;gap:2px;padding:6px 0}.hn-shell-sidebar .hn-nav-label{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-2xs);line-height:1.2;text-align:center}.hn-shell-sidebar .hn-nav-group-label,.hn-shell-sidebar .hn-shell-wordmark>div>div>span:last-child{display:none}.hn-shell-sidebar .hn-nav-group+.hn-nav-group{margin-top:8px;padding-top:8px;border-top:1px solid var(--border-hair)}.hn-shell-sidebar nav button{justify-content:center;padding-inline:0}.hn-shell-wordmark{display:flex;justify-content:center;padding-inline:0}.hn-shell-topbar{flex-wrap:wrap;gap:6px 16px;min-height:0;padding-block:8px}.hn-shell-heading{flex:1 1 0}.hn-shell-tools{flex:0 0 auto;flex-wrap:nowrap;gap:6px}.hn-shell-subrow{order:3;flex:0 0 100%;height:40px;margin:0;min-width:0;overflow-x:auto}.hn-shell .hn-shell-subrow .hn-shell-scope{max-width:100%;min-width:0}.hn-shell .hn-shell-subrow .hn-shell-scope select{min-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-shell .hn-shell-cmdk .hn-kbd,.hn-topbar-label{display:none}.hn-topbar-label-short{display:inline}}@media (min-width: 1200px) and (max-height: 760px){.hn-shell-wordmark{padding-bottom:12px}.hn-nav-group+.hn-nav-group{margin-top:10px}.hn-shell-dock{padding-top:4px}}@media (max-width: 767px){.hn-shell-menu{display:inline-flex}.hn-shell-sidebar{position:fixed;z-index:120;inset:0 auto 0 0;width:min(320px,calc(100vw - 48px));padding:calc(14px + var(--safe-top)) 14px calc(14px + var(--safe-bottom)) calc(14px + var(--safe-left));box-shadow:var(--shadow-xl);transform:translate(-105%);transition:transform var(--transition-fast)}.hn-shell[data-nav-open=true] .hn-shell-sidebar{transform:translate(0)}.hn-shell-backdrop{display:block;position:fixed;z-index:119;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0;background:color-mix(in srgb,var(--ink-900) 42%,transparent)}.hn-shell-topbar{align-items:center;flex-wrap:wrap;gap:0 8px;min-height:0;padding:calc(6px + var(--safe-top)) var(--page-gutter-x) 6px;-webkit-backdrop-filter:none;backdrop-filter:none}.hn-shell-menu{order:0}.hn-shell-heading{order:1;flex:1 1 0;align-self:center}.hn-shell-tools{order:2;flex:0 0 auto;margin-left:0;gap:4px;flex-wrap:nowrap}.hn-shell-subrow{order:3;flex:0 0 100%;margin:6px 0 0;height:40px;gap:8px;min-width:0}.hn-shell .hn-shell-subrow>*{min-width:0}.hn-shell .hn-shell-subrow .hn-shell-scope,.hn-shell .hn-shell-subrow .hn-shell-search{width:auto;flex:1 1 0}.hn-shell .hn-shell-subrow button,.hn-shell .hn-shell-subrow input{min-height:40px}.hn-topbar-extra{display:none}.hn-shell .hn-shell-cmdk{width:var(--touch-target);min-width:var(--touch-target);padding:0;justify-content:center}.hn-shell .hn-shell-cmdk .hn-kbd,.hn-shell-crumb{display:none}.hn-shell-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hn-topbar-label{display:none}.hn-topbar-label-short{display:inline}.hn-shell button{min-width:var(--touch-target);min-height:var(--touch-target)}div.hn-viewport-popover{position:fixed;inset:auto max(var(--page-gutter-x),var(--safe-right)) calc(var(--page-gutter-y) + var(--safe-bottom)) max(var(--page-gutter-x),var(--safe-left));width:auto;max-width:none;max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - var(--page-gutter-y) - var(--page-gutter-y));overflow:auto}div.hn-modal-overlay{align-items:flex-end;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left)}div.hn-modal-panel{width:100%!important;max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom));border-radius:var(--radius-lg) var(--radius-lg) 0 0}div.hn-modal-header,div.hn-modal-body{padding-inline:var(--page-gutter-x)}.hn-modal-panel>div.hn-modal-footer{padding-inline:var(--page-gutter-x)}.hn-modal-footer>*{min-height:var(--touch-target)}div.hn-grid-mobile{grid-template-columns:minmax(0,1fr)}div.hn-stack-mobile{align-items:stretch;flex-direction:column}.hn-dense-row{align-items:flex-start!important;flex-wrap:wrap}.hn-dense-row>.hn-grow{min-width:min(220px,100%)}.hn-picker-row{flex-wrap:wrap}.hn-picker-row>.hn-picker-title{order:2;flex:1 1 100%;min-width:100%;white-space:normal;overflow:visible}.hn-card-header{align-items:stretch;flex-direction:column}.hn-card-actions{max-width:100%}.hn-card-actions>*{max-width:100%}.hn-settings-layout{width:100%}header.hn-portal-header{height:auto;min-height:var(--topbar-h);flex-wrap:wrap;padding:max(8px,var(--safe-top)) max(var(--page-gutter-x),var(--safe-right)) 8px max(var(--page-gutter-x),var(--safe-left))}.hn-portal-header>div{flex-basis:1px}div.hn-portal-content{box-sizing:border-box;padding:16px max(var(--page-gutter-x),var(--safe-right)) calc(24px + var(--safe-bottom)) max(var(--page-gutter-x),var(--safe-left))}.hn-portal-row{align-items:flex-start;flex-wrap:wrap;min-height:var(--touch-target)}.hn-portal-row>span:nth-child(2){flex-basis:calc(100% - 110px)}}.hn-responsive-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;min-width:0;max-width:100%}@media (max-width: 767px){div.hn-setting-row{align-items:stretch;flex-direction:column}.hn-setting-control{width:100%}.hn-setting-control>.hn-touch-target,.hn-setting-control>div{width:100%;max-width:100%}.hn-setting-control>div{flex-wrap:wrap}.hn-setting-control>div>div.hn-touch-target{flex:1 1 200px;width:auto;max-width:100%}}.hn-local-overflow{max-width:100%;min-width:0;overflow:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch}.hn-tabs{max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scroll-padding-inline:24px}.hn-tabs>[role=tab]{scroll-snap-align:start}.hn-tabs[data-fade-start=true],.hn-tabs[data-fade-end=true]{--hn-fade-l: 0px;--hn-fade-r: 0px;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--hn-fade-l),#000 calc(100% - var(--hn-fade-r)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--hn-fade-l),#000 calc(100% - var(--hn-fade-r)),transparent 100%)}.hn-tabs[data-fade-start=true]{--hn-fade-l: 24px}.hn-tabs[data-fade-end=true]{--hn-fade-r: 24px}@media (max-width: 420px){.hn-sched>.hn-tabs{flex-wrap:wrap;overflow:visible;scroll-snap-type:none}}.hn-ide-head{display:flex;align-items:center;flex-wrap:wrap;gap:12px;min-width:0}.hn-ide-head>.hn-tabs{flex:0 0 auto}.hn-ide-toolbar{display:flex;align-items:center;flex:1 1 480px;flex-wrap:nowrap;gap:10px;min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain}.hn-ide-toolbar>*{flex:0 0 auto}.hn-ide-toolbar>:first-child{margin-inline-start:auto}input[type=checkbox],input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:0 0 auto;box-sizing:content-box;width:16px;height:16px;margin:0;padding:4px;border:0;border-radius:var(--radius-xs);background-color:transparent;background-repeat:no-repeat;background-position:center;background-origin:content-box;background-clip:content-box;background-image:linear-gradient(var(--surface-card),var(--surface-card)),linear-gradient(var(--border-strong),var(--border-strong));background-size:calc(100% - 3px) calc(100% - 3px),100% 100%;cursor:pointer}input[type=radio]{border-radius:50%}input[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.5l2.6 2.6L12 5.6' fill='none' stroke='%23fffdf8' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"),linear-gradient(var(--action-bg),var(--action-bg)),linear-gradient(var(--action-bg-hover),var(--action-bg-hover));background-size:100% 100%,calc(100% - 3px) calc(100% - 3px),100% 100%}input[type=radio]:checked{background-image:radial-gradient(circle,#17130c 0 2.5px,transparent 3px),linear-gradient(var(--accent),var(--accent)),linear-gradient(var(--accent-hover),var(--accent-hover));background-size:100% 100%,calc(100% - 3px) calc(100% - 3px),100% 100%}input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.55;cursor:not-allowed}input[type=file]{min-height:24px}@media (pointer: coarse),(max-width: 767px){button:not(.hn-shell-backdrop){min-width:var(--touch-target);min-height:var(--touch-target)}input:not([type=checkbox]):not([type=radio]),select,textarea{min-width:var(--touch-target);min-height:var(--touch-target)}input[type=checkbox],input[type=radio]{padding:14px}input[type=file]{min-height:var(--touch-target)}.hn-touch-target,.hn-terminal-unplaced-action,[role=button][tabindex="0"]{min-width:var(--touch-target)!important;min-height:var(--touch-target)!important}.hn-tabs [role=tab]{min-height:var(--touch-target)}.hn-choice-target{min-width:var(--touch-target);min-height:var(--touch-target)}.hn-choice-control{min-width:var(--touch-target);min-height:var(--touch-target);outline-offset:8px}}.hn-responsive-panels{display:flex;flex:1 1 auto;min-width:0;min-height:0;flex-direction:column;gap:12px}.hn-panel-switcher{flex:0 0 auto;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}.hn-panels-grid{display:grid;grid-template-columns:minmax(0,1fr);flex:1 1 auto;min-width:0;min-height:0;gap:16px}.hn-responsive-panel{min-width:0;min-height:0}.hn-panel-flex{display:flex;min-width:0;min-height:0;flex-direction:column}.hn-panel-flex>*{min-width:0}.hn-graph-action{display:inline-grid;min-width:28px;min-height:28px;place-items:center;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer}.hn-graph-action:hover{background:var(--bone-200)}.hn-terminal-actions{display:inline-flex;flex:0 0 auto;align-items:center;gap:2px}.hn-terminal-action{display:inline-grid;min-width:28px;min-height:28px;padding:0;place-items:center;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-subtle);font:inherit;cursor:pointer}.hn-terminal-action--text{padding-inline:5px}.hn-terminal-action:hover{background:var(--bone-300);color:var(--text-strong)}.hn-terminal-gutter{border:0;padding:0;font:inherit;background:transparent;color:var(--text-subtle)}.hn-terminal-gutter:hover:not(:disabled){background:var(--bone-300);color:var(--text-strong)}@media (pointer: coarse){.hn-terminal-gutter--col:before{content:"";position:absolute;left:0;right:0;top:calc((var(--touch-target) - 100%) / -2);bottom:calc((var(--touch-target) - 100%) / -2)}.hn-terminal-gutter--row:before{content:"";position:absolute;top:0;bottom:0;left:calc((var(--touch-target) - 100%) / -2);right:calc((var(--touch-target) - 100%) / -2)}}.hn-terminal-unplaced-chip{padding:4px 8px;gap:6px}@media (pointer: coarse),(max-width: 767px){.hn-terminal-unplaced-chip{padding:6px 6px 6px 10px;gap:8px}}.hn-terminal-select-overlay{position:absolute;top:8px;right:8px;bottom:8px;left:8px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;pointer-events:none}.hn-terminal-select-badge{padding:3px 10px;border:1px solid var(--brass-500);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--brass-500) 18%,var(--term-bg));color:var(--brass-300);font:var(--weight-medium) var(--text-xs)/1.2 var(--font-mono)}.hn-terminal-select-bar{pointer-events:auto;display:inline-flex;gap:6px;padding:4px;border:1px solid var(--border-hair);border-radius:var(--radius-md);background:var(--surface-card);box-shadow:var(--shadow-sm)}.hn-terminal-select-bar .hn-terminal-action{color:var(--text-body)}.hn-terminal-keys{display:flex;flex:0 0 auto;gap:4px;max-width:100%;padding:4px 2px;overflow-x:auto;overscroll-behavior-inline:contain;border-top:1px solid var(--border-hair);scroll-snap-type:x proximity;scroll-padding-inline:24px}.hn-terminal-key{flex:0 0 auto;scroll-snap-align:start;min-width:40px;min-height:32px;padding:0 8px;border:1px solid var(--border-hair);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-body);font:var(--weight-medium) var(--text-sm)/1 var(--font-mono);cursor:pointer}.hn-terminal-key:hover{background:var(--bone-200);color:var(--text-strong)}.hn-terminal-keys[data-fade-start=true],.hn-terminal-keys[data-fade-end=true]{--hn-fade-l: 0px;--hn-fade-r: 0px;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--hn-fade-l),#000 calc(100% - var(--hn-fade-r)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--hn-fade-l),#000 calc(100% - var(--hn-fade-r)),transparent 100%)}.hn-terminal-keys[data-fade-start=true]{--hn-fade-l: 24px}.hn-terminal-keys[data-fade-end=true]{--hn-fade-r: 24px}@media (max-width: 420px){.hn-terminal-keys{flex-wrap:wrap;overflow:visible;scroll-snap-type:none}}.hn-terminal-composer{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:center;gap:6px;padding:4px 2px;border-top:1px solid var(--border-hair)}.hn-terminal-composer-status{flex:0 0 auto;font:var(--text-xs)/1.2 var(--font-mono);color:var(--text-subtle);white-space:nowrap}.hn-terminal-composer-status--queued{color:var(--status-warn)}.hn-terminal-composer-status--held{color:var(--status-err)}.hn-terminal-voice{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:center;gap:6px;padding:4px 2px;border-top:1px solid var(--border-hair)}.hn-terminal-voice-lang{flex:0 0 auto;min-height:30px;padding:0 6px;border:1px solid var(--border-hair);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-body);font:var(--text-xs)/1.2 var(--font-mono)}.hn-terminal-voice-hint{display:inline-flex;color:var(--text-subtle);cursor:help}.hn-terminal-voice-interim{flex:1 1 120px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:italic var(--text-xs)/1.2 var(--font-mono);color:var(--text-subtle)}.hn-terminal-voice-error{font:var(--text-xs)/1.2 var(--font-mono);color:var(--status-err)}.hn-voice-rec{animation:hn-voice-pulse 1.2s ease-in-out infinite}@keyframes hn-voice-pulse{50%{box-shadow:0 0 0 4px var(--status-err-tint)}}@media (prefers-reduced-motion: reduce){.hn-voice-rec{animation:none}}.hn-terminal-divider{position:relative;background:transparent;z-index:1}.hn-terminal-divider:before{content:"";position:absolute;background:var(--accent-hover)}.hn-terminal-divider--col{width:16px;margin-left:-12px;justify-self:start;cursor:col-resize}.hn-terminal-divider--col:before{top:0;bottom:0;left:50%;width:1px;transform:translate(-50%)}.hn-terminal-divider--row{height:16px;margin-top:-12px;align-self:start;cursor:row-resize}.hn-terminal-divider--row:before{left:0;right:0;top:50%;height:1px;transform:translateY(-50%)}.hn-terminal-divider:hover:before,.hn-terminal-divider:focus-visible:before{background:var(--accent-press)}.hn-terminal-divider[aria-disabled=true]{cursor:default}.hn-terminal-divider[aria-disabled=true]:hover:before{background:var(--accent-hover)}@media (max-width: 767px){.hn-terminal-cell-header{flex-wrap:wrap}}@media (pointer: coarse),(max-width: 767px){.hn-graph-action,.hn-terminal-action,.hn-terminal-key,.hn-terminal-group-control{min-width:var(--touch-target);min-height:var(--touch-target)}}.hn-responsive-panel[aria-hidden=true]{display:none}@media (min-width: 768px){.hn-responsive-panels--tablet .hn-panel-switcher{display:none}.hn-responsive-panels--tablet .hn-panels-grid{grid-template-columns:minmax(0,var(--hn-master-width, 280px)) minmax(0,1fr)}.hn-responsive-panels--tablet .hn-responsive-panel[aria-hidden=true]{display:block}}@media (min-width: 1200px){.hn-responsive-panels--desktop .hn-panel-switcher{display:none}.hn-responsive-panels--desktop .hn-panels-grid{grid-template-columns:minmax(0,var(--hn-master-width, 300px)) minmax(0,1fr)}.hn-responsive-panels--desktop .hn-responsive-panel[aria-hidden=true]{display:block}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition:none!important}}a{color:var(--text-link);text-decoration:none}a:hover{color:var(--wind-700);text-decoration:underline}.hn-md{color:var(--text-body);font-family:var(--font-sans);font-size:15px;line-height:1.72;overflow-wrap:anywhere}.hn-md>:first-child{margin-top:8px}.hn-md h1,.hn-md h2,.hn-md h3,.hn-md h4{font-family:var(--font-display);font-weight:600;letter-spacing:-.02em;color:var(--ink-900);line-height:1.2;margin:1.6em 0 .5em}.hn-md h1{font-size:30px;margin-top:.4em;padding-bottom:.34em;border-bottom:1px solid var(--border-hair)}.hn-md h2{font-size:22px}.hn-md h3{font-size:18px}.hn-md h4{font-size:15px}.hn-md p{margin:.7em 0}.hn-md ul,.hn-md ol{margin:.6em 0;padding-left:1.5em}.hn-md li{margin:.28em 0}.hn-md li::marker{color:var(--brass-500)}.hn-md ul.contains-task-list,.hn-md li.task-list-item{list-style:none}.hn-md li.task-list-item{padding-left:0}.hn-md input[type=checkbox]{accent-color:var(--brass-500);margin-right:8px;transform:translateY(1px)}.hn-md strong{font-weight:600;color:var(--ink-900)}.hn-md em{color:var(--text-muted)}.hn-md a{color:var(--text-link)}.hn-md hr{border:none;border-top:1px solid var(--border-hair);margin:1.6em 0}.hn-md code{font-family:var(--font-mono);font-size:.86em;background:var(--bone-200);color:var(--ink-800);padding:1.5px 5px;border-radius:var(--radius-xs);border:1px solid var(--border-hair)}.hn-md pre{background:var(--surface-code);border:1px solid var(--term-line);border-radius:var(--radius-lg);padding:14px 16px;overflow:auto;margin:1em 0;white-space:pre-wrap;overflow-wrap:anywhere}.hn-md pre code{background:transparent;border:none;padding:0;color:var(--term-fg);font-size:12.5px;line-height:1.7}.hn-md blockquote{margin:1em 0;padding:4px 16px;border-left:3px solid var(--brass-500);background:var(--brass-050);color:var(--text-body);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.hn-md blockquote p{margin:.4em 0}.hn-md table{border-collapse:collapse;width:100%;margin:1em 0;font-size:14px;table-layout:fixed}.hn-md th,.hn-md td{overflow-wrap:anywhere}.hn-md th{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);text-align:left;padding:8px 12px;background:var(--bone-100);border:1px solid var(--border-hair)}.hn-md td{padding:8px 12px;border:1px solid var(--border-hair);color:var(--text-body)}.hn-md td code{font-size:.82em}.hn-md img{max-width:100%;border-radius:var(--radius-sm)}@keyframes hn-fade-in{0%{opacity:0}to{opacity:1}}@keyframes hn-modal-in{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}.hn-pet-reactor{transform-origin:50% 86%}.hn-pet-stage:not([data-reduced-motion=true]):hover .hn-pet-reactor{transform:translateY(-2px) scale(1.035) rotate(-1deg)}.hn-pet-rowshift{transform:translateY(calc(var(--row, 0) * -100%))}.hn-pet-hit{touch-action:none;user-select:none;-webkit-user-select:none}@keyframes hn-pet-frames{to{transform:translate(-100%)}}.hn-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@keyframes hn-pet-click{0%,to{transform:translateY(0) scale(1) rotate(0)}38%{transform:translateY(2px) scale(.9,1.06) rotate(-2deg)}72%{transform:translateY(-3px) scale(1.06,.96) rotate(1.5deg)}}@keyframes hn-pet-panel-in{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes hn-pet-panel-out{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(5px) scale(.985)}}@keyframes hn-pet-reveal{0%{opacity:0;transform:translateY(7px) scale(.86)}70%{opacity:1;transform:translateY(-1px) scale(1.035)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes hn-pet-bubble-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes hn-pet-heart{0%{opacity:0;transform:translateY(0) scale(.6)}30%{opacity:1;transform:translateY(-8px) scale(1)}to{opacity:0;transform:translateY(-26px) scale(.9)}}.hn-grow{flex:1 1 0%}.hn-stack{display:flex;flex-direction:column;min-width:0}.hn-inline{display:flex;flex-direction:row;flex-wrap:wrap;min-width:0}.hn-inline.hn-inline-nowrap{flex-wrap:nowrap}.hn-page-header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-3) var(--space-5);min-width:0}.hn-page-header-text{flex:1 1 260px;min-width:0}.hn-page-eyebrow{margin-bottom:var(--space-1)}.hn-page-title{margin:0;font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);color:var(--text-strong);overflow-wrap:anywhere}.hn-page-description{margin:var(--space-1) 0 0;max-width:64ch;font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--text-muted)}.hn-page-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.hn-filter-bar{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}.hn-filter-bar-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.hn-filter-search{flex:1 1 220px;min-width:min(220px,100%);max-width:360px}.hn-filter-actions{display:flex;align-items:center;gap:var(--space-2);margin-left:auto}.hn-filter-bar-chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);min-width:0}.hn-filter-chip{display:inline-flex;align-items:center;gap:var(--space-1);min-height:28px;padding:0 var(--space-2);border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--accent-tint);color:var(--text-strong);font:var(--weight-medium) var(--text-xs)/1 var(--font-ui);cursor:pointer}.hn-filter-chip:hover{background:var(--brass-300)}.hn-filter-popover-anchor{position:relative;display:inline-flex}.hn-filter-trigger{display:inline-flex;align-items:center;gap:var(--space-2);min-height:32px;padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-body);font:var(--weight-medium) var(--text-sm)/1 var(--font-ui);cursor:pointer}.hn-filter-trigger:hover{background:var(--bone-100);color:var(--text-strong)}.hn-filter-trigger[aria-expanded=true]{border-color:var(--border-focus)}.hn-filter-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--radius-pill);background:var(--brass-700);color:var(--bone-000);font:var(--weight-semibold) var(--text-2xs)/1 var(--font-mono)}.hn-filter-popover{position:absolute;z-index:30;top:calc(100% + 6px);left:0;min-width:260px;max-width:min(360px,calc(100vw - 2 * var(--page-gutter-x)));display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3);background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}@media (max-width: 640px){.hn-filter-popover-anchor{flex:1 1 100%}.hn-filter-popover{right:0;max-width:min(360px,100%)}}.hn-filter-chip:focus-visible,.hn-filter-trigger:focus-visible,.hn-row-main:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-row-list{list-style:none;margin:0;padding:0;min-width:0}.hn-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);min-width:0;padding:0 var(--space-3);border-bottom:1px solid var(--border-hair)}.hn-row:last-child{border-bottom:0}.hn-row-main{flex:1 1 200px;min-width:0;display:flex;align-items:center;gap:var(--space-3);margin:0;padding:10px 0;border:0;background:transparent;color:inherit;font:inherit;text-align:left}a.hn-row-main,a.hn-row-main:hover{color:inherit;border:0}button.hn-row-main{cursor:pointer}.hn-row-interactive{transition:background var(--dur-fast) var(--ease-out)}.hn-row-interactive:hover,.hn-row-interactive:focus-within{background:var(--surface-sunken)}.hn-row-selected{background:var(--brass-050);box-shadow:inset 3px 0 0 var(--accent)}.hn-row-actions{display:flex;align-items:center;gap:var(--space-1);flex:0 0 auto}@media (pointer: coarse),(max-width: 767px){.hn-row-interactive .hn-row-main,.hn-row-actions button{min-height:var(--touch-target)}}.hn-skeleton{display:block;max-width:100%;background:linear-gradient(90deg,var(--bone-200) 0%,var(--bone-300) 50%,var(--bone-200) 100%);background-size:200% 100%;animation:hn-skeleton-shimmer 1.4s var(--ease-inout) infinite}.hn-skeleton-r-xs{border-radius:var(--radius-xs)}.hn-skeleton-r-sm{border-radius:var(--radius-sm)}.hn-skeleton-r-md{border-radius:var(--radius-md)}.hn-skeleton-r-pill{border-radius:var(--radius-pill)}.hn-skeleton-list{display:flex;flex-direction:column;gap:var(--space-2)}@keyframes hn-skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.hn-skeleton{animation:none}}.hn-status-dot-pulse{animation:hn-pulse 1.4s ease-in-out infinite}@keyframes hn-pulse{0%,to{opacity:1}50%{opacity:.35}}@media (prefers-reduced-motion: reduce){.hn-status-dot-pulse{animation:none}}.hn-live-status{display:inline-flex;align-items:center;min-width:0}.hn-live-status:empty{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.hn-tabpanel{min-width:0}.hn-tabpanel[hidden]{display:none}kbd.hn-kbd,.hn-palette kbd,.hn-palette-foot kbd,.hn-shortcut-help kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;box-sizing:border-box;border:1px solid var(--border-hair);border-bottom-width:2px;border-radius:4px;background:var(--bone-100);color:var(--text-body);font-family:var(--font-mono);font-size:11px;line-height:1}.hn-shell-cmdk{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 8px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-muted);cursor:pointer;font-family:var(--font-ui);font-size:var(--text-sm)}.hn-shell-cmdk:hover{background:var(--bone-200)}.hn-shell-cmdk:focus-visible{outline:none;border-color:var(--border-focus);box-shadow:var(--ring)}.hn-shell-scope{width:200px}.hn-palette{display:flex;flex-direction:column;gap:10px}.hn-palette-search{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-card)}.hn-palette-search:focus-within{border-color:var(--border-focus);box-shadow:var(--ring)}.hn-palette-search input:focus-visible,.hn-palette-input:focus-visible{outline:none}.hn-palette-input{flex:1 1 auto;min-width:0;border:none;outline:none;background:transparent;color:var(--text-strong);font-family:var(--font-ui);font-size:var(--text-md)}.hn-palette-list{display:flex;flex-direction:column;gap:4px;max-height:min(56vh,480px);overflow-y:auto}.hn-palette-group-label{padding:8px 4px 2px;color:var(--text-subtle);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase}.hn-palette-option{display:flex;align-items:center;gap:10px;min-height:40px;padding:0 10px;box-sizing:border-box;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-body);font-family:var(--font-ui);font-size:var(--text-md)}.hn-palette-option.is-active{background:var(--brass-100);color:var(--brass-700)}.hn-palette-option.is-disabled{color:var(--text-subtle);cursor:default}.hn-palette-option-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-palette-option-hint{flex:0 0 auto;color:var(--text-muted);font-family:var(--font-mono);font-size:11px;white-space:nowrap}.hn-palette-empty{padding:16px 4px;color:var(--text-subtle);font-family:var(--font-ui);font-size:var(--text-sm)}.hn-palette-foot{display:flex;flex-wrap:wrap;gap:8px 16px;color:var(--text-subtle);font-family:var(--font-ui);font-size:12px}.hn-shortcut-title{margin:14px 0 6px;color:var(--text-subtle);font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.04em;text-transform:uppercase}.hn-shortcut-title:first-child{margin-top:0}.hn-shortcut-list{margin:0;display:flex;flex-direction:column;gap:4px}.hn-shortcut-row{display:flex;align-items:center;gap:12px;min-height:32px}.hn-shortcut-row dt{display:flex;gap:4px;min-width:120px;margin:0}.hn-shortcut-row dd{margin:0;color:var(--text-body);font-family:var(--font-ui);font-size:var(--text-md)}@media (max-width: 767px){.hn-shell-scope{width:100%}}@media (pointer: coarse),(max-width: 767px){.hn-shell-cmdk{min-width:var(--touch-target);min-height:var(--touch-target);justify-content:center;padding:0}.hn-shell-cmdk kbd{display:none}.hn-palette-search,.hn-palette-option{min-height:var(--touch-target)}}@media (prefers-reduced-motion: reduce){.hn-shell-cmdk{transition:none}}.hn-choice-control{min-width:24px;min-height:24px}@keyframes hn-spin{to{transform:rotate(360deg)}}@media (pointer: coarse),(max-width: 767px){.hn-choice-control{min-width:var(--touch-target);min-height:var(--touch-target)}}.hn-btn-danger{background:var(--clay-600);color:#fff;border:1px solid var(--clay-600)}.hn-btn-danger:not(:disabled):not([aria-disabled=true]):hover{filter:brightness(.95)}.hn-btn-danger-outline{background:var(--surface-card);color:var(--clay-600);border:1px solid var(--clay-500);box-shadow:var(--shadow-xs)}.hn-btn-danger-outline:not(:disabled):not([aria-disabled=true]):hover{background:var(--status-err-tint);border-color:var(--clay-600)}.hn-btn-danger:focus-visible,.hn-btn-danger-outline:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-radio-ring{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:var(--radius-pill);background:var(--surface-card);border:1.5px solid var(--border-strong);box-shadow:var(--shadow-inset);transition:var(--transition-fast)}.hn-choice-control[aria-checked=true]>.hn-radio-ring{border-color:var(--accent);box-shadow:none}.hn-radio-dot{width:8px;height:8px;border-radius:var(--radius-pill);background:var(--accent)}.hn-radio-label{display:block;font-size:var(--text-md);color:var(--text-strong);line-height:1.4}.hn-choice-target[data-tone=danger] .hn-radio-ring,.hn-choice-target[data-tone=danger] .hn-choice-control[aria-checked=true]>.hn-radio-ring{border-color:var(--status-err)}.hn-choice-target[data-tone=danger] .hn-radio-dot{background:var(--status-err)}.hn-choice-target[data-tone=danger] .hn-radio-label{color:var(--clay-600)}.hn-field[data-tone=danger]>.hn-field-label{color:var(--status-err)}@media (max-width: 640px){.hn-select{max-width:100%;min-width:0}.hn-select select{max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.hn-callout{border:1px solid;border-left-width:3px}.hn-callout[data-tone=info]{color:var(--wind-700);background:var(--wind-050);border-color:var(--wind-500);border-left-color:var(--wind-700)}.hn-callout[data-tone=ok]{color:var(--leaf-600);background:var(--leaf-100);border-color:var(--leaf-500);border-left-color:var(--leaf-600)}.hn-callout[data-tone=warn]{color:var(--status-warn);background:var(--status-warn-tint);border-color:var(--amber-500);border-left-color:var(--status-warn)}.hn-callout[data-tone=err],.hn-callout[data-tone=danger]{color:var(--clay-600);background:var(--status-err-tint);border-color:var(--clay-500);border-left-color:var(--status-err)}.hn-callout[data-tone=brass]{color:var(--brass-700);background:var(--brass-050);border-color:var(--brass-400);border-left-color:var(--brass-700)}.hn-progress-fill[data-tone=brass]{background:var(--accent)}.hn-progress-fill[data-tone=ok]{background:var(--leaf-600)}.hn-progress-fill[data-tone=warn]{background:var(--amber-600)}.hn-progress-fill[data-tone=info]{background:var(--wind-600)}.hn-progress-fill[data-tone=err],.hn-progress-fill[data-tone=danger]{background:var(--status-err)}.hn-w-full{width:100%}.hn-grow-min{flex:1 1 0%;min-width:0}.hn-row-8{display:flex;gap:8px}.hn-mb-12{margin-bottom:12px}.hn-sheet-block{margin-bottom:16px}.hn-tabs.hn-sheet-kinds{flex-wrap:wrap;overflow:visible;max-width:100%}.hn-sheet-lead{font-size:12.5px;color:var(--text-muted);margin-bottom:12px;line-height:1.5}.hn-sheet-alert{font-size:12.5px;line-height:1.55;margin-bottom:12px;padding:9px 11px;border-radius:8px;background:var(--warn-bg, #fdf6e3);color:var(--text-strong)}.hn-sheet-notice{font-size:12.5px;margin-bottom:12px;padding:9px 11px;border-radius:8px;background:var(--warn-bg, #fdf6e3)}.hn-sheet-note{font-size:12px;line-height:1.5;margin-bottom:12px;padding:8px 10px;border-radius:8px;background:var(--warn-bg, #fdf6e3);color:var(--text-muted)}.hn-goal-row{display:flex;align-items:center;gap:10px}.hn-goal-row--on{margin-bottom:10px}.hn-sheet-meta{font-size:12.5px;color:var(--text-muted)}.hn-sheet-foot{font-size:12px;color:var(--text-muted);margin-top:6px}.hn-sheet-status{font-size:12px;line-height:1.5;margin-top:8px;padding:8px 10px;overflow-wrap:anywhere;border-radius:8px;background:var(--warn-bg, #fdf6e3);color:var(--text-muted)}.hn-sheet-hint{font-size:12px;color:var(--text-subtle);margin-top:8px;line-height:1.5}.hn-sheet-empty{font-size:12.5px;color:var(--text-subtle)}.hn-dep-list{max-height:132px;overflow-y:auto;display:flex;flex-direction:column;gap:6px;border:1px solid var(--border-hair);border-radius:var(--radius-sm);padding:8px}.hn-dep-list>*{flex-shrink:0}.hn-grid-split{display:grid;grid-template-columns:1.4fr 1fr;gap:12px}.hn-grid-even{display:grid;grid-template-columns:1fr 1fr;gap:12px}.hn-toast-host{position:fixed;left:50%;bottom:calc(28px + var(--safe-bottom));transform:translate(-50%);z-index:200;display:flex;flex-direction:column;align-items:center;gap:8px;width:max-content;max-width:min(460px,calc(100vw - var(--safe-left) - var(--safe-right) - 28px));pointer-events:none}.hn-toast{pointer-events:auto;box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:11px 16px;background:var(--surface-inverse);color:var(--term-fg);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);font-family:var(--font-sans);font-size:13.5px;max-width:100%;animation:hn-toast-in .18s var(--ease-out, ease-out)}@keyframes hn-toast-in{0%{transform:translateY(6px)}to{transform:none}}.hn-toast--action{padding:9px 10px 9px 16px}.hn-toast-msg{min-width:0;flex:1 1 auto}.hn-toast-action{border:none;background:transparent;cursor:pointer;color:var(--brass-300);font:var(--weight-medium) 13px/1 var(--font-ui);padding:6px 8px;border-radius:var(--radius-sm);flex:0 0 auto}.hn-modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:150;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--ink-900) 42%,transparent);animation:hn-fade-in .16s ease-out}.hn-modal-sheet{display:flex;flex-direction:column;max-width:100%;max-height:calc(100dvh - 48px - var(--safe-top) - var(--safe-bottom));background:var(--surface-card);border-radius:var(--radius-lg);border:1px solid var(--border-hair);box-shadow:var(--shadow-xl);overflow:hidden;animation:hn-modal-in .2s var(--ease-out, ease-out)}.hn-modal-panel--fill{height:min(88vh,calc(100dvh - 48px - var(--safe-top) - var(--safe-bottom)))}.hn-modal-header{display:flex;align-items:flex-start;gap:12px;padding:18px 20px 14px;border-bottom:1px solid var(--border-hair)}.hn-modal-icon{width:32px;height:32px;border-radius:var(--radius-sm);flex:0 0 auto;background:var(--brass-100);color:var(--brass-700);display:inline-flex;align-items:center;justify-content:center}.hn-modal-eyebrow{margin-bottom:3px}.hn-modal-title{margin:0;font-family:var(--font-display);font-size:19px;font-weight:600;letter-spacing:-.02em;color:var(--text-strong);line-height:1.15}.hn-modal-close{border:none;background:transparent;cursor:pointer;color:var(--text-muted);opacity:1;width:44px;height:44px;align-items:center;justify-content:center;padding:0;border-radius:var(--radius-sm);display:inline-flex;flex:0 0 auto}.hn-modal-close:disabled{cursor:not-allowed;opacity:.4}.hn-modal-body{padding:18px 20px;overflow:auto}.hn-modal-body--fill{flex:1 1 auto;min-height:0}.hn-modal-panel>.hn-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--border-hair);background:var(--bone-100)}.hn-field{display:block;margin-bottom:14px}.hn-field-label{display:block;font-family:var(--font-ui);font-size:12.5px;font-weight:600;color:var(--text-strong);margin-bottom:6px}.hn-field-hint{font-size:11.5px;color:var(--text-subtle);margin-top:5px}.hn-field-error{font-size:12px;color:var(--status-err);margin-top:5px;line-height:1.4}.hn-pager{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border-top:1px solid var(--border-hair);background:var(--bone-100);flex-wrap:wrap}.hn-pager-count{font-family:var(--font-mono);font-size:11.5px;color:var(--text-muted)}.hn-pager-btns{display:flex;align-items:center;gap:5px}.hn-pager-gap{font-family:var(--font-mono);font-size:12px;color:var(--text-subtle);padding:0 2px}.hn-wordmark-stack{display:flex;flex-direction:column;gap:10px}.hn-wordmark-row{display:flex;align-items:center;gap:8px}.hn-wordmark-mark{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:var(--radius-sm);background:var(--accent);color:var(--ink-900)}.hn-wordmark-text{font-family:var(--font-mono);font-size:16px;font-weight:500;letter-spacing:-.01em;color:var(--text-strong)}.hn-shell-crumb{font-family:var(--font-mono);font-size:11px;color:var(--text-subtle);margin-bottom:1px}.hn-shell-title{margin:0;font-family:var(--font-display);font-size:19px;font-weight:600;letter-spacing:-.02em;color:var(--text-strong);line-height:1.1}.hn-shell-content--capped{max-width:var(--content-max)}.hn-shell-content--wide{max-width:none}.hn-pet-box{margin-top:8px;padding:8px 10px;background:var(--bone-100);border:1px solid var(--border-hair);border-radius:var(--radius-sm)}.hn-pet-note{font-family:var(--font-ui);font-size:12px;color:var(--text-muted);line-height:1.45}.hn-pet-sent{font-family:var(--font-ui);font-size:12.5px;color:var(--text-strong)}.hn-pet-head{margin-bottom:6px}.hn-pet-eyebrow-top{margin-top:2px}.hn-pet-eyebrow-bottom{margin-bottom:4px}.hn-pet-question{font-family:var(--font-ui);font-size:12.5px;font-weight:600;color:var(--text-strong);line-height:1.4;margin-top:4px}.hn-pet-title{font-family:var(--font-ui);font-size:12.5px;font-weight:600;color:var(--text-strong);line-height:1.4;margin-bottom:6px}.hn-pet-mt-6{margin-top:6px}.hn-pet-mt-8{margin-top:8px}.hn-pet-stack{display:flex;flex-direction:column;gap:6px}.hn-pet-wrap{display:flex;flex-wrap:wrap;gap:6px}.hn-pet-free{display:flex;gap:6px;margin-top:8px}.hn-overflow-menu{display:flex;flex-direction:column;gap:2px}.hn-overflow-item{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:var(--touch-target);padding:8px 10px;text-align:left;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-body);font:var(--weight-medium) var(--text-md)/1.3 var(--font-ui);cursor:pointer}.hn-overflow-item:hover:not(:disabled),.hn-overflow-item:focus-visible{background:var(--surface-sunken);color:var(--text-strong)}.hn-overflow-item:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-overflow-item:disabled{color:var(--text-subtle);opacity:.5;cursor:not-allowed}.hn-shell .hn-shell-subrow .hn-overflow-item{min-height:var(--touch-target)}.hn-overflow-item-danger{color:var(--clay-600)}.hn-overflow-item-danger:hover:not(:disabled),.hn-overflow-item-danger:focus-visible{background:var(--status-err-tint);color:var(--clay-600)}.hn-notif-anchor{position:relative}.hn-notif-trigger{position:relative;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-muted)}.hn-notif-trigger.is-open{background:var(--bone-200)}.hn-notif-badge{position:absolute;top:4px;right:4px;min-width:16px;height:16px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;background:var(--clay-500);color:#fff;font-size:10px;font-weight:700;border-radius:var(--radius-pill);font-family:var(--font-mono);line-height:1}.hn-notif-popover{position:absolute;top:40px;right:0;width:320px;max-height:420px;overflow-y:auto;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);z-index:200;padding:6px}.hn-notif-head{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 6px}.hn-notif-title{font-family:var(--font-display);font-size:14px;font-weight:600;color:var(--text-strong)}.hn-notif-clear{border:none;background:transparent;cursor:pointer;color:var(--text-subtle);font-size:12px;font-family:var(--font-ui)}.hn-notif-empty{padding:18px 10px;text-align:center;color:var(--text-subtle);font-size:13px}.hn-notif-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:var(--radius-sm)}.hn-notif-text{flex:1 1 0%;min-width:0}.hn-notif-item-title{font-size:13px;color:var(--text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hn-notif-item-meta{font-size:11.5px;color:var(--text-subtle)}.hn-notif-open{flex:0 0 auto;border:none;background:transparent;cursor:pointer;font-size:12px;font-family:var(--font-ui);white-space:nowrap;color:var(--text-muted)}.hn-notif-open--primary{background:var(--action-bg);color:var(--action-on);border-radius:var(--radius-sm);padding:4px 10px;font-weight:600}.hn-notif-open--ticket{color:var(--brass-600)}.hn-notif-dot{flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:var(--accent)}.hn-notif-foot{display:flex;margin-top:4px;border-top:1px solid var(--border-hair)}.hn-notif-foot-btn{flex:1;padding:8px;border:none;background:transparent;cursor:pointer;color:var(--text-muted);font-size:12.5px;font-family:var(--font-ui)}.hn-notif-foot-btn--archive{border-left:1px solid var(--border-hair);color:var(--brass-600)}.hn-notif-archive-list{display:flex;flex-direction:column;max-height:60vh;overflow-y:auto}.hn-notif-archive-row{display:flex;align-items:center;gap:10px;padding:9px 8px;border-bottom:1px solid var(--border-hair)}.hn-notif-archive-title{flex:1 1 0%;min-width:0;font-size:13px;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-notif-archive-time{font-family:var(--font-mono);font-size:11px;color:var(--text-subtle)}.hn-lim-empty{font-size:var(--text-sm);color:var(--text-muted);padding:4px 0}.hn-lim-windows{display:flex;flex-direction:column;gap:10px}.hn-lim-window{display:flex;flex-direction:column;gap:3px}.hn-lim-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.hn-lim-label{font-size:var(--text-sm);color:var(--text-body)}.hn-lim-value{display:inline-flex;gap:6px;align-items:baseline}.hn-lim-pct{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--lim-fg)}.hn-lim-word{font-size:var(--text-xs);color:var(--lim-fg)}.hn-lim-meter{height:5px;background:var(--bone-300);border-radius:var(--radius-pill);overflow:hidden}.hn-lim-meter-fill{width:var(--lim-fill);height:100%;background:var(--lim-fg);border-radius:var(--radius-pill)}.hn-lim-reset{font-size:var(--text-xs);color:var(--text-subtle)}.hn-lim-foot{font-size:var(--text-xs);color:var(--text-subtle);margin-top:2px}.hn-lim-pill-wrap{position:relative}.hn-lim-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-pill, 999px);border:1px solid var(--border-hair);background:var(--lim-bg);color:var(--lim-fg);cursor:pointer;font-family:var(--font-mono);font-size:var(--text-xs)}.hn-lim-pill.hn-lim-pill-touch{min-height:44px}.hn-lim-dot{width:7px;height:7px;border-radius:999px;background:currentColor}.hn-lim-dot-square{border-radius:2px}.hn-lim-popover{position:absolute;top:calc(100% + 8px);right:0;z-index:40;width:280px;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:14px}.hn-lim-eyebrow{margin-bottom:8px}.hn-lim-footnote{font-size:var(--text-xs);color:var(--text-subtle);margin-top:6px;line-height:1.45}.hn-logs-panel{display:grid;gap:12px}.hn-logs-filter{display:flex;flex-wrap:wrap;gap:8px}.hn-logs-list{list-style:none;margin:0;padding:0}.hn-logs-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;min-width:0;padding:6px 8px;cursor:default}.hn-logs-row--open{cursor:pointer}.hn-logs-ts{font-family:var(--font-mono);font-size:11.5px;color:var(--text-subtle)}.hn-logs-meta{font-size:11.5px;color:var(--text-subtle)}.hn-logs-msg{flex:1 1 0%;min-width:0;font-size:13px;color:var(--text-strong)}.hn-logs-retention{border-top:1px solid var(--border-hair);padding-top:10px}.hn-logs-h3{font-size:13px;margin:0 0 6px}.hn-logs-transcript{max-height:320px;overflow:auto}.hn-mem-alert{margin-bottom:12px}.hn-mem-add{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--border-hair)}.hn-mem-in-name{flex:1 1 140px}.hn-mem-in-email{flex:1 1 180px}.hn-mem-in-role{flex:1 1 130px}.hn-mem-row{display:flex;align-items:center;gap:10px;padding:10px 14px;margin-bottom:8px;border:1px solid var(--border-hair);border-radius:var(--radius-md);background:var(--surface-card)}.hn-mem-row--off{opacity:.6}.hn-mem-main{flex:1 1 0%;min-width:0}.hn-mem-name-row{display:flex;align-items:center;gap:8px}.hn-mem-name{font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-mem-email{display:block;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-subtle);margin-top:2px}.hn-mem-edit{display:flex;flex-direction:column;gap:8px;padding:12px 14px;margin-bottom:8px;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-card)}.hn-mem-note{font-size:var(--text-xs);color:var(--text-subtle)}.hn-mem-actions{display:flex;gap:8px}.hn-upd-root{position:relative}.hn-upd-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-pill, 999px);cursor:pointer;font-family:var(--font-mono);font-size:12px}.hn-upd-pill--update{border:1px solid var(--brass-300, var(--border-hair));background:var(--brass-100);color:var(--brass-700)}.hn-upd-pill--version{border:1px solid var(--border-hair);background:var(--bone-100);color:var(--text-subtle)}.hn-upd-popover{position:absolute;top:calc(100% + 8px);right:0;z-index:40;width:320px;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:14px}.hn-upd-eyebrow{margin-bottom:8px}.hn-upd-headline{font-size:var(--text-sm);color:var(--text-body);margin-bottom:10px}.hn-upd-cmd{display:flex;align-items:center;gap:8px;margin-bottom:8px}.hn-upd-code{flex:1;font-family:var(--font-mono);font-size:11px;background:var(--bone-100);padding:6px 8px;border-radius:var(--radius-sm);overflow-x:auto;white-space:nowrap}.hn-upd-btn{padding:5px 10px;border-radius:var(--radius-sm);border:1px solid var(--border-hair);background:var(--bone-100);cursor:pointer;font-size:11px}.hn-upd-btn--primary{border:1px solid var(--brass-300, var(--border-hair));background:var(--brass-100);color:var(--brass-700)}.hn-upd-block{margin-bottom:8px}.hn-upd-row{display:flex;gap:8px}.hn-upd-note{font-size:11px;color:var(--text-subtle)}.hn-upd-note--gap{margin-top:4px}.hn-upd-text{font-size:11px;color:var(--text-body)}.hn-upd-text--gap{margin-bottom:8px}.hn-upd-err{font-size:11px;color:var(--status-err);margin-bottom:8px}.hn-upd-restart{margin-top:10px;padding-top:10px;border-top:1px solid var(--border-hair)}.hn-auth-wrap{width:100%;max-width:380px;margin:auto;box-sizing:border-box}.hn-setup-wrap{width:100%;max-width:460px;margin:auto;box-sizing:border-box}.hn-auth-mark{display:flex;justify-content:center;margin-bottom:20px}.hn-auth-illus{display:block;width:100%;max-height:120px;margin:0 0 14px;border-radius:var(--radius-md);object-fit:contain}.hn-auth-lead{margin:0 0 16px;font-size:var(--text-sm);color:var(--text-muted);line-height:1.5}.hn-auth-form{display:flex;flex-direction:column;gap:14px}.hn-auth-input{width:100%}.hn-auth-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;line-height:1.5}.hn-auth-reason{margin:0;font-size:var(--text-xs);color:var(--text-muted);line-height:1.5}.hn-auth-submit{width:100%;justify-content:center}.hn-setup-card{display:flex;flex-direction:column;gap:14px}.hn-setup-illus{width:100%;max-height:120px;object-fit:contain;border-radius:var(--radius-md)}.hn-setup-warn{display:flex;flex-direction:column;gap:10px;padding:12px 14px;background:var(--status-warn-tint);border:1px solid var(--border-hair);border-radius:var(--radius-md)}.hn-setup-warn p{margin:0;font-size:var(--text-sm);color:var(--text-strong);line-height:1.55}.hn-setup-check{display:flex;align-items:flex-start;gap:10px;font-size:var(--text-sm);color:var(--text-body);line-height:1.5;cursor:pointer}.hn-setup-check input{margin-top:2px;flex:0 0 auto}.hn-setup-advanced{border-top:1px solid var(--border-hair);padding-top:12px}.hn-setup-advanced>summary{cursor:pointer;font-size:var(--text-sm);font-weight:600;color:var(--text-strong);list-style-position:inside}.hn-setup-advanced>summary:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px;border-radius:var(--radius-xs)}.hn-setup-advanced-body{display:flex;flex-direction:column;gap:10px;padding-top:12px}.hn-setup-advanced-body p{margin:0;font-size:var(--text-sm);color:var(--text-muted);line-height:1.55}.hn-setup-hardening-note{font-size:var(--text-xs);color:var(--text-muted);line-height:1.5}.hn-setup-prereq{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px;font-size:var(--text-sm)}.hn-setup-prereq li{color:var(--text-muted)}.hn-setup-prereq li[data-ok=false]{color:var(--clay-600)}.hn-setup-prereq strong{font-weight:600}.hn-setup-foot{display:flex;align-items:center;gap:8px}.hn-setup-foot>:last-child{flex:1 1 auto;justify-content:center}.hn-unhardened{background:var(--status-warn-tint);color:var(--text-strong);font-size:var(--text-sm);padding:6px 14px;border-bottom:1px solid var(--border-hair);line-height:1.5}.hn-account{position:relative}.hn-account-trigger{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer}.hn-account-trigger[aria-expanded=true]{background:var(--bone-200)}.hn-account-avatar{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--brass-100);color:var(--brass-700);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;line-height:1}.hn-account-menu{position:absolute;top:40px;right:0;width:220px;box-sizing:border-box;padding:6px;z-index:200;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-md);box-shadow:var(--shadow-xl)}.hn-account-who{padding:8px 10px 6px}.hn-account-caption{font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.06em;color:var(--text-subtle);margin-bottom:3px}.hn-account-email{font-size:var(--text-sm);color:var(--text-strong);overflow-wrap:anywhere}.hn-account-item{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;margin-top:4px;padding:9px 10px;border:none;border-top:1px solid var(--border-hair);background:transparent;cursor:pointer;color:var(--text-body);font:inherit;font-size:var(--text-sm);text-align:left}.hn-account-item:hover{background:var(--bone-100)}@media (pointer: coarse),(max-width: 767px){.hn-account-item{min-height:var(--touch-target)}}@media (pointer: coarse),(max-width: 767px){.hn-setup-wrap button,.hn-setup-wrap .hn-setup-check input{min-height:var(--touch-target)}.hn-setup-wrap .hn-setup-check input{min-height:24px}}@media (max-width: 767px){.hn-setup-foot{flex-direction:column-reverse;align-items:stretch}.hn-setup-foot>:last-child{flex:none}}.hn-setup-lead{margin:0;font-size:var(--text-sm);color:var(--text-muted);line-height:1.5}.hn-setup-root{min-height:100dvh;display:flex;overflow-y:auto;background:var(--bone-100);box-sizing:border-box;padding:max(24px,var(--safe-top)) max(16px,var(--safe-right)) max(24px,var(--safe-bottom)) max(16px,var(--safe-left))}.hn-dia-lead{font-size:13.5px;color:var(--text-strong);line-height:1.55;margin-bottom:14px}.hn-dia-lead-sm{margin-bottom:12px}.hn-dia-note{font-size:13px;color:var(--text-muted);line-height:1.5;margin-bottom:12px}.hn-dia-hint{margin-top:6px;font-size:var(--text-xs);color:var(--text-subtle)}.hn-dia-full{width:100%}.hn-dia-box{font-size:12.5px;color:var(--text-strong);line-height:1.5;margin-bottom:12px;border:1px solid var(--border-hair);border-radius:var(--radius-sm);padding:10px}.hn-dia-box-muted{color:var(--text-muted)}.hn-dia-impact{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);margin-bottom:16px;padding-left:18px;line-height:1.6}.hn-dia-foot{display:flex;gap:8px;justify-content:flex-end}.hn-dia-foot-tight{margin-top:8px}.hn-dia-foot-split{display:flex;gap:8px;width:100%;align-items:center}.hn-workspace-panels.hn-sdm-panels{height:100%}.hn-sdm-files{overflow:auto;border-right:1px solid var(--border-hair);padding-right:8px}.hn-sdm-group{margin-bottom:10px}.hn-sdm-files .hn-sdm-kind{padding:4px 6px;color:var(--text-subtle)}.hn-sdm-doc{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border-radius:var(--radius-sm);border:none;cursor:pointer;text-align:left;background:transparent}.hn-sdm-doc[data-on=true]{background:var(--brass-100)}.hn-sdm-doc-name{font-family:var(--font-mono);font-size:11.5px;color:var(--text-body);font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-sdm-doc[data-on=true] .hn-sdm-doc-name{color:var(--brass-700);font-weight:600}.hn-sdm-preview{display:flex;flex-direction:column;min-height:0}.hn-sdm-bar{display:flex;justify-content:flex-end;padding-bottom:6px;border-bottom:1px solid var(--border-hair);margin-bottom:8px}.hn-sdm-scroll{flex:1 1 auto;min-height:0;overflow:auto;padding:0 8px 16px}.hn-att-panel{margin-bottom:14px}.hn-att-eyebrow{margin-bottom:4px}.hn-att-drop{border:1px dashed var(--border-hair);border-radius:var(--radius-sm);padding:12px;background:transparent;transition:background .12s}.hn-att-drop[data-over=true]{border-color:var(--accent);background:var(--accent-tint)}.hn-att-input{display:none}.hn-att-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.hn-att-hint{font-size:12.5px;color:var(--text-muted)}.hn-att-list{display:flex;flex-direction:column;gap:6px;margin-top:10px}.hn-att-card{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border-hair);border-radius:var(--radius-sm);background:var(--surface-card);font-size:13px}.hn-att-thumb{width:44px;height:44px;object-fit:cover;border-radius:var(--radius-xs);border:1px solid var(--border-hair);display:block;flex-shrink:0}.hn-att-name{flex:1;color:var(--text-strong);word-break:break-all}.hn-att-meta{color:var(--text-subtle);font-size:12px;white-space:nowrap}.hn-att-link{display:inline-flex;color:var(--text-muted)}.hn-portal-content{box-sizing:border-box;max-width:var(--content-max);margin:0 auto;padding:24px 28px 32px}.hn-portal-brand{font-family:var(--font-display);font-size:18px;font-weight:600;color:var(--text-strong)}.hn-portal-who{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-subtle);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-portal-mark{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;flex:0 0 auto;border-radius:var(--radius-sm);background:var(--accent)}.hn-portal-projects{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.hn-portal-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px 20px;flex-wrap:wrap;margin-bottom:14px}.hn-portal-title{margin:0;font-family:var(--font-display);font-size:var(--text-2xl);font-weight:600;color:var(--text-strong);line-height:1.2}.hn-portal-sub{margin:4px 0 0;font-size:var(--text-sm);color:var(--text-subtle);line-height:1.5}.hn-portal-tabs-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}.hn-portal-tabs-row>.hn-tabs{flex:1 1 auto;min-width:0}.hn-portal-note{margin:0 0 14px;padding:10px 14px;border-radius:var(--radius-lg);background:var(--bone-100);border:1px solid var(--border-hair);color:var(--text-subtle);font-size:var(--text-sm);line-height:1.6}.hn-portal-alert{margin:0 0 14px;color:var(--clay-600);font-size:var(--text-sm)}.hn-portal-cases{display:flex;flex-direction:column;gap:10px}.hn-portal-case{display:flex;flex-direction:column;gap:12px;width:100%;box-sizing:border-box;padding:14px 16px;min-height:var(--touch-target);text-align:left;cursor:pointer;font:inherit;color:inherit;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg)}.hn-portal-case:hover{border-color:var(--border-strong)}.hn-portal-case-head{display:flex;align-items:flex-start;gap:8px 12px;flex-wrap:wrap;min-width:0}.hn-portal-case-num{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-subtle);padding-top:3px}.hn-portal-case-title{flex:1 1 200px;min-width:0;font-size:var(--text-md);font-weight:600;color:var(--text-strong);overflow-wrap:anywhere;line-height:1.35}.hn-portal-case-note{margin:0;font-size:var(--text-sm);color:var(--text-body);line-height:1.55}.hn-portal-case-meta{font-size:var(--text-xs);color:var(--text-subtle)}.hn-portal-list{overflow:hidden}.hn-portal-row{display:flex;align-items:center;gap:12px;width:100%;box-sizing:border-box;padding:12px 16px;min-height:var(--touch-target);border:none;background:transparent;border-bottom:1px solid var(--border-hair);cursor:pointer;color:inherit;font:inherit;text-align:left}.hn-portal-row:last-child{border-bottom:none}.hn-portal-row:hover{background:var(--bone-100)}.hn-portal-row-title{flex:1 1 0;min-width:0;font-weight:500;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-portal-meta{font-size:var(--text-sm);color:var(--text-subtle);white-space:nowrap}.hn-timeline{display:flex;margin:0;padding:0;list-style:none;width:100%;box-sizing:border-box}.hn-timeline-step{position:relative;flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding-top:2px}.hn-timeline-step+.hn-timeline-step:before{content:"";position:absolute;top:7px;right:calc(50% + 8px);left:calc(-50% + 8px);height:2px;background:var(--border-hair)}.hn-timeline-step[data-state=done]:before,.hn-timeline-step[data-state=current]:before{background:var(--leaf-600)}.hn-timeline-step[data-state=closed]:before{background:var(--clay-600)}.hn-timeline-dot{position:relative;z-index:1;width:16px;height:16px;box-sizing:border-box;flex:0 0 auto;border-radius:50%;background:var(--surface-card);border:2px solid var(--border-strong)}.hn-timeline-step[data-state=done] .hn-timeline-dot{background:var(--leaf-600);border-color:var(--leaf-600)}.hn-timeline-step[data-state=current] .hn-timeline-dot{background:var(--brass-100);border-color:var(--brass-600);box-shadow:0 0 0 3px var(--brass-100)}.hn-timeline-step[data-state=closed] .hn-timeline-dot{background:var(--clay-600);border-color:var(--clay-600)}.hn-timeline-label{font-size:var(--text-xs);line-height:1.3;color:var(--text-subtle);overflow-wrap:anywhere}.hn-timeline-step[data-state=done] .hn-timeline-label{color:var(--text-body)}.hn-timeline-step[data-state=current] .hn-timeline-label{color:var(--text-strong);font-weight:600}.hn-timeline-step[data-state=closed] .hn-timeline-label{color:var(--clay-600);font-weight:600}.hn-timeline-compact .hn-timeline-label{font-size:var(--text-2xs)}.hn-timeline-compact .hn-timeline-dot{width:12px;height:12px;border-width:2px}.hn-timeline-compact .hn-timeline-step+.hn-timeline-step:before{top:5px}.hn-timeline-note{margin:12px 0 0;font-size:var(--text-sm);color:var(--text-body);line-height:1.55}.hn-portal-detail{display:flex;flex-direction:column;gap:14px}.hn-portal-dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 16px;margin:0}.hn-portal-dl dt{font-size:var(--text-sm);color:var(--text-subtle)}.hn-portal-dl dd{margin:0;font-size:var(--text-sm);color:var(--text-body)}.hn-portal-body{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6;color:var(--text-body)}.hn-portal-form{display:flex;flex-direction:column;gap:14px}.hn-portal-steps{font-size:var(--text-xs);color:var(--text-subtle);letter-spacing:.02em}.hn-portal-field-note{margin:0;font-size:var(--text-sm);color:var(--text-subtle);line-height:1.55}.hn-portal-textarea{display:block;width:100%;box-sizing:border-box;min-height:120px;padding:10px 12px;resize:vertical;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-strong);font-family:var(--font-ui);font-size:16px;line-height:1.5}.hn-portal-textarea:focus-visible{outline:2px solid var(--border-focus);outline-offset:1px}.hn-portal-file{display:block;width:100%;box-sizing:border-box;min-height:var(--touch-target);padding:0;font-size:var(--text-md);color:var(--text-body);cursor:pointer}.hn-portal-file::file-selector-button{min-height:36px;margin:0 12px 0 0;padding:0 14px;font:inherit;color:var(--text-strong);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-card);cursor:pointer}.hn-portal-file::file-selector-button:hover{background:var(--bone-100)}.hn-portal-file:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-public-file{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-width:0}.hn-public-file>input[type=file].hn-public-file-input{position:absolute;width:1px;height:1px;min-width:0;min-height:0;margin:0;padding:0;border:0;opacity:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.hn-public-file-btn{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;cursor:pointer;font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-strong);background:var(--surface-card);border:1px solid var(--border-strong);border-radius:var(--radius-sm);white-space:nowrap}.hn-public-file-btn:hover{background:var(--bone-100)}.hn-public-file-input:focus-visible+.hn-public-file-btn{outline:2px solid var(--border-focus);outline-offset:2px}.hn-portal-files{margin:0;padding:0;list-style:none;font-size:var(--text-sm);color:var(--text-subtle);overflow-wrap:anywhere}.hn-portal-summary{display:flex;flex-direction:column;gap:6px;padding:12px 14px;background:var(--bone-100);border:1px solid var(--border-hair);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-body)}.hn-portal-summary strong{color:var(--text-strong);font-weight:600;overflow-wrap:anywhere}.hn-portal-foot{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.hn-portal-error{margin:0;font-size:var(--text-sm);color:var(--clay-600)}.hn-chat{display:flex;flex-direction:column;gap:14px}.hn-chat-types{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.hn-chat-type{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.hn-chat-type p{margin:0;color:var(--text-subtle);font-size:var(--text-sm);line-height:1.6}.hn-chat-history{margin-top:22px}.hn-chat-history h3{margin:0 0 10px;font-size:var(--text-md);color:var(--text-strong)}.hn-chat-row{display:flex;gap:12px;width:100%;box-sizing:border-box;text-align:left;padding:12px 16px;min-height:var(--touch-target);background:none;border:none;border-bottom:1px solid var(--border-hair);cursor:pointer;font:inherit;color:inherit}.hn-chat-row-type{width:110px;flex:0 0 auto;font-size:var(--text-sm);color:var(--text-subtle)}.hn-chat-row-sum{flex:1 1 0;min-width:0;color:var(--text-strong);overflow-wrap:anywhere}.hn-chat-jatah{margin:0;color:var(--text-subtle);font-size:var(--text-sm);line-height:1.6}.hn-chat-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.hn-chat-bar>span{font-size:var(--text-sm);color:var(--text-subtle)}.hn-chat-thread{display:flex;flex-direction:column;gap:10px}.hn-chat-msg{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.hn-chat-msg[data-role=klien]{align-items:flex-end}.hn-chat-bubble{max-width:min(560px,88%);box-sizing:border-box;padding:10px 14px;border-radius:var(--radius-lg);border:1px solid var(--border-hair);background:var(--surface-card);white-space:pre-wrap;line-height:1.6;color:var(--text-body);overflow-wrap:anywhere}.hn-chat-msg[data-role=klien] .hn-chat-bubble{background:var(--bone-100)}.hn-chat-msg[data-gagal=true] .hn-chat-bubble{opacity:.85;border-color:var(--clay-500)}.hn-chat-failed{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:var(--text-xs);color:var(--clay-600)}.hn-chat-compose{display:flex;gap:10px;align-items:flex-end}.hn-chat-compose>div{flex:1 1 0;min-width:0}.hn-public-page{display:flex;flex-direction:column;gap:16px;max-width:640px;margin:0 auto}.hn-public-form{display:flex;flex-direction:column;gap:14px}.hn-public-field{display:flex;flex-direction:column;gap:6px;min-width:0}.hn-public-label{display:block;font-size:var(--text-sm);font-weight:600;line-height:1.3;color:var(--text-strong)}.hn-public-input{display:block;width:100%;box-sizing:border-box;min-height:var(--touch-target);padding:8px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-body);font-family:var(--font-ui);font-size:16px}textarea.hn-public-input{min-height:140px;resize:vertical;line-height:1.5}.hn-public-input:focus-visible{outline:2px solid var(--border-focus);outline-offset:1px}.hn-public-files{font-size:var(--text-xs);color:var(--text-subtle);overflow-wrap:anywhere}.hn-public-check{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.hn-public-check .hn-public-field{flex:1 1 200px}.hn-public-linkbox{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:var(--radius-sm);border:1px solid var(--brass-300);background:var(--brass-100)}.hn-public-code{display:block;font-family:var(--font-mono);font-size:var(--text-xs);overflow-wrap:anywhere;color:var(--text-strong)}.hn-public-status-dl{display:grid;gap:12px;margin:0}.hn-public-status-dl dt{font-size:var(--text-xs);color:var(--text-subtle)}.hn-public-status-dl dd{margin:2px 0 0;color:var(--text-body);overflow-wrap:anywhere}@media (pointer: coarse),(max-width: 767px){.hn-portal button,.hn-portal select,.hn-portal .hn-input-core,.hn-public button,.hn-public .hn-input-core,.hn-public select{min-height:var(--touch-target)}.hn-portal-file::file-selector-button{min-height:var(--touch-target)}.hn-public-file-btn{min-height:var(--touch-target)}.hn-portal select,.hn-portal .hn-input-core,.hn-public select,.hn-public .hn-input-core{font-size:16px}}@media (max-width: 767px){.hn-portal-content{padding:16px 16px 24px}.hn-portal-head{align-items:stretch;flex-direction:column}.hn-portal-head>button{width:100%;justify-content:center}.hn-portal-row{align-items:flex-start;flex-wrap:wrap}.hn-portal-row-title{flex-basis:100%;white-space:normal}.hn-timeline-label{font-size:var(--text-2xs)}.hn-chat-row{flex-wrap:wrap}.hn-chat-row-type{width:100%}.hn-chat-compose{flex-direction:column;align-items:stretch}.hn-portal-foot>*{flex:1 1 auto}.hn-portal-dl{grid-template-columns:minmax(0,1fr)}.hn-portal-dl dt{margin-top:4px}}@media (prefers-reduced-motion: reduce){.hn-portal-case,.hn-portal-row{transition:none}}.hn-portal-header{box-sizing:border-box;display:flex;align-items:center;gap:14px;padding:0 22px;height:var(--topbar-h);border-bottom:1px solid var(--border-hair);background:var(--bone-100)}.hn-portal-spacer{flex:1 1 auto}.hn-portal-titlebox{min-width:0}.hn-portal-tabs{flex:1 1 auto;min-width:0}.hn-portal-pillrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.hn-portal-pager{margin-top:14px;border:1px solid var(--border-hair);border-radius:var(--radius-lg);overflow:hidden}.hn-portal-cases{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.hn-portal-case-title{flex:1 1 200px;min-width:0;min-height:24px;padding:3px 0;margin:0;border:none;background:none;cursor:pointer;font:inherit;font-size:var(--text-md);font-weight:600;color:var(--text-strong);text-align:left;overflow-wrap:anywhere;line-height:1.35;text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px}.hn-portal-case-title:hover{text-decoration-color:var(--text-strong)}.hn-portal-case-title:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px;border-radius:var(--radius-xs)}.hn-chat .hn-portal-textarea{min-height:84px}.hn-public-lead{margin:0;color:var(--text-body);line-height:1.6}.hn-public-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-start}.hn-portal-wide{width:100%}.hn-prj-mono{font-family:var(--font-mono)}.hn-prj-wrap{overflow-wrap:anywhere;word-break:break-all}.hn-prj-grow{flex:1 1 0%;min-width:0}.hn-prj-full{width:100%;min-width:0}.hn-prj-required{color:var(--clay-600);margin-left:3px}.hn-prj-note{margin:0 0 var(--space-3);font-size:var(--text-sm);color:var(--text-muted);line-height:1.5}.hn-prj-hint{margin:0;font-size:var(--text-xs);color:var(--text-subtle);line-height:1.5}.hn-prj-inline{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0}.hn-prj-code{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-body);overflow-wrap:anywhere;word-break:break-all}.hn-prj-field{margin-bottom:var(--space-3)}.hn-prj-field-label{display:block;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong);margin-bottom:6px}.hn-prj-list-plain{margin:0 0 var(--space-3);padding-left:18px;font-size:var(--text-sm);color:var(--text-body);line-height:1.6}.hn-prj-stderr{margin:var(--space-2) 0 0;white-space:pre-wrap;word-break:break-all;font-family:var(--font-mono);font-size:var(--text-xs);max-height:160px;overflow:auto}.hn-prj-stale{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-hair);background:var(--status-err-tint);font-size:var(--text-sm);color:var(--text-body)}.hn-prj-stale-text{flex:1 1 auto;min-width:0}.hn-prj-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.hn-prj-chip{display:inline-flex;align-items:center;gap:var(--space-2);min-height:30px;padding:0 var(--space-3);border-radius:var(--radius-pill);border:1px solid var(--border-hair);background:var(--surface-card);color:var(--text-body);font:inherit;font-size:var(--text-sm);cursor:pointer}.hn-prj-chip[aria-pressed=true]{background:var(--brass-100);border-color:var(--brass-500);color:var(--brass-700);font-weight:var(--weight-semibold)}.hn-prj-chip:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-prj-chip-count{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted)}.hn-prj-chip[aria-pressed=true] .hn-prj-chip-count{color:var(--brass-700)}.hn-prj-sheet-options{display:flex;flex-direction:column;gap:var(--space-4)}.hn-prj-sheet-option{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);padding-bottom:var(--space-4);border-bottom:1px solid var(--border-hair)}.hn-prj-sheet-option:last-child{border-bottom:0;padding-bottom:0}.hn-prj-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);width:100%}.hn-prj-sheet-title{font-size:var(--text-sm);font-weight:var(--weight-bold);color:var(--brass-700)}.hn-prj-checklist{list-style:none;margin:0;padding:0;width:100%;max-height:280px;overflow:auto}.hn-prj-checklist li+li{border-top:1px solid var(--border-hair)}.hn-prj-check{display:flex;align-items:flex-start;gap:var(--space-2);padding:6px 0;cursor:pointer;min-height:32px}.hn-prj-check-input{margin-top:3px;width:18px;height:18px;flex:0 0 auto;accent-color:var(--brass-500)}.hn-prj-check-text{display:flex;flex-direction:column;min-width:0;gap:2px}.hn-prj-check-title{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-prj-picker-path{margin-bottom:var(--space-2)}.hn-prj-picker-list{border:1px solid var(--border-hair);border-radius:var(--radius-sm);max-height:320px;overflow:auto}.hn-prj-folder-row{display:flex;align-items:center;gap:var(--space-2);width:100%;box-sizing:border-box;padding:8px 12px;min-height:44px;border:0;border-bottom:1px solid var(--border-hair);background:transparent;color:var(--text-strong);font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer}.hn-prj-folder-row:hover{background:var(--bone-100)}.hn-prj-folder-row:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-prj-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding-bottom:var(--space-3)}.hn-prj-device{min-width:180px}.hn-prj-list{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);overflow:hidden}.hn-prj-list .hn-row-main{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1.1fr) auto;align-items:center;column-gap:var(--space-4);padding-left:var(--space-3);padding-right:var(--space-2)}.hn-prj-main{display:flex;flex-direction:column;min-width:0;gap:2px}.hn-prj-name{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-prj-desc{font-size:var(--text-xs);color:var(--text-subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-prj-status{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);min-width:0}.hn-prj-docs{min-width:0}.hn-prj-backlog{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap}.hn-prj-num{color:var(--text-strong);font-weight:var(--weight-semibold)}@media (max-width: 767px){.hn-prj-list .hn-row-main{grid-template-columns:minmax(0,1fr) auto;row-gap:var(--space-2)}.hn-prj-docs,.hn-prj-backlog{grid-column:1 / -1}}.hn-prj-detail{display:flex;flex-direction:column;gap:var(--space-5);min-width:0}.hn-prj-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.hn-prj-head-text{min-width:0;flex:1 1 280px}.hn-prj-head-title{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0}.hn-prj-title{margin:0;font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--weight-semibold);line-height:1.25;color:var(--text-strong);overflow-wrap:anywhere}.hn-prj-subtitle{margin:var(--space-1) 0 0;font-size:var(--text-sm);color:var(--text-subtle)}.hn-prj-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-4);margin:var(--space-5) 0 0;min-width:0}.hn-prj-meta-item{min-width:0}.hn-prj-meta-item dt,.hn-prj-meta-item dd{margin:0}.hn-prj-meta-value{margin-top:var(--space-1);display:flex;align-items:flex-start;gap:6px;min-width:0;font-size:var(--text-sm);color:var(--text-body)}.hn-prj-meta-wrap{flex:1 1 auto;min-width:0;font-family:var(--font-mono);font-size:var(--text-sm);overflow-wrap:anywhere;word-break:break-all}.hn-prj-meta-clip{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-prj-copy{flex:0 0 auto;border:0;background:transparent;cursor:pointer;padding:2px;min-width:24px;min-height:24px;color:var(--text-muted);line-height:0;border-radius:var(--radius-sm)}.hn-prj-copy:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-prj-coverage{margin-top:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1);max-width:420px}.hn-prj-doors{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-3);min-width:0}.hn-prj-door{display:flex;align-items:center;gap:var(--space-3);min-height:64px;padding:var(--space-4);background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);color:inherit;font:inherit;text-align:left;cursor:pointer;min-width:0}.hn-prj-door:hover{background:var(--surface-sunken)}.hn-prj-door:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-prj-door-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:36px;height:36px;border-radius:var(--radius-md);background:var(--brass-050);color:var(--brass-700)}.hn-prj-door-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.hn-prj-door-title{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-prj-door-count{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--brass-700);background:var(--brass-100);border-radius:var(--radius-pill);padding:1px 8px}.hn-prj-door-hint{font-size:var(--text-xs);color:var(--text-subtle)}.hn-prj-doc-actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.hn-prj-disclosure{background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-lg);min-width:0}.hn-prj-disclosure-summary{display:flex;align-items:center;min-height:44px;padding:var(--space-3) var(--space-4);cursor:pointer;font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-prj-disclosure-summary:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-prj-disclosure-body{display:flex;flex-direction:column;gap:var(--space-5);padding:0 var(--space-4) var(--space-4);min-width:0}.hn-prj-danger{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;padding:var(--space-4);border:1px solid var(--status-err);border-radius:var(--radius-lg);background:var(--status-err-tint)}.hn-prj-danger-text{min-width:0;flex:1 1 280px}.hn-prj-danger-title{margin:0;color:var(--clay-600)}.hn-prd-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);padding-bottom:var(--space-3)}.hn-prd-toolbar-spacer{flex:1 1 auto}.hn-prd-portal{padding-bottom:var(--space-3)}.hn-prd-index{width:100%;min-height:0;overflow-y:auto;border-right:1px solid var(--border-hair);padding-right:var(--space-3)}.hn-prd-group{margin-bottom:var(--space-3)}.hn-prd-group-summary{display:flex;align-items:center;gap:var(--space-2);min-height:32px;padding:var(--space-1) var(--space-2);cursor:pointer;font-size:var(--text-2xs);font-weight:var(--weight-semibold);letter-spacing:.3px;text-transform:uppercase;color:var(--text-subtle)}.hn-prd-group-summary:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-prd-group-body{display:flex;flex-direction:column;gap:2px}.hn-prd-project-label{padding:6px 8px 2px}.hn-prd-item{display:block;width:100%;min-height:44px;box-sizing:border-box;text-align:left;cursor:pointer;border:0;border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);background:transparent;color:inherit;font:inherit}.hn-prd-item:hover{background:var(--bone-200)}.hn-prd-item.is-active{background:var(--brass-100)}.hn-prd-item:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-prd-item-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}.hn-prd-item-title{min-width:0;font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-prd-item.is-active .hn-prd-item-title{color:var(--brass-700)}.hn-prd-item-meta{display:block;margin-top:3px;font-size:var(--text-2xs);color:var(--text-subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hn-prd-stale{margin-bottom:var(--space-2)}.hn-prd-detail{flex:1 1 auto;min-height:0;min-width:0;display:flex;flex-direction:column}.hn-prd-pane{height:100%;min-height:0;overflow-y:auto}.hn-prd-actionbar{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)}.hn-prd-actionbar-title{flex:1 1 200px;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-prd-read{padding:var(--space-4) 0 var(--space-6);min-width:0}.hn-prd-head{margin-bottom:var(--space-4);min-width:0}.hn-prd-path{font-size:var(--text-2xs);color:var(--text-subtle);overflow-wrap:anywhere;margin-bottom:4px}.hn-prd-head-row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.hn-prd-title{margin:0;font-family:var(--font-sans);font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--text-strong);overflow-wrap:anywhere}.hn-prd-breakdown{border:1px solid var(--brass-300);border-radius:var(--radius-sm);background:var(--brass-050);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-4)}.hn-prd-breakdown-summary{display:flex;align-items:center;min-height:32px;cursor:pointer;font-size:var(--text-sm);font-weight:var(--weight-bold);color:var(--brass-700)}.hn-prd-breakdown-list{list-style:none;margin:var(--space-2) 0;padding:0}.hn-prd-breakdown-list li{display:flex;align-items:center;gap:var(--space-2);padding:6px 0;border-top:1px solid var(--border-hair);font-size:var(--text-sm)}.hn-prd-breakdown-list li:first-child{border-top:0}.hn-prd-breakdown-item{font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-prd-doc{max-width:68ch}@media (max-width: 767px){.hn-prd-actionbar-title{flex-basis:100%}}.hn-prj-seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden}.hn-prj-seg button{min-height:30px;padding:0 var(--space-3);border:0;background:var(--surface-card);color:var(--text-body);font:inherit;font-size:var(--text-sm);cursor:pointer}.hn-prj-seg button+button{border-left:1px solid var(--border-strong)}.hn-prj-seg button[aria-pressed=true]{background:var(--brass-100);color:var(--brass-700);font-weight:var(--weight-semibold)}.hn-prj-seg button:disabled{opacity:.5;cursor:not-allowed}.hn-prj-seg button:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}/**
|
|
2
|
+
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
|
|
3
|
+
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
|
|
4
|
+
* https://github.com/chjj/term.js
|
|
5
|
+
* @license MIT
|
|
6
|
+
*
|
|
7
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
* in the Software without restriction, including without limitation the rights
|
|
10
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
* furnished to do so, subject to the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be included in
|
|
15
|
+
* all copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
23
|
+
* THE SOFTWARE.
|
|
24
|
+
*
|
|
25
|
+
* Originally forked from (with the author's permission):
|
|
26
|
+
* Fabrice Bellard's javascript vt100 for jslinux:
|
|
27
|
+
* http://bellard.org/jslinux/
|
|
28
|
+
* Copyright (c) 2011 Fabrice Bellard
|
|
29
|
+
* The original design remains. The terminal itself
|
|
30
|
+
* has been extended to include xterm CSI codes, among
|
|
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{display:inline-flex;flex:0 0 auto;width:10px;height:10px}.hn-bl-prio:before{content:"";display:block;width:100%;height:100%;border-radius:50%;box-sizing:border-box;border:1.5px solid var(--ink-400);background:transparent}.hn-bl-prio-high:before{background:var(--brass-600);border-color:var(--brass-600)}.hn-bl-prio-mid:before{background:var(--ink-400);border-color:var(--ink-400)}.hn-bl-prio-low:before{background:transparent;border-color:var(--ink-400)}.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-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)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as l,j as s,n as f}from"./index-DYWU10xI.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as s,B as m,a1 as f}from"./index-DYWU10xI.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.hn-sched{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.hn-sched-strip{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3) var(--space-4);padding:var(--space-3) var(--space-4);background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-md)}.hn-sched-capacity{display:flex;flex-direction:column;flex:0 1 200px;min-width:150px}.hn-sched-limits{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.hn-sched-strip-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-left:auto}.hn-sched-strip-divider{align-self:stretch;width:1px;background:var(--border-hair)}.hn-sched-panel{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.hn-sched-empty{margin:0;padding:var(--space-2) 0;font-size:var(--text-sm);color:var(--text-subtle)}.hn-sched-preview-warn{color:var(--clay-600)}.hn-sched-caption,.hn-sched-note{margin:0;font-size:var(--text-xs);color:var(--text-subtle);line-height:1.5}.hn-sched-row-text{display:flex;flex-direction:column;gap:var(--space-1);flex:1 1 auto;min-width:0}.hn-sched-row-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);min-width:0}.hn-sched-row-title{color:var(--text-strong);font-weight:var(--weight-medium);overflow-wrap:anywhere}.hn-sched-row-meta{font-size:var(--text-xs);color:var(--text-subtle);overflow-wrap:anywhere}.hn-sched-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.hn-sched-chip{display:inline-flex;align-items:center;gap:var(--space-2);height:30px;padding:0 var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-body);font-family:var(--font-ui);font-size:var(--text-xs);font-weight:var(--weight-medium);cursor:pointer}.hn-sched-chip[aria-pressed=true]{background:var(--brass-100);border-color:var(--brass-600);color:var(--brass-700)}.hn-sched-chip:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.hn-sched-chip-count{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--text-subtle)}.hn-sched-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2)}.hn-sched-notice{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--surface-sunken);border:1px solid var(--border-hair);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--text-muted)}.hn-sched-notice-text{flex:1 1 240px;min-width:0}.hn-sched-error{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;font-size:var(--text-sm);color:var(--clay-600)}.hn-sched-error-text{flex:1 1 auto;min-width:0}.hn-sched-table{width:100%;min-width:620px;border-collapse:collapse;font-size:var(--text-sm)}.hn-sched-table th{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border-hair);text-align:left;font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-subtle)}.hn-sched-table td{padding:var(--space-3);border-bottom:1px solid var(--border-hair);vertical-align:middle;color:var(--text-body)}.hn-sched-cell-actions{width:1%;text-align:right}.hn-sched-runs>td{padding:var(--space-3);background:var(--surface-sunken)}.hn-sched-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3)}.hn-sched-group{display:flex;flex-direction:column;gap:var(--space-3);min-width:0;padding:var(--space-4);background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-md)}.hn-sched-group-title{margin:0;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-sched-group-hint{margin:0;font-size:var(--text-xs);color:var(--text-muted);line-height:1.5}.hn-sched-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.hn-sched-source{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-3);border:1px solid var(--border-hair);border-radius:var(--radius-sm)}.hn-sched-spacer{flex:1 1 0}.hn-sched-inline-field{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-body)}.hn-sched-inline-field input{width:84px}.hn-sched-source-facts{flex-basis:100%;font-size:var(--text-xs);color:var(--text-muted)}.hn-sched-guard-status{font-size:var(--text-sm);color:var(--text-muted);line-height:1.6}.hn-sched-savebar{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--space-3)}.hn-sched-flow{border:1px solid var(--border-hair);border-radius:var(--radius-sm);background:var(--surface-card)}.hn-sched-flow+.hn-sched-flow{margin-top:var(--space-2)}.hn-sched-flow-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;min-height:44px;padding:var(--space-3);background:transparent;border:none;color:var(--text-strong);font-family:var(--font-ui);font-size:var(--text-sm);font-weight:var(--weight-medium);text-align:left;cursor:pointer}.hn-sched-flow-head:focus-visible{outline:2px solid var(--border-focus);outline-offset:-2px}.hn-sched-flow-state{font-size:var(--text-xs);font-weight:var(--weight-regular);color:var(--text-muted)}.hn-sched-flow-body{padding:0 var(--space-3) var(--space-3)}.hn-sched-flow-body[hidden]{display:none}.hn-sched-matrix{width:100%;min-width:560px;border-collapse:collapse;font-size:var(--text-sm)}.hn-sched-matrix th,.hn-sched-matrix td{padding:6px 8px;border-top:1px solid var(--border-hair);vertical-align:top;text-align:left}.hn-sched-matrix thead th{border-top:none}.hn-sched-matrix th{text-align:left}.hn-sched-picks{display:flex;flex-wrap:wrap;gap:6px}.hn-sched-pick-model{min-width:150px}.hn-sched-pick-effort{min-width:96px}.hn-sched-flow-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-2)}.hn-sched-flow-status{font-size:var(--text-sm);color:var(--text-muted)}.hn-sched-flow-mode{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);margin-bottom:var(--space-2)}.hn-sched-flow-mode-label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-strong)}.hn-sched-flow-mode-select{min-width:260px;max-width:100%}.hn-sched-flow-mode-note{font-size:var(--text-xs);color:var(--text-muted)}@media (max-width: 767px){.hn-sched-strip-actions{width:100%;margin-left:0}.hn-sched-strip-actions>*{flex:1 1 auto}.hn-sched-strip-divider{display:none}.hn-sched-capacity{flex:1 1 100%}.hn-sched-table{min-width:0}.hn-sched-table thead{display:none}.hn-sched-table tbody tr:not(.hn-sched-runs){display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2);margin-bottom:var(--space-2);padding:var(--space-3);background:var(--surface-card);border:1px solid var(--border-hair);border-radius:var(--radius-sm)}.hn-sched-table td{display:block;padding:0;border:none}.hn-sched-table td:not(.hn-sched-cell-actions){grid-column:1 / -1}.hn-sched-table td:first-child:not(.hn-sched-cell-actions){grid-column:1}.hn-sched-table td[data-label]:not(:first-child):before{content:attr(data-label);display:block;font-size:var(--text-2xs);color:var(--text-subtle)}.hn-sched-cell-actions{grid-column:2;grid-row:1;width:auto}.hn-sched-runs{display:block;margin-bottom:var(--space-2)}.hn-sched-runs>td{display:block;padding:var(--space-3)}.hn-sched-grid,.hn-sched-form-grid{grid-template-columns:minmax(0,1fr)}}
|
|
@@ -0,0 +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-DYWU10xI.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
|
@@ -2,14 +2,21 @@
|
|
|
2
2
|
<html lang="id">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
|
|
5
|
+
<!-- viewport-fit=cover: tanpa ini env(safe-area-inset-*) bernilai 0 dan token --safe-* tak aktif. -->
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
|
7
|
+
<!-- IBM Plex dari Google Fonts. Bukan @import di CSS (itu memblokir render). Preload lalu pindah ke
|
|
8
|
+
stylesheet begitu tiba; tanpa JS atau offline, fallback generik di ds/tokens/typography.css yang berlaku. -->
|
|
9
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
10
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
11
|
+
<link rel="preload" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=IBM+Plex+Serif:ital,wght@0,400;0,500;0,600;0,700;1,400&family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&display=swap" as="style" onload="this.rel='stylesheet'" />
|
|
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&family=IBM+Plex+Serif:ital,wght@0,400;0,500;0,600;0,700;1,400&family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&display=swap" /></noscript>
|
|
6
13
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
7
14
|
<title>hanoman</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
15
|
+
<script type="module" crossorigin src="/assets/index-DYWU10xI.js"></script>
|
|
9
16
|
<link rel="modulepreload" crossorigin href="/assets/react-DfGhg7ZW.js">
|
|
10
17
|
<link rel="modulepreload" crossorigin href="/assets/markdown-CWEY34jk.js">
|
|
11
18
|
<link rel="modulepreload" crossorigin href="/assets/xterm-3VOAfa_q.js">
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
19
|
+
<link rel="stylesheet" crossorigin href="/assets/index-T4aiSGoI.css">
|
|
13
20
|
</head>
|
|
14
21
|
<body>
|
|
15
22
|
<div id="root"></div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as ie,j as e,b as re,I as E}from"./index-D5w059cP.js";import{R as g}from"./react-DfGhg7ZW.js";import"./markdown-CWEY34jk.js";import"./xterm-3VOAfa_q.js";const de="/assets/hnm-hero-rig-body-v01-DmbKJJHB.webp",ce="/assets/hnm-hero-rig-arm-ul-v01-CIAWAxFe.webp",he="/assets/hnm-hero-rig-arm-ur-v01-C0R0CZnp.webp",oe="/assets/hnm-hero-rig-arm-ml-v01-Kts3pjTf.webp",ge="/assets/hnm-hero-rig-arm-mr-v01-DQgnE6bD.webp",me="/assets/hnm-wayang-satria-alus-v01-CpfoXKTy.webp",ue="/assets/hnm-wayang-satria-gagah-v01-bLfIYAsv.webp",pe="/assets/hnm-wayang-putri-v01-F6p69kHq.webp",xe="/assets/hnm-wayang-panakawan-v01-1LGv-V8N.webp",q=[me,ue,pe,xe],z=a=>q[[...a].reduce((t,o)=>t+o.charCodeAt(0),0)%q.length],V=["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],C=a=>String(a).padStart(2,"0");function je(){return g.useMemo(()=>typeof window<"u"&&!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,[])}function Ne(){const[a,t]=g.useState(()=>new Date);return g.useEffect(()=>{const o=setInterval(()=>t(new Date),1e3);return()=>clearInterval(o)},[]),a}function ye(a,t){const[o,m]=g.useState(""),p=a.join("|");return g.useEffect(()=>{if(t||a.length===0){m(a[0]??"");return}let x=0,h=0,r=null,d=null;const l=()=>{const y=a[x%a.length]??"";h=0,r=setInterval(()=>{h++,m(y.slice(0,h)),h>=y.length&&r&&(clearInterval(r),r=null,d=setTimeout(()=>{x++,l()},3200))},26)};return l(),()=>{r&&clearInterval(r),d&&clearTimeout(d)}},[p,t]),o}function S(a,t){const[o,m]=g.useState(t?a:0);return g.useEffect(()=>{if(t){m(a);return}const p=performance.now(),x=900;let h=0;const r=d=>{const l=Math.min(1,(d-p)/x);m(Math.round(a*(1-Math.pow(1-l,3)))),l<1&&(h=requestAnimationFrame(r))};return h=requestAnimationFrame(r),()=>cancelAnimationFrame(h)},[a,t]),o}function M({icon:a,tone:t,label:o,value:m,sub:p}){return e.jsxs("div",{className:"hn-dlg-kpi",children:[e.jsx("span",{className:`hn-dlg-kpi-ic hn-dlg-tone-${t}`,children:e.jsx(E,{name:a,size:17})}),e.jsxs("span",{style:{minWidth:0},children:[e.jsx("span",{className:"hn-dlg-kpi-l",children:o}),e.jsx("span",{className:"hn-dlg-kpi-v",children:m}),e.jsx("span",{className:"hn-dlg-kpi-s",children:p})]})]})}function ke({projects:a,backlog:t,sessions:o,onOpenSession:m,onOpenProject:p,onGoto:x,onExit:h}){const r=je(),d=Ne();g.useEffect(()=>{const n=s=>{s.key==="Escape"&&h()};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[h]);const l=o.filter(n=>!n.exited).sort((n,s)=>n.id.localeCompare(s.id)),y=new Set(l.map(n=>n.projectId)),f=a.filter(n=>!y.has(n.id)),R=l.filter(n=>!!n.decision&&!n.deciding).length,F=t.filter(n=>ie(n.startedAt)).length,Q=S(a.length,r),X=S(F,r),Z=S(l.length,r),_=S(R,r),ee=ye([l.length>0?`HANOMAN ONLINE · ${l.length} SESI HIDUP`:"HANOMAN ONLINE · KELIR SUNYI",`${F} TASK DIKERJAKAN HARI INI`,R>0?`${R} SESI MENUNGGU JAWABANMU`:"SEMUA SISTEM NORMAL",`${a.length} PROYEK DALAM PANTAUAN`],r),j={done:0,executing:0,planned:0,spec:0};for(const n of t)n.stage==="done"?j.done++:n.stage==="executing"?j.executing++:n.stage==="planned"?j.planned++:j.spec++;const D=t.length,ne=[{key:"executing",cls:"wind",label:"Execute"},{key:"done",cls:"leaf",label:"Done"},{key:"planned",cls:"amber",label:"Plan"},{key:"spec",cls:"brass",label:"Spec"}];let L=0;const O=ne.map(n=>{const s=D?j[n.key]/D*100:0,u={...n,n:j[n.key],frac:s,offset:25-L};return L+=s,u}),v=[];for(let n=6;n>=0;n--){const s=new Date(d.getFullYear(),d.getMonth(),d.getDate()-n),u=t.filter(i=>{if(!i.startedAt)return!1;const c=new Date(i.startedAt);return c.getFullYear()===s.getFullYear()&&c.getMonth()===s.getMonth()&&c.getDate()===s.getDate()}).length;v.push({label:`${s.getDate()} ${V[s.getMonth()]}`,n:u})}const $=Math.max(1,...v.map(n=>n.n)),se=v.map((n,s)=>`${32+s*35},${78-n.n/$*60}`).join(" "),ae=`${l.map(n=>n.id).join("|")}#${f.map(n=>n.id).join("|")}`,H=g.useRef(null),[P,W]=g.useState([]);g.useLayoutEffect(()=>{const n=H.current;if(!n||l.length===0&&f.length===0){W([]);return}const s=()=>{var J;const i=n.getBoundingClientRect();if(i.width<60)return;const c=(J=n.querySelector(".hn-dlg-hero-art"))==null?void 0:J.getBoundingClientRect(),b=c?c.left+c.width/2-i.left:i.width/2,w={};n.querySelectorAll("[data-hand]").forEach(N=>{const A=N.getBoundingClientRect();w[N.dataset.hand??""]={x:A.left+A.width/2-i.left,y:A.top+A.height/2-i.top}});const k={x:b,y:c?c.top-i.top+c.height*.36:i.height*.35},G=[];n.querySelectorAll(".hn-dlg-prj").forEach(N=>{const U=(N.querySelector(".hn-dlg-puppet img")??N).getBoundingClientRect(),T=U.left+U.width/2-i.left,K=U.top-i.top+1,B=!N.hasAttribute("data-puppet"),te=T<b?"l":"r",I=w[(B?"m":"u")+te]??k,le=B?Math.max(I.y,K)+26:Math.min(I.y,K)-16;G.push({d:`M ${I.x.toFixed(1)} ${I.y.toFixed(1)} Q ${((I.x+T)/2).toFixed(1)} ${le.toFixed(1)}, ${T.toFixed(1)} ${K.toFixed(1)}`,slack:B})}),W(G)};if(s(),typeof ResizeObserver>"u")return;const u=new ResizeObserver(s);return u.observe(n),()=>u.disconnect()},[ae,l.length,f.length]);const Y=a.slice(0,6).map(n=>({id:n.id,name:n.name,text:n.activity,commit:n.commit,live:y.has(n.id)}));return e.jsxs("div",{className:"hn-dlg",children:[e.jsxs("div",{className:"hn-dlg-top hn-wrap-mobile",children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12,minWidth:0},children:[e.jsx("img",{className:"hn-dlg-blencong",src:re,alt:"","aria-hidden":"true","data-lit":l.length>0||void 0}),e.jsxs("div",{style:{minWidth:0},children:[e.jsx("h2",{className:"hn-dlg-title",children:"Dalang Hanoman"}),e.jsx("p",{className:"hn-dlg-boot","aria-live":"off",children:ee})]})]}),e.jsxs("div",{className:"hn-dlg-chips",children:[e.jsxs("span",{className:"hn-dlg-chip",children:[e.jsx(E,{name:"calendar",size:13}),d.getDate()," ",V[d.getMonth()]," ",d.getFullYear()]}),e.jsxs("span",{className:"hn-dlg-chip",children:[e.jsx(E,{name:"clock",size:13}),C(d.getHours()),":",C(d.getMinutes()),":",C(d.getSeconds())]}),e.jsx("button",{type:"button",className:"hn-dlg-exit",onClick:h,"aria-label":"Keluar dari panggung (Esc)",children:e.jsx(E,{name:"x",size:14})})]})]}),e.jsxs("div",{className:"hn-dlg-kpis",children:[e.jsx(M,{icon:"layout-grid",tone:"wind",label:"TOTAL PROYEK",value:Q,sub:"dalam pantauan"}),e.jsx(M,{icon:"check-circle-2",tone:"leaf",label:"TASK HARI INI",value:X,sub:"mulai dikerjakan"}),e.jsx(M,{icon:"activity",tone:"brass",label:"SESI BERJALAN",value:Z,sub:"wayang dimainkan"}),e.jsx(M,{icon:"hand",tone:"amber",label:"MENUNGGU KAMU",value:_,sub:"butuh keputusan"})]}),e.jsxs("div",{className:"hn-dlg-grid hn-grid-mobile",children:[e.jsxs("div",{style:{minWidth:0},children:[e.jsxs("div",{className:"hn-dlg-hero",ref:H,children:[e.jsxs("svg",{className:"hn-dlg-hud",viewBox:"0 0 330 330","aria-hidden":"true",children:[e.jsx("g",{className:"hn-dlg-hud-a",children:e.jsx("circle",{cx:"165",cy:"165",r:"150",strokeDasharray:"3 14"})}),e.jsx("g",{className:"hn-dlg-hud-b",children:e.jsx("circle",{cx:"165",cy:"165",r:"126",strokeDasharray:"40 22"})})]}),P.length>0&&e.jsx("svg",{className:"hn-dlg-threads","aria-hidden":"true",focusable:"false",children:P.map((n,s)=>e.jsx("path",{d:n.d,className:n.slack?"hn-dlg-thread--slack":void 0,style:n.slack?void 0:{animationDelay:`${s%6*.3}s`}},s))}),e.jsx("div",{className:"hn-dlg-scan","aria-hidden":"true"}),e.jsxs("div",{className:"hn-dlg-hero-art","aria-hidden":"true",children:[e.jsx("img",{className:"hn-dlg-rig-arm hn-dlg-rig-arm--ul",src:ce,alt:""}),e.jsx("img",{className:"hn-dlg-rig-arm hn-dlg-rig-arm--ur",src:he,alt:""}),e.jsx("img",{className:"hn-dlg-rig-arm hn-dlg-rig-arm--ml",src:oe,alt:""}),e.jsx("img",{className:"hn-dlg-rig-arm hn-dlg-rig-arm--mr",src:ge,alt:""}),e.jsx("img",{className:"hn-dlg-rig-body",src:de,alt:""}),e.jsx("span",{className:"hn-dlg-hand","data-hand":"ul"}),e.jsx("span",{className:"hn-dlg-hand","data-hand":"ur"}),e.jsx("span",{className:"hn-dlg-hand","data-hand":"ml"}),e.jsx("span",{className:"hn-dlg-hand","data-hand":"mr"})]}),l.length>0||f.length>0?e.jsxs("div",{className:"hn-dlg-cards",role:"list","aria-label":"Wayang project",children:[l.map((n,s)=>{var w;const u=((w=a.find(k=>k.id===n.projectId))==null?void 0:w.name)??n.projectId,i=n.specId?t.find(k=>k.id===n.specId):void 0,c=!!n.decision&&!n.deciding,b=c?"menunggu jawabanmu":i?`${i.id} · ${i.stage}`:n.flow??"sesi terminal";return e.jsxs("button",{type:"button",className:"hn-dlg-prj","data-puppet":!0,"data-waiting":c||void 0,onClick:()=>m(n.id),"aria-label":`Buka terminal — ${u}, ${b}`,children:[e.jsx("span",{className:c?"hn-dlg-puppet hn-dlg-puppet--still":"hn-dlg-puppet",style:{animationDelay:`${s%6*.6}s`},children:e.jsx("img",{src:z(n.projectId),alt:"","aria-hidden":"true"})}),e.jsx("span",{className:"hn-dlg-prj-name",children:u}),e.jsx("span",{className:c?"hn-dlg-prj-sub hn-dlg-prj-sub--amber":"hn-dlg-prj-sub",children:b})]},n.id)}),f.map(n=>e.jsxs("button",{type:"button",className:"hn-dlg-prj hn-dlg-prj--off",onClick:()=>p(n),"aria-label":`Buka project ${n.name}`,children:[e.jsx("span",{className:"hn-dlg-puppet hn-dlg-puppet--still",children:e.jsx("img",{src:z(n.id),alt:"","aria-hidden":"true"})}),e.jsx("span",{className:"hn-dlg-prj-name",children:n.name}),e.jsx("span",{className:"hn-dlg-prj-sub hn-dlg-prj-sub--off",children:"tersandar di debog"})]},n.id))]}):e.jsxs("div",{className:"hn-dlg-empty",children:[e.jsx("div",{children:"Panggung sunyi — belum ada project di workspace."}),e.jsx("div",{children:"Tambahkan project dan sang dalang mengangkat wayangnya."})]})]}),e.jsxs("button",{type:"button",className:"hn-dlg-cmd",onClick:()=>x("terminal"),"aria-label":"Buka terminal — pusat kendali sesi",children:[e.jsx("span",{className:"hn-dlg-mic","aria-hidden":"true"}),e.jsxs("span",{className:"hn-dlg-cmd-t",children:[e.jsx("b",{children:"Perintah dalang"})," — buka Terminal untuk mengarahkan sesi yang berjalan…"]}),e.jsx("span",{className:"hn-dlg-cmd-k",children:"Terminal"})]})]}),e.jsxs("aside",{className:"hn-dlg-rail",children:[e.jsxs("div",{className:"hn-dlg-card",children:[e.jsx("div",{className:"hn-dlg-rt",children:"AKTIVITAS TERAKHIR"}),Y.length===0?e.jsx("div",{className:"hn-dlg-mut",children:"Belum ada project."}):Y.map(n=>e.jsxs("div",{className:"hn-dlg-act",children:[e.jsx("span",{className:n.live?"hn-dlg-dot hn-dlg-dot--on":"hn-dlg-dot"}),e.jsxs("span",{className:"hn-dlg-act-x",children:[e.jsx("b",{children:n.name})," ",n.text]})]},n.id))]}),e.jsxs("div",{className:"hn-dlg-card",children:[e.jsx("div",{className:"hn-dlg-rt",children:"DISTRIBUSI BACKLOG"}),e.jsxs("div",{className:"hn-dlg-donut-wrap",children:[e.jsxs("div",{className:"hn-dlg-donut",children:[e.jsxs("svg",{viewBox:"0 0 42 42",width:"112",height:"112","aria-hidden":"true",children:[e.jsx("circle",{className:"hn-dlg-ring",cx:"21",cy:"21",r:"15.9",strokeWidth:"5"}),O.map(n=>n.frac>0&&e.jsx("circle",{className:`hn-dlg-seg hn-dlg-seg--${n.cls}`,cx:"21",cy:"21",r:"15.9",strokeWidth:"5",strokeDasharray:`${n.frac} ${100-n.frac}`,strokeDashoffset:n.offset},n.key))]}),e.jsxs("div",{className:"hn-dlg-donut-c",children:[e.jsx("b",{children:D}),e.jsx("span",{children:"backlog"})]})]}),e.jsx("div",{className:"hn-dlg-leg",children:O.map(n=>e.jsxs("span",{children:[e.jsx("i",{className:`hn-dlg-seg--${n.cls}`}),n.label," ",e.jsx("b",{children:n.n})]},n.key))})]})]}),e.jsxs("div",{className:"hn-dlg-card",children:[e.jsx("div",{className:"hn-dlg-rt",children:"DIMULAI · 7 HARI"}),e.jsxs("svg",{viewBox:"0 0 260 100",className:"hn-dlg-chart","aria-hidden":"true",children:[e.jsx("line",{x1:"24",y1:"18",x2:"252",y2:"18"}),e.jsx("line",{x1:"24",y1:"48",x2:"252",y2:"48"}),e.jsx("line",{x1:"24",y1:"78",x2:"252",y2:"78"}),e.jsx("text",{x:"8",y:"21",children:$}),e.jsx("text",{x:"10",y:"81",children:"0"}),e.jsx("polyline",{className:"hn-dlg-trend",points:se}),v.map((n,s)=>e.jsx("circle",{cx:32+s*35,cy:78-n.n/$*60,r:"2.4"},s)),v.map((n,s)=>s%2===0?e.jsx("text",{x:22+s*35,y:"94",children:n.label},`l${s}`):null)]})]})]})]}),e.jsx("div",{className:"hn-dlg-foot",children:"◈ HANOMAN · ORKESTRASI CERDAS · EKSEKUSI SEMPURNA ◈"})]})}export{ke as DalangHanomanScreen};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{h as re,u as oe,e as y,j as e,v as le,as as T,ao as de,a as j,f as b,aP as ce,I as k,B as $,ay as xe,aA as A,p as pe,aC as ue}from"./index-D5w059cP.js";import{R as l}from"./react-DfGhg7ZW.js";import"./markdown-CWEY34jk.js";import"./xterm-3VOAfa_q.js";function J(s){let a={...s,kids:s.kids.map(J)};for(;!a.cat&&a.kids.length===1;){const i=a.kids[0];a={...i,label:a.label+"/"+i.label}}return a}function G(s){const a={path:"",kids:[]};for(const i of s){if(i.cat==="."){a.kids.push({path:".",label:".",cat:i,kids:[]});continue}let r=a;for(const x of i.cat.split("/")){const g=r.path?r.path+"/"+x:x;let d=r.kids.find(t=>t.path===g);d||(d={path:g,label:x,kids:[]},r.kids.push(d)),r=d}r.cat=i}return a.kids.map(J)}function O(s){const a=s.find(i=>i.scored&&i.linked)??s.find(i=>i.scored)??s[0];return a&&a.files[0]?`${a.cat}/${a.files[0]}`:""}function I({node:s,selected:a,onSelect:i,depth:r=0}){var h,u,p;const[x,g]=l.useState(!1),d=((h=s.cat)==null?void 0:h.scored)??!0,t=((u=s.cat)==null?void 0:u.linked)??!0;return e.jsxs("div",{style:r===0?{borderBottom:"1px solid var(--border-hair)"}:void 0,children:[e.jsxs("button",{onClick:()=>g(c=>!c),style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"9px 6px",paddingLeft:6+r*12,border:"none",background:"transparent",cursor:"pointer",textAlign:"left"},children:[e.jsx(k,{name:x?"chevron-down":"chevron-right",size:14,color:"var(--text-subtle)"}),e.jsx(k,{name:"folder",size:15,color:d?t?"var(--brass-500)":"var(--clay-500)":"var(--text-subtle)"}),e.jsxs("span",{style:{fontFamily:"var(--font-mono)",fontSize:12.5,color:"var(--text-strong)",fontWeight:500},children:[s.label,"/"]}),e.jsx("span",{style:{flex:1}}),s.cat&&d&&(s.cat.linked?e.jsx(k,{name:"link",size:13,color:"var(--leaf-600)"}):e.jsx(k,{name:"unlink",size:13,color:"var(--clay-500)"}))]}),x&&e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:1,paddingBottom:4},children:[s.kids.map(c=>e.jsx(I,{node:c,selected:a,onSelect:i,depth:r+1},c.path)),(p=s.cat)==null?void 0:p.files.map(c=>{const f=s.path+"/"+c,v=f===a;return e.jsxs("button",{onClick:()=>i(f),style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 8px",paddingLeft:18+r*12,borderRadius:"var(--radius-sm)",border:"none",cursor:"pointer",textAlign:"left",background:v?"var(--brass-100)":"transparent"},children:[e.jsx(k,{name:"file-text",size:13,color:v?"var(--brass-700)":"var(--text-subtle)"}),e.jsx("span",{style:{fontFamily:"var(--font-mono)",fontSize:12,color:v?"var(--brass-700)":!d||t?"var(--text-body)":"var(--text-muted)",fontWeight:v?600:400},children:c})]},c)})]})]})}function ve({projectId:s,projectName:a,docStatus:i}){const[r,x]=l.useState([]),[g,d]=l.useState(0),[t,h]=re(ue("docs",s),"selected","",pe),[u,p]=l.useState({}),[c,f]=l.useState("preview"),[v,P]=l.useState("tree"),[w,F]=l.useState(""),[S,M]=l.useState(!1),{confirm:K,dialog:U}=oe(),[H,z]=l.useState("loading"),[V,q]=l.useState(0);l.useEffect(()=>{let n=!0;return z("loading"),y.getDocs(s).then(o=>{if(!n)return;const m=o.tree;x(m),d(o.coverage),p({}),f("preview"),z("ready"),h(O(m))}).catch(()=>{n&&(x([]),h(""),z("error"))}),()=>{n=!1}},[s,V]),l.useEffect(()=>{if(!t||t in u)return;let n=!0;return y.getDoc(s,t).then(o=>{n&&p(m=>({...m,[t]:o.content}))}).catch(()=>{n&&p(o=>({...o,[t]:null}))}),()=>{n=!1}},[t,s,u]);const D=!!t&&!(t in u),C=t?u[t]===null:!1,Q=()=>p(n=>{const o={...n};return delete o[t],o}),X=l.useMemo(()=>G(r.filter(n=>n.scored)),[r]),L=l.useMemo(()=>G(r.filter(n=>!n.scored)),[r]),N=u[t]??"",Y=t.includes("/")?t.slice(0,t.lastIndexOf("/")):".",B=r.find(n=>n.cat===Y),Z=t,_=i==="broken"?"err":i==="drift"?"warn":"ok",ee=i==="broken"?"broken":i==="drift"?"drift":"ok";function te(){F(N),f("edit")}function ne(){f("preview")}async function se(){await y.putDoc(s,t,w),p(n=>({...n,[t]:w})),f("preview")}function E(n){h(n),f("preview"),P("viewer")}async function R(){const n=await y.getDocs(s),o=n.tree;x(o),d(n.coverage),o.some(m=>m.files.some(ie=>`${m.cat}/${ie}`===t))||h(O(o))}async function W(){if(!S){M(!0);try{await R()}finally{M(!1)}}}async function ae(){t&&await K({title:`Hapus ${t}?`,message:"Berkas aslinya di disk ikut dihapus — dokumen ini adalah Source of Truth project.",confirmLabel:"Hapus dokumen",run:()=>y.deleteDoc(s,t)})&&(p(n=>{const o={...n};return delete o[t],o}),await R())}return e.jsxs(e.Fragment,{children:[e.jsx(le,{ariaLabel:"Panel Docs",active:v,onActiveChange:n=>P(n),masterWidth:288,className:"hn-workspace-panels",panels:[{id:"tree",label:"Files",className:"hn-panel-flex",content:e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:16,minHeight:0,overflow:"auto"},children:[e.jsxs(T,{padding:0,children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"12px 14px",borderBottom:"1px solid var(--border-hair)"},children:[e.jsxs("span",{className:"hn-eyebrow",children:["docs · ",a]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx(de,{status:ee,size:"sm"}),e.jsx(j,{size:"sm",variant:"ghost",leftIcon:S?"loader":"radar",onClick:W,disabled:S,children:S?"…":"Muat ulang"})]})]}),e.jsx("div",{style:{padding:"4px 8px"},children:H==="loading"?e.jsx(b,{kind:"loading",compact:!0,title:"Memuat index…"}):H==="error"?e.jsx(b,{kind:"error",compact:!0,title:"Gagal memuat index docs",hint:a,action:()=>q(n=>n+1)}):r.length===0?e.jsx(b,{kind:"empty",compact:!0,icon:"folder-open",title:"Belum ada docs",hint:"Belum ada Markdown di repo ini.",action:W,actionLabel:"Muat ulang",actionIcon:"radar"}):e.jsxs(e.Fragment,{children:[X.map(n=>e.jsx(I,{node:n,selected:t,onSelect:E},n.path)),L.length>0&&e.jsxs("div",{style:{marginTop:8,paddingTop:8,borderTop:"1px solid var(--border-hair)"},children:[e.jsx("div",{className:"hn-eyebrow",style:{padding:"4px 6px",color:"var(--text-subtle)"},children:"Lainnya (tidak dinilai)"}),L.map(n=>e.jsx(I,{node:n,selected:t,onSelect:E},n.path))]})]})})]}),e.jsxs(T,{padding:16,children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:12},children:[e.jsx("span",{className:"hn-eyebrow",children:"SoT coverage"}),e.jsx("span",{style:{fontFamily:"var(--font-mono)",fontSize:12,color:"var(--text-muted)"},children:a})]}),e.jsx(ce,{value:g,showLabel:!0,label:"Kategori ter-index",tone:_})]})]})},{id:"viewer",label:"Dokumen",className:"hn-panel-flex",content:e.jsxs(T,{padding:0,fill:!0,children:[e.jsxs("div",{style:{flex:"0 0 auto",display:"flex",alignItems:"center",gap:12,padding:"12px 16px",borderBottom:"1px solid var(--border-hair)",flexWrap:"wrap"},children:[e.jsx(k,{name:"file-text",size:15,color:"var(--text-muted)"}),e.jsx("span",{style:{fontFamily:"var(--font-mono)",fontSize:13,color:"var(--text-strong)",fontWeight:500},children:Z}),B&&B.scored&&(B.linked?e.jsx($,{tone:"ok",size:"sm",icon:"link",children:"indexed"}):e.jsx($,{tone:"err",size:"sm",icon:"unlink",children:"unlinked"})),e.jsx("span",{style:{flex:1}}),c==="preview"?e.jsxs("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[e.jsx(xe,{href:n=>y.docDownloadUrl(s,t,n),disabled:!t||D||C}),e.jsx(j,{size:"sm",variant:"ghost",leftIcon:"trash-2",onClick:ae,disabled:!t,children:"Hapus"}),e.jsx(j,{size:"sm",variant:"secondary",leftIcon:"pencil",onClick:te,disabled:!t||D||C,children:"Edit"})]}):e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx(j,{size:"sm",variant:"ghost",onClick:ne,children:"Batal"}),e.jsx(j,{size:"sm",leftIcon:"check",onClick:se,children:"Simpan"})]})]}),c==="preview"?e.jsx("div",{"data-testid":"doc-preview-scroll",style:{padding:"8px 30px 34px",flex:"1 1 auto",minHeight:0,overflow:"auto"},children:t?D?e.jsx(b,{kind:"loading",title:"Memuat dokumen…",hint:t}):C?e.jsx(b,{kind:"error",title:"Gagal memuat dokumen",hint:t,action:Q}):e.jsx(A,{text:N,name:t}):e.jsx(b,{kind:"empty",icon:"file-text",title:"Tidak ada dokumen dipilih",hint:"Pilih file dari pohon docs di kiri."})}):e.jsxs("div",{className:"hn-grid-mobile",style:{display:"grid",gridTemplateColumns:"1fr 1fr",flex:"1 1 auto",minHeight:0},children:[e.jsxs("div",{style:{display:"flex",flexDirection:"column",borderRight:"1px solid var(--border-hair)",minHeight:0},children:[e.jsx("div",{style:{padding:"8px 14px",borderBottom:"1px solid var(--border-hair)",background:"var(--bone-100)"},children:e.jsx("span",{className:"hn-eyebrow",children:"Markdown"})}),e.jsx("textarea",{value:w,onChange:n=>F(n.target.value),spellCheck:!1,placeholder:`# Judul dokumen
|
|
2
|
-
|
|
3
|
-
Paragraf pembuka…`,style:{flex:1,width:"100%",boxSizing:"border-box",resize:"none",border:"none",outline:"none",padding:"16px 18px",fontFamily:"var(--font-mono)",fontSize:12.5,lineHeight:1.7,color:"var(--text-body)",background:"var(--surface-card)"}})]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",minHeight:0},children:[e.jsx("div",{style:{padding:"8px 14px",borderBottom:"1px solid var(--border-hair)",background:"var(--bone-100)"},children:e.jsx("span",{className:"hn-eyebrow",children:"Preview langsung"})}),e.jsx("div",{style:{flex:1,overflow:"auto",padding:"4px 24px 24px"},children:e.jsx(A,{text:w,name:t})})]})]})]})}]}),U]})}export{ve as DocsWorkspace,G as buildTree,O as firstDoc};
|