@a9n-shoji/rvw 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ :root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f6f8fa;--panel:#fff;--panel-2:#f3f4f6;--line:#d8dee4;--line-strong:#afb8c1;--text:#1f2328;--muted:#57606a;--accent:#0969da;--accent-emphasis:#1f6feb;--accent-soft:#ddf4ff;--accent-contrast:#fff;--tab-accent:#0969da;--focus:#218bff;--danger:#cf222e;--danger-soft:#ffebe9;--warning:#fff8c5;--warning-text:#633c01;--warning-line:#d4a72c;--search-match-bg:#ffdf5d;--search-match-text:#3b2f00;--success:#1a7f37;--attention:#9a6700;--done:#8250df;--info:#0969da;--file-tree-active-text:#0550ae;--header-bg:#24292f;--header-border:#1b1f23;--header-text:#f6f8fa;--header-muted:#b1bac4;--header-control-bg:#2f363d;--header-control-border:#57606a;--header-control-hover:#3a424a;--header-active-bg:#f0f6fc;--header-active-text:#24292f;--header-badge-bg:#1f6feb;--header-badge-text:#fff;--shadow-small:#1f232817;--shadow-medium:#1f232826;--shadow-large:#1f23283d;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--comment-body-size:13px;--comment-ui-size:12px;--comment-meta-size:11px;--comment-badge-size:10px;font-synthesis:none;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}:root[data-theme=system]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root[data-theme=system]{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d1117;--panel:#161b22;--panel-2:#21262d;--line:#30363d;--line-strong:#484f58;--text:#e6edf3;--muted:#8b949e;--accent:#58a6ff;--accent-emphasis:#1f6feb;--accent-soft:#1f2d3d;--accent-contrast:#fff;--tab-accent:#58a6ff;--focus:#58a6ff;--danger:#ff7b72;--danger-soft:#3c1e22;--warning:#332b00;--warning-text:#e3b341;--warning-line:#6e5a1c;--search-match-bg:#7c5c12;--search-match-text:#fff2bd;--success:#3fb950;--attention:#d29922;--done:#d2a8ff;--info:#58a6ff;--file-tree-active-text:#cae8ff;--header-bg:#010409;--header-border:#21262d;--header-text:#f0f6fc;--header-muted:#8b949e;--header-control-bg:#161b22;--header-control-border:#484f58;--header-control-hover:#21262d;--header-active-bg:#f0f6fc;--header-active-text:#1f2328;--header-badge-bg:#1f6feb;--header-badge-text:#fff;--shadow-small:#01040966;--shadow-medium:#01040980;--shadow-large:#010409a3}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);margin:0;overflow:hidden}button,input,select,textarea{font:inherit}button{border:1px solid var(--accent-emphasis);background:var(--accent-emphasis);color:var(--accent-contrast);cursor:pointer;border-radius:6px;padding:7px 11px}button:disabled{cursor:not-allowed;opacity:.48}input,select,textarea{border:1px solid var(--line-strong);background:var(--panel);width:100%;color:var(--text);border-radius:6px;padding:8px 9px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}textarea{resize:vertical}code{font-family:var(--mono);overflow-wrap:anywhere;font-size:11px}.app-shell{flex-direction:column;height:100dvh;min-height:0;max-height:100dvh;display:flex;overflow:hidden}.skip-link{z-index:1000;border:2px solid var(--focus);background:var(--panel);color:var(--text);border-radius:6px;padding:8px 12px;font-weight:700;text-decoration:none;position:fixed;inset:8px auto auto 8px;transform:translateY(calc(-100% - 16px))}.skip-link:focus{transform:none}.topbar{background:var(--header-bg);height:68px;color:var(--header-text);border-bottom:1px solid var(--header-border);flex:0 0 68px;align-items:center;gap:14px;padding:0 14px;display:flex}.brand{letter-spacing:.08em;flex:none;align-items:center;gap:9px;display:flex}.brand-button{color:inherit;background:0 0;border:0;border-radius:6px;padding:4px;text-decoration:none}.brand-button:hover{background:var(--header-control-hover)}.brand-mark{background:var(--header-active-bg);width:30px;height:30px;color:var(--header-active-text);font:800 20px/1 var(--mono);border-radius:8px 3px;place-items:center;display:grid}.pr-heading{flex:1 20 260px;min-width:150px}.pr-heading span{color:var(--header-muted);margin-bottom:2px;font-size:11px;display:block}.pr-heading h1{white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:16px;overflow:hidden}.pr-heading h1 a{color:inherit;text-decoration:none}.pr-heading h1 a:hover,.pr-heading h1 a:focus-visible{text-underline-offset:3px;text-decoration:underline}.button--quiet{border-color:var(--line-strong);color:inherit;background:0 0}.button--danger-quiet{color:var(--danger);background:0 0;border-color:#0000}.review-scope-bar{background:0 0;border:0;flex:0 auto;align-items:center;gap:8px;min-width:0;padding:0;display:flex;overflow:visible}.review-scope-control{flex-direction:column;flex:none;gap:4px;display:flex}.review-scope-control>span{color:var(--header-muted);font-size:10px;font-weight:650}.commit-range-picker{z-index:30;position:relative}.commit-range-trigger{border-color:var(--header-control-border);background:var(--header-control-bg);width:min(430px,36vw);min-width:280px;height:32px;color:var(--header-text);text-align:left;border-radius:6px;align-items:center;gap:7px;padding:4px 7px 4px 9px;display:flex}.commit-range-trigger:hover,.commit-range-trigger[aria-expanded=true]{border-color:var(--header-muted);background:var(--header-control-hover)}.commit-range-summary{min-width:0;font:11px var(--mono);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.commit-range-count{color:var(--header-muted);white-space:nowrap;flex:none;font-size:10px}.commit-selection-badge,.commit-latest-badge{background:var(--header-badge-bg);min-height:18px;color:var(--header-badge-text);border-radius:999px;flex:none;align-items:center;padding:1px 6px;font-size:10px;font-weight:800;line-height:1;display:inline-flex}.commit-range-chevron{color:var(--header-muted);flex:none;font-size:10px}.commit-range-popover{border:1px solid var(--line-strong);background:var(--panel);width:min(440px,100vw - 24px);color:var(--text);box-shadow:0 14px 36px var(--shadow-large);border-radius:9px;padding:8px;position:absolute;top:calc(100% + 7px);left:0}.commit-range-shortcuts{gap:6px;display:flex}.commit-range-shortcuts button{border-color:var(--line-strong);background:var(--panel-2);color:var(--text);flex:1;padding:6px 8px;font-size:11px}.commit-range-shortcuts button:hover{border-color:var(--accent)}.commit-range-hint{color:var(--muted);margin:7px 2px 6px;font-size:10px}.commit-range-list{border:1px solid var(--line);background:var(--panel);-webkit-user-select:none;user-select:none;border-radius:7px;flex-direction:column;max-height:min(360px,100vh - 150px);display:flex;overflow-y:auto}.commit-range-option{border:0;border-bottom:1px solid var(--line);min-height:44px;color:var(--text);text-align:left;touch-action:none;background:0 0;border-radius:0;flex:none;align-items:center;gap:9px;padding:6px 9px;display:flex}.commit-range-option:last-child{border-bottom:0}.commit-range-option:hover{background:var(--panel-2)}.commit-range-option.selected{background:var(--accent-soft)}.commit-range-option-indicator{border:2px solid var(--line-strong);background:var(--panel);border-radius:50%;flex:0 0 12px;width:12px;height:12px}.commit-range-option.selected .commit-range-option-indicator{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 2px var(--panel)}.commit-range-option--middle .commit-range-option-indicator{border-radius:2px}.commit-range-option-copy{flex:1;gap:2px;min-width:0;display:grid}.commit-range-option-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.commit-range-option-copy code{color:var(--muted)}.commit-range-option-meta{align-items:center;gap:8px;min-width:0;display:flex}.commit-range-option-meta time{color:var(--header-muted);font:500 9px var(--mono);white-space:nowrap}.commit-range-special{border-bottom:1px solid var(--line);color:var(--muted);font:11px var(--mono);padding:8px 10px}.review-scope-bar .segmented{border-color:var(--header-control-border);background:var(--header-control-bg);height:32px;padding:2px}.review-scope-bar .segmented button{min-width:56px;color:var(--header-muted);white-space:nowrap;padding:5px 8px}.review-scope-bar .segmented button.active{background:var(--header-active-bg);color:var(--header-active-text);box-shadow:none;font-weight:700}.review-scope-display .segmented button{min-width:62px}.diff-style-modes{width:128px}.review-scope-bar .diff-style-modes button{flex:1 1 0;min-width:0}.topbar-menu{z-index:20;flex:none;position:relative}.topbar-menu-toggle{border-color:var(--header-control-border);width:36px;height:36px;color:var(--header-text);background:0 0;place-items:center;padding:0;display:grid}.topbar-menu-toggle:hover,.topbar-menu-toggle[aria-expanded=true]{border-color:var(--header-control-border);background:var(--header-control-hover)}.topbar-menu-toggle svg{width:18px;height:18px}.topbar-menu-popover{border:1px solid var(--line-strong);background:var(--panel);width:210px;box-shadow:0 10px 28px var(--shadow-large);border-radius:8px;gap:2px;padding:5px;display:grid;position:absolute;top:calc(100% + 7px);right:0}.topbar-menu-popover button{width:100%;color:var(--text);text-align:left;background:0 0;border:0;padding:8px 9px;font-size:12px}.topbar-menu-popover button:hover{background:var(--panel-2)}.topbar-menu-popover .topbar-menu-command{justify-content:space-between;align-items:center;gap:12px;display:flex}.topbar-menu-command kbd{color:var(--muted);font:10px var(--mono)}.topbar-menu-section{border-top:1px solid var(--line);margin:3px 0;padding:5px 0 3px;display:grid}.topbar-menu-section-label{color:var(--muted);padding:2px 9px 5px;font-size:10px;font-weight:700}.topbar-menu-section button{justify-content:space-between;align-items:center;gap:12px;display:flex}.topbar-menu-check{color:var(--accent);font-weight:800}.topbar-menu-popover .topbar-menu-danger{border-top:1px solid var(--line);color:var(--danger)}.diff-whitespace-empty{border-top:1px solid var(--line);color:var(--muted);gap:6px;padding:22px 16px 24px;font-size:12px;display:grid}.diff-whitespace-empty strong{color:var(--text);font-size:13px}.button--wide{width:100%;margin-top:10px}.button--back{color:var(--accent);background:0 0;border:0;padding:3px 0 12px}.pending-banner{background:var(--warning);min-height:38px;color:var(--warning-text);border-bottom:1px solid var(--warning-line);align-items:center;gap:12px;padding:7px 20px;font-size:13px;display:flex}.quick-open-backdrop{z-index:100;background:#00000047;justify-content:center;align-items:flex-start;padding:clamp(44px,9vh,92px) 16px 16px;display:flex;position:fixed;inset:0}.quick-open-dialog{border:1px solid var(--line-strong);background:var(--panel);border-radius:9px;flex-direction:column;width:min(720px,100vw - 32px);max-height:min(650px,100vh - 92px);display:flex;overflow:hidden;box-shadow:0 18px 52px #0000005c}.quick-open-input-shell{border-bottom:1px solid var(--line);flex:none;align-items:center;padding:10px;display:flex;position:relative}.quick-open-input-shell>svg{z-index:1;width:17px;height:17px;color:var(--muted);pointer-events:none;position:absolute;left:22px}.quick-open-input-shell>input{border-color:var(--accent);height:42px;box-shadow:0 0 0 1px var(--accent-soft);border-radius:6px;padding:9px 42px 9px 40px;font-size:14px}.quick-open-input-shell>input:focus-visible{outline:1px solid var(--focus);outline-offset:0}.quick-open-clear{width:28px;height:28px;color:var(--muted);background:0 0;border:0;place-items:center;padding:0;font-size:20px;line-height:1;display:grid;position:absolute;right:17px}.quick-open-clear:hover{background:var(--panel-2);color:var(--text)}.quick-open-summary{border-bottom:1px solid var(--line);min-height:29px;color:var(--muted);flex:none;justify-content:space-between;align-items:center;gap:12px;padding:5px 14px;font-size:10px;display:flex}.quick-open-results{flex:auto;min-height:88px;padding:4px 0;overflow-y:auto}.quick-open-result{width:100%;min-height:42px;color:var(--text);text-align:left;background:0 0;border:0;border-radius:0;align-items:center;gap:10px;padding:6px 13px;display:flex}.quick-open-result:hover,.quick-open-result.selected{background:var(--accent-soft);color:var(--file-tree-active-text)}.quick-open-icon-group{flex:0 0 34px;align-items:center;gap:3px;width:34px;display:flex}.quick-open-copy{flex:1;align-items:baseline;gap:12px;min-width:0;display:flex}.quick-open-copy strong{min-width:0;font:650 13px/1.35 var(--mono);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;overflow:hidden}.quick-open-copy>span{min-width:0;color:var(--muted);font:11px/1.35 var(--mono);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.quick-open-copy mark{color:var(--accent);background:0 0;border-radius:2px;font-weight:800}.quick-open-badge{background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--accent);border-radius:999px;flex:none;padding:2px 6px;font-size:9px;font-weight:750}.quick-open-open-dot{background:var(--accent);border-radius:50%;flex:0 0 7px;width:7px;height:7px}.quick-open-state{min-height:110px;color:var(--muted);text-align:center;place-content:center;gap:5px;padding:20px;font-size:12px;display:grid}.quick-open-state strong{color:var(--text)}.quick-open-footer{border-top:1px solid var(--line);background:var(--panel-2);min-height:32px;color:var(--muted);flex:none;justify-content:flex-end;align-items:center;gap:14px;padding:5px 12px;font-size:10px;display:flex}.quick-open-footer span{align-items:center;gap:4px;display:inline-flex}.quick-open-footer kbd{border:1px solid var(--line-strong);background:var(--panel);min-width:20px;color:var(--text);font:9px/1.2 var(--mono);text-align:center;border-bottom-width:2px;border-radius:4px;padding:2px 4px}.error-notice{border:1px solid color-mix(in srgb, var(--danger) 55%, var(--line));background:color-mix(in srgb, var(--danger) 9%, var(--panel));color:var(--danger);border-radius:7px;margin:10px 14px;padding:10px 12px;font-size:12px}.error-notice>div{justify-content:space-between;gap:10px;display:flex}.error-notice p{white-space:pre-wrap;margin:5px 0 0}.error-notice ul{margin:7px 0 0;padding-left:20px}.sync-feedback{border-bottom:1px solid color-mix(in srgb, var(--success) 45%, var(--line));background:color-mix(in srgb, var(--success) 10%, var(--panel));color:var(--text);text-align:right;padding:7px 14px;font-size:11px}.viewer-error{place-items:center;min-height:55vh;display:grid}.viewer-error .error-notice{width:min(620px,100% - 32px)}.workspace{grid-template-columns:var(--sidebar-width,330px) 6px minmax(0, 1fr);flex:1;min-height:0;display:grid;overflow:hidden}.workspace.is-resizing,.main-view.is-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.workspace.is-resizing.is-row-resizing{cursor:row-resize}.sidebar{background:var(--panel);flex-direction:column;min-height:0;display:flex;overflow:hidden}.horizontal-resize-handle{z-index:8;cursor:col-resize;touch-action:none;background:var(--panel);outline:none;min-width:6px;min-height:0;position:relative}.horizontal-resize-handle:after{background:var(--line-strong);content:"";transition:inset .1s,background .1s;position:absolute;inset:0 2px}.horizontal-resize-handle:hover:after,.horizontal-resize-handle:focus-visible:after,.horizontal-resize-handle.active:after{background:var(--accent);inset-inline:1px}.vertical-resize-handle{z-index:9;cursor:row-resize;touch-action:none;outline:none;height:6px;position:absolute;top:-3px;left:0;right:0}.vertical-resize-handle:after{background:var(--line-strong);content:"";transition:inset .1s,background .1s;position:absolute;inset:2px 0}.vertical-resize-handle:hover:after,.vertical-resize-handle:focus-visible:after,.vertical-resize-handle.active:after{background:var(--accent);inset-block:1px}.sidebar-stack{--sidebar-stack-min-height:102px;--sidebar-stack-compact-share:25%;border-bottom:1px solid var(--line);flex-direction:column;flex:none;min-height:37px;display:flex}.sidebar-stack--code{--sidebar-stack-min-height:260px;--sidebar-stack-compact-share:58%}.sidebar-stack--comments{--sidebar-stack-min-height:210px;--sidebar-stack-compact-share:28%;position:relative}.sidebar-stack.is-expanded{min-height:min(var(--sidebar-stack-min-height), var(--sidebar-stack-compact-share));flex:auto}.sidebar-stack-toggle{background:var(--panel-2);width:100%;color:var(--text);text-align:left;border:0;border-radius:0;flex:none;align-items:center;gap:8px;padding:10px 14px;font-size:12px;font-weight:650;display:flex}.sidebar-stack-toggle:hover{background:var(--accent-soft)}.sidebar-stack-header{background:var(--panel-2);flex:none;display:flex}.sidebar-stack-header .sidebar-stack-toggle{flex:1;min-width:0}.sidebar-stack-action{width:40px;color:var(--muted);background:0 0;border:0;border-radius:0;flex:0 0 40px;place-items:center;padding:0;display:grid;position:relative}.sidebar-stack-action:hover,.sidebar-stack-action.active{background:var(--accent-soft);color:var(--accent)}.sidebar-stack-action svg{width:16px;height:16px}.sidebar-stack-toggle>span:nth-child(2){flex:1;min-width:0}.sidebar-stack-chevron{width:16px;height:16px;color:var(--muted);flex:0 0 18px}.sidebar-stack-count{background:var(--accent-soft);min-width:19px;height:19px;color:var(--accent);border-radius:10px;place-items:center;font-size:10px;display:inline-grid}.sidebar-stack-icon{width:16px;height:16px;color:var(--muted);flex:0 0 16px}.sidebar-stack-body[hidden]{display:none}.sidebar-stack-body{overscroll-behavior:contain;flex:auto;min-height:0;overflow:hidden auto}.segmented{background:var(--panel-2);border:1px solid var(--line);border-radius:7px;gap:2px;padding:3px;display:flex}.segmented button{color:var(--muted);background:0 0;border:0;flex:1;padding:6px 7px;font-size:12px}.segmented button.active{background:var(--panel);color:var(--text);box-shadow:0 1px 3px var(--shadow-small)}.segmented.compact{margin-top:1px}.file-panel,.comment-sidebar-detail,.sidebar-stack-body>section{padding:12px 14px 18px}.file-panel{padding:10px 14px 16px}.file-panel>input{height:34px;margin-top:8px;font-size:12px}.file-scope-checkbox{min-height:31px;color:var(--muted);cursor:pointer;align-items:center;gap:8px;margin:3px 0;padding:4px 7px;font-size:11px;display:flex}.file-scope-checkbox:hover{color:var(--text)}.file-scope-checkbox>input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent);flex:0 0 15px;margin:0;padding:0}.file-tree{flex-direction:column;margin:3px -4px 14px;display:flex;overflow:visible}.file-tree-summary{min-height:31px;color:var(--muted);align-items:center;gap:7px;padding:0 2px 0 8px;font-size:11px;display:flex}.file-tree-summary>span{flex:1;min-width:0}.file-tree-summary>button{width:26px;height:26px;color:var(--muted);background:0 0;border:0;flex:0 0 26px;place-items:center;padding:0;display:grid}.file-tree-summary>button:hover:not(:disabled){background:var(--accent-soft);color:var(--accent)}.file-tree-summary>button svg{width:16px;height:16px}.file-tree>*{flex-shrink:0}.file-tree-virtualized{contain:layout style;width:100%;position:relative}.file-tree-virtualized>.file-tree-row{height:31px;position:absolute;left:0}.file-tree-row{width:100%;height:31px;color:var(--text);text-align:left;font:650 14px/1.35 var(--mono);white-space:nowrap;text-overflow:ellipsis;background:0 0;border:0;align-items:center;gap:0;padding:6px 8px;display:flex;overflow:hidden}.file-tree-row:hover,.file-tree-row.active{background:var(--accent-soft);color:var(--file-tree-active-text)}.file-tree-label{text-overflow:ellipsis;min-width:0;overflow:hidden}.directory-chevron{color:var(--muted);text-align:center;flex:0 0 14px;margin-right:4px;font-size:10px}.file-tree-icon-group{flex:none;align-items:center;gap:2px;margin-right:8px;display:flex}.tree-entry-icon{width:16px;height:16px;color:var(--muted);flex:0 0 16px}.file-type-icon{color:var(--file-icon-light-fg);--file-icon-bg:var(--file-icon-light-bg);place-items:center;display:inline-grid}.file-type-icon>svg{width:100%;height:100%;display:block}.file-type-icon>svg .bg{fill:var(--file-icon-bg)}:root[data-theme=dark] .file-type-icon{color:var(--file-icon-dark-fg);--file-icon-bg:var(--file-icon-dark-bg)}@media (prefers-color-scheme:dark){:root[data-theme=system] .file-type-icon{color:var(--file-icon-dark-fg);--file-icon-bg:var(--file-icon-dark-bg)}}.file-change-icon{flex:0 0 14px;place-items:center;width:14px;height:14px;display:grid}.file-change-icon svg{width:14px;height:14px}.file-change-icon--added{color:var(--success)}.file-change-icon--deleted{color:var(--danger)}.file-change-icon--modified{color:var(--attention)}.file-change-icon--renamed{color:var(--done)}.file-change-icon--type-changed{color:var(--info)}.search-panel{padding:12px 12px 16px}.search-input-shell{position:relative}.search-input-shell>input{height:34px;padding-right:72px;font-size:12px}.search-options{gap:1px;display:flex;position:absolute;top:5px;right:5px}.search-options button{width:28px;height:24px;color:var(--muted);font:11px/1 var(--mono);background:0 0;border:0;border-radius:4px;place-items:center;padding:0;display:grid}.search-options button:hover{background:var(--panel-2);color:var(--text)}.search-options button.active{background:var(--accent-soft);color:var(--accent)}.search-options button:last-child>span{border-bottom:1px solid;padding-bottom:1px}.search-summary{min-height:33px;color:var(--muted);align-items:center;gap:7px;padding:7px 2px 4px 5px;font-size:11px;display:flex}.search-summary>span:first-child{flex:1;min-width:0}.search-refreshing{color:var(--accent);font-size:10px}.search-summary>button{width:26px;height:26px;color:var(--muted);background:0 0;border:0;flex:0 0 26px;place-items:center;padding:0;display:grid}.search-summary>button:hover:not(:disabled){background:var(--accent-soft);color:var(--accent)}.search-summary>button svg{width:16px;height:16px}.search-panel>.error-notice{margin:8px 0 0}.search-results{margin:2px -5px 0}.search-result-group{border-bottom:1px solid var(--line)}.search-result-group:last-child{border-bottom:0}.search-result-file{width:100%;min-height:32px;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:6px;padding:5px 6px;display:flex}.search-result-file:hover{background:var(--panel-2)}.search-result-file-icon-group{flex:none;align-items:center;gap:2px;display:flex}.search-result-file-icon-group>.tree-entry-icon{flex-basis:14px;width:14px;height:14px}.search-result-chevron{width:14px;height:14px;color:var(--muted);flex:0 0 14px;place-items:center;display:grid}.search-result-chevron svg{width:14px;height:14px}.search-result-file-label{flex:1;align-items:baseline;gap:8px;min-width:0;display:flex;overflow:hidden}.search-result-file strong{min-width:0;max-width:68%;font:650 11px/1.3 var(--mono);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;overflow:hidden}.search-result-directory{min-width:0;color:var(--muted);font:500 10px/1.3 var(--mono);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.search-result-count{background:var(--panel-2);min-width:21px;height:19px;color:var(--muted);border-radius:10px;place-items:center;padding:0 5px;font-size:10px;display:inline-grid}.search-result-lines{padding:0 0 4px 20px}.search-result-line{width:100%;color:var(--text);text-align:left;background:0 0;border:0;border-radius:4px;grid-template-columns:28px minmax(0,1fr);align-items:baseline;gap:5px;padding:5px 7px;display:grid}.search-result-line:hover{background:var(--accent-soft)}.search-result-line-number{color:var(--muted);font:10px/1.4 var(--mono);text-align:right}.search-result-line code{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.search-result-line mark{background:var(--search-match-bg);color:var(--search-match-text);border-radius:2px;font-weight:750}.search-empty{color:var(--muted);margin:8px 2px 0;font-size:11px}.truncated{border:1px solid var(--warning-line);background:var(--warning);color:var(--warning-text);border-radius:5px;margin:8px 0 0;padding:7px 8px;font-size:11px}.main-view{grid-template-columns:minmax(0,1fr);min-width:0;min-height:0;display:grid;position:relative;overflow:hidden auto}.main-view.two-pane{grid-template-columns:minmax(0,1fr) 6px minmax(0,1fr);overflow:auto hidden}.document-pane{background:var(--bg);min-width:0;min-height:0;position:relative;overflow:auto}.pane-resize-handle{background:var(--bg)}.document-pane-drop-target{border:1px dashed var(--line-strong);background:color-mix(in srgb, var(--accent) 4%, var(--panel));border-radius:10px;min-height:calc(100% - 72px);margin:16px}.document-tabs-shell{z-index:6;border-bottom:1px solid var(--line-strong);background:var(--panel-2);min-width:0;height:40px;display:flex;position:sticky;top:0}.pane-find-layer{z-index:7;pointer-events:none;justify-content:flex-end;height:0;padding-right:10px;display:flex;position:sticky;top:44px}.document-pane:has(.markdown-view-toolbar) .pane-find-layer{top:86px}.document-pane:has(.walkthrough-viewer) .pane-find-layer{top:118px}.pane-find-widget{border:1px solid var(--line-strong);background:var(--panel);width:min(430px,100% - 6px);height:35px;box-shadow:0 5px 18px var(--shadow-medium);pointer-events:auto;border-radius:3px;align-items:center;gap:2px;padding:4px;display:flex}.pane-find-input-shell{border:1px solid var(--line-strong);background:var(--bg);flex:auto;align-items:center;min-width:96px;height:25px;display:flex}.pane-find-input-shell:focus-within{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.pane-find-input-shell.invalid,.pane-find-input-shell.invalid:focus-within{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger)}.pane-find-input-shell input{min-width:48px;height:23px;color:var(--text);font:12px var(--mono);background:0 0;border:0;outline:0;flex:auto;padding:3px 5px}.pane-find-input-shell>button,.pane-find-action{width:23px;height:23px;color:var(--muted);font:650 10px var(--mono);background:0 0;border:0;border-radius:3px;flex:0 0 23px;place-items:center;padding:0;display:grid}.pane-find-input-shell>button:hover,.pane-find-action:hover:not(:disabled){background:var(--accent-soft);color:var(--text)}.pane-find-input-shell>button.active{background:var(--accent-soft);color:var(--accent)}.pane-find-whole-word{border-bottom:1px solid;padding-bottom:1px}.pane-find-status{width:42px;color:var(--muted);font:10px var(--mono);text-align:center;text-overflow:ellipsis;white-space:nowrap;flex:0 0 42px;overflow:hidden}.pane-find-status.invalid{color:var(--danger)}.pane-find-action svg{width:15px;height:15px}.pane-find-action:disabled{opacity:.35}::highlight(rvw-pane-find-left-match){background-color:var(--lightningcss-light,#eab3086b)var(--lightningcss-dark,#facc1561)}::highlight(rvw-pane-find-right-match){background-color:var(--lightningcss-light,#eab3086b)var(--lightningcss-dark,#facc1561)}::highlight(rvw-pane-find-left-current){color:var(--lightningcss-light,#17120a)var(--lightningcss-dark,#fff);background-color:var(--lightningcss-light,#f58b0ad1)var(--lightningcss-dark,#f97316c7)}::highlight(rvw-pane-find-right-current){color:var(--lightningcss-light,#17120a)var(--lightningcss-dark,#fff);background-color:var(--lightningcss-light,#f58b0ad1)var(--lightningcss-dark,#f97316c7)}.document-tabs{scrollbar-width:thin;flex:1;min-width:0;display:flex;overflow-x:auto}.document-tab{border-right:1px solid var(--line);background:var(--panel-2);min-width:126px;max-width:210px;color:var(--muted);flex:0 180px;display:flex;position:relative}.document-tab[draggable=true]{cursor:grab}.document-tab[draggable=true]:active{cursor:grabbing}.document-tab.active{background:var(--panel);color:var(--text)}.document-tab.active:before{background:var(--line-strong);content:"";height:2px;position:absolute;inset:0 0 auto}.document-pane.active .document-tab.active:before{background:var(--tab-accent)}.document-tab-activate{min-width:0;color:inherit;text-align:left;background:0 0;border:0;border-radius:0;flex:1;align-items:center;gap:7px;padding:0 4px 0 10px;display:flex}.document-tab-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:600 11px var(--mono);overflow:hidden}.document-tab-icon-group{flex:none;align-items:center;gap:2px;display:flex}.document-tab-close,.document-tabs-menu-toggle{width:30px;color:var(--muted);background:0 0;border:0;border-radius:0;flex:0 0 30px;place-items:center;padding:0;display:grid}.document-tab-close:hover,.document-tabs-menu-toggle:hover{background:var(--accent-soft);color:var(--accent)}.document-tabs-menu{border-left:1px solid var(--line);flex:0 0 38px;display:flex;position:relative}.document-tabs-menu-toggle{flex-basis:38px;width:38px}.document-tabs-menu-popover{z-index:8;border:1px solid var(--line-strong);background:var(--panel);width:min(330px,100vw - 32px);max-height:320px;box-shadow:0 8px 28px var(--shadow-medium);border-radius:7px;padding:5px;position:absolute;top:calc(100% + 4px);right:4px;overflow:auto}.document-tabs-menu-popover>span{color:var(--muted);padding:9px;font-size:12px;display:block}.document-tabs-menu-popover button{width:100%;color:var(--text);text-align:left;font:500 11px var(--mono);background:0 0;border:0;align-items:center;gap:8px;padding:7px 8px;display:flex}.document-tabs-menu-popover button:hover,.document-tabs-menu-popover button.active{background:var(--accent-soft);color:var(--accent)}.document-tabs-menu-popover button:disabled{color:var(--muted);cursor:default;opacity:.55}.document-tabs-menu-separator{background:var(--line);height:1px;margin:4px -5px}.document-tabs-menu-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.empty-document-viewer{min-height:55vh;color:var(--muted);text-align:center;align-content:center;place-items:center;gap:6px;display:grid}.empty-document-viewer strong{color:var(--text);font-size:13px}.empty-document-viewer span{font-size:12px}.document-viewer{min-height:100%;padding-bottom:24px}.reference-fallback-banner{border:1px solid color-mix(in srgb, var(--warning-text) 24%, var(--line));background:var(--warning);color:var(--warning-text);border-radius:8px;justify-content:space-between;align-items:center;gap:16px;margin:16px 16px 0;padding:10px 12px;display:flex}.reference-fallback-banner>div{gap:2px;min-width:0;display:grid}.reference-fallback-banner strong{font-size:12px}.reference-fallback-banner span{font-size:11px}.reference-fallback-banner button{border-color:color-mix(in srgb, var(--warning-text) 30%, var(--line));background:var(--panel);min-height:30px;color:var(--text);flex:none;font-size:11px;font-weight:700}.diff-style-modes button{min-width:54px}.diff-surface{border:1px solid var(--line);background:var(--panel);box-shadow:0 2px 14px var(--shadow-small);border-radius:9px;margin:16px;overflow:clip}.markdown-view-toolbar{z-index:5;border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--panel) 94%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);justify-content:space-between;align-items:center;gap:12px;min-height:42px;padding:6px 16px;display:flex;position:sticky;top:40px}.markdown-view-toolbar>span{align-items:center;gap:7px;min-width:0;display:flex}.markdown-view-toolbar>span code{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.markdown-view-modes{flex:0 0 150px;width:150px}.markdown-preview>header{border-bottom:1px solid var(--line);background:var(--panel-2);min-height:39px;color:var(--muted);align-items:center;gap:10px;padding:6px 12px;font-size:10px;display:flex}.markdown-preview>header>span:first-child{color:var(--text);font-weight:700}.markdown-preview>header>span:nth-child(2){text-align:right;flex:1;min-width:0}.markdown-comment-surface{-webkit-user-select:text;user-select:text;min-width:0;position:relative}.markdown-preview>.markdown-comment-surface>article{width:min(900px,100%);margin:0 auto;padding:38px clamp(24px,5vw,64px) 80px;font-size:14px;line-height:1.7}.markdown-preview>.markdown-comment-surface>article>:first-child{margin-top:0}.markdown-selection-popover{z-index:18;position:absolute;transform:translate(-50%)}.markdown-selection-popover.is-composing{width:min(460px,100% - 24px)}.markdown-selection-popover .inline-comment-composer{box-shadow:0 12px 30px color-mix(in srgb, var(--text) 18%, transparent);margin:0}.markdown-selection-composer-slot{margin:12px 0;display:flow-root}.markdown-selection-composer-slot:empty{display:none}.markdown-selection-composer-slot .inline-comment-composer{width:min(680px,100% - 24px);box-shadow:0 8px 24px color-mix(in srgb, var(--text) 12%, transparent);margin:0 auto}.markdown-selection-comment-action{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));background:var(--accent);min-height:32px;box-shadow:0 7px 22px color-mix(in srgb, var(--text) 18%, transparent);color:var(--accent-contrast);border-radius:999px;padding:5px 10px;font-size:11px;font-weight:700}.rvw-markdown-selected{background:color-mix(in srgb, var(--accent) 24%, transparent);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 24%, transparent)}.rvw-markdown-commented{text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 68%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 68%, transparent);text-underline-offset:3px;text-decoration-thickness:2px}.markdown-inline-comments{gap:8px;margin:10px 0 18px;display:grid}.markdown-inline-comments>.comment-thread{border:1px solid color-mix(in srgb, var(--accent) 30%, var(--line));background:var(--panel);box-shadow:0 3px 12px var(--shadow-small);border-radius:8px}.markdown-preview h1,.markdown-preview h2,.markdown-preview h3{line-height:1.3}.markdown-preview h1{border-bottom:1px solid var(--line);margin-bottom:20px;padding-bottom:12px;font-size:28px}.markdown-preview h2{margin:34px 0 12px;font-size:20px}.markdown-preview h3{margin:24px 0 10px;font-size:16px}.markdown-preview p,.markdown-preview ul,.markdown-preview ol{margin:11px 0}.markdown-preview blockquote{border-left:3px solid var(--accent);background:var(--accent-soft);color:var(--muted);margin:18px 0;padding:8px 15px}.markdown-preview code{border:1px solid var(--line);background:var(--panel-2);font-size:inherit;border-radius:4px;padding:2px 5px}.markdown-preview pre{border:1px solid var(--line);background:var(--panel-2);border-radius:8px;padding:16px;overflow:auto}.markdown-preview pre code{border:0;padding:0}.markdown-mermaid-shell{border:1px solid var(--line-strong);background:var(--panel);box-shadow:0 3px 14px var(--shadow-small);border-radius:9px;margin:20px 0;overflow:hidden}.markdown-mermaid-shell.is-source-highlighted{border-color:color-mix(in srgb, var(--accent) 68%, var(--line));box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 24%, transparent), 0 3px 14px var(--shadow-small)}.markdown-mermaid-shell.is-source-selected{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--panel));box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 30%, transparent), 0 3px 14px var(--shadow-small)}.markdown-mermaid-toolbar{border-bottom:1px solid var(--line);background:var(--panel-2);min-height:32px;color:var(--muted);letter-spacing:.03em;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;font-size:10px;font-weight:700;display:flex}.markdown-mermaid{min-height:160px;padding:18px;overflow:auto}.markdown-mermaid svg{width:100%;min-width:480px;max-height:440px;margin:0 auto;display:block}.markdown-mermaid-error{background:var(--warning);color:var(--warning-text);padding:14px;font-size:12px}.markdown-preview img{max-width:100%;height:auto}.markdown-image-placeholder{overflow-wrap:anywhere;border:1px dashed var(--line-strong);background:var(--panel-2);max-width:100%;color:var(--muted);border-radius:6px;align-items:center;padding:4px 8px;font-size:12px;line-height:1.5;display:inline-flex}.markdown-preview details{margin:11px 0}.markdown-preview summary{cursor:pointer;font-weight:650}.markdown-preview details[open]>summary{margin-bottom:8px}.markdown-table-scroll{border:1px solid var(--line-strong);border-radius:7px;width:100%;margin:18px 0;overflow-x:auto}.markdown-table-scroll table{border-collapse:collapse;border-spacing:0;width:max-content;min-width:100%}.markdown-table-scroll th,.markdown-table-scroll td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);overflow-wrap:anywhere;text-align:left;vertical-align:top;white-space:normal;word-break:normal;-webkit-user-select:text;user-select:text;max-width:40ch;padding:8px 12px}.markdown-table-scroll th:last-child,.markdown-table-scroll td:last-child{border-right:0}.markdown-table-scroll tr:last-child td{border-bottom:0}.markdown-table-scroll th{background:var(--panel-2);font-weight:700}.markdown-table-scroll tbody tr:nth-child(2n){background:color-mix(in srgb, var(--panel-2) 55%, transparent)}.markdown-preview .contains-task-list,.walkthrough-markdown .contains-task-list{padding-left:0;list-style:none}.markdown-preview .task-list-item,.walkthrough-markdown .task-list-item{list-style:none}.markdown-preview .task-list-item>input[type=checkbox],.walkthrough-markdown .task-list-item>input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent-emphasis);vertical-align:-2px;border-radius:3px;margin:0 8px 0 0;padding:0}diffs-container>[slot=header-metadata]{align-items:center;gap:7px;display:flex}.diff-fallback-badge{border:1px solid var(--line-strong);background:var(--panel-2);min-height:24px;color:var(--muted);white-space:nowrap;border-radius:12px;align-items:center;padding:3px 8px;font-size:10px;display:inline-flex}.viewer-loading,.viewer-unavailable{min-height:55vh;color:var(--muted);place-items:center;display:grid}.viewer-unavailable{align-content:center;gap:10px}.viewer-unavailable>span{border:1px solid var(--line-strong);width:52px;height:52px;font:700 12px var(--mono);border-radius:8px;place-items:center;display:grid}.repository-image-viewer{width:100%;overflow-x:auto}.repository-image-grid{min-width:0;display:grid}.repository-image-viewer--split .repository-image-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-width:680px}.repository-image-pane{border-right:1px solid var(--line);min-width:0}.repository-image-pane:last-child{border-right:0}.repository-image-pane>header{border-bottom:1px solid var(--line);background:var(--panel-2);align-items:center;gap:9px;min-height:39px;padding:5px 10px 5px 12px;display:flex}.repository-image-pane>header strong{flex:none;font-size:11px}.repository-image-pane>header code{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:10px;overflow:hidden}.repository-image-asset{background-color:var(--panel);background-image:linear-gradient(45deg, color-mix(in srgb, var(--muted) 9%, transparent) 25%, transparent 25%), linear-gradient(-45deg, color-mix(in srgb, var(--muted) 9%, transparent) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, color-mix(in srgb, var(--muted) 9%, transparent) 75%), linear-gradient(-45deg, transparent 75%, color-mix(in srgb, var(--muted) 9%, transparent) 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px;place-items:center;min-height:55vh;padding:24px;display:grid;position:relative;overflow:hidden}.repository-image-asset img{object-fit:contain;max-width:100%;height:auto;display:block}.repository-image-status,.repository-image-empty{min-height:55vh;color:var(--muted);text-align:center;place-items:center;padding:24px;font-size:12px;display:grid}.repository-image-status{position:absolute;inset:0}.repository-image-status--error{color:var(--danger)}.repository-image-comments{border-top:1px solid var(--line);background:var(--panel);gap:8px;padding:10px;display:grid}.comment-icon-button{border-color:var(--line-strong);width:32px;height:32px;color:var(--muted);background:0 0;place-items:center;padding:0;display:grid}.comment-icon-button:hover,.comment-icon-button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.inline-comment-composer{background:var(--panel);border:1px solid var(--line-strong);box-shadow:0 4px 16px var(--shadow-medium);border-radius:8px;gap:9px;padding:12px;display:grid}.inline-comment-composer--file{margin:16px 16px 0}.inline-comment-composer--line{width:min(680px,100% - 16px);margin:8px}.inline-comment-composer>strong{color:var(--muted);font-size:12px}.inline-comment-composer .error-notice{margin:0}.inline-comment-composer textarea{min-height:84px;font-size:13px}.inline-comment-actions{justify-content:flex-end;gap:7px;display:flex}.inline-comment-actions button{font-size:12px}.inline-comment-actions .button--quiet{color:var(--muted)}.form-error{color:var(--danger);margin:7px 0 0;font-size:11px}.review-tree-items{flex-direction:column;margin:0 -4px;display:flex}.review-tree-item.file-tree-row{flex:0 0 31px}.review-tree-count{background:var(--panel-2);min-width:18px;height:18px;color:var(--muted);border-radius:9px;flex:0 0 18px;place-items:center;margin-left:4px;font-size:10px;display:inline-grid}.review-tree-walkthrough-icon{color:var(--done)}.review-tree-walkthrough-icon svg{width:16px;height:16px}.review-tree-walkthrough-list{flex-direction:column;display:flex}.review-tree-walkthrough.file-tree-row{padding-left:22px}.walkthrough-viewer{background:radial-gradient(circle at 30% -5%, color-mix(in srgb, var(--accent) 8%, transparent), transparent 34rem), var(--bg);min-height:calc(100% - 40px)}.walkthrough-viewer-header{z-index:4;border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--panel) 94%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:center;gap:18px;min-height:74px;padding:12px 20px;display:flex;position:sticky;top:40px}.walkthrough-viewer-title{flex:auto;align-items:center;gap:12px;min-width:0;display:flex;overflow:hidden}.walkthrough-viewer-heading-copy{min-width:0;overflow:hidden}.walkthrough-viewer-icon{border:1px solid color-mix(in srgb, var(--done) 42%, var(--line));background:color-mix(in srgb, var(--done) 12%, var(--panel));width:38px;height:38px;color:var(--done);border-radius:10px;flex:0 0 38px;place-items:center;display:grid}.walkthrough-viewer-icon svg{width:19px;height:19px}.walkthrough-kicker{color:var(--muted);letter-spacing:.08em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;margin-bottom:3px;font-size:10px;font-weight:750;display:block;overflow:hidden}.walkthrough-viewer-title h2{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:16px;overflow:hidden}.walkthrough-comment-button{flex:0 0 32px;position:relative}.walkthrough-viewer-actions{flex:none;align-items:center;gap:6px;display:flex}.code-reference-notice{border:1px solid color-mix(in srgb, var(--warning-text) 24%, var(--line));background:var(--warning);max-width:min(420px,100% - 40px);box-shadow:0 6px 18px color-mix(in srgb, var(--text) 12%, transparent);color:var(--warning-text);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;padding:7px 11px;font-size:11px;font-weight:650;overflow:hidden}.walkthrough-reference-notice{position:absolute;top:calc(100% + 8px);right:20px}.comment-reference-notice{max-width:100%;margin-top:5px;display:inline-block}.walkthrough-delete-button{color:var(--muted)}.walkthrough-delete-button:hover:not(:disabled){border-color:color-mix(in srgb, var(--danger) 45%, var(--line));background:var(--danger-soft);color:var(--danger)}.walkthrough-comment-button>span{background:var(--accent);min-width:17px;height:17px;color:var(--accent-contrast);font:700 9px var(--mono);border-radius:999px;place-items:center;padding:0 4px;display:grid;position:absolute;top:-6px;right:-6px}.walkthrough-viewer>.error-notice{margin:10px 16px 0}.walkthrough-comment-area{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--panel) 76%, transparent);gap:10px;padding:0 16px 16px;display:grid}.walkthrough-comment-area>.inline-comment-composer--file{margin-inline:0}.walkthrough-comment-area>.comment-thread{border:1px solid var(--line);background:var(--panel);border-radius:8px}.walkthrough-markdown-surface{min-width:0}.walkthrough-markdown{width:min(940px,100%);min-width:0;margin:0 auto;padding:38px clamp(26px,4vw,58px) 100px;font-size:14px;line-height:1.7}.walkthrough-markdown>:first-child{margin-top:0}.walkthrough-markdown h1,.walkthrough-markdown h2,.walkthrough-markdown h3{color:var(--text);scroll-margin-top:130px;line-height:1.28}.walkthrough-markdown h1{border-bottom:1px solid var(--line);letter-spacing:-.025em;margin:0 0 18px;padding-bottom:12px;font-size:27px}.walkthrough-markdown h2{margin:38px 0 13px;padding-top:6px;font-size:20px}.walkthrough-markdown h3{margin:25px 0 10px;font-size:16px}.walkthrough-markdown p,.walkthrough-markdown ul,.walkthrough-markdown ol{margin:11px 0}.walkthrough-markdown li+li{margin-top:5px}.walkthrough-markdown blockquote{border-left:3px solid var(--done);background:color-mix(in srgb, var(--done) 7%, var(--panel));color:var(--muted);margin:18px 0;padding:8px 15px}.walkthrough-markdown code{border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-size:inherit;border-radius:4px;padding:2px 5px}.walkthrough-markdown pre{border:1px solid var(--line);background:var(--panel-2);border-radius:9px;margin:18px 0;padding:16px;overflow:auto}.walkthrough-markdown pre code{background:0 0;border:0;padding:0}.code-inline-reference{border:1px solid color-mix(in srgb, var(--accent) 45%, var(--line));background:color-mix(in srgb, var(--accent) 8%, var(--panel));max-width:100%;color:var(--accent);-webkit-user-select:text;user-select:text;vertical-align:baseline;border-radius:5px;align-items:center;gap:5px;margin:0 2px;padding:2px 6px;line-height:1.35;display:inline-flex}.code-inline-reference:hover{border-color:var(--accent);background:var(--accent-soft)}.code-inline-reference svg{flex:none;width:13px;height:13px}.code-inline-reference>span{font:650 12px var(--mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.code-inline-reference small{color:var(--muted);font:9px var(--mono);white-space:nowrap}.main-view.two-pane .walkthrough-markdown{padding-inline:clamp(22px,4vw,44px)}.main-view.two-pane .walkthrough-diagram svg{min-width:520px}.walkthrough-diagram-shell{border:1px solid var(--line-strong);background:var(--panel);box-shadow:0 4px 18px var(--shadow-small);border-radius:10px;margin:22px 0 28px;overflow:hidden}.walkthrough-diagram-shell.has-comment{border-color:color-mix(in srgb, var(--accent) 55%, var(--line-strong));box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 12%, transparent)}.walkthrough-diagram-toolbar{border-bottom:1px solid var(--line);background:var(--panel-2);min-height:34px;color:var(--muted);letter-spacing:.03em;justify-content:space-between;align-items:center;gap:12px;padding:7px 10px;font-size:9px;font-weight:650;display:flex}.walkthrough-diagram-toolbar>span:nth-child(2){text-align:right;flex:1;min-width:0}.walkthrough-diagram-comment{min-height:27px;color:var(--accent);flex:none;align-items:center;gap:5px;padding:3px 8px;font-size:10px;display:inline-flex}.walkthrough-diagram-comment svg{width:13px;height:13px}.walkthrough-diagram{min-height:190px;padding:22px;overflow:auto}.walkthrough-diagram-comment-composer{border-top:1px solid var(--line);background:var(--panel-2);padding:0 10px 10px}.walkthrough-diagram-comment-composer .inline-comment-composer--line{width:100%;margin:10px 0 0}.walkthrough-diagram svg{width:100%;min-width:580px;max-height:480px;margin:0 auto;display:block}.walkthrough-diagram-node--linked{cursor:pointer;filter:drop-shadow(0 2px 3px var(--shadow-small));outline:none}.walkthrough-diagram-node--linked rect,.walkthrough-diagram-node--linked polygon,.walkthrough-diagram-node--linked circle,.walkthrough-diagram-node--linked path{transition:fill .1s,stroke-width .1s;fill:color-mix(in srgb, var(--accent) 7%, var(--panel))!important;stroke:var(--accent)!important;stroke-width:1.6px!important}.walkthrough-diagram-node--linked line{stroke:color-mix(in srgb, var(--accent) 72%, var(--line-strong))!important;stroke-width:1.2px!important}.walkthrough-diagram-node--linked:hover rect,.walkthrough-diagram-node--linked:focus-visible rect,.walkthrough-diagram-node--linked:hover polygon,.walkthrough-diagram-node--linked:focus-visible polygon,.walkthrough-diagram-node--linked:hover circle,.walkthrough-diagram-node--linked:focus-visible circle,.walkthrough-diagram-node--linked:hover path,.walkthrough-diagram-node--linked:focus-visible path{fill:color-mix(in srgb, var(--accent) 14%, var(--panel))!important;stroke-width:3px!important}.walkthrough-diagram-error{border:1px solid var(--warning-line);background:var(--warning);color:var(--warning-text);border-radius:8px;margin:18px 0;padding:12px;font-size:12px}.walkthrough-html-preview-shell{border:1px solid var(--line-strong);background:var(--panel);box-shadow:0 4px 18px var(--shadow-small);border-radius:10px;margin:22px 0 28px;overflow:visible}.walkthrough-html-preview-toolbar{border-bottom:1px solid var(--line);background:var(--panel-2);min-height:34px;color:var(--muted);letter-spacing:.03em;justify-content:space-between;align-items:center;gap:12px;padding:7px 10px;font-size:9px;font-weight:650;display:flex}.walkthrough-html-preview-toolbar>span:nth-child(2){text-align:right;flex:1;min-width:0}.walkthrough-html-preview-frame-shell{min-width:0;position:relative}.walkthrough-html-preview-frame-shell iframe{background:var(--panel);border:0;width:100%;min-height:240px;display:block}.walkthrough-html-overlay{z-index:4;pointer-events:none;position:absolute;inset:0;overflow:visible}.walkthrough-html-comment-action,.walkthrough-html-marker{pointer-events:auto;box-shadow:0 3px 10px var(--shadow-medium);position:absolute}.walkthrough-html-comment-action{border-color:var(--accent);background:var(--panel);min-height:28px;color:var(--accent);align-items:center;gap:5px;padding:4px 8px;font-size:10px;display:inline-flex;transform:translate(-50%)}.walkthrough-html-comment-action:hover{background:var(--accent-soft)}.walkthrough-html-comment-action svg{width:13px;height:13px}.walkthrough-html-marker{border:1px solid color-mix(in srgb, var(--accent) 70%, var(--line));background:var(--panel);width:25px;height:25px;color:var(--accent);border-radius:999px;place-items:center;padding:5px;display:grid;transform:translate(-75%,-25%)}.walkthrough-html-marker.is-active{background:var(--accent);color:var(--accent-contrast)}.walkthrough-html-marker svg{width:13px;height:13px}.walkthrough-html-comment-composer{z-index:2;border:1px solid var(--line-strong);background:var(--panel);width:min(420px,100% - 24px);box-shadow:0 8px 24px var(--shadow-medium);pointer-events:auto;border-radius:8px;padding:10px;position:absolute;transform:translate(-50%,8px)}.walkthrough-html-comment-composer .inline-comment-composer--line{width:100%;margin:0}.walkthrough-html-preview-error{border:1px solid var(--warning-line);background:var(--warning);color:var(--warning-text);border-radius:8px;margin:18px 0;padding:12px;font-size:12px}.comment-sidebar{font-size:var(--comment-body-size)}.comment-state-filter button{font-size:var(--comment-ui-size)}.comment-state-filter button span{color:var(--muted);font-size:var(--comment-meta-size);margin-left:3px}.comment-list-toolbar,.pr-comment-actions,.comment-reply-actions,.comment-edit-actions,.comment-actions{align-items:center;gap:7px;display:flex}.comment-list-toolbar{justify-content:space-between;margin-top:8px}.comment-list-toolbar button,.comment-actions button,.comment-reply-actions button,.comment-edit-actions button,.pr-comment-actions button{font-size:var(--comment-ui-size)}.comment-list-toolbar button{color:var(--muted);padding:5px 7px}.comment-select-all{color:var(--muted);cursor:pointer;font-size:var(--comment-ui-size);align-items:center;gap:6px;display:flex}.comment-pr-create{margin-left:auto}.comment-select-all input,.comment-select-toggle input{width:auto}.comment-list{flex-direction:column;gap:8px;margin-top:10px;display:flex}.comment-list-item{align-items:flex-start;min-width:0;display:flex;position:relative}.comment-select-toggle{cursor:pointer;flex:0 0 28px;justify-content:center;align-self:flex-start;height:40px;padding-top:11px;display:flex}.comment-select-toggle input{flex:none;width:16px;height:16px;margin:0}.comment-list-item>.comment-thread{cursor:pointer}.comment-list-item.is-selected>.comment-thread{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-soft)}.comment-list-item>.comment-thread{flex:1;min-width:0}.comment-list-item>.error-notice{margin:6px 0 0}.pr-comment-composer{border:1px solid var(--line);background:var(--panel-2);border-radius:7px;gap:7px;margin-top:8px;padding:10px;display:grid}.pr-comment-composer label{color:var(--muted);font-size:var(--comment-meta-size);font-weight:650}.pr-comment-composer textarea,.comment-reply-composer textarea{font-size:var(--comment-body-size);line-height:1.5}.pr-comment-actions,.comment-reply-actions{justify-content:flex-end}.comment-copy-selection{z-index:5;box-shadow:0 3px 10px var(--shadow-medium);font-size:var(--comment-ui-size);margin-top:10px;position:sticky;bottom:8px}.comment-thread{border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:var(--comment-body-size);border-radius:7px;position:relative;overflow:visible}.comment-thread--inline{border-left:3px solid var(--accent);width:min(100% - 16px,736px);box-shadow:0 3px 12px var(--shadow-small);margin:5px 8px 10px}.comment-thread-header{align-items:flex-start;min-width:0;display:flex}.comment-thread-toggle,.comment-thread-summary{min-width:0;color:var(--text);text-align:left;background:0 0;border:0;border-radius:0;flex:1;align-items:flex-start;gap:7px;padding:10px;display:flex}.comment-thread-toggle:hover{background:var(--accent-soft)}.comment-thread-chevron{color:var(--muted);font:700 16px/1 var(--mono);flex:none}.comment-thread-summary-copy{flex:1;gap:4px;min-width:0;display:grid}.comment-thread.is-collapsed .comment-thread-summary-copy{align-self:center}.comment-thread.is-collapsed .comment-thread-excerpt,.comment-thread.is-collapsed .comment-thread-meta{display:none}.comment-thread-target,.comment-thread-excerpt,.comment-thread-meta{min-width:0;overflow:hidden}.comment-thread-target{color:var(--text);font:650 var(--comment-ui-size)/1.4 var(--mono);text-overflow:ellipsis;white-space:nowrap}.comment-thread-excerpt{font-size:var(--comment-body-size);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.45;display:-webkit-box}.comment-thread-meta,.comment-post-meta,.comment-post>small{color:var(--muted);font-size:var(--comment-meta-size);line-height:1.4}.comment-thread-header-actions,.comment-thread-badges{flex:none;align-items:center;display:flex}.comment-thread-header-actions{gap:4px;padding:7px 7px 0 0}.comment-thread-badges{flex-direction:column;align-items:flex-end;gap:4px}.comment-thread-content{border-top:1px solid var(--line);padding:0 10px 10px}.comment-thread.is-collapsed .comment-thread-header{align-items:center}.comment-thread.is-collapsed .comment-thread-header-actions{padding-top:5px;padding-bottom:5px}.comment-thread--inline .comment-thread-header{align-items:center;min-height:34px}.comment-thread--inline .comment-thread-toggle{align-items:center;gap:6px;padding:7px 8px}.comment-thread--inline .comment-thread-chevron{font-size:14px}.comment-thread--inline .comment-thread-summary-copy{display:block}.comment-thread--inline .comment-thread-header-actions,.comment-thread--inline.is-collapsed .comment-thread-header-actions{align-self:stretch;padding:3px 4px 3px 0}.comment-thread--inline .comment-thread-badges{flex-direction:row}.comment-outdated-note{background:var(--danger-soft);color:var(--danger);font-size:var(--comment-meta-size);border-radius:5px;margin:9px 0 0;padding:7px 8px;line-height:1.45}.comment-source-quote{border-left:3px solid var(--line-strong);background:var(--panel-2);margin-top:9px;padding:8px}.comment-source-quote small{color:var(--muted)}.comment-source-quote pre{white-space:pre-wrap;font:inherit;margin:5px 0 0;font-size:12px;overflow:auto}.comment-post{border-bottom:1px solid var(--line);padding:8px 0}.comment-post:last-child{border-bottom:0}.comment-post-meta{justify-content:space-between;align-items:center;gap:8px;display:flex}.comment-post-meta>span,.comment-post-meta-end{align-items:center;gap:6px;display:inline-flex}.comment-post-meta strong{color:var(--text);font-size:var(--comment-meta-size)}.comment-post-meta small{color:var(--muted);font-size:var(--comment-badge-size)}.comment-markdown{overflow-wrap:anywhere;font-size:var(--comment-body-size);margin:4px 0 0;line-height:1.5}.comment-markdown>:first-child{margin-top:0}.comment-markdown>:last-child{margin-bottom:0}.comment-markdown p,.comment-markdown ul,.comment-markdown ol,.comment-markdown blockquote,.comment-markdown pre,.comment-markdown details,.comment-markdown-table-scroll{margin:7px 0}.comment-markdown h1,.comment-markdown h2,.comment-markdown h3,.comment-markdown h4,.comment-markdown h5,.comment-markdown h6{color:var(--text);font-size:var(--comment-body-size);border:0;margin:10px 0 6px;padding:0;line-height:1.35}.comment-markdown h1,.comment-markdown h2{font-size:calc(var(--comment-body-size) + 2px)}.comment-markdown ul,.comment-markdown ol{padding-left:20px}.comment-markdown li+li{margin-top:2px}.comment-markdown blockquote{border-left:3px solid var(--accent);background:var(--accent-soft);color:var(--muted);padding:5px 8px}.comment-markdown a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.comment-markdown-unavailable-link{color:var(--muted);text-underline-offset:2px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.comment-markdown code{border:1px solid var(--line);background:var(--panel-2);font-size:inherit;border-radius:4px;padding:1px 4px}.comment-markdown pre{border:1px solid var(--line);background:var(--panel-2);white-space:pre;border-radius:6px;max-width:100%;padding:9px;overflow:auto}.comment-markdown pre code{background:0 0;border:0;padding:0}.comment-markdown img{border-radius:6px;max-width:100%;height:auto;margin:7px 0;display:block}.comment-markdown details>summary{cursor:pointer;font-weight:650}.comment-markdown-table-scroll{border:1px solid var(--line-strong);border-radius:6px;width:100%;overflow-x:auto}.comment-markdown-table-scroll table{border-collapse:collapse;border-spacing:0;width:max-content;min-width:100%}.comment-markdown-table-scroll th,.comment-markdown-table-scroll td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);overflow-wrap:anywhere;text-align:left;vertical-align:top;white-space:normal;max-width:28ch;padding:5px 7px}.comment-markdown-table-scroll th:last-child,.comment-markdown-table-scroll td:last-child{border-right:0}.comment-markdown-table-scroll tr:last-child td{border-bottom:0}.comment-markdown-table-scroll th{background:var(--panel-2);font-weight:700}.comment-markdown .contains-task-list{padding-left:0;list-style:none}.comment-markdown .task-list-item{list-style:none}.comment-markdown .task-list-item>input[type=checkbox]{width:14px;height:14px;accent-color:var(--accent-emphasis);vertical-align:-2px;margin:0 6px 0 0;padding:0}.comment-mermaid-shell{border:1px solid var(--line-strong);background:var(--panel);border-radius:7px;margin:8px 0;overflow:hidden}.comment-mermaid-toolbar{border-bottom:1px solid var(--line);background:var(--panel-2);min-height:29px;color:var(--muted);font-size:var(--comment-badge-size);letter-spacing:.03em;justify-content:space-between;align-items:center;gap:7px;padding:5px 7px;font-weight:700;display:flex}.comment-mermaid{min-height:120px;padding:10px;overflow:auto}.comment-mermaid svg{width:100%;min-width:420px;max-height:360px;margin:0 auto;display:block}.comment-mermaid-placeholder,.comment-mermaid-error{color:var(--muted);font-size:var(--comment-meta-size);padding:12px}.comment-mermaid-error{background:var(--warning);color:var(--warning-text)}.mermaid-expand-button{width:26px;height:24px;color:var(--muted);background:0 0;border-color:#0000;flex:none;place-items:center;padding:4px;display:grid}.mermaid-expand-button:hover,.mermaid-expand-button:focus-visible{border-color:var(--line-strong);background:var(--panel);color:var(--text)}.mermaid-expand-button svg{width:15px;height:15px}.mermaid-expanded-backdrop{z-index:1000;background:#0000006b;place-items:center;padding:clamp(10px,2vw,24px);display:grid;position:fixed;inset:0}.mermaid-expanded-view{border:1px solid var(--line-strong);background:var(--panel);width:min(1680px,100vw - clamp(20px,4vw,48px));min-width:0;height:min(1040px,100vh - clamp(20px,4vw,48px));min-height:0;color:var(--text);border-radius:11px;grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden;box-shadow:0 24px 72px #0000007a}.mermaid-expanded-toolbar{border-bottom:1px solid var(--line);background:var(--panel-2);justify-content:space-between;align-items:center;gap:16px;min-height:48px;padding:7px 8px 7px 16px;display:flex}.mermaid-expanded-toolbar>strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;overflow:hidden}.mermaid-expanded-actions,.mermaid-zoom-controls{align-items:center;gap:5px;display:flex}.mermaid-zoom-controls{border-right:1px solid var(--line);padding-right:5px}.mermaid-expanded-actions button{border-color:var(--line-strong);min-height:31px;color:var(--muted);background:0 0;justify-content:center;align-items:center;gap:5px;padding:5px 9px;font-size:11px;display:inline-flex}.mermaid-expanded-actions button:hover:not(:disabled),.mermaid-expanded-actions button.active,.mermaid-expanded-actions button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.mermaid-expanded-actions button:disabled{opacity:.45;cursor:default}.mermaid-expanded-actions button svg{width:15px;height:15px}.mermaid-expanded-actions .mermaid-expanded-close{width:32px;padding:5px}.mermaid-comments-toggle>span{background:var(--panel);min-width:17px;height:17px;color:var(--muted);border-radius:9px;place-items:center;padding:0 4px;font-size:9px;display:inline-grid}.mermaid-expanded-workspace{grid-template-columns:minmax(0,1fr);min-width:0;min-height:0;display:grid}.mermaid-expanded-view.has-rail .mermaid-expanded-workspace{grid-template-columns:minmax(0, 1fr) 6px var(--mermaid-review-rail-width,380px)}.mermaid-expanded-workspace.is-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.mermaid-rail-resize-handle{background:var(--panel-2)}.mermaid-expanded-canvas{overscroll-behavior:contain;background:radial-gradient(circle, color-mix(in srgb, var(--line) 42%, transparent) .7px, transparent .8px) 0 0 / 18px 18px, var(--bg);min-width:0;min-height:0;overflow:auto}.mermaid-expanded-canvas:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}.mermaid-expanded-stage{place-items:center;width:max-content;min-width:100%;min-height:100%;padding:24px;display:grid}.mermaid-expanded-diagram{flex:none}.mermaid-expanded-diagram svg{display:block;width:100%!important;max-width:none!important;height:100%!important;max-height:none!important}.mermaid-expanded-error{border:1px solid var(--warning-line);background:var(--warning);max-width:680px;color:var(--warning-text);border-radius:8px;padding:16px;font-size:12px}.mermaid-review-rail{border-left:1px solid var(--line);background:var(--panel);min-width:0;min-height:0;overflow:hidden}.mermaid-comments-mode,.mermaid-reference-peek{grid-template-rows:auto minmax(0,1fr);height:100%;min-height:0;display:grid}.mermaid-comments-mode>header{border-bottom:1px solid var(--line);background:var(--panel-2);justify-content:space-between;align-items:center;gap:8px;min-height:42px;padding:8px 12px;font-size:12px;display:flex}.mermaid-comments-mode>header>span{border:1px solid var(--line);min-width:20px;height:20px;color:var(--muted);border-radius:10px;place-items:center;font-size:10px;display:inline-grid}.mermaid-comments-scroll{overscroll-behavior:contain;min-height:0;padding:10px;overflow:auto}.mermaid-diagram-comments{gap:10px;display:grid}.mermaid-diagram-comments>.comment-thread{border:1px solid var(--line);background:var(--panel);border-radius:8px}.mermaid-diagram-comments .inline-comment-composer--line{width:100%;margin:0}.mermaid-comments-empty{color:var(--muted);text-align:center;margin:20px 8px 8px;font-size:12px;line-height:1.5}.mermaid-comment-action{justify-content:center;justify-self:stretch;align-items:center;gap:6px;min-height:34px;font-size:12px;display:inline-flex}.mermaid-comment-action svg{width:14px;height:14px}.mermaid-reference-peek{grid-template-rows:auto minmax(0,1fr) auto}.mermaid-reference-peek>header{border-bottom:1px solid var(--line);background:var(--panel-2);padding:10px 12px}.mermaid-reference-peek .button--back{min-height:24px;margin-bottom:8px;padding:0;font-size:11px;display:block}.mermaid-reference-location{align-items:center;gap:8px;min-width:0;display:flex}.mermaid-reference-location>svg{flex:none;width:17px;height:17px}.mermaid-reference-location>span{gap:2px;min-width:0;display:grid}.mermaid-reference-location strong{font:650 11px var(--mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mermaid-reference-location small{color:var(--muted);font:10px var(--mono)}.mermaid-reference-source{background:var(--bg);min-height:0;overflow:auto}.mermaid-reference-source>p{color:var(--muted);margin:18px;font-size:12px;line-height:1.5}.mermaid-reference-source pre{min-width:max-content;font:11px/1.65 var(--mono);margin:0;padding:10px 0}.mermaid-reference-source pre>span{grid-template-columns:5ch minmax(max-content,1fr);display:grid}.mermaid-reference-source pre>span>span{color:var(--muted);text-align:right;-webkit-user-select:none;user-select:none;padding:0 10px 0 4px}.mermaid-reference-source pre code{border-left:1px solid var(--line);color:var(--text);white-space:pre;padding:0 14px 0 10px}.mermaid-reference-source pre>span.is-referenced{background:color-mix(in srgb, var(--accent) 13%, transparent)}.mermaid-reference-source pre>span.is-referenced code{border-left:2px solid var(--accent);padding-left:9px}.mermaid-reference-highlight .shiki{min-width:max-content}.mermaid-reference-highlight .shiki code{color:inherit;border:0;padding:0;display:block}.mermaid-reference-highlight .mermaid-reference-code-line{white-space:pre;min-width:100%;min-height:1.65em;padding-right:14px;display:inline-block}.mermaid-reference-highlight .mermaid-reference-code-line:before{border-right:1px solid var(--line);width:5ch;color:var(--muted);content:attr(data-line);text-align:right;-webkit-user-select:none;user-select:none;margin-right:10px;padding-right:10px;display:inline-block}.mermaid-reference-highlight .mermaid-reference-code-line.is-referenced{background:color-mix(in srgb, var(--accent) 13%, transparent)}.mermaid-reference-highlight .mermaid-reference-code-line.is-referenced:before{border-right:2px solid var(--accent);padding-right:9px}:root[data-theme=dark] .mermaid-reference-highlight .shiki,:root[data-theme=dark] .mermaid-reference-highlight .shiki span{background-color:var(--shiki-dark-bg)!important;color:var(--shiki-dark)!important}.mermaid-reference-peek>footer{border-top:1px solid var(--line);background:var(--panel-2);justify-content:flex-end;padding:10px 12px;display:flex}.mermaid-reference-peek>footer button{font-size:11px}@media (width<=820px){.mermaid-expanded-view.has-rail .mermaid-expanded-workspace{grid-template-columns:minmax(0,1fr);position:relative}.mermaid-rail-resize-handle{display:none}.mermaid-review-rail{z-index:2;width:min(var(--mermaid-review-rail-width,380px), 100%);box-shadow:-12px 0 28px var(--shadow-medium);position:absolute;inset:0 0 0 auto}.mermaid-expanded-toolbar{padding-left:10px}.mermaid-expanded-toolbar>strong{display:none}}@media (prefers-color-scheme:dark){:root[data-theme=system] .mermaid-reference-highlight .shiki,:root[data-theme=system] .mermaid-reference-highlight .shiki span{background-color:var(--shiki-dark-bg)!important;color:var(--shiki-dark)!important}}.comment-reply-composer{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:7px;margin-top:9px;display:grid}.comment-reply-composer textarea{resize:vertical;min-height:34px}.comment-edit-composer textarea{min-height:76px}.comment-edit-composer{gap:7px;margin-top:7px;display:grid}.comment-edit-actions{justify-content:flex-end}.comment-actions{border-top:1px solid var(--line);flex-wrap:wrap;margin-top:9px;padding-top:8px}.comment-actions button{padding:5px 7px}.comment-action-feedback{color:var(--accent);font-size:var(--comment-meta-size)}.comment-action-feedback--header{white-space:nowrap;align-self:center}.comment-more{flex:none;display:inline-flex;position:relative}.comment-more-trigger{width:28px;height:28px;color:var(--muted);font:700 18px/1 var(--mono);background:0 0;border-color:#0000;place-items:center;padding:0 0 7px;display:grid}.comment-more-trigger:hover,.comment-more-trigger[aria-expanded=true]{border-color:var(--line);background:var(--panel-2);color:var(--text)}.comment-more-menu{z-index:30;border:1px solid var(--line-strong);background:var(--panel);min-width:142px;box-shadow:0 7px 18px var(--shadow-large);border-radius:7px;margin:0;padding:4px;display:grid;position:fixed;inset:auto}.comment-more-menu button{color:var(--text);text-align:left;font-size:var(--comment-ui-size);background:0 0;border-color:#0000;justify-content:flex-start;padding:7px 9px}.comment-more-menu button:hover{background:var(--panel-2)}.comment-more-menu button.is-danger{color:var(--danger)}.badge{background:var(--accent-soft);color:var(--accent);font-size:var(--comment-badge-size);border-radius:10px;padding:2px 6px;display:inline-flex}.badge--resolved{background:var(--panel-2);color:var(--muted)}.badge--outdated,.badge--error{background:var(--danger-soft);color:var(--danger)}.empty-state{text-align:center;color:var(--muted);padding:28px 8px;font-size:12px}.fatal-state{align-content:center;place-items:center;min-height:100vh;display:grid}.fatal-state h1{font:800 42px var(--mono);margin:0}.pull-request-list-screen{flex-direction:column;height:100dvh;min-height:0;display:flex;overflow:hidden}.pull-request-list-header{border-bottom:1px solid var(--header-border);background:var(--header-bg);min-height:76px;color:var(--header-text);flex:none;align-items:center;gap:20px;padding:12px max(20px,50vw - 660px);display:flex}.pull-request-list-header h1{margin:0;font-size:18px;line-height:1.25}.pull-request-list-header p{color:var(--header-muted);margin:3px 0 0;font-size:12px}.pull-request-list-content{width:100%;max-width:1360px;min-height:0;margin:0 auto;padding:24px 20px 40px;overflow-y:auto}.pull-request-list-status{color:var(--muted);text-align:center;padding:72px 20px}.pull-request-list-filters{justify-content:flex-end;align-items:center;gap:14px;margin-bottom:10px;display:flex}.pull-request-status-refresh{min-height:30px;padding:4px 10px;font-size:12px}.pull-request-status-refresh-result{border:1px solid color-mix(in srgb, var(--success) 45%, var(--line));background:color-mix(in srgb, var(--success) 8%, var(--panel));color:var(--success);border-radius:6px;margin:0 0 10px;padding:9px 12px;font-size:12px}.pull-request-status-refresh-result--error{border-color:color-mix(in srgb, var(--danger) 45%, var(--line));background:color-mix(in srgb, var(--danger) 8%, var(--panel));color:var(--danger)}.pull-request-status-refresh-result details{margin-top:5px}.pull-request-status-refresh-result ul{margin:5px 0 0;padding-left:20px}.pull-request-list-filter{min-height:30px;color:var(--muted);cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex}.pull-request-list-filter:hover{color:var(--text)}.pull-request-list-filter>input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent);flex:0 0 15px;margin:0;padding:0}.pull-request-list{border:1px solid var(--line);background:var(--panel);box-shadow:0 1px 2px var(--shadow-small);border-radius:10px;overflow:hidden}.pull-request-list-columns,.pull-request-row{grid-template-columns:minmax(180px,1fr) minmax(260px,2fr) minmax(290px,1.5fr) minmax(100px,.6fr) minmax(100px,.6fr);align-items:center;column-gap:18px;display:grid}.pull-request-list-columns{border-bottom:1px solid var(--line);background:var(--panel-2);min-height:34px;color:var(--muted);letter-spacing:.05em;text-transform:uppercase;padding:0 18px;font-size:10px;font-weight:700}.pull-request-row{min-height:76px;color:inherit;padding:12px 18px;text-decoration:none}.pull-request-row+.pull-request-row{border-top:1px solid var(--line)}.pull-request-row:hover{background:var(--accent-soft)}.pull-request-row__identity{align-items:baseline;gap:8px;min-width:0;font-size:12px;display:flex}.pull-request-row__repository{min-width:0;color:var(--muted);font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pull-request-row__number{color:var(--accent);font-family:var(--mono);flex:none;font-weight:700}.pull-request-status{border:1px solid var(--line);background:var(--panel-2);color:var(--muted);font:700 9px/1.4 var(--mono);letter-spacing:.02em;border-radius:999px;flex:none;padding:2px 7px}.pull-request-status--open{border-color:color-mix(in srgb, var(--success) 45%, var(--line));background:color-mix(in srgb, var(--success) 10%, var(--panel));color:var(--success)}.pull-request-status--closed{border-color:color-mix(in srgb, var(--danger) 45%, var(--line));background:color-mix(in srgb, var(--danger) 9%, var(--panel));color:var(--danger)}.pull-request-status--merged{border-color:color-mix(in srgb, var(--done) 45%, var(--line));background:color-mix(in srgb, var(--done) 10%, var(--panel));color:var(--done)}.pull-request-row__title{overflow-wrap:anywhere;white-space:normal;min-width:0;font-size:14px;line-height:1.35}.pull-request-row__counts{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.pull-request-count{border:1px solid var(--line);background:var(--panel-2);min-width:76px;color:var(--muted);font:600 10px/1.4 var(--mono);text-align:center;white-space:nowrap;border-radius:999px;padding:3px 7px}.pull-request-count--unresolved{border-color:color-mix(in srgb, var(--attention) 45%, var(--line));background:color-mix(in srgb, var(--attention) 12%, var(--panel));color:var(--attention)}.pull-request-count--resolved{color:var(--success)}.pull-request-count--walkthrough{color:var(--done)}.pull-request-count--structure{color:var(--info)}.pull-request-row__date{color:var(--muted);gap:3px;font-size:11px;display:grid}.pull-request-row__date>span{display:none}.pull-request-row__date time{white-space:nowrap}.pull-request-row__date--updated time{color:var(--text);font-weight:600}.pull-request-list-empty{border:1px dashed var(--line-strong);background:var(--panel);text-align:center;border-radius:12px;justify-items:center;max-width:680px;margin:64px auto;padding:54px 32px;display:grid}.pull-request-list-empty h2{margin:18px 0 6px;font-size:18px}.pull-request-list-empty p{color:var(--muted);margin:0;font-size:13px}.pull-request-list-empty code{color:var(--text);font-size:inherit}.pull-request-pagination{color:var(--muted);justify-content:center;align-items:center;gap:16px;padding:18px 0 0;font-size:12px;display:flex}.pull-request-pagination .button--quiet{min-width:72px}@media (width<=1050px){.pull-request-list-columns{display:none}.pull-request-row{grid-template-columns:minmax(180px,.8fr) minmax(280px,1.5fr);row-gap:10px}.pull-request-row__counts{grid-column:1/-1}.pull-request-row__date{grid-area:3}.pull-request-row__date>span{display:inline}}@media (width<=640px){.pull-request-list-header{padding-inline:16px}.pull-request-list-content{padding:16px 12px 32px}.pull-request-list-filters{flex-direction:column-reverse;align-items:flex-end;gap:8px}.pull-request-row{grid-template-columns:1fr;padding:14px}.pull-request-row__title,.pull-request-row__counts,.pull-request-row__date{grid-area:auto/1}.pull-request-row__title{white-space:normal}.pull-request-row__counts{flex-wrap:wrap}}@media (prefers-color-scheme:dark){:root:not([data-theme]),:root[data-theme=system]{--bg:#0d1117;--panel:#161b22;--panel-2:#21262d;--line:#30363d;--line-strong:#484f58;--text:#e6edf3;--muted:#8b949e;--accent:#58a6ff;--accent-emphasis:#1f6feb;--accent-soft:#1f2d3d;--accent-contrast:#fff;--tab-accent:#58a6ff;--focus:#58a6ff;--danger:#ff7b72;--danger-soft:#3c1e22;--warning:#332b00;--warning-text:#e3b341;--warning-line:#6e5a1c;--search-match-bg:#7c5c12;--search-match-text:#fff2bd;--success:#3fb950;--attention:#d29922;--done:#d2a8ff;--info:#58a6ff;--file-tree-active-text:#cae8ff;--header-bg:#010409;--header-border:#21262d;--header-text:#f0f6fc;--header-muted:#8b949e;--header-control-bg:#161b22;--header-control-border:#484f58;--header-control-hover:#21262d;--header-active-bg:#f0f6fc;--header-active-text:#1f2328;--header-badge-bg:#1f6feb;--header-badge-text:#fff;--shadow-small:#01040966;--shadow-medium:#01040980;--shadow-large:#010409a3}}@media (width<=850px){.topbar{gap:10px;padding:0 10px}.pr-heading{flex-basis:150px;min-width:120px}.commit-range-trigger{width:34vw;min-width:240px}.workspace{grid-template-columns:min(var(--sidebar-width,280px), 280px) 6px minmax(0, 1fr);overflow:hidden}.walkthrough-markdown{padding-inline:28px}}@media (width<=800px){.pr-heading{display:none}.review-scope-bar{flex:auto}.review-scope-commits{flex:auto;min-width:0}.commit-range-picker{min-width:0}.commit-range-trigger{width:100%;min-width:0}}@media (width<=560px){.brand strong{display:none}.commit-range-trigger{width:100%;min-width:0}.diff-style-modes{width:96px}.workspace{grid-template-columns:min(var(--sidebar-width,280px), 280px) 6px minmax(500px, 1fr);overflow:auto hidden}.main-view.two-pane{min-width:566px;overflow-x:hidden}.review-scope-bar .segmented button,.review-scope-display .segmented button,.diff-style-modes button{min-width:44px;padding-inline:5px}}.review-tree-structure-list,.review-tree-walkthrough-list{display:grid}.review-tree-structure-list .review-tree-item,.review-tree-walkthrough-list .review-tree-item{padding-left:28px}.review-tree-structure-icon{color:var(--done)}.structure-viewer{min-width:0;height:calc(100% - 40px);min-height:0;color:var(--text);background:radial-gradient(circle at 14% 2%, color-mix(in srgb, var(--attention) 9%, transparent), transparent 32rem), var(--bg);flex-direction:column;display:flex;position:relative;overflow:hidden;container-type:inline-size}.structure-header{z-index:12;border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--panel) 92%, transparent);flex:none;align-items:center;gap:8px;min-height:40px;padding:5px 8px 5px 12px;display:flex;position:relative}.structure-header-main{flex:auto;align-items:center;gap:7px;min-width:0;display:flex}.structure-header h2{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:15px;line-height:1.25;overflow:hidden}.structure-kicker{color:var(--muted);font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;flex:none;font-size:9px}.structure-source-oid{border:1px solid var(--line);color:var(--muted);background:var(--bg);font:8px/1.2 var(--mono);border-radius:4px;flex:none;padding:2px 5px}.structure-scope-details{flex:none;position:static}.structure-scope-details[open]{z-index:14}.structure-scope-details>summary{border:1px solid var(--line);color:var(--muted);background:var(--bg);font:9px/1.35 var(--mono);cursor:pointer;border-radius:999px;padding:2px 6px;list-style:none}.structure-scope-details>summary::-webkit-details-marker{display:none}.structure-scope-details[open]>summary,.structure-scope-details>summary:hover{border-color:var(--line-strong);color:var(--text)}.structure-scope-details>p{z-index:15;border:1px solid var(--line-strong);width:min(560px,100% - 24px);max-height:180px;color:var(--muted);background:var(--panel);box-shadow:0 10px 24px var(--shadow-large);white-space:pre-wrap;border-radius:8px;margin:0;padding:10px 11px;font-size:11px;line-height:1.45;position:absolute;top:calc(100% + 8px);right:12px;overflow:auto}.structure-header-side{flex:none;justify-content:flex-end;align-items:center;gap:4px;min-width:0;display:flex}.structure-delete,.structure-header-action,.structure-toolbar button,.structure-expand-relations{border:1px solid var(--line);min-height:26px;color:var(--text);background:var(--panel);cursor:pointer;border-radius:6px;font-size:11px}.structure-delete,.structure-header-action{white-space:nowrap;flex:none;padding:3px 7px}.structure-delete:hover,.structure-header-action:hover,.structure-toolbar button:hover,.structure-expand-relations:hover{border-color:var(--line-strong);background:var(--panel-2)}.structure-delete.danger{color:var(--danger)}.structure-delete:disabled{opacity:.6;cursor:wait}.structure-body{flex:auto;grid-template-columns:minmax(0,1fr);min-height:0;display:grid;position:relative;overflow:hidden}.structure-canvas-shell{border-right:1px solid var(--line);background-color:var(--bg);background-image:linear-gradient(color-mix(in srgb, var(--line) 36%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--line) 36%, transparent) 1px, transparent 1px);background-size:24px 24px;min-width:0;min-height:0;position:relative;overflow:hidden}.structure-toolbar{z-index:10;border:1px solid var(--line-strong);background:color-mix(in srgb, var(--panel-2) 94%, transparent);width:max-content;max-width:calc(100% - 16px);min-height:34px;box-shadow:0 5px 16px var(--shadow-medium);scrollbar-width:thin;border-radius:8px;align-items:center;gap:6px;padding:3px 4px;display:flex;position:absolute;top:8px;left:8px;overflow-x:auto}.structure-toolbar-group{flex:none;align-items:center;gap:3px;display:flex}.structure-toolbar-group>span{color:var(--muted);white-space:nowrap;padding:0 3px;font-size:10px}.structure-toolbar button{white-space:nowrap;min-height:26px;padding:3px 6px}.structure-toolbar button.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.structure-status{z-index:11;border:1px solid var(--warning-line);max-width:min(560px,100% - 20px);color:var(--warning-text);background:var(--warning);box-shadow:0 5px 16px var(--shadow-medium);border-radius:6px;padding:6px 9px;font-size:11px;position:absolute;bottom:10px;left:10px}.structure-canvas{overscroll-behavior:contain;cursor:grab;touch-action:none;width:100%;height:100%;min-height:360px;position:relative;overflow:hidden}.structure-canvas:active{cursor:grabbing}.structure-world{transform-origin:0 0;position:absolute;top:0;left:0}.structure-edges{pointer-events:none;position:absolute;inset:0;overflow:visible}.structure-edges marker path{fill:context-stroke}.structure-edge{--structure-edge-theme:color-mix(in srgb, var(--muted) 52%, var(--line));--structure-edge-active:var(--accent);fill:none;stroke:var(--structure-edge-theme);stroke-width:1.4px;opacity:.46;vector-effect:non-scaling-stroke}.structure-edge[data-source-change-kind=added]{--structure-edge-theme:var(--success);--structure-edge-active:var(--success);opacity:.7}.structure-edge[data-source-change-kind=modified]{--structure-edge-theme:var(--attention);--structure-edge-active:var(--attention);opacity:.7}.structure-edge[data-source-change-kind=deleted]{--structure-edge-theme:var(--danger);--structure-edge-active:var(--danger);opacity:.7}.structure-edge[data-source-change-kind=renamed]{--structure-edge-theme:var(--done);--structure-edge-active:var(--done);opacity:.7}.structure-edge[data-source-change-kind=type-changed]{--structure-edge-theme:var(--info);--structure-edge-active:var(--info);opacity:.7}.structure-edge[data-source-change-kind=mixed]{--structure-edge-theme:var(--attention);--structure-edge-active:var(--attention);opacity:.7}.structure-edge.focused{stroke:var(--structure-edge-active);stroke-width:2.4px;opacity:.88}.structure-edge.selected{stroke:var(--structure-edge-active);stroke-width:3.2px;opacity:1}.structure-edge.muted{opacity:.14}.structure-node{z-index:2;box-sizing:border-box;--structure-node-theme:var(--accent);--structure-node-outline:var(--line-strong);--structure-node-active-outline:var(--structure-node-theme);cursor:grab;-webkit-user-select:none;user-select:none;contain:layout paint style;border-radius:9px;width:228px;height:112px;position:absolute}.structure-node[data-source-change-kind=added]{--structure-node-theme:var(--success);--structure-node-outline:color-mix(in srgb, var(--success) 54%, var(--line-strong))}.structure-node[data-source-change-kind=modified]{--structure-node-theme:var(--attention);--structure-node-outline:color-mix(in srgb, var(--attention) 54%, var(--line-strong))}.structure-node[data-source-change-kind=deleted]{--structure-node-theme:var(--danger);--structure-node-outline:color-mix(in srgb, var(--danger) 54%, var(--line-strong))}.structure-node[data-source-change-kind=renamed]{--structure-node-theme:var(--done);--structure-node-outline:color-mix(in srgb, var(--done) 54%, var(--line-strong))}.structure-node[data-source-change-kind=type-changed]{--structure-node-theme:var(--info);--structure-node-outline:color-mix(in srgb, var(--info) 54%, var(--line-strong))}.structure-node-focus{overscroll-behavior:contain;border:1px solid var(--structure-node-outline);width:100%;height:100%;color:inherit;background:var(--panel);font:inherit;text-align:left;cursor:grab;box-shadow:0 5px 12px var(--shadow-small);touch-action:pan-y;scrollbar-width:thin;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 8px;display:flex;overflow:auto}.structure-node-focus:focus-visible{outline:2px solid var(--focus);outline-offset:-3px}.structure-node:hover .structure-node-focus,.structure-node.neighboring .structure-node-focus{border-color:var(--structure-node-active-outline)}.structure-node.focused .structure-node-focus{border:2px solid var(--structure-node-active-outline);background:color-mix(in srgb, var(--structure-node-theme) 9%, var(--panel));box-shadow:0 0 0 3px color-mix(in srgb, var(--structure-node-theme) 14%, transparent)}.structure-node.edge-endpoint .structure-node-focus{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 20%, transparent)}.structure-node.notation-class .structure-node-focus,.structure-node.notation-interface .structure-node-focus{border-radius:2px}.structure-node.notation-class .structure-node-description,.structure-node.notation-interface .structure-node-description{border-top:1px solid var(--structure-node-outline);width:100%;padding-top:3px}.structure-node.notation-interface .structure-node-focus{border-style:dashed}.structure-node.notation-database .structure-node-focus{border-radius:50%/14%;padding:21px 10px 6px}.structure-node.notation-database>.structure-source.compact{top:8px;right:8px}.structure-node.notation-database .structure-node-focus>.structure-source-identity{min-height:14px}.structure-node.notation-database:before{z-index:3;border-bottom:1px solid var(--structure-node-outline);content:"";pointer-events:none;border-radius:50%;height:20px;position:absolute;top:1px;left:1px;right:1px}.structure-node.notation-database.focused:before,.structure-node.notation-database.neighboring:before{border-bottom-color:var(--structure-node-active-outline)}.structure-node.notation-component .structure-node-focus{box-shadow:inset 7px 0 color-mix(in srgb, var(--structure-node-theme) 18%, transparent), 0 5px 12px var(--shadow-small);border-radius:3px;padding-left:22px}.structure-node.notation-component:before,.structure-node.notation-component:after{z-index:3;border:1px solid var(--structure-node-outline);background:var(--panel);content:"";pointer-events:none;width:13px;height:8px;position:absolute;left:2px}.structure-node.notation-component:before{top:36px}.structure-node.notation-component:after{top:52px}.structure-node.notation-external{background:var(--structure-node-outline);clip-path:polygon(9% 0,91% 0,100% 50%,91% 100%,9% 100%,0 50%);padding:2px}.structure-node.notation-external .structure-node-focus{clip-path:polygon(9% 0,91% 0,100% 50%,91% 100%,9% 100%,0 50%);box-shadow:none;border:0;border-radius:0;padding:6px 18px}.structure-node.notation-external>.structure-source.compact{top:8px;right:18px}.structure-node.notation-external.focused,.structure-node.notation-external.neighboring{background:var(--structure-node-active-outline)}.structure-node.notation-concept,.structure-node.notation-concept .structure-node-focus{border-radius:56px}.structure-node.notation-concept .structure-node-focus{padding:12px 24px 6px}.structure-node.notation-concept>.structure-source.compact{top:12px;right:24px}.structure-node.origin .structure-node-focus{box-shadow:inset 4px 0 color-mix(in srgb, var(--accent) 72%, transparent), 0 5px 12px var(--shadow-small)}.structure-node.origin.focused .structure-node-focus{box-shadow:inset 4px 0 color-mix(in srgb, var(--accent) 84%, transparent), 0 0 0 3px color-mix(in srgb, var(--structure-node-theme) 14%, transparent)}.structure-node-title{width:100%;min-width:0;display:block}.structure-node-title-text{min-width:0;font-family:var(--mono);overflow-wrap:anywhere;word-break:break-word;font-size:11px;font-weight:700;line-height:1.32;display:block;overflow:visible}.structure-node-description{width:100%;min-width:0;color:var(--muted);text-align:left;white-space:pre-wrap;font-size:9px;line-height:1.42;display:block;overflow:visible}.structure-source{border:1px solid var(--line);max-width:100%;min-height:26px;color:var(--accent);background:var(--panel);font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border-radius:5px;align-items:center;gap:5px;padding:3px 7px;font-size:9px;display:inline-flex;overflow:hidden}.structure-source:hover{border-color:var(--accent)}.structure-source.compact{z-index:3;border-radius:7px;place-items:center;width:28px;height:24px;min-height:0;padding:0;font-size:8px;display:grid;position:absolute;top:6px;right:6px}.structure-edge-label{z-index:1;--structure-edge-label-active-outline:var(--accent);align-items:center;gap:3px;display:flex;position:absolute;transform:translate(-50%,-50%)}.structure-edge-label:has(.structure-edge-sources[open]){z-index:8}.structure-edge-label[data-source-change-kind=added]{--structure-edge-label-active-outline:var(--success)}.structure-edge-label[data-source-change-kind=modified]{--structure-edge-label-active-outline:var(--attention)}.structure-edge-label[data-source-change-kind=deleted]{--structure-edge-label-active-outline:var(--danger)}.structure-edge-label[data-source-change-kind=renamed]{--structure-edge-label-active-outline:var(--done)}.structure-edge-label[data-source-change-kind=type-changed]{--structure-edge-label-active-outline:var(--info)}.structure-edge-label[data-source-change-kind=mixed]{--structure-edge-label-active-outline:var(--attention)}.structure-edge-select{border:1px solid var(--structure-edge-label-active-outline);color:var(--structure-edge-label-active-outline);background:color-mix(in srgb, var(--panel) 92%, transparent);box-shadow:0 2px 5px var(--shadow-small);overflow-wrap:anywhere;text-align:left;white-space:normal;border-radius:999px;flex:none;align-items:center;gap:3px;padding:3px 3px 3px 8px;font-size:10px;line-height:1.35;display:flex}.structure-edge-select.selected{background:color-mix(in srgb, var(--accent) 14%, var(--panel));box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent)}.structure-edge-label-text{flex:auto;min-width:0}.structure-edge-label.crowded .structure-edge-select{border-style:dashed}.structure-edge-label.muted{opacity:.28}.structure-edge-label .structure-source.compact{background:var(--panel);border-radius:50%;width:26px;height:26px;position:static}.structure-edge-sources{flex:none;position:relative}.structure-edge-sources[open]{z-index:6}.structure-edge-sources>summary{list-style:none;position:relative}.structure-edge-sources>summary::-webkit-details-marker{display:none}.structure-edge-source-count{border:1px solid var(--panel);min-width:13px;height:13px;color:var(--panel);background:var(--accent);font-family:var(--mono);border-radius:999px;place-items:center;padding:0 2px;font-size:7px;line-height:1;display:grid;position:absolute;bottom:-4px;right:-4px}.structure-edge-source-menu{z-index:7;border:1px solid var(--line-strong);background:var(--panel);width:min(300px,42vw);max-height:180px;box-shadow:0 10px 24px var(--shadow-large);border-radius:7px;gap:5px;padding:7px;display:grid;position:absolute;top:calc(100% + 5px);right:0;overflow:auto}.structure-edge-source-menu .structure-source{width:100%}.structure-source-identity{flex:none;align-items:center;gap:2px;display:inline-flex}.structure-source-identity>.tree-entry-icon{flex-basis:14px;width:14px;height:14px}.structure-source-name{max-width:116px;color:var(--muted);font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:600;line-height:1.2;display:block;overflow:hidden}.structure-node-focus>.structure-source-identity{align-items:flex-end;width:calc(100% - 30px);min-width:0;max-width:none;min-height:24px}.structure-node-focus>.structure-source-identity .structure-source-name{flex:auto;min-width:0;max-width:none}.structure-source-identity>.file-change-icon,.structure-source-identity>.file-change-icon svg{width:12px;height:12px}.structure-source-count,.structure-source-change-aggregate{min-width:17px;height:14px;color:var(--muted);background:var(--bg-subtle);font-family:var(--mono);border-radius:999px;place-items:center;padding:0 3px;font-size:8px;font-weight:700;line-height:1;display:inline-grid}.structure-source-change-aggregate{color:var(--attention)}.structure-canvas-status{z-index:4;border:1px solid color-mix(in srgb, var(--line) 72%, transparent);max-width:min(320px,100% - 220px);color:var(--muted);background:color-mix(in srgb, var(--panel) 88%, transparent);box-shadow:0 2px 7px var(--shadow-small);font-family:var(--mono);pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:7px;gap:2px;padding:6px 8px;font-size:9px;line-height:1.35;display:grid;position:absolute;top:50px;left:10px}.structure-canvas-status strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.structure-minimap{z-index:4;border:1px solid color-mix(in srgb, var(--line-strong) 74%, transparent);background:color-mix(in srgb, var(--panel) 88%, transparent);width:164px;height:98px;box-shadow:0 3px 9px var(--shadow-small);pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:7px;position:absolute;bottom:10px;right:10px;overflow:hidden}.structure-minimap circle{fill:color-mix(in srgb, var(--muted) 64%, var(--line))}.structure-minimap circle.focused{fill:var(--accent)}.structure-minimap-viewport{fill:color-mix(in srgb, var(--accent) 10%, transparent);stroke:color-mix(in srgb, var(--accent) 72%, transparent);stroke-width:1px;vector-effect:non-scaling-stroke}@container (width<=760px){.structure-canvas{min-height:0}}
@@ -5,13 +5,14 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <meta name="color-scheme" content="light dark" />
7
7
  <title>rvw</title>
