@diffohq/diffo 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -4
- package/dist/cli.mjs +632 -32
- package/dist/client/assets/{abnfDiagram-VCTEODGH-BK74b0Uj.js → abnfDiagram-O67JEVCF-b6l_FGHi.js} +1 -1
- package/dist/client/assets/{arc-BZJjnFHJ.js → arc-Cz0jZwLH.js} +1 -1
- package/dist/client/assets/architecture-7GRP2DOG-BXYREMFQ.js +1 -0
- package/dist/client/assets/architectureDiagram-NJMV4G6O-CJdtqKce.js +36 -0
- package/dist/client/assets/{blockDiagram-I7D4REHJ-BWSjZ0YR.js → blockDiagram-BEXU5L5S-Ci-lnLGN.js} +15 -4
- package/dist/client/assets/c4Diagram-YGBWAQC7-DDO2mTMB.js +38 -0
- package/dist/client/assets/channel-CtvNwuQX.js +1 -0
- package/dist/client/assets/chunk-3FUC2YCW-VyswqFt3.js +2 -0
- package/dist/client/assets/{chunk-GVQU2GXP-3NWb-Kjs.js → chunk-5DYCD2WN-B4MBZW5P.js} +1 -1
- package/dist/client/assets/{chunk-PWAF6VOD-BRN4CzQ0.js → chunk-742MDFTN-Cxvmvrid.js} +1 -1
- package/dist/client/assets/chunk-7INBJB4K-DkBnRFbH.js +62 -0
- package/dist/client/assets/chunk-7M6MHVWA-BvJgBwEi.js +213 -0
- package/dist/client/assets/chunk-7PRAP22T-OfiMNi_y.js +1 -0
- package/dist/client/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
- package/dist/client/assets/{chunk-FOHPRMQF-DHwB1DNv.js → chunk-FOHPRMQF-DzxwRta7.js} +9 -9
- package/dist/client/assets/{chunk-SVP7TREG-CsO-w42m.js → chunk-GTNCS2PH-BodN5cRQ.js} +1 -1
- package/dist/client/assets/{chunk-F27PBJKO-C6X74WsU.js → chunk-GWA4HPMP-KifxxZcy.js} +1 -1
- package/dist/client/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
- package/dist/client/assets/chunk-MBY4JIJT-rw02bHlj.js +72 -0
- package/dist/client/assets/chunk-NETBCI7D-CWjhZoou.js +1 -0
- package/dist/client/assets/chunk-O7XYJQB3-CyxnSfZ3.js +126 -0
- package/dist/client/assets/chunk-UA2S7LBM-BReIFgsu.js +1 -0
- package/dist/client/assets/{chunk-POPQ4Y6H-DKwUAqbe.js → chunk-WEXAMYUT-DHwMy8v7.js} +1 -1
- package/dist/client/assets/{chunk-XXDRQBXY-BikhrMBF.js → chunk-XXDRQBXY-C398QZbS.js} +1 -1
- package/dist/client/assets/{chunk-OSK3NFVY-BJ8i4cd-.js → chunk-Z7XXMR3K-hEV1GU64.js} +3 -3
- package/dist/client/assets/{chunk-75Z2AOVW-B_bGdfJP.js → chunk-ZIGJFQKS-DJJL7llO.js} +2 -2
- package/dist/client/assets/classDiagram-v2-NBCMYWYE-pSGZI880.js +217 -0
- package/dist/client/assets/{core-BJUznnCg.js → core-C05I4wHV.js} +2 -2
- package/dist/client/assets/cose-bilkent-JH36ORCC-DNV8Dqd8.js +1 -0
- package/dist/client/assets/cynefin-OW5HDTMX-DF-6FOgS.js +1 -0
- package/dist/client/assets/cynefinDiagram-VND7K2PF-D3-iJq2J.js +62 -0
- package/dist/client/assets/cytoscape.esm-Yq6u8L66.js +321 -0
- package/dist/client/assets/dagre-6A5THRUB-C9FDZkaa.js +4 -0
- package/dist/client/assets/diagram-22UHCM2B-CfSJBDyN.js +200 -0
- package/dist/client/assets/{diagram-VX7I27RA-BmHtC5T2.js → diagram-3UASUU5V-D946baYo.js} +2 -2
- package/dist/client/assets/{diagram-VSXAHHWV-BMNFierD.js → diagram-ATOU4E4O-CGrjukoA.js} +3 -3
- package/dist/client/assets/{diagram-S7CK7UJ4-C1jP2NX5.js → diagram-CDSNMT55-B47UPtWq.js} +3 -3
- package/dist/client/assets/{diagram-Z3DM3KII-CzCV6KsS.js → diagram-MLGK6HIB-D06yEd5R.js} +1 -1
- package/dist/client/assets/diagram-MPIPVDR6-BRUBT2B9.js +41 -0
- package/dist/client/assets/{dist-bii_eoxi.js → dist-BfTRyLGm.js} +1 -1
- package/dist/client/assets/dist-DVw88SBM.js +142 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-DuVnjPWa.js → ebnfDiagram-ZINNZB2B-BnuExfrd.js} +1 -1
- package/dist/client/assets/elk-276RUBZZ-BmdcLjR9.js +27 -0
- package/dist/client/assets/{engine-oniguruma-BlIEwGaN.js → engine-oniguruma-Bw1dOuOO.js} +1 -1
- package/dist/client/assets/{erDiagram-RLTQ6QDP-CtwYHyZu.js → erDiagram-OPXOYQCR-CKCR3jQT.js} +15 -15
- package/dist/client/assets/eventmodeling-NTZA5JFV-C7ouopD6.js +1 -0
- package/dist/client/assets/flowDiagram-KWPJA3E3-C2o4wCpi.js +1 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-CR8Sa06t.js → ganttDiagram-FUAMR5RP-BwkoweG7.js} +2 -2
- package/dist/client/assets/gitGraph-4MIJSDKK-M7_hHVyH.js +1 -0
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-C36JIyKh.js → gitGraphDiagram-X574FWY7-BVm_sLT_.js} +4 -4
- package/dist/client/assets/index-BEG1ZxrX.css +1 -0
- package/dist/client/assets/index-BwDjlzOZ.js +91 -0
- package/dist/client/assets/info-A6RAGUB7-DPBs3m_X.js +1 -0
- package/dist/client/assets/infoDiagram-VRGFBTTK-DDb3KyOP.js +2 -0
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-CsPYEqSH.js → ishikawaDiagram-OU5B5YK6-CPt4RDlr.js} +2 -2
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-DbHeKN0X.js → journeyDiagram-ZHPQQLJL-ECQSHJ0N.js} +3 -3
- package/dist/client/assets/{kanban-definition-UXKFOSKX-CbYeTY2r.js → kanban-definition-PNTS6WVX-tAmonxA8.js} +10 -10
- package/dist/client/assets/{katex-CXMH3UgJ.js → katex-ZlcWpGUi.js} +2 -2
- package/dist/client/assets/{line-BeOqlVB1.js → line-x6vAh41a.js} +1 -1
- package/dist/client/assets/linear-BqczUNss.js +1 -0
- package/dist/client/assets/{mermaid-parser.core-BLSiQUXp.js → mermaid-parser.core-siQPZsry.js} +3 -3
- package/dist/client/assets/mermaid.core-CLHTQVF-.js +44 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-o49TTsg4.js → mindmap-definition-NLK3R4M7-C9fnEdyl.js} +25 -25
- package/dist/client/assets/packet-AYTQ26CC-DAeK0Q4n.js +1 -0
- package/dist/client/assets/{pegDiagram-XKGWAZYB-CZxoewnI.js → pegDiagram-GJSIUBJH-BrWBFYPO.js} +1 -1
- package/dist/client/assets/pie-WAS4IAKB-CnieihkO.js +1 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-dAiwtigh.js → pieDiagram-5QR66LMP-Bp5f6Eal.js} +2 -2
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-mefTaSBl.js → quadrantDiagram-O4NWA36T-ECuLA3RS.js} +3 -3
- package/dist/client/assets/radar-RG4KPBEZ-BJXkERy0.js +1 -0
- package/dist/client/assets/railroad-74A4TZTK-Di61fiV5.js +1 -0
- package/dist/client/assets/railroad-abnf-HS5TGJTU-DCBYLLLl.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-VWOalqH1.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-BTTWaHra.js +1 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-DdhfhlaU.js → railroadDiagram-XR7U4H2S-Dn2WPOQe.js} +1 -1
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-BVrRfVMy.js → requirementDiagram-PLB6GJNP-uuvtvHmq.js} +11 -11
- package/dist/client/assets/sankeyDiagram-IPEJSGJF-BXk6X0af.js +40 -0
- package/dist/client/assets/sequenceDiagram-PO4LG4MO-BsPoSXhg.js +169 -0
- package/dist/client/assets/{src-CfhDi0bm.js → src-B4djUhOi.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-GCMORJYK-cCml5k6n.js +291 -0
- package/dist/client/assets/swimlanes-2SLR337P-Dh7v55ZA.js +1 -0
- package/dist/client/assets/swimlanesDiagram-TC7HE7FX-q8VF72XO.js +8 -0
- package/dist/client/assets/timeline-definition-EJHVYXUP-LFjkFV14.js +120 -0
- package/dist/client/assets/treeView-Q6P3EWNA-RYZHSXeB.js +1 -0
- package/dist/client/assets/treemap-WGGIJYW6-UVw_-EPz.js +1 -0
- package/dist/client/assets/usecaseDiagram-POWQR4AR-DZfPogyb.js +328 -0
- package/dist/client/assets/vennDiagram-UO4OBE2U-CN7Ldg-2.js +34 -0
- package/dist/client/assets/wardley-WFR3VGLG-CXPbbIy_.js +1 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-CFaIuWQk.js → wardleyDiagram-VNRHLVJA-5p0A7_g6.js} +3 -3
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-et5vk4QS.js → xychartDiagram-PMCCYNJV-gJ7xwZXO.js} +3 -3
- package/dist/client/index.html +2 -2
- package/package.json +4 -4
- package/plugin.json +1 -1
- package/skills/diffo/SKILL.md +20 -10
- package/dist/client/assets/architecture-7GRP2DOG-BMofp_0u.js +0 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-BBjd1L77.js +0 -36
- package/dist/client/assets/c4Diagram-7LVT6UL2-z-xUGKCJ.js +0 -38
- package/dist/client/assets/channel-CmX7fcUa.js +0 -1
- package/dist/client/assets/chunk-4HAMMTFA-CAN-T2o-.js +0 -62
- package/dist/client/assets/chunk-DU6HZSFF-wyqPpFTy.js +0 -125
- package/dist/client/assets/chunk-GMAD6QVW-DBossm8a.js +0 -72
- package/dist/client/assets/chunk-IMKFNOWR-BCvjP66C.js +0 -231
- package/dist/client/assets/chunk-L3NEJ4N5-DppEbElX.js +0 -1
- package/dist/client/assets/chunk-P2QGCYS3-fvNVbdI1.js +0 -1
- package/dist/client/assets/chunk-SHT3W25Y-BfzjiqOe.js +0 -168
- package/dist/client/assets/chunk-TICWLB2K-DPzmokY4.js +0 -206
- package/dist/client/assets/classDiagram-ZZMXUADV-BSMgXeCj.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-BSMgXeCj.js +0 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-CBu7-BXr.js +0 -1
- package/dist/client/assets/cynefin-OW5HDTMX-iJEmw--0.js +0 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-B4JnaLZu.js +0 -62
- package/dist/client/assets/cytoscape.esm-CGd-uY3x.js +0 -321
- package/dist/client/assets/dagre-GXQ25YYZ-bmDafESr.js +0 -4
- package/dist/client/assets/dagre-PrKaheQc.js +0 -1
- package/dist/client/assets/diagram-UQ7AKVKN-DssGkq6D.js +0 -41
- package/dist/client/assets/dist-BT7WB1vp.js +0 -142
- package/dist/client/assets/eventmodeling-NTZA5JFV-DBQsn9JF.js +0 -1
- package/dist/client/assets/flowDiagram-HODETNUW-C_zt1wER.js +0 -1
- package/dist/client/assets/gitGraph-4MIJSDKK-DoWc_DJ0.js +0 -1
- package/dist/client/assets/index-BUq9UmeC.js +0 -91
- package/dist/client/assets/index-BpeDzG-X.css +0 -1
- package/dist/client/assets/info-A6RAGUB7-DULcTga7.js +0 -1
- package/dist/client/assets/infoDiagram-27XIBGKW-eQbUxJ9T.js +0 -2
- package/dist/client/assets/linear-D5d3UlAm.js +0 -1
- package/dist/client/assets/mermaid.core-BoXUi08V.js +0 -44
- package/dist/client/assets/packet-AYTQ26CC-Blxpg-nI.js +0 -1
- package/dist/client/assets/pie-WAS4IAKB-D-fqeiW7.js +0 -1
- package/dist/client/assets/radar-RG4KPBEZ-VaODqy4w.js +0 -1
- package/dist/client/assets/railroad-74A4TZTK-BwoigfOV.js +0 -1
- package/dist/client/assets/railroad-abnf-HS5TGJTU-BYYKbIBi.js +0 -1
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-BFA23uel.js +0 -1
- package/dist/client/assets/railroad-peg-WCYAUIDC-Cq02Hm_P.js +0 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-BalSSH4U.js +0 -40
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-B2KsE_Z_.js +0 -162
- package/dist/client/assets/stateDiagram-D77RDMKH-CoH6bKG5.js +0 -1
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-rXsredo-.js +0 -1
- package/dist/client/assets/swimlanes-42K2YHIH-3IkzoE1X.js +0 -1
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-BeXrrDxh.js +0 -8
- package/dist/client/assets/timeline-definition-24CTP7MA-B2M9pP5h.js +0 -120
- package/dist/client/assets/treeView-Q6P3EWNA-Brp55dHV.js +0 -1
- package/dist/client/assets/treemap-WGGIJYW6-zRe9RDJV.js +0 -1
- package/dist/client/assets/vennDiagram-4TSXK5OY-PNF-rFET.js +0 -34
- package/dist/client/assets/wardley-WFR3VGLG-BSDDZIR6.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./mermaid-parser.core-BLSiQUXp.js";import{n as t}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as n,p as r}from"./src-CfhDi0bm.js";import{H as i,K as a,U as o,Y as s,a as c,b as l,f as u,s as d,v as f,w as p,x as m,y as h}from"./chunk-DU6HZSFF-wyqPpFTy.js";import{g,i as _,m as v}from"./chunk-75Z2AOVW-B_bGdfJP.js";import{t as y}from"./chunk-JWPE2WC7-DVXcaiue.js";import{t as b}from"./chunk-2Q5K7J3B-C1jixKkw.js";var x={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},ee=u.gitGraph,S=t(()=>_({...ee,...l().gitGraph}),`getConfig`),C=new b(()=>{let e=S(),t=e.mainBranchName,n=e.mainBranchOrder;return{mainBranchName:t,commits:new Map,head:null,branchConfig:new Map([[t,{name:t,order:n}]]),branches:new Map([[t,null]]),currBranch:t,direction:`LR`,seq:0,options:{}}});function w(){return v({length:7})}t(w,`getID`);function T(e,t){let n=Object.create(null);return e.reduce((e,r)=>{let i=t(r);return n[i]||(n[i]=!0,e.push(r)),e},[])}t(T,`uniqBy`);var te=t(function(e){C.records.direction=e},`setDirection`),ne=t(function(e){n.debug(`options str`,e),e=e?.trim(),e||=`{}`;try{C.records.options=JSON.parse(e)}catch(e){n.error(`error while parsing gitGraph options`,e.message)}},`setOptions`),re=t(function(){return C.records.options},`getOptions`),ie=t(function(e){let t=e.msg,r=e.id,i=e.type,a=e.tags;n.info(`commit`,t,r,i,a),n.debug(`Entering commit:`,t,r,i,a);let o=S();r=d.sanitizeText(r,o),t=d.sanitizeText(t,o),a=a?.map(e=>d.sanitizeText(e,o));let s={id:r||C.records.seq+`-`+w(),message:t,seq:C.records.seq++,type:i??x.NORMAL,tags:a??[],parents:C.records.head==null?[]:[C.records.head.id],branch:C.records.currBranch};C.records.head=s,n.info(`main branch`,o.mainBranchName),C.records.commits.has(s.id)&&n.warn(`Commit ID ${s.id} already exists`),C.records.commits.set(s.id,s),C.records.branches.set(C.records.currBranch,s.id),n.debug(`in pushCommit `+s.id)},`commit`),ae=t(function(e){let t=e.name,r=e.order;if(t=d.sanitizeText(t,S()),C.records.branches.has(t))throw Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${t}")`);C.records.branches.set(t,C.records.head==null?null:C.records.head.id),C.records.branchConfig.set(t,{name:t,order:r}),E(t),n.debug(`in createBranch`)},`branch`),oe=t(e=>{let t=e.branch,r=e.id,i=e.type,a=e.tags,o=S();t=d.sanitizeText(t,o),r&&=d.sanitizeText(r,o);let s=C.records.branches.get(C.records.currBranch),c=C.records.branches.get(t),l=s?C.records.commits.get(s):void 0,u=c?C.records.commits.get(c):void 0;if(l&&u&&l.branch===t)throw Error(`Cannot merge branch '${t}' into itself.`);if(C.records.currBranch===t){let e=Error(`Incorrect usage of "merge". Cannot merge a branch to itself`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch abc`]},e}if(l===void 0||!l){let e=Error(`Incorrect usage of "merge". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`commit`]},e}if(!C.records.branches.has(t)){let e=Error(`Incorrect usage of "merge". Branch to be merged (`+t+`) does not exist`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch ${t}`]},e}if(u===void 0||!u){let e=Error(`Incorrect usage of "merge". Branch to be merged (`+t+`) has no commits`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`"commit"`]},e}if(l===u){let e=Error(`Incorrect usage of "merge". Both branches have same head`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch abc`]},e}if(r&&C.records.commits.has(r)){let e=Error(`Incorrect usage of "merge". Commit with id:`+r+` already exists, use different custom id`);throw e.hash={text:`merge ${t} ${r} ${i} ${a?.join(` `)}`,token:`merge ${t} ${r} ${i} ${a?.join(` `)}`,expected:[`merge ${t} ${r}_UNIQUE ${i} ${a?.join(` `)}`]},e}let f=c||``,p={id:r||`${C.records.seq}-${w()}`,message:`merged branch ${t} into ${C.records.currBranch}`,seq:C.records.seq++,parents:C.records.head==null?[]:[C.records.head.id,f],branch:C.records.currBranch,type:x.MERGE,customType:i,customId:!!r,tags:a??[]};C.records.head=p,C.records.commits.set(p.id,p),C.records.branches.set(C.records.currBranch,p.id),n.debug(C.records.branches),n.debug(`in mergeBranch`)},`merge`),se=t(function(e){let t=e.id,r=e.targetId,i=e.tags,a=e.parent;n.debug(`Entering cherryPick:`,t,r,i);let o=S();if(t=d.sanitizeText(t,o),r=d.sanitizeText(r,o),i=i?.map(e=>d.sanitizeText(e,o)),a=d.sanitizeText(a,o),!t||!C.records.commits.has(t)){let e=Error(`Incorrect usage of "cherryPick". Source commit id should exist and provided`);throw e.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:[`cherry-pick abc`]},e}let s=C.records.commits.get(t);if(s===void 0||!s)throw Error(`Incorrect usage of "cherryPick". Source commit id should exist and provided`);if(a&&!(Array.isArray(s.parents)&&s.parents.includes(a)))throw Error(`Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.`);let c=s.branch;if(s.type===x.MERGE&&!a)throw Error(`Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.`);if(!r||!C.records.commits.has(r)){if(c===C.records.currBranch){let e=Error(`Incorrect usage of "cherryPick". Source commit is already on current branch`);throw e.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:[`cherry-pick abc`]},e}let e=C.records.branches.get(C.records.currBranch);if(e===void 0||!e){let e=Error(`Incorrect usage of "cherry-pick". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:[`cherry-pick abc`]},e}let o=C.records.commits.get(e);if(o===void 0||!o){let e=Error(`Incorrect usage of "cherry-pick". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:[`cherry-pick abc`]},e}let l={id:C.records.seq+`-`+w(),message:`cherry-picked ${s?.message} into ${C.records.currBranch}`,seq:C.records.seq++,parents:C.records.head==null?[]:[C.records.head.id,s.id],branch:C.records.currBranch,type:x.CHERRY_PICK,tags:i?i.filter(Boolean):[`cherry-pick:${s.id}${s.type===x.MERGE?`|parent:${a}`:``}`]};C.records.head=l,C.records.commits.set(l.id,l),C.records.branches.set(C.records.currBranch,l.id),n.debug(C.records.branches),n.debug(`in cherryPick`)}},`cherryPick`),E=t(function(e){if(e=d.sanitizeText(e,S()),C.records.branches.has(e)){C.records.currBranch=e;let t=C.records.branches.get(C.records.currBranch);t===void 0||!t?C.records.head=null:C.records.head=C.records.commits.get(t)??null}else{let t=Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw t.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},t}},`checkout`);function D(e,t,n){let r=e.indexOf(t);r===-1?e.push(n):e.splice(r,1,n)}t(D,`upsert`);function O(e){let t=e.reduce((e,t)=>e.seq>t.seq?e:t,e[0]),r=``;e.forEach(function(e){r+=e===t?` *`:` |`});let i=[r,t.id,t.seq];for(let e in C.records.branches)C.records.branches.get(e)===t.id&&i.push(e);if(n.debug(i.join(` `)),t.parents&&t.parents.length==2&&t.parents[0]&&t.parents[1]){let n=C.records.commits.get(t.parents[0]);D(e,t,n),t.parents[1]&&e.push(C.records.commits.get(t.parents[1]))}else if(t.parents.length==0)return;else if(t.parents[0]){let n=C.records.commits.get(t.parents[0]);D(e,t,n)}e=T(e,e=>e.id),O(e)}t(O,`prettyPrintCommitHistory`);var ce=t(function(){n.debug(C.records.commits);let e=k()[0];O([e])},`prettyPrint`),le=t(function(){C.reset(),c()},`clear`),ue=t(function(){return[...C.records.branchConfig.values()].map((e,t)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${t}`)}).sort((e,t)=>(e.order??0)-(t.order??0)).map(({name:e})=>({name:e}))},`getBranchesAsObjArray`),de=t(function(){return C.records.branches},`getBranches`),fe=t(function(){return C.records.commits},`getCommits`),k=t(function(){let e=[...C.records.commits.values()];return e.forEach(function(e){n.debug(e.id)}),e.sort((e,t)=>e.seq-t.seq),e},`getCommitsArray`),A={commitType:x,getConfig:S,setDirection:te,setOptions:ne,getOptions:re,commit:ie,branch:ae,merge:oe,cherryPick:se,checkout:E,prettyPrint:ce,clear:le,getBranchesAsObjArray:ue,getBranches:de,getCommits:fe,getCommitsArray:k,getCurrentBranch:t(function(){return C.records.currBranch},`getCurrentBranch`),getDirection:t(function(){return C.records.direction},`getDirection`),getHead:t(function(){return C.records.head},`getHead`),setAccTitle:o,getAccTitle:h,getAccDescription:f,setAccDescription:i,setDiagramTitle:a,getDiagramTitle:p},pe=t((e,t)=>{y(e,t),e.dir&&t.setDirection(e.dir);for(let n of e.statements)me(n,t)},`populate`),me=t((e,r)=>{let i={Commit:t(e=>r.commit(he(e)),`Commit`),Branch:t(e=>r.branch(ge(e)),`Branch`),Merge:t(e=>r.merge(_e(e)),`Merge`),Checkout:t(e=>r.checkout(ve(e)),`Checkout`),CherryPicking:t(e=>r.cherryPick(ye(e)),`CherryPicking`)}[e.$type];i?i(e):n.error(`Unknown statement type: ${e.$type}`)},`parseStatement`),he=t(e=>({id:e.id,msg:e.message??``,type:e.type===void 0?x.NORMAL:x[e.type],tags:e.tags??void 0}),`parseCommit`),ge=t(e=>({name:e.name,order:e.order??0}),`parseBranch`),_e=t(e=>({branch:e.branch,id:e.id??``,type:e.type===void 0?void 0:x[e.type],tags:e.tags??void 0}),`parseMerge`),ve=t(e=>e.branch,`parseCheckout`),ye=t(e=>({id:e.id,targetId:``,tags:e.tags?.length===0?void 0:e.tags,parent:e.parent}),`parseCherryPicking`),be={parse:t(async t=>{let r=await e(`gitGraph`,t);n.debug(r),pe(r,A)},`parse`)},j=10,M=40,N=4,P=2,F=8,I=new Set([`redux`,`redux-dark`,`redux-color`,`redux-dark-color`]),L=12,R=new Set([`redux-color`,`redux-dark-color`]),xe=new Set([`dark`,`redux-dark`,`redux-dark-color`,`neo-dark`]),z=t((e,t,n=!1)=>n&&e>0?(e-1)%(t-1)+1:e%t,`calcColorIndex`),B=new Map,V=new Map,H=30,U=new Map,W=[],G=0,K=`LR`,Se=t(()=>{B.clear(),V.clear(),U.clear(),G=0,W=[],K=`LR`},`clear`),q=t(e=>{let t=document.createElementNS(`http://www.w3.org/2000/svg`,`text`);return(typeof e==`string`?e.split(/\\n|\n|<br\s*\/?>/gi):e).forEach(e=>{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`tspan`);n.setAttributeNS(`http://www.w3.org/XML/1998/namespace`,`xml:space`,`preserve`),n.setAttribute(`dy`,`1em`),n.setAttribute(`x`,`0`),n.setAttribute(`class`,`row`),n.textContent=e.trim(),t.appendChild(n)}),t},`drawText`),J=t(e=>{let n,r,i;return K===`BT`?(r=t((e,t)=>e<=t,`comparisonFunc`),i=1/0):(r=t((e,t)=>e>=t,`comparisonFunc`),i=0),e.forEach(e=>{let t=K===`TB`||K==`BT`?V.get(e)?.y:V.get(e)?.x;t!==void 0&&r(t,i)&&(n=e,i=t)}),n},`findClosestParent`),Ce=t(e=>{let t=``,n=1/0;return e.forEach(e=>{let r=V.get(e).y;r<=n&&(t=e,n=r)}),t||void 0},`findClosestParentBT`),we=t((e,t,n)=>{let r=n,i=n,a=[];e.forEach(e=>{let n=t.get(e);if(!n)throw Error(`Commit not found for key ${e}`);n.parents.length?(r=Ee(n),i=Math.max(r,i)):a.push(n),De(n,r)}),r=i,a.forEach(e=>{Oe(e,r,n)}),e.forEach(e=>{let n=t.get(e);if(n?.parents.length){let e=Ce(n.parents);r=V.get(e).y-M,r<=i&&(i=r);let t=B.get(n.branch).pos,a=r-j;V.set(n.id,{x:t,y:a})}})},`setParallelBTPos`),Te=t(e=>{let t=J(e.parents.filter(e=>e!==null));if(!t)throw Error(`Closest parent not found for commit ${e.id}`);let n=V.get(t)?.y;if(n===void 0)throw Error(`Closest parent position not found for commit ${e.id}`);return n},`findClosestParentPos`),Ee=t(e=>Te(e)+M,`calculateCommitPosition`),De=t((e,t)=>{let n=B.get(e.branch);if(!n)throw Error(`Branch not found for commit ${e.id}`);let r=n.pos,i=t+j;return V.set(e.id,{x:r,y:i}),{x:r,y:i}},`setCommitPosition`),Oe=t((e,t,n)=>{let r=B.get(e.branch);if(!r)throw Error(`Branch not found for commit ${e.id}`);let i=t+n,a=r.pos;V.set(e.id,{x:a,y:i})},`setRootPosition`),ke=t((e,t,n,r,i,a)=>{let{theme:o}=m(),s=I.has(o??``),c=R.has(o??``),l=xe.has(o??``);if(a===x.HIGHLIGHT)e.append(`rect`).attr(`x`,n.x-10+(s?3:0)).attr(`y`,n.y-10+(s?3:0)).attr(`width`,s?14:20).attr(`height`,s?14:20).attr(`class`,`commit ${t.id} commit-highlight${z(i,F,c)} ${r}-outer`),e.append(`rect`).attr(`x`,n.x-6+(s?2:0)).attr(`y`,n.y-6+(s?2:0)).attr(`width`,s?8:12).attr(`height`,s?8:12).attr(`class`,`commit ${t.id} commit${z(i,F,c)} ${r}-inner`);else if(a===x.CHERRY_PICK)e.append(`circle`).attr(`cx`,n.x).attr(`cy`,n.y).attr(`r`,s?7:10).attr(`class`,`commit ${t.id} ${r}`),e.append(`circle`).attr(`cx`,n.x-3).attr(`cy`,n.y+2).attr(`r`,s?2.5:2.75).attr(`fill`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`circle`).attr(`cx`,n.x+3).attr(`cy`,n.y+2).attr(`r`,s?2.5:2.75).attr(`fill`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`line`).attr(`x1`,n.x+3).attr(`y1`,n.y+1).attr(`x2`,n.x).attr(`y2`,n.y-5).attr(`stroke`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`line`).attr(`x1`,n.x-3).attr(`y1`,n.y+1).attr(`x2`,n.x).attr(`y2`,n.y-5).attr(`stroke`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`);else{let o=e.append(`circle`);if(o.attr(`cx`,n.x),o.attr(`cy`,n.y),o.attr(`r`,s?7:10),o.attr(`class`,`commit ${t.id} commit${z(i,F,c)}`),a===x.MERGE){let a=e.append(`circle`);a.attr(`cx`,n.x),a.attr(`cy`,n.y),a.attr(`r`,s?5:6),a.attr(`class`,`commit ${r} ${t.id} commit${z(i,F,c)}`)}if(a===x.REVERSE){let a=e.append(`path`),o=s?4:5;a.attr(`d`,`M ${n.x-o},${n.y-o}L${n.x+o},${n.y+o}M${n.x-o},${n.y+o}L${n.x+o},${n.y-o}`).attr(`class`,`commit ${r} ${t.id} commit${z(i,F,c)}`)}}},`drawCommitBullet`),Ae=t((e,t,n,r,i)=>{if(t.type!==x.CHERRY_PICK&&(t.customId&&t.type===x.MERGE||t.type!==x.MERGE)&&i.showCommitLabel){let a=e.append(`g`),o=a.insert(`rect`).attr(`class`,`commit-label-bkg`),s=a.append(`text`).attr(`x`,r).attr(`y`,n.y+25).attr(`class`,`commit-label`).text(t.id),c=s.node()?.getBBox();if(c&&(o.attr(`x`,n.posWithOffset-c.width/2-P).attr(`y`,n.y+13.5).attr(`width`,c.width+2*P).attr(`height`,c.height+2*P),K===`TB`||K===`BT`?(o.attr(`x`,n.x-(c.width+4*N+5)).attr(`y`,n.y-12),s.attr(`x`,n.x-(c.width+4*N)).attr(`y`,n.y+c.height-12)):s.attr(`x`,n.posWithOffset-c.width/2),i.rotateCommitLabel)){if(K===`TB`||K===`BT`)s.attr(`transform`,`rotate(-45, `+n.x+`, `+n.y+`)`),o.attr(`transform`,`rotate(-45, `+n.x+`, `+n.y+`)`);else{let e=-7.5-(c.width+10)/25*9.5,t=10+c.width/25*8.5;a.attr(`transform`,`translate(`+e+`, `+t+`) rotate(-45, `+r+`, `+n.y+`)`)}}}},`drawCommitLabel`),je=t((e,t,n,r)=>{if(t.tags.length>0){let i=0,a=0,o=0,s=[];for(let r of t.tags.reverse()){let t=e.insert(`polygon`),c=e.append(`circle`),l=e.append(`text`).attr(`y`,n.y-16-i).attr(`class`,`tag-label`).text(r),u=l.node()?.getBBox();if(!u)throw Error(`Tag bbox not found`);a=Math.max(a,u.width),o=Math.max(o,u.height),l.attr(`x`,n.posWithOffset-u.width/2),s.push({tag:l,hole:c,rect:t,yOffset:i}),i+=20}for(let{tag:e,hole:t,rect:i,yOffset:c}of s){let s=o/2,l=n.y-19.2-c;if(i.attr(`class`,`tag-label-bkg`).attr(`points`,`
|
|
1
|
+
import{n as e}from"./mermaid-parser.core-siQPZsry.js";import{n as t}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as n,p as r}from"./src-B4djUhOi.js";import{H as i,U as a,X as o,a as s,b as c,f as l,q as u,s as d,v as f,w as p,x as m,y as h}from"./chunk-O7XYJQB3-CyxnSfZ3.js";import{g,i as _,m as v}from"./chunk-ZIGJFQKS-DJJL7llO.js";import{t as y}from"./chunk-JWPE2WC7-DVXcaiue.js";import{t as b}from"./chunk-2Q5K7J3B-C1jixKkw.js";var x={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},ee=l.gitGraph,S=t(()=>_({...ee,...c().gitGraph}),`getConfig`),C=new b(()=>{let e=S(),t=e.mainBranchName,n=e.mainBranchOrder;return{mainBranchName:t,commits:new Map,head:null,branchConfig:new Map([[t,{name:t,order:n}]]),branches:new Map([[t,null]]),currBranch:t,direction:`LR`,seq:0,options:{}}});function w(){return v({length:7})}t(w,`getID`);function T(e,t){let n=Object.create(null);return e.reduce((e,r)=>{let i=t(r);return n[i]||(n[i]=!0,e.push(r)),e},[])}t(T,`uniqBy`);var te=t(function(e){C.records.direction=e},`setDirection`),ne=t(function(e){n.debug(`options str`,e),e=e?.trim(),e||=`{}`;try{C.records.options=JSON.parse(e)}catch(e){n.error(`error while parsing gitGraph options`,e.message)}},`setOptions`),re=t(function(){return C.records.options},`getOptions`),ie=t(function(e){let t=e.msg,r=e.id,i=e.type,a=e.tags;n.info(`commit`,t,r,i,a),n.debug(`Entering commit:`,t,r,i,a);let o=S();r=d.sanitizeText(r,o),t=d.sanitizeText(t,o),a=a?.map(e=>d.sanitizeText(e,o));let s={id:r||C.records.seq+`-`+w(),message:t,seq:C.records.seq++,type:i??x.NORMAL,tags:a??[],parents:C.records.head==null?[]:[C.records.head.id],branch:C.records.currBranch};C.records.head=s,n.info(`main branch`,o.mainBranchName),C.records.commits.has(s.id)&&n.warn(`Commit ID ${s.id} already exists`),C.records.commits.set(s.id,s),C.records.branches.set(C.records.currBranch,s.id),n.debug(`in pushCommit `+s.id)},`commit`),ae=t(function(e){let t=e.name,r=e.order;if(t=d.sanitizeText(t,S()),C.records.branches.has(t))throw Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${t}")`);C.records.branches.set(t,C.records.head==null?null:C.records.head.id),C.records.branchConfig.set(t,{name:t,order:r}),E(t),n.debug(`in createBranch`)},`branch`),oe=t(e=>{let t=e.branch,r=e.id,i=e.type,a=e.tags,o=S();t=d.sanitizeText(t,o),r&&=d.sanitizeText(r,o);let s=C.records.branches.get(C.records.currBranch),c=C.records.branches.get(t),l=s?C.records.commits.get(s):void 0,u=c?C.records.commits.get(c):void 0;if(l&&u&&l.branch===t)throw Error(`Cannot merge branch '${t}' into itself.`);if(C.records.currBranch===t){let e=Error(`Incorrect usage of "merge". Cannot merge a branch to itself`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch abc`]},e}if(l===void 0||!l){let e=Error(`Incorrect usage of "merge". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`commit`]},e}if(!C.records.branches.has(t)){let e=Error(`Incorrect usage of "merge". Branch to be merged (`+t+`) does not exist`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch ${t}`]},e}if(u===void 0||!u){let e=Error(`Incorrect usage of "merge". Branch to be merged (`+t+`) has no commits`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`"commit"`]},e}if(l===u){let e=Error(`Incorrect usage of "merge". Both branches have same head`);throw e.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch abc`]},e}if(r&&C.records.commits.has(r)){let e=Error(`Incorrect usage of "merge". Commit with id:`+r+` already exists, use different custom id`);throw e.hash={text:`merge ${t} ${r} ${i} ${a?.join(` `)}`,token:`merge ${t} ${r} ${i} ${a?.join(` `)}`,expected:[`merge ${t} ${r}_UNIQUE ${i} ${a?.join(` `)}`]},e}let f=c||``,p={id:r||`${C.records.seq}-${w()}`,message:`merged branch ${t} into ${C.records.currBranch}`,seq:C.records.seq++,parents:C.records.head==null?[]:[C.records.head.id,f],branch:C.records.currBranch,type:x.MERGE,customType:i,customId:!!r,tags:a??[]};C.records.head=p,C.records.commits.set(p.id,p),C.records.branches.set(C.records.currBranch,p.id),n.debug(C.records.branches),n.debug(`in mergeBranch`)},`merge`),se=t(function(e){let t=e.id,r=e.targetId,i=e.tags,a=e.parent;n.debug(`Entering cherryPick:`,t,r,i);let o=S();if(t=d.sanitizeText(t,o),r=d.sanitizeText(r,o),i=i?.map(e=>d.sanitizeText(e,o)),a=d.sanitizeText(a,o),!t||!C.records.commits.has(t)){let e=Error(`Incorrect usage of "cherryPick". Source commit id should exist and provided`);throw e.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:[`cherry-pick abc`]},e}let s=C.records.commits.get(t);if(s===void 0||!s)throw Error(`Incorrect usage of "cherryPick". Source commit id should exist and provided`);if(a&&!(Array.isArray(s.parents)&&s.parents.includes(a)))throw Error(`Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.`);let c=s.branch;if(s.type===x.MERGE&&!a)throw Error(`Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.`);if(!r||!C.records.commits.has(r)){if(c===C.records.currBranch){let e=Error(`Incorrect usage of "cherryPick". Source commit is already on current branch`);throw e.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:[`cherry-pick abc`]},e}let e=C.records.branches.get(C.records.currBranch);if(e===void 0||!e){let e=Error(`Incorrect usage of "cherry-pick". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:[`cherry-pick abc`]},e}let o=C.records.commits.get(e);if(o===void 0||!o){let e=Error(`Incorrect usage of "cherry-pick". Current branch (${C.records.currBranch})has no commits`);throw e.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:[`cherry-pick abc`]},e}let l={id:C.records.seq+`-`+w(),message:`cherry-picked ${s?.message} into ${C.records.currBranch}`,seq:C.records.seq++,parents:C.records.head==null?[]:[C.records.head.id,s.id],branch:C.records.currBranch,type:x.CHERRY_PICK,tags:i?i.filter(Boolean):[`cherry-pick:${s.id}${s.type===x.MERGE?`|parent:${a}`:``}`]};C.records.head=l,C.records.commits.set(l.id,l),C.records.branches.set(C.records.currBranch,l.id),n.debug(C.records.branches),n.debug(`in cherryPick`)}},`cherryPick`),E=t(function(e){if(e=d.sanitizeText(e,S()),C.records.branches.has(e)){C.records.currBranch=e;let t=C.records.branches.get(C.records.currBranch);t===void 0||!t?C.records.head=null:C.records.head=C.records.commits.get(t)??null}else{let t=Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw t.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},t}},`checkout`);function D(e,t,n){let r=e.indexOf(t);r===-1?e.push(n):e.splice(r,1,n)}t(D,`upsert`);function O(e){let t=e.reduce((e,t)=>e.seq>t.seq?e:t,e[0]),r=``;e.forEach(function(e){r+=e===t?` *`:` |`});let i=[r,t.id,t.seq];for(let e in C.records.branches)C.records.branches.get(e)===t.id&&i.push(e);if(n.debug(i.join(` `)),t.parents&&t.parents.length==2&&t.parents[0]&&t.parents[1]){let n=C.records.commits.get(t.parents[0]);D(e,t,n),t.parents[1]&&e.push(C.records.commits.get(t.parents[1]))}else if(t.parents.length==0)return;else if(t.parents[0]){let n=C.records.commits.get(t.parents[0]);D(e,t,n)}e=T(e,e=>e.id),O(e)}t(O,`prettyPrintCommitHistory`);var ce=t(function(){n.debug(C.records.commits);let e=k()[0];O([e])},`prettyPrint`),le=t(function(){C.reset(),s()},`clear`),ue=t(function(){return[...C.records.branchConfig.values()].map((e,t)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${t}`)}).sort((e,t)=>(e.order??0)-(t.order??0)).map(({name:e})=>({name:e}))},`getBranchesAsObjArray`),de=t(function(){return C.records.branches},`getBranches`),fe=t(function(){return C.records.commits},`getCommits`),k=t(function(){let e=[...C.records.commits.values()];return e.forEach(function(e){n.debug(e.id)}),e.sort((e,t)=>e.seq-t.seq),e},`getCommitsArray`),A={commitType:x,getConfig:S,setDirection:te,setOptions:ne,getOptions:re,commit:ie,branch:ae,merge:oe,cherryPick:se,checkout:E,prettyPrint:ce,clear:le,getBranchesAsObjArray:ue,getBranches:de,getCommits:fe,getCommitsArray:k,getCurrentBranch:t(function(){return C.records.currBranch},`getCurrentBranch`),getDirection:t(function(){return C.records.direction},`getDirection`),getHead:t(function(){return C.records.head},`getHead`),setAccTitle:a,getAccTitle:h,getAccDescription:f,setAccDescription:i,setDiagramTitle:u,getDiagramTitle:p},pe=t((e,t)=>{y(e,t),e.dir&&t.setDirection(e.dir);for(let n of e.statements)me(n,t)},`populate`),me=t((e,r)=>{let i={Commit:t(e=>r.commit(he(e)),`Commit`),Branch:t(e=>r.branch(ge(e)),`Branch`),Merge:t(e=>r.merge(_e(e)),`Merge`),Checkout:t(e=>r.checkout(ve(e)),`Checkout`),CherryPicking:t(e=>r.cherryPick(ye(e)),`CherryPicking`)}[e.$type];i?i(e):n.error(`Unknown statement type: ${e.$type}`)},`parseStatement`),he=t(e=>({id:e.id,msg:e.message??``,type:e.type===void 0?x.NORMAL:x[e.type],tags:e.tags??void 0}),`parseCommit`),ge=t(e=>({name:e.name,order:e.order??0}),`parseBranch`),_e=t(e=>({branch:e.branch,id:e.id??``,type:e.type===void 0?void 0:x[e.type],tags:e.tags??void 0}),`parseMerge`),ve=t(e=>e.branch,`parseCheckout`),ye=t(e=>({id:e.id,targetId:``,tags:e.tags?.length===0?void 0:e.tags,parent:e.parent}),`parseCherryPicking`),be={parse:t(async t=>{let r=await e(`gitGraph`,t);n.debug(r),pe(r,A)},`parse`)},j=10,M=40,N=4,P=2,F=8,I=new Set([`redux`,`redux-dark`,`redux-color`,`redux-dark-color`]),L=12,R=new Set([`redux-color`,`redux-dark-color`]),xe=new Set([`dark`,`redux-dark`,`redux-dark-color`,`neo-dark`]),z=t((e,t,n=!1)=>n&&e>0?(e-1)%(t-1)+1:e%t,`calcColorIndex`),B=new Map,V=new Map,H=30,U=new Map,W=[],G=0,K=`LR`,Se=t(()=>{B.clear(),V.clear(),U.clear(),G=0,W=[],K=`LR`},`clear`),q=t(e=>{let t=document.createElementNS(`http://www.w3.org/2000/svg`,`text`);return(typeof e==`string`?e.split(/\\n|\n|<br\s*\/?>/gi):e).forEach(e=>{let n=document.createElementNS(`http://www.w3.org/2000/svg`,`tspan`);n.setAttributeNS(`http://www.w3.org/XML/1998/namespace`,`xml:space`,`preserve`),n.setAttribute(`dy`,`1em`),n.setAttribute(`x`,`0`),n.setAttribute(`class`,`row`),n.textContent=e.trim(),t.appendChild(n)}),t},`drawText`),J=t(e=>{let n,r,i;return K===`BT`?(r=t((e,t)=>e<=t,`comparisonFunc`),i=1/0):(r=t((e,t)=>e>=t,`comparisonFunc`),i=0),e.forEach(e=>{let t=K===`TB`||K==`BT`?V.get(e)?.y:V.get(e)?.x;t!==void 0&&r(t,i)&&(n=e,i=t)}),n},`findClosestParent`),Ce=t(e=>{let t=``,n=1/0;return e.forEach(e=>{let r=V.get(e).y;r<=n&&(t=e,n=r)}),t||void 0},`findClosestParentBT`),we=t((e,t,n)=>{let r=n,i=n,a=[];e.forEach(e=>{let n=t.get(e);if(!n)throw Error(`Commit not found for key ${e}`);n.parents.length?(r=Ee(n),i=Math.max(r,i)):a.push(n),De(n,r)}),r=i,a.forEach(e=>{Oe(e,r,n)}),e.forEach(e=>{let n=t.get(e);if(n?.parents.length){let e=Ce(n.parents);r=V.get(e).y-M,r<=i&&(i=r);let t=B.get(n.branch).pos,a=r-j;V.set(n.id,{x:t,y:a})}})},`setParallelBTPos`),Te=t(e=>{let t=J(e.parents.filter(e=>e!==null));if(!t)throw Error(`Closest parent not found for commit ${e.id}`);let n=V.get(t)?.y;if(n===void 0)throw Error(`Closest parent position not found for commit ${e.id}`);return n},`findClosestParentPos`),Ee=t(e=>Te(e)+M,`calculateCommitPosition`),De=t((e,t)=>{let n=B.get(e.branch);if(!n)throw Error(`Branch not found for commit ${e.id}`);let r=n.pos,i=t+j;return V.set(e.id,{x:r,y:i}),{x:r,y:i}},`setCommitPosition`),Oe=t((e,t,n)=>{let r=B.get(e.branch);if(!r)throw Error(`Branch not found for commit ${e.id}`);let i=t+n,a=r.pos;V.set(e.id,{x:a,y:i})},`setRootPosition`),ke=t((e,t,n,r,i,a)=>{let{theme:o}=m(),s=I.has(o??``),c=R.has(o??``),l=xe.has(o??``);if(a===x.HIGHLIGHT)e.append(`rect`).attr(`x`,n.x-10+(s?3:0)).attr(`y`,n.y-10+(s?3:0)).attr(`width`,s?14:20).attr(`height`,s?14:20).attr(`class`,`commit ${t.id} commit-highlight${z(i,F,c)} ${r}-outer`),e.append(`rect`).attr(`x`,n.x-6+(s?2:0)).attr(`y`,n.y-6+(s?2:0)).attr(`width`,s?8:12).attr(`height`,s?8:12).attr(`class`,`commit ${t.id} commit${z(i,F,c)} ${r}-inner`);else if(a===x.CHERRY_PICK)e.append(`circle`).attr(`cx`,n.x).attr(`cy`,n.y).attr(`r`,s?7:10).attr(`class`,`commit ${t.id} ${r}`),e.append(`circle`).attr(`cx`,n.x-3).attr(`cy`,n.y+2).attr(`r`,s?2.5:2.75).attr(`fill`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`circle`).attr(`cx`,n.x+3).attr(`cy`,n.y+2).attr(`r`,s?2.5:2.75).attr(`fill`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`line`).attr(`x1`,n.x+3).attr(`y1`,n.y+1).attr(`x2`,n.x).attr(`y2`,n.y-5).attr(`stroke`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`),e.append(`line`).attr(`x1`,n.x-3).attr(`y1`,n.y+1).attr(`x2`,n.x).attr(`y2`,n.y-5).attr(`stroke`,l?`#000000`:`#fff`).attr(`class`,`commit ${t.id} ${r}`);else{let o=e.append(`circle`);if(o.attr(`cx`,n.x),o.attr(`cy`,n.y),o.attr(`r`,s?7:10),o.attr(`class`,`commit ${t.id} commit${z(i,F,c)}`),a===x.MERGE){let a=e.append(`circle`);a.attr(`cx`,n.x),a.attr(`cy`,n.y),a.attr(`r`,s?5:6),a.attr(`class`,`commit ${r} ${t.id} commit${z(i,F,c)}`)}if(a===x.REVERSE){let a=e.append(`path`),o=s?4:5;a.attr(`d`,`M ${n.x-o},${n.y-o}L${n.x+o},${n.y+o}M${n.x-o},${n.y+o}L${n.x+o},${n.y-o}`).attr(`class`,`commit ${r} ${t.id} commit${z(i,F,c)}`)}}},`drawCommitBullet`),Ae=t((e,t,n,r,i)=>{if(t.type!==x.CHERRY_PICK&&(t.customId&&t.type===x.MERGE||t.type!==x.MERGE)&&i.showCommitLabel){let a=e.append(`g`),o=a.insert(`rect`).attr(`class`,`commit-label-bkg`),s=a.append(`text`).attr(`x`,r).attr(`y`,n.y+25).attr(`class`,`commit-label`).text(t.id),c=s.node()?.getBBox();if(c&&(o.attr(`x`,n.posWithOffset-c.width/2-P).attr(`y`,n.y+13.5).attr(`width`,c.width+2*P).attr(`height`,c.height+2*P),K===`TB`||K===`BT`?(o.attr(`x`,n.x-(c.width+4*N+5)).attr(`y`,n.y-12),s.attr(`x`,n.x-(c.width+4*N)).attr(`y`,n.y+c.height-12)):s.attr(`x`,n.posWithOffset-c.width/2),i.rotateCommitLabel)){if(K===`TB`||K===`BT`)s.attr(`transform`,`rotate(-45, `+n.x+`, `+n.y+`)`),o.attr(`transform`,`rotate(-45, `+n.x+`, `+n.y+`)`);else{let e=-7.5-(c.width+10)/25*9.5,t=10+c.width/25*8.5;a.attr(`transform`,`translate(`+e+`, `+t+`) rotate(-45, `+r+`, `+n.y+`)`)}}}},`drawCommitLabel`),je=t((e,t,n,r)=>{if(t.tags.length>0){let i=0,a=0,o=0,s=[];for(let r of t.tags.reverse()){let t=e.insert(`polygon`),c=e.append(`circle`),l=e.append(`text`).attr(`y`,n.y-16-i).attr(`class`,`tag-label`).text(r),u=l.node()?.getBBox();if(!u)throw Error(`Tag bbox not found`);a=Math.max(a,u.width),o=Math.max(o,u.height),l.attr(`x`,n.posWithOffset-u.width/2),s.push({tag:l,hole:c,rect:t,yOffset:i}),i+=20}for(let{tag:e,hole:t,rect:i,yOffset:c}of s){let s=o/2,l=n.y-19.2-c;if(i.attr(`class`,`tag-label-bkg`).attr(`points`,`
|
|
2
2
|
${r-a/2-N/2},${l+P}
|
|
3
3
|
${r-a/2-N/2},${l-P}
|
|
4
4
|
${n.posWithOffset-a/2-N},${l-s-P}
|
|
@@ -11,9 +11,9 @@ import{n as e}from"./mermaid-parser.core-BLSiQUXp.js";import{n as t}from"./chunk
|
|
|
11
11
|
${n.x+j+a+4},${o-s-2}
|
|
12
12
|
${n.x+j+a+4},${o+s+2}
|
|
13
13
|
${n.x+j},${o+s+2}`).attr(`transform`,`translate(12,12) rotate(45, `+n.x+`,`+r+`)`),t.attr(`cx`,n.x+N/2).attr(`cy`,o).attr(`transform`,`translate(12,12) rotate(45, `+n.x+`,`+r+`)`),e.attr(`x`,n.x+5).attr(`y`,o+3).attr(`transform`,`translate(14,14) rotate(45, `+n.x+`,`+r+`)`)}}}},`drawCommitTags`),Me=t(e=>{switch(e.customType??e.type){case x.NORMAL:return`commit-normal`;case x.REVERSE:return`commit-reverse`;case x.HIGHLIGHT:return`commit-highlight`;case x.MERGE:return`commit-merge`;case x.CHERRY_PICK:return`commit-cherry-pick`;default:return`commit-normal`}},`getCommitClassType`),Ne=t((e,t,n,r)=>{let i={x:0,y:0};if(e.parents.length>0){let n=J(e.parents);if(n){let a=r.get(n)??i;return t===`TB`?a.y+M:t===`BT`?(r.get(e.id)??i).y-M:a.x+M}}else if(t===`TB`)return H;else if(t===`BT`)return(r.get(e.id)??i).y-M;else return 0;return 0},`calculatePosition`),Pe=t((e,t,n)=>{let r=K===`BT`&&n?t:t+j,i=B.get(e.branch)?.pos,a=K===`TB`||K===`BT`?B.get(e.branch)?.pos:r;if(a===void 0||i===void 0)throw Error(`Position were undefined for commit ${e.id}`);let o=I.has(m().theme??``);return{x:a,y:K===`TB`||K===`BT`?r:i+(o?L/2+1:-2),posWithOffset:r}},`getCommitPosition`),Y=t((e,n,r,i)=>{let a=e.append(`g`).attr(`class`,`commit-bullets`),o=e.append(`g`).attr(`class`,`commit-labels`),s=K===`TB`||K===`BT`?H:0,c=[...n.keys()],l=i.parallelCommits??!1,u=t((e,t)=>{let r=n.get(e)?.seq,i=n.get(t)?.seq;return r!==void 0&&i!==void 0?r-i:0},`sortKeys`),d=c.sort(u);K===`BT`&&(l&&we(d,n,s),d=d.reverse()),d.forEach(e=>{let t=n.get(e);if(!t)throw Error(`Commit not found for key ${e}`);l&&(s=Ne(t,K,s,V));let c=Pe(t,s,l);if(r){let e=Me(t),n=t.customType??t.type,r=B.get(t.branch)?.index??0;ke(a,t,c,e,r,n),Ae(o,t,c,s,i),je(o,t,c,s)}K===`TB`||K===`BT`?V.set(t.id,{x:c.x,y:c.posWithOffset}):V.set(t.id,{x:c.posWithOffset,y:c.y}),s=K===`BT`&&l?s+M:s+M+j,s>G&&(G=s)})},`drawCommits`),Fe=t((e,n,r,i,a)=>{let o=(K===`TB`||K===`BT`?r.x<i.x:r.y<i.y)?n.branch:e.branch,s=t(e=>e.branch===o,`isOnBranchToGetCurve`),c=t(t=>t.seq>e.seq&&t.seq<n.seq,`isBetweenCommits`);return[...a.values()].some(e=>c(e)&&s(e))},`shouldRerouteArrow`),X=t((e,t,n=0)=>{let r=e+Math.abs(e-t)/2;return n>5?r:W.every(e=>Math.abs(e-r)>=10)?(W.push(r),r):X(e,t-Math.abs(e-t)/5,n+1)},`findLane`),Ie=t((e,t,n,r)=>{let{theme:i}=m(),a=R.has(i??``),o=V.get(t.id),s=V.get(n.id);if(o===void 0||s===void 0)throw Error(`Commit positions not found for commits ${t.id} and ${n.id}`);let c=Fe(t,n,o,s,r),l=``,u=``,d=0,f=0,p=B.get(n.branch)?.index;n.type===x.MERGE&&t.id!==n.parents[0]&&(p=B.get(t.branch)?.index);let h;if(c){l=`A 10 10, 0, 0, 0,`,u=`A 10 10, 0, 0, 1,`,d=10,f=10;let e=o.y<s.y?X(o.y,s.y):X(s.y,o.y),n=o.x<s.x?X(o.x,s.x):X(s.x,o.x);K===`TB`?o.x<s.x?h=`M ${o.x} ${o.y} L ${n-d} ${o.y} ${u} ${n} ${o.y+f} L ${n} ${s.y-d} ${l} ${n+f} ${s.y} L ${s.x} ${s.y}`:(p=B.get(t.branch)?.index,h=`M ${o.x} ${o.y} L ${n+d} ${o.y} ${l} ${n} ${o.y+f} L ${n} ${s.y-d} ${u} ${n-f} ${s.y} L ${s.x} ${s.y}`):K===`BT`?o.x<s.x?h=`M ${o.x} ${o.y} L ${n-d} ${o.y} ${l} ${n} ${o.y-f} L ${n} ${s.y+d} ${u} ${n+f} ${s.y} L ${s.x} ${s.y}`:(p=B.get(t.branch)?.index,h=`M ${o.x} ${o.y} L ${n+d} ${o.y} ${u} ${n} ${o.y-f} L ${n} ${s.y+d} ${l} ${n-f} ${s.y} L ${s.x} ${s.y}`):o.y<s.y?h=`M ${o.x} ${o.y} L ${o.x} ${e-d} ${l} ${o.x+f} ${e} L ${s.x-d} ${e} ${u} ${s.x} ${e+f} L ${s.x} ${s.y}`:(p=B.get(t.branch)?.index,h=`M ${o.x} ${o.y} L ${o.x} ${e+d} ${u} ${o.x+f} ${e} L ${s.x-d} ${e} ${l} ${s.x} ${e-f} L ${s.x} ${s.y}`)}else l=`A 20 20, 0, 0, 0,`,u=`A 20 20, 0, 0, 1,`,d=20,f=20,K===`TB`?(o.x<s.x&&(h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${s.y-d} ${l} ${o.x+f} ${s.y} L ${s.x} ${s.y}`:`M ${o.x} ${o.y} L ${s.x-d} ${o.y} ${u} ${s.x} ${o.y+f} L ${s.x} ${s.y}`),o.x>s.x&&(l=`A 20 20, 0, 0, 0,`,u=`A 20 20, 0, 0, 1,`,d=20,f=20,h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${s.y-d} ${u} ${o.x-f} ${s.y} L ${s.x} ${s.y}`:`M ${o.x} ${o.y} L ${s.x+d} ${o.y} ${l} ${s.x} ${o.y+f} L ${s.x} ${s.y}`),o.x===s.x&&(h=`M ${o.x} ${o.y} L ${s.x} ${s.y}`)):K===`BT`?(o.x<s.x&&(h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${s.y+d} ${u} ${o.x+f} ${s.y} L ${s.x} ${s.y}`:`M ${o.x} ${o.y} L ${s.x-d} ${o.y} ${l} ${s.x} ${o.y-f} L ${s.x} ${s.y}`),o.x>s.x&&(l=`A 20 20, 0, 0, 0,`,u=`A 20 20, 0, 0, 1,`,d=20,f=20,h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${s.y+d} ${l} ${o.x-f} ${s.y} L ${s.x} ${s.y}`:`M ${o.x} ${o.y} L ${s.x+d} ${o.y} ${u} ${s.x} ${o.y-f} L ${s.x} ${s.y}`),o.x===s.x&&(h=`M ${o.x} ${o.y} L ${s.x} ${s.y}`)):(o.y<s.y&&(h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${o.x} ${o.y} L ${s.x-d} ${o.y} ${u} ${s.x} ${o.y+f} L ${s.x} ${s.y}`:`M ${o.x} ${o.y} L ${o.x} ${s.y-d} ${l} ${o.x+f} ${s.y} L ${s.x} ${s.y}`),o.y>s.y&&(h=n.type===x.MERGE&&t.id!==n.parents[0]?`M ${o.x} ${o.y} L ${s.x-d} ${o.y} ${l} ${s.x} ${o.y-f} L ${s.x} ${s.y}`:`M ${o.x} ${o.y} L ${o.x} ${s.y+d} ${u} ${o.x+f} ${s.y} L ${s.x} ${s.y}`),o.y===s.y&&(h=`M ${o.x} ${o.y} L ${s.x} ${s.y}`));if(h===void 0)throw Error(`Line definition not found`);e.append(`path`).attr(`d`,h).attr(`class`,`arrow arrow`+z(p,F,a))},`drawArrow`),Le=t((e,t)=>{let n=e.append(`g`).attr(`class`,`commit-arrows`);[...t.keys()].forEach(e=>{let r=t.get(e);r.parents&&r.parents.length>0&&r.parents.forEach(e=>{Ie(n,t.get(e),r,t)})})},`drawArrows`),Re=t((e,t,n,r)=>{let{look:i,theme:a,themeVariables:o}=m(),{dropShadow:s,THEME_COLOR_LIMIT:c}=o,l=I.has(a??``),u=R.has(a??``),d=e.append(`g`);t.forEach((e,t)=>{let a=z(t,l?c:F,u),o=B.get(e.name)?.pos;if(o===void 0)throw Error(`Position not found for branch ${e.name}`);let f=K===`TB`||K===`BT`?o:l?o+L/2+1:o-2,p=d.append(`line`);p.attr(`x1`,0),p.attr(`y1`,f),p.attr(`x2`,G),p.attr(`y2`,f),p.attr(`class`,`branch branch`+a),K===`TB`?(p.attr(`y1`,H),p.attr(`x1`,o),p.attr(`y2`,G),p.attr(`x2`,o)):K===`BT`&&(p.attr(`y1`,G),p.attr(`x1`,o),p.attr(`y2`,H),p.attr(`x2`,o)),W.push(f);let m=e.name,h=q(m),g=d.insert(`rect`),_=d.insert(`g`).attr(`class`,`branchLabel`).insert(`g`).attr(`class`,`label branch-label`+a);_.node().appendChild(h);let v=h.getBBox(),y=l?0:4,b=l?16:0,x=l?L:0;i===`neo`&&g.attr(`data-look`,`neo`),g.attr(`class`,`branchLabelBkg label`+a).attr(`style`,i===`neo`?`filter:${l?`url(#${r}-drop-shadow)`:s}`:``).attr(`rx`,y).attr(`ry`,y).attr(`x`,-v.width-4-(n.rotateCommitLabel===!0?30:0)).attr(`y`,-v.height/2+10).attr(`width`,v.width+18+b).attr(`height`,v.height+4+x),_.attr(`transform`,`translate(`+(-v.width-14-(n.rotateCommitLabel===!0?30:0)+b/2)+`, `+(f-v.height/2-2)+`)`),K===`TB`?(g.attr(`x`,o-v.width/2-10).attr(`y`,0),_.attr(`transform`,`translate(`+(o-v.width/2-5)+`, 0)`),l&&(g.attr(`transform`,`translate(${-b/2-3}, ${-x-10})`),_.attr(`transform`,`translate(`+(o-v.width/2-5)+`, `+(-x*2+7)+`)`))):K===`BT`?(g.attr(`x`,o-v.width/2-10).attr(`y`,G),_.attr(`transform`,`translate(`+(o-v.width/2-5)+`, `+G+`)`),l&&(g.attr(`transform`,`translate(${-b/2-3}, ${x+10})`),_.attr(`transform`,`translate(`+(o-v.width/2-5)+`, `+(G+x*2+4)+`)`))):g.attr(`transform`,`translate(-19, `+(f-12-x/2)+`)`)})},`drawBranches`),ze=t(function(e,t,n,r,i){return B.set(e,{pos:t,index:n}),t+=50+(i?40:0)+(K===`TB`||K===`BT`?r.width/2:0),t},`setBranchPosition`),Be={draw:t(function(e,t,i,a){Se(),n.debug(`in gitgraph renderer`,e+`
|
|
14
|
-
`,`id:`,t,i);let
|
|
14
|
+
`,`id:`,t,i);let s=a.db;if(!s.getConfig){n.error(`getConfig method is not available on db`);return}let c=s.getConfig(),l=c.rotateCommitLabel??!1;U=s.getCommits();let u=s.getBranchesAsObjArray();K=s.getDirection();let d=r(`[id="${t}"]`),{look:f,theme:p,themeVariables:h}=m(),{useGradient:_,gradientStart:v,gradientStop:y,filterColor:b}=h;if(_){let e=d.append(`defs`).append(`linearGradient`).attr(`id`,t+`-gradient`).attr(`gradientUnits`,`objectBoundingBox`).attr(`x1`,`0%`).attr(`y1`,`0%`).attr(`x2`,`100%`).attr(`y2`,`0%`);e.append(`stop`).attr(`offset`,`0%`).attr(`stop-color`,v).attr(`stop-opacity`,1),e.append(`stop`).attr(`offset`,`100%`).attr(`stop-color`,y).attr(`stop-opacity`,1)}f===`neo`&&I.has(p??``)&&d.append(`defs`).append(`filter`).attr(`id`,t+`-drop-shadow`).attr(`height`,`130%`).attr(`width`,`130%`).append(`feDropShadow`).attr(`dx`,`4`).attr(`dy`,`4`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,b);let x=0;u.forEach((e,t)=>{let n=q(e.name),r=d.append(`g`),i=r.insert(`g`).attr(`class`,`branchLabel`),a=i.insert(`g`).attr(`class`,`label branch-label`);a.node()?.appendChild(n);let o=n.getBBox();x=ze(e.name,x,t,o,l),a.remove(),i.remove(),r.remove()}),Y(d,U,!1,c),c.showBranches&&Re(d,u,c,t),Le(d,U),Y(d,U,!0,c),g.insertTitle(d,`gitTitleText`,c.titleTopMargin??0,s.getDiagramTitle()),o(void 0,d,c.diagramPadding,c.useMaxWidth)},`draw`)},Z=8,Q=new Set([`redux`,`redux-dark`,`redux-color`,`redux-dark-color`]),Ve=new Set([`redux-color`,`redux-dark-color`]),$=new Set([`neo`,`neo-dark`]),He=new Set([`dark`,`redux-dark`,`redux-dark-color`,`neo-dark`]),Ue=new Set([`redux`,`redux-dark`,`redux-color`,`redux-dark-color`,`neo`,`neo-dark`]),We=t(e=>{let{svgId:t}=e,n=``;if(e.useGradient&&t)for(let r=0;r<e.THEME_COLOR_LIMIT;r++)n+=`
|
|
15
15
|
.label${r} { fill: ${e.mainBkg}; stroke: url(${t}-gradient); stroke-width: ${e.strokeWidth};}
|
|
16
|
-
`;return n},`genGitGraphGradient`),Ge=t(e=>{let{theme:t,themeVariables:n}=
|
|
16
|
+
`;return n},`genGitGraphGradient`),Ge=t(e=>{let{theme:t,themeVariables:n}=c(),{borderColorArray:r}=n,i=Q.has(t);if($.has(t)){let t=``;for(let n=0;n<e.THEME_COLOR_LIMIT;n++)if(n===0)t+=`
|
|
17
17
|
.branch-label${n} { fill: ${e.nodeBorder};}
|
|
18
18
|
.commit${n} { stroke: ${e.nodeBorder}; }
|
|
19
19
|
.commit-highlight${n} { stroke: ${e.nodeBorder}; fill: ${e.nodeBorder}; }
|
|
@@ -53,7 +53,7 @@ import{n as e}from"./mermaid-parser.core-BLSiQUXp.js";import{n as t}from"./chunk
|
|
|
53
53
|
.label${t} { fill: ${e[`git`+n]}; }
|
|
54
54
|
.arrow${t} { stroke: ${e[`git`+n]}; }
|
|
55
55
|
`}).join(`
|
|
56
|
-
`)}`,`normalTheme`),qe={parser:be,db:A,renderer:Be,styles:t(e=>{let{theme:t}=
|
|
56
|
+
`)}`,`normalTheme`),qe={parser:be,db:A,renderer:Be,styles:t(e=>{let{theme:t}=c(),n=Ue.has(t);return`
|
|
57
57
|
.commit-id,
|
|
58
58
|
.commit-msg,
|
|
59
59
|
.branch-label {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--paper:#fff;--fill:#f5f5f7;--fill-2:#ebebed;--ink:#1d1d1f;--ink-2:#515154;--ink-3:#6e6e73;--hair:#e5e5e7;--hair-2:#f0f0f2;--ease-out:cubic-bezier(.22, .7, .2, 1);--dur:.14s;--dur-move:.24s;--acc:#1d1d1f;--acc-fg:#fff;--acc-wash:#edeef0;--acc-line:#c9c4d6;--attn:#9a6206;--attn-wash:#faf1e2;--attn-line:#e6cfa0;--add:#248a3d;--add-tint:#248a3d0e;--add-row:#248a3d1a;--add-word:#248a3d38;--del:#c9252d;--del-tint:#c9252d0d;--del-row:#c9252d16;--del-word:#c9252d33;--danger:#c9252d;--danger-wash:#fdeded;--dir-ico:#3f7fc9;--exp-wash:#ddf4ff;--exp-ink:#0969da;--exp-hover:#0969da;--exp-hover-fg:#fff;--sans:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--t-11:11px;--t-12:12px;--t-125:12.5px;--t-13:13px;--t-14:14px;--t-15:15px;--t-17:17px;--s-0:2px;--s-1:4px;--s-2:6px;--s-3:8px;--s-4:10px;--s-5:12px;--s-6:16px;--s-7:20px;--s-8:26px;--conv:min(100%, 1040px);--r-sm:6px;--r:10px;--r-lg:16px;--r-pill:999px;--lift:0 1px 2px #0000000a, 0 12px 32px -16px #00000024;--lift-lg:0 24px 64px -20px #00000047;--bg:var(--paper);--bg-subtle:var(--fill);--fg:var(--ink);--fg-muted:var(--ink-3);--border:var(--hair);--accent:var(--acc);--add-bg:var(--add-row);--add-fg:var(--add);--del-bg:var(--del-row);--del-fg:var(--del)}@media (prefers-color-scheme:dark){:root{--paper:#000;--fill:#1c1c1e;--fill-2:#2c2c2e;--ink:#f5f5f7;--ink-2:#c7c7cc;--ink-3:#8e8e93;--hair:#2c2c2e;--hair-2:#1f1f21;--acc:#f5f5f7;--acc-fg:#000;--acc-wash:#262234;--acc-line:#403b54;--attn:#e0a83c;--attn-wash:#2a2214;--attn-line:#5c4818;--add:#30d158;--add-tint:#30d15813;--add-row:#30d15821;--add-word:#30d15847;--del:#ff453a;--del-tint:#ff453a12;--del-row:#ff453a1f;--del-word:#ff453a42;--danger:#ff453a;--danger-wash:#2a1211;--dir-ico:#64a9f2;--exp-wash:#388bfd29;--exp-ink:#4493f8;--exp-hover:#1f6feb;--exp-hover-fg:#fff;--lift:0 1px 2px #00000080, 0 12px 32px -16px #000c;--lift-lg:0 24px 64px -20px #000000d9}}:root[data-theme=dark]{--paper:#000;--fill:#1c1c1e;--fill-2:#2c2c2e;--ink:#f5f5f7;--ink-2:#c7c7cc;--ink-3:#8e8e93;--hair:#2c2c2e;--hair-2:#1f1f21;--acc:#f5f5f7;--acc-fg:#000;--acc-wash:#262234;--acc-line:#403b54;--attn:#e0a83c;--attn-wash:#2a2214;--attn-line:#5c4818;--add:#30d158;--add-tint:#30d15813;--add-row:#30d15821;--add-word:#30d15847;--del:#ff453a;--del-tint:#ff453a12;--del-row:#ff453a1f;--del-word:#ff453a42;--danger:#ff453a;--danger-wash:#2a1211;--dir-ico:#64a9f2;--exp-wash:#388bfd29;--exp-ink:#4493f8;--exp-hover:#1f6feb;--exp-hover-fg:#fff;--lift:0 1px 2px #00000080, 0 12px 32px -16px #000c;--lift-lg:0 24px 64px -20px #000000d9}:root[data-theme=light]{--paper:#fff;--fill:#f5f5f7;--fill-2:#ebebed;--ink:#1d1d1f;--ink-2:#515154;--ink-3:#6e6e73;--hair:#e5e5e7;--hair-2:#f0f0f2;--acc:#1d1d1f;--acc-fg:#fff;--acc-wash:#edeef0;--acc-line:#c9c4d6;--attn:#9a6206;--attn-wash:#faf1e2;--attn-line:#e6cfa0;--add:#248a3d;--add-tint:#248a3d0e;--add-row:#248a3d1a;--add-word:#248a3d38;--del:#c9252d;--del-tint:#c9252d0d;--del-row:#c9252d16;--del-word:#c9252d33;--danger:#c9252d;--danger-wash:#fdeded;--dir-ico:#3f7fc9;--exp-wash:#ddf4ff;--exp-ink:#0969da;--exp-hover:#0969da;--exp-hover-fg:#fff;--lift:0 1px 2px #0000000a, 0 12px 32px -16px #00000024;--lift-lg:0 24px 64px -20px #00000047}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);font-size:var(--t-14);letter-spacing:-.005em;-webkit-font-smoothing:antialiased;background:var(--paper);color:var(--ink);line-height:1.55}.icon{flex:none;display:block}.chevron{color:var(--ink-3);flex:none;transition:transform .16s;display:flex}.chevron-shut{transform:rotate(-90deg)}@media (prefers-reduced-motion:reduce){.chevron{transition:none}}.kbd{font-family:var(--mono);font-size:var(--t-11);color:var(--ink-3);background:var(--fill);border-radius:5px;padding:2px 5px}.layout{flex-direction:column;height:100%;display:flex}.top{align-items:center;gap:var(--s-6);height:53px;padding:0 var(--s-6);border-bottom:1px solid var(--hair);white-space:nowrap;flex-shrink:0;display:flex}.mark{align-items:center;gap:var(--s-3);font-size:var(--t-15);letter-spacing:-.02em;font-weight:600;display:flex}.mark .icon{width:19px;height:19px}.dev-badge{font-family:var(--mono);font-size:var(--t-11);letter-spacing:0;border-radius:var(--r-pill);color:var(--attn);background:var(--attn-wash);border:1px solid var(--attn-line);padding:3px 6px;font-weight:600;line-height:1}.repo{font-family:var(--mono);font-size:var(--t-13);color:var(--ink-3);text-overflow:ellipsis;min-width:0;overflow:hidden}.where{align-items:center;gap:var(--s-2);min-width:0;display:flex}.where-bit{font-family:var(--mono);font-size:var(--t-12);color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:3px;min-width:0;max-width:22ch;display:inline-flex;overflow:hidden}.where-bit svg{opacity:.75;flex:none}.grow{min-width:var(--s-3);flex:1}.cmp{font-size:var(--t-125);color:var(--ink-2);flex-shrink:0;align-items:center;gap:7px;display:inline-flex}.cmp-side{font-family:var(--mono);font-size:var(--t-12);color:var(--ink)}.cmp-side-base{color:var(--ink-2)}.cmp-arrow{color:var(--ink-3);width:12px;height:12px}.cmp-n{font-family:var(--mono);font-variant-numeric:tabular-nums;padding-left:var(--s-3);border-left:1px solid var(--hair);margin-left:var(--s-1);font-size:11.5px}.prog-track{background:var(--fill-2);border-radius:2px;width:56px;height:3px;overflow:hidden}.prog-track i{background:var(--acc);height:3px;transition:width .35s var(--ease-out);border-radius:2px;display:block}.stat-add{color:var(--add)}.stat-del{color:var(--del)}@media (width<=1080px){.top{gap:var(--s-5)}.cmp-n{display:none}}@media (width<=900px){.cmp,.repo{display:none}}.body{flex:1;min-height:0;display:flex}.rail{width:var(--rail-w,264px);border-right:1px solid var(--hair);min-height:0;transition:width var(--dur-move) var(--ease-out), opacity .18s ease;flex-direction:column;flex-shrink:0;display:flex;overflow:hidden;container-type:inline-size}.rail-dragging .rail{transition:none}.nav-hidden .rail{opacity:0;pointer-events:none;visibility:hidden;width:0;transition:width var(--dur-move) var(--ease-out), opacity .16s ease, visibility 0s var(--dur-move);border-right-color:#0000}.nav-hidden .rail-resize{display:none}.rail-resize{z-index:5;cursor:col-resize;touch-action:none;flex:none;width:7px;margin:0 -3px;position:relative}.rail-resize:after{content:"";width:2px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.rail-resize:hover:after,.rail-resize:active:after{background:var(--acc)}.rail-search{padding:var(--s-5) 14px var(--s-4);align-items:center;gap:var(--s-2);display:flex}.sb{flex:1;align-items:center;min-width:0;display:flex;position:relative}.rail-filter-on{color:var(--attn)}.rail-tally{padding:0 var(--s-6) var(--s-3);font-size:var(--t-11);color:var(--ink-3)}.menu-n{font-size:var(--t-11);color:var(--ink-3);font-variant-numeric:tabular-nums;margin-left:6px}.sb>svg{color:var(--ink-3);pointer-events:none;position:absolute;left:9px}.nav-search{width:100%;height:30px;font:inherit;font-size:var(--t-13);color:var(--ink);background:var(--fill);border-radius:var(--r-sm);border:0;padding:0 34px 0 31px}.nav-search::placeholder{color:var(--ink-3)}.nav-search::-webkit-search-cancel-button{appearance:none}.sb-clear{border-radius:var(--r-sm);width:22px;height:22px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;right:5px}.sb-clear:hover{background:var(--fill-2);color:var(--ink)}.sb-clear:focus-visible,.nav-search:focus{outline:2px solid var(--acc);outline-offset:-1px}.sb .kbd{right:var(--s-3);background:var(--paper);position:absolute}.tabs{background:var(--fill);border-radius:var(--r-sm);flex:none;gap:2px;margin:10px 12px 6px;padding:2px;display:flex}.tab{text-overflow:ellipsis;min-width:0;font:inherit;font-size:var(--t-12);color:var(--ink-3);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:4px;flex:1;justify-content:center;align-items:center;gap:5px;padding:5px 6px;display:inline-flex;overflow:hidden}.tab[aria-selected=true]{background:var(--paper);color:var(--ink);font-weight:600}.tab-n{font-size:var(--t-11);color:var(--ink-3);font-variant-numeric:tabular-nums}.tab[aria-selected=true] .tab-n{color:var(--ink-2)}.tab-dot{background:var(--attn);border-radius:50%;flex:none;width:6px;height:6px}.clist{padding-bottom:var(--s-4);flex:1;overflow:auto}.crow{align-items:start;gap:var(--s-3);width:100%;padding:7px 14px 8px var(--s-5);grid-template-columns:15px minmax(0,1fr) auto;display:grid}.crow>*{min-width:0}.crow:hover{background:var(--fill)}.crow[aria-current=true]{background:var(--acc-wash)}.crow-mark{border:1.25px solid var(--hair);color:#0000;cursor:pointer;width:15px;height:15px;transition:background var(--dur), border-color var(--dur), color var(--dur);background:0 0;border-radius:50%;justify-content:center;align-items:center;margin-top:2px;padding:0;display:flex}.crow-mark svg{width:9px;height:9px}.crow:hover .crow-mark:not(:disabled){border-color:var(--ink-3);color:var(--ink-3)}.crow .crow-mark:hover:not(:disabled){border-color:var(--ink-2);color:var(--ink-2);background:var(--fill-2)}.crow-mark:focus-visible{outline:2px solid var(--acc);outline-offset:1px}.crow-mark:disabled{cursor:default}.crow-mark[aria-pressed=true]{background:var(--acc);border-color:var(--acc);color:var(--acc-fg)}.crow:hover .crow-mark[aria-pressed=true]{border-color:var(--acc);color:var(--acc-fg)}.crow-pick{min-width:0;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;padding:0;display:block}.crow-pick:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:var(--r-sm)}.crow-q{font-size:var(--t-13);color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;line-height:1.4;display:block;overflow:hidden}.crow-hot .crow-q{color:var(--ink);font-weight:600}.crow-done .crow-q{color:var(--ink-3)}.crow-sub{font-size:var(--t-12);color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;line-height:1.4;display:block;overflow:hidden}.crow-where{font-family:var(--mono);font-size:var(--t-11)}.crow-where-gone{text-decoration:line-through}.crow-sep{opacity:.5;padding:0 2px}.crow-state-agent{color:var(--attn)}.crow-when{font-size:var(--t-11);color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap;grid-area:1/3;margin-top:3px}.crow-hot .crow-when{color:var(--attn)}.crow .crow-del{grid-area:1/3;align-self:start;display:none}.crow:hover .crow-when,.crow:focus-within .crow-when{display:none}.crow:hover .crow-del,.crow:focus-within .crow-del{opacity:1;transition:opacity var(--dur) ease;display:flex}@starting-style{.crow:hover .crow-del,.crow:focus-within .crow-del{opacity:0}}.row-act-danger:hover{background:var(--danger-wash);color:var(--danger)}.clist-clear{width:100%;padding:var(--s-4) var(--s-6);font:inherit;font-size:var(--t-12);color:var(--ink-3);text-align:left;cursor:pointer;background:0 0;border:none;display:block}.clist-clear:hover{color:var(--danger)}.rail-empty .clist-clear{padding:var(--s-3) 0 0}.clist-quiet{padding:var(--s-4) var(--s-6) var(--s-2);font-size:var(--t-13);color:var(--ink-2);line-height:1.5}.clist-quiet-n{color:var(--ink-3);font-size:var(--t-12)}.row-count-hot{color:var(--attn)}.row-since{background:var(--ink-3);border-radius:50%;flex:none;width:6px;height:6px}.row-since-changed{background:var(--attn)}.rail-scroll{padding-bottom:var(--s-4);scrollbar-width:thin;scrollbar-color:var(--hair) transparent;flex:1;overflow-y:auto}.rail-rule{background:var(--hair);height:1px;margin:var(--s-0) 0}.rail-empty{color:var(--ink-3);padding:var(--s-3) var(--s-6);font-size:var(--t-13)}.sec-head{letter-spacing:.04em;text-transform:uppercase;width:100%;color:var(--ink-3);padding:5px var(--s-6) 7px;background:0 0;border:0;align-items:center;gap:7px;font-family:inherit;font-size:11.5px;font-weight:600;display:flex}.sec-n{font-variant-numeric:tabular-nums;letter-spacing:0;margin-left:auto}.sec-head-fold{cursor:pointer}.sec-head-fold:hover{color:var(--ink-2)}.sec-row{align-items:center;display:flex}.sec-row .sec-head{flex:1;min-width:0}.sec-row .sec-act{margin-right:9px;display:none}.sec-row:hover .sec-act,.sec-row:focus-within .sec-act{opacity:1;transition:opacity var(--dur) ease;display:flex}@starting-style{.sec-row:hover .sec-act,.sec-row:focus-within .sec-act{opacity:0}}.sec-row-hasact:hover .sec-n,.sec-row-hasact:focus-within .sec-n{display:none}.sec-head-hot{color:var(--attn)}.pin{padding:var(--s-0) 0 var(--s-4)}.pin-row{width:100%;padding:7px var(--s-6);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:15px 1fr;gap:9px;display:grid}.pin-row:hover{background:var(--attn-wash)}.pin-row>svg{color:var(--attn);margin-top:2px}.pin-text{flex-direction:column;min-width:0;display:flex}.pin-t1{font-size:var(--t-125);color:var(--ink);letter-spacing:-.008em;text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.pin-more{width:100%;padding:var(--s-1) var(--s-6) var(--s-0) 40px;color:var(--ink-3);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;font-size:11.5px;display:block}.pin-more:hover{color:var(--ink-2)}.pin-t2{color:var(--ink-3);font-size:11.5px;font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;overflow:hidden}.row{align-items:center;gap:var(--s-3);width:100%;padding:5px 14px 5px var(--s-5);font-size:var(--t-13);color:var(--ink-2);transition:background var(--dur) ease;animation:slide-in .18s var(--ease-out) both;grid-template-columns:15px 1fr auto;display:grid}@keyframes slide-in{0%{opacity:0;transform:translate(-4px)}}.pin-row{animation:slide-in .18s var(--ease-out) both}.row:hover{background:var(--fill)}.row[aria-current=true]{background:var(--fill);color:var(--ink)}.row-pick{min-width:0;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:block}.row-pick:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:var(--r-sm)}.row-name{align-items:baseline;gap:var(--s-2);min-width:0;font-family:var(--mono);font-size:var(--t-12);white-space:nowrap;display:flex;overflow:hidden}.row-base{text-overflow:ellipsis;overflow:hidden}.row[aria-current=true] .row-base{color:var(--ink);font-weight:600}.row-box{cursor:pointer;background:0 0;border:none;flex:0 0 15px;justify-content:center;align-items:center;width:15px;height:15px;padding:0;display:flex}.row-box:disabled{cursor:default}.row-box:focus-visible{outline:2px solid var(--acc);outline-offset:1px;border-radius:var(--s-1)}.row-box:hover:not(:disabled) .markbox{border-color:var(--ink-2)}.markbox{border-radius:var(--s-1);border:1.5px solid var(--ink-3);color:#0000;width:15px;height:15px;transition:background var(--dur), border-color var(--dur);background:0 0;flex:0 0 15px;justify-content:center;align-items:center;display:flex}.markbox svg{width:10px;height:10px}.markbox[data-state=on]{background:var(--acc);border-color:var(--acc);color:var(--acc-fg)}.markbox[data-state=mixed]:after{content:"";background:var(--ink-2);border-radius:1px;flex:none;width:8px;height:2px}.row-dir .row-pick{grid-column:2;align-items:center;display:flex}.row-dir .row-name{align-items:center;gap:var(--s-2)}.dir-ico{color:var(--dir-ico);flex:none;display:flex}.row-done .dir-ico{color:var(--ink-3)}.row-st{font-variant-numeric:tabular-nums;flex:none;font-weight:600}.row-st-add{color:var(--add)}.row-st-del{color:var(--del)}.row-was{color:var(--ink-3);text-overflow:ellipsis;flex:0 auto;overflow:hidden}.row-base-del{text-decoration:line-through}.row-done{color:var(--ink-3)}.row-right{align-items:center;gap:7px;display:flex}.row-acts{align-items:center;gap:1px;display:none}.row:hover .row-acts,.row:focus-within .row-acts{opacity:1;transition:opacity var(--dur) ease;display:flex}@starting-style{.row:hover .row-acts,.row:focus-within .row-acts{opacity:0}}.row-passive{align-items:center;gap:7px;display:inline-flex}.row:hover .row-passive,.row:focus-within .row-passive{display:none}.row-act{border-radius:var(--r-sm);width:22px;height:22px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex}.row-act:hover{background:var(--fill-2);color:var(--ink)}.row-act:focus-visible{outline:2px solid var(--acc);outline-offset:-1px}.row-count{font-size:var(--t-11);color:var(--ink-3);font-variant-numeric:tabular-nums;align-items:center;gap:3px;display:inline-flex}.reading-pane{scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--hair) transparent;flex-direction:column;flex:1;display:flex;overflow-y:scroll}.reading-pane-barred{overflow-anchor:none}.reading-col{padding:var(--s-3) var(--s-8) 120px;flex:1 0 auto}.reading-pane-barred .reading-col{padding-top:var(--s-6)}.pane-bar{z-index:5;align-items:center;gap:var(--s-3);height:36px;padding:0 var(--s-8);background:var(--paper);border-bottom:1px solid var(--hair);flex:none;display:flex;position:sticky;top:0}.pane-left{font-family:var(--mono);font-size:var(--t-12);color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}.pane-q{align-items:center;gap:var(--s-2);min-width:0;padding:3px var(--s-3);border-radius:var(--r-pill);background:var(--fill);font:inherit;font-size:var(--t-12);color:var(--ink);cursor:pointer;transition:color var(--dur) var(--ease-out), background var(--dur) var(--ease-out);border:none;flex-shrink:1;display:inline-flex}.pane-q:hover{background:var(--fill-2)}.pane-q:focus-visible{outline:2px solid var(--acc);outline-offset:1px}.pane-q .icon{color:var(--ink-3);flex:none}.pane-q-word{text-overflow:ellipsis;white-space:nowrap;max-width:14ch;font-family:var(--mono);overflow:hidden}.pane-sw{align-items:center;gap:var(--s-2);padding:3px var(--s-3);border-radius:var(--r-pill);font:inherit;font-size:var(--t-12);color:var(--ink-3);cursor:pointer;transition:color var(--dur) var(--ease-out), background var(--dur) var(--ease-out);background:0 0;border:none;flex-shrink:0;display:inline-flex}.pane-sw:hover{background:var(--fill);color:var(--ink)}.pane-sw-on{color:var(--ink)}.pane-sw:focus-visible{outline:2px solid var(--acc);outline-offset:1px}.pane-track{background:var(--fill-2);width:20px;height:12px;transition:background var(--dur) var(--ease-out);border-radius:6px;flex:0 0 20px;position:relative}.pane-track i{background:var(--ink-3);width:8px;height:8px;transition:transform var(--dur) var(--ease-out), background var(--dur) var(--ease-out);border-radius:50%;position:absolute;top:2px;left:2px}.pane-sw-on .pane-track{background:var(--acc)}.pane-sw-on .pane-track i{background:var(--acc-fg);transform:translate(8px)}.pane-icon{border-radius:var(--r-sm);width:24px;height:24px;color:var(--ink-3);cursor:pointer;transition:color var(--dur) var(--ease-out), background var(--dur) var(--ease-out);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.pane-icon:hover{background:var(--fill);color:var(--ink)}.pane-icon[aria-pressed=true]{background:var(--fill-2);color:var(--ink)}.pane-icon:focus-visible{outline:2px solid var(--acc);outline-offset:1px}.pane-nav[aria-pressed=true]{background:0 0}.pane-nav[aria-pressed=false]{color:var(--ink-2)}.pane-modes{border-radius:var(--r-sm);background:var(--fill);flex:none;align-items:center;gap:1px;padding:1px;display:inline-flex}.pane-modes .pane-icon{width:22px;height:22px}.pane-modes .pane-icon:not([aria-pressed=true]):hover{background:var(--fill-2)}.pane-act{align-items:center;gap:var(--s-2);height:24px;padding:0 var(--s-3);border-radius:var(--r-sm);font:inherit;font-size:var(--t-12);color:var(--ink-3);cursor:pointer;transition:color var(--dur) var(--ease-out), background var(--dur) var(--ease-out);background:0 0;border:none;flex:none;display:inline-flex}.pane-act:hover{background:var(--fill);color:var(--ink)}.pane-act:focus-visible{outline:2px solid var(--acc);outline-offset:1px}.pane-sep{width:1px;height:16px;margin:0 var(--s-1);background:var(--hair);flex:none}.reading-pane-barred .file-header{top:36px}.empty-acts{align-items:center;gap:var(--s-3);margin-top:var(--s-6);display:flex}.pane-done{text-align:center;padding:68px var(--s-8) 56px;flex-direction:column;align-items:center;display:flex}.pane-done h2{color:var(--ink);animation:done-rise .5s var(--ease-out) .82s both;margin:0;font-size:21px;font-weight:600}.done-meter{width:min(300px,100%);margin-top:var(--s-6);animation:done-rise .5s var(--ease-out) .96s both}.done-bar{background:var(--fill);border-radius:3px;height:6px;overflow:hidden}.done-bar i{background:var(--acc);transform-origin:0;height:100%;transform:scaleX(var(--p,1));animation:done-fill .85s var(--ease-out) 1.02s both;display:block}.done-stats{justify-content:center;align-items:center;gap:var(--s-2) var(--s-5);margin-top:var(--s-4);font-size:var(--t-125);color:var(--ink-2);flex-wrap:wrap;display:flex}.done-stat{align-items:center;gap:5px;display:inline-flex}.done-size{gap:var(--s-2);font-family:var(--mono);font-variant-numeric:tabular-nums}.done-unsent{padding:1px var(--s-2) 1px 5px;border:1px solid var(--attn-line);border-radius:var(--r-pill);background:var(--attn-wash);color:var(--attn);font-variant-numeric:tabular-nums;gap:4px;font-weight:600}.pane-done .empty-acts{animation:done-rise .5s var(--ease-out) 1.08s both}.done-n{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink)}.done-card{z-index:6;margin:0 var(--s-8) var(--s-6);border:1px solid var(--hair);background:var(--paper);box-shadow:var(--lift);border-radius:12px;flex:none;padding:14px 16px;animation:.52s cubic-bezier(.18,1.3,.34,1) both done-dock;position:sticky;bottom:0}.done-card .done-seal{animation:.44s cubic-bezier(.2,1.55,.35,1) .14s both done-seal-pop;position:relative}.done-card .done-seal:after{content:"";border-radius:var(--r-pill);border:1.5px solid var(--acc);animation:seal-ring .8s var(--ease-out) .44s both;position:absolute;inset:-2px}.done-card .done-said{animation:done-line .42s var(--ease-out) .2s both}.done-card .done-acts{animation:done-line .42s var(--ease-out) .27s both}.done-card .done-caveat{animation:done-line .42s var(--ease-out) .32s both}.done-card .done-close{animation:fade-in .3s var(--ease-out) .4s both}.done-card-row{align-items:center;gap:14px;display:flex}.done-seal{border-radius:var(--r-pill);border:1.5px solid var(--acc);width:30px;height:30px;color:var(--acc);flex:none;justify-content:center;align-items:center;display:inline-flex}.done-seal-drawn{width:52px;height:52px;margin-bottom:var(--s-6);background:var(--acc);color:var(--acc-fg);border:0;animation:.62s cubic-bezier(.2,1.6,.35,1) 60ms both seal-in;position:relative}.done-seal-drawn:after{content:"";border-radius:var(--r-pill);border:2px solid var(--acc);animation:seal-ring .95s var(--ease-out) .82s both;position:absolute;inset:0}.done-tick{z-index:1;position:relative}.done-tick path{stroke-dasharray:22;animation:.5s cubic-bezier(.65,0,.35,1) .44s both tick-draw}.done-spark{position:absolute;inset:0}.done-spark i{background:var(--acc);width:2.5px;height:10px;transform:rotate(var(--a)) translateY(-28px);border-radius:2px;margin:-5px 0 0 -1.25px;animation:.66s cubic-bezier(.2,.8,.3,1) .78s both spark-out;position:absolute;top:50%;left:50%}.done-spark i:first-child{--a:0deg}.done-spark i:nth-child(2){--a:45deg}.done-spark i:nth-child(3){--a:90deg}.done-spark i:nth-child(4){--a:135deg}.done-spark i:nth-child(5){--a:180deg}.done-spark i:nth-child(6){--a:225deg}.done-spark i:nth-child(7){--a:270deg}.done-spark i:nth-child(8){--a:315deg}.done-spark i:nth-child(2n){opacity:.5;height:6px;animation-delay:.86s}.done-said{flex:1;min-width:0}.done-head{font-size:var(--t-14);color:var(--ink);font-weight:600;display:block}.done-card .done-stats{justify-content:flex-start;gap:var(--s-1) var(--s-4);color:var(--ink-3);margin-top:3px}.done-acts{flex:none}.done-close{border-radius:var(--r-sm);width:24px;height:24px;color:var(--ink-3);cursor:pointer;transition:color var(--dur) var(--ease-out), background var(--dur) var(--ease-out);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.done-close:hover{background:var(--fill);color:var(--ink)}.done-close:focus-visible{outline:2px solid var(--acc);outline-offset:1px}.landed-card{margin-bottom:var(--s-6);border:1px solid var(--hair);background:var(--paper);box-shadow:var(--lift);border-radius:12px;flex:none;align-items:center;gap:14px;padding:12px 16px;display:flex}.landed-seal{border-radius:var(--r-pill);border:1.5px solid var(--ink-3);width:30px;height:30px;color:var(--ink-3);flex:none;justify-content:center;align-items:center;display:inline-flex}.landed-said{min-width:0;font-size:var(--t-14);color:var(--ink-2);flex:1}.landed-acts{align-items:center;gap:var(--s-3);flex:none;display:flex}.landed-sha{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink)}.landed-subject{color:var(--ink)}.landed-full .landed-sha,.landed-full .landed-subject{color:var(--ink-2)}.cov-note-error{color:var(--danger)}.done-caveat{align-items:center;gap:var(--s-3);margin-top:var(--s-4);border-top:1px solid var(--hair);font-size:var(--t-125);color:var(--ink-2);text-align:left;padding-top:11px;display:flex}.done-caveat .icon{color:var(--attn);flex:none}.done-caveat-text{flex:1}.done-caveat-act{border:1px solid var(--hair);border-radius:var(--r-sm);height:24px;font:inherit;font-size:var(--t-12);color:var(--ink-2);cursor:pointer;white-space:nowrap;transition:background var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out);background:0 0;flex:none;padding:0 10px}.done-caveat-act:hover{background:var(--fill);border-color:var(--ink-3);color:var(--ink)}.pane-done .done-caveat{max-width:48ch;margin-top:var(--s-6);animation:done-rise .5s var(--ease-out) 1.02s both}@keyframes done-dock{0%{opacity:0;transform:translateY(78px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes done-seal-pop{0%{opacity:0;transform:scale(.3)rotate(-30deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes done-line{0%{opacity:0;transform:translateY(7px)}}@keyframes done-rise{0%{opacity:0;transform:translateY(8px)}}@keyframes done-fill{0%{transform:scaleX(0)}}@keyframes seal-in{0%{opacity:0;transform:scale(.5)}}@keyframes spark-out{0%{opacity:0;transform:rotate(var(--a)) translateY(-26px) scaleY(.3)}25%{opacity:1}to{opacity:0;transform:rotate(var(--a)) translateY(-46px) scaleY(1)}}@keyframes seal-ring{0%{opacity:.4;transform:scale(1)}to{opacity:0;transform:scale(2.1)}}@keyframes tick-draw{0%{stroke-dashoffset:22px}to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.done-seal-drawn,.done-seal-drawn:after,.done-spark i,.done-tick path,.done-bar i,.pane-done h2,.done-meter,.pane-done .empty-acts,.pane-done .done-caveat,.done-card,.done-card .done-seal,.done-card .done-said,.done-card .done-acts,.done-card .done-caveat,.done-card .done-close{animation:none}.done-seal-drawn:after,.done-card .done-seal:after,.done-spark{display:none}.done-tick path{stroke-dasharray:none}}.reading-pane::-webkit-scrollbar{width:12px}.rail-scroll::-webkit-scrollbar{width:12px}.reading-pane::-webkit-scrollbar-thumb{background:var(--border);border:3px solid var(--bg);background-clip:padding-box;border-radius:6px}.rail-scroll::-webkit-scrollbar-thumb{background:var(--border);border:3px solid var(--bg);background-clip:padding-box;border-radius:6px}.reading-pane::-webkit-scrollbar-thumb:hover{background:var(--fg-muted);border:3px solid var(--bg);background-clip:padding-box}.rail-scroll::-webkit-scrollbar-thumb:hover{background:var(--fg-muted);border:3px solid var(--bg);background-clip:padding-box}.reading-pane::-webkit-scrollbar-track{background:0 0}.rail-scroll::-webkit-scrollbar-track{background:0 0}.file-section{margin-bottom:var(--s-6);border:1px solid var(--hair);border-radius:var(--r);background:var(--paper);scroll-margin-top:var(--s-3);overflow:clip}.file-header{align-items:center;gap:var(--s-3);min-height:42px;padding:5px var(--s-3) 5px var(--s-2);background:var(--fill);border-bottom:1px solid var(--hair);z-index:3;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;position:sticky;top:0}.file-section-collapsed .file-header{border-bottom:none}.file-chevron{color:var(--ink-3);padding:0 var(--s-0);cursor:pointer;background:0 0;border:0;flex-shrink:0}.file-status{color:var(--ink-3);flex:none;font-size:11.5px}.file-status-added{color:var(--add)}.file-status-deleted{color:var(--del)}.file-since{padding:3px var(--s-2);border-radius:var(--r-pill);background:var(--attn-wash);color:var(--attn);font-size:var(--t-11);font-family:var(--sans);white-space:nowrap;flex:none;font-weight:600}.file-path{font-family:var(--mono);font-size:var(--t-125);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.file-dir{color:var(--ink-3)}.file-base{color:var(--ink);font-weight:600}.file-oldpath{color:var(--ink-3);text-decoration:line-through}.ghb{border-radius:var(--r-sm);width:26px;height:26px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;transition:background .13s,color .13s;display:flex;position:relative}.ghb:hover{background:var(--fill-2);color:var(--ink)}.ghb:focus-visible{outline:2px solid var(--acc);outline-offset:-1px}.file-copy{opacity:0;transition:opacity .14s}.file-header:hover .file-copy,.file-copy:focus-visible{opacity:1}.ghb-badge{border-radius:var(--r-pill);background:var(--acc);min-width:13px;height:13px;color:var(--acc-fg);text-align:center;font-size:9px;font-weight:700;line-height:13px;font-family:var(--sans);padding:0 3px;position:absolute;top:-1px;right:-1px}.dstat{font-family:var(--mono);font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:7px;font-size:11.5px;display:flex}.sq{gap:2px;display:flex}.sq i{background:var(--hair-2);width:8px;height:8px;box-shadow:inset 0 0 0 1px var(--hair);border-radius:2px;display:block}.sq i.sq-a{background:var(--add);box-shadow:none}.sq i.sq-d{background:var(--del);box-shadow:none}.file-stub{padding:var(--s-6) var(--s-5);color:var(--ink-3)}.file-stub-large{align-items:center;gap:var(--s-2) var(--s-4);flex-wrap:wrap;display:flex}.hunk-boundary td{background:var(--fill);border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);padding:0}.hunk:first-child .hunk-boundary td{border-top:0}.hunk-boundary-bar{align-items:center;gap:var(--s-2);padding:0 var(--s-3) 0 0;min-height:27px;font-family:var(--mono);font-size:var(--t-11);font-variant-numeric:tabular-nums;color:var(--ink-3);display:flex}.hunk-boundary-bar>.hunk-at:first-child{margin-left:var(--s-3)}.hunk-at{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.hunk-at-scope{color:var(--ink-2)}.hunk-lines{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:var(--t-125);--line-h:calc(1.65 * var(--t-125));line-height:1.65}.hunk-lines tr.line{height:var(--line-h)}.line:hover{background:var(--fill)}.line-no{text-align:right;width:1%;min-width:2.9em;color:var(--ink-3);font-size:var(--t-11);-webkit-user-select:none;user-select:none;vertical-align:top;font-variant-numeric:tabular-nums;padding:0 .7em;position:relative}.line-no+.line-no{border-right:1px solid var(--hair)}.line-marker{text-align:center;width:1%;color:var(--ink-3);-webkit-user-select:none;user-select:none;vertical-align:top;padding:0 .35em;font-weight:600}.line-code{white-space:pre-wrap;word-break:break-word;padding:0 .6em 0 .5em}.line-add{background:var(--add-row)}.line-add .line-marker{color:var(--add);box-shadow:inset 2px 0 0 var(--add)}.line-del{background:var(--del-row)}.line-del .line-marker{color:var(--del);box-shadow:inset 2px 0 0 var(--del)}.line-add .word-changed,.line-half-add .word-changed{background:var(--add-word);box-shadow:0 0 0 1px var(--add-word);border-radius:3px}.line-del .word-changed,.line-half-del .word-changed{background:var(--del-word);box-shadow:0 0 0 1px var(--del-word);border-radius:3px}.hunk-viewed .hunk-lines>tbody>tr.line,.hunk-viewed .hunk-lines>tbody>tr.hunk-boundary{opacity:.45}.hunk-selected{box-shadow:inset 2px 0 0 var(--acc-line)}.gap-x{flex-direction:column;flex:none;align-self:stretch;width:3em;display:flex}.gap-btn{background:var(--exp-wash);min-height:0;color:var(--exp-ink);cursor:pointer;font:inherit;transition:background var(--dur) var(--ease-out), color var(--dur) var(--ease-out);border:0;flex:1;justify-content:center;align-items:center;padding:0;display:inline-flex}.gap-btn:hover{background:var(--exp-hover);color:var(--exp-hover-fg)}.gap-fold{color:var(--ink-3);border-radius:var(--r-sm);padding:0 var(--s-2);cursor:pointer;min-width:28px;font:inherit;background:0 0;border:0;justify-content:center;align-self:stretch;align-items:center;display:inline-flex}.gap-fold:hover{background:var(--fill-2);color:var(--ink)}.hunk-boundary-merged td{background:0 0;border-top:0;border-bottom:0}.hunk-boundary-merged .hunk-boundary-bar{min-height:0}.hunk-boundary-merged .gap-fold{margin-left:var(--s-1);padding:0 var(--s-2);opacity:.55;min-height:16px}.hunk-boundary-merged .gap-fold:hover{opacity:1}.gap-band .hunk-boundary td{border-bottom:0}.hunk-expand-failed{padding:3px var(--s-2);border-radius:var(--r-pill);background:var(--attn-wash);color:var(--attn);font-family:var(--sans);white-space:nowrap}.hunk-lines-split{table-layout:fixed}.hunk-lines-split .split-col-no{width:3.2em}.hunk-lines-split .line-no{padding:0 .6em}.line-half{white-space:pre-wrap;word-break:break-word;width:50%;padding:0 1em 0 .4em}.line-half-add{background:var(--add-bg)}.line-half-del{background:var(--del-bg)}.line-half-empty{background:var(--bg-subtle);opacity:.5}.image-diff{justify-content:center;gap:1rem;padding:1rem;display:flex}.image-side{text-align:center;margin:0}.image-side img{border:1px solid var(--border);border-radius:6px;max-width:100%;max-height:420px}.image-side-base img{border-color:var(--del-fg)}.image-side-head img{border-color:var(--add-fg)}.image-side figcaption{color:var(--fg-muted);margin-top:.3rem;font-size:12px}.file-preview-btn{align-items:center;gap:var(--s-2);border-radius:var(--r-sm);border:1px solid var(--hair);background:var(--paper);height:26px;font:inherit;font-size:var(--t-125);color:var(--ink-2);cursor:pointer;flex:none;padding:0 9px;transition:border-color .13s,color .13s;display:inline-flex}.file-preview-btn:hover{border-color:var(--ink-3);color:var(--ink)}.file-preview-btn:focus-visible{outline:2px solid var(--acc);outline-offset:1px}.file-preview-btn .icon{color:var(--ink-3)}.file-preview-btn:hover .icon{color:var(--ink-2)}.file-viewed-toggle{align-items:center;gap:var(--s-2);border-radius:var(--r-sm);border:1px solid var(--hair);background:var(--paper);height:26px;font:inherit;font-size:var(--t-125);color:var(--ink-2);cursor:pointer;flex:none;padding:0 9px;transition:border-color .13s,color .13s;display:inline-flex}.file-viewed-toggle:hover{border-color:var(--ink-3);color:var(--ink)}.file-viewed-toggle .markbox{flex:0 0 14px;width:14px;height:14px}.file-viewed-toggle[aria-pressed=true]{color:var(--ink)}.file-viewed-toggle:focus-visible{outline:2px solid var(--acc);outline-offset:1px}.hunk-badge{margin-left:var(--s-4);padding:3px var(--s-2);border-radius:var(--r-pill);background:var(--attn-wash);color:var(--attn);font-size:var(--t-11);font-family:var(--sans)}.hunk-since-review{box-shadow:inset 2px 0 0 var(--attn)}@keyframes hunk-pulse{0%{box-shadow:inset 2px 0 0 var(--attn);background:var(--attn-wash)}to{background:0 0;box-shadow:inset 2px 0 #0000}}.hunk-fresh{animation:2.5s ease-out hunk-pulse}@keyframes thread-found{0%{box-shadow:0 0 #0000}22%{box-shadow:0 0 16px 1px var(--found)}55%{box-shadow:0 0 16px 1px var(--found)}to{box-shadow:0 0 22px 4px #0000}}.thread[data-found]{--found:color-mix(in srgb, var(--acc) 26%, transparent);animation:1.6s ease-in-out thread-found}@keyframes file-found{0%,to{background:var(--fill)}22%,55%{background:color-mix(in srgb, var(--acc) 14%, var(--fill))}}.file-section[data-found]>.file-header{animation:1.6s ease-in-out file-found}@media (prefers-reduced-motion:reduce){.file-section[data-found]>.file-header,.thread[data-found]{animation:none}}.center-note{justify-content:center;align-items:center;gap:var(--s-3);height:100%;padding:var(--s-8);color:var(--ink-3);text-align:center;flex-direction:column;display:flex}.center-note h2{font-size:var(--t-17);color:var(--ink);margin:0;font-weight:600}.center-note p{max-width:52ch;margin:0;font-size:13.5px}.center-note-error svg{color:var(--danger)}.center-note-error p{font-family:var(--mono);font-size:var(--t-125);color:var(--ink-2)}.shimmer{border-radius:var(--r-sm);width:min(340px,60vw);height:11px;margin-bottom:var(--s-0);background:linear-gradient(90deg, var(--fill) 25%, var(--fill-2) 37%, var(--fill) 63%);background-size:400% 100%;animation:1.5s linear infinite shimmer}.shimmer-short{width:min(220px,40vw);margin-bottom:var(--s-4)}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}@media (prefers-reduced-motion:reduce){.shimmer{animation:none}}.load-more{padding:var(--s-6) 0}.pane-hidden{justify-content:center;align-items:center;gap:var(--s-2) var(--s-4);margin:var(--s-6) auto var(--s-8);font-size:var(--t-125);color:var(--ink-3);flex-wrap:wrap;display:flex}.pane-hidden-said{align-items:center;gap:var(--s-2);display:inline-flex}.pane-hidden-said .icon{color:var(--ink-3)}.empty-state{padding:52px var(--s-8);text-align:center;color:var(--ink-3);flex-direction:column;align-items:center;gap:5px;display:flex}.empty-state svg{color:var(--ink-3);margin-bottom:var(--s-4)}.empty-state h2{font-size:var(--t-17);color:var(--ink);margin:0;font-weight:600}.empty-state p{max-width:44ch;font-size:var(--t-14);margin:0}.line-comment-btn{opacity:0;border-radius:var(--r-sm);background:var(--acc);width:18px;height:18px;color:var(--acc-fg);cursor:pointer;border:none;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:50%;left:1px;transform:translateY(-50%)}.line-comment-btn svg{width:11px;height:11px}tr:hover .line-comment-btn,.line-comment-btn:focus-visible{opacity:1}.hunk-lines tr.line-ranged>td:first-child,.hunk-lines tr.thread-row-ranged>td{box-shadow:inset 2px 0 0 var(--ink-3)}.line-range-glyph{color:var(--ink-2);pointer-events:none;align-items:center;display:flex;position:absolute;top:50%;left:4px;transform:translateY(-50%)}.line-range-glyph svg{width:10px;height:10px}tr:hover .line-range-glyph{opacity:0}.hunk-lines tr.line-sel>td{background:var(--exp-wash)}.hunk-lines tr.line-sel>td:first-child,.hunk-lines tr.thread-row-ranged.thread-row-lit>td{box-shadow:inset 2px 0 0 var(--exp-ink)}.thread-row>td{background:var(--bg-subtle);border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:.35rem .8rem}.thread-list{flex-direction:column;gap:.5rem;display:flex}.thread{border:1px solid var(--hair);border-radius:var(--r);background:var(--paper);font-family:var(--sans);font-size:var(--t-13);max-width:var(--conv);scroll-margin-top:var(--s-3);overflow:hidden}.file-section .thread{scroll-margin-top:50px}.reading-pane-barred .thread{scroll-margin-top:44px}.reading-pane-barred .file-section .thread{scroll-margin-top:86px}.thread-resolved{opacity:.6}.thread-head{align-items:center;gap:var(--s-2);padding:5px var(--s-4) 5px var(--s-2);border-bottom:1px solid var(--hair);background:var(--hair-2);font-size:var(--t-12);color:var(--ink-3);display:flex}.thread-shut{border-radius:var(--r-sm);cursor:pointer;background:0 0;border:0;padding:3px}.thread-shut:hover{color:var(--ink);background:var(--fill-2)}.thread-where{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.thread-where-n{color:var(--ink-3);font-variant-numeric:tabular-nums}.thread-where-gone{font-family:var(--mono);text-decoration:line-through}.thread-shut-peek{width:100%;padding:var(--s-3) var(--s-5);color:var(--ink-2);font:inherit;font-size:var(--t-13);text-align:left;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background:0 0;border:0;display:block;overflow:hidden}.thread-shut-peek:hover{background:var(--hair-2)}.thread-marks{align-items:center;gap:var(--s-2);margin-left:auto;display:inline-flex}.thread-collapsed{border-bottom:0}.thread-collapsed .thread-collapsed-summary{padding:var(--s-1) 0}.thread-spacer{flex:1}.chip{border-radius:var(--r-pill);font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:5px;padding:3px 9px;font-size:11.5px;font-weight:500;display:inline-flex}.chip-mute{color:var(--ink-3);background:var(--fill)}.chip-ok{color:var(--add);background:var(--add-tint)}.chip-attn{color:var(--attn);background:var(--attn-wash)}.thread-badge{white-space:nowrap;padding:3px var(--s-2);border-radius:var(--r-pill);background:var(--attn-wash);color:var(--attn);font-size:var(--t-11);flex:none;align-items:center;gap:5px;display:inline-flex}.thread-message-pending{opacity:.9}.thread-message-pending .cmt-when{color:var(--ink-3)}.pending-dots{align-items:center;gap:4px;padding:3px 0;display:inline-flex}.pending-dots i{background:var(--ink-3);opacity:.5;border-radius:50%;width:6px;height:6px}.thread-message-unanswered{opacity:1}.thread-message-unanswered .cmt-when{font-style:italic}.pending-none{color:var(--ink-3);font-size:12px}.thread-copied{color:var(--add-fg);font-size:12px}.thread-context-toggle{border:none;border-bottom:1px solid var(--border);background:var(--bg-subtle);width:100%;color:var(--ink-3);font:inherit;font-size:var(--t-125);padding:5px var(--s-4);cursor:pointer;text-align:left;align-items:center;gap:6px;display:flex}.thread-context-toggle:hover{color:var(--ink-2)}.thread-context-n{font-size:var(--t-11);opacity:.75;margin-left:auto}.thread-context{margin:0 var(--s-4) var(--s-3);border:1px solid var(--hair);border-radius:var(--r-sm);background:var(--paper);font-family:var(--mono);white-space:pre;padding:.35rem 0;font-size:11px;overflow-x:auto}.ctx-line{padding:0 .6rem;display:block}.ctx-add{background:var(--add-bg)}.ctx-del{background:var(--del-bg)}.thread-messages{flex-direction:column;display:flex}.cmt{padding:var(--s-4) var(--s-5)}.cmt+.cmt{border-top:1px solid var(--hair-2)}.cmt-head{align-items:center;gap:var(--s-1) var(--s-3);flex-wrap:wrap;margin-bottom:5px;display:flex}.cmt-who{font-size:var(--t-13);color:var(--ink);font-weight:600}.cmt-who-reviewer{color:var(--acc)}.cmt-who-agent{color:var(--attn)}.cmt-when{font-size:var(--t-12);color:var(--ink-3);font-variant-numeric:tabular-nums}.cmt-body{font-size:var(--t-14);color:var(--ink);padding-left:30px;line-height:1.6}.cmt-body>:is(p,ul,ol,blockquote,h1,h2,h3,h4,h5,h6){max-width:88ch}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p,.markdown ul,.markdown ol,.markdown blockquote,.markdown pre{margin:0 0 var(--s-4)}.markdown ul,.markdown ol{padding-left:var(--s-7)}.markdown li{margin-bottom:3px}.markdown code{font-family:var(--mono);font-size:var(--t-125);background:var(--fill);border-radius:5px;padding:2px 5px}.markdown pre{background:var(--fill);border-radius:var(--s-3);padding:9px 11px;overflow-x:auto}.markdown pre code{background:0 0;padding:0}.markdown blockquote{border-left:2px solid var(--hair);padding-left:var(--s-5);color:var(--ink-2)}.markdown a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--ink-3);text-decoration-color:var(--ink-3)}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-size:var(--t-14);margin:var(--s-5) 0 var(--s-1);font-weight:600}.markdown table{border-collapse:collapse;font-size:var(--t-125);margin-bottom:var(--s-4)}.markdown th,.markdown td{border:1px solid var(--hair);padding:var(--s-1) var(--s-3);text-align:left}.markdown hr{border:0;border-top:1px solid var(--hair);margin:var(--s-5) 0}.markdown .mermaid-figure{background:var(--fill);border-radius:var(--s-3);padding:var(--s-3);margin-bottom:var(--s-4);overflow-x:auto}.markdown .mermaid-figure svg{margin:0 auto;display:block}.markdown .mermaid-broken{font-size:var(--t-125);color:var(--ink-2);margin-bottom:var(--s-1)}.md-doc{font-size:var(--t-14);max-width:74ch;line-height:1.65}.md-doc p,.md-doc ul,.md-doc ol,.md-doc blockquote,.md-doc pre,.md-doc table{margin-bottom:var(--s-5)}.md-doc h1,.md-doc h2,.md-doc h3,.md-doc h4,.md-doc h5,.md-doc h6{margin:var(--s-8) 0 var(--s-3)}.md-doc h1{letter-spacing:-.015em;font-size:22px}.md-doc h2{font-size:var(--t-17);padding-bottom:var(--s-2);border-bottom:1px solid var(--hair)}.md-doc h3{font-size:var(--t-15)}.md-doc img{max-width:100%;height:auto}.cbox{border:1px solid var(--hair);border-radius:var(--r);background:var(--paper);margin:var(--s-4) 0;max-width:var(--conv);overflow:hidden}.cbox:focus-within{border-color:var(--acc-line)}.cbox-head{padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--hair);background:var(--fill);align-items:center;gap:9px;display:flex}.cbox-title{font-size:var(--t-125);color:var(--ink-2)}.cbox-head .scope-chip,.cbox-head .cbox-widen{flex:none}.cbox-close{border-radius:var(--r-sm);width:24px;height:24px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;margin-left:auto;padding:0;display:inline-flex}.cbox-close:hover{background:var(--fill-2);color:var(--ink)}.cbox-close:focus-visible{outline:2px solid var(--acc);outline-offset:-1px}.avatar{background:var(--fill-2);width:22px;height:22px;color:var(--ink-2);border-radius:50%;flex:0 0 22px;justify-content:center;align-items:center;display:flex}.avatar-you{background:var(--acc);color:var(--acc-fg)}.avatar-agent{background:var(--attn-wash);color:var(--attn);box-shadow:inset 0 0 0 1px var(--attn-line)}.avatar svg{width:12px;height:12px}.cbox-tabs{gap:var(--s-0);padding:var(--s-2) var(--s-2) 0;border-bottom:1px solid var(--hair);background:var(--fill);display:flex}.cbox-tab{font:inherit;font-size:var(--t-125);padding:var(--s-2) var(--s-5);color:var(--ink-3);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:0;border-radius:7px 7px 0 0;margin-bottom:-1px}.cbox-tab[aria-selected=true]{background:var(--paper);color:var(--ink);border-color:var(--hair);border-bottom:1px solid var(--paper);font-weight:600}.cbox-mdbar{border-bottom:1px solid var(--hair-2);flex-wrap:wrap;align-items:center;gap:1px;padding:5px 7px;display:flex}.cbox-mdb{border-radius:var(--r-sm);width:26px;height:26px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex}.cbox-mdb:hover{background:var(--fill);color:var(--ink)}.cbox-mdb:focus-visible{outline:2px solid var(--acc);outline-offset:-1px}.cbox-mdsep{width:1px;height:var(--s-6);background:var(--hair);margin:0 5px}.cbox-body{padding:11px var(--s-5)}.cbox .cbox-input{min-height:66px;font-size:var(--t-14);background:0 0;border:0;padding:0}.cbox .cbox-input:focus{border:0;outline:none}.cbox-preview{font-size:var(--t-14);color:var(--ink);min-height:66px;line-height:1.6}.cbox-preview-empty{color:var(--ink-3)}.scope-chip{align-items:center;gap:var(--s-2);font-size:11.5px;font-family:var(--mono);background:var(--fill);border:1px solid var(--hair);border-radius:var(--r-pill);padding:3px var(--s-1) 3px 9px;color:var(--ink-2);display:inline-flex}.scope-chip svg{color:var(--ink-3)}.scope-chip-x{width:16px;height:16px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex}.scope-chip-steppers{gap:1px;display:inline-flex}.scope-chip-step{width:16px;height:16px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex}.scope-chip-step svg{width:9px;height:9px}.scope-chip-step:hover:not(:disabled){background:var(--fill-2);color:var(--ink)}.scope-chip-step:disabled{opacity:.35;cursor:default}.scope-chip-x svg{width:9px;height:9px}.scope-chip-x:hover{background:var(--fill-2);color:var(--ink)}.cbox-widen{color:var(--ink-3);cursor:pointer;padding:3px var(--s-2);border-radius:var(--r-sm);background:0 0;border:0;font-family:inherit;font-size:11.5px}.cbox-widen:hover{background:var(--fill);color:var(--ink)}.cbox-openers{padding:0 var(--s-5) 9px;flex-wrap:wrap;align-items:center;gap:5px;display:flex}.cbox-opener{font:inherit;font-size:var(--t-12);color:var(--ink-2);border:1px solid var(--hair);border-radius:var(--r-pill);cursor:pointer;background:0 0;padding:4px 9px;line-height:1;transition:border-color .14s,background .14s,color .14s}.cbox-opener:hover{background:var(--fill);border-color:var(--ink-3);color:var(--ink)}.cbox-opener:focus-visible{outline:2px solid var(--acc);outline-offset:1px}.cbox-foot{align-items:center;gap:var(--s-3);padding:9px var(--s-5);border-top:1px solid var(--hair);background:var(--fill);display:flex}.cbox-attach{font-size:var(--t-12);color:var(--ink-3);align-items:center;gap:5px;display:inline-flex}.cbox-rich{border-radius:var(--r-sm);min-width:26px;height:24px;color:var(--ink-3);cursor:pointer;font:inherit;font-size:var(--t-125);letter-spacing:-.01em;background:0 0;border:0;padding:0 6px;font-weight:600}.cbox-rich:hover,.cbox-rich[aria-pressed=true]{background:var(--fill-2);color:var(--ink)}.cbox-rich:focus-visible{outline:2px solid var(--acc);outline-offset:-1px}.cbox-intent{border:1px solid var(--hair);border-radius:var(--r-sm);align-items:center;gap:2px;padding:2px;display:inline-flex}.cbox-intent-chip{border-radius:calc(var(--r-sm) - 2px);height:20px;color:var(--ink-3);cursor:pointer;font:inherit;font-size:var(--t-12);background:0 0;border:0;padding:0 8px}.cbox-intent-chip:hover{background:var(--fill-2);color:var(--ink)}.cbox-intent-chip[aria-checked=true]{background:var(--fill-2);color:var(--ink);font-weight:600}.cbox-intent-chip:focus-visible{outline:2px solid var(--acc);outline-offset:-1px}.cbox-actions{align-items:center;gap:var(--s-2);margin-left:auto;display:flex}.btn-outline{background:var(--fill-2);border:1px solid var(--hair);color:var(--ink)}.btn-outline:hover:not(:disabled){border-color:var(--ink-3);color:var(--ink)}.btn-outline svg{color:var(--ink-3)}.btn-kbd{font-family:var(--mono);opacity:.6;margin-left:1px;font-size:10.5px}.thread-composer{max-width:var(--conv)}.thread-input{border:1px solid var(--border);background:var(--bg);width:100%;min-height:2.2em;color:var(--fg);font:inherit;resize:vertical;border-radius:6px;flex:1;padding:.35rem .5rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13px}.thread-input:focus{border-color:var(--accent);outline:none}.btn{align-items:center;gap:var(--s-2);border-radius:var(--r-pill);background:var(--fill);height:30px;color:var(--ink);cursor:pointer;font:inherit;font-size:var(--t-13);letter-spacing:-.008em;white-space:nowrap;border:0;padding:0 13px;font-weight:500;transition:background .15s,opacity .15s;display:inline-flex}.btn:hover:not(:disabled){background:var(--fill-2)}.btn:disabled{opacity:.5;cursor:default}.btn:focus-visible{outline:2px solid var(--acc);outline-offset:2px}.btn-primary{background:var(--acc);color:var(--acc-fg);font-weight:600}.btn-primary:hover:not(:disabled){background:var(--acc);opacity:.85}.btn-danger{background:var(--danger);color:var(--acc-fg);font-weight:600}.btn-danger:hover:not(:disabled){background:var(--danger);opacity:.85}.btn-ghost{color:var(--ink-2);padding:0 var(--s-3);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--fill);color:var(--ink)}.btn-ghost-danger:hover:not(:disabled){background:var(--danger-wash);color:var(--danger)}.btn-attn{color:var(--attn);border:1px solid var(--attn-line);background:0 0;font-weight:600}.btn-attn:hover:not(:disabled){background:var(--attn-wash)}.btn-sm{height:26px;font-size:var(--t-125);padding:0 11px}.btn-icon{justify-content:center;width:30px;padding:0}.btn-icon.btn-sm{width:26px}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.menu{flex-shrink:0;position:relative}.menu-panel{right:0;top:calc(100% + var(--s-2));z-index:20;border:1px solid var(--hair);border-radius:var(--r);background:var(--paper);min-width:218px;box-shadow:var(--lift-lg);text-align:left;flex-direction:column;padding:5px;display:flex;position:absolute}.menu-panel-left{left:0;right:auto}.menu-item{color:var(--ink-2);text-align:left;cursor:pointer;font:inherit;font-size:var(--t-13);background:0 0;border:none;border-radius:7px;align-items:center;gap:9px;padding:7px 9px;display:flex}.menu-item:hover{background:var(--fill);color:var(--ink)}.menu-item svg{color:var(--ink-3)}.menu-item-label{flex:1;min-width:0}.menu-item[aria-checked=true]{color:var(--ink)}.menu-item svg.menu-item-check{color:var(--acc)}.menu-item-danger{color:var(--danger)}.menu-item-danger:hover{background:var(--danger-wash);color:var(--danger)}.menu-sep{background:var(--hair);border:0;height:1px;margin:5px 7px}.menu-label{font-size:var(--t-11);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);padding:5px 9px 2px;font-weight:600}.agent-banner{z-index:30;align-items:center;gap:var(--s-2);padding:var(--s-3) var(--s-6);background:var(--attn-wash);border-bottom:1px solid var(--attn-line);animation:banner-in var(--dur-move) var(--ease-out);display:flex;position:fixed;top:53px;left:0;right:0}@media (prefers-reduced-motion:reduce){.agent-banner{animation:none}}@keyframes banner-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.agent-banner-body{justify-content:center;align-items:baseline;gap:var(--s-3);min-width:0;font:inherit;cursor:pointer;background:0 0;border:none;flex:1;padding:0;display:flex}.agent-banner-body .icon{color:var(--attn);flex-shrink:0;align-self:center}.agent-banner-label{font-size:var(--t-13);color:var(--ink);white-space:nowrap;font-weight:600}.agent-banner-anchor{font-family:var(--mono);font-size:var(--t-12);color:var(--attn);white-space:nowrap}.agent-banner-preview{font-size:var(--t-13);color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.agent-banner-body:hover .agent-banner-preview{color:var(--ink)}.agent-banner-x{flex-shrink:0}.thread-collapsed{align-items:center;gap:.4rem;padding:.2rem .6rem;display:flex}.thread-collapsed-summary{min-width:0;color:var(--fg-muted);cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:.5rem;padding:.15rem 0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;display:flex}.thread-collapsed-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.thread-collapsed-count{opacity:.75;flex-shrink:0;font-size:11px}.thread-collapsed-hint{color:var(--ink-3);flex-shrink:0;align-items:center;display:flex}.thread-reply-stub{text-align:left;width:100%;padding:7px var(--s-4);border:1px solid var(--hair);border-radius:var(--r-sm);background:var(--paper);color:var(--ink-3);cursor:text;font:inherit;font-size:var(--t-13);align-items:center;gap:9px;display:flex}.thread-reply-stub:hover{border-color:var(--ink-3);color:var(--ink-2)}.thread-foot{align-items:flex-end;gap:var(--s-3);padding:var(--s-3) var(--s-4);border-top:1px solid var(--hair);background:var(--hair-2);display:flex}.thread-foot-bare{justify-content:flex-end}.thread-foot .thread-reply-stub,.thread-foot .thread-input{flex:1;width:auto;min-width:0}.thread-foot .thread-input{min-height:30px;max-height:40vh;padding:6px var(--s-4);border-radius:var(--r-sm);border-color:var(--hair);background:var(--paper);field-sizing:content;line-height:1.45}.thread-foot .thread-input:focus{border-color:var(--ink-3)}.thread-context-wrap{border-bottom:1px solid var(--border);background:var(--bg-subtle)}.thread-context-wrap .thread-context-toggle{border-bottom:none}.notes-header{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;border:none}.file-threads{border-bottom:1px solid var(--border);background:var(--bg-subtle);padding:.5rem .8rem}.changeset-strip{margin-bottom:var(--s-6);border:1px solid var(--hair-2);border-radius:var(--r);scroll-margin-top:var(--s-3)}.strip-head{align-items:center;gap:var(--s-2);width:100%;padding:var(--s-4) var(--s-4);color:var(--ink-3);font-family:var(--sans);font-size:var(--t-11);letter-spacing:.06em;text-transform:uppercase;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;font-weight:600;display:flex}.strip-head:hover,.strip-n{color:var(--ink-2)}.strip-body{align-items:flex-start;gap:var(--s-4);padding:0 var(--s-4) var(--s-4);flex-direction:column;display:flex}.strip-body .thread-list,.strip-body .thread-composer{align-self:stretch}.strip-body .thread,.strip-body .thread-composer,.strip-body .cbox{max-width:none}.strip-add{font-family:var(--sans);font-size:var(--t-125);color:var(--ink-3);cursor:pointer;background:0 0;border:none;padding:0}.strip-add:hover{color:var(--ink)}.fin-row-anchor-gone{text-decoration:line-through}.past-hint{padding:0 .2rem var(--s-3);color:var(--fg-muted);font-size:12px;font-style:italic;line-height:1.5}.modal-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:var(--s-8);z-index:40;background:#0000008c;justify-content:center;align-items:center;animation:.16s both fade-in;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}.modal{background:var(--paper);color:var(--ink);border-radius:var(--r-lg);box-shadow:var(--lift-lg);width:min(452px,100%);max-height:100%;font-size:var(--t-13);animation:modal-in var(--dur-move) var(--ease-out) both;flex-direction:column;display:flex;overflow:hidden}@keyframes modal-in{0%{opacity:0;transform:translateY(10px)scale(.98)}}.modal:focus{outline:none}.modal-wide{width:min(640px,100%)}.md-preview{width:min(860px,100%);height:100%}.md-preview .modal-head h3{font-family:var(--mono);font-size:var(--t-13);color:var(--ink-2);font-weight:500}.md-preview .modal-body{padding-bottom:var(--s-8)}.modal-head{align-items:center;gap:var(--s-4);padding:15px var(--s-5) 15px var(--s-7);flex-shrink:0;display:flex}.modal-head h3{font-size:var(--t-17);letter-spacing:-.018em;flex:1;margin:0}.modal-body{padding:var(--s-1) var(--s-7) var(--s-7);gap:var(--s-6);flex-direction:column;min-height:0;display:flex;overflow-y:auto}.modal-foot{padding:15px var(--s-7);border-top:1px solid var(--hair);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:9px;display:flex}.input{height:30px;padding:0 var(--s-4);font:inherit;font-size:var(--t-13);color:var(--ink);background:var(--fill);border-radius:var(--s-3);border:0;width:100%}.input:focus{outline:2px solid var(--acc);outline-offset:-1px}select.input{cursor:pointer}.fin-sect{gap:var(--s-3);flex-direction:column;display:flex}.fin-sect-h{align-items:baseline;gap:var(--s-2);min-width:0;display:flex}.fin-sect-label{font-size:var(--t-11);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap;font-weight:600}.fin-sect-n{border:1px solid var(--hair);border-radius:var(--r-pill);font-family:var(--mono);font-size:var(--t-11);color:var(--ink-2);padding:0 6px}.fin-sect-why{font-size:var(--t-12);color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fin-dest{align-items:center;gap:var(--s-3);border-radius:var(--r);background:var(--attn-wash);font-size:var(--t-125);color:var(--ink-2);padding:9px 12px;display:flex}.fin-dest-pip{background:var(--attn);border-radius:50%;flex-shrink:0;width:7px;height:7px}.fin-dest-text{flex:1;min-width:0}.fin-dest b{color:var(--ink);font-weight:600}.fin-rows{border:1px solid var(--hair);border-radius:var(--r);grid-template-columns:max-content fit-content(180px) 1fr max-content;margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.fin-row{grid-column:1/-1;grid-template-columns:subgrid;align-items:start;column-gap:var(--s-3);padding:9px 11px;display:grid}.fin-rows-span{grid-column:1/-1}.fin-row+.fin-row,.fin-rows li+li{border-top:1px solid var(--hair)}.fin-chip{border-radius:var(--r-pill);width:46px;font-size:var(--t-11);text-align:center;height:fit-content;padding:1px 0;line-height:1.5}.fin-chip-fresh{background:var(--acc-wash);color:var(--acc)}.fin-chip-resent{background:var(--fill);color:var(--ink-3)}.fin-checkoff .fin-chip{width:92px}.fin-chip-fixed{background:var(--add-tint);color:var(--add)}.fin-chip-answered,.fin-chip-changed{background:var(--fill);color:var(--ink-2)}.fin-chip-no-answer{background:var(--fill);color:var(--ink-3);font-style:italic}.fin-row-checkoff{align-items:center}.fin-row-acts{gap:var(--s-2);opacity:0;transition:opacity .12s var(--ease-out);flex-shrink:0;display:flex}.fin-row-checkoff:hover .fin-row-acts,.fin-row-acts:focus-within{opacity:1}@media (hover:none){.fin-row-acts{opacity:1}}.fin-row-open{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:contents}.fin-row-open>svg{color:var(--ink-3);transition:transform var(--dur) ease;cursor:pointer;margin-top:4px}.fin-row-open[aria-expanded=true]>svg{transform:rotate(180deg)}.fin-row-open:hover .fin-row-text{color:var(--ink)}.fin-row-open .fin-row-text{cursor:pointer}.fin-row-anchor{font-family:var(--mono);font-size:var(--t-12);color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;padding-top:2px;display:block;overflow:hidden}.fin-row-text{font-size:var(--t-125);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.fin-row-text-full{white-space:pre-wrap;word-break:break-word;line-height:1.55;overflow:visible}.fin-more{align-items:center;gap:var(--s-2);width:100%;font:inherit;font-size:var(--t-125);color:var(--ink-3);text-align:left;cursor:pointer;background:0 0;border:0;padding:8px 11px;display:flex}.fin-more:hover{color:var(--ink)}.fin-foot-peek{align-items:center;gap:var(--s-1);margin-left:auto;display:inline-flex}.fin-link{font:inherit;font-size:var(--t-125);color:var(--ink-3);text-underline-offset:2px;cursor:pointer;background:0 0;border:0;align-items:center;gap:5px;padding:0;text-decoration:underline;display:inline-flex}.fin-link:hover{color:var(--ink)}.fin-note{box-sizing:border-box;resize:vertical;width:100%;min-height:48px;padding:var(--s-2) var(--s-3);font:inherit;font-size:var(--t-125);color:var(--ink);background:var(--paper);border:1px solid var(--hair);border-radius:var(--r)}.fin-note:focus{border-color:var(--accent);outline:none}.fin-cov-bar{background:var(--fill);border-radius:3px;height:6px;display:flex;overflow:hidden}.fin-cov-bar i{height:100%;display:block}.fin-cov-read{background:var(--add)}.fin-cov-moved{background:var(--attn)}.fin-cov-status{gap:var(--s-2) var(--s-5);font-size:var(--t-125);color:var(--ink-2);flex-wrap:wrap;display:flex}.fin-cov-status>span{align-items:center;gap:6px;display:inline-flex}.fin-cov-sw{border-radius:2px;flex-shrink:0;width:8px;height:8px}.fin-cov-sw-read{background:var(--add)}.fin-cov-sw-moved{background:var(--attn)}.fin-cov-sw-unread{background:var(--hair)}.fin-cov-ok{color:var(--add-fg)}.fin-cov-attn{color:var(--attn)}.cov-note{color:var(--ink-2);margin:0;font-size:13.5px}.cov-note strong{color:var(--ink)}.warn{border-radius:var(--r);background:var(--attn-wash);color:var(--ink-2);gap:9px;padding:13px 15px;font-size:13.5px;display:flex}.warn svg{color:var(--attn);margin-top:2px}.warn b{color:var(--ink);font-weight:600}.keys{gap:0 var(--s-8);grid-template-columns:1fr 1fr;display:grid}.keys-name{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);padding:0 0 var(--s-2);font-size:11.5px;font-weight:600}.keys-row{align-items:center;gap:var(--s-4);border-bottom:1px solid var(--hair-2);color:var(--ink-2);padding:7px 0;font-size:13.5px;display:flex}.keys-row:last-child{border-bottom:0}.thread-hint{border-bottom:1px solid var(--border);color:var(--fg-muted);padding:.3rem .6rem;font-size:12px;font-style:italic}.presence{align-items:center;gap:var(--s-2);padding:4px var(--s-4);border:1px solid var(--hair);border-radius:var(--r-pill);background:var(--fill);font-family:var(--sans);font-size:var(--t-12);color:var(--ink-2);white-space:nowrap;transition:background-color var(--dur-move) var(--ease-out), border-color var(--dur-move) var(--ease-out), color var(--dur-move) var(--ease-out);display:inline-flex}.presence-label{text-overflow:ellipsis;max-width:34ch;overflow:hidden}.presence-dot{background:var(--ink-3);border-radius:50%;flex:none;width:7px;height:7px}.presence-live{flex:none;align-items:center;gap:2.5px;height:12px;display:inline-flex}.presence-live i{background:var(--ink-3);transform-origin:50%;border-radius:1px;width:2px;height:8px;transform:scaleY(.34)}.presence-live i:nth-child(2){height:12px}@keyframes live-breathe{0%,to{box-shadow:none;transform:scaleY(.34)}50%{box-shadow:0 0 6px -1px var(--glow);transform:scaleY(.92)}}@keyframes live-work{0%,to{box-shadow:none;transform:scaleY(.34)}45%{box-shadow:0 0 7px -1px var(--glow);transform:scaleY(1)}}.presence-invite{font:inherit;cursor:pointer}.presence-invite:hover,.presence-invite:focus-visible{color:var(--ink);border-color:var(--ink-3)}.presence-invite:focus-visible,.presence-batch:focus-visible{outline:2px solid var(--acc);outline-offset:2px}.presence-cta{color:var(--acc);font-weight:600}.presence-listening{color:var(--ink);border-color:var(--attn-line)}.presence-listening .presence-live i{--glow:var(--attn);background:var(--attn);opacity:.55;animation:live-breathe 2.6s var(--ease-out) infinite}.presence-listening .presence-live i:nth-child(2){opacity:.82;animation-delay:.22s}.presence-listening .presence-live i:nth-child(3){animation-delay:.44s}.presence-working{color:var(--attn);border-color:var(--attn-line);background:var(--attn-wash)}.presence-working .presence-live i{--glow:var(--attn);background:var(--attn);animation:live-work .85s var(--ease-out) infinite}.presence-working .presence-live i:nth-child(2){animation-delay:.11s}.presence-working .presence-live i:nth-child(3){animation-delay:.22s}.presence-batch{font:inherit;cursor:pointer}.presence-batch:hover .presence-label,.presence-batch:focus-visible .presence-label{text-underline-offset:2px;text-decoration:underline}.presence-qbar,.monitor-qbar{gap:2px;display:flex}.presence-qbar{width:44px;height:5px}.presence-qbar i,.monitor-qbar i{background:var(--hair);border-radius:2px;flex:1}i.q-done{background:var(--add)}i.q-now{background:var(--attn)}.presence-batch-n{font-size:var(--t-11);color:var(--ink-3);font-weight:650}.monitor-anchor{position:relative}.monitor{right:0;top:calc(100% + var(--s-2));z-index:20;border:1px solid var(--hair);border-radius:var(--r-lg);background:var(--paper);width:min(480px,100vw - 32px);max-height:min(72vh,640px);box-shadow:var(--lift-lg);text-align:left;white-space:normal;animation:fade-in var(--dur-move) var(--ease-out) both;position:absolute;overflow-y:auto}.monitor-inner{padding:var(--s-5) var(--s-5) var(--s-6);gap:var(--s-3);flex-direction:column;display:flex}.monitor-qbar{height:8px}.monitor-qbar i{border-radius:2px}.monitor-counts{color:var(--ink-2);font-size:var(--t-125)}.monitor-counts-done{color:var(--add-fg)}.monitor-group{margin-top:var(--s-4);font-size:var(--t-11);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:600}.monitor-rows{gap:var(--s-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.monitor-rows-done{opacity:.75}.monitor-row{width:100%;padding:var(--s-3) var(--s-4);background:var(--fill);border:1px solid var(--hair);border-radius:var(--r);font:inherit;color:inherit;text-align:left;cursor:pointer;flex-direction:column;gap:3px;display:flex}.monitor-row:hover{border-color:var(--ink-3)}.monitor-row-top{align-items:center;gap:var(--s-3);display:flex}.monitor-st{font-family:var(--mono);border-radius:5px;align-items:center;gap:5px;padding:2px 7px;font-size:10.5px;font-weight:600;display:inline-flex}.monitor-st-done{color:var(--add-fg);background:var(--add-tint)}.monitor-st-now{color:var(--attn);background:var(--attn-wash)}.monitor-st-wait{color:var(--ink-3);background:var(--paper)}.monitor-st-silent{color:var(--ink-3);background:var(--paper);font-style:italic}.monitor-pulse{background:var(--attn);border-radius:50%;width:6px;height:6px;animation:1.3s ease-in-out infinite presence-pulse}.monitor-took{font-family:var(--mono);font-size:var(--t-11);color:var(--ink-3)}.monitor-q{font-size:var(--t-125);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.monitor-anchor{font-family:var(--mono);font-size:var(--t-12);color:var(--ink-3);margin-right:var(--s-3)}.monitor-a{border-left:2px solid var(--hair);padding-left:var(--s-3);font-size:var(--t-12);color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (prefers-reduced-motion:reduce){.monitor-pulse{animation:none}}.invite-prompt{margin:var(--s-3) 0 var(--s-4);padding:var(--s-3) var(--s-4);background:var(--fill);border:1px solid var(--hair);border-radius:var(--r);max-height:320px;font-family:var(--mono);font-size:var(--t-12);color:var(--ink-2);white-space:pre-wrap;word-break:break-word;line-height:1.65;overflow:auto}.invite-cmd{align-items:center;gap:var(--s-2);width:100%;margin-top:var(--s-2);padding:var(--s-2) var(--s-3);background:var(--fill);border:1px solid var(--hair);border-radius:var(--r-sm);color:var(--ink-2);font:inherit;text-align:left;cursor:pointer;display:flex}.invite-cmd:hover{color:var(--ink);border-color:var(--hair-2)}.invite-cmd code{font-family:var(--mono);font-size:var(--t-12);flex:1}.invite-scope{align-items:center;gap:var(--s-2);margin-top:var(--s-2);color:var(--ink-2);font-size:var(--t-12);cursor:pointer;display:flex}.invite-scope input{cursor:pointer;margin:0}.invite-join{margin-top:var(--s-4);padding-top:var(--s-4);border-top:1px solid var(--hair)}.invite-live{align-items:center;gap:var(--s-2);margin-top:var(--s-2);padding:var(--s-2) var(--s-3);background:var(--acc-wash);border-radius:var(--r-sm);color:var(--ink-2);font-size:var(--t-12);display:flex}.invite-live .presence-dot{animation:presence-pulse 1.6s var(--ease-out) infinite}.invite-connected{align-items:center;gap:var(--s-3);padding:var(--s-2) 0;display:flex}.invite-connected .presence-dot{background:var(--add)}.invite-connected .cov-note{margin:0}@keyframes presence-pulse{0%,to{opacity:1}50%{opacity:.25}}@media (prefers-reduced-motion:reduce){.invite-live .presence-dot,.presence-live i{animation:none}.presence-listening .presence-live i,.presence-working .presence-live i{transform:scaleY(.8)}}.file-section>:not(.file-header){animation:body-in .2s var(--ease-out) both}@keyframes body-in{0%{opacity:0;transform:translateY(-4px)}}.btn,.ghb,.row-act,.sec-act,.sb-clear,.row-pick,.pin-row,.sec-head-fold,.file-viewed-toggle,.thread-collapsed-summary{transition-property:background,color,border-color,opacity,transform,box-shadow;transition-duration:var(--dur);transition-timing-function:ease}.btn:active,.ghb:active,.row-act:active,.sec-act:active,.sb-clear:active,.file-viewed-toggle:active{transform:scale(.95)}.row-pick:active,.pin-row:active,.thread-collapsed-summary:active{transform:translate(1px)}@keyframes pop{0%{transform:scale(.5)}60%{transform:scale(1.18)}to{transform:scale(1)}}.markbox[data-state=on] svg{animation:pop .28s var(--ease-out)}.tip{z-index:60;border-radius:var(--r-sm);background:var(--ink);max-width:300px;color:var(--paper);font-family:var(--sans);font-size:var(--t-11);letter-spacing:.01em;overflow-wrap:break-word;box-shadow:var(--lift);pointer-events:none;opacity:0;transition:opacity var(--dur) var(--ease-out);padding:4px 9px;font-weight:500;line-height:1.45;position:fixed}.tip-on{opacity:1}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.row-layer{padding-top:7px;padding-bottom:7px}.row-layer .row-pick{flex-direction:column;align-items:stretch;gap:2px;width:100%;min-width:0;display:flex}.row-layer .row-name{font-family:var(--sans);font-size:var(--t-13);gap:var(--s-3)}.row-layer .row-base{color:var(--ink);font-weight:500;line-height:1.3}.row-layer[aria-current=true] .row-base{font-weight:600}.row-layer.row-done .row-base{color:var(--ink-3);font-weight:500}.ch-sub{align-items:center;gap:var(--s-3);min-width:0;font-size:var(--t-11);color:var(--ink-3);font-variant-numeric:tabular-nums;display:flex}.ch-sub>span:last-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ch-sub .prog-track{flex:none;width:44px}.row-layer .row-count{gap:7px}.row-layer .ch-fold{display:flex}.ch-files{border-left:1px solid var(--hair);margin:0 0 4px 27px}.row-layer-since .row-base{color:var(--attn)}.ch-foot{width:100%;padding:var(--s-4) var(--s-6);font:inherit;font-size:var(--t-12);color:var(--ink-3);text-align:left;background:0 0;border:none;display:block}.ch-foot-act{cursor:pointer}.ch-foot-act:hover{color:var(--acc)}.ch-foot-live{color:var(--attn)}.ch-empty{flex-direction:column;align-items:flex-start;gap:6px;padding:22px 18px 8px;display:flex}.ch-empty p{font-size:var(--t-13);color:var(--ink);margin:0}.ch-empty .ch-empty-sub{font-size:var(--t-12);color:var(--ink-3);line-height:1.45}.ch-empty .btn{white-space:normal;text-align:left;max-width:100%;height:auto;margin-top:8px;line-height:1.3}.ch-empty .ch-empty-quote{font-size:var(--t-12);color:var(--ink-2);border-left:2px solid var(--attn);padding-left:10px;font-style:italic}.ch-empty-example{border:1px dashed var(--border);border-radius:var(--r);width:100%;max-width:220px;font-size:var(--t-11);color:var(--ink-3);margin:4px 0 2px;padding:8px 12px 10px}.ch-empty-example figcaption{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px;font-size:10px;font-weight:600}.ch-empty-example ol{counter-reset:layer;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex;position:relative}.ch-empty-example ol:before{content:"";background:var(--hair);width:1px;position:absolute;top:8px;bottom:8px;left:7px}.ch-empty-example li{counter-increment:layer;align-items:center;gap:8px;min-width:0;display:flex;position:relative}.ch-empty-example li:before{content:counter(layer);border:1px solid var(--border);background:var(--paper);text-align:center;width:15px;height:15px;color:var(--ink-3);border-radius:50%;flex:none;font-size:9px;font-weight:600;line-height:13px}.ch-empty-example li span{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--ink-2);flex:1;overflow:hidden}.ch-empty-example li small{font-size:inherit}.ch-empty .ch-empty-hint{font-size:var(--t-11);color:var(--ink-3);margin-top:-2px}.ch-working{vertical-align:1px;align-items:center;gap:6px;margin-right:4px;display:inline-flex}.ch-working i{background:var(--attn);border-radius:50%;width:5px;height:5px;animation:1.1s infinite ch-blink}.ch-working i:nth-child(2){animation-delay:.2s}.ch-working i:nth-child(3){animation-delay:.4s}@keyframes ch-blink{0%,to{opacity:.25}50%{opacity:1}}.row-layer-overview .row-box{visibility:hidden}.file-header:has(.ch-file-note) .file-path{flex-shrink:0}.ch-file-note{min-width:0;font-size:var(--t-12);color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;padding-left:2px;overflow:hidden}.ch-file-note:before{content:"— "}.ch-pager{align-items:center;gap:4px;display:inline-flex}.ch-pager .btn{height:26px;font-size:var(--t-12);max-width:24ch;padding:0 9px}.ch-pager-t{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ch-kind{font-size:var(--t-11);border-radius:var(--r-pill);background:var(--fill);color:var(--ink-3);font-family:var(--sans);vertical-align:2px;margin-left:8px;padding:2px 7px;font-weight:500}.ch-head{margin-bottom:var(--s-6);border:1px solid var(--hair);border-radius:var(--r);background:var(--paper);flex-direction:column;align-items:flex-start;gap:4px;padding:14px 18px 14px 16px;display:flex}.ch-head-kicker{font-size:var(--t-11);color:var(--ink-3);font-variant-numeric:tabular-nums;letter-spacing:.01em}.ch-head h2{letter-spacing:-.015em;color:var(--ink);margin:0;font-size:20px;font-weight:600}.ch-head .ch-summary{font-size:var(--t-13);color:var(--ink-2);margin-top:6px;padding-left:0;line-height:1.5}.ch-head .ch-summary p{margin:0 0 6px}.ch-head .ch-summary a{color:var(--exp-ink);border-bottom:1px solid var(--exp-wash);text-decoration:none}.ch-head-files{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.ch-chip{font-family:var(--mono);font-size:var(--t-11);border-radius:var(--r-pill);background:var(--fill);color:var(--ink-2);padding:3px 8px}.ch-chip-done{color:var(--ink-3);text-decoration:line-through}.ch-head-missing{font-size:var(--t-11);color:var(--ink-3)}.ch-head-empty{font-size:var(--t-12);color:var(--ink-3)}
|