@a9n-shoji/rvw 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/README.md +4 -0
- package/dist/cli.mjs +660 -155
- package/dist/cli.mjs.map +3 -3
- package/dist/web/assets/DocumentViewer-CWTnSlpG.js +1420 -0
- package/dist/web/assets/{FileIcon-AhP8Ezk9.js → FileIcon-wDKKQgGv.js} +94 -94
- package/dist/web/assets/{MarkdownTable-Clfr8wUw.js → MarkdownTable-IiPLNTUX.js} +1 -1
- package/dist/web/assets/{MermaidExpandedView-BjmXfluL.js → MermaidExpandedView-BT6F4F2R.js} +2 -2
- package/dist/web/assets/{MermaidSurface-B2Z3pJme.js → MermaidSurface-CKiZv7R8.js} +1 -1
- package/dist/web/assets/StructureViewer-u7de1S8C.js +5 -0
- package/dist/web/assets/{CommentThread-dsad9VaW.js → WalkthroughPanel-D2KqSIf9.js} +20 -20
- package/dist/web/assets/WalkthroughViewer-BDb-99Qk.js +43 -0
- package/dist/web/assets/index-B0xRoLW2.css +1 -0
- package/dist/web/assets/index-DUZmOKYW.js +11 -0
- package/dist/web/index.html +5 -5
- package/migrations/017_domain_revisions.sql +14 -0
- package/package.json +1 -1
- package/dist/web/assets/DocumentViewer-CPq2FCqU.js +0 -1414
- package/dist/web/assets/StructureViewer-CyDDQwHl.js +0 -1
- package/dist/web/assets/WalkthroughViewer-c3XUP0RH.js +0 -43
- package/dist/web/assets/index-CWOtOTHG.js +0 -11
- package/dist/web/assets/index-D_e3Zku8.css +0 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{p as t,r as n,t as r}from"./MermaidSurface-CKiZv7R8.js";import{C as i,D as a,E as o,N as s,O as c,S as l,T as u,_ as d,a as f,at as p,b as m,c as h,et as g,i as ee,it as _,k as v,l as y,ot as b,p as x,r as S,rt as C,s as te,st as ne,tt as w,u as T,w as E,x as D,y as re}from"./WalkthroughPanel-D2KqSIf9.js";import{c as O,i as ie,l as k,o as A,s as j}from"./FileIcon-wDKKQgGv.js";import{t as M}from"./lib-p2IERBh0.js";import{a as ae,i as N,n as oe,o as P,r as F,t as I}from"./MarkdownTable-IiPLNTUX.js";var L={abandonedHeadElementChild:{reason:`Unexpected metadata element after head`,description:"Unexpected element after head. Expected the element before `</head>`",url:!1},abruptClosingOfEmptyComment:{reason:`Unexpected abruptly closed empty comment`,description:"Unexpected `>` or `->`. Expected `-->` to close comments"},abruptDoctypePublicIdentifier:{reason:`Unexpected abruptly closed public identifier`,description:"Unexpected `>`. Expected a closing `\"` or `'` after the public identifier"},abruptDoctypeSystemIdentifier:{reason:`Unexpected abruptly closed system identifier`,description:"Unexpected `>`. Expected a closing `\"` or `'` after the identifier identifier"},absenceOfDigitsInNumericCharacterReference:{reason:`Unexpected non-digit at start of numeric character reference`,description:"Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references"},cdataInHtmlContent:{reason:`Unexpected CDATA section in HTML`,description:"Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead"},characterReferenceOutsideUnicodeRange:{reason:`Unexpected too big numeric character reference`,description:`Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)`},closingOfElementWithOpenChildElements:{reason:`Unexpected closing tag with open child elements`,description:`Unexpectedly closing tag. Expected other tags to be closed first`,url:!1},controlCharacterInInputStream:{reason:`Unexpected control character`,description:"Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace"},controlCharacterReference:{reason:`Unexpected control character reference`,description:`Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace`},disallowedContentInNoscriptInHead:{reason:"Disallowed content inside `<noscript>` in `<head>`",description:"Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`",url:!1},duplicateAttribute:{reason:`Unexpected duplicate attribute`,description:`Unexpectedly double attribute. Expected attributes to occur only once`},endTagWithAttributes:{reason:`Unexpected attribute on closing tag`,description:"Unexpected attribute. Expected `>` instead"},endTagWithTrailingSolidus:{reason:`Unexpected slash at end of closing tag`,description:"Unexpected `%c-1`. Expected `>` instead"},endTagWithoutMatchingOpenElement:{reason:`Unexpected unopened end tag`,description:`Unexpected end tag. Expected no end tag or another end tag`,url:!1},eofBeforeTagName:{reason:`Unexpected end of file`,description:`Unexpected end of file. Expected tag name instead`},eofInCdata:{reason:`Unexpected end of file in CDATA`,description:"Unexpected end of file. Expected `]]>` to close the CDATA"},eofInComment:{reason:`Unexpected end of file in comment`,description:"Unexpected end of file. Expected `-->` to close the comment"},eofInDoctype:{reason:`Unexpected end of file in doctype`,description:"Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)"},eofInElementThatCanContainOnlyText:{reason:`Unexpected end of file in element that can only contain text`,description:`Unexpected end of file. Expected text or a closing tag`,url:!1},eofInScriptHtmlCommentLikeText:{reason:`Unexpected end of file in comment inside script`,description:"Unexpected end of file. Expected `-->` to close the comment"},eofInTag:{reason:`Unexpected end of file in tag`,description:"Unexpected end of file. Expected `>` to close the tag"},incorrectlyClosedComment:{reason:`Incorrectly closed comment`,description:"Unexpected `%c-1`. Expected `-->` to close the comment"},incorrectlyOpenedComment:{reason:`Incorrectly opened comment`,description:"Unexpected `%c`. Expected `<!--` to open the comment"},invalidCharacterSequenceAfterDoctypeName:{reason:`Invalid sequence after doctype name`,description:"Unexpected sequence at `%c`. Expected `public` or `system`"},invalidFirstCharacterOfTagName:{reason:`Invalid first character in tag name`,description:"Unexpected `%c`. Expected an ASCII letter instead"},misplacedDoctype:{reason:`Misplaced doctype`,description:`Unexpected doctype. Expected doctype before head`,url:!1},misplacedStartTagForHeadElement:{reason:"Misplaced `<head>` start tag",description:"Unexpected start tag `<head>`. Expected `<head>` directly after doctype",url:!1},missingAttributeValue:{reason:`Missing attribute value`,description:"Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead"},missingDoctype:{reason:`Missing doctype before other content`,description:"Expected a `<!doctype html>` before anything else",url:!1},missingDoctypeName:{reason:`Missing doctype name`,description:"Unexpected doctype end at `%c`. Expected `html` instead"},missingDoctypePublicIdentifier:{reason:`Missing public identifier in doctype`,description:"Unexpected `%c`. Expected identifier for `public` instead"},missingDoctypeSystemIdentifier:{reason:`Missing system identifier in doctype`,description:'Unexpected `%c`. Expected identifier for `system` instead (suggested: `"about:legacy-compat"`)'},missingEndTagName:{reason:`Missing name in end tag`,description:"Unexpected `%c`. Expected an ASCII letter instead"},missingQuoteBeforeDoctypePublicIdentifier:{reason:`Missing quote before public identifier in doctype`,description:"Unexpected `%c`. Expected `\"` or `'` instead"},missingQuoteBeforeDoctypeSystemIdentifier:{reason:`Missing quote before system identifier in doctype`,description:"Unexpected `%c`. Expected `\"` or `'` instead"},missingSemicolonAfterCharacterReference:{reason:`Missing semicolon after character reference`,description:"Unexpected `%c`. Expected `;` instead"},missingWhitespaceAfterDoctypePublicKeyword:{reason:`Missing whitespace after public identifier in doctype`,description:"Unexpected `%c`. Expected ASCII whitespace instead"},missingWhitespaceAfterDoctypeSystemKeyword:{reason:`Missing whitespace after system identifier in doctype`,description:"Unexpected `%c`. Expected ASCII whitespace instead"},missingWhitespaceBeforeDoctypeName:{reason:`Missing whitespace before doctype name`,description:"Unexpected `%c`. Expected ASCII whitespace instead"},missingWhitespaceBetweenAttributes:{reason:`Missing whitespace between attributes`,description:"Unexpected `%c`. Expected ASCII whitespace instead"},missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers:{reason:`Missing whitespace between public and system identifiers in doctype`,description:"Unexpected `%c`. Expected ASCII whitespace instead"},nestedComment:{reason:`Unexpected nested comment`,description:"Unexpected `<!--`. Expected `-->`"},nestedNoscriptInHead:{reason:"Unexpected nested `<noscript>` in `<head>`",description:"Unexpected `<noscript>`. Expected a closing tag or a meta element",url:!1},nonConformingDoctype:{reason:`Unexpected non-conforming doctype declaration`,description:'Expected `<!doctype html>` or `<!doctype html system "about:legacy-compat">`',url:!1},nonVoidHtmlElementStartTagWithTrailingSolidus:{reason:`Unexpected trailing slash on start tag of non-void element`,description:"Unexpected `/`. Expected `>` instead"},noncharacterCharacterReference:{reason:`Unexpected noncharacter code point referenced by character reference`,description:`Unexpected code point. Do not use noncharacters in HTML`},noncharacterInInputStream:{reason:`Unexpected noncharacter character`,description:"Unexpected code point `%x`. Do not use noncharacters in HTML"},nullCharacterReference:{reason:`Unexpected NULL character referenced by character reference`,description:`Unexpected code point. Do not use NULL characters in HTML`},openElementsLeftAfterEof:{reason:`Unexpected end of file`,description:`Unexpected end of file. Expected closing tag instead`,url:!1},surrogateCharacterReference:{reason:`Unexpected surrogate character referenced by character reference`,description:`Unexpected code point. Do not use lone surrogate characters in HTML`},surrogateInInputStream:{reason:`Unexpected surrogate character`,description:"Unexpected code point `%x`. Do not use lone surrogate characters in HTML"},unexpectedCharacterAfterDoctypeSystemIdentifier:{reason:`Invalid character after system identifier in doctype`,description:"Unexpected character at `%c`. Expected `>`"},unexpectedCharacterInAttributeName:{reason:`Unexpected character in attribute name`,description:"Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter"},unexpectedCharacterInUnquotedAttributeValue:{reason:`Unexpected character in unquoted attribute value`,description:"Unexpected `%c`. Quote the attribute value to include it"},unexpectedEqualsSignBeforeAttributeName:{reason:`Unexpected equals sign before attribute name`,description:"Unexpected `%c`. Add an attribute name before it"},unexpectedNullCharacter:{reason:`Unexpected NULL character`,description:"Unexpected code point `%x`. Do not use NULL characters in HTML"},unexpectedQuestionMarkInsteadOfTagName:{reason:`Unexpected question mark instead of tag name`,description:"Unexpected `%c`. Expected an ASCII letter instead"},unexpectedSolidusInTag:{reason:`Unexpected slash in tag`,description:"Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value"},unknownNamedCharacterReference:{reason:`Unexpected unknown named character reference`,description:`Unexpected character reference. Expected known named character references`}},se=`https://html.spec.whatwg.org/multipage/parsing.html#parse-error-`,R=/-[a-z]/g,z=/%c(?:([-+])(\d+))?/g,B=/%x/g,V={2:!0,1:!1,0:null},H={};function ce(e,t){let n=t||H,r=n.onerror,o=e instanceof a?e:new a(e),s=n.fragment?i:l,c=String(o),u=s(c,{sourceCodeLocationInfo:!0,onParseError:n.onerror?d:null,scriptingEnabled:!1});return E(u,{file:o,space:n.space,verbose:n.verbose});function d(e){let t=e.code,i=le(t),a=n[i]??!0,s=typeof a==`number`?a:+!!a;if(s){let n=L[i],a=new v(l(n.reason),{place:{start:{line:e.startLine,column:e.startCol,offset:e.startOffset},end:{line:e.endLine,column:e.endCol,offset:e.endOffset}},ruleId:t,source:`hast-util-from-html`});o.path&&(a.file=o.path,a.name=o.path+`:`+a.name),a.fatal=V[s],a.note=l(n.description),a.url=n.url===!1?void 0:se+t,r(a)}function l(t){return t.replace(z,n).replace(B,r);function n(t,n,r){let i=(r?Number.parseInt(r,10):0)*(n===`-`?-1:1);return de(c.charAt(e.startOffset+i))}function r(){return fe(c.charCodeAt(e.startOffset))}}}}function le(e){return e.replace(R,ue)}function ue(e){return e.charAt(1).toUpperCase()}function de(e){return e==="`"?"` ` `":e}function fe(e){return`0x`+e.toString(16).toUpperCase()}var U=e(k(),1),pe=class extends Error{code;suggestions;status;details;constructor(e,t,n={}){super(t,n.cause===void 0?void 0:{cause:n.cause}),this.name=`RvwError`,this.code=e,this.suggestions=n.suggestions??[],this.status=n.status??400,this.details=n.details}toJSON(){return{code:this.code,message:this.message,suggestions:this.suggestions,...this.details===void 0?{}:{details:this.details}}}},me=`rvw-ref:`,W=`rvw-source:`,he=/^[A-Za-z][A-Za-z\d+.-]*:/u,ge=/^data:image\/(?:png|jpeg|gif|webp|avif);base64,[A-Za-z\d+/=\s]+$/u,_e=/<\s*\/?\s*(?:html|head|body)(?:\s|>)/iu,G=new Set(`a.article.aside.b.blockquote.br.button.caption.code.col.colgroup.dd.details.div.dl.dt.em.figcaption.figure.footer.h1.h2.h3.h4.h5.h6.header.hr.i.img.input.kbd.label.li.main.mark.nav.ol.option.p.pre.section.select.small.span.strong.style.sub.summary.sup.table.tbody.td.textarea.tfoot.th.thead.tr.ul`.split(`.`)),ve=new Set([`circle`,`clipPath`,`defs`,`desc`,`ellipse`,`g`,`line`,`linearGradient`,`marker`,`mask`,`path`,`polygon`,`polyline`,`radialGradient`,`rect`,`stop`,`svg`,`symbol`,`text`,`title`,`tspan`,`use`]),ye=new Set([`audio`,`base`,`canvas`,`embed`,`frame`,`iframe`,`link`,`meta`,`object`,`script`,`video`,`foreignobject`]),K=new Set([`article`,`aside`,`details`,`figure`,`img`,`section`,`svg`,`table`]),q=new Set([`ariaDescribedBy`,`ariaLabel`,`ariaLabelledBy`,`className`,`dir`,`hidden`,`id`,`lang`,`role`,`style`,`tabIndex`,`title`]),be=new Map([[`a`,new Set([`href`,`hrefLang`])],[`blockquote`,new Set([`cite`])],[`button`,new Set([`disabled`,`name`,`type`,`value`])],[`col`,new Set([`span`,`width`])],[`details`,new Set([`open`])],[`img`,new Set([`alt`,`decoding`,`height`,`loading`,`src`,`width`])],[`input`,new Set([`accept`,`autoComplete`,`checked`,`disabled`,`max`,`maxLength`,`min`,`minLength`,`multiple`,`name`,`placeholder`,`readOnly`,`required`,`size`,`step`,`type`,`value`])],[`label`,new Set([`htmlFor`])],[`li`,new Set([`value`])],[`ol`,new Set([`reversed`,`start`,`type`])],[`option`,new Set([`disabled`,`label`,`selected`,`value`])],[`select`,new Set([`disabled`,`multiple`,`name`,`required`,`size`])],[`td`,new Set([`colSpan`,`headers`,`rowSpan`])],[`textarea`,new Set([`cols`,`disabled`,`maxLength`,`minLength`,`name`,`placeholder`,`readOnly`,`required`,`rows`,`wrap`])],[`th`,new Set([`abbr`,`colSpan`,`headers`,`rowSpan`,`scope`])]]),xe=new Set(`alignmentBaseline.clipPath.clipPathUnits.cx.cy.d.dominantBaseline.dx.dy.fill.fillOpacity.fillRule.fontFamily.fontSize.fontStyle.fontWeight.gradientTransform.gradientUnits.height.href.lengthAdjust.markerEnd.markerHeight.markerMid.markerStart.markerUnits.markerWidth.mask.maskContentUnits.maskUnits.offset.opacity.orient.pathLength.points.preserveAspectRatio.r.refX.refY.rx.ry.spreadMethod.stopColor.stopOpacity.stroke.strokeDasharray.strokeDashoffset.strokeLinecap.strokeLinejoin.strokeMiterlimit.strokeOpacity.strokeWidth.textAnchor.textLength.transform.vectorEffect.viewBox.width.x.x1.x2.xmlns.y.y1.y2`.split(`.`)),Se=new Set([`clipPath`,`fill`,`markerEnd`,`markerMid`,`markerStart`,`mask`,`stroke`]);function Ce(e){let t=c(e),n=[],r=e=>{if(e.type===`code`&&e.lang===`html-preview`&&typeof e.value==`string`&&e.position){let t=e.position.start.line+1;n.push({startLine:t,endLine:t+Math.max(1,e.value.split(`
|
|
2
|
+
`).length)-1})}e.children?.forEach(r)};return r(t),n}function J(e,t){return t+(e?.start.line??1)}function Y(e,t){throw new pe(`INVALID_INPUT`,`html-preview L${e}: ${t}`)}function we(e){return e.replace(/\\([\da-f]{1,6}\s?|.)/giu,(e,t)=>{let n=t.trim();if(/^[\da-f]{1,6}$/iu.test(n)){let e=Number.parseInt(n,16);return e===0||e>1114111?`�`:String.fromCodePoint(e)}return t})}function Te(e,t){let n=we(e.replace(/\/\*[\s\S]*?\*\//gu,` `)).toLowerCase().replace(/url\s*\(\s*(["']?)#[a-z_][\w:.-]*\1\s*\)/giu,`internal-fragment`);(/@import\b|@font-face\b|(?:^|[^-])url\s*\(|image-set\s*\(|(?:^|[^-])image\s*\(|expression\s*\(|-moz-binding\s*:|behavior\s*:/u.test(n)||/(?:https?|file|blob|data):|\/\//u.test(n))&&Y(t,`network resourceを参照するCSSは使用できません。`)}function X(e){let t=e.trim();if(t.length===0||t.startsWith(`#`)||t.startsWith(`?`)||t.startsWith(`//`)||he.test(t))return null;let n=t.split(/[?#]/u,1)[0];if(!n)return null;let r;try{r=decodeURIComponent(n)}catch{return null}if(r.includes(`\\`)||r.includes(`\0`))return null;let i=[];for(let e of r.split(`/`))if(!(!e||e===`.`)){if(e===`..`){if(i.length===0)return null;i.pop();continue}i.push(e)}return i.length>0?i.join(`/`):null}function Ee(e,t,n){return q.has(t)||/^aria[A-Z]/u.test(t)||t===`dataRvwCommentable`||n&&xe.has(t)?!0:be.get(e)?.has(t)??!1}function Z(e,t){let n=e.properties?.[t];return typeof n==`string`?n:typeof n==`number`||typeof n==`boolean`||typeof n==`bigint`?String(n):Array.isArray(n)?n.filter(e=>typeof e==`string`||typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`).map(String).join(` `):null}function De(e,t,n,r){let i=e.trim();if(i.toLowerCase().startsWith(me)){n&&Y(t,`inline SVGのhrefはfragmentだけを使用できます。`),r.push(i.slice(8));return}i.startsWith(`#`)||!n&&(/^https?:/iu.test(i)||X(i))||(/^javascript:/iu.test(i)&&Y(t,`javascript: URLは使用できません。`),Y(t,n?`inline SVGのexternal hrefは使用できません。`:`link ${i} は使用できません。`))}function Oe(e,t){let n=[],r=[],i=new Set,a=0,o=(e,s)=>{if(e.type===`comment`){e.value?.startsWith(W)&&Y(J(e.position,t),`内部source markerは指定できません。`);return}if(e.type===`doctype`&&Y(J(e.position,t),`doctypeはfragment内で使用できません。`),e.type!==`element`||!e.tagName){e.children?.forEach(e=>o(e,s));return}let c=e.tagName,l=c.toLowerCase(),u=J(e.position,t),d=s||l===`svg`;ye.has(l)&&Y(u,`<${c}> は使用できません。`),!G.has(c)&&!ve.has(c)&&Y(u,`<${c}> は使用できません。`);for(let t of Object.keys(e.properties??{}))/^on/iu.test(t)&&Y(u,`${t.toLowerCase()} attribute は使用できません。`),t===`srcDoc`&&Y(u,`srcdoc attribute は使用できません。`),(/^dataRvwSource/iu.test(t)||/^dataRvw(?:Node|Text|CommentSurface)/iu.test(t))&&Y(u,`内部data-rvw-source-* attributeは指定できません。`),Ee(c,t,d)||Y(u,`<${c}>の${t} attribute は使用できません。`),i.add(t);let f=Z(e,`style`);f!==null&&Te(f,u),c===`style`&&Te(e.children?.map(e=>e.value??``).join(``)??``,u);let p=Z(e,`href`);if(p!==null&&De(p,u,d,n),d)for(let t of Se){let n=Z(e,t);n!==null&&Te(n,u)}if(c===`img`){a+=1;let t=Z(e,`src`);if(t||Y(u,`<img>にはsrcが必要です。`),t.startsWith(`data:`))ge.test(t)||Y(u,`inline imageは対応するbase64 data:imageだけを使用できます。`);else{let e=X(t);e||Y(u,`外部画像 ${t} は使用できません。`),r.push(e)}}e.children?.forEach(e=>o(e,d))};return o(e,!1),a>32&&Y(t,`画像はWalkthrough全体で32件以下にしてください。`),{referenceIds:n,repositoryImages:r,propertyNames:i,imageCount:a}}function ke(e){return{allowComments:!0,allowDoctypes:!1,ancestors:{},attributes:{"*":[...e]},clobber:[],protocols:{href:[`http`,`https`,`rvw-ref`],src:[`data`]},required:{},strip:[...ye],tagNames:[...G,...ve]}}function Ae(e,t){return e.position?{startLine:t+e.position.start.line,endLine:t+e.position.end.line}:null}function je(e,t){let n=Z(e,`alt`)?.trim(),r=Z(e,`title`)?.trim();e.tagName=`span`,e.properties={className:[`rvw-html-image-placeholder`],dataRvwImagePath:t,role:`img`,ariaLabel:n||r||`Missing image: ${t}`,...r?{title:r}:{}},e.children=[{type:`text`,value:n||r||`Image unavailable: ${t}`}]}function Me(e,t,n){let r=(e,i=!1)=>{if(e.type!==`element`||!e.tagName){if(e.children){let n=[];for(let a of e.children){let e=!i&&a.type===`text`?Ae(a,t):null;e&&a.value?.trim()&&n.push({type:`comment`,value:`${W}${e.startLine}:${e.endLine}`}),r(a,i),n.push(a)}e.children=n}return}let a=Ae(e,t);if(e.properties??={},a&&(e.properties.dataRvwSourceStartLine=a.startLine,e.properties.dataRvwSourceEndLine=a.endLine),(K.has(e.tagName)||Object.hasOwn(e.properties,`dataRvwCommentable`))&&(e.properties.dataRvwCommentSurface=`true`),e.tagName===`img`){let t=Z(e,`src`);if(t&&!t.startsWith(`data:`)){let r=X(t),i=r?n.get(r):null;r&&i?(e.properties.src=i,e.properties.dataRvwImagePath=r):r&&je(e,r)}}if(e.children){let n=[];for(let i of e.children){let a=e.tagName!==`style`&&i.type===`text`?Ae(i,t):null;a&&i.value?.trim()&&n.push({type:`comment`,value:`${W}${a.startLine}:${a.endLine}`}),r(i,e.tagName===`style`),n.push(i)}e.children=n}};r(e)}function Ne(e,t,n=new Map){_e.test(e)&&Y(t+1,`<html>、<head>、<body>はfragment内で使用できません。`);let r=ce(e,{fragment:!0}),i=Oe(r,t),a=m(r,ke(i.propertyNames));Me(a,t,n);let o=Math.max(1,e.split(`
|
|
3
|
+
`).length);return{startLine:t+1,endLine:t+o,imageCount:i.imageCount,referenceIds:i.referenceIds,repositoryImages:i.repositoryImages,html:M(a)}}function Pe(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Fe(e,t,n,r){return[...r].sort((e,t)=>t.length-e.length).find(r=>{let i=`${t}${r}`;return n?RegExp(`${Pe(i)}-\\d+$`).test(e):e.endsWith(i)})??null}function Q(e,t,n,r,i=!0){return Array.from(e.querySelectorAll(t)).flatMap(e=>{let t=Fe(e.id,n,i,r);return t?[{bindingKey:t,element:e}]:[]})}var Ie={flowchart:{targets:(e,t)=>Q(e,`g.node[id]`,`-flowchart-`,t)},classDiagram:{targets:(e,t)=>Q(e,`g.node[id]`,`-classId-`,t)},sequenceDiagram:{targets:(e,t)=>{let n=new Set(t);return Array.from(e.querySelectorAll(`g[data-et="participant"][data-id]`)).flatMap(e=>{let t=e.dataset.id;return t&&n.has(t)?[{bindingKey:t,element:e}]:[]})}},"stateDiagram-v2":{targets:(e,t)=>Q(e,`g.statediagram-state[id]`,`-state-`,t)},erDiagram:{targets:(e,t)=>Q(e,`g.node[id]`,`-entity-`,t)},"architecture-beta":{targets:(e,t)=>Q(e,`g.architecture-service[id]`,`-service-`,t,!1)}};function Le(e){for(let t of e.split(`
|
|
4
|
+
`)){let e=t.trim();if(!e||e.startsWith(`%%`))continue;let n=e.match(/^(flowchart|graph|classDiagram|sequenceDiagram|stateDiagram-v2|erDiagram|architecture-beta)\b/)?.[1];return n===`graph`?`flowchart`:n??null}return null}function Re(e,t,n){let r=Le(e);return r?Ie[r].targets(t,n):[]}var $=O();function ze({action:e,markers:t,composer:n,composerAnchor:r,onComment:i,onActivateComment:a}){let o=(0,U.useRef)(null);return(0,U.useLayoutEffect)(()=>{if(!n)return;let e=window.requestAnimationFrame(()=>{o.current?.scrollIntoView({block:`nearest`,inline:`nearest`})});return()=>window.cancelAnimationFrame(e)},[n]),(0,$.jsxs)(`div`,{className:`walkthrough-html-overlay`,"aria-hidden":e===null&&t.length===0&&!n,children:[t.map(e=>(0,$.jsx)(`button`,{className:`walkthrough-html-marker${e.active?` is-active`:``}`,style:{left:e.left,top:e.top},"aria-label":e.label,title:e.label,onClick:()=>a(e.id),children:(0,$.jsx)(g,{})},e.id)),e&&(0,$.jsxs)(`button`,{className:`walkthrough-html-comment-action`,style:{left:e.left,top:e.top},"aria-label":e.label,title:e.label,onPointerDown:e=>e.preventDefault(),onClick:()=>i(e),children:[(0,$.jsx)(g,{}),`コメント`]}),n&&r&&(0,$.jsx)(`div`,{ref:o,className:`walkthrough-html-comment-composer`,style:{left:r.left,top:r.top},children:n})]})}var Be=240,Ve=2e4,He=/^rvw-source:(\d+):(\d+)$/u,Ue=new Set([`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/avif`,`image/svg+xml`]),We=[`default-src 'none'`,`script-src 'none'`,`style-src 'unsafe-inline'`,`img-src data:`,`font-src 'none'`,`connect-src 'none'`,`media-src 'none'`,`object-src 'none'`,`frame-src 'none'`,`worker-src 'none'`,`base-uri 'none'`,`form-action 'none'`].join(`; `);function Ge(e){let t=`
|
|
5
|
+
--rvw-bg: #161b22;
|
|
6
|
+
--rvw-fg: #e6edf3;
|
|
7
|
+
--rvw-muted: #8b949e;
|
|
8
|
+
--rvw-border: #30363d;
|
|
9
|
+
--rvw-accent: #58a6ff;
|
|
10
|
+
--rvw-panel: #21262d;
|
|
11
|
+
--rvw-highlight: #d29922;
|
|
12
|
+
color-scheme: dark;`,n=`
|
|
13
|
+
--rvw-bg: #ffffff;
|
|
14
|
+
--rvw-fg: #1f2328;
|
|
15
|
+
--rvw-muted: #57606a;
|
|
16
|
+
--rvw-border: #d8dee4;
|
|
17
|
+
--rvw-accent: #0969da;
|
|
18
|
+
--rvw-panel: #f6f8fa;
|
|
19
|
+
--rvw-highlight: #9a6700;
|
|
20
|
+
color-scheme: light;`;return e===`dark`?`:root {${t}}`:e===`light`?`:root {${n}}`:`:root {${n} color-scheme: light dark;} @media (prefers-color-scheme: dark) { :root {${t}} }`}function Ke(e){return`${Ge(e)}
|
|
21
|
+
*, *::before, *::after { box-sizing: border-box; }
|
|
22
|
+
html { background: transparent; }
|
|
23
|
+
body { margin: 0; overflow-x: auto; overflow-y: hidden; background: var(--rvw-bg); color: var(--rvw-fg); }
|
|
24
|
+
body, button, input, select, textarea { font: 14px/1.5 var(--rvw-font-sans, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); }
|
|
25
|
+
code, kbd, pre { font-family: var(--rvw-font-mono, "SFMono-Regular", Consolas, monospace); }
|
|
26
|
+
img, svg { max-width: 100%; }
|
|
27
|
+
a { color: var(--rvw-accent); cursor: pointer; }
|
|
28
|
+
button, input, select, textarea { color: inherit; }
|
|
29
|
+
.rvw-preview-root { min-width: 0; padding: 16px; }
|
|
30
|
+
.rvw-html-image-placeholder { display: grid; min-height: 96px; place-items: center; padding: 16px; border: 1px dashed var(--rvw-border); border-radius: 6px; background: var(--rvw-panel); color: var(--rvw-muted); text-align: center; }
|
|
31
|
+
[data-rvw-comment-surface="true"] { cursor: default; }
|
|
32
|
+
::highlight(rvw-pane-find-left-match), ::highlight(rvw-pane-find-right-match) { background-color: light-dark(rgb(234 179 8 / 0.42), rgb(250 204 21 / 0.38)); }
|
|
33
|
+
::highlight(rvw-pane-find-left-current), ::highlight(rvw-pane-find-right-current) { background-color: light-dark(rgb(245 139 10 / 0.82), rgb(249 115 22 / 0.78)); color: light-dark(#17120a, #fff); }
|
|
34
|
+
`}var qe=`
|
|
35
|
+
.rvw-html-active-comment {
|
|
36
|
+
outline: 3px solid var(--rvw-highlight) !important;
|
|
37
|
+
outline-offset: 3px !important;
|
|
38
|
+
}
|
|
39
|
+
`;function Je(e,t){return`<meta http-equiv="Content-Security-Policy" content="${We}">
|
|
40
|
+
<meta name="color-scheme" content="light dark">
|
|
41
|
+
<style>${Ke(t)}</style>
|
|
42
|
+
<div class="rvw-preview-root" data-pane-find-text>${e}</div>
|
|
43
|
+
<style>${qe}</style>`}function Ye(e){if(!e)return null;let t=e,n=Number(t.dataset.rvwSourceStartLine),r=Number(t.dataset.rvwSourceEndLine);return!Number.isInteger(n)||!Number.isInteger(r)||n<1||r<1?null:{startLine:Math.min(n,r),endLine:Math.max(n,r)}}function Xe(e){return e&&typeof e==`object`&&`closest`in e?e:null}function Ze(e,t){return e.startLine<=t.endLine&&e.endLine>=t.startLine}function Qe(e){let t=0,n=e;for(;n;)t+=1,n=n.parentElement;return t}function $e(e,t){let n=[...e.querySelectorAll(`[data-rvw-source-start-line]`)].map(e=>({element:e,range:Ye(e)})).filter(e=>e.range!==null&&Ze(e.range,t));return n.sort((e,n)=>(e.range.startLine<=t.startLine&&e.range.endLine>=t.endLine?0:1)-(n.range.startLine<=t.startLine&&n.range.endLine>=t.endLine?0:1)||e.range.endLine-e.range.startLine-(n.range.endLine-n.range.startLine)||Qe(n.element)-Qe(e.element)),n[0]?.element??null}function et(e,t){let n=``,r=32768;for(let t=0;t<e.length;t+=r)n+=String.fromCharCode(...e.subarray(t,t+r));return`data:${t};base64,${window.btoa(n)}`}async function tt(e,t,n,r){let i=[...new Set(n)],a=new Map,o=0;for(let n of i){if(o>=20971520){a.set(n,null);continue}try{let i=await fetch(x(e,t,n),{signal:r}),s=i.headers.get(`content-type`)?.split(`;`,1)[0]?.toLowerCase(),c=Number(i.headers.get(`content-length`));if(!i.ok||!s||!Ue.has(s)||Number.isFinite(c)&&(c>5242880||o+c>20971520)){await i.body?.cancel(),a.set(n,null);continue}let l=new Uint8Array(await i.arrayBuffer());if(l.byteLength>5242880||o+l.byteLength>20971520){a.set(n,null);continue}o+=l.byteLength,a.set(n,et(l,s))}catch(e){if(r.aborted)throw e;a.set(n,null)}}return a}function nt({source:e,fenceRange:t,pullRequestId:n,sourceOid:r,references:i,placedComments:a,activeCommentId:o,navigationLine:s,themePreference:c,commentComposer:l,onOpenReference:u,onOpenRepositoryLink:d,onCommentRange:f,onActivateComment:p}){let m=(0,U.useRef)(null),h=(0,U.useRef)(null),g=(0,U.useRef)(null),ee=(0,U.useRef)(new WeakMap),[_,v]=(0,U.useState)(new Map),[y,b]=(0,U.useState)(Be),[x,S]=(0,U.useState)(null),[C,te]=(0,U.useState)(null),[ne,w]=(0,U.useState)([]),T=(0,U.useMemo)(()=>{try{return{value:Ne(e,t.startLine,_)}}catch(e){return{error:e instanceof Error?e.message:`HTML previewを表示できません。`}}},[t.startLine,_,e]),E=(0,U.useMemo)(()=>{try{return Ne(e,t.startLine).repositoryImages}catch{return[]}},[t.startLine,e]);(0,U.useEffect)(()=>{let e=new AbortController;return v(new Map),E.length>0&&tt(n,r,E,e.signal).then(t=>{e.signal.aborted||v(t)},()=>void 0),()=>e.abort()},[E,n,r]);let D=(0,U.useCallback)(()=>{let e=g.current,t=m.current,n=h.current,r=e?.contentDocument;if(!e||!t||!n||!r)return;let i=Math.max(r.documentElement.scrollHeight,r.body?.scrollHeight??0),s=Math.min(Ve,Math.max(Be,i));b(e=>Math.abs(e-s)<1?e:s),r.body&&(r.body.style.overflowY=i>Ve?`auto`:`hidden`);let c=e.getBoundingClientRect(),l=n.getBoundingClientRect();w(a.flatMap(({comment:e,placement:t})=>{if(t.outdated||!t.range)return[];let n=$e(r,t.range);if(!n)return[];let i=n.getBoundingClientRect();return[{id:e.id,left:c.left-l.left+i.right,top:c.top-l.top+i.top,active:e.id===o,label:`${e.id}のコメントを開く`}]}))},[o,a]);return(0,U.useLayoutEffect)(()=>{D()},[y,D]),(0,U.useEffect)(()=>{let e=g.current,t=m.current,n=h.current;if(!e||!t||!n||!T.value)return;let a=()=>void 0,o=()=>{a();let o=e.contentDocument;if(!o)return;let s=new WeakMap,c=o.createTreeWalker(o,NodeFilter.SHOW_COMMENT),l=c.nextNode();for(;l;){let e=He.exec(l.nodeValue??``),t=l.nextSibling;e&&t?.nodeType===Node.TEXT_NODE&&s.set(t,{startLine:Number(e[1]),endLine:Number(e[2])}),l=c.nextNode()}ee.current=s;let f=e=>Math.max(48,Math.min(n.clientWidth-48,e)),p=()=>{let e=o.getSelection();if(!e||e.rangeCount===0||e.isCollapsed||!e.toString().trim())return null;let t=e.getRangeAt(0),n=o.createTreeWalker(o,NodeFilter.SHOW_TEXT),r=[],i=n.nextNode();for(;i;){if(t.intersectsNode(i)){let e=s.get(i);e&&r.push(e)}i=n.nextNode()}if(r.length===0){let e=Ye((t.commonAncestorContainer.nodeType===Node.ELEMENT_NODE?t.commonAncestorContainer:t.commonAncestorContainer.parentElement)?.closest(`[data-rvw-source-start-line]`)??null);e&&r.push(e)}return r.length===0?null:{range:{startLine:Math.min(...r.map(e=>e.startLine)),endLine:Math.max(...r.map(e=>e.endLine))},rect:t.getBoundingClientRect()}},m=()=>{let t=p();if(!t){S(null);return}let r=e.getBoundingClientRect(),i=n.getBoundingClientRect();S({range:t.range,left:f(r.left-i.left+t.rect.left+t.rect.width/2),top:r.top-i.top+t.rect.bottom+8,label:`選択したテキストへコメント`})},h=t=>{if(o.getSelection()?.toString().trim())return;let r=Xe(t.target)?.closest(`[data-rvw-comment-surface='true']`)??null,i=Ye(r);if(!r||!i){S(null);return}let a=r.getBoundingClientRect(),s=e.getBoundingClientRect(),c=n.getBoundingClientRect();S({range:i,left:f(s.left-c.left+a.right),top:s.top-c.top+a.top,label:`このvisualへコメント`})},g=e=>{if(!(e.metaKey||e.ctrlKey)||e.altKey)return;let t=e.key.toLowerCase(),n=t===`f`&&!e.shiftKey,r=t===`p`&&!e.shiftKey,i=t===`f`&&e.shiftKey;if(!n&&!r&&!i)return;let a=new KeyboardEvent(`keydown`,{key:e.key,code:e.code,location:e.location,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey,altKey:e.altKey,repeat:e.repeat,bubbles:!0,cancelable:!0});window.document.dispatchEvent(a)||e.preventDefault()},_=e=>{let t=Xe(e.target)?.closest(`a[href]`);if(!t)return;e.preventDefault(),e.stopPropagation();let n=t.getAttribute(`href`)?.trim()??``,a=e.metaKey||e.ctrlKey;if(n.startsWith(`rvw-ref:`)){let e=i.get(n.slice(8));e&&u(e,a);return}if(n.startsWith(`#`)){o.getElementById(n.slice(1))?.scrollIntoView({block:`center`});return}if(/^https?:/iu.test(n)){window.open(n,`_blank`,`noopener,noreferrer`);return}let s=X(n);s&&d(s,r,a)};o.addEventListener(`selectionchange`,m),o.addEventListener(`pointerup`,m),o.addEventListener(`pointermove`,h),o.addEventListener(`keydown`,g),o.addEventListener(`click`,_,!0),o.addEventListener(`toggle`,D,!0);let v=null,y=()=>{v===null&&(v=window.requestAnimationFrame(()=>{v=null,D()}))};o.addEventListener(`scroll`,y,!0);let b=[...o.images];for(let e of b)e.addEventListener(`load`,D),e.addEventListener(`error`,D);let x=new ResizeObserver(D);x.observe(o.documentElement),o.body&&x.observe(o.body);let C=new ResizeObserver(D);C.observe(t),D(),a=()=>{o.removeEventListener(`selectionchange`,m),o.removeEventListener(`pointerup`,m),o.removeEventListener(`pointermove`,h),o.removeEventListener(`keydown`,g),o.removeEventListener(`click`,_,!0),o.removeEventListener(`toggle`,D,!0),o.removeEventListener(`scroll`,y,!0),v!==null&&window.cancelAnimationFrame(v);for(let e of b)e.removeEventListener(`load`,D),e.removeEventListener(`error`,D);x.disconnect(),C.disconnect()}};return e.addEventListener(`load`,o),e.contentDocument?.readyState===`complete`&&o(),()=>{e.removeEventListener(`load`,o),a()}},[u,d,i,T.value,r,D]),(0,U.useEffect)(()=>{let e=g.current?.contentDocument;if(!e)return;for(let t of e.querySelectorAll(`.rvw-html-active-comment`))t.classList.remove(`rvw-html-active-comment`);let t=a.find(({comment:e,placement:t})=>e.id===o&&!t.outdated&&t.range)?.placement;if(!t?.range)return;let n=$e(e,t.range);n&&(n.classList.add(`rvw-html-active-comment`),m.current?.scrollIntoView({block:`nearest`,inline:`nearest`}),n.scrollIntoView({block:`center`,inline:`nearest`}),D())},[o,a,D]),(0,U.useEffect)(()=>{if(s===null)return;let e=g.current?.contentDocument;if(!e)return;let t=$e(e,{startLine:s,endLine:s});t&&(m.current?.scrollIntoView({block:`center`,inline:`nearest`}),t.scrollIntoView({block:`center`,inline:`nearest`}))},[s,T.value]),T.error?(0,$.jsx)(`div`,{className:`walkthrough-html-preview-error`,role:`alert`,children:T.error}):(0,$.jsxs)(`div`,{className:`walkthrough-html-preview-shell`,ref:m,"data-rvw-navigation-start-line":t.startLine,"data-rvw-navigation-end-line":t.endLine,children:[(0,$.jsxs)(`div`,{className:`walkthrough-html-preview-toolbar`,"data-pane-find-ignore":!0,children:[(0,$.jsx)(`span`,{children:`HTML preview`}),(0,$.jsx)(`span`,{children:`textまたはvisualを選択してコメント`})]}),(0,$.jsxs)(`div`,{className:`walkthrough-html-preview-frame-shell`,ref:h,onPointerLeave:()=>S(null),children:[(0,$.jsx)(`iframe`,{ref:g,title:`Walkthrough HTML preview L${t.startLine}`,"data-pane-find-child-document":!0,sandbox:`allow-same-origin`,srcDoc:Je(T.value?.html??``,c),style:{height:y}}),(0,$.jsx)(ze,{action:x,markers:ne,composer:C?l(C.label):null,composerAnchor:C,onComment:e=>{g.current?.contentDocument?.getSelection()?.removeAllRanges(),S(null);let t=m.current?.clientWidth??0,n=Math.min(420,Math.max(0,t-24))/2,r=t>0?Math.max(12+n,Math.min(t-12-n,e.left)):e.left;te({...e,left:r}),f(e.range)},onActivateComment:p})]})]})}var rt=2400;function it(e){return U.Children.toArray(e).map(e=>typeof e==`string`||typeof e==`number`?String(e):(0,U.isValidElement)(e)?it(e.props.children):``).join(``)}function at(e,t){return!!(e&&t&&e.startLine===t.startLine&&e.endLine===t.endLine)}function ot(){return(0,$.jsx)(`svg`,{"aria-hidden":`true`,viewBox:`0 0 16 16`,width:`16`,height:`16`,children:(0,$.jsx)(`path`,{fill:`currentColor`,d:`M5.5 1.75A1.75 1.75 0 0 1 7.25 0h1.5a1.75 1.75 0 0 1 1.75 1.75V2h3a.75.75 0 0 1 0 1.5h-.64l-.68 10.03A2.5 2.5 0 0 1 9.69 16H6.31a2.5 2.5 0 0 1-2.49-2.47L3.14 3.5H2.5a.75.75 0 0 1 0-1.5h3v-.25Zm1.5 0V2h2v-.25a.25.25 0 0 0-.25-.25h-1.5a.25.25 0 0 0-.25.25ZM4.65 3.5l.67 9.96c.02.58.46 1.04.99 1.04h3.38c.53 0 .97-.46.99-1.04l.67-9.96h-6.7Z`})})}function st({source:e,sourceRange:t,commented:n,bindings:i,references:a,themePreference:o,onOpenReference:s,onCommentRange:c,commentComposer:l,reviewContext:u}){let d=(0,U.useRef)(null),p=!!l,[m,h]=(0,U.useState)(!1),[_,v]=(0,U.useState)(``);(0,U.useLayoutEffect)(()=>{if(!p)return;let e=window.requestAnimationFrame(()=>{d.current?.scrollIntoView({block:`nearest`,inline:`nearest`})});return()=>window.cancelAnimationFrame(e)},[p]);let y=(0,U.useCallback)(e=>{if(!(e instanceof Element))return;let t=e.closest(`[data-walkthrough-reference-id]`)?.dataset.walkthroughReferenceId;return t?a.get(t):void 0},[a]),b=(0,U.useCallback)(t=>{for(let{bindingKey:n,element:r}of Re(e,t,Object.keys(i))){let e=i[n],t=e?a.get(e):void 0;t&&(r.classList.add(`walkthrough-diagram-node--linked`),r.setAttribute(`role`,`button`),r.setAttribute(`tabindex`,`0`),r.setAttribute(`aria-label`,`${t.label}をコードで開く`),r.dataset.walkthroughReferenceId=t.id)}},[i,a,e]),x=t?u.placedComments.filter(({placement:e})=>at(e.range,t)):[],S=t?{pullRequestId:u.pullRequestId,commentCount:x.length,onOpenCodeReference:u.onOpenCommentCodeReference,diagramReferenceBindings:{sourceOid:u.sourceOid,onRendered:b,referenceFromTarget:y,resolveForPeek:u.onResolveReferenceForPeek,onOpenInReview:s},renderComments:e=>(0,$.jsxs)(`div`,{className:`mermaid-diagram-comments`,children:[x.length===0&&!m&&(0,$.jsx)(`p`,{className:`mermaid-comments-empty`,children:`この diagram へのコメントはありません。`}),x.map(({comment:n,placement:r})=>(0,$.jsx)(ee,{comment:n,variant:`sidebar`,draftScope:`${u.draftScope}:mermaid:${t.startLine}-${t.endLine}`,placement:r,markdownSourceOid:u.sourceOid,themePreference:o,cancelDraftOnEscape:!0,onActiveChange:u.onCommentActiveChange,onOpenCodeReference:e,onOpenRepositoryLink:u.onOpenRepositoryLink},n.id)),m?(0,$.jsx)(w,{body:_,label:`Comment on diagram`,pending:u.diagramCommentPending,error:u.diagramCommentError,validationError:void 0,placement:`line`,onBodyChange:v,onCancel:()=>{h(!1),v(``),u.onCancelDiagramComment()},onSubmit:()=>{u.onCreateExpandedDiagramComment(t,_).then(()=>{h(!1),v(``)}).catch(()=>void 0)}}):(0,$.jsxs)(`button`,{className:`mermaid-comment-action`,onClick:()=>{u.onCancelDiagramComment(),h(!0)},children:[(0,$.jsx)(g,{}),`Comment on diagram`]})]})}:void 0;return(0,$.jsx)(f,{source:e,themePreference:o,renderIdPrefix:`rvwWalkthrough`,review:S,renderInline:i=>(0,$.jsxs)(`div`,{className:`walkthrough-diagram-shell${n?` has-comment`:``}`,...t?{"data-rvw-navigation-start-line":t.startLine,"data-rvw-navigation-end-line":t.endLine}:{},children:[(0,$.jsxs)(`div`,{className:`walkthrough-diagram-toolbar`,children:[(0,$.jsx)(`span`,{children:`Mermaid diagram`}),(0,$.jsx)(`span`,{children:`強調された要素を選択してコードを開く · Cmd/Ctrlで反対のペイン`}),t&&(0,$.jsxs)(`button`,{className:`button--quiet walkthrough-diagram-comment`,onPointerDown:e=>{e.button===0&&(e.preventDefault(),c(t))},onClick:e=>{e.detail===0&&c(t)},children:[(0,$.jsx)(g,{}),`図全体へコメント`]}),i]}),(0,$.jsx)(r,{className:`walkthrough-diagram`,source:e,themePreference:o,renderIdPrefix:`rvwWalkthrough`,errorClassName:`walkthrough-diagram-error`,onRendered:b,onPointerDown:e=>{let t=y(e.target);t&&(e.preventDefault(),e.stopPropagation(),s(t,e.metaKey||e.ctrlKey))},onKeyDown:e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=y(e.target);t&&(e.preventDefault(),s(t,!1))}}),l&&(0,$.jsx)(`div`,{className:`walkthrough-diagram-comment-composer`,ref:d,children:l})]})})}var ct=(0,U.createContext)(null);function lt({range:e,label:t,pending:n,error:r,onCancel:i,onSubmit:a}){let[o,s]=(0,U.useState)(``),c=t??(e.startLine===e.endLine?`L${e.startLine}へコメント`:`L${e.startLine}–${e.endLine}へコメント`);return(0,$.jsx)(w,{body:o,label:c,pending:n,error:r,validationError:void 0,placement:`line`,onBodyChange:s,onCancel:i,onSubmit:()=>a(o)})}var ut=({children:e,node:t,...n})=>{let r=(0,U.useContext)(ct),i=U.Children.count(e)===1?U.Children.only(e):null;if(!r||!(0,U.isValidElement)(i))return(0,$.jsx)(`pre`,{...n,children:e});let a=N(t);if(i.props.className===`language-html-preview`&&a){let e=r.diagramCommentRange&&r.diagramCommentRange.startLine>=a.startLine&&r.diagramCommentRange.endLine<=a.endLine?r.diagramCommentRange:null;return(0,$.jsx)(nt,{source:it(i.props.children).replace(/\n$/u,``),fenceRange:a,pullRequestId:r.pullRequestId,sourceOid:r.sourceOid,references:r.references,placedComments:r.placedComments,activeCommentId:r.activeCommentId,navigationLine:r.navigationLine,themePreference:r.themePreference,onOpenReference:r.onOpenReference,onOpenRepositoryLink:r.onOpenRepositoryLink,onCommentRange:r.onCommentRange,onActivateComment:r.onActivateComment,commentComposer:t=>e?(0,$.jsx)(lt,{range:e,label:t,pending:r.diagramCommentPending,error:r.diagramCommentError,onCancel:r.onCancelDiagramComment,onSubmit:t=>r.onSubmitDiagramComment(e,t)},`${e.startLine}:${e.endLine}`):null})}return i.props.className===`language-mermaid`?(0,$.jsx)(st,{source:it(i.props.children).trim(),sourceRange:a,commented:!!(a&&r.activeCommentId&&r.placedComments.some(({comment:e,placement:t})=>e.id===r.activeCommentId&&t.range&&t.range.startLine<=a.endLine&&t.range.endLine>=a.startLine)),bindings:r.diagramBindings,references:r.references,themePreference:r.themePreference,onOpenReference:r.onOpenReference,onCommentRange:r.onCommentRange,commentComposer:a&&at(a,r.diagramCommentRange)?(0,$.jsx)(lt,{range:a,pending:r.diagramCommentPending,error:r.diagramCommentError,onCancel:r.onCancelDiagramComment,onSubmit:e=>r.onSubmitDiagramComment(a,e)},`${a.startLine}:${a.endLine}`):null,reviewContext:r}):(0,$.jsx)(`pre`,{...n,children:e})},dt=(0,U.memo)(function({pullRequestId:e,body:t,diagramBindings:n,references:r,placedComments:i,activeCommentId:a,navigationLine:s,selectedRange:c,selectionComposerOpen:l,diagramCommentRange:f,markdownSourceOid:p,draftScope:m,themePreference:g,onOpenReference:_,onResolveReferenceForPeek:v,onOpenCommentCodeReference:b,onOpenRepositoryLink:x,onCommentActiveChange:S,onActivateComment:C,onCommentRange:ne,diagramCommentPending:w,diagramCommentError:E,onCancelDiagramComment:O,onSubmitDiagramComment:ie,onCreateExpandedDiagramComment:k}){let A=(0,U.useMemo)(()=>Ce(t),[t]),j=(0,U.useMemo)(()=>i.filter(({placement:e})=>{let t=e.range;return!(t&&A.some(e=>t.startLine>=e.startLine&&t.endLine<=e.endLine))}),[A,i]),M=(0,U.useMemo)(()=>j.map(({comment:e,placement:t})=>({id:e.id,range:t.range})),[j]),N=(0,U.useMemo)(()=>new Map(j.map(({comment:e,placement:t})=>[e.id,{comment:e,placement:t}])),[j]),oe=(0,U.useCallback)(({node:e,children:t,...n})=>{let r=F(e);return r.length===0?(0,$.jsx)(`div`,{...n,children:t}):(0,$.jsx)(`div`,{className:`markdown-inline-comments`,children:r.map(e=>{let t=N.get(e);return t?(0,$.jsx)(ee,{comment:t.comment,variant:`inline`,draftScope:m,placement:t.placement,markdownSourceOid:p,themePreference:g,onActiveChange:S,onOpenCodeReference:b,onOpenRepositoryLink:x},e):null})})},[N,m,p,S,b,x,g]);return(0,$.jsx)(ct.Provider,{value:{pullRequestId:e,sourceOid:p,diagramBindings:n,references:r,placedComments:i,activeCommentId:a,navigationLine:s,diagramCommentRange:f,themePreference:g,onOpenReference:_,onResolveReferenceForPeek:v,onOpenCommentCodeReference:b,onOpenRepositoryLink:x,onCommentActiveChange:S,onActivateComment:C,onCommentRange:ne,diagramCommentPending:w,diagramCommentError:E,onCancelDiagramComment:O,onSubmitDiagramComment:ie,onCreateExpandedDiagramComment:k,draftScope:m},children:(0,$.jsx)(`article`,{className:`walkthrough-markdown`,children:(0,$.jsx)(u,{rehypePlugins:[D,[re,T],[P,{annotations:M,activeCommentId:a,selectedRange:c,composerOpen:l}]],remarkPlugins:[d],urlTransform:e=>e.startsWith(`rvw-ref:`)?e:o(e),components:{div:oe,table:I,a:({href:e,children:t,node:n,...i})=>{let a=y(e),o=a?r.get(a):void 0;return o?(0,$.jsx)(h,{reference:o,className:`walkthrough-inline-reference`,onOpen:_,children:t}):(0,$.jsx)(`a`,{...ae(n),...i,href:e,children:t})},img:({alt:e,title:t,node:n})=>(0,$.jsx)(te,{alt:e,title:t,sourceAttributes:ae(n)}),pre:ut},children:t})})})});function ft({walkthrough:e,paneId:r,comments:i,activeCommentId:a,navigationTarget:o,onNavigationApplied:c,themePreference:l,onCommentActiveChange:u,onActivateComment:d,onOpenReference:f,onResolveReferenceForPeek:m,onOpenCommentCodeReference:h,onOpenRepositoryLink:v,onDeleted:y}){let x=t(),te=s(r,{kind:`walkthrough`,id:e.id,title:e.title,sourceOid:e.sourceOid}),T=(0,U.useRef)(null),E=(0,U.useRef)(null),D=(0,U.useRef)(c);D.current=c;let[re,O]=(0,U.useState)(!1),[k,M]=(0,U.useState)(null),[ae,N]=(0,U.useState)(null),[P,F]=(0,U.useState)(null),[I,L]=(0,U.useState)(``),[se,R]=(0,U.useState)(null),z=(0,U.useRef)(0),B=(0,U.useRef)(null),V=(0,U.useRef)(e);V.current=e;let H=(0,U.useRef)({onOpenReference:f,onResolveReferenceForPeek:m,onOpenCommentCodeReference:h,onOpenRepositoryLink:v,onCommentActiveChange:u,onActivateComment:d});H.current={onOpenReference:f,onResolveReferenceForPeek:m,onOpenCommentCodeReference:h,onOpenRepositoryLink:v,onCommentActiveChange:u,onActivateComment:d};let ce=(0,U.useMemo)(()=>new Map(e.references.map(e=>[e.id,e])),[e.references]);(0,U.useLayoutEffect)(()=>{if(!o||E.current===o.requestId)return;let e=o.requestId,t=window.requestAnimationFrame(()=>{let t=T.current;if(!t)return;if(o.line===null){t.scrollIntoView({behavior:`auto`,block:`start`,inline:`nearest`}),E.current=e,D.current(e);return}let n=String(o.line),r=t.querySelector(`[data-rvw-navigation-start-line="${n}"]`)??t.querySelector(`[data-rvw-source-start-line="${n}"]`)??[...t.querySelectorAll(`[data-rvw-navigation-start-line]`)].find(e=>{let t=Number(e.dataset.rvwNavigationStartLine),n=Number(e.dataset.rvwNavigationEndLine);return t<=o.line&&n>=o.line}),i=r?.closest(`details:not([open])`);i&&(i.open=!0),r&&(r.scrollIntoView({behavior:`auto`,block:`center`,inline:`nearest`}),E.current=e,D.current(e))});return()=>window.cancelAnimationFrame(t)},[o]);let le=(0,U.useCallback)((e,t)=>{z.current+=1;let n=z.current;B.current!==null&&(window.clearTimeout(B.current),B.current=null),R(null),H.current.onOpenReference(V.current,e,t).then(e=>{n!==z.current||!e||(R(e),B.current=window.setTimeout(()=>{R(null),B.current=null},rt))})},[]),ue=(0,U.useCallback)((e,t)=>H.current.onResolveReferenceForPeek(V.current,e,t),[]),de=(0,U.useCallback)((e,t,n)=>H.current.onOpenCommentCodeReference(e,t,n),[]),fe=(0,U.useCallback)((e,t,n)=>H.current.onOpenRepositoryLink(e,t,n),[]),pe=(0,U.useCallback)((e,t)=>H.current.onCommentActiveChange(e,t),[]),me=(0,U.useCallback)(e=>H.current.onActivateComment(e),[]);(0,U.useEffect)(()=>()=>{z.current+=1,B.current!==null&&window.clearTimeout(B.current)},[]);let W=(0,U.useMemo)(()=>i.filter(t=>t.target.kind===`walkthrough`&&t.target.walkthroughId===e.id),[i,e.id]),he=W.reduce((e,t)=>e+t.posts.length,0),ge=(0,U.useMemo)(()=>[...W].sort((e,t)=>e.id.localeCompare(t.id)),[W]),_e=n({queryKey:[`walkthrough-comment-placements`,e.id,e.body,ge.map(e=>[e.id,e.target])],queryFn:async({signal:t})=>await j(e.pullRequestId,ge.map(({id:e})=>e),[{kind:`walkthrough`,walkthroughId:e.id}],t),enabled:ge.length>0,staleTime:1/0}),G=(0,U.useMemo)(()=>{let e=new Map(_e.data?.comments.map(({commentId:e,placements:t})=>[e,t[0]?.placement])??[]);return W.flatMap(t=>{let n=e.get(t.id);return n?[{comment:t,placement:n}]:[]})},[_e.data,W]),ve=(0,U.useMemo)(()=>G.filter(({placement:e})=>!e.outdated&&e.range!==null),[G]),ye=(0,U.useMemo)(()=>G.filter(({comment:e,placement:t})=>e.target.kind===`walkthrough`&&e.target.startLine===null||t.outdated),[G]),K=ne({mutationFn:async({range:t,body:n})=>await ie(`/api/comments`,A({pullRequestId:e.pullRequestId,target:{kind:`walkthrough`,walkthroughId:e.id,startLine:t?.startLine??null,endLine:t?.endLine??null},body:n,authorLabel:`You`})),onMutate:async()=>await C(x,e.pullRequestId),onError:()=>_(x,e.pullRequestId),onSuccess:({comment:t})=>{window.getSelection()?.removeAllRanges(),L(``),O(!1),M(null),N(null),F(null),p(x,e.pullRequestId,t)}}),q=(0,U.useRef)(K);q.current=K;let be=ne({mutationFn:async()=>await ie(`/api/pull-requests/${e.pullRequestId}/walkthroughs/${e.id}`,{...A({}),method:`DELETE`}),onSuccess:async()=>{y(e),await Promise.all([x.invalidateQueries({queryKey:[`walkthroughs`]}),x.invalidateQueries({queryKey:[`walkthrough`]}),x.invalidateQueries({queryKey:[`comments`]}),x.invalidateQueries({queryKey:[`change-sequence`]})])}}),xe=W.filter(e=>e.resolvedAt===null).length,Se=()=>{let e=W.length===0?`紐づくコメントはありません。`:`紐づくコメント ${W.length}件と投稿 ${he}件も削除されます。`;window.confirm(`このウォークスルーを削除します。\n${e}\nコピー済みの参照は無効になります。\n\nこの操作は元に戻せません。`)&&be.mutate()},Ce=k?k.startLine===k.endLine?`L${k.startLine}`:`L${k.startLine}–${k.endLine}`:null,J=(0,U.useCallback)(()=>{window.getSelection()?.removeAllRanges(),q.current.reset(),L(``),M(null),N(null),F(null)},[]),Y=(0,U.useCallback)(e=>{q.current.reset(),L(``),O(!1),M(null),N(e),F(`diagram`)},[]),we=(0,U.useCallback)((e,t)=>{q.current.mutate({range:e,body:t})},[]),Te=(0,U.useCallback)(async(e,t)=>{await q.current.mutateAsync({range:e,body:t})},[]),X=k?(0,$.jsx)(w,{body:I,label:`${Ce??`選択範囲`}へコメント`,pending:K.isPending,error:K.error,validationError:void 0,placement:`line`,onBodyChange:L,onCancel:J,onSubmit:()=>K.mutate({range:k,body:I})}):null,Ee=(0,$.jsx)(dt,{pullRequestId:e.pullRequestId,body:e.body,diagramBindings:e.diagramBindings,references:ce,placedComments:ve,activeCommentId:a,navigationLine:o?.line??null,selectedRange:P===`selection`?k:null,selectionComposerOpen:P===`selection`,diagramCommentRange:ae,markdownSourceOid:e.sourceOid,draftScope:te,themePreference:l,onOpenReference:le,onResolveReferenceForPeek:ue,onOpenCommentCodeReference:de,onOpenRepositoryLink:fe,onCommentActiveChange:pe,onActivateComment:me,onCommentRange:Y,diagramCommentPending:K.isPending,diagramCommentError:K.error,onCancelDiagramComment:J,onSubmitDiagramComment:we,onCreateExpandedDiagramComment:Te});return(0,$.jsxs)(`div`,{className:`walkthrough-viewer`,ref:T,children:[(0,$.jsxs)(`header`,{className:`walkthrough-viewer-header`,children:[(0,$.jsxs)(`div`,{className:`walkthrough-viewer-title`,children:[(0,$.jsx)(`span`,{className:`walkthrough-viewer-icon`,children:(0,$.jsx)(S,{})}),(0,$.jsxs)(`div`,{className:`walkthrough-viewer-heading-copy`,children:[(0,$.jsx)(`span`,{className:`walkthrough-kicker`,children:`Agent-provided walkthrough`}),(0,$.jsx)(`h2`,{title:e.title,children:e.title})]})]}),(0,$.jsxs)(`div`,{className:`walkthrough-viewer-actions`,children:[(0,$.jsxs)(`button`,{className:`comment-icon-button walkthrough-comment-button`,"aria-label":`ウォークスルー全体へコメント`,title:`ウォークスルー全体へコメント`,"aria-pressed":re,onClick:()=>{K.reset(),L(``),M(null),N(null),F(null),O(e=>!e)},children:[(0,$.jsx)(g,{}),xe>0&&(0,$.jsx)(`span`,{children:xe})]}),(0,$.jsx)(`button`,{className:`comment-icon-button walkthrough-delete-button`,"aria-label":`ウォークスルーを削除`,title:`ウォークスルーを削除`,disabled:be.isPending,onClick:Se,children:(0,$.jsx)(ot,{})})]}),se&&(0,$.jsx)(`div`,{className:`code-reference-notice walkthrough-reference-notice`,role:`status`,"aria-live":`polite`,children:se})]}),(0,$.jsx)(b,{error:be.error}),(0,$.jsx)(b,{error:_e.error}),(re||ye.length>0)&&(0,$.jsxs)(`div`,{className:`walkthrough-comment-area`,children:[re&&(0,$.jsx)(w,{body:I,label:`ウォークスルー全体へコメント`,pending:K.isPending,error:K.error,validationError:void 0,placement:`file`,onBodyChange:L,onCancel:()=>{K.reset(),L(``),O(!1)},onSubmit:()=>K.mutate({range:null,body:I})}),ye.map(({comment:t,placement:n})=>(0,$.jsx)(ee,{comment:t,variant:`inline`,draftScope:te,placement:n,markdownSourceOid:e.sourceOid,themePreference:l,onActiveChange:u,onOpenCodeReference:h,onOpenRepositoryLink:v},t.id))]}),(0,$.jsx)(oe,{className:`walkthrough-markdown-surface`,selectedRange:k,composerOpen:P===`selection`,onSelection:e=>{if(!e){M(null),F(e=>e===`selection`?null:e);return}K.reset(),L(``),O(!1),M(e),N(null),F(null)},onOpenComposer:()=>F(`selection`),composer:X,children:(0,$.jsx)(`div`,{"data-pane-find-surface":!0,"data-pane-find-text":!0,children:Ee})})]})}export{ft as WalkthroughViewer};
|
|
@@ -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)}.diff-header-file-actions{flex:none;align-items:center;gap:6px;display:inline-flex}.file-structure-references{flex:none;display:grid;position:relative}.file-structure-references-trigger[aria-expanded=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.file-structure-references-trigger[aria-disabled=true]{cursor:not-allowed;opacity:.48}.file-structure-references-trigger[aria-disabled=true]:hover{border-color:var(--line-strong);color:var(--muted);background:0 0}.file-structure-references-trigger.is-error{border-color:color-mix(in srgb, var(--danger) 55%, var(--line));color:var(--danger)}.file-structure-references-error-badge{border:1px solid var(--panel);background:var(--danger);color:#fff;pointer-events:none;border-radius:999px;place-items:center;width:13px;height:13px;font-size:9px;font-weight:800;line-height:1;display:grid;position:absolute;top:-4px;right:-4px}.file-structure-references-popover{z-index:1000;border:1px solid var(--line-strong);background:var(--panel);width:min(340px,100vw - 16px);max-height:min(420px,100vh - 24px);box-shadow:0 14px 36px var(--shadow-medium);border-radius:9px;padding:5px;display:grid;position:fixed;overflow:auto}.file-structure-references-popover>button{min-width:0;color:var(--text);text-align:left;background:0 0;border:0;border-radius:6px;justify-items:start;gap:3px;padding:9px 10px;display:grid}.file-structure-references-popover>button:hover,.file-structure-references-popover>button:focus-visible{background:var(--accent-soft);outline:none}.file-structure-references-popover strong,.file-structure-references-popover>button>span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.file-structure-references-popover strong{font-size:12px}.file-structure-references-popover>button>span{color:var(--muted);font-size:11px}.file-structure-references-additional{color:var(--accent);margin-left:6px;font-weight:750;display:inline-block}.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-content>.comment-thread{cursor:pointer}.comment-list-item.is-selected>.comment-list-item-content>.comment-thread{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-soft)}.comment-list-item-content{flex:1;min-width:0}.comment-list-item-content>.comment-thread{min-width:0}.comment-list-item-content>.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-export-menu{flex:none;position:static}.structure-export-menu>summary{align-items:center;gap:4px;list-style:none;display:flex}.structure-export-menu>summary::-webkit-details-marker{display:none}.structure-export-menu>summary[aria-disabled=true]{opacity:.6;cursor:wait}.structure-export-menu[open]>summary{border-color:var(--accent);background:var(--accent-soft)}.structure-export-popover{z-index:16;border:1px solid var(--line-strong);background:var(--panel);width:min(272px,100% - 16px);box-shadow:0 10px 24px var(--shadow-large);border-radius:8px;gap:5px;padding:7px;display:grid;position:absolute;top:calc(100% + 6px);right:8px}.structure-export-popover>button{border-color:var(--line);color:var(--text);background:var(--panel);text-align:left;grid-template-columns:42px minmax(0,1fr);align-items:baseline;gap:6px;padding:7px 8px;display:grid}.structure-export-popover>button:hover{border-color:var(--accent);background:var(--accent-soft)}.structure-export-popover>button strong{font:700 11px/1.3 var(--mono)}.structure-export-popover>button span,.structure-export-popover>p{color:var(--muted);font-size:10px;line-height:1.4}.structure-export-popover>p{margin:2px 3px 1px}.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}}
|