8
- <script type="module" crossorigin src="/assets/index-BwIKbLJ1.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-CWOtOTHG.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-hePW80VL.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/FileIcon-AhP8Ezk9.js">
10
11
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
11
- <link rel="modulepreload" crossorigin href="/assets/MermaidSurface-Dt2_Hu6n.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/MermaidSurface-B2Z3pJme.js">
12
13
  <link rel="modulepreload" crossorigin href="/assets/ccount-DFmD81E1.js">
13
- <link rel="modulepreload" crossorigin href="/assets/CommentThread-CMXtuZ98.js">
14
- <link rel="stylesheet" crossorigin href="/assets/index-BNcvGFlf.css">
14
+ <link rel="modulepreload" crossorigin href="/assets/CommentThread-dsad9VaW.js">
15
+ <link rel="stylesheet" crossorigin href="/assets/index-D_e3Zku8.css">
15
16
  </head>
16
17
  <body>
17
18
  <div id="root"></div>
@@ -0,0 +1,13 @@
1
+ CREATE TABLE structures (
2
+ id TEXT PRIMARY KEY,
3
+ pull_request_id TEXT NOT NULL REFERENCES pull_requests(id) ON DELETE CASCADE,
4
+ source_oid TEXT NOT NULL,
5
+ title TEXT NOT NULL CHECK(length(title) > 0),
6
+ scope TEXT NOT NULL CHECK(length(scope) > 0),
7
+ graph_json TEXT NOT NULL,
8
+ created_at TEXT NOT NULL,
9
+ updated_at TEXT NOT NULL
10
+ );
11
+
12
+ CREATE INDEX structures_pull_request_created
13
+ ON structures(pull_request_id, created_at DESC, id DESC);
@@ -0,0 +1,6 @@
1
+ CREATE TABLE structure_publish_idempotency (
2
+ key_hash TEXT PRIMARY KEY,
3
+ request_hash TEXT NOT NULL,
4
+ structure_id TEXT NOT NULL,
5
+ created_at TEXT NOT NULL
6
+ );
@@ -0,0 +1,13 @@
1
+ CREATE TABLE structure_retired_node_ids (
2
+ structure_id TEXT NOT NULL REFERENCES structures(id) ON DELETE CASCADE,
3
+ node_id TEXT NOT NULL,
4
+ retired_at TEXT NOT NULL,
5
+ PRIMARY KEY(structure_id, node_id)
6
+ );
7
+
8
+ CREATE TABLE structure_retired_edge_ids (
9
+ structure_id TEXT NOT NULL REFERENCES structures(id) ON DELETE CASCADE,
10
+ edge_id TEXT NOT NULL,
11
+ retired_at TEXT NOT NULL,
12
+ PRIMARY KEY(structure_id, edge_id)
13
+ );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a9n-shoji/rvw",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
4
4
  "description": "Human-centered repository viewer for understanding and refining GitHub pull request changes",
5
5
  "keywords": [
6
6
  "code-review",
@@ -0,0 +1,152 @@
1
+ ---
2
+ name: rvw-structure
3
+ description: Read, publish, replace in place, or explicitly delete a source-anchored relationship map through the local rvw CLI. Use when a reviewer needs to inspect the dependencies and side effects around a bounded PR-relevant behavior from a factual code entrypoint. Use rvw-walkthrough when the explanation is primarily an ordered path, and do not create a Structure for a generic static architecture or responsibility inventory.
4
+ ---
5
+
6
+ # rvw Structure management
7
+
8
+ Create a review space that lets a human inspect one bounded PR-relevant behavior from a factual code
9
+ entrypoint through the responsibilities, dependencies, contracts, and side effects needed to verify
10
+ it. A Structure is a space; a Walkthrough is a path. If the clearest explanation has a required reading
11
+ order, beginning, and end, stop and recommend `rvw-walkthrough` instead. If there is no defensible
12
+ entrypoint and the result would be a generic static architecture, subsystem catalog, or responsibility
13
+ inventory, do not publish a Structure.
14
+
15
+ The request may begin with a behavior or with a selected file, symbol, or changed source. For a
16
+ source-led request, first identify the concrete PR-relevant behavior in which that source participates,
17
+ then find its factual origin and map only that behavior. If the source participates in independently
18
+ triggered behaviors, publish separate Structures rather than joining them into a static source map.
19
+
20
+ Follow explicit subject, scope, inclusion, exclusion, and emphasis instructions from the user, caller,
21
+ Pull Request body, or upstream Skill. Fill only their gaps with verified committed code and tests. Do
22
+ not infer product intent, invent architectural semantics, or turn related files into an exhaustive map.
23
+
24
+ Use only the `rvw` CLI protocol. Never access SQLite directly, control the viewer, open a Structure,
25
+ select a node, or claim that publication changed rvw navigation.
26
+
27
+ ## Preflight
28
+
29
+ 1. Run `rvw protocol --json` and parse stdout as JSON.
30
+ 2. Require `protocolVersion` 4, `agent.transport`, `structure.read`, `structure.list`, and every one of
31
+ `structure.publish`, `structure.update`, or `structure.delete` needed for the task.
32
+ 3. Run `rvw agent status --json`. If `selectedTransport` is `unavailable`, stop and report its
33
+ diagnostic. Otherwise use the reported transport without overriding it.
34
+ 4. Require local access to the saved repository and an exact committed source OID containing every
35
+ anchor. Never publish anchors into uncommitted code.
36
+
37
+ ## Read before replacing
38
+
39
+ For an existing Structure, run:
40
+
41
+ ```bash
42
+ rvw structure get '<STRUCTURE_URI>' --json
43
+ ```
44
+
45
+ Read the complete current subject, source OID, nodes, edges, anchors, and Pull Request repository
46
+ location. Keep its exact `updatedAt` for any update or authorized delete. A Structure has one current
47
+ value and no local revision history.
48
+
49
+ When a publish result was not received, recover stable references with:
50
+
51
+ ```bash
52
+ rvw structure list '<PULL_REQUEST>' --json
53
+ ```
54
+
55
+ ## Author the relationship map
56
+
57
+ When authoring or materially revising a Structure, read
58
+ [the Structure authoring contract](references/structure-authoring.md). It defines subject and scope
59
+ selection, stable identities, claims, anchors, relation labels, update boundaries, and the internal
60
+ completion check.
61
+
62
+ Prepare one complete JSON value. `sourceOid` is the single coordinate for all node and edge anchors.
63
+ Each node may have zero or one `anchor`; each edge may have zero or more `anchors`. For any anchor,
64
+ provide both positive inclusive `startLine` and `endLine`, or omit both. Use repository-relative paths.
65
+ `originNodeId` is required, its Node must have a source anchor, and every Node must be reachable from it
66
+ when relation direction is ignored. The complete Structure contains no more than 400 source anchors.
67
+
68
+ Every `--stdin` command reads until EOF. Supply the entire object and close stdin in the same
69
+ non-interactive invocation; do not start an interactive PTY and send only JSON plus a newline.
70
+
71
+ ## Publish
72
+
73
+ ```bash
74
+ rvw structure publish --stdin --json <<'RVW_JSON'
75
+ {
76
+ "idempotencyKey": "task-stable-key-for-this-structure-publication",
77
+ "pullRequest": "https://github.com/owner/repo/pull/123",
78
+ "sourceOid": "0123456789abcdef0123456789abcdef01234567",
79
+ "title": "Request policy boundary",
80
+ "scope": "The committed request policy and the code contracts it directly depends on; transport setup and UI callers are excluded.",
81
+ "originNodeId": "request-policy",
82
+ "nodes": [
83
+ {
84
+ "id": "request-policy",
85
+ "label": "RequestPolicy",
86
+ "description": "Owns the allow/deny decision.",
87
+ "notation": "class",
88
+ "anchor": { "path": "src/request-policy.ts", "startLine": 8, "endLine": 34 }
89
+ },
90
+ {
91
+ "id": "policy-input",
92
+ "label": "PolicyInput",
93
+ "description": "Committed input contract consumed by RequestPolicy.",
94
+ "notation": "interface",
95
+ "anchor": { "path": "src/types.ts", "startLine": 3, "endLine": 12 }
96
+ }
97
+ ],
98
+ "edges": [
99
+ {
100
+ "id": "request-policy-consumes-policy-input",
101
+ "from": "request-policy",
102
+ "to": "policy-input",
103
+ "label": "consumes",
104
+ "directed": true,
105
+ "anchors": [{ "path": "src/request-policy.ts", "startLine": 10, "endLine": 15 }]
106
+ }
107
+ ]
108
+ }
109
+ RVW_JSON
110
+ ```
111
+
112
+ Let the CLI reject invalid commits, paths, ranges, identities, endpoints, origin, connectivity, size, or ownership;
113
+ never silently remove rejected graph elements. Parse the success response and report the returned
114
+ `rvw://structure/<uuid>` reference. Generate one key for the logical publication and retain it until
115
+ the result is known. After a timeout or connection loss, retry only the identical payload with that
116
+ same key; the retry returns the original Structure. Never reuse the key for changed content.
117
+ Publication is passive.
118
+
119
+ ## Replace the current value
120
+
121
+ Use an in-place update only when the requested subject identity remains the same. Preserve IDs for
122
+ surviving nodes and edges even when their labels or anchors change, never recycle removed IDs for new
123
+ claims, and send the complete replacement value. rvw records retired IDs and rejects their
124
+ reintroduction even when the current value no longer contains them:
125
+
126
+ ```bash
127
+ rvw structure update '<STRUCTURE_URI>' --stdin --json
128
+ ```
129
+
130
+ The JSON contains the `expectedUpdatedAt` read from the current Structure plus `sourceOid`, `title`,
131
+ `scope`, `originNodeId`, `nodes`, and `edges`; it does not contain `pullRequest`. If a conflict reports
132
+ that the current value changed, read it again and reconcile instead of retrying the stale replacement.
133
+ If the subject itself changed, publish a new Structure rather than rewriting the old identity. Updating
134
+ is passive and retains no previous Structure value.
135
+
136
+ ## Delete only with explicit authorization
137
+
138
+ First inspect the exact deletion preview:
139
+
140
+ ```bash
141
+ rvw structure delete '<STRUCTURE_URI>' --json
142
+ ```
143
+
144
+ Only after the user explicitly authorizes deleting that exact Structure after reviewing the reported
145
+ node, edge, and source-anchor counts, run:
146
+
147
+ ```bash
148
+ rvw structure delete '<STRUCTURE_URI>' --yes --expected-updated-at '<PREVIEW_UPDATED_AT>' --json
149
+ ```
150
+
151
+ Never infer deletion permission from a request to revise, replace, or republish. Retained commit refs
152
+ may be shared by other review state and remain managed by `rvw pr reset`.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "rvw Structure"
3
+ short_description: "Map a behavior from its origin or selected source"
4
+ default_prompt: "Use $rvw-structure to publish a bounded source-anchored behavior map in rvw."
@@ -0,0 +1,144 @@
1
+ # Structure authoring contract
2
+
3
+ Use this contract when creating a Structure or materially replacing its current value. It supplies
4
+ defaults only where explicit instructions are silent.
5
+
6
+ ## Establish subject authority
7
+
8
+ Apply inputs in this order:
9
+
10
+ 1. Explicit directions from the user, caller, Pull Request body, or upstream Skill define the subject,
11
+ scope, inclusions, exclusions, and emphasis.
12
+ 2. Verified committed code, tests, documentation, and Pull Request context fill gaps.
13
+ 3. Put hypotheses, uncertain connections, and relations that are not directly established by source or
14
+ explicit authority in the Agent's normal response, not in the Structure.
15
+
16
+ Do not substitute a broader architecture tour for a bounded subject. A useful subject states one
17
+ PR-relevant behavior and the code entrypoint from which a reviewer can begin verifying it. A useful
18
+ scope says which direct responsibilities, dependencies, contracts, and side effects are needed to
19
+ understand that behavior and what it deliberately excludes. A data model, subsystem, or responsibility
20
+ belongs only when it clarifies that behavior; a static inventory of them is not a Structure subject.
21
+
22
+ If the request starts from a file, symbol, module, or changed source rather than a named behavior, use
23
+ that source only as the discovery entry. Identify the concrete PR-relevant behavior it participates in,
24
+ then locate that behavior's factual origin. A source that participates in multiple independently
25
+ triggered behaviors yields separate Structures; it does not justify a combined module inventory.
26
+
27
+ Before authoring, test the requested shape: if the explanation becomes clearer only when its elements
28
+ are arranged as step 1, then step 2, then step 3, the subject is a path. Stop and recommend a
29
+ Walkthrough. A Structure may contain directed relationships, but direction is not a reading order. If
30
+ the subject has no factual code entrypoint and is useful only as a timeless architecture diagram, stop
31
+ without publishing a Structure.
32
+
33
+ ## Select nodes as claims
34
+
35
+ Each node is a producer claim that a particular code-centered concept belongs in this subject. Prefer
36
+ symbols, modules, boundaries, contracts, persisted models, or small cohesive subsystems that a reviewer
37
+ can verify in committed code.
38
+
39
+ - Keep one level of abstraction around the stated subject. Split a node when its label joins multiple
40
+ independent responsibilities; merge nodes that only reproduce neighboring source lines.
41
+ - Use concept nodes without anchors only when the concept is explicitly established by the authority
42
+ inputs or is needed to connect anchored code claims. Do not use unanchored concepts to invent
43
+ product semantics.
44
+ - `description` states the claim and its role in this subject. It is not a review finding, approval,
45
+ recommendation, or generated summary of the whole file.
46
+ - Keep the `label` and `description` short enough that a reviewer can grasp the node's main claim at
47
+ normal zoom. In-node scrolling preserves exceptional detail; it is a fallback, not a reason to make
48
+ long prose the normal authoring shape.
49
+ - `kind` is a deprecated compatibility field that the viewer does not display. Do not set it in new
50
+ Structures.
51
+ - `notation` is an optional controlled scanning aid: `plain`, `class`, `database`, `interface`,
52
+ `component`, `external`, or `concept`. Choose it only when the familiar visual pattern helps a reviewer
53
+ distinguish the claim. Do not infer it mechanically from legacy `kind`; omit it for the default
54
+ `plain` card.
55
+ - Prefer the smallest meaningful multi-line anchor that verifies the node claim. Use a file anchor only
56
+ for genuinely file-wide responsibility and a single-line range only for a line-local declaration.
57
+
58
+ Do not create giant graphs, file inventories, one node per function, inferred runtime call graphs,
59
+ dependency graphs obtained only from import syntax, or concept-only diagrams detached from code.
60
+ When following the current behavior reaches another independently triggered behavior with its own
61
+ origin, stop and author that behavior as a separate Structure if it is review-relevant. Do not keep
62
+ expanding merely because more static responsibilities are connected.
63
+
64
+ ## State relationships precisely
65
+
66
+ Each edge is a producer claim about how two nodes relate in this subject.
67
+
68
+ - Use a short verb or verb phrase: `calls`, `constructs`, `validates`, `persists`, `loads`, `implements`,
69
+ `emits`, `renders`, or another fact supported by the source. Avoid vague labels such as `related to`,
70
+ `part of`, `connects`, or unlabeled arrows.
71
+ - Write the predicate so the claim reads naturally from the `from` Node as its actor or source to the
72
+ `to` Node as its target. Choose the factual relationship that best explains the declared behavior,
73
+ not an inverse or passive restatement chosen to move either endpoint on the canvas.
74
+ - Set `directed: true` only when `from` to `to` expresses a real direction in the claim. Do not use
75
+ direction to force a visual reading order. The viewer may use that factual direction as one input to
76
+ its behavior-map projection; never reverse endpoints or choose active/passive wording to manipulate
77
+ placement.
78
+ - Add zero or more anchors that directly establish the relationship. Use multiple anchors when the
79
+ relationship is intentionally established at several distinct code sites. An edge without anchors is
80
+ acceptable only when the relationship follows directly from its anchored endpoints or explicit
81
+ subject authority.
82
+ - Preserve the relative order of surviving anchors on the same Edge across an update. The viewer uses
83
+ the stable Edge ID plus anchor index to keep an open source action attached to its claim; replace an
84
+ anchor in place instead of reordering unchanged entries.
85
+ - Do not publish a hypothesized or uncertain relation. Explain it separately in the Agent response so
86
+ the map never presents an inference as a source-established fact.
87
+ - Do not encode confidence, severity, inferred risk, reviewer approval, hidden groups, or presentation
88
+ instructions in IDs, labels, kinds, or descriptions.
89
+
90
+ ## Maintain stable identity
91
+
92
+ IDs identify claims across whole-value replacements; labels are presentation.
93
+
94
+ - Choose concise semantic IDs matching `^[A-Za-z][A-Za-z0-9_-]{0,63}$` at first publication. They need
95
+ not match a symbol exactly.
96
+ - Preserve an ID when the same claim survives an update, even if its label, description, kind, notation, anchor,
97
+ or endpoint details change.
98
+ - Assign a new ID for a genuinely new claim. Never recycle an ID removed from this Structure for a
99
+ different node or edge. rvw retains retired Node and Edge IDs as tombstones and rejects their
100
+ reintroduction without retaining prior graph values.
101
+ - Give every edge its own stable ID, including parallel edges between the same endpoints.
102
+ - Use `originNodeId` for the subject's factual code entrypoint. The entrypoint is the place a reviewer
103
+ starts verifying the declared behavior: for example an HTTP route, public API, command handler,
104
+ worker trigger, event subscriber, composition call, or migration execution point. It is not required
105
+ to be an HTTP/runtime boundary, but it must be an existing Node with its own exact source anchor. It
106
+ is not persisted viewer state or a claim of architectural importance.
107
+ - Ensure every Node is reachable from the origin when direction, parallel multiplicity, and self-loops
108
+ are ignored. A disconnected component is a different subject or an unsupported inventory, not a
109
+ second island in the same Structure.
110
+
111
+ Use an in-place update only while the declared subject identity is unchanged. A different subject,
112
+ even inside the same Pull Request, requires a new publication.
113
+
114
+ ## Inspect enough, then stop
115
+
116
+ Inspect the central implementation, direct contracts and consumers needed to verify the chosen
117
+ relationships, and representative tests when they establish important behavior. Explore beyond the
118
+ diff when the subject requires it, but stop when another branch does not clarify the declared scope.
119
+
120
+ All anchors share one exact `sourceOid`. Confirm every path exists as UTF-8 text at that commit and
121
+ every inclusive range is within its line count. Do not anchor generated descriptions to approximate,
122
+ latest-head, or working-tree locations.
123
+
124
+ ## Check before publication
125
+
126
+ Use this checklist internally; do not reproduce it as the Structure description.
127
+
128
+ - [ ] The declared subject is bounded and is better represented as a space than an ordered path.
129
+ - [ ] Explicit authority controls the requested scope; verified facts fill only its gaps.
130
+ - [ ] Each node is one useful, code-centered claim at a consistent granularity.
131
+ - [ ] Each node's main claim is quickly understandable at normal zoom without relying on scrolling.
132
+ - [ ] Concept-only nodes are necessary and do not invent semantics.
133
+ - [ ] Every edge label states a precise relationship and direction is factual.
134
+ - [ ] IDs are unique, semantic, and stable across updates; removed IDs are not recycled.
135
+ - [ ] `originNodeId` names the existing source-established Node where review of this behavior starts.
136
+ - [ ] The origin Node has an exact source anchor and every Node is connected to it by declared relations.
137
+ - [ ] Every edge endpoint exists and parallel relationships have distinct IDs.
138
+ - [ ] Every path and range is exact at the single committed `sourceOid`.
139
+ - [ ] The graph contains at least one source anchor and no more than 400 across all nodes and edges.
140
+ - [ ] The map contains no hidden review conclusion, presentation layout, inferred confidence, or
141
+ exhaustive-completeness claim.
142
+ - [ ] The graph is small enough that a reviewer can explore it as a coherent subject.
143
+ - [ ] The graph has no more than 50 nodes and 200 edges; a denser subject has been split rather than
144
+ relying on the viewer to hide relations.
@@ -7,6 +7,11 @@ description: Read, publish, improve in place, or explicitly delete a source-anch
7
7
 
8
8
  Create a first reading path that helps a reviewer build a mental model of a committed change or requested implementation subject and continue into the code. Treat the Walkthrough as orientation, not as the code's source of truth, an exhaustive change log, a completed AI review, a review-scope guarantee, or an approval plan.
9
9
 
10
+ When the requested output is a navigable map of responsibilities and relations participating in one
11
+ concrete behavior or processing flow, route the task to `rvw-structure` instead. A request that starts
12
+ from a file or symbol still belongs there when it asks which concrete behavior that source participates
13
+ in rather than for an authored reading sequence.
14
+
10
15
  Follow explicit instructions from the user, caller, Pull Request body, or an upstream Skill before any default in this Skill. Instructions may set the reading order, focus, format, detail, scope, exclusions, assumed knowledge, design decisions to explain, or non-code evidence to include. Apply the default authoring guide only where those instructions are silent. Add only the minimum context needed to keep the requested Walkthrough understandable; never replace the requested purpose with a different one.
11
16
 
12
17
  Prefer verified repository and subject facts. Use the smallest necessary inference when facts do not establish intent, label the uncertainty, and never invent business requirements or off-repository constraints.